blocks-dusted 0.1.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/LICENSE +21 -0
- package/README.md +68 -0
- package/bin/index.js +8 -0
- package/package.json +40 -0
- package/src/cli.js +79 -0
- package/src/commands/add.js +327 -0
- package/src/commands/doctor.js +21 -0
- package/src/commands/list.js +18 -0
- package/src/installers/checkRequirements.js +101 -0
- package/src/installers/copyTemplateFiles.js +79 -0
- package/src/installers/installDependencies.js +69 -0
- package/src/installers/patchPayloadBlocksArray.js +122 -0
- package/src/installers/patchRenderBlocks.js +110 -0
- package/src/installers/runGenerators.js +3 -0
- package/src/installers/writeInstalledBlockReadme.js +117 -0
- package/src/registry/listTemplates.js +17 -0
- package/src/registry/loadTemplateManifest.js +20 -0
- package/src/registry/validateTemplateManifest.js +69 -0
- package/src/utils/logger.js +8 -0
- package/src/utils/packageManager.js +42 -0
- package/src/utils/paths.js +7 -0
- package/src/utils/project.js +122 -0
- package/src/utils/strings.js +7 -0
- package/templates/blocks/DD-BookCall/Component.tsx +573 -0
- package/templates/blocks/DD-BookCall/config.ts +239 -0
- package/templates/blocks/DD-BookCall/manifest.json +112 -0
- package/templates/blocks/DD-CardTemplate01/Component.tsx +144 -0
- package/templates/blocks/DD-CardTemplate01/config.ts +106 -0
- package/templates/blocks/DD-CardTemplate01/manifest.json +84 -0
- package/templates/blocks/DD-Carousel-A/Component.tsx +266 -0
- package/templates/blocks/DD-Carousel-A/config.ts +163 -0
- package/templates/blocks/DD-Carousel-A/manifest.json +86 -0
- package/templates/blocks/DD-Carousel-B/Component.tsx +432 -0
- package/templates/blocks/DD-Carousel-B/config.ts +176 -0
- package/templates/blocks/DD-Carousel-B/manifest.json +86 -0
- package/templates/blocks/DD-ComparisonTable/Component.tsx +272 -0
- package/templates/blocks/DD-ComparisonTable/config.ts +105 -0
- package/templates/blocks/DD-ComparisonTable/manifest.json +78 -0
- package/templates/blocks/DD-Contact/Component.tsx +439 -0
- package/templates/blocks/DD-Contact/config.ts +217 -0
- package/templates/blocks/DD-Contact/manifest.json +107 -0
- package/templates/blocks/DD-FeatCat/Component.tsx +361 -0
- package/templates/blocks/DD-FeatCat/config.ts +204 -0
- package/templates/blocks/DD-FeatCat/manifest.json +87 -0
- package/templates/blocks/DD-FeatStrip/Component.tsx +615 -0
- package/templates/blocks/DD-FeatStrip/config.ts +134 -0
- package/templates/blocks/DD-FeatStrip/manifest.json +82 -0
- package/templates/blocks/DD-Hero/Component.tsx +317 -0
- package/templates/blocks/DD-Hero/config.ts +267 -0
- package/templates/blocks/DD-Hero/manifest.json +92 -0
- package/templates/blocks/DD-HorizontalScroll/Component.tsx +995 -0
- package/templates/blocks/DD-HorizontalScroll/config.ts +231 -0
- package/templates/blocks/DD-HorizontalScroll/manifest.json +85 -0
- package/templates/blocks/DD-MasonaryMedia/Component.tsx +571 -0
- package/templates/blocks/DD-MasonaryMedia/config.ts +390 -0
- package/templates/blocks/DD-MasonaryMedia/manifest.json +101 -0
- package/templates/blocks/DD-MasonaryMedia/vendor.d.ts +2 -0
- package/templates/blocks/DD-Pricing/Component.tsx +380 -0
- package/templates/blocks/DD-Pricing/config.ts +215 -0
- package/templates/blocks/DD-Pricing/manifest.json +78 -0
- package/templates/blocks/DD-Process/Component.tsx +155 -0
- package/templates/blocks/DD-Process/config.ts +150 -0
- package/templates/blocks/DD-Process/manifest.json +82 -0
- package/templates/blocks/DD-Section/Component.tsx +327 -0
- package/templates/blocks/DD-Section/config.ts +214 -0
- package/templates/blocks/DD-Section/manifest.json +85 -0
- package/templates/blocks/DD-Services/Component.tsx +188 -0
- package/templates/blocks/DD-Services/config.ts +149 -0
- package/templates/blocks/DD-Services/manifest.json +95 -0
- package/templates/blocks/DD-ShowcaseGrid/Component.tsx +317 -0
- package/templates/blocks/DD-ShowcaseGrid/config.ts +197 -0
- package/templates/blocks/DD-ShowcaseGrid/manifest.json +80 -0
- package/templates/blocks/DD-Slider-A/Component.tsx +252 -0
- package/templates/blocks/DD-Slider-A/config.ts +118 -0
- package/templates/blocks/DD-Slider-A/manifest.json +86 -0
- package/templates/blocks/DD-StackCards/Component.tsx +496 -0
- package/templates/blocks/DD-StackCards/config.ts +399 -0
- package/templates/blocks/DD-StackCards/manifest.json +87 -0
- package/templates/blocks/DD-Team/Component.tsx +265 -0
- package/templates/blocks/DD-Team/config.ts +173 -0
- package/templates/blocks/DD-Team/manifest.json +82 -0
- package/templates/blocks/DD-TechStack/Component.tsx +189 -0
- package/templates/blocks/DD-TechStack/config.ts +153 -0
- package/templates/blocks/DD-TechStack/manifest.json +118 -0
- package/templates/blocks/DD-Testimonials/Component.tsx +147 -0
- package/templates/blocks/DD-Testimonials/config.ts +120 -0
- package/templates/blocks/DD-Testimonials/manifest.json +87 -0
- package/templates/blocks/DD-Work/Component.tsx +328 -0
- package/templates/blocks/DD-Work/config.ts +165 -0
- package/templates/blocks/DD-Work/manifest.json +87 -0
- package/templates/blocks/DD-Work-B/Component.tsx +320 -0
- package/templates/blocks/DD-Work-B/config.ts +165 -0
- package/templates/blocks/DD-Work-B/manifest.json +75 -0
- package/templates/shared/components/ui/anims/fade.tsx +83 -0
- package/templates/shared/components/ui/button.tsx +233 -0
- package/templates/shared/components/ui/input.tsx +41 -0
- package/templates/shared/fields/lucide-icon-picker/Cell.tsx +24 -0
- package/templates/shared/fields/lucide-icon-picker/README.md +160 -0
- package/templates/shared/fields/lucide-icon-picker/field.ts +40 -0
- package/templates/shared/fields/lucide-icon-picker/index.tsx +203 -0
- package/templates/shared/utilities/canUseDOM.ts +1 -0
- package/templates/shared/utilities/getURL.ts +31 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import type { Block } from 'payload'
|
|
2
|
+
|
|
3
|
+
export const DDMasonaryMedia: Block = {
|
|
4
|
+
slug: 'DD-MasonaryMedia',
|
|
5
|
+
dbName: 'studio_masonry',
|
|
6
|
+
interfaceName: 'DDMasonaryMedia',
|
|
7
|
+
labels: {
|
|
8
|
+
singular: 'Studio Masonary Media',
|
|
9
|
+
plural: 'Studio Masonary Media'
|
|
10
|
+
},
|
|
11
|
+
fields: [
|
|
12
|
+
{
|
|
13
|
+
type: 'tabs',
|
|
14
|
+
tabs: [
|
|
15
|
+
{
|
|
16
|
+
label: 'Header',
|
|
17
|
+
fields: [
|
|
18
|
+
{
|
|
19
|
+
name: 'eyebrow',
|
|
20
|
+
type: 'text',
|
|
21
|
+
label: 'Eyebrow Label',
|
|
22
|
+
defaultValue: 'Featured systems'
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'headlineMain',
|
|
26
|
+
type: 'text',
|
|
27
|
+
label: 'Headline Main',
|
|
28
|
+
defaultValue: 'Components, blocks, and templates'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'headlineAccent',
|
|
32
|
+
type: 'text',
|
|
33
|
+
label: 'Headline Accent',
|
|
34
|
+
defaultValue: 'built to feel alive'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'subtext',
|
|
38
|
+
type: 'textarea',
|
|
39
|
+
label: 'Subtext',
|
|
40
|
+
defaultValue:
|
|
41
|
+
'A curated showcase of production-ready interface pieces, with static previews and motion demos on hover.'
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
label: 'Cards',
|
|
47
|
+
fields: [
|
|
48
|
+
{
|
|
49
|
+
name: 'items',
|
|
50
|
+
type: 'array',
|
|
51
|
+
label: 'Showcase Cards',
|
|
52
|
+
minRows: 1,
|
|
53
|
+
defaultValue: [
|
|
54
|
+
{
|
|
55
|
+
title: 'Premium UI Blocks',
|
|
56
|
+
category: 'Components',
|
|
57
|
+
framework: 'Next.js / Payload',
|
|
58
|
+
description:
|
|
59
|
+
'Reusable interface sections for modern product, agency, and commerce experiences.',
|
|
60
|
+
href: '/products/components',
|
|
61
|
+
linkLabel: 'Browse components',
|
|
62
|
+
free: false,
|
|
63
|
+
priceLabel: 'From AUD $29',
|
|
64
|
+
aspectRatio: '16/9'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
title: 'Website Templates',
|
|
68
|
+
category: 'Templates',
|
|
69
|
+
framework: 'Next.js / Payload',
|
|
70
|
+
description:
|
|
71
|
+
'Full-page systems and starter kits designed to ship faster without looking templated.',
|
|
72
|
+
href: '/products/templates',
|
|
73
|
+
linkLabel: 'View templates',
|
|
74
|
+
free: false,
|
|
75
|
+
priceLabel: 'From AUD $89',
|
|
76
|
+
aspectRatio: '16/9'
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
fields: [
|
|
80
|
+
{
|
|
81
|
+
name: 'title',
|
|
82
|
+
type: 'text',
|
|
83
|
+
label: 'Title',
|
|
84
|
+
required: true
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'category',
|
|
88
|
+
type: 'text',
|
|
89
|
+
label: 'Category',
|
|
90
|
+
defaultValue: 'Component'
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'framework',
|
|
94
|
+
type: 'text',
|
|
95
|
+
label: 'Framework / Stack',
|
|
96
|
+
defaultValue: 'Next.js / Payload'
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'description',
|
|
100
|
+
type: 'textarea',
|
|
101
|
+
label: 'Description'
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'row',
|
|
105
|
+
fields: [
|
|
106
|
+
{
|
|
107
|
+
name: 'href',
|
|
108
|
+
type: 'text',
|
|
109
|
+
label: 'Link URL',
|
|
110
|
+
defaultValue: '/products/components',
|
|
111
|
+
admin: { width: '50%' }
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'linkLabel',
|
|
115
|
+
type: 'text',
|
|
116
|
+
label: 'Link Label',
|
|
117
|
+
defaultValue: 'View item',
|
|
118
|
+
admin: { width: '50%' }
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'row',
|
|
124
|
+
fields: [
|
|
125
|
+
{
|
|
126
|
+
name: 'free',
|
|
127
|
+
type: 'checkbox',
|
|
128
|
+
label: 'Free Item',
|
|
129
|
+
defaultValue: false,
|
|
130
|
+
admin: { width: '33.33%' }
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'priceLabel',
|
|
134
|
+
type: 'text',
|
|
135
|
+
label: 'Price Label',
|
|
136
|
+
defaultValue: 'From AUD $29',
|
|
137
|
+
admin: { width: '33.33%' }
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'aspectRatio',
|
|
141
|
+
type: 'select',
|
|
142
|
+
label: 'Media Aspect Ratio',
|
|
143
|
+
defaultValue: '16/9',
|
|
144
|
+
admin: { width: '33.33%' },
|
|
145
|
+
options: [
|
|
146
|
+
{ label: 'Wide (16:9)', value: '16/9' },
|
|
147
|
+
{ label: 'Landscape (3:2)', value: '3/2' },
|
|
148
|
+
{ label: 'Square (1:1)', value: '1/1' },
|
|
149
|
+
{ label: 'Portrait (2:3)', value: '2/3' }
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: 'image',
|
|
156
|
+
type: 'upload',
|
|
157
|
+
relationTo: 'media',
|
|
158
|
+
label: 'Static Preview Image',
|
|
159
|
+
required: false,
|
|
160
|
+
admin: {
|
|
161
|
+
description:
|
|
162
|
+
'Optional static image shown by default before hover. Use the fallback URL below for clean installs without media records.'
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
name: 'hoverVideo',
|
|
167
|
+
type: 'upload',
|
|
168
|
+
relationTo: 'media',
|
|
169
|
+
label: 'Hover Video',
|
|
170
|
+
required: false,
|
|
171
|
+
admin: {
|
|
172
|
+
description:
|
|
173
|
+
'Muted video that plays on hover. Recommended: small .webm or .mp4.'
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: 'posterFallbackUrl',
|
|
178
|
+
type: 'text',
|
|
179
|
+
label: 'Image Fallback URL',
|
|
180
|
+
admin: {
|
|
181
|
+
placeholder: '/assets/placeholder/preview.webp',
|
|
182
|
+
description: 'Used if the uploaded static image has no URL.'
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: 'videoFallbackUrl',
|
|
187
|
+
type: 'text',
|
|
188
|
+
label: 'Video Fallback URL',
|
|
189
|
+
admin: {
|
|
190
|
+
placeholder: '/assets/video/preview.webm',
|
|
191
|
+
description: 'Used if the uploaded hover video has no URL.'
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
label: 'Layout',
|
|
200
|
+
fields: [
|
|
201
|
+
{
|
|
202
|
+
type: 'row',
|
|
203
|
+
fields: [
|
|
204
|
+
{
|
|
205
|
+
name: 'columnsDesktop',
|
|
206
|
+
type: 'number',
|
|
207
|
+
label: 'Desktop Columns',
|
|
208
|
+
defaultValue: 3,
|
|
209
|
+
min: 1,
|
|
210
|
+
max: 12,
|
|
211
|
+
admin: { width: '25%', description: 'min:1, max:12' }
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: 'columnsTablet',
|
|
215
|
+
type: 'number',
|
|
216
|
+
label: 'Tablet Columns',
|
|
217
|
+
defaultValue: 2,
|
|
218
|
+
min: 1,
|
|
219
|
+
max: 3,
|
|
220
|
+
admin: { width: '25%', description: 'min:1, max:6' }
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
name: 'gapClass',
|
|
224
|
+
type: 'text',
|
|
225
|
+
label: 'Grid Gap Class',
|
|
226
|
+
defaultValue: 'gap-5',
|
|
227
|
+
admin: { width: '25%' }
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'containerClassName',
|
|
231
|
+
type: 'text',
|
|
232
|
+
label: 'Container Class',
|
|
233
|
+
defaultValue: 'max-w-6xl lg:max-w-7xl mx-auto px-4 md:px-6',
|
|
234
|
+
admin: { width: '25%' }
|
|
235
|
+
}
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: 'sectionClassName',
|
|
240
|
+
type: 'text',
|
|
241
|
+
label: 'Section Class',
|
|
242
|
+
defaultValue: 'py-24'
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
label: 'Settings',
|
|
248
|
+
fields: [
|
|
249
|
+
{
|
|
250
|
+
name: 'sectionId',
|
|
251
|
+
type: 'text',
|
|
252
|
+
label: 'Section ID',
|
|
253
|
+
defaultValue: 'studio-masonary-media'
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
name: 'customCSS',
|
|
257
|
+
type: 'code',
|
|
258
|
+
label: 'Custom CSS',
|
|
259
|
+
admin: { language: 'css' }
|
|
260
|
+
}
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
label: 'CTA Button',
|
|
265
|
+
fields: [
|
|
266
|
+
{
|
|
267
|
+
type: 'row',
|
|
268
|
+
fields: [
|
|
269
|
+
{
|
|
270
|
+
name: 'showCta',
|
|
271
|
+
type: 'checkbox',
|
|
272
|
+
label: 'Show Button',
|
|
273
|
+
defaultValue: false
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: 'ctaAlign',
|
|
277
|
+
type: 'select',
|
|
278
|
+
label: 'Button Alignment',
|
|
279
|
+
defaultValue: 'center',
|
|
280
|
+
admin: {
|
|
281
|
+
width: '50%',
|
|
282
|
+
condition: (_, siblingData) => siblingData?.showCta
|
|
283
|
+
},
|
|
284
|
+
options: [
|
|
285
|
+
{ label: 'Left', value: 'left' },
|
|
286
|
+
{ label: 'Center', value: 'center' },
|
|
287
|
+
{ label: 'Right', value: 'right' }
|
|
288
|
+
]
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
type: 'row',
|
|
294
|
+
admin: { condition: (_, siblingData) => siblingData?.showCta },
|
|
295
|
+
fields: [
|
|
296
|
+
{
|
|
297
|
+
name: 'ctaDisplayMode',
|
|
298
|
+
type: 'select',
|
|
299
|
+
label: 'Display Mode',
|
|
300
|
+
defaultValue: 'iconWithLabel',
|
|
301
|
+
admin: { width: '50%' },
|
|
302
|
+
options: [
|
|
303
|
+
{ label: 'Icon with Label', value: 'iconWithLabel' },
|
|
304
|
+
{ label: 'Icon Only', value: 'iconOnly' },
|
|
305
|
+
{ label: 'Label Only', value: 'labelOnly' }
|
|
306
|
+
]
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: 'ctaIconPosition',
|
|
310
|
+
type: 'select',
|
|
311
|
+
label: 'Icon Position',
|
|
312
|
+
defaultValue: 'before',
|
|
313
|
+
admin: {
|
|
314
|
+
width: '50%',
|
|
315
|
+
condition: (_, siblingData) => siblingData?.ctaDisplayMode === 'iconWithLabel'
|
|
316
|
+
},
|
|
317
|
+
options: [
|
|
318
|
+
{ label: 'Before Label', value: 'before' },
|
|
319
|
+
{ label: 'After Label', value: 'after' }
|
|
320
|
+
]
|
|
321
|
+
}
|
|
322
|
+
]
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
name: 'ctaButtonText',
|
|
326
|
+
type: 'text',
|
|
327
|
+
label: 'Button Text',
|
|
328
|
+
|
|
329
|
+
admin: {
|
|
330
|
+
condition: (_, siblingData) =>
|
|
331
|
+
siblingData?.showCta && siblingData?.ctaDisplayMode !== 'iconOnly'
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
type: 'row',
|
|
336
|
+
admin: { condition: (_, siblingData) => siblingData?.showCta },
|
|
337
|
+
fields: [
|
|
338
|
+
{
|
|
339
|
+
name: 'ctaButtonStyle',
|
|
340
|
+
type: 'select',
|
|
341
|
+
label: 'Button Style',
|
|
342
|
+
defaultValue: 'primary',
|
|
343
|
+
|
|
344
|
+
admin: { width: '50%' },
|
|
345
|
+
options: [
|
|
346
|
+
{ label: 'Primary', value: 'primary' },
|
|
347
|
+
{ label: 'Secondary', value: 'secondary' },
|
|
348
|
+
{ label: 'Outline', value: 'outline' },
|
|
349
|
+
{ label: 'Text', value: 'ghost' },
|
|
350
|
+
{ label: 'Call-to-Action', value: 'destructive' },
|
|
351
|
+
{ label: 'Retro Border', value: 'v1' },
|
|
352
|
+
{ label: 'Gradient Shine', value: 'v2' },
|
|
353
|
+
{ label: 'Ring Hover', value: 'v3' },
|
|
354
|
+
{ label: '3D Press', value: 'v4' },
|
|
355
|
+
{ label: 'Invert Slide', value: 'v5' },
|
|
356
|
+
{ label: 'Scale Morph', value: 'v6' },
|
|
357
|
+
{ label: 'Underline', value: 'v7' },
|
|
358
|
+
{ label: 'Embossed', value: 'v8' }
|
|
359
|
+
]
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
name: 'ctaSize',
|
|
363
|
+
type: 'select',
|
|
364
|
+
label: 'Button Size',
|
|
365
|
+
defaultValue: 'medium',
|
|
366
|
+
|
|
367
|
+
admin: { width: '50%' },
|
|
368
|
+
options: [
|
|
369
|
+
{ label: 'Small', value: 'small' },
|
|
370
|
+
{ label: 'Medium', value: 'medium' },
|
|
371
|
+
{ label: 'Large', value: 'large' }
|
|
372
|
+
]
|
|
373
|
+
}
|
|
374
|
+
]
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
name: 'ctaContainerClass',
|
|
378
|
+
type: 'text',
|
|
379
|
+
label: 'Extra Container Class',
|
|
380
|
+
admin: {
|
|
381
|
+
condition: (_, siblingData) => siblingData?.showCta,
|
|
382
|
+
description: 'Additional classes on the button wrapper (e.g. mt-4)'
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
]
|
|
386
|
+
}
|
|
387
|
+
]
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-MasonaryMedia",
|
|
4
|
+
"label": "Studio Masonary Media",
|
|
5
|
+
"sourceName": "StudioMasonaryMedia",
|
|
6
|
+
"portableName": "DD-MasonaryMedia",
|
|
7
|
+
"slug": "DD-MasonaryMedia",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/StudioMasonaryMedia",
|
|
12
|
+
"originalSlug": "studioMasonaryMedia",
|
|
13
|
+
"originalConfigExport": "StudioMasonaryMedia",
|
|
14
|
+
"originalComponentExport": "StudioMasonaryMedia",
|
|
15
|
+
"originalInterfaceName": "StudioMasonaryMedia"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-MasonaryMedia/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-MasonaryMedia/config.ts"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"from": "vendor.d.ts",
|
|
28
|
+
"to": "src/blocks/DD-MasonaryMedia/vendor.d.ts"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"dependencies": [
|
|
32
|
+
{
|
|
33
|
+
"name": "framer-motion"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "isotope-layout"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "imagesloaded"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"sharedFiles": [],
|
|
43
|
+
"requiredProjectFiles": [
|
|
44
|
+
{
|
|
45
|
+
"path": "src/utilities/ui.ts",
|
|
46
|
+
"reason": "Block uses cn from @/utilities/ui."
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"optionalProjectFiles": [],
|
|
50
|
+
"collectionRegistration": {
|
|
51
|
+
"enabled": true,
|
|
52
|
+
"collections": [
|
|
53
|
+
"Pages",
|
|
54
|
+
"Posts"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"renderBlocksRegistration": {
|
|
58
|
+
"enabled": true
|
|
59
|
+
},
|
|
60
|
+
"renderBlocksBehavior": {
|
|
61
|
+
"wrapperless": false
|
|
62
|
+
},
|
|
63
|
+
"pageRouteIntegration": {
|
|
64
|
+
"required": false,
|
|
65
|
+
"manualSteps": []
|
|
66
|
+
},
|
|
67
|
+
"manual": [
|
|
68
|
+
"Replaced ButtonWithIcon with portable fallback link markup; reconnect project ButtonWithIcon manually if desired.",
|
|
69
|
+
"Replaced custom link/iconPicker field helpers with native Payload fields for portability.",
|
|
70
|
+
"Static preview uploads are optional so placeholder/default content can save in clean projects without existing media records.",
|
|
71
|
+
"Register DDMasonaryMedia in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
72
|
+
"Register DD-MasonaryMedia in RenderBlocks if automatic registration was skipped.",
|
|
73
|
+
"Run payload generate:types after schema changes.",
|
|
74
|
+
"Run payload generate:importmap if admin/component imports changed."
|
|
75
|
+
],
|
|
76
|
+
"manualSteps": [
|
|
77
|
+
"Replaced ButtonWithIcon with portable fallback link markup; reconnect project ButtonWithIcon manually if desired.",
|
|
78
|
+
"Replaced custom link/iconPicker field helpers with native Payload fields for portability.",
|
|
79
|
+
"Static preview uploads are optional so placeholder/default content can save in clean projects without existing media records.",
|
|
80
|
+
"Register DDMasonaryMedia in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
81
|
+
"Register DD-MasonaryMedia in RenderBlocks if automatic registration was skipped.",
|
|
82
|
+
"Run payload generate:types after schema changes.",
|
|
83
|
+
"Run payload generate:importmap if admin/component imports changed."
|
|
84
|
+
],
|
|
85
|
+
"patchTargets": {
|
|
86
|
+
"blockConfigRegistration": {
|
|
87
|
+
"description": "Installer can add import { DDMasonaryMedia } from '@/blocks/DD-MasonaryMedia/config' and add DDMasonaryMedia to clear Pages/Posts blocks arrays."
|
|
88
|
+
},
|
|
89
|
+
"renderBlocksRegistration": {
|
|
90
|
+
"description": "Installer can register DD-MasonaryMedia in src/blocks/**/RenderBlocks.tsx when the blockComponents map is clear."
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"notes": [
|
|
94
|
+
"Converted from DesignsDustedv3 StudioMasonaryMedia.",
|
|
95
|
+
"Generated Payload type imports are replaced with portable fallback types when needed.",
|
|
96
|
+
"Installer must not overwrite existing target files.",
|
|
97
|
+
"Project-specific ButtonWithIcon, link field helper, and icon picker field helper are intentionally not bundled for this block."
|
|
98
|
+
],
|
|
99
|
+
"exportName": "DDMasonaryMedia",
|
|
100
|
+
"interfaceName": "DDMasonaryMedia"
|
|
101
|
+
}
|