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.
Files changed (249) hide show
  1. package/README.md +35 -0
  2. package/package.json +5 -2
  3. package/src/cli.js +39 -3
  4. package/src/commands/shop.js +59 -0
  5. package/src/commands/warehouse.js +73 -0
  6. package/src/utils/paths.js +13 -13
  7. package/templates/blocks/DD-Accordion/Component.tsx +229 -0
  8. package/templates/blocks/DD-Accordion/README.md +3 -0
  9. package/templates/blocks/DD-Accordion/config.ts +73 -0
  10. package/templates/blocks/DD-Accordion/manifest.json +75 -0
  11. package/templates/blocks/DD-AnimText/Component.tsx +788 -0
  12. package/templates/blocks/DD-AnimText/README.md +3 -0
  13. package/templates/blocks/DD-AnimText/config.ts +295 -0
  14. package/templates/blocks/DD-AnimText/manifest.json +85 -0
  15. package/templates/blocks/DD-AsideNav/Component.tsx +321 -0
  16. package/templates/blocks/DD-AsideNav/config.ts +204 -0
  17. package/templates/blocks/DD-AsideNav/manifest.json +80 -0
  18. package/templates/blocks/DD-Banner/Component.tsx +51 -0
  19. package/templates/blocks/DD-Banner/config.ts +57 -0
  20. package/templates/blocks/DD-Banner/manifest.json +72 -0
  21. package/templates/blocks/DD-BgLightning/Component.tsx +44 -0
  22. package/templates/blocks/DD-BgLightning/README.md +3 -0
  23. package/templates/blocks/DD-BgLightning/config.ts +97 -0
  24. package/templates/blocks/DD-BgLightning/manifest.json +79 -0
  25. package/templates/blocks/DD-BookCall/Component.tsx +535 -535
  26. package/templates/blocks/DD-BookCall/config.ts +238 -238
  27. package/templates/blocks/DD-ButtonPop/Component.tsx +117 -0
  28. package/templates/blocks/DD-ButtonPop/config.ts +105 -0
  29. package/templates/blocks/DD-ButtonPop/manifest.json +88 -0
  30. package/templates/blocks/DD-ButtonPop/svg-icons/Dust2.tsx +167 -0
  31. package/templates/blocks/DD-Card/Component.tsx +251 -0
  32. package/templates/blocks/DD-Card/README.md +4 -0
  33. package/templates/blocks/DD-Card/config.ts +154 -0
  34. package/templates/blocks/DD-Card/manifest.json +82 -0
  35. package/templates/blocks/DD-CardTemplate01/Component.tsx +140 -140
  36. package/templates/blocks/DD-CardTemplate01/config.ts +106 -106
  37. package/templates/blocks/DD-Carousel-A/Component.tsx +249 -249
  38. package/templates/blocks/DD-Carousel-B/Component.tsx +403 -403
  39. package/templates/blocks/DD-Chip/Component.tsx +250 -0
  40. package/templates/blocks/DD-Chip/EXAMPLES.md +313 -0
  41. package/templates/blocks/DD-Chip/README.md +202 -0
  42. package/templates/blocks/DD-Chip/config.ts +369 -0
  43. package/templates/blocks/DD-Chip/manifest.json +74 -0
  44. package/templates/blocks/DD-ComparisonTable/Component.tsx +256 -256
  45. package/templates/blocks/DD-Contact/Component.tsx +435 -434
  46. package/templates/blocks/DD-Contact/config.ts +22 -22
  47. package/templates/blocks/DD-Counter/Component.tsx +190 -0
  48. package/templates/blocks/DD-Counter/README.md +4 -0
  49. package/templates/blocks/DD-Counter/config.ts +291 -0
  50. package/templates/blocks/DD-Counter/manifest.json +74 -0
  51. package/templates/blocks/DD-CustomCSS/Component.tsx +8 -0
  52. package/templates/blocks/DD-CustomCSS/README.md +4 -0
  53. package/templates/blocks/DD-CustomCSS/addToLayout.md +5 -0
  54. package/templates/blocks/DD-CustomCSS/config.ts +22 -0
  55. package/templates/blocks/DD-CustomCSS/manifest.json +72 -0
  56. package/templates/blocks/DD-CustomCSS/renderCustomCSS.md +7 -0
  57. package/templates/blocks/DD-FeatCat/Component.tsx +302 -302
  58. package/templates/blocks/DD-FeatCat/config.ts +201 -201
  59. package/templates/blocks/DD-FeatStrip/Component.tsx +585 -585
  60. package/templates/blocks/DD-FeatStrip/config.ts +134 -134
  61. package/templates/blocks/DD-FluidBtn/ButtonsEyeCatching.tsx +628 -0
  62. package/templates/blocks/DD-FluidBtn/Component.tsx +43 -0
  63. package/templates/blocks/DD-FluidBtn/README.md +6 -0
  64. package/templates/blocks/DD-FluidBtn/config.ts +102 -0
  65. package/templates/blocks/DD-FluidBtn/manifest.json +86 -0
  66. package/templates/blocks/DD-GooeyInfo/Component.tsx +149 -0
  67. package/templates/blocks/DD-GooeyInfo/config.ts +135 -0
  68. package/templates/blocks/DD-GooeyInfo/manifest.json +72 -0
  69. package/templates/blocks/DD-Hero/Component.tsx +297 -297
  70. package/templates/blocks/DD-Hero/config.ts +267 -267
  71. package/templates/blocks/DD-HorizontalScroll/Component.tsx +936 -936
  72. package/templates/blocks/DD-HorizontalScroll/config.ts +231 -231
  73. package/templates/blocks/DD-Icon/Component.tsx +287 -0
  74. package/templates/blocks/DD-Icon/README.md +4 -0
  75. package/templates/blocks/DD-Icon/config.ts +258 -0
  76. package/templates/blocks/DD-Icon/hooks/revalidateBlockIds.ts +66 -0
  77. package/templates/blocks/DD-Icon/manifest.json +82 -0
  78. package/templates/blocks/DD-IconButton/Component.tsx +455 -0
  79. package/templates/blocks/DD-IconButton/README.md +326 -0
  80. package/templates/blocks/DD-IconButton/config.ts +239 -0
  81. package/templates/blocks/DD-IconButton/manifest.json +85 -0
  82. package/templates/blocks/DD-IdTag/Component.tsx +21 -0
  83. package/templates/blocks/DD-IdTag/README.md +4 -0
  84. package/templates/blocks/DD-IdTag/config.ts +41 -0
  85. package/templates/blocks/DD-IdTag/manifest.json +72 -0
  86. package/templates/blocks/DD-Iframe/Component.tsx +45 -0
  87. package/templates/blocks/DD-Iframe/README.md +4 -0
  88. package/templates/blocks/DD-Iframe/config.ts +47 -0
  89. package/templates/blocks/DD-Iframe/manifest.json +72 -0
  90. package/templates/blocks/DD-IframeMedia/Component.tsx +133 -0
  91. package/templates/blocks/DD-IframeMedia/README.md +4 -0
  92. package/templates/blocks/DD-IframeMedia/config.ts +79 -0
  93. package/templates/blocks/DD-IframeMedia/manifest.json +72 -0
  94. package/templates/blocks/DD-LineAnim/Component.tsx +36 -0
  95. package/templates/blocks/DD-LineAnim/README.md +4 -0
  96. package/templates/blocks/DD-LineAnim/config.ts +90 -0
  97. package/templates/blocks/DD-LineAnim/manifest.json +80 -0
  98. package/templates/blocks/DD-LinkGrid/Component.tsx +119 -0
  99. package/templates/blocks/DD-LinkGrid/README.md +4 -0
  100. package/templates/blocks/DD-LinkGrid/config.ts +51 -0
  101. package/templates/blocks/DD-LinkGrid/manifest.json +74 -0
  102. package/templates/blocks/DD-LogoMarq/Component.tsx +132 -0
  103. package/templates/blocks/DD-LogoMarq/README.md +4 -0
  104. package/templates/blocks/DD-LogoMarq/config.ts +264 -0
  105. package/templates/blocks/DD-LogoMarq/manifest.json +82 -0
  106. package/templates/blocks/DD-Lottie/Component.tsx +459 -0
  107. package/templates/blocks/DD-Lottie/README.md +4 -0
  108. package/templates/blocks/DD-Lottie/config.ts +379 -0
  109. package/templates/blocks/DD-Lottie/index.tsx +28 -0
  110. package/templates/blocks/DD-Lottie/manifest.json +83 -0
  111. package/templates/blocks/DD-MagicBento/Component.tsx +777 -0
  112. package/templates/blocks/DD-MagicBento/README.md +4 -0
  113. package/templates/blocks/DD-MagicBento/config.ts +264 -0
  114. package/templates/blocks/DD-MagicBento/manifest.json +74 -0
  115. package/templates/blocks/DD-MasonaryMedia/Component.tsx +545 -545
  116. package/templates/blocks/DD-MasonaryMedia/config.ts +2 -2
  117. package/templates/blocks/DD-MasonaryMedia/vendor.d.ts +2 -2
  118. package/templates/blocks/DD-Masonry/Component.tsx +645 -0
  119. package/templates/blocks/DD-Masonry/README.md +4 -0
  120. package/templates/blocks/DD-Masonry/config.ts +475 -0
  121. package/templates/blocks/DD-Masonry/manifest.json +82 -0
  122. package/templates/blocks/DD-Pricing/Component.tsx +2 -5
  123. package/templates/blocks/DD-Process/Component.tsx +2 -4
  124. package/templates/blocks/DD-Process/config.ts +150 -150
  125. package/templates/blocks/DD-Progress/Component.tsx +156 -0
  126. package/templates/blocks/DD-Progress/README.md +4 -0
  127. package/templates/blocks/DD-Progress/config.ts +175 -0
  128. package/templates/blocks/DD-Progress/manifest.json +74 -0
  129. package/templates/blocks/DD-ProjHeader/Component.tsx +91 -0
  130. package/templates/blocks/DD-ProjHeader/README.md +4 -0
  131. package/templates/blocks/DD-ProjHeader/config.ts +96 -0
  132. package/templates/blocks/DD-ProjHeader/manifest.json +72 -0
  133. package/templates/blocks/DD-ProjSlider/Component.tsx +123 -0
  134. package/templates/blocks/DD-ProjSlider/README.md +4 -0
  135. package/templates/blocks/DD-ProjSlider/config.ts +64 -0
  136. package/templates/blocks/DD-ProjSlider/manifest.json +72 -0
  137. package/templates/blocks/DD-ScrollText/Component.tsx +114 -0
  138. package/templates/blocks/DD-ScrollText/README.md +4 -0
  139. package/templates/blocks/DD-ScrollText/config.ts +58 -0
  140. package/templates/blocks/DD-ScrollText/manifest.json +72 -0
  141. package/templates/blocks/DD-Section/Component.tsx +266 -266
  142. package/templates/blocks/DD-Separator/Component.tsx +66 -0
  143. package/templates/blocks/DD-Separator/README.md +4 -0
  144. package/templates/blocks/DD-Separator/config.ts +58 -0
  145. package/templates/blocks/DD-Separator/manifest.json +72 -0
  146. package/templates/blocks/DD-Services/Component.tsx +176 -176
  147. package/templates/blocks/DD-Services/config.ts +149 -149
  148. package/templates/blocks/DD-ShowcaseGrid/Component.tsx +307 -307
  149. package/templates/blocks/DD-Slider-A/Component.tsx +1 -1
  150. package/templates/blocks/DD-StackCards/Component.tsx +1 -1
  151. package/templates/blocks/DD-StackCards/config.ts +399 -399
  152. package/templates/blocks/DD-Team/Component.tsx +247 -247
  153. package/templates/blocks/DD-Team/config.ts +173 -173
  154. package/templates/blocks/DD-TeamCards/Component.tsx +251 -0
  155. package/templates/blocks/DD-TeamCards/README.md +4 -0
  156. package/templates/blocks/DD-TeamCards/config.ts +302 -0
  157. package/templates/blocks/DD-TeamCards/manifest.json +74 -0
  158. package/templates/blocks/DD-TechStack/Component.tsx +174 -174
  159. package/templates/blocks/DD-TechStack/config.ts +153 -153
  160. package/templates/blocks/DD-TestMarq/Component.tsx +132 -0
  161. package/templates/blocks/DD-TestMarq/README.md +4 -0
  162. package/templates/blocks/DD-TestMarq/RowLabel.tsx +9 -0
  163. package/templates/blocks/DD-TestMarq/config.ts +88 -0
  164. package/templates/blocks/DD-TestMarq/manifest.json +72 -0
  165. package/templates/blocks/DD-Testim/Component.tsx +247 -0
  166. package/templates/blocks/DD-Testim/README.md +4 -0
  167. package/templates/blocks/DD-Testim/config.ts +101 -0
  168. package/templates/blocks/DD-Testim/manifest.json +75 -0
  169. package/templates/blocks/DD-Testim2/Component.tsx +256 -0
  170. package/templates/blocks/DD-Testim2/README.md +4 -0
  171. package/templates/blocks/DD-Testim2/config.ts +100 -0
  172. package/templates/blocks/DD-Testim2/manifest.json +74 -0
  173. package/templates/blocks/DD-Testimonials/Component.tsx +139 -147
  174. package/templates/blocks/DD-Testimonials/config.ts +120 -120
  175. package/templates/blocks/DD-TextMarq/Component.tsx +157 -0
  176. package/templates/blocks/DD-TextMarq/README.md +4 -0
  177. package/templates/blocks/DD-TextMarq/config.ts +237 -0
  178. package/templates/blocks/DD-TextMarq/manifest.json +82 -0
  179. package/templates/blocks/DD-Thanks/Component.tsx +501 -0
  180. package/templates/blocks/DD-Thanks/README.md +4 -0
  181. package/templates/blocks/DD-Thanks/config.ts +224 -0
  182. package/templates/blocks/DD-Thanks/manifest.json +72 -0
  183. package/templates/blocks/DD-VertMarq/Component.tsx +154 -0
  184. package/templates/blocks/DD-VertMarq/README.md +4 -0
  185. package/templates/blocks/DD-VertMarq/config.ts +236 -0
  186. package/templates/blocks/DD-VertMarq/dist/index.css +6 -0
  187. package/templates/blocks/DD-VertMarq/dist/index.min.css +1 -0
  188. package/templates/blocks/DD-VertMarq/manifest.json +74 -0
  189. package/templates/blocks/DD-Work/Component.tsx +318 -315
  190. package/templates/blocks/DD-Work/config.ts +165 -165
  191. package/templates/blocks/DD-Work-B/Component.tsx +294 -294
  192. package/templates/blocks/DDHG-CTASection2/Component.tsx +185 -0
  193. package/templates/blocks/DDHG-CTASection2/config.ts +140 -0
  194. package/templates/blocks/DDHG-CTASection2/manifest.json +45 -0
  195. package/templates/blocks/DDHG-HighlightArc/Component.tsx +243 -0
  196. package/templates/blocks/DDHG-HighlightArc/config.ts +85 -0
  197. package/templates/blocks/DDHG-HighlightArc/manifest.json +46 -0
  198. package/templates/blocks/DDHG-LogoMarquee/Component.tsx +143 -0
  199. package/templates/blocks/DDHG-LogoMarquee/config.ts +154 -0
  200. package/templates/blocks/DDHG-LogoMarquee/manifest.json +39 -0
  201. package/templates/blocks/DDHG-NavCodeGrid/Component.tsx +227 -0
  202. package/templates/blocks/DDHG-NavCodeGrid/config.ts +64 -0
  203. package/templates/blocks/DDHG-NavCodeGrid/manifest.json +45 -0
  204. package/templates/blocks/DDHG-ProcessSec/Component.tsx +574 -0
  205. package/templates/blocks/DDHG-ProcessSec/config.ts +170 -0
  206. package/templates/blocks/DDHG-ProcessSec/manifest.json +56 -0
  207. package/templates/blocks/DDHG-ServiceDetails/Component.tsx +164 -0
  208. package/templates/blocks/DDHG-ServiceDetails/ServiceDetailCard.tsx +390 -0
  209. package/templates/blocks/DDHG-ServiceDetails/config.ts +77 -0
  210. package/templates/blocks/DDHG-ServiceDetails/manifest.json +50 -0
  211. package/templates/blocks/DDHG-ServiceHero/Component.tsx +234 -0
  212. package/templates/blocks/DDHG-ServiceHero/config.ts +49 -0
  213. package/templates/blocks/DDHG-ServiceHero/manifest.json +26 -0
  214. package/templates/blocks/DDHG-ServiceOverview/Component.tsx +277 -0
  215. package/templates/blocks/DDHG-ServiceOverview/config.ts +64 -0
  216. package/templates/blocks/DDHG-ServiceOverview/manifest.json +44 -0
  217. package/templates/blocks/DDHG-StatsFAQ/Component.tsx +389 -0
  218. package/templates/blocks/DDHG-StatsFAQ/config.ts +204 -0
  219. package/templates/blocks/DDHG-StatsFAQ/manifest.json +45 -0
  220. package/templates/blocks/DDHG-TeamCards/Component.tsx +169 -0
  221. package/templates/blocks/DDHG-TeamCards/config.ts +48 -0
  222. package/templates/blocks/DDHG-TeamCards/manifest.json +29 -0
  223. package/templates/shared/src/components/BgLightning/index.tsx +242 -0
  224. package/templates/shared/src/components/ui/ShareButton/index.tsx +80 -0
  225. package/templates/shared/src/components/ui/anims/FadeOnScroll.tsx +48 -0
  226. package/templates/shared/src/components/ui/anims/FadeUpOnInView.tsx +63 -0
  227. package/templates/shared/src/components/ui/anims/GlareHover.tsx +111 -0
  228. package/templates/shared/src/components/ui/anims/LineAnims.tsx +81 -0
  229. package/templates/shared/src/components/ui/anims/TitleAnims01.tsx +54 -0
  230. package/templates/shared/src/components/ui/anims/animation-container.tsx +29 -0
  231. package/templates/shared/src/components/ui/anims/blur-in.tsx +26 -0
  232. package/templates/shared/src/components/ui/anims/counter.tsx +53 -0
  233. package/templates/shared/src/components/ui/anims/fade.tsx +83 -0
  234. package/templates/shared/src/components/ui/anims/gradual-spacing.tsx +39 -0
  235. package/templates/shared/src/components/ui/anims/pull-up.tsx +93 -0
  236. package/templates/shared/src/components/ui/anims/reveal-text.tsx +76 -0
  237. package/templates/shared/src/components/ui/anims/rotate-words.tsx +43 -0
  238. package/templates/shared/src/components/ui/anims/shiny-text.tsx +58 -0
  239. package/templates/shared/src/components/ui/anims/shuffle-text.tsx +85 -0
  240. package/templates/shared/src/components/ui/anims/split-text.tsx +211 -0
  241. package/templates/shared/src/components/ui/anims/staggered-fade.tsx +133 -0
  242. package/templates/shared/src/components/ui/anims/text-scroll.tsx +111 -0
  243. package/templates/shared/src/components/ui/anims/typing-effect.tsx +112 -0
  244. package/templates/shared/src/components/ui/button-dusted-fluid/index.tsx +1521 -0
  245. package/templates/shared/src/components/ui/separator.tsx +85 -0
  246. package/templates/shared/src/hooks/useBodyScrollLock.ts +97 -0
  247. package/templates/shared/src/hooks/useClickOutside.ts +28 -0
  248. package/templates/shared/src/utilities/renderCustomCSS.ts +5 -0
  249. package/templates/shared/src/utilities/smoothScroll.ts +65 -0
@@ -0,0 +1,4 @@
1
+ # DD-Card
2
+
3
+ Portable first-pass conversion of `CardBlock` from ROUND-TWO-CONVERSION. Project-specific roots and nested unconverted block dependencies were intentionally replaced with local rendering so the template can install into a clean Payload project.
4
+
@@ -0,0 +1,154 @@
1
+ import type { Block } from 'payload'
2
+
3
+ import { defaultLexical } from '@/fields/defaultLexical'
4
+
5
+ export const DDCard: Block = {
6
+ slug: 'DD-Card',
7
+ interfaceName: 'DDCard',
8
+ labels: {
9
+ singular: 'Card Block',
10
+ plural: 'Card Blocks'
11
+ },
12
+ fields: [
13
+ // Block-level settings
14
+ {
15
+ admin: {
16
+ initCollapsed: true,
17
+ className: 'custom-group-class'
18
+ },
19
+ type: 'collapsible',
20
+ label: 'Block Settings',
21
+ fields: [
22
+ {
23
+ type: 'row',
24
+ fields: [
25
+ {
26
+ name: 'priority',
27
+ type: 'checkbox',
28
+ label: 'High Priority Loading',
29
+ defaultValue: false,
30
+ admin: {
31
+ description:
32
+ 'Enable for above-the-fold cards only. Improves LCP but should only be used when this card block appears at the top of the page.',
33
+ width: '50%'
34
+ }
35
+ },
36
+ {
37
+ name: 'aspectRatio',
38
+ type: 'select',
39
+ label: 'Image Aspect Ratio',
40
+ defaultValue: 'video',
41
+ options: [
42
+ { label: '16:9 Video', value: 'video' },
43
+ { label: '1:1 Square', value: 'square' },
44
+ { label: '3:4 Portrait', value: 'portrait' },
45
+ { label: 'Auto (Original)', value: 'auto' }
46
+ ],
47
+ admin: {
48
+ description: 'Set consistent aspect ratio for all card images in this block.',
49
+ width: '50%'
50
+ }
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ name: 'cardScrollSpeed',
56
+ type: 'text',
57
+ label: 'Scroll Animation Speed',
58
+ defaultValue: '0.2',
59
+ admin: {
60
+ description: 'Animation speed for scroll effects. Default: 0.2',
61
+ placeholder: '0.2'
62
+ }
63
+ }
64
+ ]
65
+ },
66
+ // Cards array
67
+ {
68
+ name: 'cards',
69
+ label: 'Cards',
70
+ type: 'array',
71
+ required: false,
72
+ minRows: 1,
73
+ fields: [
74
+ {
75
+ name: 'image',
76
+ label: 'Card Image',
77
+ type: 'upload',
78
+ relationTo: 'media',
79
+ required: false,
80
+ admin: {
81
+ description: 'Image will be displayed according to the aspect ratio setting above.'
82
+ }
83
+ },
84
+ // Custom styling for individual cards
85
+ {
86
+ admin: {
87
+ initCollapsed: true,
88
+ className: 'custom-css-class'
89
+ },
90
+ type: 'collapsible',
91
+ label: 'Card Styling (Optional)',
92
+ fields: [
93
+ {
94
+ type: 'row',
95
+ fields: [
96
+ {
97
+ name: 'customClass',
98
+ label: 'Custom Image Class',
99
+ type: 'text',
100
+ required: false,
101
+ admin: {
102
+ description:
103
+ 'Override default image classes. Use Tailwind classes for styling.',
104
+ placeholder: 'rounded-lg border-2',
105
+ width: '50%'
106
+ }
107
+ },
108
+ {
109
+ name: 'cardBlockClass',
110
+ label: 'Custom Card Class',
111
+ type: 'text',
112
+ required: false,
113
+ admin: {
114
+ description: 'Override default card container classes.',
115
+ placeholder: 'shadow-xl bg-accent',
116
+ width: '50%'
117
+ }
118
+ }
119
+ ]
120
+ }
121
+ ]
122
+ },
123
+ {
124
+ name: 'content',
125
+ label: 'Card Content',
126
+ type: 'richText',
127
+ required: false,
128
+ admin: {
129
+ description: 'Rich text content for the card body.'
130
+ },
131
+ editor: defaultLexical
132
+ },
133
+ {
134
+ name: 'link',
135
+ label: 'Card Link (Optional)',
136
+ type: 'group',
137
+ fields: [
138
+ {
139
+ name: 'url',
140
+ label: 'URL',
141
+ type: 'text',
142
+ required: false,
143
+ admin: {
144
+ description:
145
+ 'Make the entire card clickable. If URL starts with "/", it will be treated as an internal link. Otherwise, it opens in a new tab.',
146
+ placeholder: '/about or https://example.com'
147
+ }
148
+ }
149
+ ]
150
+ }
151
+ ]
152
+ }
153
+ ]
154
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "type": "block",
3
+ "name": "DD-Card",
4
+ "label": "Card",
5
+ "sourceName": "CardBlock",
6
+ "portableName": "DD-Card",
7
+ "slug": "DD-Card",
8
+ "version": "0.0.1",
9
+ "source": {
10
+ "repo": "Hadizainal/DesignsDustedv3",
11
+ "originalPath": "src/blocks/ROUND-TWO-CONVERSION/CardBlock",
12
+ "originalSlug": "cardBlock",
13
+ "originalConfigExport": "CardBlock",
14
+ "originalComponentExport": "CardBlock",
15
+ "originalInterfaceName": "DDCard"
16
+ },
17
+ "files": [
18
+ {
19
+ "from": "Component.tsx",
20
+ "to": "src/blocks/DD-Card/Component.tsx"
21
+ },
22
+ {
23
+ "from": "config.ts",
24
+ "to": "src/blocks/DD-Card/config.ts"
25
+ }
26
+ ],
27
+ "dependencies": [
28
+ "framer-motion"
29
+ ],
30
+ "sharedFiles": [
31
+ {
32
+ "from": "templates/shared/src/components/ui/anims",
33
+ "to": "src/components/ui/anims",
34
+ "required": true,
35
+ "safeToCopy": true
36
+ }
37
+ ],
38
+ "requiredProjectFiles": [],
39
+ "optionalProjectFiles": [],
40
+ "collectionRegistration": {
41
+ "enabled": true,
42
+ "collections": [
43
+ "Pages",
44
+ "Posts"
45
+ ]
46
+ },
47
+ "renderBlocksRegistration": {
48
+ "enabled": true
49
+ },
50
+ "renderBlocksBehavior": {
51
+ "wrapperless": false
52
+ },
53
+ "pageRouteIntegration": {
54
+ "required": false,
55
+ "manualSteps": []
56
+ },
57
+ "manual": [
58
+ "Register DDCard in Pages/Posts blocks arrays if automatic registration was skipped.",
59
+ "Register DD-Card in RenderBlocks if automatic registration was skipped.",
60
+ "Run payload generate:types after schema changes."
61
+ ],
62
+ "manualSteps": [
63
+ "Register DDCard in Pages/Posts blocks arrays if automatic registration was skipped.",
64
+ "Register DD-Card in RenderBlocks if automatic registration was skipped.",
65
+ "Run payload generate:types after schema changes."
66
+ ],
67
+ "patchTargets": {
68
+ "blockConfigRegistration": {
69
+ "description": "Installer can add import { DDCard } from '@/blocks/DD-Card/config' and add DDCard to clear Pages/Posts block arrays."
70
+ },
71
+ "renderBlocksRegistration": {
72
+ "description": "Installer can register DD-Card in RenderBlocks."
73
+ }
74
+ },
75
+ "notes": [
76
+ "Converted from ROUND-TWO-CONVERSION as a portable Dusted template.",
77
+ "Project-specific imports were replaced with local, dependency-light rendering where required.",
78
+ "Manifest includes shared local support files required by original DesignsDusted source imports."
79
+ ],
80
+ "exportName": "DDCard",
81
+ "interfaceName": "DDCard"
82
+ }
@@ -1,140 +1,140 @@
1
- 'use client'
2
- import React, { useRef, useState } from 'react'
3
- import * as LucideIcons from 'lucide-react'
4
- import { cn } from '@/utilities/ui'
5
- export type DDCardTemplate01Props = Record<string, any>
6
-
7
- // ─── SpotlightCard ────────────────────────────────────────────────────────────
8
- interface SpotlightCardProps {
9
- children: React.ReactNode
10
- className?: string
11
- spotlightColor?: string
12
- enableTilt?: boolean
13
- style?: React.CSSProperties
14
- }
15
-
16
- function SpotlightCard({
17
- children,
18
- className,
19
- spotlightColor = 'rgba(214,211,209,0.08)',
20
- enableTilt = true,
21
- style,
22
- }: SpotlightCardProps) {
23
- const cardRef = useRef<HTMLDivElement>(null)
24
- const [pos, setPos] = useState<{ x: number; y: number } | null>(null)
25
- const [tilt, setTilt] = useState({ rx: 0, ry: 0 })
26
-
27
- const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {
28
- if (!cardRef.current) return
29
- const rect = cardRef.current.getBoundingClientRect()
30
- const x = e.clientX - rect.left
31
- const y = e.clientY - rect.top
32
- setPos({ x, y })
33
- if (enableTilt) {
34
- const rx = (y / rect.height - 0.5) * -10
35
- const ry = (x / rect.width - 0.5) * 10
36
- setTilt({ rx, ry })
37
- }
38
- }
39
-
40
- const handleMouseLeave = () => {
41
- setPos(null)
42
- setTilt({ rx: 0, ry: 0 })
43
- }
44
-
45
- return (
46
- <div
47
- ref={cardRef}
48
- className={cn('relative overflow-hidden', className)}
49
- onMouseMove={handleMouseMove}
50
- onMouseLeave={handleMouseLeave}
51
- style={
52
- enableTilt
53
- ? {
54
- ...style,
55
- transform: `perspective(800px) rotateX(${tilt.rx}deg) rotateY(${tilt.ry}deg)`,
56
- transition: 'transform 0.1s ease',
57
- }
58
- : style
59
- }
60
- >
61
- {pos && (
62
- <div
63
- className="pointer-events-none absolute inset-0 z-0 transition-opacity duration-300"
64
- style={{
65
- background: `radial-gradient(400px circle at ${pos.x}px ${pos.y}px, ${spotlightColor}, transparent 60%)`,
66
- }}
67
- />
68
- )}
69
- <div className="relative z-10">{children}</div>
70
- </div>
71
- )
72
- }
73
-
74
- // ─── Dynamic Icon ─────────────────────────────────────────────────────────────
75
- function DynamicIcon({
76
- name,
77
- ...props
78
- }: { name?: string | null } & Omit<LucideIcons.LucideProps, 'name'>) {
79
- if (!name) return null
80
- const Icon = (LucideIcons as unknown as Record<string, React.FC<LucideIcons.LucideProps>>)[name]
81
- if (!Icon) return null
82
- return <Icon {...props} />
83
- }
84
-
85
- // ─── Component ────────────────────────────────────────────────────────────────
86
- export const DDCardTemplate01: React.FC<DDCardTemplate01Props> = ({
87
- eyebrow,
88
- headline,
89
- description,
90
- iconName = 'ShieldCheck',
91
- glowColor = 'rgba(214,211,209,0.08)',
92
- enableTilt = true,
93
- minHeight = '220px',
94
- className,
95
- sectionId,
96
- customCSS,
97
- }) => {
98
- return (
99
- <div id={sectionId ?? undefined} className="spotlight-card overflow-clip py-8">
100
- {customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
101
- <SpotlightCard
102
- spotlightColor={glowColor ?? undefined}
103
- enableTilt={enableTilt ?? true}
104
- className={cn(
105
- 'border border-stone-50 dark:border-stone-950 bg-stone-100 dark:bg-stone-900 hover:shadow-2xl transition-all hover:transition-all duration-900 hover:duration-900 flex flex-col justify-between p-6 max-w-[100rem] mx-auto',
106
- className,
107
- )}
108
- style={{ minHeight: minHeight ?? '220px' }}
109
- >
110
- #BlockName-DDCardTemplate01
111
- <div className="w-11 h-11 flex items-center justify-center rounded-xl border border-stone-300 text-stone-300 mb-6">
112
- <DynamicIcon
113
- className="text-stone-600 dark:text-stone-300"
114
- name={iconName ?? 'ShieldCheck'}
115
- size={20}
116
- />
117
- </div>
118
- <div>
119
- {eyebrow && (
120
- <p className="text-xs font-semibold text-stone-600 dark:text-stone-400 tracking-widest uppercase mb-2">
121
- {eyebrow}
122
- </p>
123
- )}
124
- {headline && (
125
- <h3 className="text-2xl font-semibold text-stone-900 dark:text-stone-50 mb-3">
126
- {headline}
127
- </h3>
128
- )}
129
- {description && (
130
- <p className="text-sm text-stone-600 dark:text-stone-400 leading-relaxed max-w-md">
131
- {description}
132
- </p>
133
- )}
134
- </div>
135
- </SpotlightCard>
136
- </div>
137
- )
138
- }
139
-
140
- export default DDCardTemplate01
1
+ 'use client'
2
+ import React, { useRef, useState } from 'react'
3
+ import * as LucideIcons from 'lucide-react'
4
+ import { cn } from '@/utilities/ui'
5
+ export type DDCardTemplate01Props = Record<string, any>
6
+
7
+ // ─── SpotlightCard ────────────────────────────────────────────────────────────
8
+ interface SpotlightCardProps {
9
+ children: React.ReactNode
10
+ className?: string
11
+ spotlightColor?: string
12
+ enableTilt?: boolean
13
+ style?: React.CSSProperties
14
+ }
15
+
16
+ function SpotlightCard({
17
+ children,
18
+ className,
19
+ spotlightColor = 'rgba(214,211,209,0.08)',
20
+ enableTilt = true,
21
+ style,
22
+ }: SpotlightCardProps) {
23
+ const cardRef = useRef<HTMLDivElement>(null)
24
+ const [pos, setPos] = useState<{ x: number; y: number } | null>(null)
25
+ const [tilt, setTilt] = useState({ rx: 0, ry: 0 })
26
+
27
+ const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {
28
+ if (!cardRef.current) return
29
+ const rect = cardRef.current.getBoundingClientRect()
30
+ const x = e.clientX - rect.left
31
+ const y = e.clientY - rect.top
32
+ setPos({ x, y })
33
+ if (enableTilt) {
34
+ const rx = (y / rect.height - 0.5) * -10
35
+ const ry = (x / rect.width - 0.5) * 10
36
+ setTilt({ rx, ry })
37
+ }
38
+ }
39
+
40
+ const handleMouseLeave = () => {
41
+ setPos(null)
42
+ setTilt({ rx: 0, ry: 0 })
43
+ }
44
+
45
+ return (
46
+ <div
47
+ ref={cardRef}
48
+ className={cn('relative overflow-hidden', className)}
49
+ onMouseMove={handleMouseMove}
50
+ onMouseLeave={handleMouseLeave}
51
+ style={
52
+ enableTilt
53
+ ? {
54
+ ...style,
55
+ transform: `perspective(800px) rotateX(${tilt.rx}deg) rotateY(${tilt.ry}deg)`,
56
+ transition: 'transform 0.1s ease',
57
+ }
58
+ : style
59
+ }
60
+ >
61
+ {pos && (
62
+ <div
63
+ className="pointer-events-none absolute inset-0 z-0 transition-opacity duration-300"
64
+ style={{
65
+ background: `radial-gradient(400px circle at ${pos.x}px ${pos.y}px, ${spotlightColor}, transparent 60%)`,
66
+ }}
67
+ />
68
+ )}
69
+ <div className="relative z-10">{children}</div>
70
+ </div>
71
+ )
72
+ }
73
+
74
+ // ─── Dynamic Icon ─────────────────────────────────────────────────────────────
75
+ function DynamicIcon({
76
+ name,
77
+ ...props
78
+ }: { name?: string | null } & Omit<LucideIcons.LucideProps, 'name'>) {
79
+ if (!name) return null
80
+ const Icon = (LucideIcons as unknown as Record<string, React.FC<LucideIcons.LucideProps>>)[name]
81
+ if (!Icon) return null
82
+ return <Icon {...props} />
83
+ }
84
+
85
+ // ─── Component ────────────────────────────────────────────────────────────────
86
+ export const DDCardTemplate01: React.FC<DDCardTemplate01Props> = ({
87
+ eyebrow,
88
+ headline,
89
+ description,
90
+ iconName = 'ShieldCheck',
91
+ glowColor = 'rgba(214,211,209,0.08)',
92
+ enableTilt = true,
93
+ minHeight = '220px',
94
+ className,
95
+ sectionId,
96
+ customCSS,
97
+ }) => {
98
+ return (
99
+ <div id={sectionId ?? undefined} className="spotlight-card overflow-clip py-8">
100
+ {customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
101
+ <SpotlightCard
102
+ spotlightColor={glowColor ?? undefined}
103
+ enableTilt={enableTilt ?? true}
104
+ className={cn(
105
+ 'border border-stone-50 dark:border-stone-950 bg-stone-100 dark:bg-stone-900 hover:shadow-2xl transition-all hover:transition-all duration-900 hover:duration-900 flex flex-col justify-between p-6 max-w-[100rem] mx-auto',
106
+ className,
107
+ )}
108
+ style={{ minHeight: minHeight ?? '220px' }}
109
+ >
110
+ #BlockName-DDCardTemplate01
111
+ <div className="w-11 h-11 flex items-center justify-center rounded-xl border border-stone-300 text-stone-300 mb-6">
112
+ <DynamicIcon
113
+ className="text-stone-600 dark:text-stone-300"
114
+ name={iconName ?? 'ShieldCheck'}
115
+ size={20}
116
+ />
117
+ </div>
118
+ <div>
119
+ {eyebrow && (
120
+ <p className="text-xs font-semibold text-stone-600 dark:text-stone-400 tracking-widest uppercase mb-2">
121
+ {eyebrow}
122
+ </p>
123
+ )}
124
+ {headline && (
125
+ <h3 className="text-2xl font-semibold text-stone-900 dark:text-stone-50 mb-3">
126
+ {headline}
127
+ </h3>
128
+ )}
129
+ {description && (
130
+ <p className="text-sm text-stone-600 dark:text-stone-400 leading-relaxed max-w-md">
131
+ {description}
132
+ </p>
133
+ )}
134
+ </div>
135
+ </SpotlightCard>
136
+ </div>
137
+ )
138
+ }
139
+
140
+ export default DDCardTemplate01