@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.
Files changed (101) hide show
  1. package/AGENTS.md +121 -0
  2. package/LICENSE +21 -0
  3. package/README.md +50 -0
  4. package/dist/api/articles.d.ts +3 -0
  5. package/dist/api/articles.d.ts.map +1 -1
  6. package/dist/api/articles.js +8 -5
  7. package/dist/api/articles.js.map +1 -1
  8. package/dist/api/authors.d.ts +2 -0
  9. package/dist/api/authors.d.ts.map +1 -1
  10. package/dist/api/authors.js +5 -2
  11. package/dist/api/authors.js.map +1 -1
  12. package/dist/api/categories.d.ts +2 -0
  13. package/dist/api/categories.d.ts.map +1 -1
  14. package/dist/api/categories.js +4 -1
  15. package/dist/api/categories.js.map +1 -1
  16. package/dist/api/faqs.d.ts +2 -0
  17. package/dist/api/faqs.d.ts.map +1 -1
  18. package/dist/api/faqs.js +4 -1
  19. package/dist/api/faqs.js.map +1 -1
  20. package/dist/api/global.js +1 -1
  21. package/dist/api/global.js.map +1 -1
  22. package/dist/api/inquiry.js +1 -1
  23. package/dist/api/inquiry.js.map +1 -1
  24. package/dist/api/navigation.js +1 -1
  25. package/dist/api/navigation.js.map +1 -1
  26. package/dist/api/pages.d.ts +9 -1
  27. package/dist/api/pages.d.ts.map +1 -1
  28. package/dist/api/pages.js +26 -9
  29. package/dist/api/pages.js.map +1 -1
  30. package/dist/api/series.d.ts +2 -0
  31. package/dist/api/series.d.ts.map +1 -1
  32. package/dist/api/series.js +5 -2
  33. package/dist/api/series.js.map +1 -1
  34. package/dist/api/site-settings.js +1 -1
  35. package/dist/api/site-settings.js.map +1 -1
  36. package/dist/api/tags.d.ts +2 -0
  37. package/dist/api/tags.d.ts.map +1 -1
  38. package/dist/api/tags.js +4 -1
  39. package/dist/api/tags.js.map +1 -1
  40. package/dist/client/create-client.d.ts +7 -3
  41. package/dist/client/create-client.d.ts.map +1 -1
  42. package/dist/client/create-client.js +13 -5
  43. package/dist/client/create-client.js.map +1 -1
  44. package/dist/client/index.d.ts +2 -2
  45. package/dist/client/index.d.ts.map +1 -1
  46. package/dist/client/index.js +1 -1
  47. package/dist/client/index.js.map +1 -1
  48. package/dist/index.d.ts +7 -7
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +4 -4
  51. package/dist/index.js.map +1 -1
  52. package/dist/populate/builders.d.ts +12 -0
  53. package/dist/populate/builders.d.ts.map +1 -1
  54. package/dist/populate/builders.js +10 -0
  55. package/dist/populate/builders.js.map +1 -1
  56. package/dist/populate/core-blocks.d.ts.map +1 -1
  57. package/dist/populate/core-blocks.js +15 -9
  58. package/dist/populate/core-blocks.js.map +1 -1
  59. package/dist/types/components/blocks.d.ts +12 -11
  60. package/dist/types/components/blocks.d.ts.map +1 -1
  61. package/dist/types/components/index.d.ts +1 -1
  62. package/dist/types/components/index.d.ts.map +1 -1
  63. package/dist/types/components/shared.d.ts +14 -3
  64. package/dist/types/components/shared.d.ts.map +1 -1
  65. package/dist/types/components/shared.js +1 -1
  66. package/dist/types/content-types/article.d.ts +3 -1
  67. package/dist/types/content-types/article.d.ts.map +1 -1
  68. package/dist/types/content-types/article.js +1 -1
  69. package/dist/types/content-types/article.js.map +1 -1
  70. package/dist/types/content-types/author.js +1 -1
  71. package/dist/types/content-types/author.js.map +1 -1
  72. package/dist/types/content-types/category.js +1 -1
  73. package/dist/types/content-types/category.js.map +1 -1
  74. package/dist/types/content-types/faq.js +1 -1
  75. package/dist/types/content-types/faq.js.map +1 -1
  76. package/dist/types/content-types/global.js +1 -1
  77. package/dist/types/content-types/global.js.map +1 -1
  78. package/dist/types/content-types/inquiry.js +1 -1
  79. package/dist/types/content-types/inquiry.js.map +1 -1
  80. package/dist/types/content-types/navigation.js +1 -1
  81. package/dist/types/content-types/navigation.js.map +1 -1
  82. package/dist/types/content-types/page.d.ts +12 -3
  83. package/dist/types/content-types/page.d.ts.map +1 -1
  84. package/dist/types/content-types/page.js +1 -1
  85. package/dist/types/content-types/page.js.map +1 -1
  86. package/dist/types/content-types/series.js +1 -1
  87. package/dist/types/content-types/series.js.map +1 -1
  88. package/dist/types/content-types/site-settings.js +1 -1
  89. package/dist/types/content-types/site-settings.js.map +1 -1
  90. package/dist/types/content-types/tag.js +1 -1
  91. package/dist/types/content-types/tag.js.map +1 -1
  92. package/dist/types/index.d.ts +2 -2
  93. package/dist/types/index.d.ts.map +1 -1
  94. package/dist/types/strapi.d.ts +10 -0
  95. package/dist/types/strapi.d.ts.map +1 -1
  96. package/docs/api-guide.md +223 -0
  97. package/docs/block-reference.md +194 -0
  98. package/docs/components.md +234 -0
  99. package/docs/content-types.md +184 -0
  100. package/docs/elements.md +50 -0
  101. 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` | — | — | — |
@@ -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 | — | — | — |