blocks-dusted 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -0
- package/package.json +5 -2
- package/src/cli.js +39 -3
- package/src/commands/shop.js +59 -0
- package/src/commands/warehouse.js +73 -0
- 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 +535 -535
- 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 +140 -140
- 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 +435 -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 +297 -297
- package/templates/blocks/DD-Hero/config.ts +267 -267
- package/templates/blocks/DD-HorizontalScroll/Component.tsx +936 -936
- 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 +133 -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 +545 -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 +2 -5
- package/templates/blocks/DD-Process/Component.tsx +2 -4
- package/templates/blocks/DD-Process/config.ts +150 -150
- package/templates/blocks/DD-Progress/Component.tsx +156 -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 +1 -1
- package/templates/blocks/DD-StackCards/Component.tsx +1 -1
- 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 +174 -174
- 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 +139 -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 +501 -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 +143 -0
- package/templates/blocks/DDHG-LogoMarquee/config.ts +154 -0
- package/templates/blocks/DDHG-LogoMarquee/manifest.json +39 -0
- package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +227 -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 +574 -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 +390 -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 +169 -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,90 @@
|
|
|
1
|
+
import type { Block } from 'payload'
|
|
2
|
+
|
|
3
|
+
export const DDLineAnim: Block = {
|
|
4
|
+
slug: 'DD-LineAnim',
|
|
5
|
+
interfaceName: 'DDLineAnim',
|
|
6
|
+
labels: {
|
|
7
|
+
singular: 'Line Animation',
|
|
8
|
+
plural: 'Line Animations'
|
|
9
|
+
},
|
|
10
|
+
fields: [
|
|
11
|
+
{
|
|
12
|
+
type: 'row',
|
|
13
|
+
fields: [
|
|
14
|
+
{
|
|
15
|
+
name: 'direction',
|
|
16
|
+
type: 'select',
|
|
17
|
+
label: 'Animation Direction',
|
|
18
|
+
defaultValue: 'left-to-right',
|
|
19
|
+
options: [
|
|
20
|
+
{ label: 'Left to Right', value: 'left-to-right' },
|
|
21
|
+
{ label: 'Right to Left', value: 'right-to-left' },
|
|
22
|
+
{ label: 'Top to Bottom', value: 'top-to-bottom' },
|
|
23
|
+
{ label: 'Bottom to Top', value: 'bottom-to-top' }
|
|
24
|
+
],
|
|
25
|
+
required: true,
|
|
26
|
+
admin: {
|
|
27
|
+
width: '50%'
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'trigger',
|
|
32
|
+
type: 'select',
|
|
33
|
+
label: 'Animation Trigger',
|
|
34
|
+
defaultValue: 'scroll',
|
|
35
|
+
options: [
|
|
36
|
+
{ label: 'On Scroll', value: 'scroll' },
|
|
37
|
+
{ label: 'Immediate', value: 'immediate' }
|
|
38
|
+
],
|
|
39
|
+
required: true,
|
|
40
|
+
admin: {
|
|
41
|
+
width: '50%'
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'row',
|
|
48
|
+
fields: [
|
|
49
|
+
{
|
|
50
|
+
name: 'duration',
|
|
51
|
+
type: 'number',
|
|
52
|
+
label: 'Duration (seconds)',
|
|
53
|
+
defaultValue: 1,
|
|
54
|
+
min: 0.1,
|
|
55
|
+
max: 20,
|
|
56
|
+
required: true,
|
|
57
|
+
admin: {
|
|
58
|
+
width: '50%',
|
|
59
|
+
description: 'Animation duration in seconds. Range: 0.1 to 20',
|
|
60
|
+
step: 0.1
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'delay',
|
|
65
|
+
type: 'number',
|
|
66
|
+
label: 'Delay (seconds)',
|
|
67
|
+
defaultValue: 0,
|
|
68
|
+
min: 0,
|
|
69
|
+
max: 6,
|
|
70
|
+
required: false,
|
|
71
|
+
admin: {
|
|
72
|
+
width: '50%',
|
|
73
|
+
description: 'Delay before animation starts',
|
|
74
|
+
step: 0.1
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'customClass',
|
|
81
|
+
type: 'text',
|
|
82
|
+
label: 'Custom CSS Class',
|
|
83
|
+
defaultValue: 'border border-border',
|
|
84
|
+
required: false,
|
|
85
|
+
admin: {
|
|
86
|
+
description: 'Add custom Tailwind or CSS classes for styling'
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-LineAnim",
|
|
4
|
+
"label": "Line Animation",
|
|
5
|
+
"sourceName": "LineAnimBlock",
|
|
6
|
+
"portableName": "DD-LineAnim",
|
|
7
|
+
"slug": "DD-LineAnim",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/ROUND-TWO-CONVERSION/LineAnimBlock",
|
|
12
|
+
"originalSlug": "lineAnimBlock",
|
|
13
|
+
"originalConfigExport": "LineAnimBlock",
|
|
14
|
+
"originalComponentExport": "LineAnimBlock",
|
|
15
|
+
"originalInterfaceName": "DDLineAnim"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-LineAnim/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-LineAnim/config.ts"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [],
|
|
28
|
+
"sharedFiles": [
|
|
29
|
+
{
|
|
30
|
+
"from": "templates/shared/src/components/ui/anims",
|
|
31
|
+
"to": "src/components/ui/anims",
|
|
32
|
+
"required": true,
|
|
33
|
+
"safeToCopy": true
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"requiredProjectFiles": [],
|
|
37
|
+
"optionalProjectFiles": [],
|
|
38
|
+
"collectionRegistration": {
|
|
39
|
+
"enabled": true,
|
|
40
|
+
"collections": [
|
|
41
|
+
"Pages",
|
|
42
|
+
"Posts"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"renderBlocksRegistration": {
|
|
46
|
+
"enabled": true
|
|
47
|
+
},
|
|
48
|
+
"renderBlocksBehavior": {
|
|
49
|
+
"wrapperless": false
|
|
50
|
+
},
|
|
51
|
+
"pageRouteIntegration": {
|
|
52
|
+
"required": false,
|
|
53
|
+
"manualSteps": []
|
|
54
|
+
},
|
|
55
|
+
"manual": [
|
|
56
|
+
"Register DDLineAnim in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
57
|
+
"Register DD-LineAnim in RenderBlocks if automatic registration was skipped.",
|
|
58
|
+
"Run payload generate:types after schema changes."
|
|
59
|
+
],
|
|
60
|
+
"manualSteps": [
|
|
61
|
+
"Register DDLineAnim in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
62
|
+
"Register DD-LineAnim in RenderBlocks if automatic registration was skipped.",
|
|
63
|
+
"Run payload generate:types after schema changes."
|
|
64
|
+
],
|
|
65
|
+
"patchTargets": {
|
|
66
|
+
"blockConfigRegistration": {
|
|
67
|
+
"description": "Installer can add import { DDLineAnim } from '@/blocks/DD-LineAnim/config' and add DDLineAnim to clear Pages/Posts block arrays."
|
|
68
|
+
},
|
|
69
|
+
"renderBlocksRegistration": {
|
|
70
|
+
"description": "Installer can register DD-LineAnim in RenderBlocks."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"notes": [
|
|
74
|
+
"Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
|
|
75
|
+
"Project-specific imports were replaced with local, dependency-light rendering where required.",
|
|
76
|
+
"Manifest includes shared local support files required by original DesignsDusted source imports."
|
|
77
|
+
],
|
|
78
|
+
"exportName": "DDLineAnim",
|
|
79
|
+
"interfaceName": "DDLineAnim"
|
|
80
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import Link from 'next/link'
|
|
5
|
+
import { motion, type Variants } from 'framer-motion'
|
|
6
|
+
type LinkGridItem = { id?: string | null; label?: string | null; path: string }
|
|
7
|
+
type LinkGridCard = { id?: string | null; title?: string | null; titleHref?: string | null; links: LinkGridItem[] }
|
|
8
|
+
type LinkGridCardsProps = { cards?: LinkGridCard[] | null }
|
|
9
|
+
|
|
10
|
+
const listVariants: Variants = {
|
|
11
|
+
hidden: {},
|
|
12
|
+
visible: {
|
|
13
|
+
transition: {
|
|
14
|
+
staggerChildren: 0.08,
|
|
15
|
+
delayChildren: 0.1
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const itemVariants: Variants = {
|
|
21
|
+
hidden: {
|
|
22
|
+
opacity: 0,
|
|
23
|
+
y: 14
|
|
24
|
+
},
|
|
25
|
+
visible: {
|
|
26
|
+
opacity: 1,
|
|
27
|
+
y: 0,
|
|
28
|
+
transition: {
|
|
29
|
+
duration: 0.45,
|
|
30
|
+
ease: 'easeOut'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const DDLinkGrid: React.FC<LinkGridCardsProps> = ({ cards }) => {
|
|
36
|
+
if (!cards || cards.length === 0) return null
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<motion.div
|
|
40
|
+
className="mx-auto grid w-full max-w-4xl grid-cols-1 justify-center gap-8 overflow-hidden p-4 sm:grid-cols-2 lg:flex lg:flex-wrap lg:items-start lg:justify-center"
|
|
41
|
+
variants={listVariants}
|
|
42
|
+
initial="hidden"
|
|
43
|
+
whileInView="visible"
|
|
44
|
+
viewport={{ once: true, amount: 0.25 }}
|
|
45
|
+
>
|
|
46
|
+
{cards.map((card: LinkGridCard, index: number) => (
|
|
47
|
+
<motion.div
|
|
48
|
+
key={card.id ?? index}
|
|
49
|
+
variants={itemVariants}
|
|
50
|
+
className="flex flex-col justify-start items-start w-full max-w-fit"
|
|
51
|
+
>
|
|
52
|
+
<h3 className="mb-2 lg:mb-4 px-1 scale-100 w-full !text-[0.875rem] !font-normal !text-lime-500/80 hover:!text-lime-500 transition-all duration-100">
|
|
53
|
+
{card.titleHref ? <Link href={card.titleHref}>{card.title}</Link> : card.title}
|
|
54
|
+
</h3>
|
|
55
|
+
|
|
56
|
+
<ul className="m-0 flex list-none flex-col p-0">
|
|
57
|
+
{card.links.map((item: LinkGridItem, linkIndex: number) => (
|
|
58
|
+
<motion.li
|
|
59
|
+
key={item.id ?? linkIndex}
|
|
60
|
+
variants={itemVariants}
|
|
61
|
+
className="list-none border-l border-stone-100/5 ml-1 py-1 my-0"
|
|
62
|
+
>
|
|
63
|
+
<motion.div initial="rest" whileHover="hover" animate="rest" className="inline-block">
|
|
64
|
+
<Link
|
|
65
|
+
href={item.path}
|
|
66
|
+
className="group linkGridCard_link relative inline-flex items-start overflow-hidden text-sm !font-normal text-stone-300/80 transition-all duration-300"
|
|
67
|
+
>
|
|
68
|
+
{/* dash */}
|
|
69
|
+
<span className="inline-block w-[0.9em] mr-[0.35rem] overflow-hidden">
|
|
70
|
+
<motion.span
|
|
71
|
+
aria-hidden="true"
|
|
72
|
+
className="inline-block text-lime-500"
|
|
73
|
+
variants={{
|
|
74
|
+
rest: { opacity: 0, x: -8 },
|
|
75
|
+
hover: { opacity: 1, x: 0 }
|
|
76
|
+
}}
|
|
77
|
+
transition={{ duration: 0.25, ease: 'easeOut' }}
|
|
78
|
+
>
|
|
79
|
+
—
|
|
80
|
+
</motion.span>
|
|
81
|
+
</span>
|
|
82
|
+
|
|
83
|
+
{/* text wrapper */}
|
|
84
|
+
<span className="relative inline-block overflow-hidden">
|
|
85
|
+
{/* base text */}
|
|
86
|
+
<span className="block text-stone-300/80 transition-opacity duration-300 group-hover:opacity-0">
|
|
87
|
+
{item.label}
|
|
88
|
+
</span>
|
|
89
|
+
|
|
90
|
+
{/* animated fill text */}
|
|
91
|
+
<motion.span
|
|
92
|
+
className="absolute inset-0 block whitespace-nowrap text-violet-500"
|
|
93
|
+
variants={{
|
|
94
|
+
rest: {
|
|
95
|
+
clipPath: 'inset(0 100% 0 0)'
|
|
96
|
+
},
|
|
97
|
+
hover: {
|
|
98
|
+
clipPath: 'inset(0 0% 0 0)'
|
|
99
|
+
}
|
|
100
|
+
}}
|
|
101
|
+
transition={{
|
|
102
|
+
duration: 0.45,
|
|
103
|
+
ease: [0.22, 1, 0.36, 1]
|
|
104
|
+
}}
|
|
105
|
+
>
|
|
106
|
+
{item.label}
|
|
107
|
+
</motion.span>
|
|
108
|
+
</span>
|
|
109
|
+
</Link>
|
|
110
|
+
</motion.div>
|
|
111
|
+
</motion.li>
|
|
112
|
+
))}
|
|
113
|
+
</ul>
|
|
114
|
+
</motion.div>
|
|
115
|
+
))}
|
|
116
|
+
</motion.div>
|
|
117
|
+
)
|
|
118
|
+
}
|
|
119
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Block } from 'payload'
|
|
2
|
+
|
|
3
|
+
export const DDLinkGrid: Block = {
|
|
4
|
+
slug: 'DD-LinkGrid',
|
|
5
|
+
interfaceName: 'DDLinkGrid',
|
|
6
|
+
labels: {
|
|
7
|
+
singular: 'Link Grid Cards',
|
|
8
|
+
plural: 'Link Grid Cards'
|
|
9
|
+
},
|
|
10
|
+
fields: [
|
|
11
|
+
{
|
|
12
|
+
name: 'cards',
|
|
13
|
+
type: 'array',
|
|
14
|
+
label: 'Cards',
|
|
15
|
+
minRows: 1,
|
|
16
|
+
fields: [
|
|
17
|
+
{
|
|
18
|
+
name: 'title',
|
|
19
|
+
type: 'text',
|
|
20
|
+
label: 'Heading',
|
|
21
|
+
required: true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'titleHref',
|
|
25
|
+
type: 'text',
|
|
26
|
+
label: 'Heading Link (href)'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'links',
|
|
30
|
+
type: 'array',
|
|
31
|
+
label: 'Links',
|
|
32
|
+
minRows: 1,
|
|
33
|
+
fields: [
|
|
34
|
+
{
|
|
35
|
+
name: 'label',
|
|
36
|
+
type: 'text',
|
|
37
|
+
label: 'Label',
|
|
38
|
+
required: true
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'path',
|
|
42
|
+
type: 'text',
|
|
43
|
+
label: 'Path',
|
|
44
|
+
required: true
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-LinkGrid",
|
|
4
|
+
"label": "Link Grid",
|
|
5
|
+
"sourceName": "LinkGridCards",
|
|
6
|
+
"portableName": "DD-LinkGrid",
|
|
7
|
+
"slug": "DD-LinkGrid",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/ROUND-TWO-CONVERSION/LinkGridCards",
|
|
12
|
+
"originalSlug": "linkGridCards",
|
|
13
|
+
"originalConfigExport": "LinkGridCards",
|
|
14
|
+
"originalComponentExport": "LinkGridCards",
|
|
15
|
+
"originalInterfaceName": "DDLinkGrid"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-LinkGrid/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-LinkGrid/config.ts"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [
|
|
28
|
+
"framer-motion"
|
|
29
|
+
],
|
|
30
|
+
"sharedFiles": [],
|
|
31
|
+
"requiredProjectFiles": [],
|
|
32
|
+
"optionalProjectFiles": [],
|
|
33
|
+
"collectionRegistration": {
|
|
34
|
+
"enabled": true,
|
|
35
|
+
"collections": [
|
|
36
|
+
"Pages",
|
|
37
|
+
"Posts"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"renderBlocksRegistration": {
|
|
41
|
+
"enabled": true
|
|
42
|
+
},
|
|
43
|
+
"renderBlocksBehavior": {
|
|
44
|
+
"wrapperless": false
|
|
45
|
+
},
|
|
46
|
+
"pageRouteIntegration": {
|
|
47
|
+
"required": false,
|
|
48
|
+
"manualSteps": []
|
|
49
|
+
},
|
|
50
|
+
"manual": [
|
|
51
|
+
"Register DDLinkGrid in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
52
|
+
"Register DD-LinkGrid in RenderBlocks if automatic registration was skipped.",
|
|
53
|
+
"Run payload generate:types after schema changes."
|
|
54
|
+
],
|
|
55
|
+
"manualSteps": [
|
|
56
|
+
"Register DDLinkGrid in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
57
|
+
"Register DD-LinkGrid in RenderBlocks if automatic registration was skipped.",
|
|
58
|
+
"Run payload generate:types after schema changes."
|
|
59
|
+
],
|
|
60
|
+
"patchTargets": {
|
|
61
|
+
"blockConfigRegistration": {
|
|
62
|
+
"description": "Installer can add import { DDLinkGrid } from '@/blocks/DD-LinkGrid/config' and add DDLinkGrid to clear Pages/Posts block arrays."
|
|
63
|
+
},
|
|
64
|
+
"renderBlocksRegistration": {
|
|
65
|
+
"description": "Installer can register DD-LinkGrid in RenderBlocks."
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"notes": [
|
|
69
|
+
"Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
|
|
70
|
+
"Project-specific imports were replaced with local, dependency-light rendering where required."
|
|
71
|
+
],
|
|
72
|
+
"exportName": "DDLinkGrid",
|
|
73
|
+
"interfaceName": "DDLinkGrid"
|
|
74
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import React, { useMemo, useState } from 'react'
|
|
4
|
+
import Image from 'next/image'
|
|
5
|
+
import { cn } from '@/utilities/ui'
|
|
6
|
+
import { Separator } from '@/components/ui/separator'
|
|
7
|
+
|
|
8
|
+
const placeholderBlur =
|
|
9
|
+
'data:image/svg+xml;base64,' +
|
|
10
|
+
btoa(
|
|
11
|
+
'<svg width="160" height="80" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="transparent"/></svg>'
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
export type LogoMarqueeProps = {
|
|
15
|
+
logos: {
|
|
16
|
+
image?: {
|
|
17
|
+
url?: string
|
|
18
|
+
alt?: string
|
|
19
|
+
} | null
|
|
20
|
+
imageClass?: string
|
|
21
|
+
imageStyle?: React.CSSProperties
|
|
22
|
+
imageAltClass?: string
|
|
23
|
+
}[]
|
|
24
|
+
speed?: number
|
|
25
|
+
spacing?: number
|
|
26
|
+
showTopDivider?: boolean
|
|
27
|
+
showBottomDivider?: boolean
|
|
28
|
+
containerClass?: string
|
|
29
|
+
itemWidth?: number
|
|
30
|
+
customCSS?: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const LogoImage: React.FC<{
|
|
34
|
+
src: string
|
|
35
|
+
alt?: string
|
|
36
|
+
customClass?: string
|
|
37
|
+
imageStyle?: React.CSSProperties
|
|
38
|
+
}> = ({ src, alt, customClass, imageStyle }) => {
|
|
39
|
+
const [imageError, setImageError] = useState(false)
|
|
40
|
+
const imageSrc = !src || imageError ? placeholderBlur : src
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<Image
|
|
44
|
+
src={imageSrc}
|
|
45
|
+
alt={alt || 'Logo'}
|
|
46
|
+
width={160}
|
|
47
|
+
height={72}
|
|
48
|
+
priority
|
|
49
|
+
className={cn('h-14 w-auto max-w-[140px] object-contain', customClass)}
|
|
50
|
+
style={imageStyle}
|
|
51
|
+
onError={() => setImageError(true)}
|
|
52
|
+
placeholder="blur"
|
|
53
|
+
blurDataURL={placeholderBlur}
|
|
54
|
+
/>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const DDLogoMarq: React.FC<LogoMarqueeProps> = ({
|
|
59
|
+
logos,
|
|
60
|
+
speed = 18,
|
|
61
|
+
spacing = 32,
|
|
62
|
+
showTopDivider = false,
|
|
63
|
+
showBottomDivider = false,
|
|
64
|
+
containerClass = 'py-8',
|
|
65
|
+
customCSS,
|
|
66
|
+
itemWidth = 190
|
|
67
|
+
}) => {
|
|
68
|
+
const validLogos = logos || []
|
|
69
|
+
const marqueeItems = useMemo(() => {
|
|
70
|
+
if (validLogos.length === 0) return []
|
|
71
|
+
const minimumItems = Math.max(validLogos.length, 6)
|
|
72
|
+
return Array.from({ length: minimumItems }, (_, index) => validLogos[index % validLogos.length])
|
|
73
|
+
}, [validLogos])
|
|
74
|
+
|
|
75
|
+
if (marqueeItems.length === 0) return null
|
|
76
|
+
|
|
77
|
+
const gap = Math.max(16, spacing)
|
|
78
|
+
|
|
79
|
+
const LogoTile = ({
|
|
80
|
+
logo,
|
|
81
|
+
index,
|
|
82
|
+
duplicate = false
|
|
83
|
+
}: {
|
|
84
|
+
logo: (typeof marqueeItems)[number]
|
|
85
|
+
index: number
|
|
86
|
+
duplicate?: boolean
|
|
87
|
+
}) => (
|
|
88
|
+
<div
|
|
89
|
+
key={(duplicate ? 'duplicate' : 'logo') + '-' + index}
|
|
90
|
+
className="marquee-logo-tile flex shrink-0 flex-col items-center justify-center rounded-2xl border border-white/10 bg-white/[0.035] px-5 py-4 shadow-[inset_0_1px_0_rgba(255,255,255,0.08)] backdrop-blur-sm"
|
|
91
|
+
style={{ width: itemWidth }}
|
|
92
|
+
>
|
|
93
|
+
<LogoImage
|
|
94
|
+
src={logo.image?.url || placeholderBlur}
|
|
95
|
+
alt={logo.image?.alt}
|
|
96
|
+
customClass={logo.imageClass}
|
|
97
|
+
imageStyle={logo.imageStyle}
|
|
98
|
+
/>
|
|
99
|
+
{logo.image?.alt && (
|
|
100
|
+
<p className={cn('mt-3 text-center text-sm font-medium leading-tight text-white/80', logo.imageAltClass)}>
|
|
101
|
+
{logo.image.alt}
|
|
102
|
+
</p>
|
|
103
|
+
)}
|
|
104
|
+
</div>
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
return (
|
|
108
|
+
<>
|
|
109
|
+
{showTopDivider && <Separator gradient className="border-seperator" />}
|
|
110
|
+
<section className="logo-marquee-block mx-auto flex min-h-[280px] w-full max-w-6xl items-center overflow-hidden">
|
|
111
|
+
{customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
|
|
112
|
+
<style>{
|
|
113
|
+
'@keyframes dd-logo-marquee { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-50%, 0, 0); } }' +
|
|
114
|
+
'.logo-marquee-track { animation: dd-logo-marquee var(--dd-logo-marquee-speed) linear infinite; }' +
|
|
115
|
+
'.logo-marquee-block:hover .logo-marquee-track { animation-play-state: paused; }'
|
|
116
|
+
}</style>
|
|
117
|
+
<div className={cn('relative w-full overflow-hidden', containerClass)}>
|
|
118
|
+
<div
|
|
119
|
+
className="logo-marquee-track flex w-max items-center"
|
|
120
|
+
style={{ gap, '--dd-logo-marquee-speed': speed + 's' } as React.CSSProperties}
|
|
121
|
+
>
|
|
122
|
+
{marqueeItems.map((logo, index) => LogoTile({ logo, index }))}
|
|
123
|
+
{marqueeItems.map((logo, index) => LogoTile({ logo, index, duplicate: true }))}
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</section>
|
|
127
|
+
{showBottomDivider && <Separator gradient className="border-seperator opacity-20" />}
|
|
128
|
+
</>
|
|
129
|
+
)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export default DDLogoMarq
|