diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 2b4660a..700781f 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,9 +5,17 @@ - - - + + + + + + + + + + + + + + - { - "keyToString": { - "ASKED_MARK_IGNORED_FILES_AS_EXCLUDED": "true", - "ModuleVcsDetector.initialDetectionPerformed": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "RunOnceActivity.typescript.service.memoryLimit.init": "true", - "codeWithMe.voiceChat.enabledByDefault": "false", - "com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true", - "git-widget-placeholder": "develop", - "javascript.nodejs.core.library.configured.version": "24.20.0", - "javascript.nodejs.core.library.typings.version": "24.13.3", - "javascript.preferred.runtime.type.id": "node", - "js.debugger.nextJs.config.created.client": "true", - "js.debugger.nextJs.config.created.server": "true", - "junie.onboarding.icon.badge.shown": "true", - "kronk.content.tree.expanded.paths": "", - "last_opened_file_path": "/home/hamed/Documents/Projects/GItLabRepo/device_web", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "prettierjs.PrettierConfiguration.Package": "/home/hamed/Documents/Projects/GIthubRepo/robot-market-landing/node_modules/prettier", - "settings.editor.selected.configurable": "settings.javascript.prettier", - "to.speed.mode.migration.done": "true", - "ts.external.directory.path": "/home/hamed/Documents/Projects/GIthubRepo/robot-market-landing/node_modules/typescript/lib", - "vue.rearranger.settings.migration": "true" + +}]]> + @@ -220,6 +234,7 @@ + - diff --git a/app/page.tsx b/app/page.tsx index c59ad0b..d43d41f 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,5 @@ import LocationsSection from '@/components/LocationsSection'; -import ShowcaseSection from '@/components/ShowcaseSection'; +import {ShowcaseSection} from '@/features/products'; import FeaturesSection from '@/components/FeaturesSection'; import AboutSection from '@/components/AboutSection'; import HeroSection from '@/components/HeroSection'; diff --git a/app/products/[id]/page.tsx b/app/products/[id]/page.tsx index 91eb3a5..b89027a 100644 --- a/app/products/[id]/page.tsx +++ b/app/products/[id]/page.tsx @@ -1,7 +1,7 @@ import type {Metadata} from 'next'; import {notFound} from 'next/navigation'; import {content} from '@/data/content'; -import ProductDetails from '@/components/ProductDetails'; +import {ProductDetails} from '@/features/products'; import ProtectedPage from '@/components/auth/ProtectedPage'; type Props = {params: {id: string}}; diff --git a/app/products/page.tsx b/app/products/page.tsx index 2cec87e..9c07894 100644 --- a/app/products/page.tsx +++ b/app/products/page.tsx @@ -1,6 +1,6 @@ import {Suspense} from 'react'; import type {Metadata} from 'next'; -import ProductsPage from '@/components/ProductsPage'; +import {ProductsPage} from '@/features/products'; export const metadata: Metadata = {title: 'همه محصولات | روبات مارکت'}; diff --git a/components/FloatingItems.tsx b/features/products/components/FloatingItems.tsx similarity index 100% rename from components/FloatingItems.tsx rename to features/products/components/FloatingItems.tsx diff --git a/components/HorizontalShowcase.tsx b/features/products/components/HorizontalShowcase.tsx similarity index 98% rename from components/HorizontalShowcase.tsx rename to features/products/components/HorizontalShowcase.tsx index 045f563..10ed1c6 100644 --- a/components/HorizontalShowcase.tsx +++ b/features/products/components/HorizontalShowcase.tsx @@ -4,7 +4,7 @@ import {useEffect, useRef} from 'react'; import {gsap} from 'gsap'; import {ScrollTrigger} from 'gsap/ScrollTrigger'; import VendingCard from './VendingCard'; -import {featuredMachines} from '@/data/products'; +import {featuredMachines} from '@/features/products/data/catalog'; import {useLanguage} from '@/app/context/LanguageContext'; gsap.registerPlugin(ScrollTrigger); diff --git a/components/MobileShowcase.tsx b/features/products/components/MobileShowcase.tsx similarity index 97% rename from components/MobileShowcase.tsx rename to features/products/components/MobileShowcase.tsx index e221a49..b0fd03c 100644 --- a/components/MobileShowcase.tsx +++ b/features/products/components/MobileShowcase.tsx @@ -1,7 +1,7 @@ 'use client'; import {PhoneOutlined} from '@ant-design/icons'; -import {featuredMachines} from '@/data/products'; +import {featuredMachines} from '@/features/products/data/catalog'; import {useLanguage} from '@/app/context/LanguageContext'; import {commerceCopy} from '@/data/commerce'; diff --git a/components/ProductDetails.tsx b/features/products/components/ProductDetails.tsx similarity index 98% rename from components/ProductDetails.tsx rename to features/products/components/ProductDetails.tsx index b56bc45..fd464a4 100644 --- a/components/ProductDetails.tsx +++ b/features/products/components/ProductDetails.tsx @@ -5,7 +5,7 @@ import Link from 'next/link'; import {CheckCircleOutlined} from '@ant-design/icons'; import {useLanguage} from '@/app/context/LanguageContext'; import {commerceCopy} from '@/data/commerce'; -import QuantityControl from './QuantityControl'; +import QuantityControl from '@/components/QuantityControl'; export default function ProductDetails({id}: {id: string}) { const {t, locale} = useLanguage(); diff --git a/components/ProductsPage.tsx b/features/products/components/ProductsPage.tsx similarity index 97% rename from components/ProductsPage.tsx rename to features/products/components/ProductsPage.tsx index 6ad189a..d112f88 100644 --- a/components/ProductsPage.tsx +++ b/features/products/components/ProductsPage.tsx @@ -4,8 +4,8 @@ import Link from 'next/link'; import {usePathname, useRouter, useSearchParams} from 'next/navigation'; import {useLanguage} from '@/app/context/LanguageContext'; import {commerceCopy} from '@/data/commerce'; -import {filterMachines, productCategories} from '@/data/products'; -import QuantityControl from './QuantityControl'; +import {filterMachines, productCategories} from '@/features/products/data/catalog'; +import QuantityControl from '@/components/QuantityControl'; export default function ProductsPage() { const {t, locale} = useLanguage(); diff --git a/components/ShowcaseSection.tsx b/features/products/components/ShowcaseSection.tsx similarity index 100% rename from components/ShowcaseSection.tsx rename to features/products/components/ShowcaseSection.tsx diff --git a/components/VendingCard.tsx b/features/products/components/VendingCard.tsx similarity index 96% rename from components/VendingCard.tsx rename to features/products/components/VendingCard.tsx index dfaa2c9..0f0392c 100644 --- a/components/VendingCard.tsx +++ b/features/products/components/VendingCard.tsx @@ -3,9 +3,6 @@ import type {Machine} from '@/types/domain'; import type {MouseEvent} from 'react'; import {useRef} from 'react'; -import QuantityControl from './QuantityControl'; -import ProtectedLink from './auth/ProtectedLink'; -import {commerceCopy} from '@/data/commerce'; import {useLanguage} from '@/app/context/LanguageContext'; import FloatingItems from './FloatingItems'; import {floatingSnacks} from '@/data/content'; diff --git a/data/products.ts b/features/products/data/catalog.ts similarity index 100% rename from data/products.ts rename to features/products/data/catalog.ts diff --git a/features/products/index.ts b/features/products/index.ts new file mode 100644 index 0000000..545bc71 --- /dev/null +++ b/features/products/index.ts @@ -0,0 +1,3 @@ +export {default as ProductDetails} from './components/ProductDetails'; +export {default as ProductsPage} from './components/ProductsPage'; +export {default as ShowcaseSection} from './components/ShowcaseSection';