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,215 +1,215 @@
1
- import type { Block } from 'payload'
2
-
3
- export const DDPricing: Block = {
4
- slug: 'DD-Pricing',
5
- interfaceName: 'DDPricing',
6
- labels: {
7
- singular: 'Studio Pricing Block',
8
- plural: 'Studio Pricing Blocks',
9
- },
10
- fields: [
11
- {
12
- type: 'tabs',
13
- tabs: [
14
- {
15
- label: 'Content',
16
- fields: [
17
- {
18
- name: 'eyebrow',
19
- type: 'text',
20
- defaultValue: 'Pricing',
21
- },
22
- {
23
- name: 'heading',
24
- type: 'text',
25
- defaultValue: 'Simple pricing for modern digital teams',
26
- required: true,
27
- },
28
- {
29
- name: 'description',
30
- type: 'textarea',
31
- defaultValue:
32
- 'Choose the plan that fits your workflow. Scale from solo creators to full production teams.',
33
- },
34
- {
35
- type: 'row',
36
- fields: [
37
- {
38
- name: 'monthlyLabel',
39
- type: 'text',
40
- defaultValue: 'Pay Monthly',
41
- admin: {
42
- width: '50%',
43
- },
44
- },
45
- {
46
- name: 'annualLabel',
47
- type: 'text',
48
- defaultValue: 'Pay Annually',
49
- admin: {
50
- width: '50%',
51
- },
52
- },
53
- ],
54
- },
55
- {
56
- type: 'row',
57
- fields: [
58
- {
59
- name: 'annualDiscountLabel',
60
- type: 'text',
61
- defaultValue: '-20%',
62
- admin: {
63
- width: '50%',
64
- },
65
- },
66
- {
67
- name: 'defaultBilling',
68
- type: 'select',
69
- defaultValue: 'monthly',
70
- admin: {
71
- width: '50%',
72
- },
73
- options: [
74
- {
75
- label: 'Monthly',
76
- value: 'monthly',
77
- },
78
- {
79
- label: 'Annual',
80
- value: 'annual',
81
- },
82
- ],
83
- },
84
- ],
85
- },
86
- ],
87
- },
88
- {
89
- label: 'Pricing Tiers',
90
- fields: [
91
- {
92
- name: 'tiers',
93
- type: 'array',
94
- minRows: 1,
95
- fields: [
96
- {
97
- type: 'row',
98
- fields: [
99
- {
100
- name: 'name',
101
- type: 'text',
102
- required: true,
103
- admin: {
104
- width: '33%',
105
- },
106
- },
107
- {
108
- name: 'badge',
109
- type: 'text',
110
- admin: {
111
- width: '33%',
112
- },
113
- },
114
- {
115
- name: 'highlight',
116
- type: 'checkbox',
117
- defaultValue: false,
118
- admin: {
119
- width: '33%',
120
- },
121
- },
122
- ],
123
- },
124
- {
125
- name: 'tagline',
126
- type: 'text',
127
- },
128
- {
129
- type: 'row',
130
- fields: [
131
- {
132
- name: 'monthlyPrice',
133
- type: 'number',
134
- defaultValue: 0,
135
- admin: {
136
- width: '50%',
137
- },
138
- },
139
- {
140
- name: 'annualPrice',
141
- type: 'number',
142
- defaultValue: 0,
143
- admin: {
144
- width: '50%',
145
- },
146
- },
147
- ],
148
- },
149
- {
150
- type: 'row',
151
- fields: [
152
- {
153
- name: 'cta',
154
- type: 'text',
155
- defaultValue: 'Get Started',
156
- admin: {
157
- width: '50%',
158
- },
159
- },
160
- {
161
- name: 'ctaLink',
162
- type: 'text',
163
- defaultValue: '#',
164
- admin: {
165
- width: '50%',
166
- },
167
- },
168
- ],
169
- },
170
- {
171
- name: 'features',
172
- type: 'array',
173
- label: 'Included Features',
174
- fields: [
175
- {
176
- name: 'label',
177
- type: 'text',
178
- required: true,
179
- },
180
- ],
181
- },
182
- {
183
- name: 'missing',
184
- type: 'array',
185
- label: 'Missing Features',
186
- fields: [
187
- {
188
- name: 'label',
189
- type: 'text',
190
- required: true,
191
- },
192
- ],
193
- },
194
- ],
195
- },
196
- ],
197
- },
198
- ],
199
- },
200
- {
201
- name: 'guaranteeText',
202
- type: 'text',
203
- defaultValue: 'All paid plans include a',
204
- },
205
- {
206
- name: 'guaranteeHighlight',
207
- type: 'text',
208
- defaultValue: '14-day money-back guarantee',
209
- },
210
- {
211
- name: 'sectionId',
212
- type: 'text',
213
- },
214
- ],
215
- }
1
+ import type { Block } from 'payload'
2
+
3
+ export const DDPricing: Block = {
4
+ slug: 'DD-Pricing',
5
+ interfaceName: 'DDPricing',
6
+ labels: {
7
+ singular: 'Studio Pricing Block',
8
+ plural: 'Studio Pricing Blocks',
9
+ },
10
+ fields: [
11
+ {
12
+ type: 'tabs',
13
+ tabs: [
14
+ {
15
+ label: 'Content',
16
+ fields: [
17
+ {
18
+ name: 'eyebrow',
19
+ type: 'text',
20
+ defaultValue: 'Pricing',
21
+ },
22
+ {
23
+ name: 'heading',
24
+ type: 'text',
25
+ defaultValue: 'Simple pricing for modern digital teams',
26
+ required: true,
27
+ },
28
+ {
29
+ name: 'description',
30
+ type: 'textarea',
31
+ defaultValue:
32
+ 'Choose the plan that fits your workflow. Scale from solo creators to full production teams.',
33
+ },
34
+ {
35
+ type: 'row',
36
+ fields: [
37
+ {
38
+ name: 'monthlyLabel',
39
+ type: 'text',
40
+ defaultValue: 'Pay Monthly',
41
+ admin: {
42
+ width: '50%',
43
+ },
44
+ },
45
+ {
46
+ name: 'annualLabel',
47
+ type: 'text',
48
+ defaultValue: 'Pay Annually',
49
+ admin: {
50
+ width: '50%',
51
+ },
52
+ },
53
+ ],
54
+ },
55
+ {
56
+ type: 'row',
57
+ fields: [
58
+ {
59
+ name: 'annualDiscountLabel',
60
+ type: 'text',
61
+ defaultValue: '-20%',
62
+ admin: {
63
+ width: '50%',
64
+ },
65
+ },
66
+ {
67
+ name: 'defaultBilling',
68
+ type: 'select',
69
+ defaultValue: 'monthly',
70
+ admin: {
71
+ width: '50%',
72
+ },
73
+ options: [
74
+ {
75
+ label: 'Monthly',
76
+ value: 'monthly',
77
+ },
78
+ {
79
+ label: 'Annual',
80
+ value: 'annual',
81
+ },
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ ],
87
+ },
88
+ {
89
+ label: 'Pricing Tiers',
90
+ fields: [
91
+ {
92
+ name: 'tiers',
93
+ type: 'array',
94
+ minRows: 3,
95
+ fields: [
96
+ {
97
+ type: 'row',
98
+ fields: [
99
+ {
100
+ name: 'name',
101
+ type: 'text',
102
+ required: true,
103
+ admin: {
104
+ width: '33%',
105
+ },
106
+ },
107
+ {
108
+ name: 'badge',
109
+ type: 'text',
110
+ admin: {
111
+ width: '33%',
112
+ },
113
+ },
114
+ {
115
+ name: 'highlight',
116
+ type: 'checkbox',
117
+ defaultValue: false,
118
+ admin: {
119
+ width: '33%',
120
+ },
121
+ },
122
+ ],
123
+ },
124
+ {
125
+ name: 'tagline',
126
+ type: 'text',
127
+ },
128
+ {
129
+ type: 'row',
130
+ fields: [
131
+ {
132
+ name: 'monthlyPrice',
133
+ type: 'number',
134
+ defaultValue: 0,
135
+ admin: {
136
+ width: '50%',
137
+ },
138
+ },
139
+ {
140
+ name: 'annualPrice',
141
+ type: 'number',
142
+ defaultValue: 0,
143
+ admin: {
144
+ width: '50%',
145
+ },
146
+ },
147
+ ],
148
+ },
149
+ {
150
+ type: 'row',
151
+ fields: [
152
+ {
153
+ name: 'cta',
154
+ type: 'text',
155
+ defaultValue: 'Get Started',
156
+ admin: {
157
+ width: '50%',
158
+ },
159
+ },
160
+ {
161
+ name: 'ctaLink',
162
+ type: 'text',
163
+ defaultValue: '#',
164
+ admin: {
165
+ width: '50%',
166
+ },
167
+ },
168
+ ],
169
+ },
170
+ {
171
+ name: 'features',
172
+ type: 'array',
173
+ label: 'Included Features',
174
+ fields: [
175
+ {
176
+ name: 'label',
177
+ type: 'text',
178
+ required: true,
179
+ },
180
+ ],
181
+ },
182
+ {
183
+ name: 'missing',
184
+ type: 'array',
185
+ label: 'Missing Features',
186
+ fields: [
187
+ {
188
+ name: 'label',
189
+ type: 'text',
190
+ required: true,
191
+ },
192
+ ],
193
+ },
194
+ ],
195
+ },
196
+ ],
197
+ },
198
+ ],
199
+ },
200
+ {
201
+ name: 'guaranteeText',
202
+ type: 'text',
203
+ defaultValue: 'All paid plans include a',
204
+ },
205
+ {
206
+ name: 'guaranteeHighlight',
207
+ type: 'text',
208
+ defaultValue: '14-day money-back guarantee',
209
+ },
210
+ {
211
+ name: 'sectionId',
212
+ type: 'text',
213
+ },
214
+ ],
215
+ }
@@ -64,9 +64,9 @@ export const DDProcess: React.FC<DDProcessProps> = ({
64
64
  <>
65
65
  {customCSS && <style dangerouslySetInnerHTML={{ __html: customCSS }} />}
66
66
 
67
- <div id={sectionId ?? 'process'} className="py-24">
67
+ <div id={sectionId ?? 'process'} className="py-4">
68
68
  <div className="max-w-6xl lg:max-w-7xl mx-auto px-4 md:px-6">
69
- {/* Header */}#BlockName-DDProcess
69
+ {/* Header */}
70
70
  <div className="text-center max-w-2xl mx-auto mb-16">
71
71
  {eyebrow && (
72
72
  <p className="text-[11.5px] font-semibold text-stone-400 tracking-widest uppercase mb-3 top-caption">
@@ -1,91 +1,93 @@
1
- 'use client'
2
- import React from 'react'
3
- import { DDProjSlider } from '../DD-ProjSlider/Component'
4
-
5
- export interface Project2HeaderInfo {
6
- label: string
7
- value: string
8
- }
9
-
10
- export interface Project2HeaderImage {
11
- image: string | { url: string; alt?: string }
12
- alt?: string
13
- id?: string
14
- }
15
-
16
- export interface Project2HeaderBlockProps {
17
- title?: string
18
- description?: string
19
- projectInfo?: Project2HeaderInfo[]
20
- images?: Project2HeaderImage[]
21
- slidesPerView?: number
22
- spaceBetween?: number
23
- loop?: boolean
24
- centeredSlides?: boolean
25
- showSlider?: boolean
26
- }
27
-
28
- function Project2HeaderBlock({
29
- title = 'Media Agency',
30
- description = 'We provide digital experience services to startups and small businesses. We help our clients succeed by creating brand identities.',
31
- projectInfo = [
32
- { label: 'Category', value: 'Marketing' },
33
- { label: 'Client', value: 'DustedClient' },
34
- { label: 'Start Date', value: '4 July 2021' },
35
- { label: 'Designer', value: 'DustedUi' }
36
- ],
37
- images = [
38
- {
39
- id: '1',
40
- image:
41
- 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E'
42
- },
43
- {
44
- id: '2',
45
- image:
46
- 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E'
47
- },
48
- {
49
- id: '3',
50
- image:
51
- 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E'
52
- }
53
- ],
54
- slidesPerView = 2,
55
- spaceBetween = 30,
56
- loop = true,
57
- centeredSlides = true,
58
- showSlider = true
59
- }: Project2HeaderBlockProps) {
60
- return (
61
- <>
62
- <section className="container py-12">
63
- <h1 className="text-3xl md:text-5xl font-semibold mb-4">{title}</h1>
64
- <p className="text-stone-400 mb-8 max-w-3xl">{description}</p>
65
- {projectInfo?.length ? (
66
- <div className="grid gap-3 sm:grid-cols-2 lg:grid-cols-4">
67
- {projectInfo.map((info, index) => (
68
- <div key={`${info.label}-${index}`} className="rounded border border-stone-800 p-3">
69
- <p className="text-xs uppercase text-stone-400">{info.label}</p>
70
- <p className="text-sm text-stone-200">{info.value}</p>
71
- </div>
72
- ))}
73
- </div>
74
- ) : null}
75
- </section>
76
- {showSlider && (
77
- <DDProjSlider
78
- images={images}
79
- slidesPerView={slidesPerView}
80
- spaceBetween={spaceBetween}
81
- loop={loop}
82
- centeredSlides={centeredSlides}
83
- />
84
- )}
85
- </>
86
- )
87
- }
88
-
89
- export const DDProjHeader = Project2HeaderBlock
90
- export default DDProjHeader
91
-
1
+ 'use client'
2
+ import React from 'react'
3
+ import { DDProjSlider } from '../DD-ProjSlider/Component'
4
+
5
+ export interface Project2HeaderInfo {
6
+ label: string
7
+ value: string
8
+ }
9
+
10
+ export interface Project2HeaderImage {
11
+ image: string | { url: string; alt?: string }
12
+ alt?: string
13
+ id?: string
14
+ }
15
+
16
+ export interface Project2HeaderBlockProps {
17
+ title?: string
18
+ description?: string
19
+ projectInfo?: Project2HeaderInfo[]
20
+ images?: Project2HeaderImage[]
21
+ slidesPerView?: number
22
+ spaceBetween?: number
23
+ loop?: boolean
24
+ centeredSlides?: boolean
25
+ showSlider?: boolean
26
+ }
27
+
28
+ function Project2HeaderBlock({
29
+ title = 'Media Agency',
30
+ description = 'We provide digital experience services to startups and small businesses. We help our clients succeed by creating brand identities.',
31
+ projectInfo = [
32
+ { label: 'Category', value: 'Marketing' },
33
+ { label: 'Client', value: 'DustedClient' },
34
+ { label: 'Start Date', value: '4 July 2021' },
35
+ { label: 'Designer', value: 'DustedUi' },
36
+ ],
37
+ images = [
38
+ {
39
+ id: '1',
40
+ image:
41
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E',
42
+ },
43
+ {
44
+ id: '2',
45
+ image:
46
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E',
47
+ },
48
+ {
49
+ id: '3',
50
+ image:
51
+ 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080"%3E%3Crect width="1920" height="1080" fill="%23ddd"/%3E%3Ctext x="50%25" y="50%25" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="64" fill="%23999"%3E1920x1080%3C/text%3E%3C/svg%3E',
52
+ },
53
+ ],
54
+ slidesPerView = 2,
55
+ spaceBetween = 30,
56
+ loop = true,
57
+ centeredSlides = true,
58
+ showSlider = true,
59
+ }: Project2HeaderBlockProps) {
60
+ return (
61
+ <>
62
+ <section className="container py-12">
63
+ <h1 className="text-3xl md:text-5xl font-semibold mb-4">{title}</h1>
64
+ <p className="text-stone-600 dark:text-stone-400 mb-8 max-w-3xl">{description}</p>
65
+ {projectInfo?.length ? (
66
+ <div className="grid gap-3 sm:grid-cols-2 lg:grid-cols-4">
67
+ {projectInfo.map((info, index) => (
68
+ <div
69
+ key={`${info.label}-${index}`}
70
+ className="rounded border border-stone-300 dark:border-stone-800 p-3"
71
+ >
72
+ <p className="text-xs uppercase text-stone-600 dark:text-stone-400">{info.label}</p>
73
+ <p className="text-sm text-stone-900 dark:text-stone-200">{info.value}</p>
74
+ </div>
75
+ ))}
76
+ </div>
77
+ ) : null}
78
+ </section>
79
+ {showSlider && (
80
+ <DDProjSlider
81
+ images={images}
82
+ slidesPerView={slidesPerView}
83
+ spaceBetween={spaceBetween}
84
+ loop={loop}
85
+ centeredSlides={centeredSlides}
86
+ />
87
+ )}
88
+ </>
89
+ )
90
+ }
91
+
92
+ export const DDProjHeader = Project2HeaderBlock
93
+ export default DDProjHeader
@@ -98,7 +98,7 @@ export const DDProjSlider: React.FC<ProjectSliderBlockProps> = ({
98
98
  if (!images.length) return null
99
99
 
100
100
  return (
101
- <section className="project-slider-block w-full overflow-hidden py-10">
101
+ <section className="project-slider-block relative left-0 mx-auto w-screen max-w-none overflow-hidden py-10">
102
102
  <div ref={swiperRef} className="swiper w-full overflow-visible">
103
103
  <div className="swiper-wrapper items-center">
104
104
  {images.map((image, index) => (