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,170 @@
1
+ import type { Block } from 'payload'
2
+
3
+ // Optional rich-text block support. Uncomment and adapt if the destination project
4
+ // wants Media / Masonry / Lottie blocks inside diagramContent.
5
+ // import { BlocksFeature, HeadingFeature } from '@payloadcms/richtext-lexical'
6
+ // import { defaultLexical } from '@/fields/defaultLexical'
7
+ // import { MediaBlock } from '@/blocks/MediaBlock/config'
8
+ // import { MasonryMediaBlock } from '@/blocks/MasonryMediaBlock/config'
9
+ // import { LottieBlock } from '@/blocks/LottieBlock/config'
10
+
11
+ export const DDHGProcessSec: Block = {
12
+ slug: 'DDHG-ProcessSec',
13
+ interfaceName: 'DDHGProcessSec',
14
+ dbName: 'ddhg_proc_sec',
15
+ labels: {
16
+ singular: 'Process Section',
17
+ plural: 'Process Sections',
18
+ },
19
+ fields: [
20
+ {
21
+ type: 'tabs',
22
+ tabs: [
23
+ {
24
+ label: 'Content',
25
+ fields: [
26
+ {
27
+ type: 'row',
28
+ fields: [
29
+ {
30
+ name: 'eyebrowPrefix',
31
+ type: 'text',
32
+ label: 'Eyebrow Prefix',
33
+ defaultValue: 'our',
34
+ admin: { width: '50%' },
35
+ },
36
+ {
37
+ name: 'eyebrowEmphasis',
38
+ type: 'text',
39
+ label: 'Eyebrow Emphasis',
40
+ defaultValue: 'process',
41
+ admin: { width: '50%' },
42
+ },
43
+ ],
44
+ },
45
+ {
46
+ name: 'heading',
47
+ type: 'text',
48
+ label: 'Heading',
49
+ defaultValue: 'HOW WE WORK',
50
+ required: true,
51
+ },
52
+ {
53
+ name: 'showDivider',
54
+ type: 'checkbox',
55
+ label: 'Show Divider',
56
+ defaultValue: true,
57
+ },
58
+ {
59
+ name: 'steps',
60
+ type: 'array',
61
+ label: 'Process Steps',
62
+ dbName: 'steps',
63
+ minRows: 1,
64
+ labels: { singular: 'Step', plural: 'Steps' },
65
+ fields: [
66
+ {
67
+ type: 'row',
68
+ fields: [
69
+ {
70
+ name: 'num',
71
+ type: 'text',
72
+ label: 'Number',
73
+ defaultValue: '01',
74
+ admin: { width: '25%' },
75
+ },
76
+ {
77
+ name: 'title',
78
+ type: 'text',
79
+ label: 'Title',
80
+ required: true,
81
+ admin: { width: '75%' },
82
+ },
83
+ ],
84
+ },
85
+ {
86
+ name: 'description',
87
+ type: 'textarea',
88
+ label: 'Description',
89
+ },
90
+ {
91
+ name: 'substeps',
92
+ type: 'array',
93
+ label: 'Substeps',
94
+ dbName: 'subs',
95
+ fields: [
96
+ { name: 'label', type: 'text', label: 'Substep', required: true },
97
+ ],
98
+ },
99
+ ],
100
+ },
101
+ ],
102
+ },
103
+ {
104
+ label: 'Diagram',
105
+ fields: [
106
+ {
107
+ name: 'diagramLabel',
108
+ type: 'text',
109
+ label: 'Diagram Label',
110
+ defaultValue: 'Process Flow Diagram',
111
+ },
112
+ {
113
+ name: 'diagramContent',
114
+ type: 'richText',
115
+ label: 'Diagram Content',
116
+ // Optional enhanced editor configuration:
117
+ // editor: defaultLexical({
118
+ // features: [
119
+ // HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] }),
120
+ // BlocksFeature({ blocks: [MediaBlock, MasonryMediaBlock, LottieBlock] }),
121
+ // ],
122
+ // }),
123
+ admin: {
124
+ description:
125
+ 'Rich-text visual slot for the process diagram. Embedded block support can be enabled in the destination project.',
126
+ },
127
+ },
128
+ ],
129
+ },
130
+ {
131
+ label: 'Advanced',
132
+ fields: [
133
+ {
134
+ type: 'row',
135
+ fields: [
136
+ {
137
+ name: 'sectionId',
138
+ type: 'text',
139
+ label: 'Section ID',
140
+ admin: { width: '50%' },
141
+ },
142
+ {
143
+ name: 'customClassName',
144
+ type: 'text',
145
+ label: 'Custom CSS Classes',
146
+ admin: { width: '50%' },
147
+ },
148
+ ],
149
+ },
150
+ {
151
+ name: 'scrollSpeed',
152
+ type: 'text',
153
+ label: 'Scroll Speed',
154
+ admin: { description: 'Optional data-scroll-speed value.' },
155
+ },
156
+ {
157
+ name: 'customCSS',
158
+ type: 'code',
159
+ label: 'Custom CSS',
160
+ admin: {
161
+ language: 'css',
162
+ description: 'Injected as a style tag. Use with caution.',
163
+ },
164
+ },
165
+ ],
166
+ },
167
+ ],
168
+ },
169
+ ],
170
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DDHG-ProcessSec",
4
+ "label": "Process Section",
5
+ "sourceName": "ProcessSection",
6
+ "portableName": "DDHG-ProcessSec",
7
+ "slug": "DDHG-ProcessSec",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/HeatherGrey2025",
11
+ "originalPath": "src/blocks/ProcessSection",
12
+ "originalSlug": "processSection",
13
+ "originalConfigExport": "ProcessSection",
14
+ "originalComponentExport": "ProcessSectionBlock",
15
+ "originalInterfaceName": "ProcessSectionBlockProps"
16
+ },
17
+ "files": [
18
+ { "from": "Component.tsx", "to": "src/blocks/DDHG-ProcessSec/Component.tsx" },
19
+ { "from": "config.ts", "to": "src/blocks/DDHG-ProcessSec/config.ts" }
20
+ ],
21
+ "dependencies": [
22
+ { "name": "framer-motion" },
23
+ { "name": "lucide-react" }
24
+ ],
25
+ "sharedFiles": [],
26
+ "requiredProjectFiles": [
27
+ { "path": "src/components/RichText/index.tsx", "reason": "Frontend renders diagramContent through the shared RichText renderer." },
28
+ { "path": "src/components/Logo/LogoIcon.tsx", "reason": "Frontend fallback diagram renders the HeatherGrey LogoIcon." },
29
+ { "path": "src/utilities/ui.ts", "reason": "Component uses the cn utility." }
30
+ ],
31
+ "optionalProjectFiles": [
32
+ { "path": "src/fields/defaultLexical.ts", "reason": "Optional if enhanced Lexical editor configuration is enabled." },
33
+ { "path": "src/blocks/MediaBlock/config.ts", "reason": "Optional if MediaBlock is enabled inside diagramContent." },
34
+ { "path": "src/blocks/MasonryMediaBlock/config.ts", "reason": "Optional if MasonryMediaBlock is enabled inside diagramContent." },
35
+ { "path": "src/blocks/LottieBlock/config.ts", "reason": "Optional if LottieBlock is enabled inside diagramContent." }
36
+ ],
37
+ "collectionRegistration": { "enabled": true, "collections": ["Pages", "Posts"] },
38
+ "renderBlocksRegistration": { "enabled": true },
39
+ "renderBlocksBehavior": { "wrapperless": false },
40
+ "pageRouteIntegration": { "required": false, "manualSteps": [] },
41
+ "manualSteps": [
42
+ "Confirm the shared RichText renderer exists in the destination project.",
43
+ "Optionally uncomment and adapt the enhanced Lexical block editor configuration if embedded Media, Masonry or Lottie content is required.",
44
+ "Replace the HeatherGrey LogoIcon fallback if the destination project uses different branding.",
45
+ "Run payload generate:types after schema changes."
46
+ ],
47
+ "notes": [
48
+ "Converted from HeatherGrey2025 ProcessSection.",
49
+ "The top-level dbName was namespaced to ddhg_proc_sec for portability.",
50
+ "Enhanced Lexical block configuration is commented out by default.",
51
+ "RichText remains a prerequisite for frontend rendering.",
52
+ "Installer must not overwrite existing target files."
53
+ ],
54
+ "exportName": "DDHGProcessSec",
55
+ "interfaceName": "DDHGProcessSec"
56
+ }
@@ -0,0 +1,164 @@
1
+ 'use client'
2
+
3
+ import { motion } from 'framer-motion'
4
+ import React, { useMemo, useState } from 'react'
5
+ import { cn } from '@/utilities/ui'
6
+ import {
7
+ ServiceDetailCard,
8
+ type ServiceDetailItem,
9
+ type ServiceDetailLayout
10
+ } from './ServiceDetailCard'
11
+
12
+ export type DDHGServiceDetailsProps = {
13
+ sectionId?: string | null
14
+ customClassName?: string | null
15
+ customCSS?: string | null
16
+ blockId?: string | null
17
+ scrollSpeed?: string | number | null
18
+ eyebrowPrefix?: string | null
19
+ eyebrowEmphasis?: string | null
20
+ layoutMode?: 'cycle' | 'manual' | null
21
+ services?: ServiceDetailItem[] | null
22
+ }
23
+
24
+ const layoutCycle: ServiceDetailLayout[] = ['left', 'right', 'center', 'split', 'asym', 'bleed']
25
+
26
+ const defaultServices: ServiceDetailItem[] = [
27
+ {
28
+ code: 'SVC-01',
29
+ title: 'Discovery & Briefing',
30
+ description:
31
+ 'We uncover the operational, spatial, and behavioural needs behind the brief before shaping the design direction.',
32
+ timeline: '8-12 weeks',
33
+ engagement: 'Fixed Fee',
34
+ points: [
35
+ { label: 'Brief development' },
36
+ { label: 'Space audit' },
37
+ { label: 'Stakeholder alignment' },
38
+ { label: 'Design direction' }
39
+ ]
40
+ },
41
+ {
42
+ code: 'SVC-02',
43
+ title: 'Concept Design',
44
+ description:
45
+ 'We translate the brief into a clear interior concept across planning, mood, materials, and experience.',
46
+ timeline: '12-16 weeks',
47
+ engagement: 'Project-based',
48
+ points: [
49
+ { label: 'Concept strategy' },
50
+ { label: 'Mood and material direction' },
51
+ { label: 'Spatial planning' },
52
+ { label: 'Preliminary visualisation' }
53
+ ]
54
+ },
55
+ {
56
+ code: 'SVC-03',
57
+ title: 'Design Development',
58
+ description:
59
+ 'We refine the selected concept into a resolved design package with practical, buildable decisions.',
60
+ timeline: '16-24 weeks',
61
+ engagement: 'Fixed Fee',
62
+ points: [
63
+ { label: 'Interior detailing' },
64
+ { label: 'Material schedules' },
65
+ { label: 'Furniture direction' },
66
+ { label: 'Lighting coordination' }
67
+ ]
68
+ }
69
+ ]
70
+
71
+ function getServices(services?: ServiceDetailItem[] | null) {
72
+ return Array.isArray(services) && services.length > 0 ? services : defaultServices
73
+ }
74
+
75
+ function getLayout(
76
+ service: ServiceDetailItem,
77
+ index: number,
78
+ layoutMode?: 'cycle' | 'manual' | null
79
+ ): ServiceDetailLayout {
80
+ if (layoutMode === 'manual' && service.layout && service.layout !== 'auto') return service.layout
81
+ return layoutCycle[index % layoutCycle.length]
82
+ }
83
+
84
+ function slugifyServiceTitle(value?: string | null) {
85
+ if (!value) return ''
86
+ return value
87
+ .trim()
88
+ .toLowerCase()
89
+ .replace(/&/g, 'and')
90
+ .replace(/[^a-z0-9]+/g, '-')
91
+ .replace(/^-+|-+$/g, '')
92
+ }
93
+
94
+ export const DDHGServiceDetails: React.FC<DDHGServiceDetailsProps> = ({
95
+ sectionId,
96
+ customClassName,
97
+ customCSS,
98
+ blockId,
99
+ scrollSpeed,
100
+ eyebrowPrefix = 'detailed',
101
+ eyebrowEmphasis = 'breakdown',
102
+ layoutMode = 'cycle',
103
+ services
104
+ }) => {
105
+ const serviceItems = useMemo(() => getServices(services), [services])
106
+ const [expanded, setExpanded] = useState<number | null>(null)
107
+
108
+ return (
109
+ <div
110
+ id={sectionId ?? undefined}
111
+ data-block-id={blockId ?? undefined}
112
+ data-scroll={scrollSpeed ? true : undefined}
113
+ data-scroll-speed={scrollSpeed ? String(scrollSpeed) : undefined}
114
+ className={cn('ServiceDetails01 px-2 py-16 md:px-8', customClassName)}
115
+ >
116
+ {customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
117
+ <div className="ServiceDetails02 mx-auto max-w-7xl">
118
+ <motion.div
119
+ className="ServiceDetails03 mb-12"
120
+ initial={{ opacity: 0, y: 20 }}
121
+ whileInView={{ opacity: 1, y: 0 }}
122
+ viewport={{ once: true, amount: 0.25 }}
123
+ transition={{ duration: 0.9, ease: [0.22, 1, 0.36, 1] }}
124
+ >
125
+ {(eyebrowPrefix || eyebrowEmphasis) && (
126
+ <p className="ServiceDetails04 mb-2 text-[10px] uppercase tracking-[0.2em] text-stone-600 dark:text-stone-200">
127
+ {eyebrowPrefix && <span className="font-light">{eyebrowPrefix} </span>}
128
+ {eyebrowEmphasis && <span className="font-medium">{eyebrowEmphasis}</span>}
129
+ </p>
130
+ )}
131
+ </motion.div>
132
+ <div className="ServiceDetails05 space-y-16">
133
+ {serviceItems.map((service, index) => {
134
+ const layout = getLayout(service, index, layoutMode)
135
+ const isExpanded = expanded === index
136
+ const serviceDetailId = slugifyServiceTitle(service.title) || `service-detail-${index}`
137
+ return (
138
+ <motion.div
139
+ key={service.id || service.code || `service-detail-${index}`}
140
+ id={serviceDetailId}
141
+ data-service-index={`service-${index}`}
142
+ className="ServiceDetails06"
143
+ initial={{ opacity: 0, y: 20 }}
144
+ whileInView={{ opacity: 1, y: 0 }}
145
+ viewport={{ once: true, amount: 0.18 }}
146
+ transition={{ duration: 0.9, delay: index * 0.05, ease: [0.22, 1, 0.36, 1] }}
147
+ >
148
+ <ServiceDetailCard
149
+ service={service}
150
+ index={index}
151
+ layout={layout}
152
+ isExpanded={isExpanded}
153
+ onToggle={() => setExpanded(isExpanded ? null : index)}
154
+ />
155
+ </motion.div>
156
+ )
157
+ })}
158
+ </div>
159
+ </div>
160
+ </div>
161
+ )
162
+ }
163
+
164
+ export default DDHGServiceDetails