diff --git a/package-lock.json b/package-lock.json
index dd994f5..272031c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,7 +8,9 @@
"name": "nguyencongpc",
"version": "0.1.0",
"dependencies": {
+ "@fancyapps/ui": "^6.1.7",
"@tippyjs/react": "^4.2.6",
+ "framer-motion": "^12.23.26",
"next": "16.0.10",
"postcss": "^8.5.6",
"react": "19.2.1",
@@ -462,6 +464,12 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
+ "node_modules/@fancyapps/ui": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@fancyapps/ui/-/ui-6.1.7.tgz",
+ "integrity": "sha512-KHOvuy90JBFDgbNa2V1N9Jg7PE/lSQMXN9VbhR+WQSIxIEi4PV7kndeao7ezir5WeJ8OZRyDelNKJVLicXfBIg==",
+ "license": "SEE LICENSE IN LICENSE.md"
+ },
"node_modules/@humanfs/core": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -3650,6 +3658,33 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/framer-motion": {
+ "version": "12.23.26",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.26.tgz",
+ "integrity": "sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-dom": "^12.23.23",
+ "motion-utils": "^12.23.6",
+ "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/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -4965,6 +5000,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/motion-dom": {
+ "version": "12.23.23",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.23.tgz",
+ "integrity": "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-utils": "^12.23.6"
+ }
+ },
+ "node_modules/motion-utils": {
+ "version": "12.23.6",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz",
+ "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==",
+ "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 eba7400..96b59d1 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,9 @@
"lint": "eslint"
},
"dependencies": {
+ "@fancyapps/ui": "^6.1.7",
"@tippyjs/react": "^4.2.6",
+ "framer-motion": "^12.23.26",
"next": "16.0.10",
"postcss": "^8.5.6",
"react": "19.2.1",
diff --git a/src/app/[slug]/page.tsx b/src/app/[slug]/page.tsx
index e32b3b1..4b1eb41 100644
--- a/src/app/[slug]/page.tsx
+++ b/src/app/[slug]/page.tsx
@@ -1,17 +1,22 @@
'use client';
import { useParams } from 'next/navigation';
-import { productCategoryData } from '@/data/product/category';
+import CategoryPage from '@/components/product/Category';
+import ProductDetailPage from '@/components/product/ProductDetail';
-// import component
-import CategoryPage from '@components/layout/product/Category';
+import { resolvePageType } from '@/lib/resolvePageType';
export default function DynamicPage() {
- const params = useParams();
- const slug = ('/' + params?.slug) as string;
+ const { slug } = useParams();
+ const fullSlug = '/' + slug;
- if (productCategoryData.find((c) => c.current_category.url == slug)) {
- return
+ Bạn truy cập không tồn tại hoặc đường dẫn đã bị thay đổi. +
+ + {/* CTA */} +- T\u1eb7ng Màn Hình<\/span> : VSP IP2407SG - 24 INCH - 100HZ - 1MS<\/span><\/p>\r\n =>> Không l\u1ea5y quà t\u1eb7ng màn hình: Giá PC là 10.290.000<\/span>\u0111<\/span><\/strong><\/span><\/p>\r\n