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.
- package/README.md +35 -0
- package/package.json +1 -1
- package/src/utils/paths.js +13 -13
- package/templates/blocks/DD-Accordion/Component.tsx +229 -0
- package/templates/blocks/DD-Accordion/README.md +3 -0
- package/templates/blocks/DD-Accordion/config.ts +73 -0
- package/templates/blocks/DD-Accordion/manifest.json +75 -0
- package/templates/blocks/DD-AnimText/Component.tsx +788 -0
- package/templates/blocks/DD-AnimText/README.md +3 -0
- package/templates/blocks/DD-AnimText/config.ts +295 -0
- package/templates/blocks/DD-AnimText/manifest.json +85 -0
- package/templates/blocks/DD-AsideNav/Component.tsx +321 -0
- package/templates/blocks/DD-AsideNav/config.ts +204 -0
- package/templates/blocks/DD-AsideNav/manifest.json +80 -0
- package/templates/blocks/DD-Banner/Component.tsx +51 -0
- package/templates/blocks/DD-Banner/config.ts +57 -0
- package/templates/blocks/DD-Banner/manifest.json +72 -0
- package/templates/blocks/DD-BgLightning/Component.tsx +44 -0
- package/templates/blocks/DD-BgLightning/README.md +3 -0
- package/templates/blocks/DD-BgLightning/config.ts +97 -0
- package/templates/blocks/DD-BgLightning/manifest.json +79 -0
- package/templates/blocks/DD-BookCall/Component.tsx +10 -11
- package/templates/blocks/DD-BookCall/config.ts +238 -238
- package/templates/blocks/DD-ButtonPop/Component.tsx +117 -0
- package/templates/blocks/DD-ButtonPop/config.ts +105 -0
- package/templates/blocks/DD-ButtonPop/manifest.json +88 -0
- package/templates/blocks/DD-ButtonPop/svg-icons/Dust2.tsx +167 -0
- package/templates/blocks/DD-Card/Component.tsx +251 -0
- package/templates/blocks/DD-Card/README.md +4 -0
- package/templates/blocks/DD-Card/config.ts +154 -0
- package/templates/blocks/DD-Card/manifest.json +82 -0
- package/templates/blocks/DD-CardTemplate01/Component.tsx +5 -6
- package/templates/blocks/DD-CardTemplate01/config.ts +106 -106
- package/templates/blocks/DD-Carousel-A/Component.tsx +249 -249
- package/templates/blocks/DD-Carousel-B/Component.tsx +403 -403
- package/templates/blocks/DD-Chip/Component.tsx +250 -0
- package/templates/blocks/DD-Chip/EXAMPLES.md +313 -0
- package/templates/blocks/DD-Chip/README.md +202 -0
- package/templates/blocks/DD-Chip/config.ts +369 -0
- package/templates/blocks/DD-Chip/manifest.json +74 -0
- package/templates/blocks/DD-ComparisonTable/Component.tsx +256 -256
- package/templates/blocks/DD-Contact/Component.tsx +434 -434
- package/templates/blocks/DD-Contact/config.ts +22 -22
- package/templates/blocks/DD-Counter/Component.tsx +190 -0
- package/templates/blocks/DD-Counter/README.md +4 -0
- package/templates/blocks/DD-Counter/config.ts +291 -0
- package/templates/blocks/DD-Counter/manifest.json +74 -0
- package/templates/blocks/DD-CustomCSS/Component.tsx +8 -0
- package/templates/blocks/DD-CustomCSS/README.md +4 -0
- package/templates/blocks/DD-CustomCSS/addToLayout.md +5 -0
- package/templates/blocks/DD-CustomCSS/config.ts +22 -0
- package/templates/blocks/DD-CustomCSS/manifest.json +72 -0
- package/templates/blocks/DD-CustomCSS/renderCustomCSS.md +7 -0
- package/templates/blocks/DD-FeatCat/Component.tsx +302 -302
- package/templates/blocks/DD-FeatCat/config.ts +201 -201
- package/templates/blocks/DD-FeatStrip/Component.tsx +585 -585
- package/templates/blocks/DD-FeatStrip/config.ts +134 -134
- package/templates/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx +628 -0
- package/templates/blocks/DD-FluidBtn/Component.tsx +43 -0
- package/templates/blocks/DD-FluidBtn/README.md +6 -0
- package/templates/blocks/DD-FluidBtn/config.ts +102 -0
- package/templates/blocks/DD-FluidBtn/manifest.json +86 -0
- package/templates/blocks/DD-GooeyInfo/Component.tsx +149 -0
- package/templates/blocks/DD-GooeyInfo/config.ts +135 -0
- package/templates/blocks/DD-GooeyInfo/manifest.json +72 -0
- package/templates/blocks/DD-Hero/Component.tsx +40 -17
- package/templates/blocks/DD-Hero/config.ts +267 -267
- package/templates/blocks/DD-HorizontalScroll/Component.tsx +4 -2
- package/templates/blocks/DD-HorizontalScroll/config.ts +231 -231
- package/templates/blocks/DD-Icon/Component.tsx +287 -0
- package/templates/blocks/DD-Icon/README.md +4 -0
- package/templates/blocks/DD-Icon/config.ts +258 -0
- package/templates/blocks/DD-Icon/hooks/revalidateBlockIds.ts +66 -0
- package/templates/blocks/DD-Icon/manifest.json +82 -0
- package/templates/blocks/DD-IconButton/Component.tsx +455 -0
- package/templates/blocks/DD-IconButton/README.md +326 -0
- package/templates/blocks/DD-IconButton/config.ts +239 -0
- package/templates/blocks/DD-IconButton/manifest.json +85 -0
- package/templates/blocks/DD-IdTag/Component.tsx +21 -0
- package/templates/blocks/DD-IdTag/README.md +4 -0
- package/templates/blocks/DD-IdTag/config.ts +41 -0
- package/templates/blocks/DD-IdTag/manifest.json +72 -0
- package/templates/blocks/DD-Iframe/Component.tsx +45 -0
- package/templates/blocks/DD-Iframe/README.md +4 -0
- package/templates/blocks/DD-Iframe/config.ts +47 -0
- package/templates/blocks/DD-Iframe/manifest.json +72 -0
- package/templates/blocks/DD-IframeMedia/Component.tsx +129 -0
- package/templates/blocks/DD-IframeMedia/README.md +4 -0
- package/templates/blocks/DD-IframeMedia/config.ts +79 -0
- package/templates/blocks/DD-IframeMedia/manifest.json +72 -0
- package/templates/blocks/DD-LineAnim/Component.tsx +36 -0
- package/templates/blocks/DD-LineAnim/README.md +4 -0
- package/templates/blocks/DD-LineAnim/config.ts +90 -0
- package/templates/blocks/DD-LineAnim/manifest.json +80 -0
- package/templates/blocks/DD-LinkGrid/Component.tsx +119 -0
- package/templates/blocks/DD-LinkGrid/README.md +4 -0
- package/templates/blocks/DD-LinkGrid/config.ts +51 -0
- package/templates/blocks/DD-LinkGrid/manifest.json +74 -0
- package/templates/blocks/DD-LogoMarq/Component.tsx +132 -0
- package/templates/blocks/DD-LogoMarq/README.md +4 -0
- package/templates/blocks/DD-LogoMarq/config.ts +264 -0
- package/templates/blocks/DD-LogoMarq/manifest.json +82 -0
- package/templates/blocks/DD-Lottie/Component.tsx +459 -0
- package/templates/blocks/DD-Lottie/README.md +4 -0
- package/templates/blocks/DD-Lottie/config.ts +379 -0
- package/templates/blocks/DD-Lottie/index.tsx +28 -0
- package/templates/blocks/DD-Lottie/manifest.json +83 -0
- package/templates/blocks/DD-MagicBento/Component.tsx +777 -0
- package/templates/blocks/DD-MagicBento/README.md +4 -0
- package/templates/blocks/DD-MagicBento/config.ts +264 -0
- package/templates/blocks/DD-MagicBento/manifest.json +74 -0
- package/templates/blocks/DD-MasonaryMedia/Component.tsx +547 -545
- package/templates/blocks/DD-MasonaryMedia/config.ts +2 -2
- package/templates/blocks/DD-MasonaryMedia/vendor.d.ts +2 -2
- package/templates/blocks/DD-Masonry/Component.tsx +645 -0
- package/templates/blocks/DD-Masonry/README.md +4 -0
- package/templates/blocks/DD-Masonry/config.ts +475 -0
- package/templates/blocks/DD-Masonry/manifest.json +82 -0
- package/templates/blocks/DD-Pricing/Component.tsx +372 -372
- package/templates/blocks/DD-Process/Component.tsx +149 -149
- package/templates/blocks/DD-Process/config.ts +150 -150
- package/templates/blocks/DD-Progress/Component.tsx +141 -0
- package/templates/blocks/DD-Progress/README.md +4 -0
- package/templates/blocks/DD-Progress/config.ts +175 -0
- package/templates/blocks/DD-Progress/manifest.json +74 -0
- package/templates/blocks/DD-ProjHeader/Component.tsx +91 -0
- package/templates/blocks/DD-ProjHeader/README.md +4 -0
- package/templates/blocks/DD-ProjHeader/config.ts +96 -0
- package/templates/blocks/DD-ProjHeader/manifest.json +72 -0
- package/templates/blocks/DD-ProjSlider/Component.tsx +123 -0
- package/templates/blocks/DD-ProjSlider/README.md +4 -0
- package/templates/blocks/DD-ProjSlider/config.ts +64 -0
- package/templates/blocks/DD-ProjSlider/manifest.json +72 -0
- package/templates/blocks/DD-ScrollText/Component.tsx +114 -0
- package/templates/blocks/DD-ScrollText/README.md +4 -0
- package/templates/blocks/DD-ScrollText/config.ts +58 -0
- package/templates/blocks/DD-ScrollText/manifest.json +72 -0
- package/templates/blocks/DD-Section/Component.tsx +266 -266
- package/templates/blocks/DD-Separator/Component.tsx +66 -0
- package/templates/blocks/DD-Separator/README.md +4 -0
- package/templates/blocks/DD-Separator/config.ts +58 -0
- package/templates/blocks/DD-Separator/manifest.json +72 -0
- package/templates/blocks/DD-Services/Component.tsx +176 -176
- package/templates/blocks/DD-Services/config.ts +149 -149
- package/templates/blocks/DD-ShowcaseGrid/Component.tsx +307 -307
- package/templates/blocks/DD-Slider-A/Component.tsx +237 -237
- package/templates/blocks/DD-StackCards/Component.tsx +473 -473
- package/templates/blocks/DD-StackCards/config.ts +399 -399
- package/templates/blocks/DD-Team/Component.tsx +247 -247
- package/templates/blocks/DD-Team/config.ts +173 -173
- package/templates/blocks/DD-TeamCards/Component.tsx +251 -0
- package/templates/blocks/DD-TeamCards/README.md +4 -0
- package/templates/blocks/DD-TeamCards/config.ts +302 -0
- package/templates/blocks/DD-TeamCards/manifest.json +74 -0
- package/templates/blocks/DD-TechStack/Component.tsx +168 -162
- package/templates/blocks/DD-TechStack/config.ts +153 -153
- package/templates/blocks/DD-TestMarq/Component.tsx +132 -0
- package/templates/blocks/DD-TestMarq/README.md +4 -0
- package/templates/blocks/DD-TestMarq/RowLabel.tsx +9 -0
- package/templates/blocks/DD-TestMarq/config.ts +88 -0
- package/templates/blocks/DD-TestMarq/manifest.json +72 -0
- package/templates/blocks/DD-Testim/Component.tsx +247 -0
- package/templates/blocks/DD-Testim/README.md +4 -0
- package/templates/blocks/DD-Testim/config.ts +101 -0
- package/templates/blocks/DD-Testim/manifest.json +75 -0
- package/templates/blocks/DD-Testim2/Component.tsx +256 -0
- package/templates/blocks/DD-Testim2/README.md +4 -0
- package/templates/blocks/DD-Testim2/config.ts +100 -0
- package/templates/blocks/DD-Testim2/manifest.json +74 -0
- package/templates/blocks/DD-Testimonials/Component.tsx +147 -147
- package/templates/blocks/DD-Testimonials/config.ts +120 -120
- package/templates/blocks/DD-TextMarq/Component.tsx +157 -0
- package/templates/blocks/DD-TextMarq/README.md +4 -0
- package/templates/blocks/DD-TextMarq/config.ts +237 -0
- package/templates/blocks/DD-TextMarq/manifest.json +82 -0
- package/templates/blocks/DD-Thanks/Component.tsx +500 -0
- package/templates/blocks/DD-Thanks/README.md +4 -0
- package/templates/blocks/DD-Thanks/config.ts +224 -0
- package/templates/blocks/DD-Thanks/manifest.json +72 -0
- package/templates/blocks/DD-VertMarq/Component.tsx +154 -0
- package/templates/blocks/DD-VertMarq/README.md +4 -0
- package/templates/blocks/DD-VertMarq/config.ts +236 -0
- package/templates/blocks/DD-VertMarq/dist/index.css +6 -0
- package/templates/blocks/DD-VertMarq/dist/index.min.css +1 -0
- package/templates/blocks/DD-VertMarq/manifest.json +74 -0
- package/templates/blocks/DD-Work/Component.tsx +318 -315
- package/templates/blocks/DD-Work/config.ts +165 -165
- package/templates/blocks/DD-Work-B/Component.tsx +294 -294
- package/templates/blocks/DDHG-CTASection2/Component.tsx +185 -0
- package/templates/blocks/DDHG-CTASection2/config.ts +140 -0
- package/templates/blocks/DDHG-CTASection2/manifest.json +45 -0
- package/templates/blocks/DDHG-HighlightArc/Component.tsx +243 -0
- package/templates/blocks/DDHG-HighlightArc/config.ts +85 -0
- package/templates/blocks/DDHG-HighlightArc/manifest.json +46 -0
- package/templates/blocks/DDHG-LogoMarquee/Component.tsx +93 -0
- package/templates/blocks/DDHG-LogoMarquee/config.ts +66 -0
- package/templates/blocks/DDHG-LogoMarquee/manifest.json +39 -0
- package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +213 -0
- package/templates/blocks/DDHG-NavCodeGrid/config.ts +64 -0
- package/templates/blocks/DDHG-NavCodeGrid/manifest.json +45 -0
- package/templates/blocks/DDHG-ProcessSec/Component.tsx +575 -0
- package/templates/blocks/DDHG-ProcessSec/config.ts +170 -0
- package/templates/blocks/DDHG-ProcessSec/manifest.json +56 -0
- package/templates/blocks/DDHG-ServiceDetails/Component.tsx +164 -0
- package/templates/blocks/DDHG-ServiceDetails/ServiceDetailCard.tsx +394 -0
- package/templates/blocks/DDHG-ServiceDetails/config.ts +77 -0
- package/templates/blocks/DDHG-ServiceDetails/manifest.json +50 -0
- package/templates/blocks/DDHG-ServiceHero/Component.tsx +234 -0
- package/templates/blocks/DDHG-ServiceHero/config.ts +49 -0
- package/templates/blocks/DDHG-ServiceHero/manifest.json +26 -0
- package/templates/blocks/DDHG-ServiceOverview/Component.tsx +277 -0
- package/templates/blocks/DDHG-ServiceOverview/config.ts +64 -0
- package/templates/blocks/DDHG-ServiceOverview/manifest.json +44 -0
- package/templates/blocks/DDHG-StatsFAQ/Component.tsx +389 -0
- package/templates/blocks/DDHG-StatsFAQ/config.ts +204 -0
- package/templates/blocks/DDHG-StatsFAQ/manifest.json +45 -0
- package/templates/blocks/DDHG-TeamCards/Component.tsx +131 -0
- package/templates/blocks/DDHG-TeamCards/config.ts +48 -0
- package/templates/blocks/DDHG-TeamCards/manifest.json +29 -0
- package/templates/components/HeaderDD02/MobileBottomNav/index.tsx +352 -257
- package/templates/components/HeaderDD02/index.tsx +313 -229
- package/templates/shared/src/components/BgLightning/index.tsx +242 -0
- package/templates/shared/src/components/ui/ShareButton/index.tsx +80 -0
- package/templates/shared/src/components/ui/anims/FadeOnScroll.tsx +48 -0
- package/templates/shared/src/components/ui/anims/FadeUpOnInView.tsx +63 -0
- package/templates/shared/src/components/ui/anims/GlareHover.tsx +111 -0
- package/templates/shared/src/components/ui/anims/LineAnims.tsx +81 -0
- package/templates/shared/src/components/ui/anims/TitleAnims01.tsx +54 -0
- package/templates/shared/src/components/ui/anims/animation-container.tsx +29 -0
- package/templates/shared/src/components/ui/anims/blur-in.tsx +26 -0
- package/templates/shared/src/components/ui/anims/counter.tsx +53 -0
- package/templates/shared/src/components/ui/anims/fade.tsx +83 -0
- package/templates/shared/src/components/ui/anims/gradual-spacing.tsx +39 -0
- package/templates/shared/src/components/ui/anims/pull-up.tsx +93 -0
- package/templates/shared/src/components/ui/anims/reveal-text.tsx +76 -0
- package/templates/shared/src/components/ui/anims/rotate-words.tsx +43 -0
- package/templates/shared/src/components/ui/anims/shiny-text.tsx +58 -0
- package/templates/shared/src/components/ui/anims/shuffle-text.tsx +85 -0
- package/templates/shared/src/components/ui/anims/split-text.tsx +211 -0
- package/templates/shared/src/components/ui/anims/staggered-fade.tsx +133 -0
- package/templates/shared/src/components/ui/anims/text-scroll.tsx +111 -0
- package/templates/shared/src/components/ui/anims/typing-effect.tsx +112 -0
- package/templates/shared/src/components/ui/button-dusted-fluid/index.tsx +1521 -0
- package/templates/shared/src/components/ui/separator.tsx +85 -0
- package/templates/shared/src/hooks/useBodyScrollLock.ts +97 -0
- package/templates/shared/src/hooks/useClickOutside.ts +28 -0
- package/templates/shared/src/utilities/renderCustomCSS.ts +5 -0
- 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
|