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
@@ -1,267 +1,267 @@
1
- import type { Block } from 'payload'
2
-
3
- export const DDHero: Block = {
4
- slug: 'DD-Hero',
5
- interfaceName: 'DDHero',
6
- labels: {
7
- singular: 'Studio Hero',
8
- plural: 'Studio Heroes'
9
- },
10
- fields: [
11
- {
12
- type: 'tabs',
13
- tabs: [
14
- {
15
- label: 'Content',
16
- fields: [
17
- {
18
- name: 'badge',
19
- type: 'group',
20
- label: 'Badge',
21
- fields: [
22
- {
23
- name: 'show',
24
- type: 'checkbox',
25
- label: 'Show Badge',
26
- defaultValue: true
27
- },
28
- {
29
- name: 'text',
30
- type: 'text',
31
- label: 'Badge Text',
32
- defaultValue: 'Accepting projects — Q2 2026',
33
- admin: {
34
- condition: (_, siblingData) => siblingData?.show
35
- }
36
- }
37
- ]
38
- },
39
- {
40
- name: 'headlineMain',
41
- type: 'text',
42
- label: 'Headline (Main)',
43
- defaultValue: 'We build what',
44
- required: true
45
- },
46
- {
47
- name: 'headlineAccent',
48
- type: 'text',
49
- label: 'Headline (Accent / Second Line)',
50
- defaultValue: 'you imagine',
51
- required: true
52
- },
53
- {
54
- name: 'description',
55
- type: 'textarea',
56
- label: 'Description',
57
- defaultValue:
58
- 'DesignsDusted Studio is a small, focused team of designers and developers. We take on select projects where we can make a real impact — from product design to full-stack delivery.'
59
- },
60
-
61
- // BasicButton hidden
62
- {
63
- name: 'primaryCta',
64
- type: 'group',
65
- hidden: true,
66
- label: 'Primary CTA Button',
67
- fields: [
68
- {
69
- name: 'label',
70
- type: 'text',
71
- label: 'Label',
72
- defaultValue: 'Start a Project'
73
- },
74
- {
75
- name: 'href',
76
- type: 'text',
77
- label: 'Link',
78
- defaultValue: '#contact'
79
- },
80
- {
81
- name: 'iconName',
82
- type: 'text',
83
- label: 'Lucide Icon Name',
84
- defaultValue: 'SendHorizonal',
85
- admin: {
86
- description: 'e.g. SendHorizonal, ArrowRight, Mail'
87
- }
88
- }
89
- ]
90
- },
91
- {
92
- name: 'secondaryCta',
93
- type: 'group',
94
- hidden: true,
95
- label: 'Secondary CTA Button',
96
- fields: [
97
- {
98
- name: 'label',
99
- type: 'text',
100
- label: 'Label',
101
- defaultValue: 'View Our Work'
102
- },
103
- {
104
- name: 'href',
105
- type: 'text',
106
- label: 'Link',
107
- defaultValue: '#work'
108
- },
109
- {
110
- name: 'iconName',
111
- type: 'text',
112
- label: 'Lucide Icon Name',
113
- defaultValue: 'Images',
114
- admin: {
115
- description: 'e.g. Images, GalleryHorizontal, Eye'
116
- }
117
- }
118
- ]
119
- },
120
- // DustedFluidButtons
121
- {
122
- type: 'group',
123
- label: 'CTA Buttons',
124
- fields: [
125
- {
126
- name: 'showButtons',
127
- type: 'checkbox',
128
- label: 'Show Buttons',
129
- defaultValue: true
130
- },
131
- {
132
- name: 'buttons',
133
- type: 'array',
134
- label: 'Buttons',
135
- maxRows: 3,
136
- admin: {
137
- condition: (_, siblingData) => siblingData?.showButtons
138
- },
139
- fields: [
140
- {
141
- name: 'variant',
142
- type: 'select',
143
- label: 'Button Variant',
144
- options: [
145
- { label: 'V1', value: 'v1' },
146
- { label: 'V2', value: 'v2' },
147
- { label: 'V3', value: 'v3' }
148
- ],
149
- defaultValue: 'v1'
150
- },
151
- {
152
- name: 'icon',
153
- type: 'text',
154
- label: 'Icon Name (Lucide)',
155
- defaultValue: 'Goal',
156
- admin: {
157
- description:
158
- 'Enter a Lucide icon name. (e.g., ArrowRight, ChevronRight, ExternalLink)'
159
- }
160
- },
161
- {
162
- name: 'label',
163
- type: 'text',
164
- label: 'Button Label',
165
- required: true
166
- },
167
- {
168
- name: 'class',
169
- type: 'text',
170
- label: 'Extra CSS Class',
171
- admin: {
172
- description:
173
- 'Additional class(es) appended to the button (e.g. my-4, !rounded-full)'
174
- }
175
- }
176
- ],
177
- defaultValue: [
178
- { variant: 'v1', icon: 'Goal', label: 'Explore Components' },
179
- { variant: 'v2', icon: 'Goal', label: 'Choose Lane' },
180
- { variant: 'v3', icon: 'Feather', label: 'How it works' }
181
- ]
182
- }
183
- ]
184
- },
185
- // Stats
186
- {
187
- name: 'stats',
188
- type: 'array',
189
- label: 'Stats',
190
- minRows: 0,
191
- maxRows: 6,
192
- fields: [
193
- {
194
- name: 'value',
195
- type: 'text',
196
- label: 'Value',
197
- required: true
198
- },
199
- {
200
- name: 'label',
201
- type: 'text',
202
- label: 'Label',
203
- required: true
204
- }
205
- ],
206
- defaultValue: [
207
- { value: '40+', label: 'Projects Delivered' },
208
- { value: '98%', label: 'Client Satisfaction' },
209
- { value: '6yr', label: 'In Business' }
210
- ]
211
- }
212
- ]
213
- },
214
- {
215
- label: 'Background',
216
- fields: [
217
- {
218
- name: 'backgroundImage',
219
- type: 'upload',
220
- relationTo: 'media',
221
- label: 'Background Image',
222
- admin: {
223
- description: 'Full-bleed background image for the hero section.'
224
- }
225
- },
226
- {
227
- name: 'backgroundImageFallbackUrl',
228
- type: 'text',
229
- label: 'Fallback Background URL',
230
- admin: {
231
- description: 'Used when no background image is uploaded.'
232
- }
233
- }
234
- ]
235
- },
236
- {
237
- label: 'Settings',
238
- fields: [
239
- {
240
- name: 'sectionId',
241
- type: 'text',
242
- label: 'Section ID',
243
- admin: {
244
- description: 'Unique ID for anchor links (e.g. "hero")'
245
- }
246
- },
247
- {
248
- name: 'showScrollIndicator',
249
- type: 'checkbox',
250
- label: 'Show Scroll Indicator',
251
- defaultValue: true
252
- },
253
- {
254
- name: 'customCSS',
255
- type: 'code',
256
- label: 'Custom CSS',
257
- admin: {
258
- language: 'css',
259
- description: 'Add custom CSS styles for this block.'
260
- }
261
- }
262
- ]
263
- }
264
- ]
265
- }
266
- ]
267
- }
1
+ import type { Block } from 'payload'
2
+
3
+ export const DDHero: Block = {
4
+ slug: 'DD-Hero',
5
+ interfaceName: 'DDHero',
6
+ labels: {
7
+ singular: 'Studio Hero',
8
+ plural: 'Studio Heroes'
9
+ },
10
+ fields: [
11
+ {
12
+ type: 'tabs',
13
+ tabs: [
14
+ {
15
+ label: 'Content',
16
+ fields: [
17
+ {
18
+ name: 'badge',
19
+ type: 'group',
20
+ label: 'Badge',
21
+ fields: [
22
+ {
23
+ name: 'show',
24
+ type: 'checkbox',
25
+ label: 'Show Badge',
26
+ defaultValue: true
27
+ },
28
+ {
29
+ name: 'text',
30
+ type: 'text',
31
+ label: 'Badge Text',
32
+ defaultValue: 'Accepting projects — Q2 2026',
33
+ admin: {
34
+ condition: (_, siblingData) => siblingData?.show
35
+ }
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ name: 'headlineMain',
41
+ type: 'text',
42
+ label: 'Headline (Main)',
43
+ defaultValue: 'We build what',
44
+ required: true
45
+ },
46
+ {
47
+ name: 'headlineAccent',
48
+ type: 'text',
49
+ label: 'Headline (Accent / Second Line)',
50
+ defaultValue: 'you imagine',
51
+ required: true
52
+ },
53
+ {
54
+ name: 'description',
55
+ type: 'textarea',
56
+ label: 'Description',
57
+ defaultValue:
58
+ 'DesignsDusted Studio is a small, focused team of designers and developers. We take on select projects where we can make a real impact — from product design to full-stack delivery.'
59
+ },
60
+
61
+ // BasicButton hidden
62
+ {
63
+ name: 'primaryCta',
64
+ type: 'group',
65
+ hidden: true,
66
+ label: 'Primary CTA Button',
67
+ fields: [
68
+ {
69
+ name: 'label',
70
+ type: 'text',
71
+ label: 'Label',
72
+ defaultValue: 'Start a Project'
73
+ },
74
+ {
75
+ name: 'href',
76
+ type: 'text',
77
+ label: 'Link',
78
+ defaultValue: '#contact'
79
+ },
80
+ {
81
+ name: 'iconName',
82
+ type: 'text',
83
+ label: 'Lucide Icon Name',
84
+ defaultValue: 'SendHorizonal',
85
+ admin: {
86
+ description: 'e.g. SendHorizonal, ArrowRight, Mail'
87
+ }
88
+ }
89
+ ]
90
+ },
91
+ {
92
+ name: 'secondaryCta',
93
+ type: 'group',
94
+ hidden: true,
95
+ label: 'Secondary CTA Button',
96
+ fields: [
97
+ {
98
+ name: 'label',
99
+ type: 'text',
100
+ label: 'Label',
101
+ defaultValue: 'View Our Work'
102
+ },
103
+ {
104
+ name: 'href',
105
+ type: 'text',
106
+ label: 'Link',
107
+ defaultValue: '#work'
108
+ },
109
+ {
110
+ name: 'iconName',
111
+ type: 'text',
112
+ label: 'Lucide Icon Name',
113
+ defaultValue: 'Images',
114
+ admin: {
115
+ description: 'e.g. Images, GalleryHorizontal, Eye'
116
+ }
117
+ }
118
+ ]
119
+ },
120
+ // DustedFluidButtons
121
+ {
122
+ type: 'group',
123
+ label: 'CTA Buttons',
124
+ fields: [
125
+ {
126
+ name: 'showButtons',
127
+ type: 'checkbox',
128
+ label: 'Show Buttons',
129
+ defaultValue: true
130
+ },
131
+ {
132
+ name: 'buttons',
133
+ type: 'array',
134
+ label: 'Buttons',
135
+ maxRows: 3,
136
+ admin: {
137
+ condition: (_, siblingData) => siblingData?.showButtons
138
+ },
139
+ fields: [
140
+ {
141
+ name: 'variant',
142
+ type: 'select',
143
+ label: 'Button Variant',
144
+ options: [
145
+ { label: 'V1', value: 'v1' },
146
+ { label: 'V2', value: 'v2' },
147
+ { label: 'V3', value: 'v3' }
148
+ ],
149
+ defaultValue: 'v1'
150
+ },
151
+ {
152
+ name: 'icon',
153
+ type: 'text',
154
+ label: 'Icon Name (Lucide)',
155
+ defaultValue: 'Goal',
156
+ admin: {
157
+ description:
158
+ 'Enter a Lucide icon name. (e.g., ArrowRight, ChevronRight, ExternalLink)'
159
+ }
160
+ },
161
+ {
162
+ name: 'label',
163
+ type: 'text',
164
+ label: 'Button Label',
165
+ required: true
166
+ },
167
+ {
168
+ name: 'class',
169
+ type: 'text',
170
+ label: 'Extra CSS Class',
171
+ admin: {
172
+ description:
173
+ 'Additional class(es) appended to the button (e.g. my-4, !rounded-full)'
174
+ }
175
+ }
176
+ ],
177
+ defaultValue: [
178
+ { variant: 'v1', icon: 'Goal', label: 'Explore Components' },
179
+ { variant: 'v2', icon: 'Goal', label: 'Choose Lane' },
180
+ { variant: 'v3', icon: 'Feather', label: 'How it works' }
181
+ ]
182
+ }
183
+ ]
184
+ },
185
+ // Stats
186
+ {
187
+ name: 'stats',
188
+ type: 'array',
189
+ label: 'Stats',
190
+ minRows: 0,
191
+ maxRows: 6,
192
+ fields: [
193
+ {
194
+ name: 'value',
195
+ type: 'text',
196
+ label: 'Value',
197
+ required: true
198
+ },
199
+ {
200
+ name: 'label',
201
+ type: 'text',
202
+ label: 'Label',
203
+ required: true
204
+ }
205
+ ],
206
+ defaultValue: [
207
+ { value: '40+', label: 'Projects Delivered' },
208
+ { value: '98%', label: 'Client Satisfaction' },
209
+ { value: '6yr', label: 'In Business' }
210
+ ]
211
+ }
212
+ ]
213
+ },
214
+ {
215
+ label: 'Background',
216
+ fields: [
217
+ {
218
+ name: 'backgroundImage',
219
+ type: 'upload',
220
+ relationTo: 'media',
221
+ label: 'Background Image',
222
+ admin: {
223
+ description: 'Full-bleed background image for the hero section.'
224
+ }
225
+ },
226
+ {
227
+ name: 'backgroundImageFallbackUrl',
228
+ type: 'text',
229
+ label: 'Fallback Background URL',
230
+ admin: {
231
+ description: 'Used when no background image is uploaded.'
232
+ }
233
+ }
234
+ ]
235
+ },
236
+ {
237
+ label: 'Settings',
238
+ fields: [
239
+ {
240
+ name: 'sectionId',
241
+ type: 'text',
242
+ label: 'Section ID',
243
+ admin: {
244
+ description: 'Unique ID for anchor links (e.g. "hero")'
245
+ }
246
+ },
247
+ {
248
+ name: 'showScrollIndicator',
249
+ type: 'checkbox',
250
+ label: 'Show Scroll Indicator',
251
+ defaultValue: true
252
+ },
253
+ {
254
+ name: 'customCSS',
255
+ type: 'code',
256
+ label: 'Custom CSS',
257
+ admin: {
258
+ language: 'css',
259
+ description: 'Add custom CSS styles for this block.'
260
+ }
261
+ }
262
+ ]
263
+ }
264
+ ]
265
+ }
266
+ ]
267
+ }
@@ -509,9 +509,10 @@ interface SlidePanelProps {
509
509
  }
510
510
 
511
511
  function isLocalMediaSrc(src?: string | null): src is string {
512
- return typeof src === 'string' && src.startsWith('/api/media/file/')
512
+ return typeof src === 'string' && (src.startsWith('/api/media/file/') || src.startsWith('/assets/') || src.startsWith('/logo') || src.startsWith('/media/') || src.startsWith('data:'))
513
513
  }
514
514
 
515
+
515
516
  function SlidePanel({ slide, index, total, panelRef }: SlidePanelProps) {
516
517
  const { hex, rgb } = getAccent(slide.accent)
517
518
  const Visual = VISUAL_MAP[slide.visualType ?? 'wireframe'] ?? WireframeVisual
@@ -714,6 +715,7 @@ export function DDHorizontalScroll(props: DDHorizontalScrollProps) {
714
715
  const normalSlides: SlideItem[] = useMemo(() => slides ?? [], [slides])
715
716
  const slideCount = normalSlides.length
716
717
 
718
+
717
719
  /* ── GSAP horizontal scroll + pin + snap ── */
718
720
  useLayoutEffect(() => {
719
721
  if (typeof window === 'undefined') return
@@ -846,7 +848,7 @@ export function DDHorizontalScroll(props: DDHorizontalScrollProps) {
846
848
  }}
847
849
  /> */}
848
850
  {/* Section eyebrow label */}
849
- #BlockName-DDHorizontalScroll
851
+
850
852
  {sectionLabel && (
851
853
  <div className="section-label absolute top-8 left-4 z-20 flex items-center gap-3">
852
854
  <div className="w-6 h-px" style={{ background: '#84cc16' }} />