diff --git a/src/App.tsx b/src/App.tsx
index d1b78d1..c2efc12 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -8,6 +8,7 @@ import TeamTestimonialsPage from "@/pages/TeamTestimonialsPage";
import PricingPage from "@/pages/PricingPage";
import PricingSimpleCards from "@/components/sections/pricing/PricingSimpleCards";
import { FaqSection } from "@/components/sections/faq/FaqSection";
+import ContactForm from "@/components/sections/contact/ContactForm";
export default function App() {
return (
@@ -56,6 +57,14 @@ export default function App() {
+
+
+
>
);
}
\ No newline at end of file
diff --git a/src/components/sections/contact/ContactForm.tsx b/src/components/sections/contact/ContactForm.tsx
new file mode 100644
index 0000000..e50df54
--- /dev/null
+++ b/src/components/sections/contact/ContactForm.tsx
@@ -0,0 +1,71 @@
+import { motion } from "motion/react";
+import Button from "@/components/ui/Button";
+import TextAnimation from "@/components/ui/TextAnimation";
+import Input from "@/components/ui/Input";
+import Textarea from "@/components/ui/Textarea";
+
+const ContactForm = ({
+ tag,
+ title,
+ description,
+ buttonText,
+}: {
+ tag: string;
+ title: string;
+ description: string;
+ buttonText: string;
+}) => {
+ return (
+
+
+
+ {tag}
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ContactForm;
\ No newline at end of file
diff --git a/src/components/ui/Button.tsx b/src/components/ui/Button.tsx
index c26c816..3f5b6a3 100644
--- a/src/components/ui/Button.tsx
+++ b/src/components/ui/Button.tsx
@@ -13,9 +13,10 @@ interface ButtonProps {
animateImmediately?: boolean;
delay?: number;
className?: string;
+ type?: "button" | "submit" | "reset";
}
-const Button = ({ text, variant = "primary", href, onClick, animate = false, animateImmediately = false, delay = 0, className = "" }: ButtonProps) => {
+const Button = ({ text, variant = "primary", href, onClick, animate = false, animateImmediately = false, delay = 0, className = "", type = "button" }: ButtonProps) => {
const handleClick = useButtonClick(href, onClick);
const classes = cls(
@@ -26,7 +27,7 @@ const Button = ({ text, variant = "primary", href, onClick, animate = false, ani
const button = href
? {text}
- : ;
+ : ;
if (animateImmediately) {
return (
@@ -54,4 +55,4 @@ const Button = ({ text, variant = "primary", href, onClick, animate = false, ani
);
};
-export default Button;
+export default Button;
\ No newline at end of file
diff --git a/src/components/ui/Input.tsx b/src/components/ui/Input.tsx
new file mode 100644
index 0000000..b689177
--- /dev/null
+++ b/src/components/ui/Input.tsx
@@ -0,0 +1,18 @@
+import { InputHTMLAttributes } from "react";
+import { cls } from "@/lib/utils";
+
+interface InputProps extends InputHTMLAttributes {}
+
+const Input = ({ className, ...props }: InputProps) => {
+ return (
+
+ );
+};
+
+export default Input;
\ No newline at end of file
diff --git a/src/components/ui/Textarea.tsx b/src/components/ui/Textarea.tsx
new file mode 100644
index 0000000..de06f9e
--- /dev/null
+++ b/src/components/ui/Textarea.tsx
@@ -0,0 +1,18 @@
+import { TextareaHTMLAttributes } from "react";
+import { cls } from "@/lib/utils";
+
+interface TextareaProps extends TextareaHTMLAttributes {}
+
+const Textarea = ({ className, ...props }: TextareaProps) => {
+ return (
+
+ );
+};
+
+export default Textarea;
\ No newline at end of file