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,379 @@
|
|
|
1
|
+
import type { Block } from 'payload'
|
|
2
|
+
|
|
3
|
+
export const DDLottie: Block = {
|
|
4
|
+
slug: 'DD-Lottie',
|
|
5
|
+
interfaceName: 'DDLottie',
|
|
6
|
+
labels: {
|
|
7
|
+
singular: 'Lottie Animation',
|
|
8
|
+
plural: 'Lottie Animations'
|
|
9
|
+
},
|
|
10
|
+
fields: [
|
|
11
|
+
// Block identification
|
|
12
|
+
{
|
|
13
|
+
admin: {
|
|
14
|
+
initCollapsed: false,
|
|
15
|
+
className: 'custom-css-class block-identification'
|
|
16
|
+
},
|
|
17
|
+
type: 'collapsible',
|
|
18
|
+
label: 'Block Settings',
|
|
19
|
+
fields: [
|
|
20
|
+
{
|
|
21
|
+
name: 'blockName',
|
|
22
|
+
type: 'text',
|
|
23
|
+
required: false,
|
|
24
|
+
label: 'Block Name',
|
|
25
|
+
admin: {
|
|
26
|
+
description: 'Optional: Give this block a name for easier identification in admin.',
|
|
27
|
+
placeholder: 'e.g., "Loading Animation", "Hero Animation"'
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
// File format + upload
|
|
34
|
+
{
|
|
35
|
+
type: 'row',
|
|
36
|
+
fields: [
|
|
37
|
+
{
|
|
38
|
+
name: 'format',
|
|
39
|
+
type: 'select',
|
|
40
|
+
required: true,
|
|
41
|
+
label: 'File Format',
|
|
42
|
+
defaultValue: 'json',
|
|
43
|
+
options: [
|
|
44
|
+
{ label: 'Lottie JSON (.json)', value: 'json' },
|
|
45
|
+
// !!TODO: .lottie filetype fail to upload in production. Check allowed filetype despite already listed in media collection and next.config.js
|
|
46
|
+
{ label: 'DotLottie (.lottie)', value: 'lottie' }
|
|
47
|
+
],
|
|
48
|
+
admin: {
|
|
49
|
+
width: '50%',
|
|
50
|
+
description: 'Select the format so the correct player is used.'
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'lottieFile',
|
|
55
|
+
type: 'upload',
|
|
56
|
+
relationTo: 'media',
|
|
57
|
+
required: true,
|
|
58
|
+
label: 'Lottie File',
|
|
59
|
+
admin: {
|
|
60
|
+
width: '50%',
|
|
61
|
+
description:
|
|
62
|
+
'Upload a .json (Lottie) or .lottie (DotLottie) file from the media library.'
|
|
63
|
+
},
|
|
64
|
+
filterOptions: (options) => {
|
|
65
|
+
// siblingData is unknown, so we need to safely extract format
|
|
66
|
+
const siblingData = options?.siblingData as { format?: string } | undefined
|
|
67
|
+
const format = siblingData?.format
|
|
68
|
+
|
|
69
|
+
// NOTE:
|
|
70
|
+
// .lottie is a ZIP container (common upload mimetypes vary)
|
|
71
|
+
// We allow zip/octet-stream for dotlottie.
|
|
72
|
+
if (format === 'lottie') {
|
|
73
|
+
return {
|
|
74
|
+
mimeType: {
|
|
75
|
+
in: [
|
|
76
|
+
'application/zip',
|
|
77
|
+
'application/octet-stream',
|
|
78
|
+
'application/x-zip-compressed',
|
|
79
|
+
// spec value can appear depending on uploader / server
|
|
80
|
+
'application/zip+dotlottie'
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// JSON only
|
|
87
|
+
return {
|
|
88
|
+
mimeType: {
|
|
89
|
+
in: ['application/json']
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
// Animation controls
|
|
98
|
+
{
|
|
99
|
+
admin: {
|
|
100
|
+
initCollapsed: true,
|
|
101
|
+
className: 'animation-controls'
|
|
102
|
+
},
|
|
103
|
+
type: 'collapsible',
|
|
104
|
+
label: 'Animation Controls',
|
|
105
|
+
fields: [
|
|
106
|
+
{
|
|
107
|
+
type: 'row',
|
|
108
|
+
fields: [
|
|
109
|
+
{
|
|
110
|
+
name: 'autoplay',
|
|
111
|
+
type: 'checkbox',
|
|
112
|
+
label: 'Autoplay',
|
|
113
|
+
defaultValue: true,
|
|
114
|
+
admin: {
|
|
115
|
+
description: 'Start animation automatically when the component loads.',
|
|
116
|
+
width: '25%'
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'loop',
|
|
121
|
+
type: 'checkbox',
|
|
122
|
+
label: 'Loop',
|
|
123
|
+
defaultValue: true,
|
|
124
|
+
admin: {
|
|
125
|
+
description: 'Repeat the animation continuously.',
|
|
126
|
+
width: '25%'
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: 'controls',
|
|
131
|
+
type: 'checkbox',
|
|
132
|
+
label: 'Show Controls',
|
|
133
|
+
defaultValue: false,
|
|
134
|
+
admin: {
|
|
135
|
+
description: 'Display play/pause controls for the animation.',
|
|
136
|
+
width: '25%'
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'hover',
|
|
141
|
+
type: 'checkbox',
|
|
142
|
+
label: 'Play on Hover',
|
|
143
|
+
defaultValue: false,
|
|
144
|
+
admin: {
|
|
145
|
+
description: 'Play animation only when hovering over it.',
|
|
146
|
+
width: '25%'
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'row',
|
|
153
|
+
fields: [
|
|
154
|
+
{
|
|
155
|
+
name: 'speed',
|
|
156
|
+
type: 'number',
|
|
157
|
+
label: 'Animation Speed',
|
|
158
|
+
defaultValue: 1,
|
|
159
|
+
min: 0.1,
|
|
160
|
+
max: 50,
|
|
161
|
+
admin: {
|
|
162
|
+
description: 'Speed multiplier for the animation (0.1 = slow, 5 = very fast).',
|
|
163
|
+
step: 0.1,
|
|
164
|
+
width: '50%'
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: 'direction',
|
|
169
|
+
type: 'select',
|
|
170
|
+
label: 'Direction',
|
|
171
|
+
options: [
|
|
172
|
+
{ label: 'Forward', value: '1' },
|
|
173
|
+
{ label: 'Reverse', value: '-1' }
|
|
174
|
+
],
|
|
175
|
+
defaultValue: '1',
|
|
176
|
+
admin: {
|
|
177
|
+
description: 'Animation playback direction.',
|
|
178
|
+
width: '50%'
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
// Sizing and positioning
|
|
187
|
+
{
|
|
188
|
+
admin: {
|
|
189
|
+
initCollapsed: true,
|
|
190
|
+
className: 'custom-css-class sizing-positioning'
|
|
191
|
+
},
|
|
192
|
+
type: 'collapsible',
|
|
193
|
+
label: 'Size & Position',
|
|
194
|
+
fields: [
|
|
195
|
+
{
|
|
196
|
+
type: 'row',
|
|
197
|
+
fields: [
|
|
198
|
+
{
|
|
199
|
+
name: 'width',
|
|
200
|
+
type: 'text',
|
|
201
|
+
label: 'Width',
|
|
202
|
+
admin: {
|
|
203
|
+
description: 'CSS width value (e.g., "300px", "50%", "100vw").',
|
|
204
|
+
placeholder: '300px',
|
|
205
|
+
width: '50%'
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'height',
|
|
210
|
+
type: 'text',
|
|
211
|
+
label: 'Height',
|
|
212
|
+
admin: {
|
|
213
|
+
description: 'CSS height value (e.g., "300px", "50vh", "auto").',
|
|
214
|
+
placeholder: '300px',
|
|
215
|
+
width: '50%'
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
]
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: 'objectFit',
|
|
222
|
+
type: 'select',
|
|
223
|
+
label: 'Object Fit',
|
|
224
|
+
options: [
|
|
225
|
+
{ label: 'Fill', value: 'fill' },
|
|
226
|
+
{ label: 'Contain', value: 'contain' },
|
|
227
|
+
{ label: 'Cover', value: 'cover' },
|
|
228
|
+
{ label: 'None', value: 'none' },
|
|
229
|
+
{ label: 'Scale Down', value: 'scale-down' }
|
|
230
|
+
],
|
|
231
|
+
defaultValue: 'contain',
|
|
232
|
+
admin: {
|
|
233
|
+
description: 'How the animation should fit within its container.'
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
|
|
239
|
+
// Trigger options
|
|
240
|
+
{
|
|
241
|
+
admin: {
|
|
242
|
+
initCollapsed: true,
|
|
243
|
+
className: 'custom-css-class trigger-options'
|
|
244
|
+
},
|
|
245
|
+
type: 'collapsible',
|
|
246
|
+
label: 'Trigger Options',
|
|
247
|
+
fields: [
|
|
248
|
+
{
|
|
249
|
+
name: 'playOnScroll',
|
|
250
|
+
type: 'checkbox',
|
|
251
|
+
label: 'Play on Scroll Into View',
|
|
252
|
+
defaultValue: false,
|
|
253
|
+
admin: {
|
|
254
|
+
description: 'Start animation when the element comes into view.'
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
name: 'scrollBehavior',
|
|
259
|
+
type: 'select',
|
|
260
|
+
label: 'Scroll Behavior',
|
|
261
|
+
options: [
|
|
262
|
+
{ label: 'Play Once', value: 'once' },
|
|
263
|
+
{ label: 'Play Every Time', value: 'always' },
|
|
264
|
+
{ label: 'Sync with Scroll', value: 'sync' }
|
|
265
|
+
],
|
|
266
|
+
defaultValue: 'once',
|
|
267
|
+
admin: {
|
|
268
|
+
description: 'How the animation behaves with scrolling.',
|
|
269
|
+
condition: (data, siblingData) => siblingData.playOnScroll
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
type: 'row',
|
|
274
|
+
admin: {
|
|
275
|
+
condition: (data, siblingData) =>
|
|
276
|
+
siblingData.playOnScroll && siblingData.scrollBehavior === 'sync'
|
|
277
|
+
},
|
|
278
|
+
fields: [
|
|
279
|
+
{
|
|
280
|
+
name: 'scrollStart',
|
|
281
|
+
type: 'number',
|
|
282
|
+
label: 'Scroll Start (%)',
|
|
283
|
+
defaultValue: 0,
|
|
284
|
+
min: 0,
|
|
285
|
+
max: 100,
|
|
286
|
+
admin: {
|
|
287
|
+
description: 'When to start the animation based on scroll position (0-100%).',
|
|
288
|
+
width: '50%'
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
name: 'scrollEnd',
|
|
293
|
+
type: 'number',
|
|
294
|
+
label: 'Scroll End (%)',
|
|
295
|
+
defaultValue: 100,
|
|
296
|
+
min: 0,
|
|
297
|
+
max: 100,
|
|
298
|
+
admin: {
|
|
299
|
+
description: 'When to end the animation based on scroll position (0-100%).',
|
|
300
|
+
width: '50%'
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
}
|
|
305
|
+
]
|
|
306
|
+
},
|
|
307
|
+
|
|
308
|
+
// Styling
|
|
309
|
+
{
|
|
310
|
+
admin: {
|
|
311
|
+
initCollapsed: true,
|
|
312
|
+
className: 'styling-options'
|
|
313
|
+
},
|
|
314
|
+
type: 'collapsible',
|
|
315
|
+
label: 'Styling',
|
|
316
|
+
fields: [
|
|
317
|
+
{
|
|
318
|
+
name: 'containerClass',
|
|
319
|
+
type: 'text',
|
|
320
|
+
label: 'Container CSS Classes',
|
|
321
|
+
admin: {
|
|
322
|
+
description: 'Custom CSS classes for the animation container.',
|
|
323
|
+
placeholder: 'mx-auto p-4 bg-white rounded-sm'
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: 'customCSS',
|
|
328
|
+
type: 'code',
|
|
329
|
+
label: 'Custom CSS',
|
|
330
|
+
admin: {
|
|
331
|
+
language: 'css',
|
|
332
|
+
description: 'Paste any CSS rules that should apply only to this Lottie block.'
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
]
|
|
336
|
+
},
|
|
337
|
+
|
|
338
|
+
// Accessibility
|
|
339
|
+
{
|
|
340
|
+
admin: {
|
|
341
|
+
initCollapsed: true,
|
|
342
|
+
className: 'accessibility-options'
|
|
343
|
+
},
|
|
344
|
+
type: 'collapsible',
|
|
345
|
+
label: 'Accessibility',
|
|
346
|
+
fields: [
|
|
347
|
+
{
|
|
348
|
+
name: 'alt',
|
|
349
|
+
type: 'text',
|
|
350
|
+
label: 'Alt Text',
|
|
351
|
+
admin: {
|
|
352
|
+
description: 'Alternative text description for screen readers.',
|
|
353
|
+
placeholder: 'Loading animation'
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
name: 'title',
|
|
358
|
+
type: 'text',
|
|
359
|
+
label: 'Title',
|
|
360
|
+
admin: {
|
|
361
|
+
description: 'Title attribute for the animation.',
|
|
362
|
+
placeholder: 'Interactive loading animation'
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
name: 'reducedMotion',
|
|
367
|
+
type: 'checkbox',
|
|
368
|
+
label: 'Respect Reduced Motion',
|
|
369
|
+
defaultValue: true,
|
|
370
|
+
admin: {
|
|
371
|
+
description: 'Pause animation for users who prefer reduced motion.'
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
]
|
|
375
|
+
}
|
|
376
|
+
]
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
export default DDLottie
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { DDLottie as LottieBlock } from './Component'
|
|
3
|
+
import type { LottieBlockProps } from './Component'
|
|
4
|
+
import FadeUpOnInView from '@/components/ui/anims/FadeUpOnInView'
|
|
5
|
+
|
|
6
|
+
export interface LottieBlockPayloadProps extends Omit<LottieBlockProps, 'lottieFile'> {
|
|
7
|
+
lottieFile?: any // Payload media object
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const LottieBlockWrapper: React.FC<LottieBlockPayloadProps> = (props) => {
|
|
11
|
+
// Handle case where no lottie file is provided
|
|
12
|
+
if (!props.lottieFile) {
|
|
13
|
+
return (
|
|
14
|
+
<div className="lottie-block lottie-error">
|
|
15
|
+
<div className="lottie-placeholder">No Lottie file selected</div>
|
|
16
|
+
</div>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<FadeUpOnInView delay={0.1} className="fadeup">
|
|
22
|
+
<LottieBlock {...props} lottieFile={props.lottieFile} />
|
|
23
|
+
</FadeUpOnInView>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default LottieBlockWrapper
|
|
28
|
+
export { LottieBlock, type LottieBlockProps }
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-Lottie",
|
|
4
|
+
"label": "Lottie",
|
|
5
|
+
"sourceName": "LottieBlock",
|
|
6
|
+
"portableName": "DD-Lottie",
|
|
7
|
+
"slug": "DD-Lottie",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/ROUND-TWO-CONVERSION/LottieBlock",
|
|
12
|
+
"originalSlug": "lottieBlock",
|
|
13
|
+
"originalConfigExport": "LottieBlock",
|
|
14
|
+
"originalComponentExport": "LottieBlock",
|
|
15
|
+
"originalInterfaceName": "DDLottie"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-Lottie/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-Lottie/config.ts"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [
|
|
28
|
+
"lottie-web",
|
|
29
|
+
"framer-motion"
|
|
30
|
+
],
|
|
31
|
+
"sharedFiles": [
|
|
32
|
+
{
|
|
33
|
+
"from": "templates/shared/src/components/ui/anims",
|
|
34
|
+
"to": "src/components/ui/anims",
|
|
35
|
+
"required": true,
|
|
36
|
+
"safeToCopy": true
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"requiredProjectFiles": [],
|
|
40
|
+
"optionalProjectFiles": [],
|
|
41
|
+
"collectionRegistration": {
|
|
42
|
+
"enabled": true,
|
|
43
|
+
"collections": [
|
|
44
|
+
"Pages",
|
|
45
|
+
"Posts"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"renderBlocksRegistration": {
|
|
49
|
+
"enabled": true
|
|
50
|
+
},
|
|
51
|
+
"renderBlocksBehavior": {
|
|
52
|
+
"wrapperless": false
|
|
53
|
+
},
|
|
54
|
+
"pageRouteIntegration": {
|
|
55
|
+
"required": false,
|
|
56
|
+
"manualSteps": []
|
|
57
|
+
},
|
|
58
|
+
"manual": [
|
|
59
|
+
"Register DDLottie in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
60
|
+
"Register DD-Lottie in RenderBlocks if automatic registration was skipped.",
|
|
61
|
+
"Run payload generate:types after schema changes."
|
|
62
|
+
],
|
|
63
|
+
"manualSteps": [
|
|
64
|
+
"Register DDLottie in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
65
|
+
"Register DD-Lottie in RenderBlocks if automatic registration was skipped.",
|
|
66
|
+
"Run payload generate:types after schema changes."
|
|
67
|
+
],
|
|
68
|
+
"patchTargets": {
|
|
69
|
+
"blockConfigRegistration": {
|
|
70
|
+
"description": "Installer can add import { DDLottie } from '@/blocks/DD-Lottie/config' and add DDLottie to clear Pages/Posts block arrays."
|
|
71
|
+
},
|
|
72
|
+
"renderBlocksRegistration": {
|
|
73
|
+
"description": "Installer can register DD-Lottie in RenderBlocks."
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"notes": [
|
|
77
|
+
"Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
|
|
78
|
+
"Project-specific imports were replaced with local, dependency-light rendering where required.",
|
|
79
|
+
"Manifest includes shared local support files required by original DesignsDusted source imports."
|
|
80
|
+
],
|
|
81
|
+
"exportName": "DDLottie",
|
|
82
|
+
"interfaceName": "DDLottie"
|
|
83
|
+
}
|