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,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
+