blocks-dusted 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/README.md +35 -0
  2. package/package.json +5 -2
  3. package/src/cli.js +39 -3
  4. package/src/commands/shop.js +59 -0
  5. package/src/commands/warehouse.js +73 -0
  6. package/src/utils/paths.js +13 -13
  7. package/templates/blocks/DD-Accordion/Component.tsx +229 -0
  8. package/templates/blocks/DD-Accordion/README.md +3 -0
  9. package/templates/blocks/DD-Accordion/config.ts +73 -0
  10. package/templates/blocks/DD-Accordion/manifest.json +75 -0
  11. package/templates/blocks/DD-AnimText/Component.tsx +788 -0
  12. package/templates/blocks/DD-AnimText/README.md +3 -0
  13. package/templates/blocks/DD-AnimText/config.ts +295 -0
  14. package/templates/blocks/DD-AnimText/manifest.json +85 -0
  15. package/templates/blocks/DD-AsideNav/Component.tsx +321 -0
  16. package/templates/blocks/DD-AsideNav/config.ts +204 -0
  17. package/templates/blocks/DD-AsideNav/manifest.json +80 -0
  18. package/templates/blocks/DD-Banner/Component.tsx +51 -0
  19. package/templates/blocks/DD-Banner/config.ts +57 -0
  20. package/templates/blocks/DD-Banner/manifest.json +72 -0
  21. package/templates/blocks/DD-BgLightning/Component.tsx +44 -0
  22. package/templates/blocks/DD-BgLightning/README.md +3 -0
  23. package/templates/blocks/DD-BgLightning/config.ts +97 -0
  24. package/templates/blocks/DD-BgLightning/manifest.json +79 -0
  25. package/templates/blocks/DD-BookCall/Component.tsx +535 -535
  26. package/templates/blocks/DD-BookCall/config.ts +238 -238
  27. package/templates/blocks/DD-ButtonPop/Component.tsx +117 -0
  28. package/templates/blocks/DD-ButtonPop/config.ts +105 -0
  29. package/templates/blocks/DD-ButtonPop/manifest.json +88 -0
  30. package/templates/blocks/DD-ButtonPop/svg-icons/Dust2.tsx +167 -0
  31. package/templates/blocks/DD-Card/Component.tsx +251 -0
  32. package/templates/blocks/DD-Card/README.md +4 -0
  33. package/templates/blocks/DD-Card/config.ts +154 -0
  34. package/templates/blocks/DD-Card/manifest.json +82 -0
  35. package/templates/blocks/DD-CardTemplate01/Component.tsx +140 -140
  36. package/templates/blocks/DD-CardTemplate01/config.ts +106 -106
  37. package/templates/blocks/DD-Carousel-A/Component.tsx +249 -249
  38. package/templates/blocks/DD-Carousel-B/Component.tsx +403 -403
  39. package/templates/blocks/DD-Chip/Component.tsx +250 -0
  40. package/templates/blocks/DD-Chip/EXAMPLES.md +313 -0
  41. package/templates/blocks/DD-Chip/README.md +202 -0
  42. package/templates/blocks/DD-Chip/config.ts +369 -0
  43. package/templates/blocks/DD-Chip/manifest.json +74 -0
  44. package/templates/blocks/DD-ComparisonTable/Component.tsx +256 -256
  45. package/templates/blocks/DD-Contact/Component.tsx +435 -434
  46. package/templates/blocks/DD-Contact/config.ts +22 -22
  47. package/templates/blocks/DD-Counter/Component.tsx +190 -0
  48. package/templates/blocks/DD-Counter/README.md +4 -0
  49. package/templates/blocks/DD-Counter/config.ts +291 -0
  50. package/templates/blocks/DD-Counter/manifest.json +74 -0
  51. package/templates/blocks/DD-CustomCSS/Component.tsx +8 -0
  52. package/templates/blocks/DD-CustomCSS/README.md +4 -0
  53. package/templates/blocks/DD-CustomCSS/addToLayout.md +5 -0
  54. package/templates/blocks/DD-CustomCSS/config.ts +22 -0
  55. package/templates/blocks/DD-CustomCSS/manifest.json +72 -0
  56. package/templates/blocks/DD-CustomCSS/renderCustomCSS.md +7 -0
  57. package/templates/blocks/DD-FeatCat/Component.tsx +302 -302
  58. package/templates/blocks/DD-FeatCat/config.ts +201 -201
  59. package/templates/blocks/DD-FeatStrip/Component.tsx +585 -585
  60. package/templates/blocks/DD-FeatStrip/config.ts +134 -134
  61. package/templates/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx +628 -0
  62. package/templates/blocks/DD-FluidBtn/Component.tsx +43 -0
  63. package/templates/blocks/DD-FluidBtn/README.md +6 -0
  64. package/templates/blocks/DD-FluidBtn/config.ts +102 -0
  65. package/templates/blocks/DD-FluidBtn/manifest.json +86 -0
  66. package/templates/blocks/DD-GooeyInfo/Component.tsx +149 -0
  67. package/templates/blocks/DD-GooeyInfo/config.ts +135 -0
  68. package/templates/blocks/DD-GooeyInfo/manifest.json +72 -0
  69. package/templates/blocks/DD-Hero/Component.tsx +297 -297
  70. package/templates/blocks/DD-Hero/config.ts +267 -267
  71. package/templates/blocks/DD-HorizontalScroll/Component.tsx +936 -936
  72. package/templates/blocks/DD-HorizontalScroll/config.ts +231 -231
  73. package/templates/blocks/DD-Icon/Component.tsx +287 -0
  74. package/templates/blocks/DD-Icon/README.md +4 -0
  75. package/templates/blocks/DD-Icon/config.ts +258 -0
  76. package/templates/blocks/DD-Icon/hooks/revalidateBlockIds.ts +66 -0
  77. package/templates/blocks/DD-Icon/manifest.json +82 -0
  78. package/templates/blocks/DD-IconButton/Component.tsx +455 -0
  79. package/templates/blocks/DD-IconButton/README.md +326 -0
  80. package/templates/blocks/DD-IconButton/config.ts +239 -0
  81. package/templates/blocks/DD-IconButton/manifest.json +85 -0
  82. package/templates/blocks/DD-IdTag/Component.tsx +21 -0
  83. package/templates/blocks/DD-IdTag/README.md +4 -0
  84. package/templates/blocks/DD-IdTag/config.ts +41 -0
  85. package/templates/blocks/DD-IdTag/manifest.json +72 -0
  86. package/templates/blocks/DD-Iframe/Component.tsx +45 -0
  87. package/templates/blocks/DD-Iframe/README.md +4 -0
  88. package/templates/blocks/DD-Iframe/config.ts +47 -0
  89. package/templates/blocks/DD-Iframe/manifest.json +72 -0
  90. package/templates/blocks/DD-IframeMedia/Component.tsx +133 -0
  91. package/templates/blocks/DD-IframeMedia/README.md +4 -0
  92. package/templates/blocks/DD-IframeMedia/config.ts +79 -0
  93. package/templates/blocks/DD-IframeMedia/manifest.json +72 -0
  94. package/templates/blocks/DD-LineAnim/Component.tsx +36 -0
  95. package/templates/blocks/DD-LineAnim/README.md +4 -0
  96. package/templates/blocks/DD-LineAnim/config.ts +90 -0
  97. package/templates/blocks/DD-LineAnim/manifest.json +80 -0
  98. package/templates/blocks/DD-LinkGrid/Component.tsx +119 -0
  99. package/templates/blocks/DD-LinkGrid/README.md +4 -0
  100. package/templates/blocks/DD-LinkGrid/config.ts +51 -0
  101. package/templates/blocks/DD-LinkGrid/manifest.json +74 -0
  102. package/templates/blocks/DD-LogoMarq/Component.tsx +132 -0
  103. package/templates/blocks/DD-LogoMarq/README.md +4 -0
  104. package/templates/blocks/DD-LogoMarq/config.ts +264 -0
  105. package/templates/blocks/DD-LogoMarq/manifest.json +82 -0
  106. package/templates/blocks/DD-Lottie/Component.tsx +459 -0
  107. package/templates/blocks/DD-Lottie/README.md +4 -0
  108. package/templates/blocks/DD-Lottie/config.ts +379 -0
  109. package/templates/blocks/DD-Lottie/index.tsx +28 -0
  110. package/templates/blocks/DD-Lottie/manifest.json +83 -0
  111. package/templates/blocks/DD-MagicBento/Component.tsx +777 -0
  112. package/templates/blocks/DD-MagicBento/README.md +4 -0
  113. package/templates/blocks/DD-MagicBento/config.ts +264 -0
  114. package/templates/blocks/DD-MagicBento/manifest.json +74 -0
  115. package/templates/blocks/DD-MasonaryMedia/Component.tsx +545 -545
  116. package/templates/blocks/DD-MasonaryMedia/config.ts +2 -2
  117. package/templates/blocks/DD-MasonaryMedia/vendor.d.ts +2 -2
  118. package/templates/blocks/DD-Masonry/Component.tsx +645 -0
  119. package/templates/blocks/DD-Masonry/README.md +4 -0
  120. package/templates/blocks/DD-Masonry/config.ts +475 -0
  121. package/templates/blocks/DD-Masonry/manifest.json +82 -0
  122. package/templates/blocks/DD-Pricing/Component.tsx +2 -5
  123. package/templates/blocks/DD-Process/Component.tsx +2 -4
  124. package/templates/blocks/DD-Process/config.ts +150 -150
  125. package/templates/blocks/DD-Progress/Component.tsx +156 -0
  126. package/templates/blocks/DD-Progress/README.md +4 -0
  127. package/templates/blocks/DD-Progress/config.ts +175 -0
  128. package/templates/blocks/DD-Progress/manifest.json +74 -0
  129. package/templates/blocks/DD-ProjHeader/Component.tsx +91 -0
  130. package/templates/blocks/DD-ProjHeader/README.md +4 -0
  131. package/templates/blocks/DD-ProjHeader/config.ts +96 -0
  132. package/templates/blocks/DD-ProjHeader/manifest.json +72 -0
  133. package/templates/blocks/DD-ProjSlider/Component.tsx +123 -0
  134. package/templates/blocks/DD-ProjSlider/README.md +4 -0
  135. package/templates/blocks/DD-ProjSlider/config.ts +64 -0
  136. package/templates/blocks/DD-ProjSlider/manifest.json +72 -0
  137. package/templates/blocks/DD-ScrollText/Component.tsx +114 -0
  138. package/templates/blocks/DD-ScrollText/README.md +4 -0
  139. package/templates/blocks/DD-ScrollText/config.ts +58 -0
  140. package/templates/blocks/DD-ScrollText/manifest.json +72 -0
  141. package/templates/blocks/DD-Section/Component.tsx +266 -266
  142. package/templates/blocks/DD-Separator/Component.tsx +66 -0
  143. package/templates/blocks/DD-Separator/README.md +4 -0
  144. package/templates/blocks/DD-Separator/config.ts +58 -0
  145. package/templates/blocks/DD-Separator/manifest.json +72 -0
  146. package/templates/blocks/DD-Services/Component.tsx +176 -176
  147. package/templates/blocks/DD-Services/config.ts +149 -149
  148. package/templates/blocks/DD-ShowcaseGrid/Component.tsx +307 -307
  149. package/templates/blocks/DD-Slider-A/Component.tsx +1 -1
  150. package/templates/blocks/DD-StackCards/Component.tsx +1 -1
  151. package/templates/blocks/DD-StackCards/config.ts +399 -399
  152. package/templates/blocks/DD-Team/Component.tsx +247 -247
  153. package/templates/blocks/DD-Team/config.ts +173 -173
  154. package/templates/blocks/DD-TeamCards/Component.tsx +251 -0
  155. package/templates/blocks/DD-TeamCards/README.md +4 -0
  156. package/templates/blocks/DD-TeamCards/config.ts +302 -0
  157. package/templates/blocks/DD-TeamCards/manifest.json +74 -0
  158. package/templates/blocks/DD-TechStack/Component.tsx +174 -174
  159. package/templates/blocks/DD-TechStack/config.ts +153 -153
  160. package/templates/blocks/DD-TestMarq/Component.tsx +132 -0
  161. package/templates/blocks/DD-TestMarq/README.md +4 -0
  162. package/templates/blocks/DD-TestMarq/RowLabel.tsx +9 -0
  163. package/templates/blocks/DD-TestMarq/config.ts +88 -0
  164. package/templates/blocks/DD-TestMarq/manifest.json +72 -0
  165. package/templates/blocks/DD-Testim/Component.tsx +247 -0
  166. package/templates/blocks/DD-Testim/README.md +4 -0
  167. package/templates/blocks/DD-Testim/config.ts +101 -0
  168. package/templates/blocks/DD-Testim/manifest.json +75 -0
  169. package/templates/blocks/DD-Testim2/Component.tsx +256 -0
  170. package/templates/blocks/DD-Testim2/README.md +4 -0
  171. package/templates/blocks/DD-Testim2/config.ts +100 -0
  172. package/templates/blocks/DD-Testim2/manifest.json +74 -0
  173. package/templates/blocks/DD-Testimonials/Component.tsx +139 -147
  174. package/templates/blocks/DD-Testimonials/config.ts +120 -120
  175. package/templates/blocks/DD-TextMarq/Component.tsx +157 -0
  176. package/templates/blocks/DD-TextMarq/README.md +4 -0
  177. package/templates/blocks/DD-TextMarq/config.ts +237 -0
  178. package/templates/blocks/DD-TextMarq/manifest.json +82 -0
  179. package/templates/blocks/DD-Thanks/Component.tsx +501 -0
  180. package/templates/blocks/DD-Thanks/README.md +4 -0
  181. package/templates/blocks/DD-Thanks/config.ts +224 -0
  182. package/templates/blocks/DD-Thanks/manifest.json +72 -0
  183. package/templates/blocks/DD-VertMarq/Component.tsx +154 -0
  184. package/templates/blocks/DD-VertMarq/README.md +4 -0
  185. package/templates/blocks/DD-VertMarq/config.ts +236 -0
  186. package/templates/blocks/DD-VertMarq/dist/index.css +6 -0
  187. package/templates/blocks/DD-VertMarq/dist/index.min.css +1 -0
  188. package/templates/blocks/DD-VertMarq/manifest.json +74 -0
  189. package/templates/blocks/DD-Work/Component.tsx +318 -315
  190. package/templates/blocks/DD-Work/config.ts +165 -165
  191. package/templates/blocks/DD-Work-B/Component.tsx +294 -294
  192. package/templates/blocks/DDHG-CTASection2/Component.tsx +185 -0
  193. package/templates/blocks/DDHG-CTASection2/config.ts +140 -0
  194. package/templates/blocks/DDHG-CTASection2/manifest.json +45 -0
  195. package/templates/blocks/DDHG-HighlightArc/Component.tsx +243 -0
  196. package/templates/blocks/DDHG-HighlightArc/config.ts +85 -0
  197. package/templates/blocks/DDHG-HighlightArc/manifest.json +46 -0
  198. package/templates/blocks/DDHG-LogoMarquee/Component.tsx +143 -0
  199. package/templates/blocks/DDHG-LogoMarquee/config.ts +154 -0
  200. package/templates/blocks/DDHG-LogoMarquee/manifest.json +39 -0
  201. package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +227 -0
  202. package/templates/blocks/DDHG-NavCodeGrid/config.ts +64 -0
  203. package/templates/blocks/DDHG-NavCodeGrid/manifest.json +45 -0
  204. package/templates/blocks/DDHG-ProcessSec/Component.tsx +574 -0
  205. package/templates/blocks/DDHG-ProcessSec/config.ts +170 -0
  206. package/templates/blocks/DDHG-ProcessSec/manifest.json +56 -0
  207. package/templates/blocks/DDHG-ServiceDetails/Component.tsx +164 -0
  208. package/templates/blocks/DDHG-ServiceDetails/ServiceDetailCard.tsx +390 -0
  209. package/templates/blocks/DDHG-ServiceDetails/config.ts +77 -0
  210. package/templates/blocks/DDHG-ServiceDetails/manifest.json +50 -0
  211. package/templates/blocks/DDHG-ServiceHero/Component.tsx +234 -0
  212. package/templates/blocks/DDHG-ServiceHero/config.ts +49 -0
  213. package/templates/blocks/DDHG-ServiceHero/manifest.json +26 -0
  214. package/templates/blocks/DDHG-ServiceOverview/Component.tsx +277 -0
  215. package/templates/blocks/DDHG-ServiceOverview/config.ts +64 -0
  216. package/templates/blocks/DDHG-ServiceOverview/manifest.json +44 -0
  217. package/templates/blocks/DDHG-StatsFAQ/Component.tsx +389 -0
  218. package/templates/blocks/DDHG-StatsFAQ/config.ts +204 -0
  219. package/templates/blocks/DDHG-StatsFAQ/manifest.json +45 -0
  220. package/templates/blocks/DDHG-TeamCards/Component.tsx +169 -0
  221. package/templates/blocks/DDHG-TeamCards/config.ts +48 -0
  222. package/templates/blocks/DDHG-TeamCards/manifest.json +29 -0
  223. package/templates/shared/src/components/BgLightning/index.tsx +242 -0
  224. package/templates/shared/src/components/ui/ShareButton/index.tsx +80 -0
  225. package/templates/shared/src/components/ui/anims/FadeOnScroll.tsx +48 -0
  226. package/templates/shared/src/components/ui/anims/FadeUpOnInView.tsx +63 -0
  227. package/templates/shared/src/components/ui/anims/GlareHover.tsx +111 -0
  228. package/templates/shared/src/components/ui/anims/LineAnims.tsx +81 -0
  229. package/templates/shared/src/components/ui/anims/TitleAnims01.tsx +54 -0
  230. package/templates/shared/src/components/ui/anims/animation-container.tsx +29 -0
  231. package/templates/shared/src/components/ui/anims/blur-in.tsx +26 -0
  232. package/templates/shared/src/components/ui/anims/counter.tsx +53 -0
  233. package/templates/shared/src/components/ui/anims/fade.tsx +83 -0
  234. package/templates/shared/src/components/ui/anims/gradual-spacing.tsx +39 -0
  235. package/templates/shared/src/components/ui/anims/pull-up.tsx +93 -0
  236. package/templates/shared/src/components/ui/anims/reveal-text.tsx +76 -0
  237. package/templates/shared/src/components/ui/anims/rotate-words.tsx +43 -0
  238. package/templates/shared/src/components/ui/anims/shiny-text.tsx +58 -0
  239. package/templates/shared/src/components/ui/anims/shuffle-text.tsx +85 -0
  240. package/templates/shared/src/components/ui/anims/split-text.tsx +211 -0
  241. package/templates/shared/src/components/ui/anims/staggered-fade.tsx +133 -0
  242. package/templates/shared/src/components/ui/anims/text-scroll.tsx +111 -0
  243. package/templates/shared/src/components/ui/anims/typing-effect.tsx +112 -0
  244. package/templates/shared/src/components/ui/button-dusted-fluid/index.tsx +1521 -0
  245. package/templates/shared/src/components/ui/separator.tsx +85 -0
  246. package/templates/shared/src/hooks/useBodyScrollLock.ts +97 -0
  247. package/templates/shared/src/hooks/useClickOutside.ts +28 -0
  248. package/templates/shared/src/utilities/renderCustomCSS.ts +5 -0
  249. package/templates/shared/src/utilities/smoothScroll.ts +65 -0
@@ -0,0 +1,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-xs 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