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.
Files changed (249) hide show
  1. package/README.md +35 -0
  2. package/package.json +5 -2
  3. package/src/cli.js +39 -3
  4. package/src/commands/shop.js +59 -0
  5. package/src/commands/warehouse.js +73 -0
  6. package/src/utils/paths.js +13 -13
  7. package/templates/blocks/DD-Accordion/Component.tsx +229 -0
  8. package/templates/blocks/DD-Accordion/README.md +3 -0
  9. package/templates/blocks/DD-Accordion/config.ts +73 -0
  10. package/templates/blocks/DD-Accordion/manifest.json +75 -0
  11. package/templates/blocks/DD-AnimText/Component.tsx +788 -0
  12. package/templates/blocks/DD-AnimText/README.md +3 -0
  13. package/templates/blocks/DD-AnimText/config.ts +295 -0
  14. package/templates/blocks/DD-AnimText/manifest.json +85 -0
  15. package/templates/blocks/DD-AsideNav/Component.tsx +321 -0
  16. package/templates/blocks/DD-AsideNav/config.ts +204 -0
  17. package/templates/blocks/DD-AsideNav/manifest.json +80 -0
  18. package/templates/blocks/DD-Banner/Component.tsx +51 -0
  19. package/templates/blocks/DD-Banner/config.ts +57 -0
  20. package/templates/blocks/DD-Banner/manifest.json +72 -0
  21. package/templates/blocks/DD-BgLightning/Component.tsx +44 -0
  22. package/templates/blocks/DD-BgLightning/README.md +3 -0
  23. package/templates/blocks/DD-BgLightning/config.ts +97 -0
  24. package/templates/blocks/DD-BgLightning/manifest.json +79 -0
  25. package/templates/blocks/DD-BookCall/Component.tsx +535 -535
  26. package/templates/blocks/DD-BookCall/config.ts +238 -238
  27. package/templates/blocks/DD-ButtonPop/Component.tsx +117 -0
  28. package/templates/blocks/DD-ButtonPop/config.ts +105 -0
  29. package/templates/blocks/DD-ButtonPop/manifest.json +88 -0
  30. package/templates/blocks/DD-ButtonPop/svg-icons/Dust2.tsx +167 -0
  31. package/templates/blocks/DD-Card/Component.tsx +251 -0
  32. package/templates/blocks/DD-Card/README.md +4 -0
  33. package/templates/blocks/DD-Card/config.ts +154 -0
  34. package/templates/blocks/DD-Card/manifest.json +82 -0
  35. package/templates/blocks/DD-CardTemplate01/Component.tsx +140 -140
  36. package/templates/blocks/DD-CardTemplate01/config.ts +106 -106
  37. package/templates/blocks/DD-Carousel-A/Component.tsx +249 -249
  38. package/templates/blocks/DD-Carousel-B/Component.tsx +403 -403
  39. package/templates/blocks/DD-Chip/Component.tsx +250 -0
  40. package/templates/blocks/DD-Chip/EXAMPLES.md +313 -0
  41. package/templates/blocks/DD-Chip/README.md +202 -0
  42. package/templates/blocks/DD-Chip/config.ts +369 -0
  43. package/templates/blocks/DD-Chip/manifest.json +74 -0
  44. package/templates/blocks/DD-ComparisonTable/Component.tsx +256 -256
  45. package/templates/blocks/DD-Contact/Component.tsx +435 -434
  46. package/templates/blocks/DD-Contact/config.ts +22 -22
  47. package/templates/blocks/DD-Counter/Component.tsx +190 -0
  48. package/templates/blocks/DD-Counter/README.md +4 -0
  49. package/templates/blocks/DD-Counter/config.ts +291 -0
  50. package/templates/blocks/DD-Counter/manifest.json +74 -0
  51. package/templates/blocks/DD-CustomCSS/Component.tsx +8 -0
  52. package/templates/blocks/DD-CustomCSS/README.md +4 -0
  53. package/templates/blocks/DD-CustomCSS/addToLayout.md +5 -0
  54. package/templates/blocks/DD-CustomCSS/config.ts +22 -0
  55. package/templates/blocks/DD-CustomCSS/manifest.json +72 -0
  56. package/templates/blocks/DD-CustomCSS/renderCustomCSS.md +7 -0
  57. package/templates/blocks/DD-FeatCat/Component.tsx +302 -302
  58. package/templates/blocks/DD-FeatCat/config.ts +201 -201
  59. package/templates/blocks/DD-FeatStrip/Component.tsx +585 -585
  60. package/templates/blocks/DD-FeatStrip/config.ts +134 -134
  61. package/templates/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx +628 -0
  62. package/templates/blocks/DD-FluidBtn/Component.tsx +43 -0
  63. package/templates/blocks/DD-FluidBtn/README.md +6 -0
  64. package/templates/blocks/DD-FluidBtn/config.ts +102 -0
  65. package/templates/blocks/DD-FluidBtn/manifest.json +86 -0
  66. package/templates/blocks/DD-GooeyInfo/Component.tsx +149 -0
  67. package/templates/blocks/DD-GooeyInfo/config.ts +135 -0
  68. package/templates/blocks/DD-GooeyInfo/manifest.json +72 -0
  69. package/templates/blocks/DD-Hero/Component.tsx +297 -297
  70. package/templates/blocks/DD-Hero/config.ts +267 -267
  71. package/templates/blocks/DD-HorizontalScroll/Component.tsx +936 -936
  72. package/templates/blocks/DD-HorizontalScroll/config.ts +231 -231
  73. package/templates/blocks/DD-Icon/Component.tsx +287 -0
  74. package/templates/blocks/DD-Icon/README.md +4 -0
  75. package/templates/blocks/DD-Icon/config.ts +258 -0
  76. package/templates/blocks/DD-Icon/hooks/revalidateBlockIds.ts +66 -0
  77. package/templates/blocks/DD-Icon/manifest.json +82 -0
  78. package/templates/blocks/DD-IconButton/Component.tsx +455 -0
  79. package/templates/blocks/DD-IconButton/README.md +326 -0
  80. package/templates/blocks/DD-IconButton/config.ts +239 -0
  81. package/templates/blocks/DD-IconButton/manifest.json +85 -0
  82. package/templates/blocks/DD-IdTag/Component.tsx +21 -0
  83. package/templates/blocks/DD-IdTag/README.md +4 -0
  84. package/templates/blocks/DD-IdTag/config.ts +41 -0
  85. package/templates/blocks/DD-IdTag/manifest.json +72 -0
  86. package/templates/blocks/DD-Iframe/Component.tsx +45 -0
  87. package/templates/blocks/DD-Iframe/README.md +4 -0
  88. package/templates/blocks/DD-Iframe/config.ts +47 -0
  89. package/templates/blocks/DD-Iframe/manifest.json +72 -0
  90. package/templates/blocks/DD-IframeMedia/Component.tsx +133 -0
  91. package/templates/blocks/DD-IframeMedia/README.md +4 -0
  92. package/templates/blocks/DD-IframeMedia/config.ts +79 -0
  93. package/templates/blocks/DD-IframeMedia/manifest.json +72 -0
  94. package/templates/blocks/DD-LineAnim/Component.tsx +36 -0
  95. package/templates/blocks/DD-LineAnim/README.md +4 -0
  96. package/templates/blocks/DD-LineAnim/config.ts +90 -0
  97. package/templates/blocks/DD-LineAnim/manifest.json +80 -0
  98. package/templates/blocks/DD-LinkGrid/Component.tsx +119 -0
  99. package/templates/blocks/DD-LinkGrid/README.md +4 -0
  100. package/templates/blocks/DD-LinkGrid/config.ts +51 -0
  101. package/templates/blocks/DD-LinkGrid/manifest.json +74 -0
  102. package/templates/blocks/DD-LogoMarq/Component.tsx +132 -0
  103. package/templates/blocks/DD-LogoMarq/README.md +4 -0
  104. package/templates/blocks/DD-LogoMarq/config.ts +264 -0
  105. package/templates/blocks/DD-LogoMarq/manifest.json +82 -0
  106. package/templates/blocks/DD-Lottie/Component.tsx +459 -0
  107. package/templates/blocks/DD-Lottie/README.md +4 -0
  108. package/templates/blocks/DD-Lottie/config.ts +379 -0
  109. package/templates/blocks/DD-Lottie/index.tsx +28 -0
  110. package/templates/blocks/DD-Lottie/manifest.json +83 -0
  111. package/templates/blocks/DD-MagicBento/Component.tsx +777 -0
  112. package/templates/blocks/DD-MagicBento/README.md +4 -0
  113. package/templates/blocks/DD-MagicBento/config.ts +264 -0
  114. package/templates/blocks/DD-MagicBento/manifest.json +74 -0
  115. package/templates/blocks/DD-MasonaryMedia/Component.tsx +545 -545
  116. package/templates/blocks/DD-MasonaryMedia/config.ts +2 -2
  117. package/templates/blocks/DD-MasonaryMedia/vendor.d.ts +2 -2
  118. package/templates/blocks/DD-Masonry/Component.tsx +645 -0
  119. package/templates/blocks/DD-Masonry/README.md +4 -0
  120. package/templates/blocks/DD-Masonry/config.ts +475 -0
  121. package/templates/blocks/DD-Masonry/manifest.json +82 -0
  122. package/templates/blocks/DD-Pricing/Component.tsx +2 -5
  123. package/templates/blocks/DD-Process/Component.tsx +2 -4
  124. package/templates/blocks/DD-Process/config.ts +150 -150
  125. package/templates/blocks/DD-Progress/Component.tsx +156 -0
  126. package/templates/blocks/DD-Progress/README.md +4 -0
  127. package/templates/blocks/DD-Progress/config.ts +175 -0
  128. package/templates/blocks/DD-Progress/manifest.json +74 -0
  129. package/templates/blocks/DD-ProjHeader/Component.tsx +91 -0
  130. package/templates/blocks/DD-ProjHeader/README.md +4 -0
  131. package/templates/blocks/DD-ProjHeader/config.ts +96 -0
  132. package/templates/blocks/DD-ProjHeader/manifest.json +72 -0
  133. package/templates/blocks/DD-ProjSlider/Component.tsx +123 -0
  134. package/templates/blocks/DD-ProjSlider/README.md +4 -0
  135. package/templates/blocks/DD-ProjSlider/config.ts +64 -0
  136. package/templates/blocks/DD-ProjSlider/manifest.json +72 -0
  137. package/templates/blocks/DD-ScrollText/Component.tsx +114 -0
  138. package/templates/blocks/DD-ScrollText/README.md +4 -0
  139. package/templates/blocks/DD-ScrollText/config.ts +58 -0
  140. package/templates/blocks/DD-ScrollText/manifest.json +72 -0
  141. package/templates/blocks/DD-Section/Component.tsx +266 -266
  142. package/templates/blocks/DD-Separator/Component.tsx +66 -0
  143. package/templates/blocks/DD-Separator/README.md +4 -0
  144. package/templates/blocks/DD-Separator/config.ts +58 -0
  145. package/templates/blocks/DD-Separator/manifest.json +72 -0
  146. package/templates/blocks/DD-Services/Component.tsx +176 -176
  147. package/templates/blocks/DD-Services/config.ts +149 -149
  148. package/templates/blocks/DD-ShowcaseGrid/Component.tsx +307 -307
  149. package/templates/blocks/DD-Slider-A/Component.tsx +1 -1
  150. package/templates/blocks/DD-StackCards/Component.tsx +1 -1
  151. package/templates/blocks/DD-StackCards/config.ts +399 -399
  152. package/templates/blocks/DD-Team/Component.tsx +247 -247
  153. package/templates/blocks/DD-Team/config.ts +173 -173
  154. package/templates/blocks/DD-TeamCards/Component.tsx +251 -0
  155. package/templates/blocks/DD-TeamCards/README.md +4 -0
  156. package/templates/blocks/DD-TeamCards/config.ts +302 -0
  157. package/templates/blocks/DD-TeamCards/manifest.json +74 -0
  158. package/templates/blocks/DD-TechStack/Component.tsx +174 -174
  159. package/templates/blocks/DD-TechStack/config.ts +153 -153
  160. package/templates/blocks/DD-TestMarq/Component.tsx +132 -0
  161. package/templates/blocks/DD-TestMarq/README.md +4 -0
  162. package/templates/blocks/DD-TestMarq/RowLabel.tsx +9 -0
  163. package/templates/blocks/DD-TestMarq/config.ts +88 -0
  164. package/templates/blocks/DD-TestMarq/manifest.json +72 -0
  165. package/templates/blocks/DD-Testim/Component.tsx +247 -0
  166. package/templates/blocks/DD-Testim/README.md +4 -0
  167. package/templates/blocks/DD-Testim/config.ts +101 -0
  168. package/templates/blocks/DD-Testim/manifest.json +75 -0
  169. package/templates/blocks/DD-Testim2/Component.tsx +256 -0
  170. package/templates/blocks/DD-Testim2/README.md +4 -0
  171. package/templates/blocks/DD-Testim2/config.ts +100 -0
  172. package/templates/blocks/DD-Testim2/manifest.json +74 -0
  173. package/templates/blocks/DD-Testimonials/Component.tsx +139 -147
  174. package/templates/blocks/DD-Testimonials/config.ts +120 -120
  175. package/templates/blocks/DD-TextMarq/Component.tsx +157 -0
  176. package/templates/blocks/DD-TextMarq/README.md +4 -0
  177. package/templates/blocks/DD-TextMarq/config.ts +237 -0
  178. package/templates/blocks/DD-TextMarq/manifest.json +82 -0
  179. package/templates/blocks/DD-Thanks/Component.tsx +501 -0
  180. package/templates/blocks/DD-Thanks/README.md +4 -0
  181. package/templates/blocks/DD-Thanks/config.ts +224 -0
  182. package/templates/blocks/DD-Thanks/manifest.json +72 -0
  183. package/templates/blocks/DD-VertMarq/Component.tsx +154 -0
  184. package/templates/blocks/DD-VertMarq/README.md +4 -0
  185. package/templates/blocks/DD-VertMarq/config.ts +236 -0
  186. package/templates/blocks/DD-VertMarq/dist/index.css +6 -0
  187. package/templates/blocks/DD-VertMarq/dist/index.min.css +1 -0
  188. package/templates/blocks/DD-VertMarq/manifest.json +74 -0
  189. package/templates/blocks/DD-Work/Component.tsx +318 -315
  190. package/templates/blocks/DD-Work/config.ts +165 -165
  191. package/templates/blocks/DD-Work-B/Component.tsx +294 -294
  192. package/templates/blocks/DDHG-CTASection2/Component.tsx +185 -0
  193. package/templates/blocks/DDHG-CTASection2/config.ts +140 -0
  194. package/templates/blocks/DDHG-CTASection2/manifest.json +45 -0
  195. package/templates/blocks/DDHG-HighlightArc/Component.tsx +243 -0
  196. package/templates/blocks/DDHG-HighlightArc/config.ts +85 -0
  197. package/templates/blocks/DDHG-HighlightArc/manifest.json +46 -0
  198. package/templates/blocks/DDHG-LogoMarquee/Component.tsx +143 -0
  199. package/templates/blocks/DDHG-LogoMarquee/config.ts +154 -0
  200. package/templates/blocks/DDHG-LogoMarquee/manifest.json +39 -0
  201. package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +227 -0
  202. package/templates/blocks/DDHG-NavCodeGrid/config.ts +64 -0
  203. package/templates/blocks/DDHG-NavCodeGrid/manifest.json +45 -0
  204. package/templates/blocks/DDHG-ProcessSec/Component.tsx +574 -0
  205. package/templates/blocks/DDHG-ProcessSec/config.ts +170 -0
  206. package/templates/blocks/DDHG-ProcessSec/manifest.json +56 -0
  207. package/templates/blocks/DDHG-ServiceDetails/Component.tsx +164 -0
  208. package/templates/blocks/DDHG-ServiceDetails/ServiceDetailCard.tsx +390 -0
  209. package/templates/blocks/DDHG-ServiceDetails/config.ts +77 -0
  210. package/templates/blocks/DDHG-ServiceDetails/manifest.json +50 -0
  211. package/templates/blocks/DDHG-ServiceHero/Component.tsx +234 -0
  212. package/templates/blocks/DDHG-ServiceHero/config.ts +49 -0
  213. package/templates/blocks/DDHG-ServiceHero/manifest.json +26 -0
  214. package/templates/blocks/DDHG-ServiceOverview/Component.tsx +277 -0
  215. package/templates/blocks/DDHG-ServiceOverview/config.ts +64 -0
  216. package/templates/blocks/DDHG-ServiceOverview/manifest.json +44 -0
  217. package/templates/blocks/DDHG-StatsFAQ/Component.tsx +389 -0
  218. package/templates/blocks/DDHG-StatsFAQ/config.ts +204 -0
  219. package/templates/blocks/DDHG-StatsFAQ/manifest.json +45 -0
  220. package/templates/blocks/DDHG-TeamCards/Component.tsx +169 -0
  221. package/templates/blocks/DDHG-TeamCards/config.ts +48 -0
  222. package/templates/blocks/DDHG-TeamCards/manifest.json +29 -0
  223. package/templates/shared/src/components/BgLightning/index.tsx +242 -0
  224. package/templates/shared/src/components/ui/ShareButton/index.tsx +80 -0
  225. package/templates/shared/src/components/ui/anims/FadeOnScroll.tsx +48 -0
  226. package/templates/shared/src/components/ui/anims/FadeUpOnInView.tsx +63 -0
  227. package/templates/shared/src/components/ui/anims/GlareHover.tsx +111 -0
  228. package/templates/shared/src/components/ui/anims/LineAnims.tsx +81 -0
  229. package/templates/shared/src/components/ui/anims/TitleAnims01.tsx +54 -0
  230. package/templates/shared/src/components/ui/anims/animation-container.tsx +29 -0
  231. package/templates/shared/src/components/ui/anims/blur-in.tsx +26 -0
  232. package/templates/shared/src/components/ui/anims/counter.tsx +53 -0
  233. package/templates/shared/src/components/ui/anims/fade.tsx +83 -0
  234. package/templates/shared/src/components/ui/anims/gradual-spacing.tsx +39 -0
  235. package/templates/shared/src/components/ui/anims/pull-up.tsx +93 -0
  236. package/templates/shared/src/components/ui/anims/reveal-text.tsx +76 -0
  237. package/templates/shared/src/components/ui/anims/rotate-words.tsx +43 -0
  238. package/templates/shared/src/components/ui/anims/shiny-text.tsx +58 -0
  239. package/templates/shared/src/components/ui/anims/shuffle-text.tsx +85 -0
  240. package/templates/shared/src/components/ui/anims/split-text.tsx +211 -0
  241. package/templates/shared/src/components/ui/anims/staggered-fade.tsx +133 -0
  242. package/templates/shared/src/components/ui/anims/text-scroll.tsx +111 -0
  243. package/templates/shared/src/components/ui/anims/typing-effect.tsx +112 -0
  244. package/templates/shared/src/components/ui/button-dusted-fluid/index.tsx +1521 -0
  245. package/templates/shared/src/components/ui/separator.tsx +85 -0
  246. package/templates/shared/src/hooks/useBodyScrollLock.ts +97 -0
  247. package/templates/shared/src/hooks/useClickOutside.ts +28 -0
  248. package/templates/shared/src/utilities/renderCustomCSS.ts +5 -0
  249. package/templates/shared/src/utilities/smoothScroll.ts +65 -0
@@ -0,0 +1,224 @@
1
+ import type { Block } from 'payload'
2
+
3
+ export const DDThanks: Block = {
4
+ slug: 'DD-Thanks',
5
+ interfaceName: 'DDThanks',
6
+ labels: {
7
+ singular: 'Thanks Confetti',
8
+ plural: 'Thanks Confetti Blocks'
9
+ },
10
+ fields: [
11
+ {
12
+ type: 'row',
13
+ fields: [
14
+ {
15
+ name: 'headline',
16
+ type: 'text',
17
+ label: 'Headline',
18
+ defaultValue: 'Thank you! 🎉',
19
+ admin: {
20
+ width: '50%'
21
+ }
22
+ },
23
+ {
24
+ name: 'brandLabel',
25
+ type: 'text',
26
+ label: 'Brand Label',
27
+ defaultValue: 'DesignsDusted',
28
+ admin: {
29
+ width: '50%'
30
+ }
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ name: 'description',
36
+ type: 'textarea',
37
+ label: 'Description',
38
+ defaultValue: 'Your order has been confirmed and is on its way.'
39
+ },
40
+ {
41
+ name: 'subDescription',
42
+ type: 'textarea',
43
+ label: 'Sub Description',
44
+ defaultValue:
45
+ "We've sent a confirmation email with your download links and license keys. Check your inbox — and maybe your spam folder too."
46
+ },
47
+ {
48
+ type: 'row',
49
+ fields: [
50
+ {
51
+ name: 'showBrandLabel',
52
+ type: 'checkbox',
53
+ label: 'Show Brand Label',
54
+ defaultValue: true,
55
+ admin: {
56
+ width: '25%'
57
+ }
58
+ },
59
+ {
60
+ name: 'showReplayButton',
61
+ type: 'checkbox',
62
+ label: 'Show Replay Button',
63
+ defaultValue: true,
64
+ admin: {
65
+ width: '25%'
66
+ }
67
+ },
68
+ {
69
+ name: 'autoPlayConfetti',
70
+ type: 'checkbox',
71
+ label: 'Auto Play Confetti',
72
+ defaultValue: true,
73
+ admin: {
74
+ width: '25%'
75
+ }
76
+ },
77
+ {
78
+ name: 'confettiDuration',
79
+ type: 'number',
80
+ label: 'Confetti Duration (ms)',
81
+ defaultValue: 3000,
82
+ min: 1000,
83
+ max: 8000,
84
+ admin: {
85
+ width: '25%'
86
+ }
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ name: 'infoPills',
92
+ type: 'array',
93
+ label: 'Info Pills',
94
+ fields: [
95
+ {
96
+ type: 'row',
97
+ fields: [
98
+ {
99
+ name: 'label',
100
+ type: 'text',
101
+ required: true,
102
+ admin: {
103
+ width: '70%'
104
+ }
105
+ },
106
+ {
107
+ name: 'icon',
108
+ type: 'select',
109
+ defaultValue: 'mail',
110
+ options: [
111
+ {
112
+ label: 'Mail',
113
+ value: 'mail'
114
+ },
115
+ {
116
+ label: 'Download',
117
+ value: 'download'
118
+ },
119
+ {
120
+ label: 'Shield',
121
+ value: 'shield'
122
+ }
123
+ ],
124
+ admin: {
125
+ width: '30%'
126
+ }
127
+ }
128
+ ]
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ name: 'ctaLinks',
134
+ type: 'array',
135
+ label: 'CTA Links',
136
+ maxRows: 2,
137
+ fields: [
138
+ {
139
+ type: 'row',
140
+ fields: [
141
+ {
142
+ name: 'label',
143
+ type: 'text',
144
+ required: true,
145
+ admin: {
146
+ width: '35%'
147
+ }
148
+ },
149
+ {
150
+ name: 'href',
151
+ type: 'text',
152
+ required: true,
153
+ admin: {
154
+ width: '35%'
155
+ }
156
+ },
157
+ {
158
+ name: 'variant',
159
+ type: 'select',
160
+ defaultValue: 'primary',
161
+ options: [
162
+ {
163
+ label: 'Primary',
164
+ value: 'primary'
165
+ },
166
+ {
167
+ label: 'Secondary',
168
+ value: 'secondary'
169
+ }
170
+ ],
171
+ admin: {
172
+ width: '15%'
173
+ }
174
+ },
175
+ {
176
+ name: 'icon',
177
+ type: 'select',
178
+ defaultValue: 'home',
179
+ options: [
180
+ {
181
+ label: 'Home',
182
+ value: 'home'
183
+ },
184
+ {
185
+ label: 'Grid',
186
+ value: 'grid'
187
+ },
188
+ {
189
+ label: 'Download',
190
+ value: 'download'
191
+ }
192
+ ],
193
+ admin: {
194
+ width: '15%'
195
+ }
196
+ }
197
+ ]
198
+ }
199
+ ]
200
+ },
201
+ {
202
+ type: 'collapsible',
203
+ label: 'Settings',
204
+ admin: {
205
+ initCollapsed: true
206
+ },
207
+ fields: [
208
+ {
209
+ name: 'sectionId',
210
+ type: 'text',
211
+ label: 'Section ID'
212
+ },
213
+ {
214
+ name: 'customCSS',
215
+ type: 'code',
216
+ label: 'Custom CSS',
217
+ admin: {
218
+ language: 'css'
219
+ }
220
+ }
221
+ ]
222
+ }
223
+ ]
224
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-Thanks",
4
+ "label": "Thanks Confetti",
5
+ "sourceName": "ThanksConfetti",
6
+ "portableName": "DD-Thanks",
7
+ "slug": "DD-Thanks",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/ThanksConfetti",
12
+ "originalSlug": "thanksConfetti",
13
+ "originalConfigExport": "ThanksConfetti",
14
+ "originalComponentExport": "ThanksConfetti",
15
+ "originalInterfaceName": "DDThanks"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-Thanks/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-Thanks/config.ts"
25
+ }
26
+ ],
27
+ "dependencies": [],
28
+ "sharedFiles": [],
29
+ "requiredProjectFiles": [],
30
+ "optionalProjectFiles": [],
31
+ "collectionRegistration": {
32
+ "enabled": true,
33
+ "collections": [
34
+ "Pages",
35
+ "Posts"
36
+ ]
37
+ },
38
+ "renderBlocksRegistration": {
39
+ "enabled": true
40
+ },
41
+ "renderBlocksBehavior": {
42
+ "wrapperless": false
43
+ },
44
+ "pageRouteIntegration": {
45
+ "required": false,
46
+ "manualSteps": []
47
+ },
48
+ "manual": [
49
+ "Register DDThanks in Pages/Posts blocks arrays if automatic registration was skipped.",
50
+ "Register DD-Thanks in RenderBlocks if automatic registration was skipped.",
51
+ "Run payload generate:types after schema changes."
52
+ ],
53
+ "manualSteps": [
54
+ "Register DDThanks in Pages/Posts blocks arrays if automatic registration was skipped.",
55
+ "Register DD-Thanks in RenderBlocks if automatic registration was skipped.",
56
+ "Run payload generate:types after schema changes."
57
+ ],
58
+ "patchTargets": {
59
+ "blockConfigRegistration": {
60
+ "description": "Installer can add import { DDThanks } from '@/blocks/DD-Thanks/config' and add DDThanks to clear Pages/Posts block arrays."
61
+ },
62
+ "renderBlocksRegistration": {
63
+ "description": "Installer can register DD-Thanks in RenderBlocks."
64
+ }
65
+ },
66
+ "notes": [
67
+ "Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
68
+ "Project-specific imports were replaced with local, dependency-light rendering where required."
69
+ ],
70
+ "exportName": "DDThanks",
71
+ "interfaceName": "DDThanks"
72
+ }
@@ -0,0 +1,154 @@
1
+ /* eslint-disable react-hooks/exhaustive-deps */
2
+ 'use client'
3
+
4
+ import React, { useState } from 'react'
5
+ import { motion } from 'framer-motion'
6
+ import Image from 'next/image'
7
+ import { cn } from '@/utilities/ui'
8
+
9
+ const placeholderBlur =
10
+ 'data:image/svg+xml;base64,' +
11
+ btoa(`<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" style="opacity:0">
12
+ <defs>
13
+ <radialGradient id="grad1" cx="0%" cy="0%" r="0%" fx="0%" fy="0%">
14
+ <stop offset="0%" style="stop-color:transparent; stop-opacity:0" />
15
+ <stop offset="0%" style="stop-color:transparent; stop-opacity:0" />
16
+ </radialGradient>
17
+ </defs>
18
+ <rect width="100%" height="100%" fill="url(#grad1)">
19
+ <animate attributeName="opacity" values="0.6;1;0.6" dur="1.5s" repeatCount="indefinite" />
20
+ </rect>
21
+ </svg>`)
22
+
23
+ export type LogoVertMarqueeProps = {
24
+ logos: {
25
+ image?: {
26
+ url?: string
27
+ alt?: string
28
+ } | null
29
+ imageClass?: string
30
+ imageStyle?: React.CSSProperties
31
+ imageAltClass?: string
32
+ }[]
33
+ speed?: number
34
+ spacing?: number
35
+ containerClass?: string
36
+ itemHeight?: number
37
+ customCSS?: string
38
+ }
39
+
40
+ const LogoImage: React.FC<{
41
+ src: string
42
+ alt?: string
43
+ customClass?: string
44
+ imageStyle?: React.CSSProperties
45
+ }> = ({ src, alt, customClass, imageStyle }) => {
46
+ const [imageError, setImageError] = useState(false)
47
+
48
+ const imageSrc = !src || imageError ? placeholderBlur : src
49
+ const displayAlt = alt || 'Logo'
50
+
51
+ return (
52
+ <Image
53
+ src={imageSrc}
54
+ alt={displayAlt}
55
+ width={800}
56
+ height={800}
57
+ priority
58
+ sizes="100vw"
59
+ quality={100}
60
+ className={cn('h-auto w-full', customClass)}
61
+ style={{
62
+ objectFit: 'contain',
63
+ ...(imageStyle && typeof imageStyle === 'object' ? imageStyle : {})
64
+ }}
65
+ onError={() => setImageError(true)}
66
+ placeholder="blur"
67
+ blurDataURL={placeholderBlur}
68
+ />
69
+ )
70
+ }
71
+
72
+ export const DDVertMarq: React.FC<LogoVertMarqueeProps> = ({
73
+ logos,
74
+ speed = 10,
75
+ spacing = 32,
76
+ containerClass = 'overflow-hidden px-8 bg-transparent',
77
+ customCSS
78
+ }) => {
79
+ const validLogos = logos || []
80
+ const containerRef = React.useRef<HTMLDivElement>(null)
81
+ const [scrollHeight, setScrollHeight] = React.useState(0)
82
+
83
+ React.useEffect(() => {
84
+ if (containerRef.current) {
85
+ const container = containerRef.current
86
+ const firstSet = container.firstElementChild
87
+
88
+ if (firstSet) {
89
+ setScrollHeight(firstSet.scrollHeight)
90
+ }
91
+ }
92
+ }, [validLogos])
93
+
94
+ if (validLogos.length === 0) {
95
+ return null
96
+ }
97
+
98
+ return (
99
+ <div className="logo-vert-marquee-block relative m-auto flex h-screen items-center">
100
+ {customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
101
+
102
+ <motion.div
103
+ ref={containerRef}
104
+ className={cn(containerClass, 'flex flex-col px-4')}
105
+ animate={scrollHeight > 0 ? { y: [0, -scrollHeight] } : {}}
106
+ transition={{ repeat: Infinity, duration: speed, ease: 'linear' }}
107
+ >
108
+ <div className="flex flex-col">
109
+ {validLogos.map((logo, index) => (
110
+ <div
111
+ key={`logo-${index}`}
112
+ className="marque-image-container flex shrink-0 flex-col items-center justify-center"
113
+ style={{
114
+ marginBottom: `${spacing}px`
115
+ }}
116
+ >
117
+ <LogoImage
118
+ src={logo.image?.url || placeholderBlur}
119
+ alt={logo.image?.alt}
120
+ customClass={logo.imageClass}
121
+ imageStyle={logo.imageStyle}
122
+ />
123
+ <p className={cn('text-center text-base', logo.imageAltClass)}>
124
+ {logo.image?.alt || null}
125
+ </p>
126
+ </div>
127
+ ))}
128
+ </div>
129
+
130
+ <div className="flex flex-col">
131
+ {validLogos.map((logo, index) => (
132
+ <div
133
+ key={`logo-${index}-duplicate`}
134
+ className="marque-image-container flex shrink-0 flex-col items-center justify-center"
135
+ style={{
136
+ marginBottom: `${spacing}px`
137
+ }}
138
+ >
139
+ <LogoImage
140
+ src={logo.image?.url || placeholderBlur}
141
+ alt={logo.image?.alt}
142
+ customClass={logo.imageClass}
143
+ imageStyle={logo.imageStyle}
144
+ />
145
+ <p className={cn('text-center text-base', logo.imageAltClass)}>
146
+ {logo.image?.alt || null}
147
+ </p>
148
+ </div>
149
+ ))}
150
+ </div>
151
+ </motion.div>
152
+ </div>
153
+ )
154
+ }
@@ -0,0 +1,4 @@
1
+ # DD-VertMarq
2
+
3
+ Portable first-pass conversion of `LogoVertMarquee` from ROUND-TWO-CONVERSION. Project-specific roots and nested unconverted block dependencies were intentionally replaced with local rendering so the template can install into a clean Payload project.
4
+
@@ -0,0 +1,236 @@
1
+ import type { Block } from 'payload'
2
+ import { DDCustomCSS } from '@/blocks/DD-CustomCSS/config'
3
+
4
+ export const DDVertMarq: Block = {
5
+ slug: 'DD-VertMarq',
6
+ interfaceName: 'DDVertMarq',
7
+ labels: {
8
+ singular: 'Vertical Image Marquee',
9
+ plural: 'Vertical Image Marquee'
10
+ },
11
+
12
+ fields: [
13
+ {
14
+ admin: {
15
+ initCollapsed: true,
16
+ className: 'custom-css-class'
17
+ },
18
+ type: 'collapsible',
19
+ label: 'Block Settings',
20
+ fields: [
21
+ // Custom container class
22
+ {
23
+ admin: {
24
+ initCollapsed: true,
25
+ className: 'custom-css-class'
26
+ },
27
+ type: 'collapsible',
28
+ label: 'Container Class',
29
+ fields: [
30
+ {
31
+ name: 'containerClass',
32
+ label: false,
33
+ type: 'text',
34
+ required: false,
35
+ admin: {
36
+ description:
37
+ 'Override the default container class. Default: `overflow-hidden px-8 bg-transparent`'
38
+ }
39
+ }
40
+ ]
41
+ },
42
+ // Marquee settings
43
+ {
44
+ admin: {
45
+ initCollapsed: true,
46
+ className: 'custom-group-class'
47
+ },
48
+ type: 'collapsible',
49
+ label: 'Marquee Settings',
50
+ fields: [
51
+ {
52
+ type: 'row',
53
+ fields: [
54
+ {
55
+ name: 'speed',
56
+ type: 'number',
57
+ label: 'Scroll Speed (seconds)',
58
+ defaultValue: 10,
59
+ required: true,
60
+ admin: {
61
+ description: 'Speed of the vertical marquee in seconds.',
62
+ width: '50%'
63
+ }
64
+ },
65
+ {
66
+ name: 'spacing',
67
+ type: 'number',
68
+ label: 'Spacing between images (px)',
69
+ defaultValue: 32,
70
+ required: true,
71
+ admin: {
72
+ description: 'Vertical space between images in pixels.',
73
+ width: '50%'
74
+ }
75
+ }
76
+ ]
77
+ }
78
+ ]
79
+ },
80
+ // Priority loading for above-the-fold logos
81
+ {
82
+ name: 'priority',
83
+ type: 'checkbox',
84
+ label: 'High Priority Loading',
85
+ defaultValue: false,
86
+ admin: {
87
+ description:
88
+ 'Enable for above-the-fold logos only. Improves LCP but should only be used when this marquee appears at the top of the page.'
89
+ }
90
+ }
91
+ ]
92
+ },
93
+
94
+ {
95
+ name: 'logoImages',
96
+ type: 'upload',
97
+ relationTo: 'media',
98
+ hasMany: true,
99
+ required: false,
100
+ filterOptions: {
101
+ mimeType: { contains: 'image' }
102
+ },
103
+ admin: {
104
+ description:
105
+ 'Bulk add images to the marquee. Selecting images here will append rows into `Images` (logos[]) with defaults, then clear this field.'
106
+ },
107
+ hooks: {
108
+ beforeChange: [
109
+ ({ value, siblingData }) => {
110
+ if (!Array.isArray(value) || value.length === 0) return value
111
+
112
+ const existingLogos = Array.isArray((siblingData as any)?.logos)
113
+ ? ((siblingData as any).logos as Array<any>)
114
+ : []
115
+
116
+ const normalizeImageId = (imageValue: unknown): number | string | undefined => {
117
+ if (typeof imageValue === 'number' || typeof imageValue === 'string')
118
+ return imageValue
119
+ if (imageValue && typeof imageValue === 'object' && 'id' in (imageValue as any)) {
120
+ const maybeId = (imageValue as any).id
121
+ if (typeof maybeId === 'number' || typeof maybeId === 'string') return maybeId
122
+ }
123
+ return undefined
124
+ }
125
+
126
+ const existingIds = new Set(
127
+ existingLogos
128
+ .map((row) => normalizeImageId(row?.image))
129
+ .filter((id): id is number | string => id !== undefined)
130
+ )
131
+
132
+ const newRows = value
133
+ .map((id) => normalizeImageId(id))
134
+ .filter((id): id is number | string => id !== undefined)
135
+ .filter((id) => !existingIds.has(id))
136
+ .map((id) => ({
137
+ image: id,
138
+ imageAltClass: 'hidden',
139
+ imageClass: ''
140
+ }))
141
+
142
+ ;(siblingData as any).logos = [...existingLogos, ...newRows]
143
+
144
+ // Clear helper field after applying
145
+ return []
146
+ }
147
+ ]
148
+ }
149
+ },
150
+
151
+ {
152
+ name: 'logos',
153
+ type: 'array',
154
+ labels: {
155
+ singular: 'Image',
156
+ plural: 'Images'
157
+ },
158
+ label: 'Images',
159
+ fields: [
160
+ {
161
+ name: 'image',
162
+ type: 'upload',
163
+ relationTo: 'media',
164
+ required: false,
165
+ filterOptions: {
166
+ mimeType: { contains: 'image' }
167
+ }
168
+ },
169
+ // Custom class for alt text
170
+ {
171
+ admin: {
172
+ initCollapsed: true,
173
+ className: 'custom-css-class'
174
+ },
175
+ type: 'collapsible',
176
+ label: 'Alt Text Class',
177
+ fields: [
178
+ {
179
+ name: 'imageAltClass',
180
+ label: false,
181
+ type: 'text',
182
+ required: false,
183
+ defaultValue: 'hidden',
184
+ admin: {
185
+ description:
186
+ 'Override the default class for the image alt text. Set `hidden` to hide.'
187
+ }
188
+ }
189
+ ]
190
+ },
191
+ // Custom class for image
192
+ {
193
+ admin: {
194
+ initCollapsed: true,
195
+ className: 'custom-css-class'
196
+ },
197
+ type: 'collapsible',
198
+ label: 'Image Class',
199
+ fields: [
200
+ {
201
+ name: 'imageClass',
202
+ label: false,
203
+ type: 'text',
204
+ required: false,
205
+ admin: {
206
+ description: 'Override the default class for the image.'
207
+ }
208
+ }
209
+ ]
210
+ }
211
+ ]
212
+ },
213
+ {
214
+ name: 'enableCustomCSS',
215
+ type: 'checkbox',
216
+ hidden: false,
217
+ label: 'Inject Custom CSS',
218
+ defaultValue: false
219
+ },
220
+ {
221
+ name: 'customCSS',
222
+ type: 'blocks',
223
+ label: 'Custom CSS',
224
+ blocks: [DDCustomCSS],
225
+ maxRows: 1,
226
+ required: false,
227
+ admin: {
228
+ initCollapsed: true,
229
+ className: 'for-devs-class custom-css-class',
230
+ description:
231
+ 'Add dynamic class in your component and inject or override existing styles here.',
232
+ condition: (_, siblingData) => Boolean(siblingData.enableCustomCSS)
233
+ }
234
+ }
235
+ ]
236
+ }
@@ -0,0 +1,6 @@
1
+ .logo-vert-marquee-block {
2
+ margin: auto;
3
+ height: 100vh;
4
+ display: flex;
5
+ align-items: center;
6
+ }
@@ -0,0 +1 @@
1
+ .logo-vert-marquee-block{margin:auto;height:100vh;display:flex;align-items:center}