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,123 @@
1
+ 'use client'
2
+
3
+ import React, { useEffect, useRef } from 'react'
4
+ import Image from 'next/image'
5
+ import 'swiper/css'
6
+
7
+ export interface ProjectSliderImage {
8
+ id?: string
9
+ image: string | { url: string; alt?: string }
10
+ alt?: string
11
+ }
12
+
13
+ export interface ProjectSliderBlockProps {
14
+ images?: ProjectSliderImage[]
15
+ slidesPerView?: number
16
+ spaceBetween?: number
17
+ loop?: boolean
18
+ centeredSlides?: boolean
19
+ }
20
+
21
+ const fallbackImages: ProjectSliderImage[] = [
22
+ {
23
+ id: '1',
24
+ image:
25
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23201d2c"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23a3e635"%3EProject slide%3C/text%3E%3C/svg%3E',
26
+ alt: 'Project slide'
27
+ },
28
+ {
29
+ id: '2',
30
+ image:
31
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23120f1b"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23c084fc"%3ECase study%3C/text%3E%3C/svg%3E',
32
+ alt: 'Case study slide'
33
+ },
34
+ {
35
+ id: '3',
36
+ image:
37
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%230b0b0d"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23f8fafc"%3EGallery frame%3C/text%3E%3C/svg%3E',
38
+ alt: 'Gallery frame slide'
39
+ }
40
+ ]
41
+
42
+ function getImageSrc(image: ProjectSliderImage['image']) {
43
+ return typeof image === 'string' ? image : image.url
44
+ }
45
+
46
+ function getImageAlt(image: ProjectSliderImage) {
47
+ return image.alt || (typeof image.image === 'string' ? 'Project image' : image.image.alt) || 'Project image'
48
+ }
49
+
50
+ export const DDProjSlider: React.FC<ProjectSliderBlockProps> = ({
51
+ images = fallbackImages,
52
+ slidesPerView = 2,
53
+ spaceBetween = 30,
54
+ loop = true,
55
+ centeredSlides = true
56
+ }) => {
57
+ const swiperRef = useRef<HTMLDivElement | null>(null)
58
+
59
+ useEffect(() => {
60
+ let destroyed = false
61
+ let instance: { destroy: (deleteInstance?: boolean, cleanStyles?: boolean) => void } | null = null
62
+
63
+ const init = async () => {
64
+ if (!swiperRef.current) return
65
+
66
+ const { Swiper } = await import('swiper')
67
+ if (!swiperRef.current || destroyed) return
68
+
69
+ instance = new Swiper(swiperRef.current, {
70
+ slidesPerView,
71
+ spaceBetween,
72
+ loop,
73
+ centeredSlides,
74
+ watchOverflow: true,
75
+ breakpoints: {
76
+ 0: {
77
+ slidesPerView: 1,
78
+ spaceBetween: 16,
79
+ centeredSlides: false
80
+ },
81
+ 768: {
82
+ slidesPerView,
83
+ spaceBetween,
84
+ centeredSlides
85
+ }
86
+ }
87
+ })
88
+ }
89
+
90
+ init()
91
+
92
+ return () => {
93
+ destroyed = true
94
+ instance?.destroy(true, true)
95
+ }
96
+ }, [slidesPerView, spaceBetween, loop, centeredSlides, images.length])
97
+
98
+ if (!images.length) return null
99
+
100
+ return (
101
+ <section className="project-slider-block w-full overflow-hidden py-10">
102
+ <div ref={swiperRef} className="swiper w-full overflow-visible">
103
+ <div className="swiper-wrapper items-center">
104
+ {images.map((image, index) => (
105
+ <div key={image.id || 'slide-' + index} className="swiper-slide !h-auto">
106
+ <div className="relative aspect-[16/9] w-full overflow-hidden rounded-[2rem] border border-white/10 bg-stone-950 shadow-2xl [corner-shape:squircle]">
107
+ <Image
108
+ src={getImageSrc(image.image)}
109
+ alt={getImageAlt(image)}
110
+ width={1920}
111
+ height={1080}
112
+ className="h-full w-full object-cover object-center"
113
+ sizes="(max-width: 768px) 92vw, 48vw"
114
+ />
115
+ </div>
116
+ </div>
117
+ ))}
118
+ </div>
119
+ </div>
120
+ </section>
121
+ )
122
+ }
123
+
@@ -0,0 +1,4 @@
1
+ # DD-ProjSlider
2
+
3
+ Portable first-pass conversion of `ProjectSliderBlock` 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,64 @@
1
+ import { Block } from 'payload'
2
+
3
+ export const DDProjSlider: Block = {
4
+ slug: 'DD-ProjSlider',
5
+ interfaceName: 'DDProjSlider',
6
+ labels: {
7
+ singular: 'Project Slider Block',
8
+ plural: 'Project Slider Blocks'
9
+ },
10
+ fields: [
11
+ {
12
+ name: 'images',
13
+ type: 'array',
14
+ label: 'Images',
15
+ minRows: 1,
16
+ fields: [
17
+ {
18
+ name: 'imageId',
19
+ type: 'text',
20
+ label: 'Image ID',
21
+ required: true
22
+ },
23
+ {
24
+ name: 'image',
25
+ type: 'upload',
26
+ relationTo: 'media',
27
+ label: 'Image',
28
+ required: true
29
+ },
30
+ {
31
+ name: 'alt',
32
+ type: 'text',
33
+ label: 'Alt Text'
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ name: 'slidesPerView',
39
+ type: 'number',
40
+ label: 'Slides Per View',
41
+ defaultValue: 2
42
+ },
43
+ {
44
+ name: 'spaceBetween',
45
+ type: 'number',
46
+ label: 'Space Between Slides',
47
+ defaultValue: 30
48
+ },
49
+ {
50
+ name: 'loop',
51
+ type: 'checkbox',
52
+ label: 'Enable Loop',
53
+ defaultValue: true
54
+ },
55
+ {
56
+ name: 'centeredSlides',
57
+ type: 'checkbox',
58
+ label: 'Center Slides',
59
+ defaultValue: true
60
+ }
61
+ ]
62
+ }
63
+
64
+ export default DDProjSlider
@@ -0,0 +1,72 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-ProjSlider",
4
+ "label": "Project Slider",
5
+ "sourceName": "ProjectSliderBlock",
6
+ "portableName": "DD-ProjSlider",
7
+ "slug": "DD-ProjSlider",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/ProjectSliderBlock",
12
+ "originalSlug": "projectSlider",
13
+ "originalConfigExport": "ProjectSliderBlock",
14
+ "originalComponentExport": "ProjectSliderBlock",
15
+ "originalInterfaceName": "DDProjSlider"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-ProjSlider/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-ProjSlider/config.ts"
25
+ }
26
+ ],
27
+ "dependencies": [],
28
+ "sharedFiles": [],
29
+ "requiredProjectFiles": [],
30
+ "optionalProjectFiles": [],
31
+ "collectionRegistration": {
32
+ "enabled": true,
33
+ "collections": [
34
+ "Pages",
35
+ "Posts"
36
+ ]
37
+ },
38
+ "renderBlocksRegistration": {
39
+ "enabled": true
40
+ },
41
+ "renderBlocksBehavior": {
42
+ "wrapperless": false
43
+ },
44
+ "pageRouteIntegration": {
45
+ "required": false,
46
+ "manualSteps": []
47
+ },
48
+ "manual": [
49
+ "Register DDProjSlider in Pages/Posts blocks arrays if automatic registration was skipped.",
50
+ "Register DD-ProjSlider in RenderBlocks if automatic registration was skipped.",
51
+ "Run payload generate:types after schema changes."
52
+ ],
53
+ "manualSteps": [
54
+ "Register DDProjSlider in Pages/Posts blocks arrays if automatic registration was skipped.",
55
+ "Register DD-ProjSlider in RenderBlocks if automatic registration was skipped.",
56
+ "Run payload generate:types after schema changes."
57
+ ],
58
+ "patchTargets": {
59
+ "blockConfigRegistration": {
60
+ "description": "Installer can add import { DDProjSlider } from '@/blocks/DD-ProjSlider/config' and add DDProjSlider to clear Pages/Posts block arrays."
61
+ },
62
+ "renderBlocksRegistration": {
63
+ "description": "Installer can register DD-ProjSlider in RenderBlocks."
64
+ }
65
+ },
66
+ "notes": [
67
+ "Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
68
+ "Project-specific imports were replaced with local, dependency-light rendering where required."
69
+ ],
70
+ "exportName": "DDProjSlider",
71
+ "interfaceName": "DDProjSlider"
72
+ }
@@ -0,0 +1,114 @@
1
+ 'use client'
2
+
3
+ import React, { useEffect, useRef, useState } from 'react'
4
+ import {
5
+ motion,
6
+ useAnimationFrame,
7
+ useMotionValue,
8
+ useScroll,
9
+ useSpring,
10
+ useTransform,
11
+ useVelocity
12
+ } from 'framer-motion'
13
+
14
+ import { cn } from '@/utilities/ui'
15
+
16
+ interface TextScrollProps {
17
+ text: string
18
+ default_velocity?: number
19
+ className?: string
20
+ }
21
+
22
+ interface ParallaxProps {
23
+ children: string
24
+ baseVelocity: number
25
+ className?: string
26
+ }
27
+
28
+ export const wrap = (min: number, max: number, v: number) => {
29
+ const rangeSize = max - min
30
+ return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min
31
+ }
32
+
33
+ export const DDScrollText: React.FC<TextScrollProps> = ({
34
+ text,
35
+ default_velocity = 5,
36
+ className
37
+ }) => {
38
+ const ParallaxText: React.FC<ParallaxProps> = ({ children, baseVelocity = 100, className }) => {
39
+ const baseX = useMotionValue(0)
40
+ const { scrollY } = useScroll()
41
+ const scrollVelocity = useVelocity(scrollY)
42
+ const smoothVelocity = useSpring(scrollVelocity, {
43
+ damping: 50,
44
+ stiffness: 400
45
+ })
46
+
47
+ const velocityFactor = useTransform(smoothVelocity, [0, 1000], [0, 5], {
48
+ clamp: false
49
+ })
50
+
51
+ const [repetitions, setRepetitions] = useState(1)
52
+ const containerRef = useRef<HTMLDivElement>(null)
53
+ const textRef = useRef<HTMLSpanElement>(null)
54
+
55
+ useEffect(() => {
56
+ const calculateRepetitions = () => {
57
+ if (containerRef.current && textRef.current) {
58
+ const containerWidth = containerRef.current.offsetWidth
59
+ const textWidth = textRef.current.offsetWidth
60
+ const newRepetitions = Math.ceil(containerWidth / textWidth) + 2
61
+ setRepetitions(newRepetitions)
62
+ }
63
+ }
64
+
65
+ calculateRepetitions()
66
+
67
+ window.addEventListener('resize', calculateRepetitions)
68
+ return () => window.removeEventListener('resize', calculateRepetitions)
69
+ }, [children])
70
+
71
+ const x = useTransform(baseX, (v) => `${wrap(-100 / repetitions, 0, v)}%`)
72
+
73
+ const directionFactor = useRef<number>(1)
74
+ useAnimationFrame((t, delta) => {
75
+ let moveBy = directionFactor.current * baseVelocity * (delta / 1000)
76
+
77
+ if (velocityFactor.get() < 0) {
78
+ directionFactor.current = -1
79
+ } else if (velocityFactor.get() > 0) {
80
+ directionFactor.current = 1
81
+ }
82
+
83
+ moveBy += directionFactor.current * moveBy * velocityFactor.get()
84
+
85
+ baseX.set(baseX.get() + moveBy)
86
+ })
87
+
88
+ return (
89
+ <div className="w-full overflow-hidden whitespace-nowrap" ref={containerRef}>
90
+ <motion.div className={cn('inline-block', className)} style={{ x }}>
91
+ {Array.from({ length: repetitions }).map((_, i) => (
92
+ <span key={i} ref={i === 0 ? textRef : null}>
93
+ {children}{' '}
94
+ </span>
95
+ ))}
96
+ </motion.div>
97
+ </div>
98
+ )
99
+ }
100
+
101
+ return (
102
+ <section className="parallel-text-section relative w-full">
103
+ <ParallaxText baseVelocity={default_velocity} className={cn('parallel-text-top', className)}>
104
+ {text}
105
+ </ParallaxText>
106
+ <ParallaxText
107
+ baseVelocity={-default_velocity}
108
+ className={cn('parallel-text-bottom', className)}
109
+ >
110
+ {text}
111
+ </ParallaxText>
112
+ </section>
113
+ )
114
+ }
@@ -0,0 +1,4 @@
1
+ # DD-ScrollText
2
+
3
+ Portable first-pass conversion of `ScrollTextBlock` 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,58 @@
1
+ import type { Block } from 'payload'
2
+
3
+ export const DDScrollText: Block = {
4
+ slug: 'DD-ScrollText',
5
+ interfaceName: 'DDScrollText',
6
+ labels: {
7
+ singular: 'Scroll Text Block',
8
+ plural: 'Scroll Text Blocks',
9
+ },
10
+ fields: [
11
+ {
12
+ admin: {
13
+ initCollapsed: true,
14
+ className: 'custom-css-class',
15
+ },
16
+ type: 'collapsible',
17
+ label: 'Custom Settings',
18
+ fields: [
19
+ {
20
+ type: 'row',
21
+ fields: [
22
+ {
23
+ name: 'default_velocity',
24
+ type: 'number',
25
+ label: 'Default Scroll Speed',
26
+ required: false,
27
+ defaultValue: 5,
28
+ admin: {
29
+ width: '50%',
30
+ description:
31
+ 'Set the default scroll speed (positive value). Negative handled automatically.',
32
+ },
33
+ },
34
+ {
35
+ name: 'className',
36
+ type: 'text',
37
+ label: 'Custom Class Name',
38
+ required: false,
39
+ admin: {
40
+ width: '50%',
41
+ description: 'Additional Tailwind or custom classes for the scrolling text.',
42
+ },
43
+ },
44
+ ],
45
+ },
46
+ ],
47
+ },
48
+ {
49
+ name: 'text',
50
+ type: 'text',
51
+ label: 'Text to Scroll',
52
+ required: true,
53
+ admin: {
54
+ description: 'Enter the text that will scroll across the screen.',
55
+ },
56
+ },
57
+ ],
58
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-ScrollText",
4
+ "label": "Scroll Text",
5
+ "sourceName": "ScrollTextBlock",
6
+ "portableName": "DD-ScrollText",
7
+ "slug": "DD-ScrollText",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/ScrollTextBlock",
12
+ "originalSlug": "scrollTextBlock",
13
+ "originalConfigExport": "ScrollTextBlock",
14
+ "originalComponentExport": "ScrollTextBlock",
15
+ "originalInterfaceName": "DDScrollText"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-ScrollText/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-ScrollText/config.ts"
25
+ }
26
+ ],
27
+ "dependencies": [],
28
+ "sharedFiles": [],
29
+ "requiredProjectFiles": [],
30
+ "optionalProjectFiles": [],
31
+ "collectionRegistration": {
32
+ "enabled": true,
33
+ "collections": [
34
+ "Pages",
35
+ "Posts"
36
+ ]
37
+ },
38
+ "renderBlocksRegistration": {
39
+ "enabled": true
40
+ },
41
+ "renderBlocksBehavior": {
42
+ "wrapperless": false
43
+ },
44
+ "pageRouteIntegration": {
45
+ "required": false,
46
+ "manualSteps": []
47
+ },
48
+ "manual": [
49
+ "Register DDScrollText in Pages/Posts blocks arrays if automatic registration was skipped.",
50
+ "Register DD-ScrollText in RenderBlocks if automatic registration was skipped.",
51
+ "Run payload generate:types after schema changes."
52
+ ],
53
+ "manualSteps": [
54
+ "Register DDScrollText in Pages/Posts blocks arrays if automatic registration was skipped.",
55
+ "Register DD-ScrollText in RenderBlocks if automatic registration was skipped.",
56
+ "Run payload generate:types after schema changes."
57
+ ],
58
+ "patchTargets": {
59
+ "blockConfigRegistration": {
60
+ "description": "Installer can add import { DDScrollText } from '@/blocks/DD-ScrollText/config' and add DDScrollText to clear Pages/Posts block arrays."
61
+ },
62
+ "renderBlocksRegistration": {
63
+ "description": "Installer can register DD-ScrollText in RenderBlocks."
64
+ }
65
+ },
66
+ "notes": [
67
+ "Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
68
+ "Project-specific imports were replaced with local, dependency-light rendering where required."
69
+ ],
70
+ "exportName": "DDScrollText",
71
+ "interfaceName": "DDScrollText"
72
+ }