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,379 @@
1
+ import type { Block } from 'payload'
2
+
3
+ export const DDLottie: Block = {
4
+ slug: 'DD-Lottie',
5
+ interfaceName: 'DDLottie',
6
+ labels: {
7
+ singular: 'Lottie Animation',
8
+ plural: 'Lottie Animations'
9
+ },
10
+ fields: [
11
+ // Block identification
12
+ {
13
+ admin: {
14
+ initCollapsed: false,
15
+ className: 'custom-css-class block-identification'
16
+ },
17
+ type: 'collapsible',
18
+ label: 'Block Settings',
19
+ fields: [
20
+ {
21
+ name: 'blockName',
22
+ type: 'text',
23
+ required: false,
24
+ label: 'Block Name',
25
+ admin: {
26
+ description: 'Optional: Give this block a name for easier identification in admin.',
27
+ placeholder: 'e.g., "Loading Animation", "Hero Animation"'
28
+ }
29
+ }
30
+ ]
31
+ },
32
+
33
+ // File format + upload
34
+ {
35
+ type: 'row',
36
+ fields: [
37
+ {
38
+ name: 'format',
39
+ type: 'select',
40
+ required: true,
41
+ label: 'File Format',
42
+ defaultValue: 'json',
43
+ options: [
44
+ { label: 'Lottie JSON (.json)', value: 'json' },
45
+ // !!TODO: .lottie filetype fail to upload in production. Check allowed filetype despite already listed in media collection and next.config.js
46
+ { label: 'DotLottie (.lottie)', value: 'lottie' }
47
+ ],
48
+ admin: {
49
+ width: '50%',
50
+ description: 'Select the format so the correct player is used.'
51
+ }
52
+ },
53
+ {
54
+ name: 'lottieFile',
55
+ type: 'upload',
56
+ relationTo: 'media',
57
+ required: true,
58
+ label: 'Lottie File',
59
+ admin: {
60
+ width: '50%',
61
+ description:
62
+ 'Upload a .json (Lottie) or .lottie (DotLottie) file from the media library.'
63
+ },
64
+ filterOptions: (options) => {
65
+ // siblingData is unknown, so we need to safely extract format
66
+ const siblingData = options?.siblingData as { format?: string } | undefined
67
+ const format = siblingData?.format
68
+
69
+ // NOTE:
70
+ // .lottie is a ZIP container (common upload mimetypes vary)
71
+ // We allow zip/octet-stream for dotlottie.
72
+ if (format === 'lottie') {
73
+ return {
74
+ mimeType: {
75
+ in: [
76
+ 'application/zip',
77
+ 'application/octet-stream',
78
+ 'application/x-zip-compressed',
79
+ // spec value can appear depending on uploader / server
80
+ 'application/zip+dotlottie'
81
+ ]
82
+ }
83
+ }
84
+ }
85
+
86
+ // JSON only
87
+ return {
88
+ mimeType: {
89
+ in: ['application/json']
90
+ }
91
+ }
92
+ }
93
+ }
94
+ ]
95
+ },
96
+
97
+ // Animation controls
98
+ {
99
+ admin: {
100
+ initCollapsed: true,
101
+ className: 'animation-controls'
102
+ },
103
+ type: 'collapsible',
104
+ label: 'Animation Controls',
105
+ fields: [
106
+ {
107
+ type: 'row',
108
+ fields: [
109
+ {
110
+ name: 'autoplay',
111
+ type: 'checkbox',
112
+ label: 'Autoplay',
113
+ defaultValue: true,
114
+ admin: {
115
+ description: 'Start animation automatically when the component loads.',
116
+ width: '25%'
117
+ }
118
+ },
119
+ {
120
+ name: 'loop',
121
+ type: 'checkbox',
122
+ label: 'Loop',
123
+ defaultValue: true,
124
+ admin: {
125
+ description: 'Repeat the animation continuously.',
126
+ width: '25%'
127
+ }
128
+ },
129
+ {
130
+ name: 'controls',
131
+ type: 'checkbox',
132
+ label: 'Show Controls',
133
+ defaultValue: false,
134
+ admin: {
135
+ description: 'Display play/pause controls for the animation.',
136
+ width: '25%'
137
+ }
138
+ },
139
+ {
140
+ name: 'hover',
141
+ type: 'checkbox',
142
+ label: 'Play on Hover',
143
+ defaultValue: false,
144
+ admin: {
145
+ description: 'Play animation only when hovering over it.',
146
+ width: '25%'
147
+ }
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ type: 'row',
153
+ fields: [
154
+ {
155
+ name: 'speed',
156
+ type: 'number',
157
+ label: 'Animation Speed',
158
+ defaultValue: 1,
159
+ min: 0.1,
160
+ max: 50,
161
+ admin: {
162
+ description: 'Speed multiplier for the animation (0.1 = slow, 5 = very fast).',
163
+ step: 0.1,
164
+ width: '50%'
165
+ }
166
+ },
167
+ {
168
+ name: 'direction',
169
+ type: 'select',
170
+ label: 'Direction',
171
+ options: [
172
+ { label: 'Forward', value: '1' },
173
+ { label: 'Reverse', value: '-1' }
174
+ ],
175
+ defaultValue: '1',
176
+ admin: {
177
+ description: 'Animation playback direction.',
178
+ width: '50%'
179
+ }
180
+ }
181
+ ]
182
+ }
183
+ ]
184
+ },
185
+
186
+ // Sizing and positioning
187
+ {
188
+ admin: {
189
+ initCollapsed: true,
190
+ className: 'custom-css-class sizing-positioning'
191
+ },
192
+ type: 'collapsible',
193
+ label: 'Size & Position',
194
+ fields: [
195
+ {
196
+ type: 'row',
197
+ fields: [
198
+ {
199
+ name: 'width',
200
+ type: 'text',
201
+ label: 'Width',
202
+ admin: {
203
+ description: 'CSS width value (e.g., "300px", "50%", "100vw").',
204
+ placeholder: '300px',
205
+ width: '50%'
206
+ }
207
+ },
208
+ {
209
+ name: 'height',
210
+ type: 'text',
211
+ label: 'Height',
212
+ admin: {
213
+ description: 'CSS height value (e.g., "300px", "50vh", "auto").',
214
+ placeholder: '300px',
215
+ width: '50%'
216
+ }
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ name: 'objectFit',
222
+ type: 'select',
223
+ label: 'Object Fit',
224
+ options: [
225
+ { label: 'Fill', value: 'fill' },
226
+ { label: 'Contain', value: 'contain' },
227
+ { label: 'Cover', value: 'cover' },
228
+ { label: 'None', value: 'none' },
229
+ { label: 'Scale Down', value: 'scale-down' }
230
+ ],
231
+ defaultValue: 'contain',
232
+ admin: {
233
+ description: 'How the animation should fit within its container.'
234
+ }
235
+ }
236
+ ]
237
+ },
238
+
239
+ // Trigger options
240
+ {
241
+ admin: {
242
+ initCollapsed: true,
243
+ className: 'custom-css-class trigger-options'
244
+ },
245
+ type: 'collapsible',
246
+ label: 'Trigger Options',
247
+ fields: [
248
+ {
249
+ name: 'playOnScroll',
250
+ type: 'checkbox',
251
+ label: 'Play on Scroll Into View',
252
+ defaultValue: false,
253
+ admin: {
254
+ description: 'Start animation when the element comes into view.'
255
+ }
256
+ },
257
+ {
258
+ name: 'scrollBehavior',
259
+ type: 'select',
260
+ label: 'Scroll Behavior',
261
+ options: [
262
+ { label: 'Play Once', value: 'once' },
263
+ { label: 'Play Every Time', value: 'always' },
264
+ { label: 'Sync with Scroll', value: 'sync' }
265
+ ],
266
+ defaultValue: 'once',
267
+ admin: {
268
+ description: 'How the animation behaves with scrolling.',
269
+ condition: (data, siblingData) => siblingData.playOnScroll
270
+ }
271
+ },
272
+ {
273
+ type: 'row',
274
+ admin: {
275
+ condition: (data, siblingData) =>
276
+ siblingData.playOnScroll && siblingData.scrollBehavior === 'sync'
277
+ },
278
+ fields: [
279
+ {
280
+ name: 'scrollStart',
281
+ type: 'number',
282
+ label: 'Scroll Start (%)',
283
+ defaultValue: 0,
284
+ min: 0,
285
+ max: 100,
286
+ admin: {
287
+ description: 'When to start the animation based on scroll position (0-100%).',
288
+ width: '50%'
289
+ }
290
+ },
291
+ {
292
+ name: 'scrollEnd',
293
+ type: 'number',
294
+ label: 'Scroll End (%)',
295
+ defaultValue: 100,
296
+ min: 0,
297
+ max: 100,
298
+ admin: {
299
+ description: 'When to end the animation based on scroll position (0-100%).',
300
+ width: '50%'
301
+ }
302
+ }
303
+ ]
304
+ }
305
+ ]
306
+ },
307
+
308
+ // Styling
309
+ {
310
+ admin: {
311
+ initCollapsed: true,
312
+ className: 'styling-options'
313
+ },
314
+ type: 'collapsible',
315
+ label: 'Styling',
316
+ fields: [
317
+ {
318
+ name: 'containerClass',
319
+ type: 'text',
320
+ label: 'Container CSS Classes',
321
+ admin: {
322
+ description: 'Custom CSS classes for the animation container.',
323
+ placeholder: 'mx-auto p-4 bg-white rounded-sm'
324
+ }
325
+ },
326
+ {
327
+ name: 'customCSS',
328
+ type: 'code',
329
+ label: 'Custom CSS',
330
+ admin: {
331
+ language: 'css',
332
+ description: 'Paste any CSS rules that should apply only to this Lottie block.'
333
+ }
334
+ }
335
+ ]
336
+ },
337
+
338
+ // Accessibility
339
+ {
340
+ admin: {
341
+ initCollapsed: true,
342
+ className: 'accessibility-options'
343
+ },
344
+ type: 'collapsible',
345
+ label: 'Accessibility',
346
+ fields: [
347
+ {
348
+ name: 'alt',
349
+ type: 'text',
350
+ label: 'Alt Text',
351
+ admin: {
352
+ description: 'Alternative text description for screen readers.',
353
+ placeholder: 'Loading animation'
354
+ }
355
+ },
356
+ {
357
+ name: 'title',
358
+ type: 'text',
359
+ label: 'Title',
360
+ admin: {
361
+ description: 'Title attribute for the animation.',
362
+ placeholder: 'Interactive loading animation'
363
+ }
364
+ },
365
+ {
366
+ name: 'reducedMotion',
367
+ type: 'checkbox',
368
+ label: 'Respect Reduced Motion',
369
+ defaultValue: true,
370
+ admin: {
371
+ description: 'Pause animation for users who prefer reduced motion.'
372
+ }
373
+ }
374
+ ]
375
+ }
376
+ ]
377
+ }
378
+
379
+ export default DDLottie
@@ -0,0 +1,28 @@
1
+ import React from 'react'
2
+ import { DDLottie as LottieBlock } from './Component'
3
+ import type { LottieBlockProps } from './Component'
4
+ import FadeUpOnInView from '@/components/ui/anims/FadeUpOnInView'
5
+
6
+ export interface LottieBlockPayloadProps extends Omit<LottieBlockProps, 'lottieFile'> {
7
+ lottieFile?: any // Payload media object
8
+ }
9
+
10
+ const LottieBlockWrapper: React.FC<LottieBlockPayloadProps> = (props) => {
11
+ // Handle case where no lottie file is provided
12
+ if (!props.lottieFile) {
13
+ return (
14
+ <div className="lottie-block lottie-error">
15
+ <div className="lottie-placeholder">No Lottie file selected</div>
16
+ </div>
17
+ )
18
+ }
19
+
20
+ return (
21
+ <FadeUpOnInView delay={0.1} className="fadeup">
22
+ <LottieBlock {...props} lottieFile={props.lottieFile} />
23
+ </FadeUpOnInView>
24
+ )
25
+ }
26
+
27
+ export default LottieBlockWrapper
28
+ export { LottieBlock, type LottieBlockProps }
@@ -0,0 +1,83 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-Lottie",
4
+ "label": "Lottie",
5
+ "sourceName": "LottieBlock",
6
+ "portableName": "DD-Lottie",
7
+ "slug": "DD-Lottie",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/LottieBlock",
12
+ "originalSlug": "lottieBlock",
13
+ "originalConfigExport": "LottieBlock",
14
+ "originalComponentExport": "LottieBlock",
15
+ "originalInterfaceName": "DDLottie"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-Lottie/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-Lottie/config.ts"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "lottie-web",
29
+ "framer-motion"
30
+ ],
31
+ "sharedFiles": [
32
+ {
33
+ "from": "templates/shared/src/components/ui/anims",
34
+ "to": "src/components/ui/anims",
35
+ "required": true,
36
+ "safeToCopy": true
37
+ }
38
+ ],
39
+ "requiredProjectFiles": [],
40
+ "optionalProjectFiles": [],
41
+ "collectionRegistration": {
42
+ "enabled": true,
43
+ "collections": [
44
+ "Pages",
45
+ "Posts"
46
+ ]
47
+ },
48
+ "renderBlocksRegistration": {
49
+ "enabled": true
50
+ },
51
+ "renderBlocksBehavior": {
52
+ "wrapperless": false
53
+ },
54
+ "pageRouteIntegration": {
55
+ "required": false,
56
+ "manualSteps": []
57
+ },
58
+ "manual": [
59
+ "Register DDLottie in Pages/Posts blocks arrays if automatic registration was skipped.",
60
+ "Register DD-Lottie in RenderBlocks if automatic registration was skipped.",
61
+ "Run payload generate:types after schema changes."
62
+ ],
63
+ "manualSteps": [
64
+ "Register DDLottie in Pages/Posts blocks arrays if automatic registration was skipped.",
65
+ "Register DD-Lottie in RenderBlocks if automatic registration was skipped.",
66
+ "Run payload generate:types after schema changes."
67
+ ],
68
+ "patchTargets": {
69
+ "blockConfigRegistration": {
70
+ "description": "Installer can add import { DDLottie } from '@/blocks/DD-Lottie/config' and add DDLottie to clear Pages/Posts block arrays."
71
+ },
72
+ "renderBlocksRegistration": {
73
+ "description": "Installer can register DD-Lottie in RenderBlocks."
74
+ }
75
+ },
76
+ "notes": [
77
+ "Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
78
+ "Project-specific imports were replaced with local, dependency-light rendering where required.",
79
+ "Manifest includes shared local support files required by original DesignsDusted source imports."
80
+ ],
81
+ "exportName": "DDLottie",
82
+ "interfaceName": "DDLottie"
83
+ }