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,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-Testim",
|
|
4
|
+
"label": "Testimonial",
|
|
5
|
+
"sourceName": "TestimonialBlock",
|
|
6
|
+
"portableName": "DD-Testim",
|
|
7
|
+
"slug": "DD-Testim",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/ROUND-TWO-CONVERSION/TestimonialBlock",
|
|
12
|
+
"originalSlug": "testimonialBlock",
|
|
13
|
+
"originalConfigExport": "TestimonialBlock",
|
|
14
|
+
"originalComponentExport": "TestimonialBlock",
|
|
15
|
+
"originalInterfaceName": "DDTestim"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-Testim/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-Testim/config.ts"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [
|
|
28
|
+
"swiper",
|
|
29
|
+
"framer-motion"
|
|
30
|
+
],
|
|
31
|
+
"sharedFiles": [],
|
|
32
|
+
"requiredProjectFiles": [],
|
|
33
|
+
"optionalProjectFiles": [],
|
|
34
|
+
"collectionRegistration": {
|
|
35
|
+
"enabled": true,
|
|
36
|
+
"collections": [
|
|
37
|
+
"Pages",
|
|
38
|
+
"Posts"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"renderBlocksRegistration": {
|
|
42
|
+
"enabled": true
|
|
43
|
+
},
|
|
44
|
+
"renderBlocksBehavior": {
|
|
45
|
+
"wrapperless": false
|
|
46
|
+
},
|
|
47
|
+
"pageRouteIntegration": {
|
|
48
|
+
"required": false,
|
|
49
|
+
"manualSteps": []
|
|
50
|
+
},
|
|
51
|
+
"manual": [
|
|
52
|
+
"Register DDTestim in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
53
|
+
"Register DD-Testim in RenderBlocks if automatic registration was skipped.",
|
|
54
|
+
"Run payload generate:types after schema changes."
|
|
55
|
+
],
|
|
56
|
+
"manualSteps": [
|
|
57
|
+
"Register DDTestim in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
58
|
+
"Register DD-Testim in RenderBlocks if automatic registration was skipped.",
|
|
59
|
+
"Run payload generate:types after schema changes."
|
|
60
|
+
],
|
|
61
|
+
"patchTargets": {
|
|
62
|
+
"blockConfigRegistration": {
|
|
63
|
+
"description": "Installer can add import { DDTestim } from '@/blocks/DD-Testim/config' and add DDTestim to clear Pages/Posts block arrays."
|
|
64
|
+
},
|
|
65
|
+
"renderBlocksRegistration": {
|
|
66
|
+
"description": "Installer can register DD-Testim in RenderBlocks."
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"notes": [
|
|
70
|
+
"Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
|
|
71
|
+
"Project-specific imports were replaced with local, dependency-light rendering where required."
|
|
72
|
+
],
|
|
73
|
+
"exportName": "DDTestim",
|
|
74
|
+
"interfaceName": "DDTestim"
|
|
75
|
+
}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import React, { useRef } from 'react'
|
|
4
|
+
import { Swiper, SwiperSlide } from 'swiper/react'
|
|
5
|
+
import { Navigation } from 'swiper/modules'
|
|
6
|
+
import type { Swiper as SwiperInstance } from 'swiper'
|
|
7
|
+
import { cn } from '@/utilities/ui'
|
|
8
|
+
import { Media } from '@/components/Media'
|
|
9
|
+
import RichText from '@/components/RichText'
|
|
10
|
+
import type { Testimonial } from '@/payload-types'
|
|
11
|
+
import 'swiper/css'
|
|
12
|
+
import 'swiper/css/navigation'
|
|
13
|
+
|
|
14
|
+
export interface Testimonial2BlockProps {
|
|
15
|
+
awardsTitle?: string
|
|
16
|
+
testimonialsTitle?: string
|
|
17
|
+
features?: Array<{
|
|
18
|
+
title: string
|
|
19
|
+
company?: string
|
|
20
|
+
year?: string
|
|
21
|
+
category?: string
|
|
22
|
+
link?: string
|
|
23
|
+
id?: string
|
|
24
|
+
}>
|
|
25
|
+
testimonials?: Array<Testimonial | string | number>
|
|
26
|
+
containerClass?: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const DDTestim2: React.FC<Testimonial2BlockProps> = ({
|
|
30
|
+
awardsTitle = '',
|
|
31
|
+
testimonialsTitle = '',
|
|
32
|
+
features = [],
|
|
33
|
+
testimonials = [],
|
|
34
|
+
containerClass = ''
|
|
35
|
+
}) => {
|
|
36
|
+
// Filter and type-guard testimonials
|
|
37
|
+
const validTestimonials = testimonials?.filter(
|
|
38
|
+
(t): t is Testimonial => typeof t === 'object' && t !== null
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
const prevButtonRef = useRef(null)
|
|
42
|
+
const nextButtonRef = useRef(null)
|
|
43
|
+
const swiperRef = useRef<SwiperInstance | null>(null)
|
|
44
|
+
|
|
45
|
+
const swiperOptions = {
|
|
46
|
+
spaceBetween: 30,
|
|
47
|
+
slidesPerView: 1,
|
|
48
|
+
loop: true,
|
|
49
|
+
modules: [Navigation],
|
|
50
|
+
navigation: {
|
|
51
|
+
prevEl: '.custom-swiper-button-prev',
|
|
52
|
+
nextEl: '.custom-swiper-button-next'
|
|
53
|
+
},
|
|
54
|
+
onSwiper: (swiper: SwiperInstance) => {
|
|
55
|
+
swiperRef.current = swiper
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<section
|
|
61
|
+
className={cn(
|
|
62
|
+
'half-block sub-bg max-w-none mx-0 md:mx-auto prose md:prose-md dark:prose-invert m-0 p-[15px]',
|
|
63
|
+
containerClass
|
|
64
|
+
)}
|
|
65
|
+
id="testimonial2-block"
|
|
66
|
+
>
|
|
67
|
+
<div className="w-full max-w-[1500px] mx-auto px-4">
|
|
68
|
+
<div className="w-full flex flex-wrap lg:flex-nowrap px-0">
|
|
69
|
+
{/* Awards Section */}
|
|
70
|
+
{features && features.length > 0 && (
|
|
71
|
+
<div className="w-full lg:w-1/2 pt-10 pb-10 pl-10 md:pt-[30px] md:pb-[30px] md:pl-5">
|
|
72
|
+
<div className="mr-0 md:mr-5">
|
|
73
|
+
<div className="mb-20">
|
|
74
|
+
<h3 className="uppercase tracking-[1px]">{awardsTitle}</h3>
|
|
75
|
+
</div>
|
|
76
|
+
<div className="flex flex-wrap -mx-[15px] py-[25px] px-[15px] border-b border-white/50">
|
|
77
|
+
<div className="w-full md:w-[58.333333%] px-[15px]">
|
|
78
|
+
<div className="p-0">
|
|
79
|
+
<h6 className="text-sm uppercase tracking-[2px]">Featured Projects</h6>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
<div className="w-full md:w-[25%] px-[15px]">
|
|
83
|
+
<div className="p-0">
|
|
84
|
+
<h6 className="text-sm uppercase tracking-[2px]">Category</h6>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
{features.map((feature, index) => (
|
|
90
|
+
<div
|
|
91
|
+
key={feature.id || index}
|
|
92
|
+
className="group flex flex-wrap -mx-[15px] py-[25px] px-[15px] border-b border-white/[0.08] relative transition-all duration-400 z-[3] hover:after:h-full after:content-[''] after:absolute after:bottom-0 after:left-0 after:w-full after:h-0 after:bg-[#fdfdfd29] after:transition-all after:duration-400 after:z-[-1]"
|
|
93
|
+
>
|
|
94
|
+
<div className="w-full md:w-[58.333333%] px-[15px]">
|
|
95
|
+
<div className="p-0 flex justify-start">
|
|
96
|
+
<h6 className="text-stone-200 dark:text-stone-200 transition-all duration-400 dark:group-hover:text-white light:group-hover:text-[#0c0c0c]">
|
|
97
|
+
{feature.title}
|
|
98
|
+
{feature.title.length < 25 && <br />}
|
|
99
|
+
<span className="text-sm opacity-70 ml-[15px]">
|
|
100
|
+
{feature.company} <span>{feature.year}</span>
|
|
101
|
+
</span>
|
|
102
|
+
</h6>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
<div className="w-full flex md:w-[25%] px-[15px]">
|
|
106
|
+
<div className="p-0 flex justify-end mr-1 scale-90 origin-right">
|
|
107
|
+
<h6 className="text-stone-200 dark:text-stone-200 transition-all duration-400">
|
|
108
|
+
{feature.category}
|
|
109
|
+
</h6>
|
|
110
|
+
<a href={feature.link} className="ml-2 mt-2 inline-block scale-110">
|
|
111
|
+
<svg
|
|
112
|
+
width="18"
|
|
113
|
+
height="18"
|
|
114
|
+
viewBox="0 0 18 18"
|
|
115
|
+
fill="none"
|
|
116
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
117
|
+
className="transition-transform duration-300 ease-in-out group-hover:translate-x-[3px] group-hover:-translate-y-[3px]"
|
|
118
|
+
>
|
|
119
|
+
<path
|
|
120
|
+
d="M13.922 4.5V11.8125C13.922 11.9244 13.8776 12.0317 13.7985 12.1108C13.7193 12.1899 13.612 12.2344 13.5002 12.2344C13.3883 12.2344 13.281 12.1899 13.2018 12.1108C13.1227 12.0317 13.0783 11.9244 13.0783 11.8125V5.51953L4.79547 13.7953C4.71715 13.8736 4.61092 13.9176 4.50015 13.9176C4.38939 13.9176 4.28316 13.8736 4.20484 13.7953C4.12652 13.717 4.08252 13.6108 4.08252 13.5C4.08252 13.3892 4.12652 13.283 4.20484 13.2047L12.4806 4.92188H6.18765C6.07577 4.92188 5.96846 4.87743 5.88934 4.79831C5.81023 4.71919 5.76578 4.61189 5.76578 4.5C5.76578 4.38811 5.81023 4.28081 5.88934 4.20169C5.96846 4.12257 6.07577 4.07813 6.18765 4.07812H13.5002C13.612 4.07813 13.7193 4.12257 13.7985 4.20169C13.8776 4.28081 13.922 4.38811 13.922 4.5Z"
|
|
121
|
+
fill="currentColor"
|
|
122
|
+
></path>
|
|
123
|
+
</svg>
|
|
124
|
+
</a>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
{/* <div className="w-full md:w-[16.666667%] px-[15px]"></div> */}
|
|
128
|
+
</div>
|
|
129
|
+
))}
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
)}
|
|
133
|
+
|
|
134
|
+
{/* Testimonials Section */}
|
|
135
|
+
{validTestimonials && validTestimonials.length > 0 && (
|
|
136
|
+
<div className="w-full lg:w-1/2 pr-0 mr-0">
|
|
137
|
+
<div className="testim-crev">
|
|
138
|
+
<div className="p-4 my-4">
|
|
139
|
+
<h3 className="uppercase tracking-[1px]">{testimonialsTitle}</h3>
|
|
140
|
+
</div>
|
|
141
|
+
<div className="testim-swiper bg-lines pb-16 px-0 -ml-1 rounded-3xl">
|
|
142
|
+
<Swiper
|
|
143
|
+
id="content-carousel-container-unq-testim"
|
|
144
|
+
className="swiper-container"
|
|
145
|
+
{...swiperOptions}
|
|
146
|
+
>
|
|
147
|
+
{validTestimonials.map((testimonial, index) => (
|
|
148
|
+
<SwiperSlide
|
|
149
|
+
key={testimonial.id || index}
|
|
150
|
+
style={{ left: '20px', marginRight: '50px' }}
|
|
151
|
+
>
|
|
152
|
+
<div className="container item sub-background border-t border-l border-b mb-4 -ml-4 pt-12 pb-10 px-10 rounded-[40px_0px_0px_40px] relative md:pt-[30px] md:pb-0 md:px-5">
|
|
153
|
+
<div className="w-full">
|
|
154
|
+
<div className="flex items-center">
|
|
155
|
+
<div className="ml-auto">
|
|
156
|
+
<svg
|
|
157
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
158
|
+
width="256.721"
|
|
159
|
+
height="208.227"
|
|
160
|
+
viewBox="0 0 256.721 208.227"
|
|
161
|
+
className="w-[100px] h-20 mb-10 scale-[4] opacity-10 mr-44 md:w-[110px] md:h-[110px] md:pt-4 md:-mb-16"
|
|
162
|
+
>
|
|
163
|
+
<path
|
|
164
|
+
d="M-23.723-530.169v97.327H-121.05v-68.7q0-40.076,13.359-73.472T-62.845-639.9l36.259,28.625Q-63.8-570.244-68.57-530.169Zm158.395,0v97.327H37.345v-68.7q0-40.076,13.359-73.472T95.55-639.9l36.259,28.625Q94.6-570.244,89.825-530.169Z"
|
|
165
|
+
transform="translate(121.55 640.568)"
|
|
166
|
+
fill="none"
|
|
167
|
+
stroke="#fff"
|
|
168
|
+
strokeWidth="1"
|
|
169
|
+
opacity="0.322"
|
|
170
|
+
></path>
|
|
171
|
+
</svg>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
<div className="text">
|
|
175
|
+
{testimonial.content && (
|
|
176
|
+
<RichText
|
|
177
|
+
data={testimonial.content}
|
|
178
|
+
enableGutter={false}
|
|
179
|
+
className=" text-stone-200 dark:text-stone-200"
|
|
180
|
+
/>
|
|
181
|
+
)}
|
|
182
|
+
</div>
|
|
183
|
+
<div className="flex items-center mt-10 md:-ml-5">
|
|
184
|
+
<div className="relative p-5 rounded-[0_30px_0_0] w-20 h-20 overflow-hidden md:mb-0 md:p-0 md:flex md:w-auto">
|
|
185
|
+
<div className="w-full h-full rounded-full overflow-hidden invert-[0.8] dark:invert-[0] object-cover">
|
|
186
|
+
{testimonial.companyLogo &&
|
|
187
|
+
typeof testimonial.companyLogo === 'object' ? (
|
|
188
|
+
<Media
|
|
189
|
+
resource={testimonial.companyLogo}
|
|
190
|
+
imgClassName="object-cover"
|
|
191
|
+
/>
|
|
192
|
+
) : (
|
|
193
|
+
<svg
|
|
194
|
+
className="w-full h-full opacity-20"
|
|
195
|
+
viewBox="0 0 24 24"
|
|
196
|
+
fill="none"
|
|
197
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
198
|
+
>
|
|
199
|
+
<path
|
|
200
|
+
d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"
|
|
201
|
+
fill="currentColor"
|
|
202
|
+
/>
|
|
203
|
+
</svg>
|
|
204
|
+
)}
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
<div className="text-left ml-[30px] md:ml-0 md:mt-0 md:max-w-[55vw]">
|
|
208
|
+
{testimonial.clientName && (
|
|
209
|
+
<RichText
|
|
210
|
+
data={testimonial.clientName}
|
|
211
|
+
enableGutter={false}
|
|
212
|
+
className=" text-stone-200 dark:text-stone-200"
|
|
213
|
+
/>
|
|
214
|
+
)}
|
|
215
|
+
{testimonial.company && (
|
|
216
|
+
<div
|
|
217
|
+
className="text-alt scale-95 origin-top-left opacity-100"
|
|
218
|
+
style={{ maxWidth: '280px', marginTop: '-8px' }}
|
|
219
|
+
>
|
|
220
|
+
<RichText
|
|
221
|
+
data={testimonial.company}
|
|
222
|
+
enableGutter={false}
|
|
223
|
+
className="text-sm"
|
|
224
|
+
/>
|
|
225
|
+
</div>
|
|
226
|
+
)}
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
</SwiperSlide>
|
|
232
|
+
))}
|
|
233
|
+
</Swiper>
|
|
234
|
+
|
|
235
|
+
{/* Navigation Buttons */}
|
|
236
|
+
<div className="flex gap-12 justify-start mt-8 ml-8">
|
|
237
|
+
<div
|
|
238
|
+
ref={prevButtonRef}
|
|
239
|
+
className="swiper-button-prev custom-swiper-button-prev relative w-[20px] h-[20px] rounded-full flex items-center justify-center cursor-pointer transition-all duration-300 bg-transparent hover:border-white/50 hover:bg-white/5 disabled:opacity-30 disabled:cursor-not-allowed"
|
|
240
|
+
></div>
|
|
241
|
+
<div
|
|
242
|
+
ref={nextButtonRef}
|
|
243
|
+
className="swiper-button-next custom-swiper-button-next relative w-[20px] h-[20px] rounded-full flex items-center justify-center cursor-pointer transition-all duration-300 bg-transparent hover:border-white/50 hover:bg-white/5 disabled:opacity-30 disabled:cursor-not-allowed"
|
|
244
|
+
></div>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
)}
|
|
250
|
+
</div>
|
|
251
|
+
</div>
|
|
252
|
+
</section>
|
|
253
|
+
)
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export default DDTestim2
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { Block } from 'payload'
|
|
2
|
+
|
|
3
|
+
export const DDTestim2: Block = {
|
|
4
|
+
slug: 'DD-Testim2',
|
|
5
|
+
interfaceName: 'DDTestim2',
|
|
6
|
+
labels: {
|
|
7
|
+
singular: 'Testimonial 2 Block',
|
|
8
|
+
plural: 'Testimonial 2 Blocks'
|
|
9
|
+
},
|
|
10
|
+
fields: [
|
|
11
|
+
{
|
|
12
|
+
name: 'features',
|
|
13
|
+
type: 'array',
|
|
14
|
+
label: 'Featured Projects',
|
|
15
|
+
minRows: 0,
|
|
16
|
+
fields: [
|
|
17
|
+
{
|
|
18
|
+
name: 'title',
|
|
19
|
+
type: 'text',
|
|
20
|
+
label: 'Project Title',
|
|
21
|
+
required: true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
type: 'row',
|
|
25
|
+
fields: [
|
|
26
|
+
{
|
|
27
|
+
name: 'company',
|
|
28
|
+
type: 'text',
|
|
29
|
+
label: 'Company',
|
|
30
|
+
admin: {
|
|
31
|
+
width: '50%'
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'year',
|
|
36
|
+
type: 'text',
|
|
37
|
+
label: 'Year',
|
|
38
|
+
admin: {
|
|
39
|
+
width: '50%'
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: 'row',
|
|
46
|
+
fields: [
|
|
47
|
+
{
|
|
48
|
+
name: 'category',
|
|
49
|
+
type: 'text',
|
|
50
|
+
label: 'Category',
|
|
51
|
+
admin: {
|
|
52
|
+
width: '50%'
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'link',
|
|
57
|
+
type: 'text',
|
|
58
|
+
label: 'Project Link',
|
|
59
|
+
admin: {
|
|
60
|
+
width: '50%',
|
|
61
|
+
description: 'Full URL to the project'
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
defaultValue: []
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'testimonials',
|
|
71
|
+
type: 'relationship',
|
|
72
|
+
relationTo: 'testimonials',
|
|
73
|
+
label: 'Select Testimonials',
|
|
74
|
+
hasMany: true,
|
|
75
|
+
required: false,
|
|
76
|
+
admin: {
|
|
77
|
+
description: 'Select testimonials from the Testimonials collection'
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'collapsible',
|
|
82
|
+
label: 'Custom Classes',
|
|
83
|
+
admin: {
|
|
84
|
+
initCollapsed: true
|
|
85
|
+
},
|
|
86
|
+
fields: [
|
|
87
|
+
{
|
|
88
|
+
name: 'containerClass',
|
|
89
|
+
type: 'text',
|
|
90
|
+
label: 'Container Class',
|
|
91
|
+
admin: {
|
|
92
|
+
description: 'Additional classes for section container'
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export default DDTestim2
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "block",
|
|
3
|
+
"name": "DD-Testim2",
|
|
4
|
+
"label": "Testimonial 2",
|
|
5
|
+
"sourceName": "Testimonial2Block",
|
|
6
|
+
"portableName": "DD-Testim2",
|
|
7
|
+
"slug": "DD-Testim2",
|
|
8
|
+
"version": "0.0.1",
|
|
9
|
+
"source": {
|
|
10
|
+
"repo": "Hadizainal/DesignsDustedv3",
|
|
11
|
+
"originalPath": "src/blocks/ROUND-TWO-CONVERSION/Testimonial2Block",
|
|
12
|
+
"originalSlug": "testimonial2Block",
|
|
13
|
+
"originalConfigExport": "Testimonial2Block",
|
|
14
|
+
"originalComponentExport": "Testimonial2Block",
|
|
15
|
+
"originalInterfaceName": "DDTestim2"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"from": "Component.tsx",
|
|
20
|
+
"to": "src/blocks/DD-Testim2/Component.tsx"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"from": "config.ts",
|
|
24
|
+
"to": "src/blocks/DD-Testim2/config.ts"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"dependencies": [
|
|
28
|
+
"swiper"
|
|
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 DDTestim2 in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
52
|
+
"Register DD-Testim2 in RenderBlocks if automatic registration was skipped.",
|
|
53
|
+
"Run payload generate:types after schema changes."
|
|
54
|
+
],
|
|
55
|
+
"manualSteps": [
|
|
56
|
+
"Register DDTestim2 in Pages/Posts blocks arrays if automatic registration was skipped.",
|
|
57
|
+
"Register DD-Testim2 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 { DDTestim2 } from '@/blocks/DD-Testim2/config' and add DDTestim2 to clear Pages/Posts block arrays."
|
|
63
|
+
},
|
|
64
|
+
"renderBlocksRegistration": {
|
|
65
|
+
"description": "Installer can register DD-Testim2 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": "DDTestim2",
|
|
73
|
+
"interfaceName": "DDTestim2"
|
|
74
|
+
}
|