blocks-dusted 0.1.11 → 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 (161) hide show
  1. package/package.json +5 -2
  2. package/src/cli.js +39 -3
  3. package/src/commands/shop.js +59 -0
  4. package/src/commands/warehouse.js +73 -0
  5. package/src/installers/patchRenderBlocks.js +1 -1
  6. package/src/registry/validateTemplateManifest.js +2 -1
  7. package/templates/blocks/BannerDD790432/Component.tsx +63 -0
  8. package/templates/blocks/BannerDD790432/config.ts +54 -0
  9. package/templates/blocks/BannerDD790432/manifest.json +80 -0
  10. package/templates/blocks/Button47/Component.tsx +124 -0
  11. package/templates/blocks/Button47/config.ts +75 -0
  12. package/templates/blocks/Button47/link.ts +22 -0
  13. package/templates/blocks/Button47/manifest.json +105 -0
  14. package/templates/blocks/Button47/styles.module.scss +75 -0
  15. package/templates/blocks/DD-Accordion/Component.tsx +55 -36
  16. package/templates/blocks/DD-Accordion/config.ts +71 -59
  17. package/templates/blocks/DD-AnimText/Component.tsx +50 -32
  18. package/templates/blocks/DD-AnimText/config.ts +296 -295
  19. package/templates/blocks/DD-AsideNav/Component.tsx +323 -319
  20. package/templates/blocks/DD-Banner/Component.tsx +54 -51
  21. package/templates/blocks/DD-BookCall/Component.tsx +10 -9
  22. package/templates/blocks/DD-ButtonPop/Component.tsx +118 -117
  23. package/templates/blocks/DD-Card/Component.tsx +4 -4
  24. package/templates/blocks/DD-CardTemplate01/Component.tsx +5 -5
  25. package/templates/blocks/DD-CardsWithVariantV3/Component.tsx +472 -0
  26. package/templates/blocks/DD-CardsWithVariantV3/ElectricBorder/index.tsx +203 -0
  27. package/templates/blocks/DD-CardsWithVariantV3/ElectricBorder/styles.ts +87 -0
  28. package/templates/blocks/DD-CardsWithVariantV3/ElectricBorder/useInjectStyle.ts +39 -0
  29. package/templates/blocks/DD-CardsWithVariantV3/config.ts +326 -0
  30. package/templates/blocks/DD-CardsWithVariantV3/manifest.json +110 -0
  31. package/templates/blocks/DD-Carousel-A/Component.tsx +251 -249
  32. package/templates/blocks/DD-Carousel-B/Component.tsx +405 -403
  33. package/templates/blocks/DD-Chip/Component.tsx +14 -14
  34. package/templates/blocks/DD-ComparisonTable/Component.tsx +255 -256
  35. package/templates/blocks/DD-Contact/Component.tsx +433 -434
  36. package/templates/blocks/DD-Counter/Component.tsx +18 -13
  37. package/templates/blocks/DD-DeliCard/Component.tsx +303 -0
  38. package/templates/blocks/DD-DeliCard/config.ts +186 -0
  39. package/templates/blocks/DD-DeliCard/manifest.json +94 -0
  40. package/templates/blocks/DD-FeatCat/Component.tsx +302 -302
  41. package/templates/blocks/DD-FeatProd/CircularGallery.tsx +1179 -0
  42. package/templates/blocks/DD-FeatProd/Component.tsx +484 -0
  43. package/templates/blocks/DD-FeatProd/config.ts +173 -0
  44. package/templates/blocks/DD-FeatProd/manifest.json +93 -0
  45. package/templates/blocks/DD-FeatServ/Component.tsx +607 -0
  46. package/templates/blocks/DD-FeatServ/config.ts +213 -0
  47. package/templates/blocks/DD-FeatServ/manifest.json +113 -0
  48. package/templates/blocks/DD-FeatStrip/Component.tsx +584 -585
  49. package/templates/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx +627 -628
  50. package/templates/blocks/DD-FluidBtn/Component.tsx +46 -43
  51. package/templates/blocks/DD-GooeyInfo/Component.tsx +150 -149
  52. package/templates/blocks/DD-GooeyInfo/config.ts +136 -135
  53. package/templates/blocks/DD-Hero/Component.tsx +16 -40
  54. package/templates/blocks/DD-HeroPlas/Component.tsx +50 -0
  55. package/templates/blocks/DD-HeroPlas/ThreeScene.tsx +109 -0
  56. package/templates/blocks/DD-HeroPlas/config.ts +33 -0
  57. package/templates/blocks/DD-HeroPlas/manifest.json +88 -0
  58. package/templates/blocks/DD-HorizontalScroll/Component.tsx +4 -5
  59. package/templates/blocks/DD-Icon/Component.tsx +46 -81
  60. package/templates/blocks/DD-IconButton/Component.tsx +13 -20
  61. package/templates/blocks/DD-IdTag/Component.tsx +22 -21
  62. package/templates/blocks/DD-IframeMedia/Component.tsx +14 -10
  63. package/templates/blocks/DD-LineAnim/Component.tsx +42 -36
  64. package/templates/blocks/DD-LogoMarq/Component.tsx +38 -48
  65. package/templates/blocks/DD-Lottie/Component.tsx +11 -3
  66. package/templates/blocks/DD-MasonaryMedia/Component.tsx +544 -547
  67. package/templates/blocks/DD-MasonaryMedia/config.ts +389 -389
  68. package/templates/blocks/DD-Masonry/Component.tsx +654 -644
  69. package/templates/blocks/DD-Masonry/config.ts +475 -475
  70. package/templates/blocks/DD-MaterialSwatches/Component.tsx +85 -0
  71. package/templates/blocks/DD-MaterialSwatches/config.ts +232 -0
  72. package/templates/blocks/DD-MaterialSwatches/manifest.json +84 -0
  73. package/templates/blocks/DD-MaterialSwatches/material.ts +107 -0
  74. package/templates/blocks/DD-NineCanvas/Component.tsx +129 -0
  75. package/templates/blocks/DD-NineCanvas/RenderBlocks.tsx +244 -0
  76. package/templates/blocks/DD-NineCanvas/allowedCanvasBlocks.ts +6 -0
  77. package/templates/blocks/DD-NineCanvas/blockComponents.tsx +8 -0
  78. package/templates/blocks/DD-NineCanvas/canvas/CanvasGrid.tsx +316 -0
  79. package/templates/blocks/DD-NineCanvas/canvas/RadialNav.tsx +432 -0
  80. package/templates/blocks/DD-NineCanvas/canvas/canvas-panels.css +889 -0
  81. package/templates/blocks/DD-NineCanvas/canvas/icons/custom-icons.tsx +364 -0
  82. package/templates/blocks/DD-NineCanvas/config.ts +61 -0
  83. package/templates/blocks/DD-NineCanvas/manifest.json +165 -0
  84. package/templates/blocks/DD-NineCanvas/styles.scss +152 -0
  85. package/templates/blocks/DD-NineCanvas/tooltip/get-strict-context.tsx +26 -0
  86. package/templates/blocks/DD-NineCanvas/tooltip/primitives.tsx +178 -0
  87. package/templates/blocks/DD-NineCanvas/tooltip/tooltip.tsx +71 -0
  88. package/templates/blocks/DD-NineCanvas/tooltip/use-controlled-state.tsx +33 -0
  89. package/templates/blocks/DD-NineCanvas/utilities/FadeOnScroll.tsx +68 -0
  90. package/templates/blocks/DD-NineCanvas/utilities/ParallaxWrapper.tsx +157 -0
  91. package/templates/blocks/DD-NineCanvas/utilities/renderCustomCSS.ts +5 -0
  92. package/templates/blocks/DD-NineCanvas/utilities/webglCleanup.ts +27 -0
  93. package/templates/blocks/DD-PayloadAIAssistant/Component.tsx +78 -0
  94. package/templates/blocks/DD-PayloadAIAssistant/DustedBot.tsx +590 -0
  95. package/templates/blocks/DD-PayloadAIAssistant/config.ts +37 -0
  96. package/templates/blocks/DD-PayloadAIAssistant/demo.css +125 -0
  97. package/templates/blocks/DD-PayloadAIAssistant/manifest.json +93 -0
  98. package/templates/blocks/DD-PayloadAIAssistant/source-defaults.ts +17 -0
  99. package/templates/blocks/DD-PayloadAIAssistant/styles.ts +306 -0
  100. package/templates/blocks/DD-Pricing/Component.tsx +368 -372
  101. package/templates/blocks/DD-Pricing/config.ts +215 -215
  102. package/templates/blocks/DD-Process/Component.tsx +147 -149
  103. package/templates/blocks/DD-Progress/Component.tsx +156 -141
  104. package/templates/blocks/DD-ProjHeader/Component.tsx +93 -91
  105. package/templates/blocks/DD-ProjSlider/Component.tsx +1 -1
  106. package/templates/blocks/DD-ProjSlider/config.ts +2 -2
  107. package/templates/blocks/DD-Section/Component.tsx +265 -266
  108. package/templates/blocks/DD-Separator/Component.tsx +66 -66
  109. package/templates/blocks/DD-Services/Component.tsx +176 -176
  110. package/templates/blocks/DD-ShowcaseGrid/Component.tsx +306 -307
  111. package/templates/blocks/DD-Slider-A/Component.tsx +237 -237
  112. package/templates/blocks/DD-StackCards/Component.tsx +474 -473
  113. package/templates/blocks/DD-Team/Component.tsx +247 -247
  114. package/templates/blocks/DD-TeamCards/Component.tsx +251 -251
  115. package/templates/blocks/DD-TechStack/Component.tsx +161 -168
  116. package/templates/blocks/DD-TestMarq/Component.tsx +158 -132
  117. package/templates/blocks/DD-Testim/Component.tsx +247 -247
  118. package/templates/blocks/DD-Testim2/Component.tsx +265 -256
  119. package/templates/blocks/DD-Testimonials/Component.tsx +139 -147
  120. package/templates/blocks/DD-TextMarq/Component.tsx +157 -157
  121. package/templates/blocks/DD-Thanks/Component.tsx +501 -500
  122. package/templates/blocks/DD-Work/Component.tsx +315 -315
  123. package/templates/blocks/DD-Work-B/Component.tsx +294 -294
  124. package/templates/blocks/DDHG-CTASection2/Component.tsx +183 -184
  125. package/templates/blocks/DDHG-HighlightArc/Component.tsx +246 -243
  126. package/templates/blocks/DDHG-LogoMarquee/Component.tsx +180 -93
  127. package/templates/blocks/DDHG-LogoMarquee/config.ts +154 -66
  128. package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +225 -213
  129. package/templates/blocks/DDHG-ProcessSec/Component.tsx +38 -39
  130. package/templates/blocks/DDHG-ServiceDetails/Component.tsx +11 -11
  131. package/templates/blocks/DDHG-ServiceDetails/ServiceDetailCard.tsx +30 -47
  132. package/templates/blocks/DDHG-ServiceHero/Component.tsx +10 -10
  133. package/templates/blocks/DDHG-ServiceOverview/Component.tsx +23 -23
  134. package/templates/blocks/DDHG-StatsFAQ/Component.tsx +40 -40
  135. package/templates/blocks/DDHG-TeamCards/Component.tsx +140 -131
  136. package/templates/blocks/Form/Checkbox/index.tsx +45 -0
  137. package/templates/blocks/Form/Component.tsx +163 -0
  138. package/templates/blocks/Form/Country/index.tsx +65 -0
  139. package/templates/blocks/Form/Country/options.ts +982 -0
  140. package/templates/blocks/Form/Email/index.tsx +38 -0
  141. package/templates/blocks/Form/Error/index.tsx +15 -0
  142. package/templates/blocks/Form/Message/index.tsx +13 -0
  143. package/templates/blocks/Form/Number/index.tsx +36 -0
  144. package/templates/blocks/Form/Select/index.tsx +63 -0
  145. package/templates/blocks/Form/State/index.tsx +64 -0
  146. package/templates/blocks/Form/State/options.ts +52 -0
  147. package/templates/blocks/Form/Text/index.tsx +32 -0
  148. package/templates/blocks/Form/Textarea/index.tsx +40 -0
  149. package/templates/blocks/Form/Width/index.tsx +13 -0
  150. package/templates/blocks/Form/config.ts +51 -0
  151. package/templates/blocks/Form/fields.tsx +21 -0
  152. package/templates/blocks/Form/manifest.json +168 -0
  153. package/templates/blocks/MediaBlock/Component.tsx +67 -0
  154. package/templates/blocks/MediaBlock/config.ts +14 -0
  155. package/templates/blocks/MediaBlock/manifest.json +92 -0
  156. package/templates/blocks/TransitionsDustedShowcase/Component.tsx +9 -0
  157. package/templates/blocks/TransitionsDustedShowcase/config.ts +13 -0
  158. package/templates/blocks/TransitionsDustedShowcase/manifest.json +80 -0
  159. package/templates/blocks/rawHtml/Component.tsx +25 -0
  160. package/templates/blocks/rawHtml/config.ts +56 -0
  161. package/templates/blocks/rawHtml/manifest.json +80 -0
@@ -1,16 +1,10 @@
1
1
  'use client'
2
2
 
3
- import React, { useMemo, useState } from 'react'
4
- import Image from 'next/image'
3
+ import React, { useMemo } from 'react'
4
+ import * as LucideIcons from 'lucide-react'
5
5
  import { cn } from '@/utilities/ui'
6
6
  import { Separator } from '@/components/ui/separator'
7
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
8
  export type LogoMarqueeProps = {
15
9
  logos: {
16
10
  image?: {
@@ -20,6 +14,9 @@ export type LogoMarqueeProps = {
20
14
  imageClass?: string
21
15
  imageStyle?: React.CSSProperties
22
16
  imageAltClass?: string
17
+ icon?: string | null
18
+ label?: string | null
19
+ showLabel?: boolean | null
23
20
  }[]
24
21
  speed?: number
25
22
  spacing?: number
@@ -30,29 +27,15 @@ export type LogoMarqueeProps = {
30
27
  customCSS?: string
31
28
  }
32
29
 
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
- )
30
+ function DynamicIcon({
31
+ name,
32
+ size = 36,
33
+ ...props
34
+ }: { name?: string | null } & Omit<LucideIcons.LucideProps, 'name'>) {
35
+ if (!name) return null
36
+ const Icon = (LucideIcons as unknown as Record<string, React.FC<LucideIcons.LucideProps>>)[name]
37
+ if (!Icon) return null
38
+ return <Icon size={size} {...props} />
56
39
  }
57
40
 
58
41
  export const DDLogoMarq: React.FC<LogoMarqueeProps> = ({
@@ -63,7 +46,7 @@ export const DDLogoMarq: React.FC<LogoMarqueeProps> = ({
63
46
  showBottomDivider = false,
64
47
  containerClass = 'py-8',
65
48
  customCSS,
66
- itemWidth = 190
49
+ itemWidth = 190,
67
50
  }) => {
68
51
  const validLogos = logos || []
69
52
  const marqueeItems = useMemo(() => {
@@ -75,11 +58,12 @@ export const DDLogoMarq: React.FC<LogoMarqueeProps> = ({
75
58
  if (marqueeItems.length === 0) return null
76
59
 
77
60
  const gap = Math.max(16, spacing)
61
+ const defaultIcons = ['Code2', 'Database', 'PanelsTopLeft', 'Braces', 'Workflow', 'GitBranch']
78
62
 
79
63
  const LogoTile = ({
80
64
  logo,
81
65
  index,
82
- duplicate = false
66
+ duplicate = false,
83
67
  }: {
84
68
  logo: (typeof marqueeItems)[number]
85
69
  index: number
@@ -87,18 +71,24 @@ export const DDLogoMarq: React.FC<LogoMarqueeProps> = ({
87
71
  }) => (
88
72
  <div
89
73
  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"
74
+ className="marquee-logo-tile flex shrink-0 flex-col items-center justify-center"
91
75
  style={{ width: itemWidth }}
92
76
  >
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}
77
+ <div className="flex h-20 w-20 items-center justify-center rounded-2xl border border-[#2A2A30] bg-linear-to-b from-[#1a1a1f] to-[#0f0f12] p-4 invert-[1] transition-all duration-300 hover:scale-105 hover:shadow-[0_0_30px_rgba(140,138,132,0.15)] dark:invert-[0]">
78
+ <DynamicIcon
79
+ className="text-[#9A9790]"
80
+ name={logo.icon || defaultIcons[index % defaultIcons.length]}
81
+ size={36}
82
+ />
83
+ </div>
84
+ {logo.showLabel !== false && (logo.label || logo.image?.alt) && (
85
+ <p
86
+ className={cn(
87
+ 'mt-2 text-center text-sm leading-tight text-[#9A9790]',
88
+ logo.imageAltClass,
89
+ )}
90
+ >
91
+ {logo.label || logo.image?.alt}
102
92
  </p>
103
93
  )}
104
94
  </div>
@@ -109,11 +99,11 @@ export const DDLogoMarq: React.FC<LogoMarqueeProps> = ({
109
99
  {showTopDivider && <Separator gradient className="border-seperator" />}
110
100
  <section className="logo-marquee-block mx-auto flex min-h-[280px] w-full max-w-6xl items-center overflow-hidden">
111
101
  {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>
102
+ <style>
103
+ {'@keyframes dd-logo-marquee { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-50%, 0, 0); } }' +
104
+ '.logo-marquee-track { animation: dd-logo-marquee var(--dd-logo-marquee-speed) linear infinite; }' +
105
+ '.logo-marquee-block:hover .logo-marquee-track { animation-play-state: paused; }'}
106
+ </style>
117
107
  <div className={cn('relative w-full overflow-hidden', containerClass)}>
118
108
  <div
119
109
  className="logo-marquee-track flex w-max items-center"
@@ -343,6 +343,14 @@ const LottieBlockComponent: React.FC<LottieBlockProps> = ({
343
343
  }
344
344
  }
345
345
 
346
+ if (!fileUrl) {
347
+ return (
348
+ <div className={cn(lottieBaseClass, 'flex min-h-[220px] min-w-[320px] items-center justify-center rounded-md border border-border bg-card p-8 text-center text-sm text-muted-foreground', containerClass)}>
349
+ Lottie animation placeholder
350
+ </div>
351
+ )
352
+ }
353
+
346
354
  const containerStyles: React.CSSProperties = {
347
355
  width: width || 'auto',
348
356
  height: height || 'auto',
@@ -424,7 +432,7 @@ const LottieBlockComponent: React.FC<LottieBlockProps> = ({
424
432
  aria-label="Play animation"
425
433
  type="button"
426
434
  >
427
- ▶️
435
+ ▶️
428
436
  </button>
429
437
  <button
430
438
  onClick={handlePause}
@@ -432,7 +440,7 @@ const LottieBlockComponent: React.FC<LottieBlockProps> = ({
432
440
  aria-label="Pause animation"
433
441
  type="button"
434
442
  >
435
- ⏸️
443
+ ⏸️
436
444
  </button>
437
445
  <button
438
446
  onClick={handleStop}
@@ -440,7 +448,7 @@ const LottieBlockComponent: React.FC<LottieBlockProps> = ({
440
448
  aria-label="Stop animation"
441
449
  type="button"
442
450
  >
443
- ⏹️
451
+ ⏹️
444
452
  </button>
445
453
  </div>
446
454
  )}