blocks-dusted 0.1.10 → 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/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,102 @@
|
|
|
1
|
+
// src/blocks/ButtonECDustedFluid/config.ts
|
|
2
|
+
import type { Block } from 'payload'
|
|
3
|
+
import { link } from '@/fields/link'
|
|
4
|
+
|
|
5
|
+
export const DDFluidBtn: Block = {
|
|
6
|
+
slug: 'DD-FluidBtn',
|
|
7
|
+
interfaceName: 'DDFluidBtn',
|
|
8
|
+
labels: {
|
|
9
|
+
singular: 'Button Dusted Fluid',
|
|
10
|
+
plural: 'Button Dusted Fluid'
|
|
11
|
+
},
|
|
12
|
+
fields: [
|
|
13
|
+
{
|
|
14
|
+
name: 'variant',
|
|
15
|
+
type: 'select',
|
|
16
|
+
defaultValue: 'v1',
|
|
17
|
+
required: true,
|
|
18
|
+
options: [
|
|
19
|
+
{ label: 'v1', value: 'v1' },
|
|
20
|
+
{ label: 'v2', value: 'v2' },
|
|
21
|
+
{ label: 'v3', value: 'v3' },
|
|
22
|
+
{ label: 'v4', value: 'v4' },
|
|
23
|
+
{ label: 'v5', value: 'v5' }
|
|
24
|
+
],
|
|
25
|
+
admin: { width: '50%' }
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'label',
|
|
29
|
+
type: 'text',
|
|
30
|
+
required: true,
|
|
31
|
+
defaultValue: 'BUTTON',
|
|
32
|
+
admin: { width: '50%' }
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'displayMode',
|
|
36
|
+
type: 'select',
|
|
37
|
+
label: 'Display Mode',
|
|
38
|
+
defaultValue: 'labelOnly',
|
|
39
|
+
options: [
|
|
40
|
+
{ label: 'Label Only', value: 'labelOnly' },
|
|
41
|
+
{ label: 'Icon with Label', value: 'iconWithLabel' },
|
|
42
|
+
{ label: 'Icon Only', value: 'iconOnly' }
|
|
43
|
+
],
|
|
44
|
+
required: true,
|
|
45
|
+
admin: { width: '50%' }
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'iconPosition',
|
|
49
|
+
type: 'select',
|
|
50
|
+
label: 'Icon Position',
|
|
51
|
+
defaultValue: 'before',
|
|
52
|
+
options: [
|
|
53
|
+
{ label: 'Before Label', value: 'before' },
|
|
54
|
+
{ label: 'After Label', value: 'after' }
|
|
55
|
+
],
|
|
56
|
+
required: false,
|
|
57
|
+
admin: {
|
|
58
|
+
width: '50%',
|
|
59
|
+
condition: (data, siblingData) => siblingData?.displayMode === 'iconWithLabel'
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
link({
|
|
63
|
+
overrides: {
|
|
64
|
+
name: 'link',
|
|
65
|
+
label: 'Link',
|
|
66
|
+
admin: {
|
|
67
|
+
condition: (data) => data.displayMode !== 'labelOnly'
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
disableLabel: true,
|
|
71
|
+
appearances: false
|
|
72
|
+
}),
|
|
73
|
+
{
|
|
74
|
+
name: 'enableCustomClasses',
|
|
75
|
+
type: 'checkbox',
|
|
76
|
+
label: 'Enable Custom Classes',
|
|
77
|
+
defaultValue: false,
|
|
78
|
+
admin: { width: '100%' }
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'wrapperClassName',
|
|
82
|
+
type: 'text',
|
|
83
|
+
label: 'Button Wrapper Class',
|
|
84
|
+
defaultValue: 'w-fit',
|
|
85
|
+
required: false,
|
|
86
|
+
admin: {
|
|
87
|
+
width: '50%',
|
|
88
|
+
condition: (data, siblingData) => siblingData.enableCustomClasses === true
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'className',
|
|
93
|
+
type: 'text',
|
|
94
|
+
label: 'Inner Button Class',
|
|
95
|
+
required: false,
|
|
96
|
+
admin: {
|
|
97
|
+
width: '50%',
|
|
98
|
+
condition: (data, siblingData) => siblingData.enableCustomClasses === true
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-FluidBtn",
|
|
4
|
+
"label": "Fluid Button Set",
|
|
5
|
+
"sourceName": "ButtonECDustedFluid",
|
|
6
|
+
"portableName": "DD-FluidBtn",
|
|
7
|
+
"slug": "DD-FluidBtn",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/ButtonECDustedFluid",
|
|
12
|
+
"originalSlug": "buttonECDustedFluid",
|
|
13
|
+
"originalConfigExport": "ButtonECDustedFluid",
|
|
14
|
+
"originalComponentExport": "ButtonECDustedFluid",
|
|
15
|
+
"originalInterfaceName": "DDFluidBtn"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-FluidBtn/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-FluidBtn/config.ts"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"from": "ButtonsEyeCatching.tsx",
|
|
28
|
+
"to": "src/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"dependencies": [
|
|
32
|
+
"framer-motion"
|
|
33
|
+
],
|
|
34
|
+
"sharedFiles": [
|
|
35
|
+
{
|
|
36
|
+
"from": "templates/shared/src/components/ui/button-dusted-fluid",
|
|
37
|
+
"to": "src/components/ui/button-dusted-fluid",
|
|
38
|
+
"required": true,
|
|
39
|
+
"safeToCopy": true
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"requiredProjectFiles": [],
|
|
43
|
+
"optionalProjectFiles": [],
|
|
44
|
+
"collectionRegistration": {
|
|
45
|
+
"enabled": true,
|
|
46
|
+
"collections": [
|
|
47
|
+
"Pages",
|
|
48
|
+
"Posts"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"renderBlocksRegistration": {
|
|
52
|
+
"enabled": true
|
|
53
|
+
},
|
|
54
|
+
"renderBlocksBehavior": {
|
|
55
|
+
"wrapperless": false
|
|
56
|
+
},
|
|
57
|
+
"pageRouteIntegration": {
|
|
58
|
+
"required": false,
|
|
59
|
+
"manualSteps": []
|
|
60
|
+
},
|
|
61
|
+
"manual": [
|
|
62
|
+
"Register DDFluidBtn in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
63
|
+
"Register DD-FluidBtn in RenderBlocks if automatic registration was skipped.",
|
|
64
|
+
"Run payload generate:types after schema changes."
|
|
65
|
+
],
|
|
66
|
+
"manualSteps": [
|
|
67
|
+
"Register DDFluidBtn in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
68
|
+
"Register DD-FluidBtn in RenderBlocks if automatic registration was skipped.",
|
|
69
|
+
"Run payload generate:types after schema changes."
|
|
70
|
+
],
|
|
71
|
+
"patchTargets": {
|
|
72
|
+
"blockConfigRegistration": {
|
|
73
|
+
"description": "Installer can add import { DDFluidBtn } from '@/blocks/DD-FluidBtn/config' and add DDFluidBtn to clear Pages/Posts block arrays."
|
|
74
|
+
},
|
|
75
|
+
"renderBlocksRegistration": {
|
|
76
|
+
"description": "Installer can register DD-FluidBtn in RenderBlocks."
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"notes": [
|
|
80
|
+
"Bundles the required ButtonsEyeCatching child component with the public parent block.",
|
|
81
|
+
"Only DDFluidBtn is registered as a block.",
|
|
82
|
+
"Manifest includes shared local support files required by original DesignsDusted source imports."
|
|
83
|
+
],
|
|
84
|
+
"exportName": "DDFluidBtn",
|
|
85
|
+
"interfaceName": "DDFluidBtn"
|
|
86
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import React, { useState, useEffect, useRef } from 'react'
|
|
4
|
+
import { motion } from 'framer-motion'
|
|
5
|
+
import RichText from '@/components/RichText'
|
|
6
|
+
|
|
7
|
+
export interface ButtonGooeyInfoProps {
|
|
8
|
+
buttonLabel?: string
|
|
9
|
+
buttonIcon?: string
|
|
10
|
+
richTextData?: any
|
|
11
|
+
panelWidth?: string
|
|
12
|
+
panelBgColor?: string
|
|
13
|
+
buttonBgColor?: string
|
|
14
|
+
buttonTextColor?: string
|
|
15
|
+
panelTextColor?: string
|
|
16
|
+
xOffset?: number
|
|
17
|
+
className?: string
|
|
18
|
+
panelClassName?: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const DDGooeyInfo: React.FC<ButtonGooeyInfoProps> = ({
|
|
22
|
+
buttonLabel = 'i',
|
|
23
|
+
buttonIcon,
|
|
24
|
+
richTextData,
|
|
25
|
+
panelWidth = '16rem',
|
|
26
|
+
panelBgColor = 'black',
|
|
27
|
+
buttonBgColor = 'black',
|
|
28
|
+
buttonTextColor = 'white',
|
|
29
|
+
panelTextColor = 'white',
|
|
30
|
+
xOffset = 48,
|
|
31
|
+
className = '',
|
|
32
|
+
panelClassName = ''
|
|
33
|
+
}) => {
|
|
34
|
+
const [open, setOpen] = useState(false)
|
|
35
|
+
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
36
|
+
const panelRef = useRef<HTMLDivElement | null>(null)
|
|
37
|
+
|
|
38
|
+
// Close on outside tap/click (helps on touch devices)
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
function handlePointerDown(e: PointerEvent) {
|
|
41
|
+
if (!buttonRef.current || !panelRef.current) return
|
|
42
|
+
if (
|
|
43
|
+
!buttonRef.current.contains(e.target as Node) &&
|
|
44
|
+
!panelRef.current.contains(e.target as Node)
|
|
45
|
+
) {
|
|
46
|
+
setOpen(false)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
window.addEventListener('pointerdown', handlePointerDown)
|
|
51
|
+
return () => window.removeEventListener('pointerdown', handlePointerDown)
|
|
52
|
+
}, [])
|
|
53
|
+
|
|
54
|
+
const handleToggle = () => {
|
|
55
|
+
setOpen((prev) => !prev)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<div className={`gooey-info-container relative w-auto h-auto block ${className}`}>
|
|
60
|
+
{/* Gooey Filter */}
|
|
61
|
+
<svg className="absolute w-0 h-0">
|
|
62
|
+
<filter id="gooey">
|
|
63
|
+
{/* // Subtle gooey effect - best color merge */}
|
|
64
|
+
<feGaussianBlur in="SourceGraphic" stdDeviation="8" result="blur" />
|
|
65
|
+
<feColorMatrix
|
|
66
|
+
in="blur"
|
|
67
|
+
mode="matrix"
|
|
68
|
+
values="1 0 0 0 0
|
|
69
|
+
0 1 0 0 0
|
|
70
|
+
0 0 1 0 0
|
|
71
|
+
0 0 0 18 -5"
|
|
72
|
+
result="gooey"
|
|
73
|
+
/>
|
|
74
|
+
{/* // Strong gooey effect */}
|
|
75
|
+
{/* <feGaussianBlur in="SourceGraphic" stdDeviation="12" result="blur" />
|
|
76
|
+
<feColorMatrix
|
|
77
|
+
in="blur"
|
|
78
|
+
mode="matrix"
|
|
79
|
+
values="1 0 0 0 0
|
|
80
|
+
0 1 0 0 0
|
|
81
|
+
0 0 1 0 0
|
|
82
|
+
0 0 0 24 -8"
|
|
83
|
+
result="gooey"
|
|
84
|
+
/> */}
|
|
85
|
+
{/* // Extreme gooey effect */}
|
|
86
|
+
{/* <feGaussianBlur in="SourceGraphic" stdDeviation="16" result="blur" />
|
|
87
|
+
<feColorMatrix
|
|
88
|
+
in="blur"
|
|
89
|
+
mode="matrix"
|
|
90
|
+
values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0
|
|
91
|
+
0 0 0 30 -10"
|
|
92
|
+
result="gooey"
|
|
93
|
+
/> */}
|
|
94
|
+
<feBlend in="SourceGraphic" in2="gooey" />
|
|
95
|
+
</filter>
|
|
96
|
+
</svg>
|
|
97
|
+
<div
|
|
98
|
+
className="relative flex items-center justify-center my-16"
|
|
99
|
+
style={{ filter: 'url(#gooey)' }}
|
|
100
|
+
>
|
|
101
|
+
{/* Floating Button */}
|
|
102
|
+
<motion.button
|
|
103
|
+
ref={buttonRef}
|
|
104
|
+
onHoverStart={() => setOpen(true)}
|
|
105
|
+
onHoverEnd={() => setOpen(false)}
|
|
106
|
+
onClick={handleToggle} // supports mouse + touch tap
|
|
107
|
+
className="w-14 h-14 rounded-full flex items-center justify-center cursor-pointer shadow-lg touch-manipulation select-none"
|
|
108
|
+
style={{
|
|
109
|
+
backgroundColor: buttonBgColor,
|
|
110
|
+
color: buttonTextColor
|
|
111
|
+
}}
|
|
112
|
+
>
|
|
113
|
+
<span className="text-xl font-bold">{buttonIcon || buttonLabel}</span>
|
|
114
|
+
</motion.button>
|
|
115
|
+
|
|
116
|
+
{/* Panel */}
|
|
117
|
+
<motion.div
|
|
118
|
+
ref={panelRef}
|
|
119
|
+
initial={{
|
|
120
|
+
opacity: 0,
|
|
121
|
+
scale: 0.85,
|
|
122
|
+
x: xOffset - 8
|
|
123
|
+
}}
|
|
124
|
+
animate={{
|
|
125
|
+
opacity: open ? 1 : 0,
|
|
126
|
+
scale: open ? 1 : 0.85,
|
|
127
|
+
x: open ? xOffset : xOffset - 8
|
|
128
|
+
}}
|
|
129
|
+
transition={{ type: 'spring', stiffness: 250, damping: 22 }}
|
|
130
|
+
onHoverStart={() => setOpen(true)}
|
|
131
|
+
onHoverEnd={() => setOpen(false)}
|
|
132
|
+
className={`absolute left-0 top-1/2 -translate-y-1/2 origin-left rounded-3xl px-6 py-5 flex flex-col gap-3 ${panelClassName}`}
|
|
133
|
+
style={{
|
|
134
|
+
width: panelWidth,
|
|
135
|
+
backgroundColor: panelBgColor,
|
|
136
|
+
color: panelTextColor,
|
|
137
|
+
pointerEvents: open ? 'auto' : 'none'
|
|
138
|
+
}}
|
|
139
|
+
>
|
|
140
|
+
{richTextData && (
|
|
141
|
+
<RichText data={richTextData} className="gooey-info-richtext" enableGutter={false} />
|
|
142
|
+
)}
|
|
143
|
+
</motion.div>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export default DDGooeyInfo
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { Block } from 'payload'
|
|
2
|
+
import { BlocksFeature } from '@payloadcms/richtext-lexical'
|
|
3
|
+
|
|
4
|
+
import { MediaBlock } from '@/blocks/MediaBlock/config'
|
|
5
|
+
import { DDIcon } from '@/blocks/DD-Icon/config'
|
|
6
|
+
import { DDAnimText } from '@/blocks/DD-AnimText/config'
|
|
7
|
+
import { DDIconButton } from '@/blocks/DD-IconButton/config'
|
|
8
|
+
import { defaultLexical } from '@/fields/defaultLexical'
|
|
9
|
+
|
|
10
|
+
export const DDGooeyInfo: Block = {
|
|
11
|
+
slug: 'DD-GooeyInfo',
|
|
12
|
+
interfaceName: 'DDGooeyInfo',
|
|
13
|
+
labels: {
|
|
14
|
+
singular: 'Button Gooey Info',
|
|
15
|
+
plural: 'Button Gooey Info Blocks'
|
|
16
|
+
},
|
|
17
|
+
fields: [
|
|
18
|
+
{
|
|
19
|
+
type: 'row',
|
|
20
|
+
fields: [
|
|
21
|
+
{
|
|
22
|
+
name: 'buttonLabel',
|
|
23
|
+
type: 'text',
|
|
24
|
+
label: 'Button Label/Icon',
|
|
25
|
+
defaultValue: 'i',
|
|
26
|
+
admin: {
|
|
27
|
+
width: '50%',
|
|
28
|
+
description: 'Text or single character to display on button (e.g., "i", "?", "N")'
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'xOffset',
|
|
33
|
+
type: 'number',
|
|
34
|
+
label: 'Panel X Offset',
|
|
35
|
+
defaultValue: 110,
|
|
36
|
+
admin: {
|
|
37
|
+
width: '50%',
|
|
38
|
+
description: 'Horizontal distance from button to panel in pixels'
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'row',
|
|
45
|
+
fields: [
|
|
46
|
+
{
|
|
47
|
+
name: 'panelWidth',
|
|
48
|
+
type: 'text',
|
|
49
|
+
label: 'Panel Width',
|
|
50
|
+
defaultValue: '16rem',
|
|
51
|
+
admin: {
|
|
52
|
+
width: '33.33%',
|
|
53
|
+
description: 'Width of info panel (e.g., 16rem, 300px)'
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'buttonBgColor',
|
|
58
|
+
type: 'text',
|
|
59
|
+
label: 'Button Background',
|
|
60
|
+
defaultValue: 'black',
|
|
61
|
+
admin: {
|
|
62
|
+
width: '33.33%',
|
|
63
|
+
description: 'CSS color (e.g., black, #000, var(--primary))'
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'buttonTextColor',
|
|
68
|
+
type: 'text',
|
|
69
|
+
label: 'Button Text Color',
|
|
70
|
+
defaultValue: 'white',
|
|
71
|
+
admin: {
|
|
72
|
+
width: '33.33%',
|
|
73
|
+
description: 'CSS color for button text'
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'row',
|
|
80
|
+
fields: [
|
|
81
|
+
{
|
|
82
|
+
name: 'panelBgColor',
|
|
83
|
+
type: 'text',
|
|
84
|
+
label: 'Panel Background',
|
|
85
|
+
defaultValue: 'black',
|
|
86
|
+
admin: {
|
|
87
|
+
width: '50%',
|
|
88
|
+
description: 'CSS color for panel background'
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'panelTextColor',
|
|
93
|
+
type: 'text',
|
|
94
|
+
label: 'Panel Text Color',
|
|
95
|
+
defaultValue: 'white',
|
|
96
|
+
admin: {
|
|
97
|
+
width: '50%',
|
|
98
|
+
description: 'CSS color for panel text'
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'row',
|
|
105
|
+
fields: [
|
|
106
|
+
{
|
|
107
|
+
name: 'className',
|
|
108
|
+
type: 'text',
|
|
109
|
+
label: 'Container CSS Classes',
|
|
110
|
+
admin: {
|
|
111
|
+
width: '50%',
|
|
112
|
+
description: 'Additional CSS classes for the outer container'
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'panelClassName',
|
|
117
|
+
type: 'text',
|
|
118
|
+
label: 'Panel CSS Classes',
|
|
119
|
+
admin: {
|
|
120
|
+
width: '50%',
|
|
121
|
+
description: 'Additional CSS classes for the info panel'
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'richTextData',
|
|
128
|
+
type: 'richText',
|
|
129
|
+
editor: defaultLexical,
|
|
130
|
+
label: 'Panel Content'
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export default DDGooeyInfo
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-GooeyInfo",
|
|
4
|
+
"label": "Gooey Info Button",
|
|
5
|
+
"sourceName": "ButtonGooeyInfo",
|
|
6
|
+
"portableName": "DD-GooeyInfo",
|
|
7
|
+
"slug": "DD-GooeyInfo",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/ButtonGooeyInfo",
|
|
12
|
+
"originalSlug": "buttonGooeyInfo",
|
|
13
|
+
"originalConfigExport": "ButtonGooeyInfo",
|
|
14
|
+
"originalComponentExport": "ButtonGooeyInfo",
|
|
15
|
+
"originalInterfaceName": "DDGooeyInfo"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-GooeyInfo/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-GooeyInfo/config.ts"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [],
|
|
28
|
+
"sharedFiles": [],
|
|
29
|
+
"requiredProjectFiles": [],
|
|
30
|
+
"optionalProjectFiles": [],
|
|
31
|
+
"collectionRegistration": {
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"collections": [
|
|
34
|
+
"Pages",
|
|
35
|
+
"Posts"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"renderBlocksRegistration": {
|
|
39
|
+
"enabled": true
|
|
40
|
+
},
|
|
41
|
+
"renderBlocksBehavior": {
|
|
42
|
+
"wrapperless": false
|
|
43
|
+
},
|
|
44
|
+
"pageRouteIntegration": {
|
|
45
|
+
"required": false,
|
|
46
|
+
"manualSteps": []
|
|
47
|
+
},
|
|
48
|
+
"manual": [
|
|
49
|
+
"Register DDGooeyInfo in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
50
|
+
"Register DD-GooeyInfo in RenderBlocks if automatic registration was skipped.",
|
|
51
|
+
"Run payload generate:types after schema changes."
|
|
52
|
+
],
|
|
53
|
+
"manualSteps": [
|
|
54
|
+
"Register DDGooeyInfo in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
55
|
+
"Register DD-GooeyInfo in RenderBlocks if automatic registration was skipped.",
|
|
56
|
+
"Run payload generate:types after schema changes."
|
|
57
|
+
],
|
|
58
|
+
"patchTargets": {
|
|
59
|
+
"blockConfigRegistration": {
|
|
60
|
+
"description": "Installer can add import { DDGooeyInfo } from '@/blocks/DD-GooeyInfo/config' and add DDGooeyInfo to clear Pages/Posts block arrays."
|
|
61
|
+
},
|
|
62
|
+
"renderBlocksRegistration": {
|
|
63
|
+
"description": "Installer can register DD-GooeyInfo in RenderBlocks."
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"notes": [
|
|
67
|
+
"Converted from DesignsDustedv3 ButtonGooeyInfo.",
|
|
68
|
+
"Project-specific imports were replaced with portable local behaviour where required."
|
|
69
|
+
],
|
|
70
|
+
"exportName": "DDGooeyInfo",
|
|
71
|
+
"interfaceName": "DDGooeyInfo"
|
|
72
|
+
}
|
|
@@ -68,9 +68,19 @@ function DynamicIcon({
|
|
|
68
68
|
|
|
69
69
|
export const DDHero: React.FC<DDHeroProps> = ({
|
|
70
70
|
badge,
|
|
71
|
+
eyebrow,
|
|
71
72
|
headlineMain,
|
|
72
73
|
headlineAccent,
|
|
73
74
|
description,
|
|
75
|
+
headlineText,
|
|
76
|
+
accentText,
|
|
77
|
+
subText,
|
|
78
|
+
phase1,
|
|
79
|
+
phase2,
|
|
80
|
+
phase3,
|
|
81
|
+
phase1Desc,
|
|
82
|
+
phase2Desc,
|
|
83
|
+
phase3Desc,
|
|
74
84
|
// primaryCta,
|
|
75
85
|
// secondaryCta,
|
|
76
86
|
stats,
|
|
@@ -90,8 +100,20 @@ export const DDHero: React.FC<DDHeroProps> = ({
|
|
|
90
100
|
const bgUrl = bgMedia?.url ?? backgroundImageFallbackUrl ?? undefined
|
|
91
101
|
const safeBgUrl = isLocalAssetSrc(bgUrl) ? bgUrl : null
|
|
92
102
|
const isVideo = Boolean(safeBgUrl && (bgMedia?.mimeType?.startsWith('video/') ?? false))
|
|
103
|
+
const resolvedBadge = badge?.text ?? eyebrow
|
|
104
|
+
const resolvedHeadlineMain = headlineMain ?? headlineText ?? 'Launch-ready digital products'
|
|
105
|
+
const resolvedHeadlineAccent = headlineAccent ?? accentText ?? 'with sharper positioning'
|
|
106
|
+
const resolvedDescription =
|
|
107
|
+
description ??
|
|
108
|
+
subText ??
|
|
109
|
+
'A hero section for selling a focused offer with clear messaging, visual depth, and direct action.'
|
|
110
|
+
const phaseStats = [
|
|
111
|
+
phase1 && { value: phase1, label: phase1Desc },
|
|
112
|
+
phase2 && { value: phase2, label: phase2Desc },
|
|
113
|
+
phase3 && { value: phase3, label: phase3Desc }
|
|
114
|
+
].filter(Boolean) as StatItem[]
|
|
93
115
|
const buttonItems = buttons as ButtonItem[]
|
|
94
|
-
const statItems = (stats ?? []) as StatItem[]
|
|
116
|
+
const statItems = ((stats?.length ? stats : phaseStats) ?? []) as StatItem[]
|
|
95
117
|
|
|
96
118
|
const [bgLoaded, setBgLoaded] = useState(false)
|
|
97
119
|
|
|
@@ -104,7 +126,7 @@ export const DDHero: React.FC<DDHeroProps> = ({
|
|
|
104
126
|
|
|
105
127
|
<div
|
|
106
128
|
id={sectionId ?? undefined}
|
|
107
|
-
className="relative min-h-
|
|
129
|
+
className="relative flex min-h-[72vh] w-full items-center overflow-hidden rounded-2xl"
|
|
108
130
|
>
|
|
109
131
|
{/* Background Image */}
|
|
110
132
|
<div className="absolute inset-0">
|
|
@@ -142,21 +164,20 @@ export const DDHero: React.FC<DDHeroProps> = ({
|
|
|
142
164
|
</div>
|
|
143
165
|
|
|
144
166
|
{/* Content */}
|
|
145
|
-
<div className="relative z-10 w-full max-w-6xl
|
|
146
|
-
|
|
147
|
-
<div className="max-w-2xl">
|
|
167
|
+
<div className="relative z-10 mx-auto flex w-full max-w-6xl items-center px-6 py-20 md:px-10 lg:px-14">
|
|
168
|
+
<div className="max-w-3xl">
|
|
148
169
|
{/* Badge */}
|
|
149
170
|
{/* {badge?.show && badge.text && (
|
|
150
171
|
<div className="inline-flex items-center gap-2 bg-stone-50/10 border border-white/20 rounded-full px-4 py-1.5 mb-8">
|
|
151
172
|
<span className="w-1.5 h-1.5 rounded-full bg-lime-400 animate-pulse" />
|
|
152
173
|
<span className="text-stone-50/80 text-xs font-medium tracking-wide">
|
|
153
|
-
{
|
|
174
|
+
{resolvedBadge}
|
|
154
175
|
</span>
|
|
155
176
|
</div>
|
|
156
177
|
)} */}
|
|
157
178
|
|
|
158
179
|
{/* Badge - to convert to dynamic */}
|
|
159
|
-
{badge?.show &&
|
|
180
|
+
{(badge?.show ?? Boolean(resolvedBadge)) && resolvedBadge && (
|
|
160
181
|
<motion.div
|
|
161
182
|
variants={{
|
|
162
183
|
hidden: { opacity: 0, y: -20, filter: 'blur(6px)' },
|
|
@@ -167,16 +188,16 @@ export const DDHero: React.FC<DDHeroProps> = ({
|
|
|
167
188
|
<span className="inline-flex items-center gap-2 rounded-full border border-lime-500 bg-black/70 px-4 py-1.5 text-xs text-lime-100">
|
|
168
189
|
{/* TODO: Reconnect Badge/AnimatedShinyText if this project provides them. */}
|
|
169
190
|
<ChipIcon className="mr-2 h-3.5 w-3.5" />
|
|
170
|
-
{
|
|
191
|
+
{resolvedBadge}
|
|
171
192
|
</span>
|
|
172
193
|
</motion.div>
|
|
173
194
|
)}
|
|
174
195
|
|
|
175
196
|
{/* Headline */}
|
|
176
197
|
{/* <h1 className="text-5xl md:text-6xl lg:text-7xl font-semibold text-stone-900 dark:text-stone-50 leading-[1.05] tracking-tight mb-6">
|
|
177
|
-
{
|
|
198
|
+
{resolvedHeadlineMain}
|
|
178
199
|
<br />
|
|
179
|
-
<span className="text-stone-400">{
|
|
200
|
+
<span className="text-stone-400">{resolvedHeadlineAccent}</span>
|
|
180
201
|
</h1> */}
|
|
181
202
|
|
|
182
203
|
{/* Headline */}
|
|
@@ -190,9 +211,9 @@ export const DDHero: React.FC<DDHeroProps> = ({
|
|
|
190
211
|
transition={{ duration: 0.6, ease: 'easeOut' }}
|
|
191
212
|
style={{ filter: 'drop-shadow(3px 3px 1px #151515)' }}
|
|
192
213
|
>
|
|
193
|
-
<span className="block text-
|
|
214
|
+
<span className="block text-left text-5xl font-semibold tracking-tight text-lime-300 drop-shadow-lg sm:text-6xl md:text-7xl">
|
|
194
215
|
{/* TODO: Reconnect SplittingText animation if this project provides it. */}
|
|
195
|
-
{
|
|
216
|
+
{resolvedHeadlineMain}
|
|
196
217
|
</span>
|
|
197
218
|
</motion.div>
|
|
198
219
|
<motion.div
|
|
@@ -205,16 +226,18 @@ export const DDHero: React.FC<DDHeroProps> = ({
|
|
|
205
226
|
transition={{ duration: 0.6, ease: 'easeOut' }}
|
|
206
227
|
style={{ filter: 'drop-shadow(3px 3px 1px #151515)' }}
|
|
207
228
|
>
|
|
208
|
-
<span className="block text-
|
|
229
|
+
<span className="block text-left text-5xl font-semibold tracking-tight text-stone-50 drop-shadow-lg sm:text-6xl md:text-7xl">
|
|
209
230
|
{/* TODO: Reconnect SplittingText animation if this project provides it. */}
|
|
210
|
-
{
|
|
231
|
+
{resolvedHeadlineAccent}
|
|
211
232
|
</span>
|
|
212
233
|
</motion.div>
|
|
213
234
|
|
|
214
235
|
{/* Description */}
|
|
215
236
|
<TextFade direction="down" className="mt-10" delay={0.5}>
|
|
216
|
-
{
|
|
217
|
-
<p className="
|
|
237
|
+
{resolvedDescription && (
|
|
238
|
+
<p className="mt-4 mb-0 max-w-2xl text-lg leading-relaxed text-stone-50/75">
|
|
239
|
+
{resolvedDescription}
|
|
240
|
+
</p>
|
|
218
241
|
)}
|
|
219
242
|
</TextFade>
|
|
220
243
|
|
|
@@ -256,7 +279,7 @@ export const DDHero: React.FC<DDHeroProps> = ({
|
|
|
256
279
|
href={(button as any).href ?? '#'}
|
|
257
280
|
className={
|
|
258
281
|
button.class ??
|
|
259
|
-
'inline-flex items-center gap-
|
|
282
|
+
'inline-flex items-center justify-center gap-2 rounded-full bg-lime-400 px-5 py-2.5 text-sm font-semibold text-stone-950 shadow-[0_0_28px_rgba(132,204,22,0.35)] transition-all duration-150 hover:bg-lime-300 hover:scale-[1.03] whitespace-nowrap'
|
|
260
283
|
}
|
|
261
284
|
style={{ cornerShape: 'squircle' } as React.CSSProperties}
|
|
262
285
|
>
|