diff --git a/package-lock.json b/package-lock.json index 9c4cac5..a3d4639 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,9 +12,9 @@ "@radix-ui/react-label": "^2.1.2", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-switch": "^1.1.3", - "aos": "^2.3.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "framer-motion": "^12.4.7", "lucide-react": "^0.476.0", "next": "15.1.7", "react": "^19.0.0", @@ -1682,17 +1682,6 @@ "node": ">= 8" } }, - "node_modules/aos": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/aos/-/aos-2.3.4.tgz", - "integrity": "sha512-zh/ahtR2yME4I51z8IttIt4lC1Nw0ktsFtmeDzID1m9naJnWXhCoARaCgNOGXb5CLy3zm+wqmRAEgMYB5E2HUw==", - "license": "MIT", - "dependencies": { - "classlist-polyfill": "^1.0.3", - "lodash.debounce": "^4.0.6", - "lodash.throttle": "^4.0.1" - } - }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -2144,12 +2133,6 @@ "url": "https://polar.sh/cva" } }, - "node_modules/classlist-polyfill": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", - "integrity": "sha512-GzIjNdcEtH4ieA2S8NmrSxv7DfEV5fmixQeyTmqmRmRJPGpRBaSnA2a0VrCjyT8iW8JjEdMbKzDotAJf+ajgaQ==", - "license": "Unlicense" - }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -3228,6 +3211,33 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/framer-motion": { + "version": "12.4.7", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.7.tgz", + "integrity": "sha512-VhrcbtcAMXfxlrjeHPpWVu2+mkcoR31e02aNSR7OUS/hZAciKa8q6o3YN2mA1h+jjscRsSyKvX6E1CiY/7OLMw==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.4.5", + "motion-utils": "^12.0.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4234,12 +4244,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -4247,12 +4251,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "license": "MIT" - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4345,6 +4343,21 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/motion-dom": { + "version": "12.4.5", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.4.5.tgz", + "integrity": "sha512-Q2xmhuyYug1CGTo0jdsL05EQ4RhIYXlggFS/yPhQQRNzbrhjKQ1tbjThx5Plv68aX31LsUQRq4uIkuDxdO5vRQ==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.0.0" + } + }, + "node_modules/motion-utils": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.0.0.tgz", + "integrity": "sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", diff --git a/package.json b/package.json index 32a43d3..67c0dc0 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,9 @@ "@radix-ui/react-label": "^2.1.2", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-switch": "^1.1.3", - "aos": "^2.3.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "framer-motion": "^12.4.7", "lucide-react": "^0.476.0", "next": "15.1.7", "react": "^19.0.0", diff --git a/src/components/FaqSection.tsx b/src/components/FaqSection.tsx index 5942ae2..cd581fa 100644 --- a/src/components/FaqSection.tsx +++ b/src/components/FaqSection.tsx @@ -1,6 +1,8 @@ "use client"; -import { X, Plus } from "lucide-react"; -import { useState } from "react"; + +import { Plus } from "lucide-react"; +import * as React from "react"; +import { motion, AnimatePresence } from "framer-motion"; interface FAQItem { id: string; @@ -36,7 +38,7 @@ const faqs: FAQItem[] = [ ]; export default function FAQSection() { - const [openItems, setOpenItems] = useState>(new Set()); + const [openItems, setOpenItems] = React.useState>(new Set()); const handleItemClick = (itemId: string) => { const newOpenItems = new Set(openItems); @@ -57,27 +59,86 @@ export default function FAQSection() {
{faqs.map((faq) => ( -
- + + + + - {openItems.has(faq.id) && ( -
-

{faq.answer}

-
- )} -
+ + {openItems.has(faq.id) && ( + + +

{faq.answer}

+
+
+ )} +
+ ))}
diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index 8882c01..9931c8a 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -1,7 +1,11 @@ +"use client"; + import React from "react"; import styles from "./HeroSection.module.css"; import Link from "next/link"; import Image from "next/image"; +import { motion } from "framer-motion"; + const HeroSection: React.FC = () => { return (
@@ -9,34 +13,53 @@ const HeroSection: React.FC = () => {
{/* Left Background */}
{/* Right Background */}
-
- Hero Slider -
+ + Hero Slider + +
{/* Main Content */} -
-
- R - +
+ R + evolutionize Your Social Media Strategy with a Personalized
@@ -49,7 +72,12 @@ const HeroSection: React.FC = () => {

-
+

Customers Rating @@ -61,37 +89,63 @@ const HeroSection: React.FC = () => { (8,279 reviews)

-
+ {/* CTA Button */} - - Generate - Generate Icon - + + Generate + Generate Icon + +
- {/* Customer Reviews */}
-
+
{/* Social Icons */} -
- Social Icons -
+ + + Social Icons + +
); diff --git a/src/components/SocialSection.tsx b/src/components/SocialSection.tsx index ed30bca..82df988 100644 --- a/src/components/SocialSection.tsx +++ b/src/components/SocialSection.tsx @@ -1,24 +1,50 @@ +"use client"; +import React, { useRef } from "react"; import Image from "next/image"; -import React from "react"; +import { motion, useInView } from "framer-motion"; const SocialSection: React.FC = () => { + const sectionRef = useRef(null); + const isInView = useInView(sectionRef, { + once: false, + amount: 0.3, + }); + + const fadeInUp = { + hidden: { + opacity: 0, + y: 60, + }, + visible: { + opacity: 1, + y: 0, + transition: { + duration: 0.8, + ease: "easeOut", + }, + }, + }; + return ( -
+
-
- Example Image -
+ +
+ Example Image +
+
);