blocks-dusted 0.1.9 → 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 (248) 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/components/HeaderDD02/MobileBottomNav/index.tsx +352 -257
  221. package/templates/components/HeaderDD02/index.tsx +313 -229
  222. package/templates/shared/src/components/BgLightning/index.tsx +242 -0
  223. package/templates/shared/src/components/ui/ShareButton/index.tsx +80 -0
  224. package/templates/shared/src/components/ui/anims/FadeOnScroll.tsx +48 -0
  225. package/templates/shared/src/components/ui/anims/FadeUpOnInView.tsx +63 -0
  226. package/templates/shared/src/components/ui/anims/GlareHover.tsx +111 -0
  227. package/templates/shared/src/components/ui/anims/LineAnims.tsx +81 -0
  228. package/templates/shared/src/components/ui/anims/TitleAnims01.tsx +54 -0
  229. package/templates/shared/src/components/ui/anims/animation-container.tsx +29 -0
  230. package/templates/shared/src/components/ui/anims/blur-in.tsx +26 -0
  231. package/templates/shared/src/components/ui/anims/counter.tsx +53 -0
  232. package/templates/shared/src/components/ui/anims/fade.tsx +83 -0
  233. package/templates/shared/src/components/ui/anims/gradual-spacing.tsx +39 -0
  234. package/templates/shared/src/components/ui/anims/pull-up.tsx +93 -0
  235. package/templates/shared/src/components/ui/anims/reveal-text.tsx +76 -0
  236. package/templates/shared/src/components/ui/anims/rotate-words.tsx +43 -0
  237. package/templates/shared/src/components/ui/anims/shiny-text.tsx +58 -0
  238. package/templates/shared/src/components/ui/anims/shuffle-text.tsx +85 -0
  239. package/templates/shared/src/components/ui/anims/split-text.tsx +211 -0
  240. package/templates/shared/src/components/ui/anims/staggered-fade.tsx +133 -0
  241. package/templates/shared/src/components/ui/anims/text-scroll.tsx +111 -0
  242. package/templates/shared/src/components/ui/anims/typing-effect.tsx +112 -0
  243. package/templates/shared/src/components/ui/button-dusted-fluid/index.tsx +1521 -0
  244. package/templates/shared/src/components/ui/separator.tsx +85 -0
  245. package/templates/shared/src/hooks/useBodyScrollLock.ts +97 -0
  246. package/templates/shared/src/hooks/useClickOutside.ts +28 -0
  247. package/templates/shared/src/utilities/renderCustomCSS.ts +5 -0
  248. package/templates/shared/src/utilities/smoothScroll.ts +65 -0
@@ -0,0 +1,90 @@
1
+ import type { Block } from 'payload'
2
+
3
+ export const DDLineAnim: Block = {
4
+ slug: 'DD-LineAnim',
5
+ interfaceName: 'DDLineAnim',
6
+ labels: {
7
+ singular: 'Line Animation',
8
+ plural: 'Line Animations'
9
+ },
10
+ fields: [
11
+ {
12
+ type: 'row',
13
+ fields: [
14
+ {
15
+ name: 'direction',
16
+ type: 'select',
17
+ label: 'Animation Direction',
18
+ defaultValue: 'left-to-right',
19
+ options: [
20
+ { label: 'Left to Right', value: 'left-to-right' },
21
+ { label: 'Right to Left', value: 'right-to-left' },
22
+ { label: 'Top to Bottom', value: 'top-to-bottom' },
23
+ { label: 'Bottom to Top', value: 'bottom-to-top' }
24
+ ],
25
+ required: true,
26
+ admin: {
27
+ width: '50%'
28
+ }
29
+ },
30
+ {
31
+ name: 'trigger',
32
+ type: 'select',
33
+ label: 'Animation Trigger',
34
+ defaultValue: 'scroll',
35
+ options: [
36
+ { label: 'On Scroll', value: 'scroll' },
37
+ { label: 'Immediate', value: 'immediate' }
38
+ ],
39
+ required: true,
40
+ admin: {
41
+ width: '50%'
42
+ }
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ type: 'row',
48
+ fields: [
49
+ {
50
+ name: 'duration',
51
+ type: 'number',
52
+ label: 'Duration (seconds)',
53
+ defaultValue: 1,
54
+ min: 0.1,
55
+ max: 20,
56
+ required: true,
57
+ admin: {
58
+ width: '50%',
59
+ description: 'Animation duration in seconds. Range: 0.1 to 20',
60
+ step: 0.1
61
+ }
62
+ },
63
+ {
64
+ name: 'delay',
65
+ type: 'number',
66
+ label: 'Delay (seconds)',
67
+ defaultValue: 0,
68
+ min: 0,
69
+ max: 6,
70
+ required: false,
71
+ admin: {
72
+ width: '50%',
73
+ description: 'Delay before animation starts',
74
+ step: 0.1
75
+ }
76
+ }
77
+ ]
78
+ },
79
+ {
80
+ name: 'customClass',
81
+ type: 'text',
82
+ label: 'Custom CSS Class',
83
+ defaultValue: 'border border-border',
84
+ required: false,
85
+ admin: {
86
+ description: 'Add custom Tailwind or CSS classes for styling'
87
+ }
88
+ }
89
+ ]
90
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-LineAnim",
4
+ "label": "Line Animation",
5
+ "sourceName": "LineAnimBlock",
6
+ "portableName": "DD-LineAnim",
7
+ "slug": "DD-LineAnim",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/LineAnimBlock",
12
+ "originalSlug": "lineAnimBlock",
13
+ "originalConfigExport": "LineAnimBlock",
14
+ "originalComponentExport": "LineAnimBlock",
15
+ "originalInterfaceName": "DDLineAnim"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-LineAnim/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-LineAnim/config.ts"
25
+ }
26
+ ],
27
+ "dependencies": [],
28
+ "sharedFiles": [
29
+ {
30
+ "from": "templates/shared/src/components/ui/anims",
31
+ "to": "src/components/ui/anims",
32
+ "required": true,
33
+ "safeToCopy": true
34
+ }
35
+ ],
36
+ "requiredProjectFiles": [],
37
+ "optionalProjectFiles": [],
38
+ "collectionRegistration": {
39
+ "enabled": true,
40
+ "collections": [
41
+ "Pages",
42
+ "Posts"
43
+ ]
44
+ },
45
+ "renderBlocksRegistration": {
46
+ "enabled": true
47
+ },
48
+ "renderBlocksBehavior": {
49
+ "wrapperless": false
50
+ },
51
+ "pageRouteIntegration": {
52
+ "required": false,
53
+ "manualSteps": []
54
+ },
55
+ "manual": [
56
+ "Register DDLineAnim in Pages/Posts blocks arrays if automatic registration was skipped.",
57
+ "Register DD-LineAnim in RenderBlocks if automatic registration was skipped.",
58
+ "Run payload generate:types after schema changes."
59
+ ],
60
+ "manualSteps": [
61
+ "Register DDLineAnim in Pages/Posts blocks arrays if automatic registration was skipped.",
62
+ "Register DD-LineAnim in RenderBlocks if automatic registration was skipped.",
63
+ "Run payload generate:types after schema changes."
64
+ ],
65
+ "patchTargets": {
66
+ "blockConfigRegistration": {
67
+ "description": "Installer can add import { DDLineAnim } from '@/blocks/DD-LineAnim/config' and add DDLineAnim to clear Pages/Posts block arrays."
68
+ },
69
+ "renderBlocksRegistration": {
70
+ "description": "Installer can register DD-LineAnim in RenderBlocks."
71
+ }
72
+ },
73
+ "notes": [
74
+ "Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
75
+ "Project-specific imports were replaced with local, dependency-light rendering where required.",
76
+ "Manifest includes shared local support files required by original DesignsDusted source imports."
77
+ ],
78
+ "exportName": "DDLineAnim",
79
+ "interfaceName": "DDLineAnim"
80
+ }
@@ -0,0 +1,119 @@
1
+ 'use client'
2
+
3
+ import React from 'react'
4
+ import Link from 'next/link'
5
+ import { motion, type Variants } from 'framer-motion'
6
+ type LinkGridItem = { id?: string | null; label?: string | null; path: string }
7
+ type LinkGridCard = { id?: string | null; title?: string | null; titleHref?: string | null; links: LinkGridItem[] }
8
+ type LinkGridCardsProps = { cards?: LinkGridCard[] | null }
9
+
10
+ const listVariants: Variants = {
11
+ hidden: {},
12
+ visible: {
13
+ transition: {
14
+ staggerChildren: 0.08,
15
+ delayChildren: 0.1
16
+ }
17
+ }
18
+ }
19
+
20
+ const itemVariants: Variants = {
21
+ hidden: {
22
+ opacity: 0,
23
+ y: 14
24
+ },
25
+ visible: {
26
+ opacity: 1,
27
+ y: 0,
28
+ transition: {
29
+ duration: 0.45,
30
+ ease: 'easeOut'
31
+ }
32
+ }
33
+ }
34
+
35
+ export const DDLinkGrid: React.FC<LinkGridCardsProps> = ({ cards }) => {
36
+ if (!cards || cards.length === 0) return null
37
+
38
+ return (
39
+ <motion.div
40
+ className="mx-auto grid w-full max-w-4xl grid-cols-1 justify-center gap-8 overflow-hidden p-4 sm:grid-cols-2 lg:flex lg:flex-wrap lg:items-start lg:justify-center"
41
+ variants={listVariants}
42
+ initial="hidden"
43
+ whileInView="visible"
44
+ viewport={{ once: true, amount: 0.25 }}
45
+ >
46
+ {cards.map((card: LinkGridCard, index: number) => (
47
+ <motion.div
48
+ key={card.id ?? index}
49
+ variants={itemVariants}
50
+ className="flex flex-col justify-start items-start w-full max-w-fit"
51
+ >
52
+ <h3 className="mb-2 lg:mb-4 px-1 scale-100 w-full !text-[0.875rem] !font-normal !text-lime-500/80 hover:!text-lime-500 transition-all duration-100">
53
+ {card.titleHref ? <Link href={card.titleHref}>{card.title}</Link> : card.title}
54
+ </h3>
55
+
56
+ <ul className="m-0 flex list-none flex-col p-0">
57
+ {card.links.map((item: LinkGridItem, linkIndex: number) => (
58
+ <motion.li
59
+ key={item.id ?? linkIndex}
60
+ variants={itemVariants}
61
+ className="list-none border-l border-stone-100/5 ml-1 py-1 my-0"
62
+ >
63
+ <motion.div initial="rest" whileHover="hover" animate="rest" className="inline-block">
64
+ <Link
65
+ href={item.path}
66
+ className="group linkGridCard_link relative inline-flex items-start overflow-hidden text-sm !font-normal text-stone-300/80 transition-all duration-300"
67
+ >
68
+ {/* dash */}
69
+ <span className="inline-block w-[0.9em] mr-[0.35rem] overflow-hidden">
70
+ <motion.span
71
+ aria-hidden="true"
72
+ className="inline-block text-lime-500"
73
+ variants={{
74
+ rest: { opacity: 0, x: -8 },
75
+ hover: { opacity: 1, x: 0 }
76
+ }}
77
+ transition={{ duration: 0.25, ease: 'easeOut' }}
78
+ >
79
+ —
80
+ </motion.span>
81
+ </span>
82
+
83
+ {/* text wrapper */}
84
+ <span className="relative inline-block overflow-hidden">
85
+ {/* base text */}
86
+ <span className="block text-stone-300/80 transition-opacity duration-300 group-hover:opacity-0">
87
+ {item.label}
88
+ </span>
89
+
90
+ {/* animated fill text */}
91
+ <motion.span
92
+ className="absolute inset-0 block whitespace-nowrap text-violet-500"
93
+ variants={{
94
+ rest: {
95
+ clipPath: 'inset(0 100% 0 0)'
96
+ },
97
+ hover: {
98
+ clipPath: 'inset(0 0% 0 0)'
99
+ }
100
+ }}
101
+ transition={{
102
+ duration: 0.45,
103
+ ease: [0.22, 1, 0.36, 1]
104
+ }}
105
+ >
106
+ {item.label}
107
+ </motion.span>
108
+ </span>
109
+ </Link>
110
+ </motion.div>
111
+ </motion.li>
112
+ ))}
113
+ </ul>
114
+ </motion.div>
115
+ ))}
116
+ </motion.div>
117
+ )
118
+ }
119
+
@@ -0,0 +1,4 @@
1
+ # DD-LinkGrid
2
+
3
+ Portable first-pass conversion of `LinkGridCards` 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,51 @@
1
+ import type { Block } from 'payload'
2
+
3
+ export const DDLinkGrid: Block = {
4
+ slug: 'DD-LinkGrid',
5
+ interfaceName: 'DDLinkGrid',
6
+ labels: {
7
+ singular: 'Link Grid Cards',
8
+ plural: 'Link Grid Cards'
9
+ },
10
+ fields: [
11
+ {
12
+ name: 'cards',
13
+ type: 'array',
14
+ label: 'Cards',
15
+ minRows: 1,
16
+ fields: [
17
+ {
18
+ name: 'title',
19
+ type: 'text',
20
+ label: 'Heading',
21
+ required: true
22
+ },
23
+ {
24
+ name: 'titleHref',
25
+ type: 'text',
26
+ label: 'Heading Link (href)'
27
+ },
28
+ {
29
+ name: 'links',
30
+ type: 'array',
31
+ label: 'Links',
32
+ minRows: 1,
33
+ fields: [
34
+ {
35
+ name: 'label',
36
+ type: 'text',
37
+ label: 'Label',
38
+ required: true
39
+ },
40
+ {
41
+ name: 'path',
42
+ type: 'text',
43
+ label: 'Path',
44
+ required: true
45
+ }
46
+ ]
47
+ }
48
+ ]
49
+ }
50
+ ]
51
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-LinkGrid",
4
+ "label": "Link Grid",
5
+ "sourceName": "LinkGridCards",
6
+ "portableName": "DD-LinkGrid",
7
+ "slug": "DD-LinkGrid",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/LinkGridCards",
12
+ "originalSlug": "linkGridCards",
13
+ "originalConfigExport": "LinkGridCards",
14
+ "originalComponentExport": "LinkGridCards",
15
+ "originalInterfaceName": "DDLinkGrid"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-LinkGrid/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-LinkGrid/config.ts"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "framer-motion"
29
+ ],
30
+ "sharedFiles": [],
31
+ "requiredProjectFiles": [],
32
+ "optionalProjectFiles": [],
33
+ "collectionRegistration": {
34
+ "enabled": true,
35
+ "collections": [
36
+ "Pages",
37
+ "Posts"
38
+ ]
39
+ },
40
+ "renderBlocksRegistration": {
41
+ "enabled": true
42
+ },
43
+ "renderBlocksBehavior": {
44
+ "wrapperless": false
45
+ },
46
+ "pageRouteIntegration": {
47
+ "required": false,
48
+ "manualSteps": []
49
+ },
50
+ "manual": [
51
+ "Register DDLinkGrid in Pages/Posts blocks arrays if automatic registration was skipped.",
52
+ "Register DD-LinkGrid in RenderBlocks if automatic registration was skipped.",
53
+ "Run payload generate:types after schema changes."
54
+ ],
55
+ "manualSteps": [
56
+ "Register DDLinkGrid in Pages/Posts blocks arrays if automatic registration was skipped.",
57
+ "Register DD-LinkGrid in RenderBlocks if automatic registration was skipped.",
58
+ "Run payload generate:types after schema changes."
59
+ ],
60
+ "patchTargets": {
61
+ "blockConfigRegistration": {
62
+ "description": "Installer can add import { DDLinkGrid } from '@/blocks/DD-LinkGrid/config' and add DDLinkGrid to clear Pages/Posts block arrays."
63
+ },
64
+ "renderBlocksRegistration": {
65
+ "description": "Installer can register DD-LinkGrid in RenderBlocks."
66
+ }
67
+ },
68
+ "notes": [
69
+ "Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
70
+ "Project-specific imports were replaced with local, dependency-light rendering where required."
71
+ ],
72
+ "exportName": "DDLinkGrid",
73
+ "interfaceName": "DDLinkGrid"
74
+ }
@@ -0,0 +1,132 @@
1
+ 'use client'
2
+
3
+ import React, { useMemo, useState } from 'react'
4
+ import Image from 'next/image'
5
+ import { cn } from '@/utilities/ui'
6
+ import { Separator } from '@/components/ui/separator'
7
+
8
+ const placeholderBlur =
9
+ 'data:image/svg+xml;base64,' +
10
+ btoa(
11
+ '<svg width="160" height="80" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="transparent"/></svg>'
12
+ )
13
+
14
+ export type LogoMarqueeProps = {
15
+ logos: {
16
+ image?: {
17
+ url?: string
18
+ alt?: string
19
+ } | null
20
+ imageClass?: string
21
+ imageStyle?: React.CSSProperties
22
+ imageAltClass?: string
23
+ }[]
24
+ speed?: number
25
+ spacing?: number
26
+ showTopDivider?: boolean
27
+ showBottomDivider?: boolean
28
+ containerClass?: string
29
+ itemWidth?: number
30
+ customCSS?: string
31
+ }
32
+
33
+ const LogoImage: React.FC<{
34
+ src: string
35
+ alt?: string
36
+ customClass?: string
37
+ imageStyle?: React.CSSProperties
38
+ }> = ({ src, alt, customClass, imageStyle }) => {
39
+ const [imageError, setImageError] = useState(false)
40
+ const imageSrc = !src || imageError ? placeholderBlur : src
41
+
42
+ return (
43
+ <Image
44
+ src={imageSrc}
45
+ alt={alt || 'Logo'}
46
+ width={160}
47
+ height={72}
48
+ priority
49
+ className={cn('h-14 w-auto max-w-[140px] object-contain', customClass)}
50
+ style={imageStyle}
51
+ onError={() => setImageError(true)}
52
+ placeholder="blur"
53
+ blurDataURL={placeholderBlur}
54
+ />
55
+ )
56
+ }
57
+
58
+ export const DDLogoMarq: React.FC<LogoMarqueeProps> = ({
59
+ logos,
60
+ speed = 18,
61
+ spacing = 32,
62
+ showTopDivider = false,
63
+ showBottomDivider = false,
64
+ containerClass = 'py-8',
65
+ customCSS,
66
+ itemWidth = 190
67
+ }) => {
68
+ const validLogos = logos || []
69
+ const marqueeItems = useMemo(() => {
70
+ if (validLogos.length === 0) return []
71
+ const minimumItems = Math.max(validLogos.length, 6)
72
+ return Array.from({ length: minimumItems }, (_, index) => validLogos[index % validLogos.length])
73
+ }, [validLogos])
74
+
75
+ if (marqueeItems.length === 0) return null
76
+
77
+ const gap = Math.max(16, spacing)
78
+
79
+ const LogoTile = ({
80
+ logo,
81
+ index,
82
+ duplicate = false
83
+ }: {
84
+ logo: (typeof marqueeItems)[number]
85
+ index: number
86
+ duplicate?: boolean
87
+ }) => (
88
+ <div
89
+ key={(duplicate ? 'duplicate' : 'logo') + '-' + index}
90
+ className="marquee-logo-tile flex shrink-0 flex-col items-center justify-center rounded-2xl border border-white/10 bg-white/[0.035] px-5 py-4 shadow-[inset_0_1px_0_rgba(255,255,255,0.08)] backdrop-blur-sm"
91
+ style={{ width: itemWidth }}
92
+ >
93
+ <LogoImage
94
+ src={logo.image?.url || placeholderBlur}
95
+ alt={logo.image?.alt}
96
+ customClass={logo.imageClass}
97
+ imageStyle={logo.imageStyle}
98
+ />
99
+ {logo.image?.alt && (
100
+ <p className={cn('mt-3 text-center text-sm font-medium leading-tight text-white/80', logo.imageAltClass)}>
101
+ {logo.image.alt}
102
+ </p>
103
+ )}
104
+ </div>
105
+ )
106
+
107
+ return (
108
+ <>
109
+ {showTopDivider && <Separator gradient className="border-seperator" />}
110
+ <section className="logo-marquee-block mx-auto flex min-h-[280px] w-full max-w-6xl items-center overflow-hidden">
111
+ {customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
112
+ <style>{
113
+ '@keyframes dd-logo-marquee { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-50%, 0, 0); } }' +
114
+ '.logo-marquee-track { animation: dd-logo-marquee var(--dd-logo-marquee-speed) linear infinite; }' +
115
+ '.logo-marquee-block:hover .logo-marquee-track { animation-play-state: paused; }'
116
+ }</style>
117
+ <div className={cn('relative w-full overflow-hidden', containerClass)}>
118
+ <div
119
+ className="logo-marquee-track flex w-max items-center"
120
+ style={{ gap, '--dd-logo-marquee-speed': speed + 's' } as React.CSSProperties}
121
+ >
122
+ {marqueeItems.map((logo, index) => LogoTile({ logo, index }))}
123
+ {marqueeItems.map((logo, index) => LogoTile({ logo, index, duplicate: true }))}
124
+ </div>
125
+ </div>
126
+ </section>
127
+ {showBottomDivider && <Separator gradient className="border-seperator opacity-20" />}
128
+ </>
129
+ )
130
+ }
131
+
132
+ export default DDLogoMarq
@@ -0,0 +1,4 @@
1
+ # DD-LogoMarq
2
+
3
+ Portable first-pass conversion of `LogoMarquee` 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
+