blocks-dusted 0.1.10 → 0.1.12
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/README.md +35 -0
- package/package.json +5 -2
- package/src/cli.js +39 -3
- package/src/commands/shop.js +59 -0
- package/src/commands/warehouse.js +73 -0
- package/src/utils/paths.js +13 -13
- package/templates/blocks/DD-Accordion/Component.tsx +229 -0
- package/templates/blocks/DD-Accordion/README.md +3 -0
- package/templates/blocks/DD-Accordion/config.ts +73 -0
- package/templates/blocks/DD-Accordion/manifest.json +75 -0
- package/templates/blocks/DD-AnimText/Component.tsx +788 -0
- package/templates/blocks/DD-AnimText/README.md +3 -0
- package/templates/blocks/DD-AnimText/config.ts +295 -0
- package/templates/blocks/DD-AnimText/manifest.json +85 -0
- package/templates/blocks/DD-AsideNav/Component.tsx +321 -0
- package/templates/blocks/DD-AsideNav/config.ts +204 -0
- package/templates/blocks/DD-AsideNav/manifest.json +80 -0
- package/templates/blocks/DD-Banner/Component.tsx +51 -0
- package/templates/blocks/DD-Banner/config.ts +57 -0
- package/templates/blocks/DD-Banner/manifest.json +72 -0
- package/templates/blocks/DD-BgLightning/Component.tsx +44 -0
- package/templates/blocks/DD-BgLightning/README.md +3 -0
- package/templates/blocks/DD-BgLightning/config.ts +97 -0
- package/templates/blocks/DD-BgLightning/manifest.json +79 -0
- package/templates/blocks/DD-BookCall/Component.tsx +535 -535
- package/templates/blocks/DD-BookCall/config.ts +238 -238
- package/templates/blocks/DD-ButtonPop/Component.tsx +117 -0
- package/templates/blocks/DD-ButtonPop/config.ts +105 -0
- package/templates/blocks/DD-ButtonPop/manifest.json +88 -0
- package/templates/blocks/DD-ButtonPop/svg-icons/Dust2.tsx +167 -0
- package/templates/blocks/DD-Card/Component.tsx +251 -0
- package/templates/blocks/DD-Card/README.md +4 -0
- package/templates/blocks/DD-Card/config.ts +154 -0
- package/templates/blocks/DD-Card/manifest.json +82 -0
- package/templates/blocks/DD-CardTemplate01/Component.tsx +140 -140
- package/templates/blocks/DD-CardTemplate01/config.ts +106 -106
- package/templates/blocks/DD-Carousel-A/Component.tsx +249 -249
- package/templates/blocks/DD-Carousel-B/Component.tsx +403 -403
- package/templates/blocks/DD-Chip/Component.tsx +250 -0
- package/templates/blocks/DD-Chip/EXAMPLES.md +313 -0
- package/templates/blocks/DD-Chip/README.md +202 -0
- package/templates/blocks/DD-Chip/config.ts +369 -0
- package/templates/blocks/DD-Chip/manifest.json +74 -0
- package/templates/blocks/DD-ComparisonTable/Component.tsx +256 -256
- package/templates/blocks/DD-Contact/Component.tsx +435 -434
- package/templates/blocks/DD-Contact/config.ts +22 -22
- package/templates/blocks/DD-Counter/Component.tsx +190 -0
- package/templates/blocks/DD-Counter/README.md +4 -0
- package/templates/blocks/DD-Counter/config.ts +291 -0
- package/templates/blocks/DD-Counter/manifest.json +74 -0
- package/templates/blocks/DD-CustomCSS/Component.tsx +8 -0
- package/templates/blocks/DD-CustomCSS/README.md +4 -0
- package/templates/blocks/DD-CustomCSS/addToLayout.md +5 -0
- package/templates/blocks/DD-CustomCSS/config.ts +22 -0
- package/templates/blocks/DD-CustomCSS/manifest.json +72 -0
- package/templates/blocks/DD-CustomCSS/renderCustomCSS.md +7 -0
- package/templates/blocks/DD-FeatCat/Component.tsx +302 -302
- package/templates/blocks/DD-FeatCat/config.ts +201 -201
- package/templates/blocks/DD-FeatStrip/Component.tsx +585 -585
- package/templates/blocks/DD-FeatStrip/config.ts +134 -134
- package/templates/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx +628 -0
- package/templates/blocks/DD-FluidBtn/Component.tsx +43 -0
- package/templates/blocks/DD-FluidBtn/README.md +6 -0
- package/templates/blocks/DD-FluidBtn/config.ts +102 -0
- package/templates/blocks/DD-FluidBtn/manifest.json +86 -0
- package/templates/blocks/DD-GooeyInfo/Component.tsx +149 -0
- package/templates/blocks/DD-GooeyInfo/config.ts +135 -0
- package/templates/blocks/DD-GooeyInfo/manifest.json +72 -0
- package/templates/blocks/DD-Hero/Component.tsx +297 -297
- package/templates/blocks/DD-Hero/config.ts +267 -267
- package/templates/blocks/DD-HorizontalScroll/Component.tsx +936 -936
- package/templates/blocks/DD-HorizontalScroll/config.ts +231 -231
- package/templates/blocks/DD-Icon/Component.tsx +287 -0
- package/templates/blocks/DD-Icon/README.md +4 -0
- package/templates/blocks/DD-Icon/config.ts +258 -0
- package/templates/blocks/DD-Icon/hooks/revalidateBlockIds.ts +66 -0
- package/templates/blocks/DD-Icon/manifest.json +82 -0
- package/templates/blocks/DD-IconButton/Component.tsx +455 -0
- package/templates/blocks/DD-IconButton/README.md +326 -0
- package/templates/blocks/DD-IconButton/config.ts +239 -0
- package/templates/blocks/DD-IconButton/manifest.json +85 -0
- package/templates/blocks/DD-IdTag/Component.tsx +21 -0
- package/templates/blocks/DD-IdTag/README.md +4 -0
- package/templates/blocks/DD-IdTag/config.ts +41 -0
- package/templates/blocks/DD-IdTag/manifest.json +72 -0
- package/templates/blocks/DD-Iframe/Component.tsx +45 -0
- package/templates/blocks/DD-Iframe/README.md +4 -0
- package/templates/blocks/DD-Iframe/config.ts +47 -0
- package/templates/blocks/DD-Iframe/manifest.json +72 -0
- package/templates/blocks/DD-IframeMedia/Component.tsx +133 -0
- package/templates/blocks/DD-IframeMedia/README.md +4 -0
- package/templates/blocks/DD-IframeMedia/config.ts +79 -0
- package/templates/blocks/DD-IframeMedia/manifest.json +72 -0
- package/templates/blocks/DD-LineAnim/Component.tsx +36 -0
- package/templates/blocks/DD-LineAnim/README.md +4 -0
- package/templates/blocks/DD-LineAnim/config.ts +90 -0
- package/templates/blocks/DD-LineAnim/manifest.json +80 -0
- package/templates/blocks/DD-LinkGrid/Component.tsx +119 -0
- package/templates/blocks/DD-LinkGrid/README.md +4 -0
- package/templates/blocks/DD-LinkGrid/config.ts +51 -0
- package/templates/blocks/DD-LinkGrid/manifest.json +74 -0
- package/templates/blocks/DD-LogoMarq/Component.tsx +132 -0
- package/templates/blocks/DD-LogoMarq/README.md +4 -0
- package/templates/blocks/DD-LogoMarq/config.ts +264 -0
- package/templates/blocks/DD-LogoMarq/manifest.json +82 -0
- package/templates/blocks/DD-Lottie/Component.tsx +459 -0
- package/templates/blocks/DD-Lottie/README.md +4 -0
- package/templates/blocks/DD-Lottie/config.ts +379 -0
- package/templates/blocks/DD-Lottie/index.tsx +28 -0
- package/templates/blocks/DD-Lottie/manifest.json +83 -0
- package/templates/blocks/DD-MagicBento/Component.tsx +777 -0
- package/templates/blocks/DD-MagicBento/README.md +4 -0
- package/templates/blocks/DD-MagicBento/config.ts +264 -0
- package/templates/blocks/DD-MagicBento/manifest.json +74 -0
- package/templates/blocks/DD-MasonaryMedia/Component.tsx +545 -545
- package/templates/blocks/DD-MasonaryMedia/config.ts +2 -2
- package/templates/blocks/DD-MasonaryMedia/vendor.d.ts +2 -2
- package/templates/blocks/DD-Masonry/Component.tsx +645 -0
- package/templates/blocks/DD-Masonry/README.md +4 -0
- package/templates/blocks/DD-Masonry/config.ts +475 -0
- package/templates/blocks/DD-Masonry/manifest.json +82 -0
- package/templates/blocks/DD-Pricing/Component.tsx +2 -5
- package/templates/blocks/DD-Process/Component.tsx +2 -4
- package/templates/blocks/DD-Process/config.ts +150 -150
- package/templates/blocks/DD-Progress/Component.tsx +156 -0
- package/templates/blocks/DD-Progress/README.md +4 -0
- package/templates/blocks/DD-Progress/config.ts +175 -0
- package/templates/blocks/DD-Progress/manifest.json +74 -0
- package/templates/blocks/DD-ProjHeader/Component.tsx +91 -0
- package/templates/blocks/DD-ProjHeader/README.md +4 -0
- package/templates/blocks/DD-ProjHeader/config.ts +96 -0
- package/templates/blocks/DD-ProjHeader/manifest.json +72 -0
- package/templates/blocks/DD-ProjSlider/Component.tsx +123 -0
- package/templates/blocks/DD-ProjSlider/README.md +4 -0
- package/templates/blocks/DD-ProjSlider/config.ts +64 -0
- package/templates/blocks/DD-ProjSlider/manifest.json +72 -0
- package/templates/blocks/DD-ScrollText/Component.tsx +114 -0
- package/templates/blocks/DD-ScrollText/README.md +4 -0
- package/templates/blocks/DD-ScrollText/config.ts +58 -0
- package/templates/blocks/DD-ScrollText/manifest.json +72 -0
- package/templates/blocks/DD-Section/Component.tsx +266 -266
- package/templates/blocks/DD-Separator/Component.tsx +66 -0
- package/templates/blocks/DD-Separator/README.md +4 -0
- package/templates/blocks/DD-Separator/config.ts +58 -0
- package/templates/blocks/DD-Separator/manifest.json +72 -0
- package/templates/blocks/DD-Services/Component.tsx +176 -176
- package/templates/blocks/DD-Services/config.ts +149 -149
- package/templates/blocks/DD-ShowcaseGrid/Component.tsx +307 -307
- package/templates/blocks/DD-Slider-A/Component.tsx +1 -1
- package/templates/blocks/DD-StackCards/Component.tsx +1 -1
- package/templates/blocks/DD-StackCards/config.ts +399 -399
- package/templates/blocks/DD-Team/Component.tsx +247 -247
- package/templates/blocks/DD-Team/config.ts +173 -173
- package/templates/blocks/DD-TeamCards/Component.tsx +251 -0
- package/templates/blocks/DD-TeamCards/README.md +4 -0
- package/templates/blocks/DD-TeamCards/config.ts +302 -0
- package/templates/blocks/DD-TeamCards/manifest.json +74 -0
- package/templates/blocks/DD-TechStack/Component.tsx +174 -174
- package/templates/blocks/DD-TechStack/config.ts +153 -153
- package/templates/blocks/DD-TestMarq/Component.tsx +132 -0
- package/templates/blocks/DD-TestMarq/README.md +4 -0
- package/templates/blocks/DD-TestMarq/RowLabel.tsx +9 -0
- package/templates/blocks/DD-TestMarq/config.ts +88 -0
- package/templates/blocks/DD-TestMarq/manifest.json +72 -0
- package/templates/blocks/DD-Testim/Component.tsx +247 -0
- package/templates/blocks/DD-Testim/README.md +4 -0
- package/templates/blocks/DD-Testim/config.ts +101 -0
- package/templates/blocks/DD-Testim/manifest.json +75 -0
- package/templates/blocks/DD-Testim2/Component.tsx +256 -0
- package/templates/blocks/DD-Testim2/README.md +4 -0
- package/templates/blocks/DD-Testim2/config.ts +100 -0
- package/templates/blocks/DD-Testim2/manifest.json +74 -0
- package/templates/blocks/DD-Testimonials/Component.tsx +139 -147
- package/templates/blocks/DD-Testimonials/config.ts +120 -120
- package/templates/blocks/DD-TextMarq/Component.tsx +157 -0
- package/templates/blocks/DD-TextMarq/README.md +4 -0
- package/templates/blocks/DD-TextMarq/config.ts +237 -0
- package/templates/blocks/DD-TextMarq/manifest.json +82 -0
- package/templates/blocks/DD-Thanks/Component.tsx +501 -0
- package/templates/blocks/DD-Thanks/README.md +4 -0
- package/templates/blocks/DD-Thanks/config.ts +224 -0
- package/templates/blocks/DD-Thanks/manifest.json +72 -0
- package/templates/blocks/DD-VertMarq/Component.tsx +154 -0
- package/templates/blocks/DD-VertMarq/README.md +4 -0
- package/templates/blocks/DD-VertMarq/config.ts +236 -0
- package/templates/blocks/DD-VertMarq/dist/index.css +6 -0
- package/templates/blocks/DD-VertMarq/dist/index.min.css +1 -0
- package/templates/blocks/DD-VertMarq/manifest.json +74 -0
- package/templates/blocks/DD-Work/Component.tsx +318 -315
- package/templates/blocks/DD-Work/config.ts +165 -165
- package/templates/blocks/DD-Work-B/Component.tsx +294 -294
- package/templates/blocks/DDHG-CTASection2/Component.tsx +185 -0
- package/templates/blocks/DDHG-CTASection2/config.ts +140 -0
- package/templates/blocks/DDHG-CTASection2/manifest.json +45 -0
- package/templates/blocks/DDHG-HighlightArc/Component.tsx +243 -0
- package/templates/blocks/DDHG-HighlightArc/config.ts +85 -0
- package/templates/blocks/DDHG-HighlightArc/manifest.json +46 -0
- package/templates/blocks/DDHG-LogoMarquee/Component.tsx +143 -0
- package/templates/blocks/DDHG-LogoMarquee/config.ts +154 -0
- package/templates/blocks/DDHG-LogoMarquee/manifest.json +39 -0
- package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +227 -0
- package/templates/blocks/DDHG-NavCodeGrid/config.ts +64 -0
- package/templates/blocks/DDHG-NavCodeGrid/manifest.json +45 -0
- package/templates/blocks/DDHG-ProcessSec/Component.tsx +574 -0
- package/templates/blocks/DDHG-ProcessSec/config.ts +170 -0
- package/templates/blocks/DDHG-ProcessSec/manifest.json +56 -0
- package/templates/blocks/DDHG-ServiceDetails/Component.tsx +164 -0
- package/templates/blocks/DDHG-ServiceDetails/ServiceDetailCard.tsx +390 -0
- package/templates/blocks/DDHG-ServiceDetails/config.ts +77 -0
- package/templates/blocks/DDHG-ServiceDetails/manifest.json +50 -0
- package/templates/blocks/DDHG-ServiceHero/Component.tsx +234 -0
- package/templates/blocks/DDHG-ServiceHero/config.ts +49 -0
- package/templates/blocks/DDHG-ServiceHero/manifest.json +26 -0
- package/templates/blocks/DDHG-ServiceOverview/Component.tsx +277 -0
- package/templates/blocks/DDHG-ServiceOverview/config.ts +64 -0
- package/templates/blocks/DDHG-ServiceOverview/manifest.json +44 -0
- package/templates/blocks/DDHG-StatsFAQ/Component.tsx +389 -0
- package/templates/blocks/DDHG-StatsFAQ/config.ts +204 -0
- package/templates/blocks/DDHG-StatsFAQ/manifest.json +45 -0
- package/templates/blocks/DDHG-TeamCards/Component.tsx +169 -0
- package/templates/blocks/DDHG-TeamCards/config.ts +48 -0
- package/templates/blocks/DDHG-TeamCards/manifest.json +29 -0
- package/templates/shared/src/components/BgLightning/index.tsx +242 -0
- package/templates/shared/src/components/ui/ShareButton/index.tsx +80 -0
- package/templates/shared/src/components/ui/anims/FadeOnScroll.tsx +48 -0
- package/templates/shared/src/components/ui/anims/FadeUpOnInView.tsx +63 -0
- package/templates/shared/src/components/ui/anims/GlareHover.tsx +111 -0
- package/templates/shared/src/components/ui/anims/LineAnims.tsx +81 -0
- package/templates/shared/src/components/ui/anims/TitleAnims01.tsx +54 -0
- package/templates/shared/src/components/ui/anims/animation-container.tsx +29 -0
- package/templates/shared/src/components/ui/anims/blur-in.tsx +26 -0
- package/templates/shared/src/components/ui/anims/counter.tsx +53 -0
- package/templates/shared/src/components/ui/anims/fade.tsx +83 -0
- package/templates/shared/src/components/ui/anims/gradual-spacing.tsx +39 -0
- package/templates/shared/src/components/ui/anims/pull-up.tsx +93 -0
- package/templates/shared/src/components/ui/anims/reveal-text.tsx +76 -0
- package/templates/shared/src/components/ui/anims/rotate-words.tsx +43 -0
- package/templates/shared/src/components/ui/anims/shiny-text.tsx +58 -0
- package/templates/shared/src/components/ui/anims/shuffle-text.tsx +85 -0
- package/templates/shared/src/components/ui/anims/split-text.tsx +211 -0
- package/templates/shared/src/components/ui/anims/staggered-fade.tsx +133 -0
- package/templates/shared/src/components/ui/anims/text-scroll.tsx +111 -0
- package/templates/shared/src/components/ui/anims/typing-effect.tsx +112 -0
- package/templates/shared/src/components/ui/button-dusted-fluid/index.tsx +1521 -0
- package/templates/shared/src/components/ui/separator.tsx +85 -0
- package/templates/shared/src/hooks/useBodyScrollLock.ts +97 -0
- package/templates/shared/src/hooks/useClickOutside.ts +28 -0
- package/templates/shared/src/utilities/renderCustomCSS.ts +5 -0
- package/templates/shared/src/utilities/smoothScroll.ts +65 -0
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import type { Block } from 'payload'
|
|
2
|
+
|
|
3
|
+
// Lexical integration
|
|
4
|
+
export const MasonryMediaBlockFeature = {
|
|
5
|
+
type: 'masonryMediaBlock',
|
|
6
|
+
fields: [
|
|
7
|
+
// MasonryMediaBlock fields will be used
|
|
8
|
+
]
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const DDMasonry: Block = {
|
|
12
|
+
slug: 'DD-Masonry',
|
|
13
|
+
interfaceName: 'DDMasonry',
|
|
14
|
+
labels: {
|
|
15
|
+
singular: 'Masonry Media Block',
|
|
16
|
+
plural: 'Masonry Media Blocks'
|
|
17
|
+
},
|
|
18
|
+
fields: [
|
|
19
|
+
{
|
|
20
|
+
name: 'mediaFiles',
|
|
21
|
+
type: 'upload',
|
|
22
|
+
relationTo: 'media',
|
|
23
|
+
hasMany: true,
|
|
24
|
+
required: false,
|
|
25
|
+
label: 'Bulk Add Media',
|
|
26
|
+
admin: {
|
|
27
|
+
description:
|
|
28
|
+
'Select many media files at once. On save, each selected file will be appended into the "items" list with default settings. Existing items are never removed.'
|
|
29
|
+
},
|
|
30
|
+
filterOptions: () => {
|
|
31
|
+
return {} // Return all media, ignore folders
|
|
32
|
+
},
|
|
33
|
+
hooks: {
|
|
34
|
+
beforeChange: [
|
|
35
|
+
({ value, siblingData }) => {
|
|
36
|
+
const selected = Array.isArray(value) ? value : value ? [value] : []
|
|
37
|
+
|
|
38
|
+
const currentItems = Array.isArray(siblingData?.items) ? siblingData.items : []
|
|
39
|
+
|
|
40
|
+
const existingMediaIds = new Set(
|
|
41
|
+
currentItems
|
|
42
|
+
.map((item: any) => {
|
|
43
|
+
const mediaValue = item?.media
|
|
44
|
+
|
|
45
|
+
if (typeof mediaValue === 'number' || typeof mediaValue === 'string') {
|
|
46
|
+
return mediaValue
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (mediaValue && typeof mediaValue === 'object' && 'id' in mediaValue) {
|
|
50
|
+
return (mediaValue as any).id
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return undefined
|
|
54
|
+
})
|
|
55
|
+
.filter((v: any) => v !== undefined)
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
const newItems = selected
|
|
59
|
+
.filter((mediaId) => mediaId !== null && mediaId !== undefined)
|
|
60
|
+
.filter((mediaId) => !existingMediaIds.has(mediaId as any))
|
|
61
|
+
.map((mediaId) => {
|
|
62
|
+
existingMediaIds.add(mediaId as any)
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
// Leave `id` empty so the existing row-level hook auto-generates it
|
|
66
|
+
media: mediaId as any,
|
|
67
|
+
linkType: 'none',
|
|
68
|
+
newTab: false,
|
|
69
|
+
aspectRatio: '1/1',
|
|
70
|
+
showTextOverlay: false
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
if (newItems.length > 0) {
|
|
75
|
+
siblingData.items = [...currentItems, ...newItems]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Treat this field as a "bulk add" input — clear it after processing
|
|
79
|
+
return []
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'items',
|
|
86
|
+
type: 'array',
|
|
87
|
+
label: 'Media Items',
|
|
88
|
+
minRows: 1,
|
|
89
|
+
fields: [
|
|
90
|
+
{
|
|
91
|
+
name: 'media',
|
|
92
|
+
type: 'upload',
|
|
93
|
+
relationTo: 'media',
|
|
94
|
+
required: true,
|
|
95
|
+
filterOptions: () => {
|
|
96
|
+
return {} // Return all media, ignore folders
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: 'row',
|
|
101
|
+
fields: [
|
|
102
|
+
{
|
|
103
|
+
name: 'linkType',
|
|
104
|
+
type: 'radio',
|
|
105
|
+
admin: { layout: 'horizontal', width: '50%' },
|
|
106
|
+
defaultValue: 'none',
|
|
107
|
+
options: [
|
|
108
|
+
{ label: 'No Link', value: 'none' },
|
|
109
|
+
{ label: 'Internal link', value: 'reference' },
|
|
110
|
+
{ label: 'Custom URL', value: 'custom' }
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'newTab',
|
|
115
|
+
type: 'checkbox',
|
|
116
|
+
admin: {
|
|
117
|
+
style: { alignSelf: 'flex-end' },
|
|
118
|
+
width: '50%',
|
|
119
|
+
condition: (_, siblingData) => siblingData?.linkType !== 'none'
|
|
120
|
+
},
|
|
121
|
+
label: 'Open in new tab',
|
|
122
|
+
defaultValue: false
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'reference',
|
|
128
|
+
type: 'relationship',
|
|
129
|
+
admin: {
|
|
130
|
+
condition: (_, siblingData) => siblingData?.linkType === 'reference',
|
|
131
|
+
width: '100%'
|
|
132
|
+
},
|
|
133
|
+
label: 'Document to link to',
|
|
134
|
+
relationTo: ['pages', 'posts']
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: 'url',
|
|
138
|
+
type: 'text',
|
|
139
|
+
admin: {
|
|
140
|
+
condition: (_, siblingData) => siblingData?.linkType === 'custom',
|
|
141
|
+
width: '100%'
|
|
142
|
+
},
|
|
143
|
+
label: 'Custom URL'
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'aspectRatio',
|
|
147
|
+
type: 'select',
|
|
148
|
+
defaultValue: '1/1',
|
|
149
|
+
admin: { width: '50%' },
|
|
150
|
+
options: [
|
|
151
|
+
{ label: 'Square (1:1)', value: '1/1' },
|
|
152
|
+
{ label: 'Portrait (2:3)', value: '2/3' },
|
|
153
|
+
{ label: 'Landscape (3:2)', value: '3/2' },
|
|
154
|
+
{ label: 'Wide (16:9)', value: '16/9' }
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
type: 'row',
|
|
159
|
+
fields: [
|
|
160
|
+
{
|
|
161
|
+
name: 'showTextOverlay',
|
|
162
|
+
type: 'checkbox',
|
|
163
|
+
label: 'Show Text Overlay',
|
|
164
|
+
defaultValue: false,
|
|
165
|
+
admin: { width: '50%' }
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: 'textOverlay',
|
|
169
|
+
type: 'text',
|
|
170
|
+
label: 'Overlay Text',
|
|
171
|
+
admin: {
|
|
172
|
+
width: '50%',
|
|
173
|
+
condition: (data: any, siblingData: any) => siblingData?.showTextOverlay
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
admin: {
|
|
182
|
+
initCollapsed: true,
|
|
183
|
+
className: 'custom-css-class'
|
|
184
|
+
},
|
|
185
|
+
type: 'collapsible',
|
|
186
|
+
label: 'Layout Settings',
|
|
187
|
+
fields: [
|
|
188
|
+
{
|
|
189
|
+
type: 'group',
|
|
190
|
+
name: 'layout',
|
|
191
|
+
label: false,
|
|
192
|
+
fields: [
|
|
193
|
+
{
|
|
194
|
+
name: 'columns',
|
|
195
|
+
type: 'group',
|
|
196
|
+
label: 'Column Configuration',
|
|
197
|
+
fields: [
|
|
198
|
+
{
|
|
199
|
+
type: 'row',
|
|
200
|
+
fields: [
|
|
201
|
+
{
|
|
202
|
+
name: 'desktop',
|
|
203
|
+
type: 'number',
|
|
204
|
+
label: 'Desktop (≥1500px)',
|
|
205
|
+
defaultValue: 5,
|
|
206
|
+
min: 1,
|
|
207
|
+
max: 8,
|
|
208
|
+
admin: { width: '25%' }
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: 'laptop',
|
|
212
|
+
type: 'number',
|
|
213
|
+
label: 'Laptop (≥1000px)',
|
|
214
|
+
defaultValue: 4,
|
|
215
|
+
min: 1,
|
|
216
|
+
max: 6,
|
|
217
|
+
admin: { width: '25%' }
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
name: 'tablet',
|
|
221
|
+
type: 'number',
|
|
222
|
+
label: 'Tablet (≥600px)',
|
|
223
|
+
defaultValue: 3,
|
|
224
|
+
min: 1,
|
|
225
|
+
max: 4,
|
|
226
|
+
admin: { width: '25%' }
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
name: 'mobile',
|
|
230
|
+
type: 'number',
|
|
231
|
+
label: 'Mobile (≥400px)',
|
|
232
|
+
defaultValue: 2,
|
|
233
|
+
min: 1,
|
|
234
|
+
max: 3,
|
|
235
|
+
admin: { width: '25%' }
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
name: 'gap',
|
|
243
|
+
type: 'number',
|
|
244
|
+
label: 'Gap between items (px)',
|
|
245
|
+
defaultValue: 16
|
|
246
|
+
}
|
|
247
|
+
]
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
type: 'group',
|
|
251
|
+
name: 'animation',
|
|
252
|
+
label: 'Animation Settings',
|
|
253
|
+
fields: [
|
|
254
|
+
{
|
|
255
|
+
name: 'enableAnimation',
|
|
256
|
+
type: 'checkbox',
|
|
257
|
+
label: 'Enable Animation',
|
|
258
|
+
defaultValue: true,
|
|
259
|
+
admin: {
|
|
260
|
+
description:
|
|
261
|
+
'Toggle animations on/off. When disabled, items appear instantly without any entrance animation.'
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
type: 'row',
|
|
266
|
+
fields: [
|
|
267
|
+
{
|
|
268
|
+
name: 'animateFrom',
|
|
269
|
+
type: 'select',
|
|
270
|
+
label: 'Animate From',
|
|
271
|
+
defaultValue: 'bottom',
|
|
272
|
+
admin: {
|
|
273
|
+
width: '33%',
|
|
274
|
+
condition: (_, siblingData) => siblingData?.enableAnimation !== false
|
|
275
|
+
},
|
|
276
|
+
options: [
|
|
277
|
+
{ label: 'Bottom', value: 'bottom' },
|
|
278
|
+
{ label: 'Top', value: 'top' },
|
|
279
|
+
{ label: 'Left', value: 'left' },
|
|
280
|
+
{ label: 'Right', value: 'right' },
|
|
281
|
+
{ label: 'Center', value: 'center' },
|
|
282
|
+
{ label: 'Random', value: 'random' }
|
|
283
|
+
],
|
|
284
|
+
dbName: 'animation_from'
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
name: 'ease',
|
|
288
|
+
type: 'select',
|
|
289
|
+
label: 'Easing',
|
|
290
|
+
defaultValue: 'power3.out',
|
|
291
|
+
admin: {
|
|
292
|
+
width: '33%',
|
|
293
|
+
condition: (_, siblingData) => siblingData?.enableAnimation !== false
|
|
294
|
+
},
|
|
295
|
+
options: [
|
|
296
|
+
{ label: 'Power3 Out', value: 'power3.out' },
|
|
297
|
+
{ label: 'Power2 Out', value: 'power2.out' },
|
|
298
|
+
{ label: 'Power4 Out', value: 'power4.out' },
|
|
299
|
+
{ label: 'Back Out', value: 'back.out' },
|
|
300
|
+
{ label: 'Elastic Out', value: 'elastic.out' },
|
|
301
|
+
{ label: 'Bounce Out', value: 'bounce.out' }
|
|
302
|
+
],
|
|
303
|
+
dbName: 'animation_ease'
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
name: 'repeatOnScroll',
|
|
307
|
+
type: 'checkbox',
|
|
308
|
+
label: 'Repeat on Scroll',
|
|
309
|
+
defaultValue: false,
|
|
310
|
+
admin: {
|
|
311
|
+
width: '34%',
|
|
312
|
+
style: { alignSelf: 'flex-end' },
|
|
313
|
+
condition: (_, siblingData) => siblingData?.enableAnimation !== false
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
type: 'row',
|
|
320
|
+
fields: [
|
|
321
|
+
{
|
|
322
|
+
name: 'duration',
|
|
323
|
+
type: 'number',
|
|
324
|
+
label: 'Duration (seconds)',
|
|
325
|
+
defaultValue: 0.6,
|
|
326
|
+
min: 0.1,
|
|
327
|
+
max: 2,
|
|
328
|
+
admin: {
|
|
329
|
+
width: '50%',
|
|
330
|
+
condition: (_, siblingData) => siblingData?.enableAnimation !== false
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
name: 'stagger',
|
|
335
|
+
type: 'number',
|
|
336
|
+
label: 'Stagger Delay (seconds)',
|
|
337
|
+
defaultValue: 0.05,
|
|
338
|
+
min: 0,
|
|
339
|
+
max: 0.5,
|
|
340
|
+
admin: {
|
|
341
|
+
width: '50%',
|
|
342
|
+
condition: (_, siblingData) => siblingData?.enableAnimation !== false
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
]
|
|
346
|
+
}
|
|
347
|
+
]
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
type: 'group',
|
|
351
|
+
name: 'interaction',
|
|
352
|
+
label: 'Interaction Settings',
|
|
353
|
+
fields: [
|
|
354
|
+
{
|
|
355
|
+
type: 'row',
|
|
356
|
+
fields: [
|
|
357
|
+
{
|
|
358
|
+
name: 'scaleOnHover',
|
|
359
|
+
type: 'checkbox',
|
|
360
|
+
label: 'Scale on Hover',
|
|
361
|
+
defaultValue: true,
|
|
362
|
+
admin: { width: '33%' }
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
name: 'blurToFocus',
|
|
366
|
+
type: 'checkbox',
|
|
367
|
+
label: 'Blur to Focus Effect',
|
|
368
|
+
defaultValue: true,
|
|
369
|
+
admin: { width: '33%' }
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
name: 'colorShiftOnHover',
|
|
373
|
+
type: 'checkbox',
|
|
374
|
+
label: 'Color Shift on Hover',
|
|
375
|
+
defaultValue: false,
|
|
376
|
+
admin: { width: '34%' }
|
|
377
|
+
}
|
|
378
|
+
]
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
name: 'hoverScale',
|
|
382
|
+
type: 'number',
|
|
383
|
+
label: 'Hover Scale Amount',
|
|
384
|
+
defaultValue: 0.95,
|
|
385
|
+
min: 0.5,
|
|
386
|
+
max: 1.5,
|
|
387
|
+
admin: {
|
|
388
|
+
width: '50%',
|
|
389
|
+
condition: (data: any, siblingData: any) => siblingData?.scaleOnHover
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
name: 'customHoverColors',
|
|
394
|
+
type: 'group',
|
|
395
|
+
label: 'Custom Hover Colors',
|
|
396
|
+
admin: {
|
|
397
|
+
condition: (data: any, siblingData: any) => siblingData?.colorShiftOnHover
|
|
398
|
+
},
|
|
399
|
+
fields: [
|
|
400
|
+
{
|
|
401
|
+
type: 'row',
|
|
402
|
+
fields: [
|
|
403
|
+
{
|
|
404
|
+
name: 'fromColor',
|
|
405
|
+
type: 'text',
|
|
406
|
+
label: 'From Color',
|
|
407
|
+
defaultValue: 'rgba(236, 72, 153, 0.5)',
|
|
408
|
+
admin: { width: '50%' }
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
name: 'toColor',
|
|
412
|
+
type: 'text',
|
|
413
|
+
label: 'To Color',
|
|
414
|
+
defaultValue: 'rgba(14, 165, 233, 0.5)',
|
|
415
|
+
admin: { width: '50%' }
|
|
416
|
+
}
|
|
417
|
+
]
|
|
418
|
+
}
|
|
419
|
+
]
|
|
420
|
+
}
|
|
421
|
+
]
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
type: 'group',
|
|
425
|
+
name: 'advanced',
|
|
426
|
+
label: 'Advanced Settings',
|
|
427
|
+
fields: [
|
|
428
|
+
{
|
|
429
|
+
type: 'row',
|
|
430
|
+
fields: [
|
|
431
|
+
{
|
|
432
|
+
name: 'sectionId',
|
|
433
|
+
type: 'text',
|
|
434
|
+
label: 'Section ID',
|
|
435
|
+
admin: { width: '50%' }
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
name: 'customClassName',
|
|
439
|
+
type: 'text',
|
|
440
|
+
label: 'Custom Class Name',
|
|
441
|
+
defaultValue: 'min-h-[50vh] mt-16',
|
|
442
|
+
admin: { width: '50%' }
|
|
443
|
+
}
|
|
444
|
+
]
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
type: 'row',
|
|
448
|
+
fields: [
|
|
449
|
+
{
|
|
450
|
+
name: 'enableParallax',
|
|
451
|
+
type: 'checkbox',
|
|
452
|
+
label: 'Enable Parallax',
|
|
453
|
+
defaultValue: false,
|
|
454
|
+
admin: { width: '50%' }
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
name: 'parallaxSpeed',
|
|
458
|
+
type: 'number',
|
|
459
|
+
label: 'Parallax Speed',
|
|
460
|
+
defaultValue: 0.5,
|
|
461
|
+
min: -2,
|
|
462
|
+
max: 2,
|
|
463
|
+
admin: {
|
|
464
|
+
width: '50%',
|
|
465
|
+
condition: (data: any, siblingData: any) => siblingData?.enableParallax
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
]
|
|
469
|
+
}
|
|
470
|
+
]
|
|
471
|
+
}
|
|
472
|
+
]
|
|
473
|
+
}
|
|
474
|
+
]
|
|
475
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-Masonry",
|
|
4
|
+
"label": "Masonry Media",
|
|
5
|
+
"sourceName": "MasonryMediaBlock",
|
|
6
|
+
"portableName": "DD-Masonry",
|
|
7
|
+
"slug": "DD-Masonry",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/ROUND-TWO-CONVERSION/MasonryMediaBlock",
|
|
12
|
+
"originalSlug": "masonryMediaBlock",
|
|
13
|
+
"originalConfigExport": "MasonryMediaBlock",
|
|
14
|
+
"originalComponentExport": "MasonryMediaBlock",
|
|
15
|
+
"originalInterfaceName": "DDMasonry"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-Masonry/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-Masonry/config.ts"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [
|
|
28
|
+
"gsap"
|
|
29
|
+
],
|
|
30
|
+
"sharedFiles": [
|
|
31
|
+
{
|
|
32
|
+
"from": "templates/shared/src/components/ui/anims",
|
|
33
|
+
"to": "src/components/ui/anims",
|
|
34
|
+
"required": true,
|
|
35
|
+
"safeToCopy": true
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"requiredProjectFiles": [],
|
|
39
|
+
"optionalProjectFiles": [],
|
|
40
|
+
"collectionRegistration": {
|
|
41
|
+
"enabled": true,
|
|
42
|
+
"collections": [
|
|
43
|
+
"Pages",
|
|
44
|
+
"Posts"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"renderBlocksRegistration": {
|
|
48
|
+
"enabled": true
|
|
49
|
+
},
|
|
50
|
+
"renderBlocksBehavior": {
|
|
51
|
+
"wrapperless": false
|
|
52
|
+
},
|
|
53
|
+
"pageRouteIntegration": {
|
|
54
|
+
"required": false,
|
|
55
|
+
"manualSteps": []
|
|
56
|
+
},
|
|
57
|
+
"manual": [
|
|
58
|
+
"Register DDMasonry in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
59
|
+
"Register DD-Masonry in RenderBlocks if automatic registration was skipped.",
|
|
60
|
+
"Run payload generate:types after schema changes."
|
|
61
|
+
],
|
|
62
|
+
"manualSteps": [
|
|
63
|
+
"Register DDMasonry in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
64
|
+
"Register DD-Masonry in RenderBlocks if automatic registration was skipped.",
|
|
65
|
+
"Run payload generate:types after schema changes."
|
|
66
|
+
],
|
|
67
|
+
"patchTargets": {
|
|
68
|
+
"blockConfigRegistration": {
|
|
69
|
+
"description": "Installer can add import { DDMasonry } from '@/blocks/DD-Masonry/config' and add DDMasonry to clear Pages/Posts block arrays."
|
|
70
|
+
},
|
|
71
|
+
"renderBlocksRegistration": {
|
|
72
|
+
"description": "Installer can register DD-Masonry in RenderBlocks."
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"notes": [
|
|
76
|
+
"Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
|
|
77
|
+
"Project-specific imports were replaced with local, dependency-light rendering where required.",
|
|
78
|
+
"Manifest includes shared local support files required by original DesignsDusted source imports."
|
|
79
|
+
],
|
|
80
|
+
"exportName": "DDMasonry",
|
|
81
|
+
"interfaceName": "DDMasonry"
|
|
82
|
+
}
|
|
@@ -150,19 +150,16 @@ export function DDPricing({
|
|
|
150
150
|
{eyebrow}
|
|
151
151
|
</p>
|
|
152
152
|
)}
|
|
153
|
-
|
|
154
153
|
{heading && (
|
|
155
154
|
<h2 className="mx-auto mb-4 max-w-3xl text-4xl font-black tracking-tight text-stone-700 dark:text-stone-50 md:text-5xl">
|
|
156
155
|
{heading}
|
|
157
156
|
</h2>
|
|
158
157
|
)}
|
|
159
|
-
|
|
160
158
|
{description && (
|
|
161
159
|
<p className="mx-auto mb-10 max-w-2xl text-sm leading-relaxed text-stone-500 md:text-base">
|
|
162
160
|
{description}
|
|
163
161
|
</p>
|
|
164
162
|
)}
|
|
165
|
-
|
|
166
163
|
<div className="inline-flex items-center gap-1 rounded-xl border border-stone-100 dark:border-stone-800 bg-stone-200 dark:bg-stone-900 p-1">
|
|
167
164
|
<button
|
|
168
165
|
type="button"
|
|
@@ -186,7 +183,7 @@ export function DDPricing({
|
|
|
186
183
|
{annualLabel}
|
|
187
184
|
{annualDiscountLabel && (
|
|
188
185
|
<span
|
|
189
|
-
className={`rounded-full px-1.5 py-0.5 text-
|
|
186
|
+
className={`rounded-full px-1.5 py-0.5 text-xs font-bold ${
|
|
190
187
|
billing === 'annual'
|
|
191
188
|
? 'bg-lime-500 text-stone-50'
|
|
192
189
|
: 'bg-lime-900/60 text-lime-400'
|
|
@@ -221,7 +218,7 @@ export function DDPricing({
|
|
|
221
218
|
>
|
|
222
219
|
{tier.badge && (
|
|
223
220
|
<div className="absolute -top-3 left-1/2 -translate-x-1/2">
|
|
224
|
-
<span className="whitespace-nowrap rounded-full border border-indigo-400 bg-indigo-900/90 px-3 py-1 text-
|
|
221
|
+
<span className="whitespace-nowrap rounded-full border border-indigo-400 bg-indigo-900/90 px-3 py-1 text-xs font-bold uppercase tracking-widest text-stone-300 shadow-md">
|
|
225
222
|
{tier.badge}
|
|
226
223
|
</span>
|
|
227
224
|
</div>
|
|
@@ -116,7 +116,7 @@ export const DDProcess: React.FC<DDProcessProps> = ({
|
|
|
116
116
|
name={step.iconName}
|
|
117
117
|
size={24}
|
|
118
118
|
/>
|
|
119
|
-
<span className="absolute -top-1 -right-1 w-6 h-6 flex items-center justify-center rounded-full bg-stone-200 dark:bg-stone-900 border border-indigo-700 text-
|
|
119
|
+
<span className="absolute -top-1 -right-1 w-6 h-6 flex items-center justify-center rounded-full bg-stone-200 dark:bg-stone-900 border border-indigo-700 text-xs font-mono text-indigo-700 dark:text-indigo-400">
|
|
120
120
|
{i + 1}
|
|
121
121
|
</span>
|
|
122
122
|
</div>
|
|
@@ -125,9 +125,7 @@ export const DDProcess: React.FC<DDProcessProps> = ({
|
|
|
125
125
|
{step.duration && (
|
|
126
126
|
<div className="inline-flex items-center gap-1 bg-7 bg-stone-800 border border-stone-700 rounded-full px-2.5 py-0.5 mb-3 group-hover:bg-indigo-800 group-hover:border-indigo-600 dark:group-hover:border-lime-500">
|
|
127
127
|
<LucideIcons.Clock size={10} className="text-stone-300" />
|
|
128
|
-
<span className="text-
|
|
129
|
-
{step.duration}
|
|
130
|
-
</span>
|
|
128
|
+
<span className="text-xs text-stone-300 font-medium">{step.duration}</span>
|
|
131
129
|
</div>
|
|
132
130
|
)}
|
|
133
131
|
|