nextworks 0.2.0-alpha.7 → 0.2.0-alpha.8

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 (55) hide show
  1. package/dist/commands/blocks.js +5 -5
  2. package/dist/commands/blocks.js.map +1 -1
  3. package/dist/commands/remove-blocks.js +1 -1
  4. package/dist/commands/remove-blocks.js.map +1 -1
  5. package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +269 -269
  6. package/dist/kits/blocks/app/templates/digitalagency/components/About.tsx +71 -99
  7. package/dist/kits/blocks/app/templates/digitalagency/components/CTA.tsx +40 -74
  8. package/dist/kits/blocks/app/templates/digitalagency/components/Contact.tsx +123 -227
  9. package/dist/kits/blocks/app/templates/digitalagency/components/Footer.tsx +89 -89
  10. package/dist/kits/blocks/app/templates/digitalagency/components/Hero.tsx +83 -90
  11. package/dist/kits/blocks/app/templates/digitalagency/components/Navbar.tsx +121 -168
  12. package/dist/kits/blocks/app/templates/digitalagency/components/NetworkPattern.tsx +288 -297
  13. package/dist/kits/blocks/app/templates/digitalagency/components/Portfolio.tsx +157 -157
  14. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +1 -2
  15. package/dist/kits/blocks/app/templates/gallery/page.tsx +300 -303
  16. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +1 -0
  17. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +0 -94
  18. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +2 -45
  19. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +4 -11
  20. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +1 -2
  21. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +1 -1
  22. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +6 -7
  23. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +8 -54
  24. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +1 -1
  25. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +1 -1
  26. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +1 -1
  27. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +1 -1
  28. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +2 -1
  29. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +1 -1
  30. package/dist/kits/blocks/app/templates/saasdashboard/README.md +1 -1
  31. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +0 -47
  32. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +2 -2
  33. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +0 -1
  34. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +0 -1
  35. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +0 -1
  36. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +4 -46
  37. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +3 -4
  38. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +1 -1
  39. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +17 -5
  40. package/dist/kits/blocks/components/sections/CTA.tsx +0 -1
  41. package/dist/kits/blocks/components/sections/FAQ.tsx +0 -11
  42. package/dist/kits/blocks/components/sections/Features.tsx +2 -4
  43. package/dist/kits/blocks/components/sections/HeroMotion.tsx +1 -1
  44. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +2 -2
  45. package/dist/kits/blocks/components/sections/HeroSplit.tsx +1 -1
  46. package/dist/kits/blocks/components/sections/Navbar.tsx +1 -4
  47. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +0 -1
  48. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +1 -1
  49. package/dist/kits/blocks/components/theme-provider.tsx +0 -33
  50. package/dist/kits/blocks/components/ui/theme-selector.tsx +0 -4
  51. package/dist/kits/blocks/lib/utils.ts +0 -3
  52. package/dist/kits/blocks/package-deps.json +40 -40
  53. package/dist/utils/package-manager.js +1 -1
  54. package/dist/utils/package-manager.js.map +1 -1
  55. package/package.json +1 -1
@@ -1,99 +1,71 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import { About as SharedAbout } from "@/components/sections/About";
5
-
6
- export function About() {
7
- return (
8
- <SharedAbout
9
- // Content
10
- aboutSubheadingText="About Us"
11
- aboutHeadingText="Your Success Is Our Mission"
12
- aboutContentText="With 50+ successful projects and 5 years of experience, we specialize in creating digital solutions that drive real business growth. Our team combines creative design with data-driven strategy."
13
- aboutTextAlign="center"
14
- // Stats
15
- showStats={true}
16
- animateStats={true}
17
- aboutStats={[
18
- { value: "2.5", suffix: "k+", label: "Leads Generated" },
19
- { value: "4.8", suffix: "%", label: "Avg. CTR" },
20
- { value: "92", suffix: "%", label: "Client Retention" },
21
- { value: "12", suffix: "M", label: "Ad Spend Managed" },
22
- ]}
23
- // Slots / styling
24
- section={{
25
- className: "py-16 md:py-20 lg:py-24 bg-white dark:bg-gray-800",
26
- }}
27
- container={{
28
- className: "max-w-7xl mx-auto px-6",
29
- }}
30
- inner={{
31
- className: "flex flex-col gap-12",
32
- }}
33
- contentContainer={{
34
- className: "max-w-4xl mx-auto",
35
- }}
36
- contentStack={{
37
- className: "flex flex-col gap-6",
38
- }}
39
- subheading={{
40
- className:
41
- "text-sm font-semibold font-poppins uppercase tracking-wider text-[var(--about-accent)]",
42
- }}
43
- heading={{
44
- className:
45
- "text-4xl md:text-5xl lg:text-6xl font-bold leading-tight text-[var(--heading-fg)]",
46
- }}
47
- content={{
48
- className:
49
- "text-xl md:text-2xl max-w-3xl mx-auto leading-relaxed text-[var(--subheading-fg)]",
50
- }}
51
- statsSection={{
52
- className:
53
- "bg-card p-8 rounded-xl shadow-lg mx-auto max-w-5xl w-full border border-border bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)]",
54
- }}
55
- statsGrid={{
56
- className: "grid grid-cols-2 md:grid-cols-4 gap-8 justify-items-center",
57
- }}
58
- statItem={{
59
- className: "flex flex-col items-center gap-2",
60
- }}
61
- statNumber={{
62
- className:
63
- "text-4xl md:text-5xl font-bold font-poppins leading-none text-[var(--about-accent)]",
64
- }}
65
- statLabel={{
66
- className:
67
- "text-sm font-medium font-inter text-center text-[var(--card-muted-fg)]",
68
- }}
69
- />
70
- );
71
- }
72
-
73
- // "use client";
74
-
75
- // import React from "react";
76
- // import { About as SharedAbout } from "@/components/sections/About";
77
-
78
- // export function About() {
79
- // return (
80
- // <SharedAbout
81
- // aboutHeadingText="Your Success Is Our Mission"
82
- // aboutContentText="With 50+ successful projects and 5 years of experience, we specialize in creating digital solutions that drive real business growth. Our team combines creative design with data-driven strategy."
83
- // aboutTextAlign="center"
84
- // showStats={true}
85
- // section={{
86
- // className: "py-16 md:py-20 lg:py-24 bg-white dark:bg-gray-800",
87
- // }}
88
- // heading={{
89
- // className: "text-4xl md:text-5xl lg:text-6xl font-bold text-foreground",
90
- // }}
91
- // content={{
92
- // className:
93
- // "text-xl md:text-2xl text-muted-foreground max-w-3xl mx-auto leading-relaxed",
94
- // }}
95
- // />
96
- // );
97
- // }
98
-
99
- // export default About;
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import { About as SharedAbout } from "@/components/sections/About";
5
+
6
+ export function About() {
7
+ return (
8
+ <SharedAbout
9
+ // Content
10
+ aboutSubheadingText="About Us"
11
+ aboutHeadingText="Your Success Is Our Mission"
12
+ aboutContentText="With 50+ successful projects and 5 years of experience, we specialize in creating digital solutions that drive real business growth. Our team combines creative design with data-driven strategy."
13
+ aboutTextAlign="center"
14
+ // Stats
15
+ showStats={true}
16
+ animateStats={true}
17
+ aboutStats={[
18
+ { value: "2.5", suffix: "k+", label: "Leads Generated" },
19
+ { value: "4.8", suffix: "%", label: "Avg. CTR" },
20
+ { value: "92", suffix: "%", label: "Client Retention" },
21
+ { value: "12", suffix: "M", label: "Ad Spend Managed" },
22
+ ]}
23
+ // Slots / styling
24
+ section={{
25
+ className: "py-16 md:py-20 lg:py-24 bg-white dark:bg-gray-800",
26
+ }}
27
+ container={{
28
+ className: "max-w-7xl mx-auto px-6",
29
+ }}
30
+ inner={{
31
+ className: "flex flex-col gap-12",
32
+ }}
33
+ contentContainer={{
34
+ className: "max-w-4xl mx-auto",
35
+ }}
36
+ contentStack={{
37
+ className: "flex flex-col gap-6",
38
+ }}
39
+ subheading={{
40
+ className:
41
+ "text-sm font-semibold font-poppins uppercase tracking-wider text-[var(--about-accent)]",
42
+ }}
43
+ heading={{
44
+ className:
45
+ "text-4xl md:text-5xl lg:text-6xl font-bold leading-tight text-[var(--heading-fg)]",
46
+ }}
47
+ content={{
48
+ className:
49
+ "text-xl md:text-2xl max-w-3xl mx-auto leading-relaxed text-[var(--subheading-fg)]",
50
+ }}
51
+ statsSection={{
52
+ className:
53
+ "bg-card p-8 rounded-xl shadow-lg mx-auto max-w-5xl w-full border border-border bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)]",
54
+ }}
55
+ statsGrid={{
56
+ className: "grid grid-cols-2 md:grid-cols-4 gap-8 justify-items-center",
57
+ }}
58
+ statItem={{
59
+ className: "flex flex-col items-center gap-2",
60
+ }}
61
+ statNumber={{
62
+ className:
63
+ "text-4xl md:text-5xl font-bold font-poppins leading-none text-[var(--about-accent)]",
64
+ }}
65
+ statLabel={{
66
+ className:
67
+ "text-sm font-medium font-inter text-center text-[var(--card-muted-fg)]",
68
+ }}
69
+ />
70
+ );
71
+ }
@@ -1,74 +1,40 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import { CTA as SharedCTA } from "@/components/sections/CTA";
5
-
6
- export function CTA() {
7
- return (
8
- <SharedCTA
9
- // Background colors moved to the section slot
10
- section={{
11
- className:
12
- "bg-sky-50 dark:bg-gray-900 text-foreground [--heading-fg:rgb(17,24,39)] dark:[--heading-fg:white] [--subheading-fg:rgba(17,24,39,0.8)] dark:[--subheading-fg:rgba(255,255,255,0.85)] [--description-fg:rgba(17,24,39,0.75)] dark:[--description-fg:rgba(255,255,255,0.75)]",
13
- }}
14
- // Layout/height/centering handled by the container slot
15
- container={{
16
- className:
17
- "mx-auto flex h-[32vh] w-full max-w-6xl flex-col items-center justify-center overflow-hidden px-4 pb-8",
18
- }}
19
- // Heading mapped to the new headingText slot
20
- headingText={{
21
- text: "Ready To Transform Your Business?",
22
- className:
23
- "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins leading-tight",
24
- }}
25
- // Use actionsWrapper for spacing instead of margin on the button
26
- actionsWrapper={{
27
- className:
28
- "mt-6 flex flex-col items-center gap-3 sm:flex-row [--btn-ring:rgba(192,38,211,0.35)] dark:[--btn-ring:rgba(192,38,211,0.45)]",
29
- }}
30
- // Primary CTA mapped to ctaButton + ctaButtonStyle
31
- ctaButton={{ label: "Get Your Free Quote", href: "#contact" }}
32
- ctaButtonStyle={{
33
- variant: "default",
34
- size: "lg",
35
- className:
36
- "font-poppins shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 [--btn-bg:#c026d3] dark:[--btn-bg:#c026d3] [--btn-hover-bg:#a21caf] dark:[--btn-hover-bg:#a21caf] [--btn-fg:#ffffff] dark:[--btn-fg:#ffffff] hover:[--btn-hover-fg:#ffffff] dark:hover:[--btn-hover-fg:#ffffff] [--btn-border:transparent]",
37
- }}
38
- // Preserve the previous top margin on the heading
39
- spacing={{ topMargin: "mt-[8vh]" }}
40
- />
41
- );
42
- }
43
-
44
- // "use client";
45
-
46
- // import React from "react";
47
- // import { CTA as SharedCTA } from "@/components/sections/CTA";
48
-
49
- // export function CTA() {
50
- // return (
51
- // <SharedCTA
52
- // heading={{
53
- // text: "Ready To Transform Your Business?",
54
- // className:
55
- // "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins leading-tight",
56
- // }}
57
- // section={{
58
- // className:
59
- // "flex h-[32vh] flex-col items-center overflow-hidden bg-fuchsia-50 dark:bg-gray-900",
60
- // }}
61
- // button={{
62
- // text: "Get Your Free Quote",
63
- // href: "#contact",
64
- // variant: "default",
65
- // size: "lg",
66
- // className:
67
- // "mt-6 bg-fuchsia-600 hover:bg-fuchsia-700 text-white font-poppins shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
68
- // }}
69
- // spacing={{ topMargin: "mt-[8vh]" }}
70
- // />
71
- // );
72
- // }
73
-
74
- // export default CTA;
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import { CTA as SharedCTA } from "@/components/sections/CTA";
5
+
6
+ export function CTA() {
7
+ return (
8
+ <SharedCTA
9
+ // Background colors
10
+ section={{
11
+ className:
12
+ "bg-sky-50 dark:bg-gray-900 text-foreground [--heading-fg:rgb(17,24,39)] dark:[--heading-fg:white] [--subheading-fg:rgba(17,24,39,0.8)] dark:[--subheading-fg:rgba(255,255,255,0.85)] [--description-fg:rgba(17,24,39,0.75)] dark:[--description-fg:rgba(255,255,255,0.75)]",
13
+ }}
14
+ // Layout/height/centering handled by the container slot
15
+ container={{
16
+ className:
17
+ "mx-auto flex h-[32vh] w-full max-w-6xl flex-col items-center justify-center overflow-hidden px-4 pb-8",
18
+ }}
19
+ // Heading text
20
+ headingText={{
21
+ text: "Ready To Transform Your Business?",
22
+ className:
23
+ "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins leading-tight",
24
+ }}
25
+ // Use actionsWrapper for spacing instead of margin on the button
26
+ actionsWrapper={{
27
+ className:
28
+ "mt-6 flex flex-col items-center gap-3 sm:flex-row [--btn-ring:rgba(192,38,211,0.35)] dark:[--btn-ring:rgba(192,38,211,0.45)]",
29
+ }}
30
+ ctaButton={{ label: "Get Your Free Quote", href: "#contact" }}
31
+ ctaButtonStyle={{
32
+ variant: "default",
33
+ size: "lg",
34
+ className:
35
+ "font-poppins shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 [--btn-bg:#c026d3] dark:[--btn-bg:#c026d3] [--btn-hover-bg:#a21caf] dark:[--btn-hover-bg:#a21caf] [--btn-fg:#ffffff] dark:[--btn-fg:#ffffff] hover:[--btn-hover-fg:#ffffff] dark:hover:[--btn-hover-fg:#ffffff] [--btn-border:transparent]",
36
+ }}
37
+ spacing={{ topMargin: "mt-[8vh]" }}
38
+ />
39
+ );
40
+ }
@@ -1,227 +1,123 @@
1
- // app/templates/digitalagency/componets/Contact.tsx
2
-
3
- "use client";
4
-
5
- import React from "react";
6
- import {
7
- Contact as SharedContact,
8
- ContactField,
9
- } from "@/components/sections/Contact";
10
-
11
- const agencyContactFormData: ContactField[] = [
12
- {
13
- id: "name",
14
- label: "Your Full Name",
15
- placeholder: "John Smith",
16
- required: true,
17
- type: "text",
18
- },
19
- {
20
- id: "email",
21
- label: "Email Address",
22
- placeholder: "john@yourcompany.com",
23
- required: true,
24
- type: "email",
25
- },
26
- {
27
- id: "phone",
28
- label: "Phone Number",
29
- placeholder: "+1 (555) 123-4567",
30
- required: false,
31
- type: "tel",
32
- },
33
- {
34
- id: "company",
35
- label: "Company Name",
36
- placeholder: "Your Company LLC",
37
- required: false,
38
- type: "text",
39
- },
40
- {
41
- id: "projectType",
42
- label: "Service Interested In",
43
- placeholder: "e.g. Web Design, SEO, E-commerce, Branding",
44
- required: false,
45
- type: "text",
46
- },
47
- {
48
- id: "budget",
49
- label: "Project Budget (Optional)",
50
- placeholder: "e.g. $3,000 - $6,000",
51
- required: false,
52
- type: "text",
53
- },
54
- {
55
- id: "message",
56
- label: "Project Details",
57
- placeholder:
58
- "Tell us about your project goals, timeline, and any specific requirements...",
59
- required: true,
60
- type: "textarea",
61
- },
62
- ];
63
-
64
- export function Contact() {
65
- const handleFormSubmit = (e: React.FormEvent<HTMLFormElement>) => {
66
- e.preventDefault();
67
- const data = Object.fromEntries(new FormData(e.currentTarget).entries());
68
- console.log("Contact form submitted:", data);
69
- };
70
-
71
- return (
72
- <SharedContact
73
- id="contact"
74
- fields={agencyContactFormData}
75
- contactHeaderText="Let’s Talk Strategy"
76
- contactSubHeaderText="We’re here to help you grow — tell us how!"
77
- // Root and layout
78
- className="w-full"
79
- section={{ className: "py-16 px-4 bg-fuchsia-600 dark:bg-fuchsia-600" }}
80
- container={{ className: "mx-auto max-w-4xl" }}
81
- // Header slots (new)
82
- headerWrapper={{ className: "mb-8 text-center" }}
83
- headerText={{
84
- className:
85
- "text-4xl md:text-5xl font-bold font-poppins text-white tracking-tight",
86
- }}
87
- subheaderText={{
88
- className:
89
- "mt-3 text-lg md:text-xl font-inter text-white/90 px-4 md:px-14",
90
- }}
91
- // Form container
92
- form={{
93
- className:
94
- "bg-card p-8 rounded-lg shadow-md border border-border bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)]",
95
- }}
96
- // Fields wrapper and field item (new)
97
- fieldsWrapper={{ className: "space-y-4" }}
98
- field={{ className: "space-y-2" }}
99
- // Label + inputs (new)
100
- label={{
101
- className:
102
- "text-card-foreground text-sm font-medium font-poppins block",
103
- }}
104
- input={{
105
- className:
106
- "w-full p-3 rounded-md font-inter border-[var(--input-border)] bg-[var(--input-bg)] text-[var(--input-fg)] placeholder:text-[var(--input-placeholder)] focus-visible:ring-2 focus-visible:ring-[var(--input-focus-ring)] focus-visible:ring-offset-[var(--input-ring-offset)]",
107
- }}
108
- textarea={{
109
- className:
110
- "w-full p-3 rounded-md resize-vertical min-h-[120px] font-inter border-[var(--input-border)] bg-[var(--input-bg)] text-[var(--input-fg)] placeholder:text-[var(--input-placeholder)] focus-visible:ring-2 focus-visible:ring-[var(--input-focus-ring)] focus-visible:ring-offset-[var(--input-ring-offset)]",
111
- }}
112
- // Submit button (new split between wrapper/style/text)
113
- submitButtonWrapper={{ className: "pt-2" }}
114
- submitButtonStyle={{
115
- variant: "default",
116
- size: "lg",
117
- className:
118
- "w-full bg-fuchsia-700 hover:bg-fuchsia-800 text-white font-poppins font-medium shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
119
- }}
120
- submitButtonText="Schedule Free Consultation"
121
- onSubmit={handleFormSubmit}
122
- ariaLabel="Agency contact section"
123
- />
124
- );
125
- }
126
-
127
- // "use client";
128
-
129
- // import React from "react";
130
- // import {
131
- // Contact as SharedContact,
132
- // ContactField,
133
- // } from "@/components/sections/Contact";
134
-
135
- // const agencyContactFormData: ContactField[] = [
136
- // {
137
- // id: "name",
138
- // label: "Your Full Name",
139
- // placeholder: "John Smith",
140
- // required: true,
141
- // type: "text",
142
- // },
143
- // {
144
- // id: "email",
145
- // label: "Email Address",
146
- // placeholder: "john@yourcompany.com",
147
- // required: true,
148
- // type: "email",
149
- // },
150
- // {
151
- // id: "phone",
152
- // label: "Phone Number",
153
- // placeholder: "+1 (555) 123-4567",
154
- // required: false,
155
- // type: "tel",
156
- // },
157
- // {
158
- // id: "company",
159
- // label: "Company Name",
160
- // placeholder: "Your Company LLC",
161
- // required: false,
162
- // type: "text",
163
- // },
164
- // {
165
- // id: "projectType",
166
- // label: "Service Interested In",
167
- // placeholder: "e.g. Web Design, SEO, E-commerce, Branding",
168
- // required: false,
169
- // type: "text",
170
- // },
171
- // {
172
- // id: "budget",
173
- // label: "Project Budget (Optional)",
174
- // placeholder: "e.g. $3,000 - $6,000",
175
- // required: false,
176
- // type: "text",
177
- // },
178
- // {
179
- // id: "message",
180
- // label: "Project Details",
181
- // placeholder:
182
- // "Tell us about your project goals, timeline, and any specific requirements...",
183
- // required: true,
184
- // type: "textarea",
185
- // },
186
- // ];
187
-
188
- // export function Contact() {
189
- // const handleFormSubmit = (e: React.FormEvent<HTMLFormElement>) => {
190
- // e.preventDefault();
191
- // const data = Object.fromEntries(new FormData(e.currentTarget).entries());
192
- // console.log("Contact form submitted:", data);
193
- // };
194
-
195
- // return (
196
- // <section id="contact">
197
- // <SharedContact
198
- // fields={agencyContactFormData}
199
- // contactHeaderText="Let’s Talk Strategy"
200
- // contactSubHeaderText="We’re here to help you grow — tell us how!"
201
- // section={{ className: "py-16 px-4 bg-fuchsia-600 dark:bg-fuchsia-600" }}
202
- // container={{ className: "max-w-4xl mx-auto" }}
203
- // header={{
204
- // className:
205
- // "text-4xl md:text-5xl font-bold text-white text-center mb-4",
206
- // }}
207
- // subheader={{
208
- // className:
209
- // "text-xl md:text-2xl font-inter text-white text-center mb-8 px-6",
210
- // }}
211
- // form={{
212
- // className: "bg-white dark:bg-gray-800 p-8 rounded-lg shadow-md",
213
- // }}
214
- // submitButton={{
215
- // text: "Schedule Free Consultation",
216
- // variant: "default",
217
- // size: "lg",
218
- // className:
219
- // "w-full bg-fuchsia-700 hover:bg-fuchsia-800 text-white font-poppins font-medium shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
220
- // }}
221
- // onSubmit={handleFormSubmit}
222
- // />
223
- // </section>
224
- // );
225
- // }
226
-
227
- // export default Contact;
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import {
5
+ Contact as SharedContact,
6
+ ContactField,
7
+ } from "@/components/sections/Contact";
8
+
9
+ const agencyContactFormData: ContactField[] = [
10
+ {
11
+ id: "name",
12
+ label: "Your Full Name",
13
+ placeholder: "John Smith",
14
+ required: true,
15
+ type: "text",
16
+ },
17
+ {
18
+ id: "email",
19
+ label: "Email Address",
20
+ placeholder: "john@yourcompany.com",
21
+ required: true,
22
+ type: "email",
23
+ },
24
+ {
25
+ id: "phone",
26
+ label: "Phone Number",
27
+ placeholder: "+1 (555) 123-4567",
28
+ required: false,
29
+ type: "tel",
30
+ },
31
+ {
32
+ id: "company",
33
+ label: "Company Name",
34
+ placeholder: "Your Company LLC",
35
+ required: false,
36
+ type: "text",
37
+ },
38
+ {
39
+ id: "projectType",
40
+ label: "Service Interested In",
41
+ placeholder: "e.g. Web Design, SEO, E-commerce, Branding",
42
+ required: false,
43
+ type: "text",
44
+ },
45
+ {
46
+ id: "budget",
47
+ label: "Project Budget (Optional)",
48
+ placeholder: "e.g. $3,000 - $6,000",
49
+ required: false,
50
+ type: "text",
51
+ },
52
+ {
53
+ id: "message",
54
+ label: "Project Details",
55
+ placeholder:
56
+ "Tell us about your project goals, timeline, and any specific requirements...",
57
+ required: true,
58
+ type: "textarea",
59
+ },
60
+ ];
61
+
62
+ export function Contact() {
63
+ const handleFormSubmit = (e: React.FormEvent<HTMLFormElement>) => {
64
+ e.preventDefault();
65
+ const data = Object.fromEntries(new FormData(e.currentTarget).entries());
66
+ console.log("Contact form submitted:", data);
67
+ };
68
+
69
+ return (
70
+ <SharedContact
71
+ id="contact"
72
+ fields={agencyContactFormData}
73
+ contactHeaderText="Let’s Talk Strategy"
74
+ contactSubHeaderText="We’re here to help you grow — tell us how!"
75
+ // Root and layout
76
+ className="w-full"
77
+ section={{ className: "py-16 px-4 bg-fuchsia-600 dark:bg-fuchsia-600" }}
78
+ container={{ className: "mx-auto max-w-4xl" }}
79
+ // Header slots
80
+ headerWrapper={{ className: "mb-8 text-center" }}
81
+ headerText={{
82
+ className:
83
+ "text-4xl md:text-5xl font-bold font-poppins text-white tracking-tight",
84
+ }}
85
+ subheaderText={{
86
+ className:
87
+ "mt-3 text-lg md:text-xl font-inter text-white/90 px-4 md:px-14",
88
+ }}
89
+ // Form container
90
+ form={{
91
+ className:
92
+ "bg-card p-8 rounded-lg shadow-md border border-border bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)]",
93
+ }}
94
+ // Fields wrapper and field item
95
+ fieldsWrapper={{ className: "space-y-4" }}
96
+ field={{ className: "space-y-2" }}
97
+ // Label + inputs
98
+ label={{
99
+ className:
100
+ "text-card-foreground text-sm font-medium font-poppins block",
101
+ }}
102
+ input={{
103
+ className:
104
+ "w-full p-3 rounded-md font-inter border-[var(--input-border)] bg-[var(--input-bg)] text-[var(--input-fg)] placeholder:text-[var(--input-placeholder)] focus-visible:ring-2 focus-visible:ring-[var(--input-focus-ring)] focus-visible:ring-offset-[var(--input-ring-offset)]",
105
+ }}
106
+ textarea={{
107
+ className:
108
+ "w-full p-3 rounded-md resize-vertical min-h-[120px] font-inter border-[var(--input-border)] bg-[var(--input-bg)] text-[var(--input-fg)] placeholder:text-[var(--input-placeholder)] focus-visible:ring-2 focus-visible:ring-[var(--input-focus-ring)] focus-visible:ring-offset-[var(--input-ring-offset)]",
109
+ }}
110
+ // Submit button
111
+ submitButtonWrapper={{ className: "pt-2" }}
112
+ submitButtonStyle={{
113
+ variant: "default",
114
+ size: "lg",
115
+ className:
116
+ "w-full bg-fuchsia-700 hover:bg-fuchsia-800 text-white font-poppins font-medium shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
117
+ }}
118
+ submitButtonText="Schedule Free Consultation"
119
+ onSubmit={handleFormSubmit}
120
+ ariaLabel="Agency contact section"
121
+ />
122
+ );
123
+ }