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,141 @@
1
+ 'use client'
2
+
3
+ import React from 'react'
4
+ import { motion, useInView } from 'framer-motion'
5
+ import { cn } from '@/utilities/ui'
6
+
7
+ export interface SkillItem {
8
+ label: string
9
+ percentage: number
10
+ color?: string
11
+ showPercentage?: boolean
12
+ id?: string
13
+ }
14
+
15
+ export interface ProgressSkillBlockProps {
16
+ skills?: SkillItem[]
17
+ containerClass?: string
18
+ labelClass?: string
19
+ progressBarClass?: string
20
+ percentageClass?: string
21
+ animationDuration?: number
22
+ animationDelay?: number
23
+ blockType?: string
24
+ }
25
+
26
+ export const DDProgress: React.FC<ProgressSkillBlockProps> = ({
27
+ skills = [],
28
+ containerClass = '',
29
+ labelClass = '',
30
+ progressBarClass = '',
31
+ percentageClass = '',
32
+ animationDuration = 1.5,
33
+ animationDelay = 0.2
34
+ }) => {
35
+ if (!skills || skills.length === 0) {
36
+ return null
37
+ }
38
+
39
+ return (
40
+ <div className={cn('progress-skill-block w-full space-y-6 py-8', containerClass)}>
41
+ {skills.map((skill, index) => (
42
+ <SkillProgressBar
43
+ key={skill.id || `skill-${index}`}
44
+ skill={skill}
45
+ index={index}
46
+ labelClass={labelClass}
47
+ progressBarClass={progressBarClass}
48
+ percentageClass={percentageClass}
49
+ animationDuration={animationDuration}
50
+ animationDelay={animationDelay}
51
+ />
52
+ ))}
53
+ </div>
54
+ )
55
+ }
56
+
57
+ interface SkillProgressBarProps {
58
+ skill: SkillItem
59
+ index: number
60
+ labelClass: string
61
+ progressBarClass: string
62
+ percentageClass: string
63
+ animationDuration: number
64
+ animationDelay: number
65
+ }
66
+
67
+ const SkillProgressBar: React.FC<SkillProgressBarProps> = ({
68
+ skill,
69
+ index,
70
+ labelClass,
71
+ progressBarClass,
72
+ percentageClass,
73
+ animationDuration,
74
+ animationDelay
75
+ }) => {
76
+ const ref = React.useRef(null)
77
+ const isInView = useInView(ref, { once: false, amount: 0.3 })
78
+
79
+ const progressVariants = {
80
+ hidden: { width: '0%' },
81
+ visible: {
82
+ width: `${skill.percentage}%`,
83
+ transition: {
84
+ duration: animationDuration,
85
+ delay: index * animationDelay,
86
+ ease: [0.25, 0.46, 0.45, 0.94] as [number, number, number, number]
87
+ }
88
+ }
89
+ }
90
+
91
+ const percentageVariants = {
92
+ hidden: { opacity: 0 },
93
+ visible: {
94
+ opacity: 1,
95
+ transition: {
96
+ duration: 0.3,
97
+ delay: index * animationDelay + animationDuration * 0.8
98
+ }
99
+ }
100
+ }
101
+
102
+ // Create unique class name from label (slugified)
103
+ const uniqueClass =
104
+ skill.id ||
105
+ skill.label
106
+ .toLowerCase()
107
+ .replace(/\s+/g, '-')
108
+ .replace(/[^a-z0-9-]/g, '')
109
+
110
+ return (
111
+ <div ref={ref} className={cn('skill-item w-full', `skill-${uniqueClass}`)}>
112
+ {/* Label and Percentage Row */}
113
+ <div className="flex justify-between items-center mb-1">
114
+ <div className={cn('text-lg font-medium text-white', labelClass)}>{skill.label}</div>
115
+ {skill.showPercentage !== false && (
116
+ <motion.span
117
+ className={cn('text-sm font-semibold text-white', percentageClass)}
118
+ variants={percentageVariants}
119
+ initial="hidden"
120
+ animate={isInView ? 'visible' : 'hidden'}
121
+ >
122
+ {skill.percentage} %
123
+ </motion.span>
124
+ )}
125
+ </div>
126
+
127
+ {/* Progress Bar Container */}
128
+ <div className="progress-bar-container relative w-full h-1.5 bg-zinc-700 overflow-hidden">
129
+ <motion.div
130
+ className={cn('progress-bar-fill absolute top-0 left-0 h-full', progressBarClass)}
131
+ style={{
132
+ backgroundColor: skill.color || '#9ACD32'
133
+ }}
134
+ variants={progressVariants}
135
+ initial="hidden"
136
+ animate={isInView ? 'visible' : 'hidden'}
137
+ />
138
+ </div>
139
+ </div>
140
+ )
141
+ }
@@ -0,0 +1,4 @@
1
+ # DD-Progress
2
+
3
+ Portable first-pass conversion of `ProgressSkillBlock` 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,175 @@
1
+ import type { Block } from 'payload'
2
+
3
+ export const DDProgress: Block = {
4
+ slug: 'DD-Progress',
5
+ interfaceName: 'DDProgress',
6
+ labels: {
7
+ singular: 'Progress Skill Block',
8
+ plural: 'Progress Skill Blocks'
9
+ },
10
+ fields: [
11
+ {
12
+ name: 'skills',
13
+ label: 'Skills',
14
+ type: 'array',
15
+ required: true,
16
+ minRows: 1,
17
+ maxRows: 10,
18
+ labels: {
19
+ singular: 'Skill',
20
+ plural: 'Skills'
21
+ },
22
+ fields: [
23
+ {
24
+ type: 'row',
25
+ fields: [
26
+ {
27
+ name: 'label',
28
+ type: 'text',
29
+ required: true,
30
+ label: 'Skill Label',
31
+ defaultValue: 'Label',
32
+ admin: {
33
+ width: '50%',
34
+ description: 'Name of the skill (e.g., "Industrial Design", "UI/UX Design")'
35
+ }
36
+ },
37
+ {
38
+ name: 'percentage',
39
+ type: 'number',
40
+ required: true,
41
+ label: 'Skill Percentage',
42
+ defaultValue: 75,
43
+ min: 0,
44
+ max: 100,
45
+ admin: {
46
+ width: '25%',
47
+ description: 'Skill proficiency percentage (0-100)',
48
+ step: 1
49
+ }
50
+ },
51
+ {
52
+ name: 'showPercentage',
53
+ type: 'checkbox',
54
+ label: 'Show %',
55
+ defaultValue: true,
56
+ admin: {
57
+ width: '25%',
58
+ description: 'Display the percentage value'
59
+ }
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ name: 'color',
65
+ type: 'text',
66
+ label: 'Progress Bar Color',
67
+ admin: {
68
+ description:
69
+ 'Custom color for this skill bar (hex or rgb format only). Example: #9ACD32 or rgb(154, 205, 50)',
70
+ placeholder: '#9ACD32'
71
+ }
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ type: 'collapsible',
77
+ label: 'Styling Options',
78
+ admin: {
79
+ initCollapsed: true
80
+ },
81
+ fields: [
82
+ {
83
+ type: 'row',
84
+ fields: [
85
+ {
86
+ name: 'containerClass',
87
+ type: 'text',
88
+ label: 'Container Classes',
89
+ admin: {
90
+ width: '50%',
91
+ description: 'Additional Tailwind classes for the main container',
92
+ placeholder: 'py-12 px-4'
93
+ }
94
+ },
95
+ {
96
+ name: 'labelClass',
97
+ type: 'text',
98
+ label: 'Label Classes',
99
+ admin: {
100
+ width: '50%',
101
+ description: 'Additional Tailwind classes for skill labels',
102
+ placeholder: 'text-xl font-bold'
103
+ }
104
+ }
105
+ ]
106
+ },
107
+ {
108
+ type: 'row',
109
+ fields: [
110
+ {
111
+ name: 'progressBarClass',
112
+ type: 'text',
113
+ label: 'Progress Bar Classes',
114
+ admin: {
115
+ width: '50%',
116
+ description: 'Additional Tailwind classes for progress bars',
117
+ placeholder: 'shadow-lg'
118
+ }
119
+ },
120
+ {
121
+ name: 'percentageClass',
122
+ type: 'text',
123
+ label: 'Percentage Classes',
124
+ admin: {
125
+ width: '50%',
126
+ description: 'Additional Tailwind classes for percentage display',
127
+ placeholder: 'text-lg font-bold'
128
+ }
129
+ }
130
+ ]
131
+ }
132
+ ]
133
+ },
134
+ {
135
+ type: 'collapsible',
136
+ label: 'Animation Settings',
137
+ admin: {
138
+ initCollapsed: true
139
+ },
140
+ fields: [
141
+ {
142
+ type: 'row',
143
+ fields: [
144
+ {
145
+ name: 'animationDuration',
146
+ type: 'number',
147
+ label: 'Animation Duration (seconds)',
148
+ defaultValue: 1.5,
149
+ min: 0.5,
150
+ max: 5,
151
+ admin: {
152
+ width: '50%',
153
+ description: 'Duration of the progress bar animation',
154
+ step: 0.1
155
+ }
156
+ },
157
+ {
158
+ name: 'animationDelay',
159
+ type: 'number',
160
+ label: 'Stagger Delay (seconds)',
161
+ defaultValue: 0.2,
162
+ min: 0,
163
+ max: 2,
164
+ admin: {
165
+ width: '50%',
166
+ description: 'Delay between each skill animation',
167
+ step: 0.1
168
+ }
169
+ }
170
+ ]
171
+ }
172
+ ]
173
+ }
174
+ ]
175
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-Progress",
4
+ "label": "Progress Skill",
5
+ "sourceName": "ProgressSkillBlock",
6
+ "portableName": "DD-Progress",
7
+ "slug": "DD-Progress",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/ProgressSkillBlock",
12
+ "originalSlug": "progressSkillBlock",
13
+ "originalConfigExport": "ProgressSkillBlock",
14
+ "originalComponentExport": "ProgressSkillBlock",
15
+ "originalInterfaceName": "DDProgress"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-Progress/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-Progress/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 DDProgress in Pages/Posts blocks arrays if automatic registration was skipped.",
52
+ "Register DD-Progress in RenderBlocks if automatic registration was skipped.",
53
+ "Run payload generate:types after schema changes."
54
+ ],
55
+ "manualSteps": [
56
+ "Register DDProgress in Pages/Posts blocks arrays if automatic registration was skipped.",
57
+ "Register DD-Progress 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 { DDProgress } from '@/blocks/DD-Progress/config' and add DDProgress to clear Pages/Posts block arrays."
63
+ },
64
+ "renderBlocksRegistration": {
65
+ "description": "Installer can register DD-Progress 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": "DDProgress",
73
+ "interfaceName": "DDProgress"
74
+ }
@@ -0,0 +1,91 @@
1
+ 'use client'
2
+ import React from 'react'
3
+ import { DDProjSlider } from '../DD-ProjSlider/Component'
4
+
5
+ export interface Project2HeaderInfo {
6
+ label: string
7
+ value: string
8
+ }
9
+
10
+ export interface Project2HeaderImage {
11
+ image: string | { url: string; alt?: string }
12
+ alt?: string
13
+ id?: string
14
+ }
15
+
16
+ export interface Project2HeaderBlockProps {
17
+ title?: string
18
+ description?: string
19
+ projectInfo?: Project2HeaderInfo[]
20
+ images?: Project2HeaderImage[]
21
+ slidesPerView?: number
22
+ spaceBetween?: number
23
+ loop?: boolean
24
+ centeredSlides?: boolean
25
+ showSlider?: boolean
26
+ }
27
+
28
+ function Project2HeaderBlock({
29
+ title = 'Media Agency',
30
+ description = 'We provide digital experience services to startups and small businesses. We help our clients succeed by creating brand identities.',
31
+ projectInfo = [
32
+ { label: 'Category', value: 'Marketing' },
33
+ { label: 'Client', value: 'DustedClient' },
34
+ { label: 'Start Date', value: '4 July 2021' },
35
+ { label: 'Designer', value: 'DustedUi' }
36
+ ],
37
+ images = [
38
+ {
39
+ id: '1',
40
+ image:
41
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E'
42
+ },
43
+ {
44
+ id: '2',
45
+ image:
46
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E'
47
+ },
48
+ {
49
+ id: '3',
50
+ image:
51
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E'
52
+ }
53
+ ],
54
+ slidesPerView = 2,
55
+ spaceBetween = 30,
56
+ loop = true,
57
+ centeredSlides = true,
58
+ showSlider = true
59
+ }: Project2HeaderBlockProps) {
60
+ return (
61
+ <>
62
+ <section className="container py-12">
63
+ <h1 className="text-3xl md:text-5xl font-semibold mb-4">{title}</h1>
64
+ <p className="text-stone-400 mb-8 max-w-3xl">{description}</p>
65
+ {projectInfo?.length ? (
66
+ <div className="grid gap-3 sm:grid-cols-2 lg:grid-cols-4">
67
+ {projectInfo.map((info, index) => (
68
+ <div key={`${info.label}-${index}`} className="rounded border border-stone-800 p-3">
69
+ <p className="text-xs uppercase text-stone-400">{info.label}</p>
70
+ <p className="text-sm text-stone-200">{info.value}</p>
71
+ </div>
72
+ ))}
73
+ </div>
74
+ ) : null}
75
+ </section>
76
+ {showSlider && (
77
+ <DDProjSlider
78
+ images={images}
79
+ slidesPerView={slidesPerView}
80
+ spaceBetween={spaceBetween}
81
+ loop={loop}
82
+ centeredSlides={centeredSlides}
83
+ />
84
+ )}
85
+ </>
86
+ )
87
+ }
88
+
89
+ export const DDProjHeader = Project2HeaderBlock
90
+ export default DDProjHeader
91
+
@@ -0,0 +1,4 @@
1
+ # DD-ProjHeader
2
+
3
+ Portable first-pass conversion of `Project2HeaderBlock` 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,96 @@
1
+ import { Block } from 'payload'
2
+
3
+ export const DDProjHeader: Block = {
4
+ slug: 'DD-ProjHeader',
5
+ interfaceName: 'DDProjHeader',
6
+ labels: {
7
+ singular: 'Project2 Header Block',
8
+ plural: 'Project2 Header Blocks'
9
+ },
10
+ fields: [
11
+ {
12
+ name: 'title',
13
+ type: 'text',
14
+ label: 'Title',
15
+ defaultValue: 'OPT Media Agency'
16
+ },
17
+ {
18
+ name: 'description',
19
+ type: 'textarea',
20
+ label: 'Description',
21
+ defaultValue:
22
+ 'We provide digital experience services to startups and small businesses. We help our clients succeed by creating brand identities.'
23
+ },
24
+ {
25
+ name: 'projectInfo',
26
+ type: 'array',
27
+ label: 'Project Info',
28
+ fields: [
29
+ {
30
+ name: 'label',
31
+ type: 'text',
32
+ label: 'Label',
33
+ required: true
34
+ },
35
+ {
36
+ name: 'value',
37
+ type: 'text',
38
+ label: 'Value',
39
+ required: true
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ name: 'images',
45
+ type: 'array',
46
+ label: 'Images',
47
+ minRows: 1,
48
+ fields: [
49
+ {
50
+ name: 'image',
51
+ type: 'upload',
52
+ relationTo: 'media',
53
+ label: 'Image',
54
+ required: true
55
+ },
56
+ {
57
+ name: 'alt',
58
+ type: 'text',
59
+ label: 'Alt Text'
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ name: 'slidesPerView',
65
+ type: 'number',
66
+ label: 'Slides Per View',
67
+ defaultValue: 2
68
+ },
69
+ {
70
+ name: 'spaceBetween',
71
+ type: 'number',
72
+ label: 'Space Between Slides',
73
+ defaultValue: 30
74
+ },
75
+ {
76
+ name: 'loop',
77
+ type: 'checkbox',
78
+ label: 'Enable Loop',
79
+ defaultValue: true
80
+ },
81
+ {
82
+ name: 'centeredSlides',
83
+ type: 'checkbox',
84
+ label: 'Center Slides',
85
+ defaultValue: true
86
+ },
87
+ {
88
+ name: 'showSlider',
89
+ type: 'checkbox',
90
+ label: 'Show Slider',
91
+ defaultValue: true
92
+ }
93
+ ]
94
+ }
95
+
96
+ export default DDProjHeader
@@ -0,0 +1,72 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-ProjHeader",
4
+ "label": "Project Header",
5
+ "sourceName": "Project2HeaderBlock",
6
+ "portableName": "DD-ProjHeader",
7
+ "slug": "DD-ProjHeader",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/Project2HeaderBlock",
12
+ "originalSlug": "project2Header",
13
+ "originalConfigExport": "Project2HeaderBlock",
14
+ "originalComponentExport": "Project2HeaderBlock",
15
+ "originalInterfaceName": "DDProjHeader"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-ProjHeader/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-ProjHeader/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 DDProjHeader in Pages/Posts blocks arrays if automatic registration was skipped.",
50
+ "Register DD-ProjHeader in RenderBlocks if automatic registration was skipped.",
51
+ "Run payload generate:types after schema changes."
52
+ ],
53
+ "manualSteps": [
54
+ "Register DDProjHeader in Pages/Posts blocks arrays if automatic registration was skipped.",
55
+ "Register DD-ProjHeader 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 { DDProjHeader } from '@/blocks/DD-ProjHeader/config' and add DDProjHeader to clear Pages/Posts block arrays."
61
+ },
62
+ "renderBlocksRegistration": {
63
+ "description": "Installer can register DD-ProjHeader 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": "DDProjHeader",
71
+ "interfaceName": "DDProjHeader"
72
+ }