blocks-dusted 0.1.12 → 0.1.13

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.
Files changed (148) hide show
  1. package/package.json +1 -1
  2. package/src/installers/patchRenderBlocks.js +1 -1
  3. package/src/registry/validateTemplateManifest.js +2 -1
  4. package/templates/blocks/BannerDD790432/Component.tsx +63 -0
  5. package/templates/blocks/BannerDD790432/config.ts +54 -0
  6. package/templates/blocks/BannerDD790432/manifest.json +80 -0
  7. package/templates/blocks/Button47/Component.tsx +124 -0
  8. package/templates/blocks/Button47/config.ts +75 -0
  9. package/templates/blocks/Button47/link.ts +22 -0
  10. package/templates/blocks/Button47/manifest.json +105 -0
  11. package/templates/blocks/Button47/styles.module.scss +75 -0
  12. package/templates/blocks/DD-Accordion/Component.tsx +55 -36
  13. package/templates/blocks/DD-Accordion/config.ts +71 -59
  14. package/templates/blocks/DD-AnimText/Component.tsx +50 -32
  15. package/templates/blocks/DD-AnimText/config.ts +296 -295
  16. package/templates/blocks/DD-AsideNav/Component.tsx +323 -319
  17. package/templates/blocks/DD-Banner/Component.tsx +54 -51
  18. package/templates/blocks/DD-BookCall/Component.tsx +535 -535
  19. package/templates/blocks/DD-ButtonPop/Component.tsx +118 -117
  20. package/templates/blocks/DD-Card/Component.tsx +4 -4
  21. package/templates/blocks/DD-CardTemplate01/Component.tsx +139 -140
  22. package/templates/blocks/DD-CardsWithVariantV3/Component.tsx +472 -0
  23. package/templates/blocks/DD-CardsWithVariantV3/ElectricBorder/index.tsx +203 -0
  24. package/templates/blocks/DD-CardsWithVariantV3/ElectricBorder/styles.ts +87 -0
  25. package/templates/blocks/DD-CardsWithVariantV3/ElectricBorder/useInjectStyle.ts +39 -0
  26. package/templates/blocks/DD-CardsWithVariantV3/config.ts +326 -0
  27. package/templates/blocks/DD-CardsWithVariantV3/manifest.json +110 -0
  28. package/templates/blocks/DD-Carousel-A/Component.tsx +251 -249
  29. package/templates/blocks/DD-Carousel-B/Component.tsx +405 -403
  30. package/templates/blocks/DD-ComparisonTable/Component.tsx +255 -256
  31. package/templates/blocks/DD-Contact/Component.tsx +433 -435
  32. package/templates/blocks/DD-Counter/Component.tsx +11 -6
  33. package/templates/blocks/DD-DeliCard/Component.tsx +303 -0
  34. package/templates/blocks/DD-DeliCard/config.ts +186 -0
  35. package/templates/blocks/DD-DeliCard/manifest.json +94 -0
  36. package/templates/blocks/DD-FeatCat/Component.tsx +302 -302
  37. package/templates/blocks/DD-FeatProd/CircularGallery.tsx +1179 -0
  38. package/templates/blocks/DD-FeatProd/Component.tsx +484 -0
  39. package/templates/blocks/DD-FeatProd/config.ts +173 -0
  40. package/templates/blocks/DD-FeatProd/manifest.json +93 -0
  41. package/templates/blocks/DD-FeatServ/Component.tsx +607 -0
  42. package/templates/blocks/DD-FeatServ/config.ts +213 -0
  43. package/templates/blocks/DD-FeatServ/manifest.json +113 -0
  44. package/templates/blocks/DD-FeatStrip/Component.tsx +584 -585
  45. package/templates/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx +627 -628
  46. package/templates/blocks/DD-FluidBtn/Component.tsx +46 -43
  47. package/templates/blocks/DD-GooeyInfo/Component.tsx +150 -149
  48. package/templates/blocks/DD-GooeyInfo/config.ts +136 -135
  49. package/templates/blocks/DD-Hero/Component.tsx +296 -297
  50. package/templates/blocks/DD-HeroPlas/Component.tsx +50 -0
  51. package/templates/blocks/DD-HeroPlas/ThreeScene.tsx +109 -0
  52. package/templates/blocks/DD-HeroPlas/config.ts +33 -0
  53. package/templates/blocks/DD-HeroPlas/manifest.json +88 -0
  54. package/templates/blocks/DD-HorizontalScroll/Component.tsx +937 -936
  55. package/templates/blocks/DD-Icon/Component.tsx +46 -81
  56. package/templates/blocks/DD-IconButton/Component.tsx +13 -20
  57. package/templates/blocks/DD-IdTag/Component.tsx +22 -21
  58. package/templates/blocks/DD-LineAnim/Component.tsx +42 -36
  59. package/templates/blocks/DD-LogoMarq/Component.tsx +38 -48
  60. package/templates/blocks/DD-Lottie/Component.tsx +11 -3
  61. package/templates/blocks/DD-MasonaryMedia/Component.tsx +544 -545
  62. package/templates/blocks/DD-MasonaryMedia/config.ts +389 -389
  63. package/templates/blocks/DD-Masonry/Component.tsx +654 -644
  64. package/templates/blocks/DD-Masonry/config.ts +475 -475
  65. package/templates/blocks/DD-MaterialSwatches/Component.tsx +85 -0
  66. package/templates/blocks/DD-MaterialSwatches/config.ts +232 -0
  67. package/templates/blocks/DD-MaterialSwatches/manifest.json +84 -0
  68. package/templates/blocks/DD-MaterialSwatches/material.ts +107 -0
  69. package/templates/blocks/DD-NineCanvas/Component.tsx +129 -0
  70. package/templates/blocks/DD-NineCanvas/RenderBlocks.tsx +244 -0
  71. package/templates/blocks/DD-NineCanvas/allowedCanvasBlocks.ts +6 -0
  72. package/templates/blocks/DD-NineCanvas/blockComponents.tsx +8 -0
  73. package/templates/blocks/DD-NineCanvas/canvas/CanvasGrid.tsx +316 -0
  74. package/templates/blocks/DD-NineCanvas/canvas/RadialNav.tsx +432 -0
  75. package/templates/blocks/DD-NineCanvas/canvas/canvas-panels.css +889 -0
  76. package/templates/blocks/DD-NineCanvas/canvas/icons/custom-icons.tsx +364 -0
  77. package/templates/blocks/DD-NineCanvas/config.ts +61 -0
  78. package/templates/blocks/DD-NineCanvas/manifest.json +165 -0
  79. package/templates/blocks/DD-NineCanvas/styles.scss +152 -0
  80. package/templates/blocks/DD-NineCanvas/tooltip/get-strict-context.tsx +26 -0
  81. package/templates/blocks/DD-NineCanvas/tooltip/primitives.tsx +178 -0
  82. package/templates/blocks/DD-NineCanvas/tooltip/tooltip.tsx +71 -0
  83. package/templates/blocks/DD-NineCanvas/tooltip/use-controlled-state.tsx +33 -0
  84. package/templates/blocks/DD-NineCanvas/utilities/FadeOnScroll.tsx +68 -0
  85. package/templates/blocks/DD-NineCanvas/utilities/ParallaxWrapper.tsx +157 -0
  86. package/templates/blocks/DD-NineCanvas/utilities/renderCustomCSS.ts +5 -0
  87. package/templates/blocks/DD-NineCanvas/utilities/webglCleanup.ts +27 -0
  88. package/templates/blocks/DD-PayloadAIAssistant/Component.tsx +78 -0
  89. package/templates/blocks/DD-PayloadAIAssistant/DustedBot.tsx +590 -0
  90. package/templates/blocks/DD-PayloadAIAssistant/config.ts +37 -0
  91. package/templates/blocks/DD-PayloadAIAssistant/demo.css +125 -0
  92. package/templates/blocks/DD-PayloadAIAssistant/manifest.json +93 -0
  93. package/templates/blocks/DD-PayloadAIAssistant/source-defaults.ts +17 -0
  94. package/templates/blocks/DD-PayloadAIAssistant/styles.ts +306 -0
  95. package/templates/blocks/DD-Pricing/Component.tsx +2 -3
  96. package/templates/blocks/DD-Pricing/config.ts +215 -215
  97. package/templates/blocks/DD-Process/Component.tsx +2 -2
  98. package/templates/blocks/DD-ProjHeader/Component.tsx +93 -91
  99. package/templates/blocks/DD-ProjSlider/Component.tsx +1 -1
  100. package/templates/blocks/DD-Section/Component.tsx +265 -266
  101. package/templates/blocks/DD-Separator/Component.tsx +66 -66
  102. package/templates/blocks/DD-Services/Component.tsx +176 -176
  103. package/templates/blocks/DD-ShowcaseGrid/Component.tsx +306 -307
  104. package/templates/blocks/DD-Slider-A/Component.tsx +2 -2
  105. package/templates/blocks/DD-StackCards/Component.tsx +172 -171
  106. package/templates/blocks/DD-Team/Component.tsx +247 -247
  107. package/templates/blocks/DD-TeamCards/Component.tsx +251 -251
  108. package/templates/blocks/DD-TechStack/Component.tsx +173 -174
  109. package/templates/blocks/DD-TestMarq/Component.tsx +158 -132
  110. package/templates/blocks/DD-Testim/Component.tsx +247 -247
  111. package/templates/blocks/DD-Testim2/Component.tsx +265 -256
  112. package/templates/blocks/DD-Testimonials/Component.tsx +139 -139
  113. package/templates/blocks/DD-Thanks/Component.tsx +1 -1
  114. package/templates/blocks/DD-Work/Component.tsx +318 -318
  115. package/templates/blocks/DD-Work-B/Component.tsx +294 -294
  116. package/templates/blocks/DDHG-CTASection2/Component.tsx +183 -184
  117. package/templates/blocks/DDHG-HighlightArc/Component.tsx +6 -3
  118. package/templates/blocks/DDHG-LogoMarquee/Component.tsx +45 -8
  119. package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +1 -3
  120. package/templates/blocks/DDHG-ServiceDetails/ServiceDetailCard.tsx +9 -22
  121. package/templates/blocks/DDHG-ServiceHero/Component.tsx +10 -10
  122. package/templates/blocks/DDHG-TeamCards/Component.tsx +6 -35
  123. package/templates/blocks/Form/Checkbox/index.tsx +45 -0
  124. package/templates/blocks/Form/Component.tsx +163 -0
  125. package/templates/blocks/Form/Country/index.tsx +65 -0
  126. package/templates/blocks/Form/Country/options.ts +982 -0
  127. package/templates/blocks/Form/Email/index.tsx +38 -0
  128. package/templates/blocks/Form/Error/index.tsx +15 -0
  129. package/templates/blocks/Form/Message/index.tsx +13 -0
  130. package/templates/blocks/Form/Number/index.tsx +36 -0
  131. package/templates/blocks/Form/Select/index.tsx +63 -0
  132. package/templates/blocks/Form/State/index.tsx +64 -0
  133. package/templates/blocks/Form/State/options.ts +52 -0
  134. package/templates/blocks/Form/Text/index.tsx +32 -0
  135. package/templates/blocks/Form/Textarea/index.tsx +40 -0
  136. package/templates/blocks/Form/Width/index.tsx +13 -0
  137. package/templates/blocks/Form/config.ts +51 -0
  138. package/templates/blocks/Form/fields.tsx +21 -0
  139. package/templates/blocks/Form/manifest.json +168 -0
  140. package/templates/blocks/MediaBlock/Component.tsx +67 -0
  141. package/templates/blocks/MediaBlock/config.ts +14 -0
  142. package/templates/blocks/MediaBlock/manifest.json +92 -0
  143. package/templates/blocks/TransitionsDustedShowcase/Component.tsx +9 -0
  144. package/templates/blocks/TransitionsDustedShowcase/config.ts +13 -0
  145. package/templates/blocks/TransitionsDustedShowcase/manifest.json +80 -0
  146. package/templates/blocks/rawHtml/Component.tsx +25 -0
  147. package/templates/blocks/rawHtml/config.ts +56 -0
  148. package/templates/blocks/rawHtml/manifest.json +80 -0
@@ -1,139 +1,139 @@
1
- 'use client'
2
-
3
- import React from 'react'
4
- import Image from 'next/image'
5
- import { Star } from 'lucide-react'
6
- import { motion, type Variants } from 'framer-motion'
7
- export type DDTestimonialsProps = Record<string, any>
8
- type Media = { url?: string | null }
9
- type Testimonial = {
10
- id?: string | null
11
- title?: string | null
12
- content?: unknown
13
- designation?: unknown
14
- companyLogo?: Media | string | null
15
- fallbackAvatarUrl?: string | null
16
- rating?: number | null
17
- }
18
-
19
- function isLocalImageSrc(src?: string | null): src is string {
20
- return typeof src === 'string' && src.startsWith('/api/media/file/')
21
- }
22
-
23
- const containerVariants: Variants = {
24
- hidden: {},
25
- show: { transition: { staggerChildren: 0.12, delayChildren: 0.05 } },
26
- }
27
-
28
- const cardVariants: Variants = {
29
- hidden: { opacity: 0, y: 24 },
30
- show: { opacity: 1, y: 0, transition: { duration: 0.5, ease: 'easeOut' } },
31
- }
32
-
33
- export const DDTestimonials: React.FC<DDTestimonialsProps> = ({
34
- eyebrow,
35
- headline,
36
- testimonials,
37
- sectionId,
38
- customCSS,
39
- }) => {
40
- const populated = ((testimonials ?? []) as unknown[]).filter(
41
- (t): t is Testimonial => typeof t === 'object' && t !== null,
42
- )
43
-
44
- return (
45
- <>
46
- {customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
47
-
48
- <div id={sectionId ?? 'testimonials'} className="py-24">
49
- <div className="max-w-6xl lg:max-w-7xl mx-auto px-4 md:px-6">
50
- {/* Header */}#BlockName-DDTestimonials
51
- <div className="text-center max-w-xl mx-auto mb-14">
52
- {eyebrow && (
53
- <p className="text-[11.5px] font-semibold text-stone-400 tracking-widest uppercase mb-3 top-caption">
54
- {eyebrow}
55
- </p>
56
- )}
57
- <h2 className="text-3xl font-semibold text-stone-900 dark:text-stone-50 leading-tight">
58
- {headline}
59
- </h2>
60
- </div>
61
- {/* Testimonials */}
62
- {populated.length > 0 && (
63
- <motion.div
64
- className="grid grid-cols-1 md:grid-cols-3 gap-6"
65
- variants={containerVariants}
66
- initial="hidden"
67
- whileInView="show"
68
- viewport={{ once: false, amount: 0.15 }}
69
- >
70
- {populated.map((t, i) => {
71
- const avatarUrl =
72
- typeof t.companyLogo === 'object' &&
73
- t.companyLogo !== null &&
74
- 'url' in t.companyLogo
75
- ? t.companyLogo.url
76
- : (t.fallbackAvatarUrl ?? null)
77
- const safeAvatarUrl = isLocalImageSrc(avatarUrl) ? avatarUrl : null
78
-
79
- const stars = Math.min(5, Math.max(1, t.rating ?? 5))
80
-
81
- return (
82
- <motion.div
83
- key={t.id ?? i}
84
- className="rounded-2xl bg-stone-100 dark:bg-stone-900 border border-stone-100 dark:border-stone-800 p-8 flex flex-col"
85
- variants={cardVariants}
86
- style={{ cornerShape: 'squircle' } as React.CSSProperties}
87
- >
88
- {/* Stars */}
89
- <div className="flex items-center gap-1 mb-5">
90
- {Array.from({ length: stars }).map((_, si) => (
91
- <Star key={si} size={14} className="text-amber-400" fill="currentColor" />
92
- ))}
93
- </div>
94
-
95
- {/* Quote */}
96
- {t.content ? (
97
- <div className="text-sm text-stone-400 leading-relaxed flex-1 mb-6">
98
- {/* TODO: Reconnect this project's RichText renderer for testimonial content. */}
99
- <span>
100
- Reconnect this project's RichText renderer for testimonial content.
101
- </span>
102
- </div>
103
- ) : null}
104
-
105
- {/* Author / Company */}
106
- <div className="flex items-center gap-3 pt-5 border-t border-stone-800">
107
- {safeAvatarUrl && (
108
- <div className="w-10 h-10 rounded-full overflow-hidden shrink-0 relative">
109
- <Image
110
- src={safeAvatarUrl}
111
- alt={t.title ?? ''}
112
- fill
113
- sizes="40px"
114
- className="object-cover object-top"
115
- />
116
- </div>
117
- )}
118
- <div>
119
- <div className="text-sm font-semibold text-stone-800 dark:text-stone-50">
120
- {t.title}
121
- </div>
122
- {t.designation ? (
123
- <div className="text-xs text-stone-300">
124
- {/* TODO: Reconnect RichText for designation if needed. */}
125
- <span>Reconnect RichText for designation</span>
126
- </div>
127
- ) : null}
128
- </div>
129
- </div>
130
- </motion.div>
131
- )
132
- })}
133
- </motion.div>
134
- )}
135
- </div>
136
- </div>
137
- </>
138
- )
139
- }
1
+ 'use client'
2
+
3
+ import React from 'react'
4
+ import Image from 'next/image'
5
+ import { Star } from 'lucide-react'
6
+ import { motion, type Variants } from 'framer-motion'
7
+ export type DDTestimonialsProps = Record<string, any>
8
+ type Media = { url?: string | null }
9
+ type Testimonial = {
10
+ id?: string | null
11
+ title?: string | null
12
+ content?: unknown
13
+ designation?: unknown
14
+ companyLogo?: Media | string | null
15
+ fallbackAvatarUrl?: string | null
16
+ rating?: number | null
17
+ }
18
+
19
+ function isLocalImageSrc(src?: string | null): src is string {
20
+ return typeof src === 'string' && src.startsWith('/api/media/file/')
21
+ }
22
+
23
+ const containerVariants: Variants = {
24
+ hidden: {},
25
+ show: { transition: { staggerChildren: 0.12, delayChildren: 0.05 } },
26
+ }
27
+
28
+ const cardVariants: Variants = {
29
+ hidden: { opacity: 0, y: 24 },
30
+ show: { opacity: 1, y: 0, transition: { duration: 0.5, ease: 'easeOut' } },
31
+ }
32
+
33
+ export const DDTestimonials: React.FC<DDTestimonialsProps> = ({
34
+ eyebrow,
35
+ headline,
36
+ testimonials,
37
+ sectionId,
38
+ customCSS,
39
+ }) => {
40
+ const populated = ((testimonials ?? []) as unknown[]).filter(
41
+ (t): t is Testimonial => typeof t === 'object' && t !== null,
42
+ )
43
+
44
+ return (
45
+ <>
46
+ {customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
47
+
48
+ <div id={sectionId ?? 'testimonials'} className="py-4">
49
+ <div className="max-w-6xl lg:max-w-7xl mx-auto px-4 md:px-6">
50
+ {/* Header */}
51
+ <div className="text-center max-w-xl mx-auto mb-14">
52
+ {eyebrow && (
53
+ <p className="text-[11.5px] font-semibold text-stone-400 tracking-widest uppercase mb-3 top-caption">
54
+ {eyebrow}
55
+ </p>
56
+ )}
57
+ <h2 className="text-3xl font-semibold text-stone-900 dark:text-stone-50 leading-tight">
58
+ {headline}
59
+ </h2>
60
+ </div>
61
+ {/* Testimonials */}
62
+ {populated.length > 0 && (
63
+ <motion.div
64
+ className="grid grid-cols-1 md:grid-cols-3 gap-6"
65
+ variants={containerVariants}
66
+ initial="hidden"
67
+ whileInView="show"
68
+ viewport={{ once: false, amount: 0.15 }}
69
+ >
70
+ {populated.map((t, i) => {
71
+ const avatarUrl =
72
+ typeof t.companyLogo === 'object' &&
73
+ t.companyLogo !== null &&
74
+ 'url' in t.companyLogo
75
+ ? t.companyLogo.url
76
+ : (t.fallbackAvatarUrl ?? null)
77
+ const safeAvatarUrl = isLocalImageSrc(avatarUrl) ? avatarUrl : null
78
+
79
+ const stars = Math.min(5, Math.max(1, t.rating ?? 5))
80
+
81
+ return (
82
+ <motion.div
83
+ key={t.id ?? i}
84
+ className="rounded-2xl bg-stone-100 dark:bg-stone-900 border border-stone-100 dark:border-stone-800 p-8 flex flex-col"
85
+ variants={cardVariants}
86
+ style={{ cornerShape: 'squircle' } as React.CSSProperties}
87
+ >
88
+ {/* Stars */}
89
+ <div className="flex items-center gap-1 mb-5">
90
+ {Array.from({ length: stars }).map((_, si) => (
91
+ <Star key={si} size={14} className="text-amber-400" fill="currentColor" />
92
+ ))}
93
+ </div>
94
+
95
+ {/* Quote */}
96
+ {t.content ? (
97
+ <div className="text-sm text-stone-400 leading-relaxed flex-1 mb-6">
98
+ {/* TODO: Reconnect this project's RichText renderer for testimonial content. */}
99
+ <span>
100
+ Reconnect this project's RichText renderer for testimonial content.
101
+ </span>
102
+ </div>
103
+ ) : null}
104
+
105
+ {/* Author / Company */}
106
+ <div className="flex items-center gap-3 pt-5 border-t border-stone-800">
107
+ {safeAvatarUrl && (
108
+ <div className="w-10 h-10 rounded-full overflow-hidden shrink-0 relative">
109
+ <Image
110
+ src={safeAvatarUrl}
111
+ alt={t.title ?? ''}
112
+ fill
113
+ sizes="40px"
114
+ className="object-cover object-top"
115
+ />
116
+ </div>
117
+ )}
118
+ <div>
119
+ <div className="text-sm font-semibold text-stone-800 dark:text-stone-50">
120
+ {t.title}
121
+ </div>
122
+ {t.designation ? (
123
+ <div className="text-xs text-stone-300">
124
+ {/* TODO: Reconnect RichText for designation if needed. */}
125
+ <span>Reconnect RichText for designation</span>
126
+ </div>
127
+ ) : null}
128
+ </div>
129
+ </div>
130
+ </motion.div>
131
+ )
132
+ })}
133
+ </motion.div>
134
+ )}
135
+ </div>
136
+ </div>
137
+ </>
138
+ )
139
+ }
@@ -315,7 +315,7 @@ export function DDThanks({
315
315
  <section
316
316
  id={sectionId ?? undefined}
317
317
  className={cn(
318
- 'thanks-confetti-section relative flex min-h-screen w-full flex-col items-center justify-center overflow-hidden bg-stone-transparent dark:bg-stone-950 px-4 py-24 text-center hue-rotate-300 invert-100 dark:invert-0',
318
+ 'thanks-confetti-section relative flex min-h-screen w-full flex-col items-center justify-center overflow-hidden bg-stone-transparent dark:bg-stone-950 px-4 py-4 text-center hue-rotate-300 invert-100 dark:invert-0',
319
319
  className,
320
320
  )}
321
321
  >