blocks-dusted 0.1.10 → 0.1.11

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 (246) hide show
  1. package/README.md +35 -0
  2. package/package.json +1 -1
  3. package/src/utils/paths.js +13 -13
  4. package/templates/blocks/DD-Accordion/Component.tsx +229 -0
  5. package/templates/blocks/DD-Accordion/README.md +3 -0
  6. package/templates/blocks/DD-Accordion/config.ts +73 -0
  7. package/templates/blocks/DD-Accordion/manifest.json +75 -0
  8. package/templates/blocks/DD-AnimText/Component.tsx +788 -0
  9. package/templates/blocks/DD-AnimText/README.md +3 -0
  10. package/templates/blocks/DD-AnimText/config.ts +295 -0
  11. package/templates/blocks/DD-AnimText/manifest.json +85 -0
  12. package/templates/blocks/DD-AsideNav/Component.tsx +321 -0
  13. package/templates/blocks/DD-AsideNav/config.ts +204 -0
  14. package/templates/blocks/DD-AsideNav/manifest.json +80 -0
  15. package/templates/blocks/DD-Banner/Component.tsx +51 -0
  16. package/templates/blocks/DD-Banner/config.ts +57 -0
  17. package/templates/blocks/DD-Banner/manifest.json +72 -0
  18. package/templates/blocks/DD-BgLightning/Component.tsx +44 -0
  19. package/templates/blocks/DD-BgLightning/README.md +3 -0
  20. package/templates/blocks/DD-BgLightning/config.ts +97 -0
  21. package/templates/blocks/DD-BgLightning/manifest.json +79 -0
  22. package/templates/blocks/DD-BookCall/Component.tsx +10 -11
  23. package/templates/blocks/DD-BookCall/config.ts +238 -238
  24. package/templates/blocks/DD-ButtonPop/Component.tsx +117 -0
  25. package/templates/blocks/DD-ButtonPop/config.ts +105 -0
  26. package/templates/blocks/DD-ButtonPop/manifest.json +88 -0
  27. package/templates/blocks/DD-ButtonPop/svg-icons/Dust2.tsx +167 -0
  28. package/templates/blocks/DD-Card/Component.tsx +251 -0
  29. package/templates/blocks/DD-Card/README.md +4 -0
  30. package/templates/blocks/DD-Card/config.ts +154 -0
  31. package/templates/blocks/DD-Card/manifest.json +82 -0
  32. package/templates/blocks/DD-CardTemplate01/Component.tsx +5 -6
  33. package/templates/blocks/DD-CardTemplate01/config.ts +106 -106
  34. package/templates/blocks/DD-Carousel-A/Component.tsx +249 -249
  35. package/templates/blocks/DD-Carousel-B/Component.tsx +403 -403
  36. package/templates/blocks/DD-Chip/Component.tsx +250 -0
  37. package/templates/blocks/DD-Chip/EXAMPLES.md +313 -0
  38. package/templates/blocks/DD-Chip/README.md +202 -0
  39. package/templates/blocks/DD-Chip/config.ts +369 -0
  40. package/templates/blocks/DD-Chip/manifest.json +74 -0
  41. package/templates/blocks/DD-ComparisonTable/Component.tsx +256 -256
  42. package/templates/blocks/DD-Contact/Component.tsx +434 -434
  43. package/templates/blocks/DD-Contact/config.ts +22 -22
  44. package/templates/blocks/DD-Counter/Component.tsx +190 -0
  45. package/templates/blocks/DD-Counter/README.md +4 -0
  46. package/templates/blocks/DD-Counter/config.ts +291 -0
  47. package/templates/blocks/DD-Counter/manifest.json +74 -0
  48. package/templates/blocks/DD-CustomCSS/Component.tsx +8 -0
  49. package/templates/blocks/DD-CustomCSS/README.md +4 -0
  50. package/templates/blocks/DD-CustomCSS/addToLayout.md +5 -0
  51. package/templates/blocks/DD-CustomCSS/config.ts +22 -0
  52. package/templates/blocks/DD-CustomCSS/manifest.json +72 -0
  53. package/templates/blocks/DD-CustomCSS/renderCustomCSS.md +7 -0
  54. package/templates/blocks/DD-FeatCat/Component.tsx +302 -302
  55. package/templates/blocks/DD-FeatCat/config.ts +201 -201
  56. package/templates/blocks/DD-FeatStrip/Component.tsx +585 -585
  57. package/templates/blocks/DD-FeatStrip/config.ts +134 -134
  58. package/templates/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx +628 -0
  59. package/templates/blocks/DD-FluidBtn/Component.tsx +43 -0
  60. package/templates/blocks/DD-FluidBtn/README.md +6 -0
  61. package/templates/blocks/DD-FluidBtn/config.ts +102 -0
  62. package/templates/blocks/DD-FluidBtn/manifest.json +86 -0
  63. package/templates/blocks/DD-GooeyInfo/Component.tsx +149 -0
  64. package/templates/blocks/DD-GooeyInfo/config.ts +135 -0
  65. package/templates/blocks/DD-GooeyInfo/manifest.json +72 -0
  66. package/templates/blocks/DD-Hero/Component.tsx +40 -17
  67. package/templates/blocks/DD-Hero/config.ts +267 -267
  68. package/templates/blocks/DD-HorizontalScroll/Component.tsx +4 -2
  69. package/templates/blocks/DD-HorizontalScroll/config.ts +231 -231
  70. package/templates/blocks/DD-Icon/Component.tsx +287 -0
  71. package/templates/blocks/DD-Icon/README.md +4 -0
  72. package/templates/blocks/DD-Icon/config.ts +258 -0
  73. package/templates/blocks/DD-Icon/hooks/revalidateBlockIds.ts +66 -0
  74. package/templates/blocks/DD-Icon/manifest.json +82 -0
  75. package/templates/blocks/DD-IconButton/Component.tsx +455 -0
  76. package/templates/blocks/DD-IconButton/README.md +326 -0
  77. package/templates/blocks/DD-IconButton/config.ts +239 -0
  78. package/templates/blocks/DD-IconButton/manifest.json +85 -0
  79. package/templates/blocks/DD-IdTag/Component.tsx +21 -0
  80. package/templates/blocks/DD-IdTag/README.md +4 -0
  81. package/templates/blocks/DD-IdTag/config.ts +41 -0
  82. package/templates/blocks/DD-IdTag/manifest.json +72 -0
  83. package/templates/blocks/DD-Iframe/Component.tsx +45 -0
  84. package/templates/blocks/DD-Iframe/README.md +4 -0
  85. package/templates/blocks/DD-Iframe/config.ts +47 -0
  86. package/templates/blocks/DD-Iframe/manifest.json +72 -0
  87. package/templates/blocks/DD-IframeMedia/Component.tsx +129 -0
  88. package/templates/blocks/DD-IframeMedia/README.md +4 -0
  89. package/templates/blocks/DD-IframeMedia/config.ts +79 -0
  90. package/templates/blocks/DD-IframeMedia/manifest.json +72 -0
  91. package/templates/blocks/DD-LineAnim/Component.tsx +36 -0
  92. package/templates/blocks/DD-LineAnim/README.md +4 -0
  93. package/templates/blocks/DD-LineAnim/config.ts +90 -0
  94. package/templates/blocks/DD-LineAnim/manifest.json +80 -0
  95. package/templates/blocks/DD-LinkGrid/Component.tsx +119 -0
  96. package/templates/blocks/DD-LinkGrid/README.md +4 -0
  97. package/templates/blocks/DD-LinkGrid/config.ts +51 -0
  98. package/templates/blocks/DD-LinkGrid/manifest.json +74 -0
  99. package/templates/blocks/DD-LogoMarq/Component.tsx +132 -0
  100. package/templates/blocks/DD-LogoMarq/README.md +4 -0
  101. package/templates/blocks/DD-LogoMarq/config.ts +264 -0
  102. package/templates/blocks/DD-LogoMarq/manifest.json +82 -0
  103. package/templates/blocks/DD-Lottie/Component.tsx +459 -0
  104. package/templates/blocks/DD-Lottie/README.md +4 -0
  105. package/templates/blocks/DD-Lottie/config.ts +379 -0
  106. package/templates/blocks/DD-Lottie/index.tsx +28 -0
  107. package/templates/blocks/DD-Lottie/manifest.json +83 -0
  108. package/templates/blocks/DD-MagicBento/Component.tsx +777 -0
  109. package/templates/blocks/DD-MagicBento/README.md +4 -0
  110. package/templates/blocks/DD-MagicBento/config.ts +264 -0
  111. package/templates/blocks/DD-MagicBento/manifest.json +74 -0
  112. package/templates/blocks/DD-MasonaryMedia/Component.tsx +547 -545
  113. package/templates/blocks/DD-MasonaryMedia/config.ts +2 -2
  114. package/templates/blocks/DD-MasonaryMedia/vendor.d.ts +2 -2
  115. package/templates/blocks/DD-Masonry/Component.tsx +645 -0
  116. package/templates/blocks/DD-Masonry/README.md +4 -0
  117. package/templates/blocks/DD-Masonry/config.ts +475 -0
  118. package/templates/blocks/DD-Masonry/manifest.json +82 -0
  119. package/templates/blocks/DD-Pricing/Component.tsx +372 -372
  120. package/templates/blocks/DD-Process/Component.tsx +149 -149
  121. package/templates/blocks/DD-Process/config.ts +150 -150
  122. package/templates/blocks/DD-Progress/Component.tsx +141 -0
  123. package/templates/blocks/DD-Progress/README.md +4 -0
  124. package/templates/blocks/DD-Progress/config.ts +175 -0
  125. package/templates/blocks/DD-Progress/manifest.json +74 -0
  126. package/templates/blocks/DD-ProjHeader/Component.tsx +91 -0
  127. package/templates/blocks/DD-ProjHeader/README.md +4 -0
  128. package/templates/blocks/DD-ProjHeader/config.ts +96 -0
  129. package/templates/blocks/DD-ProjHeader/manifest.json +72 -0
  130. package/templates/blocks/DD-ProjSlider/Component.tsx +123 -0
  131. package/templates/blocks/DD-ProjSlider/README.md +4 -0
  132. package/templates/blocks/DD-ProjSlider/config.ts +64 -0
  133. package/templates/blocks/DD-ProjSlider/manifest.json +72 -0
  134. package/templates/blocks/DD-ScrollText/Component.tsx +114 -0
  135. package/templates/blocks/DD-ScrollText/README.md +4 -0
  136. package/templates/blocks/DD-ScrollText/config.ts +58 -0
  137. package/templates/blocks/DD-ScrollText/manifest.json +72 -0
  138. package/templates/blocks/DD-Section/Component.tsx +266 -266
  139. package/templates/blocks/DD-Separator/Component.tsx +66 -0
  140. package/templates/blocks/DD-Separator/README.md +4 -0
  141. package/templates/blocks/DD-Separator/config.ts +58 -0
  142. package/templates/blocks/DD-Separator/manifest.json +72 -0
  143. package/templates/blocks/DD-Services/Component.tsx +176 -176
  144. package/templates/blocks/DD-Services/config.ts +149 -149
  145. package/templates/blocks/DD-ShowcaseGrid/Component.tsx +307 -307
  146. package/templates/blocks/DD-Slider-A/Component.tsx +237 -237
  147. package/templates/blocks/DD-StackCards/Component.tsx +473 -473
  148. package/templates/blocks/DD-StackCards/config.ts +399 -399
  149. package/templates/blocks/DD-Team/Component.tsx +247 -247
  150. package/templates/blocks/DD-Team/config.ts +173 -173
  151. package/templates/blocks/DD-TeamCards/Component.tsx +251 -0
  152. package/templates/blocks/DD-TeamCards/README.md +4 -0
  153. package/templates/blocks/DD-TeamCards/config.ts +302 -0
  154. package/templates/blocks/DD-TeamCards/manifest.json +74 -0
  155. package/templates/blocks/DD-TechStack/Component.tsx +168 -162
  156. package/templates/blocks/DD-TechStack/config.ts +153 -153
  157. package/templates/blocks/DD-TestMarq/Component.tsx +132 -0
  158. package/templates/blocks/DD-TestMarq/README.md +4 -0
  159. package/templates/blocks/DD-TestMarq/RowLabel.tsx +9 -0
  160. package/templates/blocks/DD-TestMarq/config.ts +88 -0
  161. package/templates/blocks/DD-TestMarq/manifest.json +72 -0
  162. package/templates/blocks/DD-Testim/Component.tsx +247 -0
  163. package/templates/blocks/DD-Testim/README.md +4 -0
  164. package/templates/blocks/DD-Testim/config.ts +101 -0
  165. package/templates/blocks/DD-Testim/manifest.json +75 -0
  166. package/templates/blocks/DD-Testim2/Component.tsx +256 -0
  167. package/templates/blocks/DD-Testim2/README.md +4 -0
  168. package/templates/blocks/DD-Testim2/config.ts +100 -0
  169. package/templates/blocks/DD-Testim2/manifest.json +74 -0
  170. package/templates/blocks/DD-Testimonials/Component.tsx +147 -147
  171. package/templates/blocks/DD-Testimonials/config.ts +120 -120
  172. package/templates/blocks/DD-TextMarq/Component.tsx +157 -0
  173. package/templates/blocks/DD-TextMarq/README.md +4 -0
  174. package/templates/blocks/DD-TextMarq/config.ts +237 -0
  175. package/templates/blocks/DD-TextMarq/manifest.json +82 -0
  176. package/templates/blocks/DD-Thanks/Component.tsx +500 -0
  177. package/templates/blocks/DD-Thanks/README.md +4 -0
  178. package/templates/blocks/DD-Thanks/config.ts +224 -0
  179. package/templates/blocks/DD-Thanks/manifest.json +72 -0
  180. package/templates/blocks/DD-VertMarq/Component.tsx +154 -0
  181. package/templates/blocks/DD-VertMarq/README.md +4 -0
  182. package/templates/blocks/DD-VertMarq/config.ts +236 -0
  183. package/templates/blocks/DD-VertMarq/dist/index.css +6 -0
  184. package/templates/blocks/DD-VertMarq/dist/index.min.css +1 -0
  185. package/templates/blocks/DD-VertMarq/manifest.json +74 -0
  186. package/templates/blocks/DD-Work/Component.tsx +318 -315
  187. package/templates/blocks/DD-Work/config.ts +165 -165
  188. package/templates/blocks/DD-Work-B/Component.tsx +294 -294
  189. package/templates/blocks/DDHG-CTASection2/Component.tsx +185 -0
  190. package/templates/blocks/DDHG-CTASection2/config.ts +140 -0
  191. package/templates/blocks/DDHG-CTASection2/manifest.json +45 -0
  192. package/templates/blocks/DDHG-HighlightArc/Component.tsx +243 -0
  193. package/templates/blocks/DDHG-HighlightArc/config.ts +85 -0
  194. package/templates/blocks/DDHG-HighlightArc/manifest.json +46 -0
  195. package/templates/blocks/DDHG-LogoMarquee/Component.tsx +93 -0
  196. package/templates/blocks/DDHG-LogoMarquee/config.ts +66 -0
  197. package/templates/blocks/DDHG-LogoMarquee/manifest.json +39 -0
  198. package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +213 -0
  199. package/templates/blocks/DDHG-NavCodeGrid/config.ts +64 -0
  200. package/templates/blocks/DDHG-NavCodeGrid/manifest.json +45 -0
  201. package/templates/blocks/DDHG-ProcessSec/Component.tsx +575 -0
  202. package/templates/blocks/DDHG-ProcessSec/config.ts +170 -0
  203. package/templates/blocks/DDHG-ProcessSec/manifest.json +56 -0
  204. package/templates/blocks/DDHG-ServiceDetails/Component.tsx +164 -0
  205. package/templates/blocks/DDHG-ServiceDetails/ServiceDetailCard.tsx +394 -0
  206. package/templates/blocks/DDHG-ServiceDetails/config.ts +77 -0
  207. package/templates/blocks/DDHG-ServiceDetails/manifest.json +50 -0
  208. package/templates/blocks/DDHG-ServiceHero/Component.tsx +234 -0
  209. package/templates/blocks/DDHG-ServiceHero/config.ts +49 -0
  210. package/templates/blocks/DDHG-ServiceHero/manifest.json +26 -0
  211. package/templates/blocks/DDHG-ServiceOverview/Component.tsx +277 -0
  212. package/templates/blocks/DDHG-ServiceOverview/config.ts +64 -0
  213. package/templates/blocks/DDHG-ServiceOverview/manifest.json +44 -0
  214. package/templates/blocks/DDHG-StatsFAQ/Component.tsx +389 -0
  215. package/templates/blocks/DDHG-StatsFAQ/config.ts +204 -0
  216. package/templates/blocks/DDHG-StatsFAQ/manifest.json +45 -0
  217. package/templates/blocks/DDHG-TeamCards/Component.tsx +131 -0
  218. package/templates/blocks/DDHG-TeamCards/config.ts +48 -0
  219. package/templates/blocks/DDHG-TeamCards/manifest.json +29 -0
  220. package/templates/shared/src/components/BgLightning/index.tsx +242 -0
  221. package/templates/shared/src/components/ui/ShareButton/index.tsx +80 -0
  222. package/templates/shared/src/components/ui/anims/FadeOnScroll.tsx +48 -0
  223. package/templates/shared/src/components/ui/anims/FadeUpOnInView.tsx +63 -0
  224. package/templates/shared/src/components/ui/anims/GlareHover.tsx +111 -0
  225. package/templates/shared/src/components/ui/anims/LineAnims.tsx +81 -0
  226. package/templates/shared/src/components/ui/anims/TitleAnims01.tsx +54 -0
  227. package/templates/shared/src/components/ui/anims/animation-container.tsx +29 -0
  228. package/templates/shared/src/components/ui/anims/blur-in.tsx +26 -0
  229. package/templates/shared/src/components/ui/anims/counter.tsx +53 -0
  230. package/templates/shared/src/components/ui/anims/fade.tsx +83 -0
  231. package/templates/shared/src/components/ui/anims/gradual-spacing.tsx +39 -0
  232. package/templates/shared/src/components/ui/anims/pull-up.tsx +93 -0
  233. package/templates/shared/src/components/ui/anims/reveal-text.tsx +76 -0
  234. package/templates/shared/src/components/ui/anims/rotate-words.tsx +43 -0
  235. package/templates/shared/src/components/ui/anims/shiny-text.tsx +58 -0
  236. package/templates/shared/src/components/ui/anims/shuffle-text.tsx +85 -0
  237. package/templates/shared/src/components/ui/anims/split-text.tsx +211 -0
  238. package/templates/shared/src/components/ui/anims/staggered-fade.tsx +133 -0
  239. package/templates/shared/src/components/ui/anims/text-scroll.tsx +111 -0
  240. package/templates/shared/src/components/ui/anims/typing-effect.tsx +112 -0
  241. package/templates/shared/src/components/ui/button-dusted-fluid/index.tsx +1521 -0
  242. package/templates/shared/src/components/ui/separator.tsx +85 -0
  243. package/templates/shared/src/hooks/useBodyScrollLock.ts +97 -0
  244. package/templates/shared/src/hooks/useClickOutside.ts +28 -0
  245. package/templates/shared/src/utilities/renderCustomCSS.ts +5 -0
  246. 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
+ }