Initial commit: Arad Arisman corporate website
Next.js site for Arad Arisman (livestock/poultry feed supplements) with: - Homepage with full-screen image slider, product/category showcases, stats - About, Contact pages - Products catalog with pagination and detail pages - Blog with pagination and detail pages - RTL Persian layout with Vazirmatn font
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"version": "0.0.1",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "arad-arisman-dev",
|
||||||
|
"runtimeExecutable": "npm",
|
||||||
|
"runtimeArgs": ["run", "dev"],
|
||||||
|
"port": 3000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
/node_modules
|
||||||
|
/.pnp
|
||||||
|
.pnp.*
|
||||||
|
.yarn/*
|
||||||
|
!.yarn/patches
|
||||||
|
!.yarn/plugins
|
||||||
|
!.yarn/releases
|
||||||
|
!.yarn/versions
|
||||||
|
|
||||||
|
# testing
|
||||||
|
/coverage
|
||||||
|
|
||||||
|
# next.js
|
||||||
|
/.next/
|
||||||
|
/out/
|
||||||
|
|
||||||
|
# production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.DS_Store
|
||||||
|
*.pem
|
||||||
|
|
||||||
|
# debug
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# env files (can opt-in for committing if needed)
|
||||||
|
.env*
|
||||||
|
|
||||||
|
# vercel
|
||||||
|
.vercel
|
||||||
|
|
||||||
|
# typescript
|
||||||
|
*.tsbuildinfo
|
||||||
|
next-env.d.ts
|
||||||
|
|
||||||
|
# claude code local settings
|
||||||
|
.claude/settings.local.json
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<!-- BEGIN:nextjs-agent-rules -->
|
||||||
|
|
||||||
|
# This is NOT the Next.js you know
|
||||||
|
|
||||||
|
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.
|
||||||
|
|
||||||
|
This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
|
||||||
|
|
||||||
|
<!-- END:nextjs-agent-rules -->
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
First, run the development server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
# or
|
||||||
|
yarn dev
|
||||||
|
# or
|
||||||
|
pnpm dev
|
||||||
|
# or
|
||||||
|
bun dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||||
|
|
||||||
|
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
||||||
|
|
||||||
|
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||||
|
|
||||||
|
## Learn More
|
||||||
|
|
||||||
|
To learn more about Next.js, take a look at the following resources:
|
||||||
|
|
||||||
|
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||||
|
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||||
|
|
||||||
|
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
||||||
|
|
||||||
|
## Deploy on Vercel
|
||||||
|
|
||||||
|
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||||
|
|
||||||
|
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import { defineConfig, globalIgnores } from "eslint/config";
|
||||||
|
import nextVitals from "eslint-config-next/core-web-vitals";
|
||||||
|
import nextTs from "eslint-config-next/typescript";
|
||||||
|
|
||||||
|
const eslintConfig = defineConfig([
|
||||||
|
...nextVitals,
|
||||||
|
...nextTs,
|
||||||
|
// Override default ignores of eslint-config-next.
|
||||||
|
globalIgnores([
|
||||||
|
// Default ignores of eslint-config-next:
|
||||||
|
".next/**",
|
||||||
|
"out/**",
|
||||||
|
"build/**",
|
||||||
|
"next-env.d.ts",
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
|
||||||
|
export default eslintConfig;
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
import type { NextConfig } from "next";
|
||||||
|
|
||||||
|
const nextConfig: NextConfig = {
|
||||||
|
images: {
|
||||||
|
remotePatterns: [
|
||||||
|
{
|
||||||
|
protocol: "https",
|
||||||
|
hostname: "images.unsplash.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"name": "arad-arisman",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev",
|
||||||
|
"build": "next build",
|
||||||
|
"start": "next start",
|
||||||
|
"lint": "eslint"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"next": "16.3.0",
|
||||||
|
"react": "19.2.8",
|
||||||
|
"react-dom": "19.2.8"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@tailwindcss/postcss": "^4",
|
||||||
|
"@types/node": "^20",
|
||||||
|
"@types/react": "^19",
|
||||||
|
"@types/react-dom": "^19",
|
||||||
|
"eslint": "^9",
|
||||||
|
"eslint-config-next": "16.3.0",
|
||||||
|
"tailwindcss": "^4",
|
||||||
|
"typescript": "^5"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
const config = {
|
||||||
|
plugins: {
|
||||||
|
"@tailwindcss/postcss": {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
Create a website from this website
|
||||||
|
https://www.aradarisman.com/
|
||||||
|
|
||||||
|
You can use content and images
|
||||||
|
Lang:fa
|
||||||
|
Directions: rtl
|
||||||
|
Use next js
|
||||||
|
Design only homepage
|
||||||
|
|
||||||
|
Use the same font or some cool Persian font
|
||||||
|
Sections are the same
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
|
||||||
|
After Width: | Height: | Size: 391 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 546 KiB |
|
After Width: | Height: | Size: 546 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 733 KiB |
|
After Width: | Height: | Size: 733 KiB |
|
After Width: | Height: | Size: 526 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 733 KiB |
|
After Width: | Height: | Size: 733 KiB |
|
After Width: | Height: | Size: 733 KiB |
|
After Width: | Height: | Size: 400 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
|
||||||
|
After Width: | Height: | Size: 128 B |
@@ -0,0 +1 @@
|
|||||||
|
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
|
||||||
|
After Width: | Height: | Size: 385 B |
@@ -0,0 +1,119 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import Container from "@/components/Container";
|
||||||
|
import PageBanner from "@/components/PageBanner";
|
||||||
|
import MissionVision from "@/components/MissionVision";
|
||||||
|
import ImportCountries from "@/components/ImportCountries";
|
||||||
|
import Features from "@/components/Features";
|
||||||
|
import Partners from "@/components/Partners";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "درباره ما | آراد آریسمان",
|
||||||
|
description:
|
||||||
|
"آشنایی با شرکت آراد آریسمان؛ بیش از ۲۳ سال تجربه در تولید و عرضه مکملهای غذایی دام، طیور و زنبور عسل.",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function AboutPage() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<PageBanner
|
||||||
|
title="درباره آراد آریسمان"
|
||||||
|
subtitle="بیش از دو دهه تجربه در تولید و عرضه مکملهای غذایی دام، طیور و زنبور عسل"
|
||||||
|
breadcrumb="درباره ما"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container className="grid grid-cols-1 lg:grid-cols-2 items-center gap-12">
|
||||||
|
<div className="relative aspect-[4/3] rounded-3xl overflow-hidden shadow-xl bg-surface order-2 lg:order-1">
|
||||||
|
<Image
|
||||||
|
src="/images/category-3.jpg"
|
||||||
|
alt="محصولات آراد آریسمان"
|
||||||
|
fill
|
||||||
|
className="object-contain p-6"
|
||||||
|
sizes="(min-width: 1024px) 45vw, 90vw"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="order-1 lg:order-2 text-center lg:text-start">
|
||||||
|
<span className="text-sm font-bold text-accent">داستان ما</span>
|
||||||
|
<h2 className="mt-3 text-3xl sm:text-4xl font-extrabold text-primary">
|
||||||
|
تغذیه مطمئن، پرورش موفق
|
||||||
|
</h2>
|
||||||
|
<p className="mt-6 leading-8 text-foreground">
|
||||||
|
شرکت آراد آریسمان پیشرو در تولید و عرضه افزودنیهای خوراک، ویتامینها و
|
||||||
|
مکملهای غذایی دام و طیور با بیش از ۲۳ سال فعالیت در بازار ایران میباشد.
|
||||||
|
واردات این شرکت عمدتا از تولیدکنندگان معتبر بینالمللی غذای دام و طیور از
|
||||||
|
کشورهای انگلستان، فرانسه، ترکیه، هندوستان و چین میباشد.
|
||||||
|
</p>
|
||||||
|
<p className="mt-4 leading-8 text-foreground">
|
||||||
|
در طول این سالها، تمرکز اصلی ما بر تضمین کیفیت، ثبات ترکیبات و پاسخگویی
|
||||||
|
به نیاز واقعی دامداران، مرغداران و پرورشدهندگان زنبور عسل بوده است؛
|
||||||
|
نتیجهی این رویکرد، اعتماد پایدار بیش از ۲۳۰ مشتری در سراسر کشور است.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className="mt-8 flex justify-center lg:justify-start gap-10">
|
||||||
|
<div>
|
||||||
|
<div className="text-3xl font-extrabold text-primary">۲۳+</div>
|
||||||
|
<div className="mt-1 text-sm text-foreground">سال تجربه</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div className="text-3xl font-extrabold text-primary">۲۳۰+</div>
|
||||||
|
<div className="mt-1 text-sm text-foreground">رضایت مشتری</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div className="text-3xl font-extrabold text-primary">۵</div>
|
||||||
|
<div className="mt-1 text-sm text-foreground">کشور واردات</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<MissionVision />
|
||||||
|
|
||||||
|
<section className="bg-surface">
|
||||||
|
<Container className="pt-16 sm:pt-20 text-center max-w-xl mx-auto">
|
||||||
|
<span className="text-sm font-bold text-accent">چرا آراد آریسمان</span>
|
||||||
|
<h2 className="mt-3 text-3xl sm:text-4xl font-extrabold text-primary">
|
||||||
|
مزایای مکملهای آراد آریسمان
|
||||||
|
</h2>
|
||||||
|
</Container>
|
||||||
|
<Features />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<ImportCountries />
|
||||||
|
|
||||||
|
<Partners />
|
||||||
|
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="rounded-3xl bg-primary px-8 py-14 sm:px-16 text-center">
|
||||||
|
<h2 className="text-2xl sm:text-3xl font-extrabold text-white">
|
||||||
|
برای مشاوره و خرید محصولات همین حالا با ما در تماس باشید
|
||||||
|
</h2>
|
||||||
|
<p className="mt-4 text-white/80 max-w-xl mx-auto">
|
||||||
|
کارشناسان آراد آریسمان آماده پاسخگویی به سوالات شما درباره مکملها و
|
||||||
|
نحوه مصرف آنها هستند.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8 flex flex-wrap justify-center gap-4">
|
||||||
|
<Link
|
||||||
|
href="/contact"
|
||||||
|
className="rounded-full bg-white px-7 py-3.5 text-primary font-semibold hover:bg-white/90 transition-colors"
|
||||||
|
>
|
||||||
|
تماس با ما
|
||||||
|
</Link>
|
||||||
|
<a
|
||||||
|
href="tel:09104067935"
|
||||||
|
dir="ltr"
|
||||||
|
className="rounded-full border border-white/30 px-7 py-3.5 text-white font-semibold hover:bg-white/10 transition-colors"
|
||||||
|
>
|
||||||
|
09104067935
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { notFound } from "next/navigation";
|
||||||
|
import Container from "@/components/Container";
|
||||||
|
import PageBanner from "@/components/PageBanner";
|
||||||
|
import PostCard from "@/components/PostCard";
|
||||||
|
import { getPostBySlug, getRelatedPosts, posts } from "@/data/posts";
|
||||||
|
|
||||||
|
export function generateStaticParams() {
|
||||||
|
return posts.map((p) => ({ slug: p.slug }));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function generateMetadata({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: Promise<{ slug: string }>;
|
||||||
|
}): Promise<Metadata> {
|
||||||
|
const { slug } = await params;
|
||||||
|
const post = getPostBySlug(slug);
|
||||||
|
if (!post) return {};
|
||||||
|
return {
|
||||||
|
title: `${post.title} | آراد آریسمان`,
|
||||||
|
description: post.excerpt,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function BlogDetailPage({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: Promise<{ slug: string }>;
|
||||||
|
}) {
|
||||||
|
const { slug } = await params;
|
||||||
|
const post = getPostBySlug(slug);
|
||||||
|
if (!post) notFound();
|
||||||
|
|
||||||
|
const related = getRelatedPosts(post);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<PageBanner title={post.title} breadcrumb="مقالات" />
|
||||||
|
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container className="max-w-3xl">
|
||||||
|
<Link
|
||||||
|
href="/blog"
|
||||||
|
className="inline-flex items-center gap-2 text-sm font-semibold text-primary hover:text-primary-dark transition-colors"
|
||||||
|
>
|
||||||
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M10.7 18.7a1 1 0 0 1-1.4 0l-6-6a1 1 0 0 1 0-1.4l6-6a1 1 0 1 1 1.4 1.4L6 11.3h14a1 1 0 1 1 0 2H6l4.7 4.3a1 1 0 0 1 0 1.4Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
بازگشت به مقالات
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
<div className="mt-6 flex items-center gap-3 text-sm text-foreground/70">
|
||||||
|
<span className="rounded-full bg-primary/5 px-3 py-1 text-xs font-semibold text-primary">
|
||||||
|
{post.category}
|
||||||
|
</span>
|
||||||
|
<span>{post.date}</span>
|
||||||
|
<span className="h-1 w-1 rounded-full bg-foreground/30" />
|
||||||
|
<span>{post.readingTime}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="relative mt-6 aspect-[16/9] rounded-3xl overflow-hidden shadow-xl bg-surface">
|
||||||
|
<Image
|
||||||
|
src={post.cover}
|
||||||
|
alt={post.title}
|
||||||
|
fill
|
||||||
|
priority
|
||||||
|
className="object-cover"
|
||||||
|
sizes="(min-width: 1024px) 768px, 100vw"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-8 space-y-5">
|
||||||
|
{post.content.map((paragraph) => (
|
||||||
|
<p key={paragraph} className="leading-8 text-foreground">
|
||||||
|
{paragraph}
|
||||||
|
</p>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-10 rounded-2xl bg-surface p-6 flex flex-wrap items-center justify-between gap-4">
|
||||||
|
<div>
|
||||||
|
<p className="font-bold text-secondary">نویسنده: تیم آراد آریسمان</p>
|
||||||
|
<p className="mt-1 text-sm text-foreground">
|
||||||
|
برای مشاوره تخصصی تغذیه دام و طیور با ما در تماس باشید.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<Link
|
||||||
|
href="/contact"
|
||||||
|
className="rounded-full bg-primary px-6 py-3 text-white font-semibold hover:bg-primary-dark transition-colors shrink-0"
|
||||||
|
>
|
||||||
|
تماس با ما
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{related.length > 0 && (
|
||||||
|
<section className="pb-16 sm:pb-20 bg-surface pt-16">
|
||||||
|
<Container>
|
||||||
|
<h2 className="text-2xl font-extrabold text-primary">
|
||||||
|
مقالات مرتبط
|
||||||
|
</h2>
|
||||||
|
<div className="mt-8 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
|
{related.map((p) => (
|
||||||
|
<PostCard key={p.id} post={p} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import Container from "@/components/Container";
|
||||||
|
import PageBanner from "@/components/PageBanner";
|
||||||
|
import PostCard from "@/components/PostCard";
|
||||||
|
import Pagination from "@/components/Pagination";
|
||||||
|
import { posts } from "@/data/posts";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "مقالات | آراد آریسمان",
|
||||||
|
description:
|
||||||
|
"مقالات آموزشی درباره تغذیه دام، طیور و زنبور عسل از تیم آراد آریسمان.",
|
||||||
|
};
|
||||||
|
|
||||||
|
const PAGE_SIZE = 6;
|
||||||
|
|
||||||
|
export default async function BlogPage({
|
||||||
|
searchParams,
|
||||||
|
}: {
|
||||||
|
searchParams: Promise<{ page?: string }>;
|
||||||
|
}) {
|
||||||
|
const { page } = await searchParams;
|
||||||
|
const totalPages = Math.max(1, Math.ceil(posts.length / PAGE_SIZE));
|
||||||
|
const currentPage = Math.min(Math.max(1, Number(page) || 1), totalPages);
|
||||||
|
const start = (currentPage - 1) * PAGE_SIZE;
|
||||||
|
const pageItems = posts.slice(start, start + PAGE_SIZE);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<PageBanner
|
||||||
|
title="مقالات آراد آریسمان"
|
||||||
|
subtitle="نکات آموزشی و تخصصی درباره تغذیه دام، طیور و زنبور عسل"
|
||||||
|
breadcrumb="مقالات"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
|
{pageItems.map((post) => (
|
||||||
|
<PostCard key={post.id} post={post} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Pagination
|
||||||
|
currentPage={currentPage}
|
||||||
|
totalPages={totalPages}
|
||||||
|
basePath="/blog"
|
||||||
|
/>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import Container from "@/components/Container";
|
||||||
|
import PageBanner from "@/components/PageBanner";
|
||||||
|
import ContactInfo from "@/components/ContactInfo";
|
||||||
|
import ContactForm from "@/components/ContactForm";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "تماس با ما | آراد آریسمان",
|
||||||
|
description:
|
||||||
|
"راههای ارتباطی با شرکت آراد آریسمان؛ آدرس، تلفن تماس و فرم ارسال پیام.",
|
||||||
|
};
|
||||||
|
|
||||||
|
const mapQuery = encodeURIComponent(
|
||||||
|
"قم، شهرک صنعتی شکوهیه، خیابان شهید بروجردی"
|
||||||
|
);
|
||||||
|
|
||||||
|
export default function ContactPage() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<PageBanner
|
||||||
|
title="تماس با ما"
|
||||||
|
subtitle="سوالات، پیشنهادات یا درخواست مشاوره خود را برای ما بفرستید؛ کارشناسان آراد آریسمان در اسرع وقت پاسخگوی شما خواهند بود."
|
||||||
|
breadcrumb="تماس با ما"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container>
|
||||||
|
<ContactInfo />
|
||||||
|
|
||||||
|
<div className="mt-14 grid grid-cols-1 lg:grid-cols-5 gap-10">
|
||||||
|
<div className="lg:col-span-3 rounded-2xl border border-black/5 bg-white p-6 sm:p-8 shadow-sm">
|
||||||
|
<h2 className="text-xl font-bold text-secondary">
|
||||||
|
فرم ارسال پیام
|
||||||
|
</h2>
|
||||||
|
<p className="mt-2 text-sm text-foreground">
|
||||||
|
فرم زیر را تکمیل کنید تا در اسرع وقت با شما تماس بگیریم.
|
||||||
|
</p>
|
||||||
|
<div className="mt-6">
|
||||||
|
<ContactForm />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="lg:col-span-2 flex flex-col gap-5">
|
||||||
|
<div className="relative flex-1 min-h-[280px] rounded-2xl overflow-hidden border border-black/5 shadow-sm">
|
||||||
|
<iframe
|
||||||
|
title="نقشه آراد آریسمان"
|
||||||
|
src={`https://www.google.com/maps?q=${mapQuery}&output=embed`}
|
||||||
|
className="absolute inset-0 h-full w-full border-0"
|
||||||
|
loading="lazy"
|
||||||
|
referrerPolicy="no-referrer-when-downgrade"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="rounded-2xl bg-secondary p-7 text-white">
|
||||||
|
<h3 className="font-bold">ما را در شبکههای اجتماعی دنبال کنید</h3>
|
||||||
|
<div className="mt-5 flex items-center gap-4">
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
aria-label="تلگرام"
|
||||||
|
className="flex h-10 w-10 items-center justify-center rounded-full bg-white/10 hover:bg-accent hover:text-secondary transition-colors"
|
||||||
|
>
|
||||||
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M21.5 3.5 2.8 10.9c-1 .4-1 1.7.1 2l4.7 1.5 1.8 5.6c.2.6 1 .8 1.4.3l2.5-2.7 4.9 3.6c.6.5 1.6.1 1.8-.6l3-15.6c.2-1-.7-1.8-1.5-1.5z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
aria-label="واتساپ"
|
||||||
|
className="flex h-10 w-10 items-center justify-center rounded-full bg-white/10 hover:bg-accent hover:text-secondary transition-colors"
|
||||||
|
>
|
||||||
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.4A10 10 0 1 0 12 2Zm0 18.2a8.1 8.1 0 0 1-4.2-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8.2 8.2 0 1 1 12 20.2Zm4.5-6.1c-.2-.1-1.5-.7-1.7-.8-.2-.1-.4-.1-.6.1-.2.2-.7.8-.8 1-.2.2-.3.2-.5.1a6.7 6.7 0 0 1-2-1.2 7.4 7.4 0 0 1-1.4-1.7c-.1-.2 0-.4.1-.5l.4-.4c.1-.2.2-.3.2-.5.1-.2 0-.4 0-.5-.1-.1-.6-1.5-.8-2-.2-.5-.4-.4-.6-.4h-.5c-.2 0-.5.1-.7.3-.2.2-.9.9-.9 2.2s.9 2.6 1.1 2.8c.1.2 1.9 3 4.7 4.1.7.3 1.2.4 1.6.6.7.2 1.3.2 1.8.1.5-.1 1.5-.6 1.7-1.2.2-.6.2-1.1.2-1.2-.1-.2-.3-.2-.5-.3Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="tel:09104067935"
|
||||||
|
aria-label="تماس تلفنی"
|
||||||
|
className="flex h-10 w-10 items-center justify-center rounded-full bg-white/10 hover:bg-accent hover:text-secondary transition-colors"
|
||||||
|
>
|
||||||
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M6.6 10.8c1.4 2.8 3.8 5.1 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1C10.6 21 3 13.4 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1L6.6 10.8z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 25 KiB |
@@ -0,0 +1,28 @@
|
|||||||
|
@import "tailwindcss";
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--background: #ffffff;
|
||||||
|
--foreground: #5c6873;
|
||||||
|
--primary: #16423d;
|
||||||
|
--primary-dark: #0c2925;
|
||||||
|
--secondary: #121c27;
|
||||||
|
--accent: #cfa15b;
|
||||||
|
--surface: #f4f6f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
@theme inline {
|
||||||
|
--color-background: var(--background);
|
||||||
|
--color-foreground: var(--foreground);
|
||||||
|
--color-primary: var(--primary);
|
||||||
|
--color-primary-dark: var(--primary-dark);
|
||||||
|
--color-secondary: var(--secondary);
|
||||||
|
--color-accent: var(--accent);
|
||||||
|
--color-surface: var(--surface);
|
||||||
|
--font-sans: var(--font-vazirmatn);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: var(--background);
|
||||||
|
color: var(--foreground);
|
||||||
|
font-family: var(--font-vazirmatn), Tahoma, sans-serif;
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import { Vazirmatn } from "next/font/google";
|
||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import "./globals.css";
|
||||||
|
|
||||||
|
const vazirmatn = Vazirmatn({
|
||||||
|
variable: "--font-vazirmatn",
|
||||||
|
subsets: ["arabic"],
|
||||||
|
weight: ["300", "400", "500", "600", "700", "800"],
|
||||||
|
});
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "آراد آریسمان | صفحه اصلی",
|
||||||
|
description:
|
||||||
|
"شرکت آراد آریسمان، تولید و عرضه مکملها، ویتامینها و افزودنیهای خوراک دام و طیور با بیش از ۲۳ سال تجربه.",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({ children }: LayoutProps<"/">) {
|
||||||
|
return (
|
||||||
|
<html
|
||||||
|
lang="fa"
|
||||||
|
dir="rtl"
|
||||||
|
className={`${vazirmatn.variable} h-full antialiased`}
|
||||||
|
>
|
||||||
|
<body className="min-h-full flex flex-col">
|
||||||
|
<Header />
|
||||||
|
<main className="flex-1 pt-[125px]">{children}</main>
|
||||||
|
<Footer />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import HeroSlider from "@/components/HeroSlider";
|
||||||
|
import Features from "@/components/Features";
|
||||||
|
import Categories from "@/components/Categories";
|
||||||
|
import Stats from "@/components/Stats";
|
||||||
|
import Products from "@/components/Products";
|
||||||
|
import About from "@/components/About";
|
||||||
|
import Partners from "@/components/Partners";
|
||||||
|
|
||||||
|
export default function Home() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<HeroSlider />
|
||||||
|
<Features />
|
||||||
|
<Categories />
|
||||||
|
<Stats />
|
||||||
|
<Products />
|
||||||
|
<About />
|
||||||
|
<Partners />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { notFound } from "next/navigation";
|
||||||
|
import Container from "@/components/Container";
|
||||||
|
import PageBanner from "@/components/PageBanner";
|
||||||
|
import ProductCard from "@/components/ProductCard";
|
||||||
|
import {
|
||||||
|
getProductBySlug,
|
||||||
|
getRelatedProducts,
|
||||||
|
products,
|
||||||
|
} from "@/data/products";
|
||||||
|
|
||||||
|
export function generateStaticParams() {
|
||||||
|
return products.map((p) => ({ slug: p.slug }));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function generateMetadata({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: Promise<{ slug: string }>;
|
||||||
|
}): Promise<Metadata> {
|
||||||
|
const { slug } = await params;
|
||||||
|
const product = getProductBySlug(slug);
|
||||||
|
if (!product) return {};
|
||||||
|
return {
|
||||||
|
title: `${product.title} | آراد آریسمان`,
|
||||||
|
description: product.shortDesc,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function ProductDetailPage({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: Promise<{ slug: string }>;
|
||||||
|
}) {
|
||||||
|
const { slug } = await params;
|
||||||
|
const product = getProductBySlug(slug);
|
||||||
|
if (!product) notFound();
|
||||||
|
|
||||||
|
const related = getRelatedProducts(product);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<PageBanner
|
||||||
|
title={product.title}
|
||||||
|
subtitle={product.shortDesc}
|
||||||
|
breadcrumb={product.title}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container>
|
||||||
|
<Link
|
||||||
|
href="/products"
|
||||||
|
className="inline-flex items-center gap-2 text-sm font-semibold text-primary hover:text-primary-dark transition-colors"
|
||||||
|
>
|
||||||
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M10.7 18.7a1 1 0 0 1-1.4 0l-6-6a1 1 0 0 1 0-1.4l6-6a1 1 0 1 1 1.4 1.4L6 11.3h14a1 1 0 1 1 0 2H6l4.7 4.3a1 1 0 0 1 0 1.4Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
بازگشت به محصولات
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
<div className="mt-8 grid grid-cols-1 lg:grid-cols-2 gap-12">
|
||||||
|
<div className="relative aspect-square rounded-3xl overflow-hidden shadow-xl bg-surface">
|
||||||
|
<Image
|
||||||
|
src={product.image}
|
||||||
|
alt={product.title}
|
||||||
|
fill
|
||||||
|
priority
|
||||||
|
className="object-cover"
|
||||||
|
sizes="(min-width: 1024px) 45vw, 90vw"
|
||||||
|
/>
|
||||||
|
<span className="absolute top-4 right-4 rounded-full bg-white/90 backdrop-blur px-4 py-1.5 text-sm font-semibold text-primary">
|
||||||
|
{product.category}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h1 className="text-2xl sm:text-3xl font-extrabold text-primary">
|
||||||
|
{product.title}
|
||||||
|
</h1>
|
||||||
|
<p className="mt-3 text-foreground leading-8">
|
||||||
|
{product.shortDesc}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className="mt-6 flex items-center gap-3">
|
||||||
|
<span className="text-xl font-extrabold text-primary">
|
||||||
|
تماس بگیرید
|
||||||
|
</span>
|
||||||
|
<span className="text-sm text-foreground/60">
|
||||||
|
({product.packaging})
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-6 flex flex-wrap gap-3">
|
||||||
|
<a
|
||||||
|
href="tel:09104067935"
|
||||||
|
dir="ltr"
|
||||||
|
className="rounded-full bg-primary px-7 py-3.5 text-white font-semibold hover:bg-primary-dark transition-colors"
|
||||||
|
>
|
||||||
|
09104067935
|
||||||
|
</a>
|
||||||
|
<Link
|
||||||
|
href="/contact"
|
||||||
|
className="rounded-full border border-primary/30 px-7 py-3.5 text-primary font-semibold hover:bg-primary/5 transition-colors"
|
||||||
|
>
|
||||||
|
استعلام قیمت
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-8 rounded-2xl border border-black/5 bg-white p-6">
|
||||||
|
<h2 className="font-bold text-secondary">نحوه مصرف</h2>
|
||||||
|
<p className="mt-2 text-sm leading-7 text-foreground">
|
||||||
|
{product.usage}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-6">
|
||||||
|
<h2 className="font-bold text-secondary">مزایای محصول</h2>
|
||||||
|
<ul className="mt-3 space-y-2">
|
||||||
|
{product.benefits.map((b) => (
|
||||||
|
<li key={b} className="flex items-start gap-2 text-sm text-foreground">
|
||||||
|
<span className="mt-1 flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary">
|
||||||
|
<svg width="10" height="10" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M5 13l4 4L19 7"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeWidth="3"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
{b}
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-14 rounded-2xl border border-black/5 bg-white p-6 sm:p-8">
|
||||||
|
<h2 className="text-lg font-bold text-secondary">معرفی محصول</h2>
|
||||||
|
<div className="mt-4 space-y-4">
|
||||||
|
{product.description.map((paragraph) => (
|
||||||
|
<p key={paragraph} className="leading-8 text-foreground">
|
||||||
|
{paragraph}
|
||||||
|
</p>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{related.length > 0 && (
|
||||||
|
<section className="pb-16 sm:pb-20">
|
||||||
|
<Container>
|
||||||
|
<h2 className="text-2xl font-extrabold text-primary">
|
||||||
|
محصولات مرتبط
|
||||||
|
</h2>
|
||||||
|
<div className="mt-8 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
|
{related.map((p) => (
|
||||||
|
<ProductCard key={p.id} product={p} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import Container from "@/components/Container";
|
||||||
|
import PageBanner from "@/components/PageBanner";
|
||||||
|
import ProductCard from "@/components/ProductCard";
|
||||||
|
import Pagination from "@/components/Pagination";
|
||||||
|
import { products } from "@/data/products";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "محصولات | آراد آریسمان",
|
||||||
|
description:
|
||||||
|
"مکملهای غذایی، ویتامینه و معدنی دام، طیور و زنبور عسل؛ محصولات آراد آریسمان را مشاهده کنید.",
|
||||||
|
};
|
||||||
|
|
||||||
|
const PAGE_SIZE = 6;
|
||||||
|
|
||||||
|
export default async function ProductsPage({
|
||||||
|
searchParams,
|
||||||
|
}: {
|
||||||
|
searchParams: Promise<{ page?: string }>;
|
||||||
|
}) {
|
||||||
|
const { page } = await searchParams;
|
||||||
|
const totalPages = Math.max(1, Math.ceil(products.length / PAGE_SIZE));
|
||||||
|
const currentPage = Math.min(
|
||||||
|
Math.max(1, Number(page) || 1),
|
||||||
|
totalPages
|
||||||
|
);
|
||||||
|
const start = (currentPage - 1) * PAGE_SIZE;
|
||||||
|
const pageItems = products.slice(start, start + PAGE_SIZE);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<PageBanner
|
||||||
|
title="محصولات آراد آریسمان"
|
||||||
|
subtitle="مکملهای غذایی، ویتامینه و معدنی برای دام، طیور و زنبور عسل"
|
||||||
|
breadcrumb="محصولات"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
|
{pageItems.map((product) => (
|
||||||
|
<ProductCard key={product.id} product={product} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Pagination
|
||||||
|
currentPage={currentPage}
|
||||||
|
totalPages={totalPages}
|
||||||
|
basePath="/products"
|
||||||
|
/>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
export default function About() {
|
||||||
|
return (
|
||||||
|
<section id="about" className="py-16 sm:py-20 bg-surface">
|
||||||
|
<Container className="grid grid-cols-1 lg:grid-cols-2 items-center gap-12">
|
||||||
|
<div className="relative aspect-[4/3] rounded-3xl overflow-hidden shadow-xl order-2 lg:order-1">
|
||||||
|
<Image
|
||||||
|
src="/images/hero-2.jpg"
|
||||||
|
alt="محصولات آراد آریسمان"
|
||||||
|
fill
|
||||||
|
className="object-cover object-left"
|
||||||
|
sizes="(min-width: 1024px) 45vw, 90vw"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="order-1 lg:order-2 text-center lg:text-start">
|
||||||
|
<span className="text-sm font-bold text-accent">درباره ما</span>
|
||||||
|
<h2 className="mt-3 text-3xl sm:text-4xl font-extrabold text-primary">
|
||||||
|
آراد آریسمان
|
||||||
|
</h2>
|
||||||
|
<p className="mt-6 leading-8 text-foreground">
|
||||||
|
شرکت آراد آریسمان پیشرو در تولید و عرضه افزودنیهای خوراک، ویتامینها و
|
||||||
|
مکملهای غذایی دام و طیور با بیش از ۲۳ سال فعالیت در بازار ایران میباشد.
|
||||||
|
واردات این شرکت عمدتا از تولیدکنندگان معتبر بینالمللی غذای دام و طیور از
|
||||||
|
کشورهای انگلستان، فرانسه، ترکیه، هندوستان و چین میباشد.
|
||||||
|
</p>
|
||||||
|
<div className="mt-8 flex justify-center lg:justify-start gap-10">
|
||||||
|
<div>
|
||||||
|
<div className="text-3xl font-extrabold text-primary">۲۳+</div>
|
||||||
|
<div className="mt-1 text-sm text-foreground">سال تجربه</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div className="text-3xl font-extrabold text-primary">۲۳۰+</div>
|
||||||
|
<div className="mt-1 text-sm text-foreground">رضایت مشتری</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div className="text-3xl font-extrabold text-primary">۵</div>
|
||||||
|
<div className="mt-1 text-sm text-foreground">کشور واردات</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
const categories = [
|
||||||
|
{ title: "مکمل ویتامینه مرغ گوشتی", img: "/images/category-1.jpg" },
|
||||||
|
{ title: "سبوس برنج فراوری شده", img: "/images/category-2.jpg" },
|
||||||
|
{ title: "مکمل غذایی دام", img: "/images/category-3.jpg" },
|
||||||
|
{ title: "کنسانتره طیور", img: "/images/category-4.jpg" },
|
||||||
|
{ title: "کنسانتره گوسفند", img: "/images/category-5.jpg" },
|
||||||
|
{ title: "مکمل معدنی مرغ گوشتی", img: "/images/category-6.jpg" },
|
||||||
|
{ title: "مکمل گوسفند", img: "/images/category-7.jpg" },
|
||||||
|
{ title: "مکمل زنبور عسل", img: "/images/category-8.jpg" },
|
||||||
|
{ title: "مکمل معدنی مرغ تخمگذار", img: "/images/category-9.jpg" },
|
||||||
|
{ title: "مکمل ویتامینه مرغ تخمگذار", img: "/images/category-10.jpg" },
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function Categories() {
|
||||||
|
return (
|
||||||
|
<section className="py-16 sm:py-20 bg-surface">
|
||||||
|
<Container>
|
||||||
|
<div className="text-center max-w-xl mx-auto">
|
||||||
|
<span className="text-sm font-bold text-accent">آراد آریسمان</span>
|
||||||
|
<h2 className="mt-3 text-3xl sm:text-4xl font-extrabold text-primary">
|
||||||
|
تغذیه مطمئن، پرورش موفق
|
||||||
|
</h2>
|
||||||
|
<p className="mt-4 text-foreground">
|
||||||
|
دستهبندی کامل محصولات ما برای طیور، دام و زنبور عسل
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-12 flex gap-5 overflow-x-auto pb-4 snap-x snap-mandatory [scrollbar-width:thin]">
|
||||||
|
{categories.map((c) => (
|
||||||
|
<a
|
||||||
|
key={c.title}
|
||||||
|
href="#products"
|
||||||
|
className="group relative shrink-0 snap-start w-[220px] sm:w-[240px] aspect-[3/4] rounded-2xl overflow-hidden shadow-md"
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
src={c.img}
|
||||||
|
alt={c.title}
|
||||||
|
fill
|
||||||
|
className="object-cover group-hover:scale-105 transition-transform duration-500"
|
||||||
|
sizes="240px"
|
||||||
|
/>
|
||||||
|
<div className="absolute inset-0 bg-gradient-to-t from-secondary/90 via-secondary/20 to-transparent" />
|
||||||
|
<span className="absolute bottom-5 inset-x-4 text-white font-bold text-lg leading-7">
|
||||||
|
{c.title}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { FormEvent, useState } from "react";
|
||||||
|
|
||||||
|
export default function ContactForm() {
|
||||||
|
const [submitted, setSubmitted] = useState(false);
|
||||||
|
const [sending, setSending] = useState(false);
|
||||||
|
|
||||||
|
function handleSubmit(e: FormEvent<HTMLFormElement>) {
|
||||||
|
e.preventDefault();
|
||||||
|
const formEl = e.currentTarget;
|
||||||
|
setSending(true);
|
||||||
|
window.setTimeout(() => {
|
||||||
|
setSending(false);
|
||||||
|
setSubmitted(true);
|
||||||
|
formEl.reset();
|
||||||
|
}, 600);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (submitted) {
|
||||||
|
return (
|
||||||
|
<div className="rounded-2xl border border-primary/20 bg-primary/5 p-8 text-center">
|
||||||
|
<div className="mx-auto flex h-14 w-14 items-center justify-center rounded-full bg-primary text-white">
|
||||||
|
<svg width="26" height="26" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M5 13l4 4L19 7"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeWidth="2.5"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h3 className="mt-5 text-lg font-bold text-secondary">
|
||||||
|
پیام شما ثبت شد
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm text-foreground">
|
||||||
|
از تماس شما سپاسگزاریم. کارشناسان ما در اسرع وقت با شما تماس خواهند
|
||||||
|
گرفت.
|
||||||
|
</p>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => setSubmitted(false)}
|
||||||
|
className="mt-6 rounded-full border border-primary/30 px-6 py-2.5 text-sm font-semibold text-primary hover:bg-primary/5 transition-colors"
|
||||||
|
>
|
||||||
|
ارسال پیام جدید
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<form onSubmit={handleSubmit} className="space-y-5">
|
||||||
|
<div className="grid grid-cols-1 sm:grid-cols-2 gap-5">
|
||||||
|
<div>
|
||||||
|
<label htmlFor="name" className="block text-sm font-medium text-secondary mb-2">
|
||||||
|
نام و نام خانوادگی
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="name"
|
||||||
|
name="name"
|
||||||
|
type="text"
|
||||||
|
required
|
||||||
|
placeholder="نام شما"
|
||||||
|
className="w-full rounded-xl border border-black/10 bg-white px-4 py-3 text-sm outline-none focus:border-primary transition-colors"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label htmlFor="phone" className="block text-sm font-medium text-secondary mb-2">
|
||||||
|
شماره تماس
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="phone"
|
||||||
|
name="phone"
|
||||||
|
type="tel"
|
||||||
|
required
|
||||||
|
dir="ltr"
|
||||||
|
placeholder="09xxxxxxxxx"
|
||||||
|
className="w-full rounded-xl border border-black/10 bg-white px-4 py-3 text-sm text-right outline-none focus:border-primary transition-colors"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label htmlFor="subject" className="block text-sm font-medium text-secondary mb-2">
|
||||||
|
موضوع
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="subject"
|
||||||
|
name="subject"
|
||||||
|
type="text"
|
||||||
|
placeholder="موضوع پیام"
|
||||||
|
className="w-full rounded-xl border border-black/10 bg-white px-4 py-3 text-sm outline-none focus:border-primary transition-colors"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label htmlFor="message" className="block text-sm font-medium text-secondary mb-2">
|
||||||
|
پیام شما
|
||||||
|
</label>
|
||||||
|
<textarea
|
||||||
|
id="message"
|
||||||
|
name="message"
|
||||||
|
required
|
||||||
|
rows={5}
|
||||||
|
placeholder="پیام خود را بنویسید..."
|
||||||
|
className="w-full rounded-xl border border-black/10 bg-white px-4 py-3 text-sm outline-none focus:border-primary transition-colors resize-none"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
disabled={sending}
|
||||||
|
className="w-full sm:w-auto rounded-full bg-primary px-8 py-3.5 text-white font-semibold hover:bg-primary-dark transition-colors disabled:opacity-60"
|
||||||
|
>
|
||||||
|
{sending ? "در حال ارسال..." : "ارسال پیام"}
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
const cards = [
|
||||||
|
{
|
||||||
|
title: "آدرس ما",
|
||||||
|
lines: ["قم، شهرک صنعتی شکوهیه، فاز دو،", "خیابان شهید بروجردی، نبش کلاهدوز یک، پلاک ۸۶۶"],
|
||||||
|
icon: (
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M12 22s7-6.3 7-12a7 7 0 1 0-14 0c0 5.7 7 12 7 12Zm0-9a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "تلفن تماس",
|
||||||
|
lines: ["09104067935", "۰۲۵۳۳۳۴۲۶۳۳ ، ۰۲۵۳۳۳۴۲۹۶۷ ، ۰۲۵۳۳۳۴۲۹۸۳"],
|
||||||
|
icon: (
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M6.6 10.8c1.4 2.8 3.8 5.1 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1C10.6 21 3 13.4 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1L6.6 10.8z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "ساعات کاری",
|
||||||
|
lines: ["شنبه تا چهارشنبه: ۸ الی ۱۷", "پنجشنبه: ۸ الی ۱۳"],
|
||||||
|
icon: (
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm1-10.4 4 2.3-1 1.7-5-2.9V6h2v5.6Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function ContactInfo() {
|
||||||
|
return (
|
||||||
|
<div className="grid grid-cols-1 sm:grid-cols-3 gap-5">
|
||||||
|
{cards.map((c) => (
|
||||||
|
<div
|
||||||
|
key={c.title}
|
||||||
|
className="rounded-2xl border border-black/5 bg-white p-7 shadow-sm"
|
||||||
|
>
|
||||||
|
<div className="flex h-12 w-12 items-center justify-center rounded-xl bg-primary/5 text-primary">
|
||||||
|
{c.icon}
|
||||||
|
</div>
|
||||||
|
<h3 className="mt-4 font-bold text-secondary">{c.title}</h3>
|
||||||
|
<div className="mt-2 space-y-1 text-sm leading-7 text-foreground" dir={c.title === "تلفن تماس" ? "ltr" : undefined}>
|
||||||
|
{c.lines.map((line) => (
|
||||||
|
<p key={line} className={c.title === "تلفن تماس" ? "text-right" : undefined}>
|
||||||
|
{line}
|
||||||
|
</p>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
|
||||||
|
export default function Container({
|
||||||
|
children,
|
||||||
|
className = "",
|
||||||
|
}: {
|
||||||
|
children: ReactNode;
|
||||||
|
className?: string;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<div className={`mx-auto w-full max-w-7xl px-5 sm:px-8 ${className}`}>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
const features = [
|
||||||
|
{
|
||||||
|
icon: "/images/feature-icon-1.png",
|
||||||
|
title: "کیفیت تخم و گوشت",
|
||||||
|
desc: "ارتقای طعم، رنگ و ارزش تغذیهای",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: "/images/feature-icon-2.png",
|
||||||
|
title: "بهرهوری بالا",
|
||||||
|
desc: "مصرف بهینه خوراک و بازده اقتصادی بیشتر",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: "/images/feature-icon-3.png",
|
||||||
|
title: "تقویت ایمنی",
|
||||||
|
desc: "کاهش بیماریها و تلفات گله",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: "/images/feature-icon-4.png",
|
||||||
|
title: "افزایش رشد",
|
||||||
|
desc: "بهبود وزنگیری سریع و یکنواخت",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function Features() {
|
||||||
|
return (
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
|
||||||
|
{features.map((f) => (
|
||||||
|
<div
|
||||||
|
key={f.title}
|
||||||
|
className="group rounded-2xl border border-black/5 bg-white p-7 shadow-sm hover:shadow-lg hover:-translate-y-1 transition-all"
|
||||||
|
>
|
||||||
|
<div className="flex h-16 w-16 items-center justify-center rounded-xl bg-primary/5">
|
||||||
|
<Image src={f.icon} alt="" width={40} height={40} />
|
||||||
|
</div>
|
||||||
|
<h3 className="mt-5 text-lg font-bold text-secondary">{f.title}</h3>
|
||||||
|
<p className="mt-2 text-sm leading-6 text-foreground">{f.desc}</p>
|
||||||
|
<span className="mt-4 inline-flex items-center justify-center h-8 w-8 rounded-full border border-primary/20 text-primary rotate-180 group-hover:bg-primary group-hover:text-white group-hover:rotate-0 transition-all">
|
||||||
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M13.3 5.3a1 1 0 0 1 1.4 0l6 6a1 1 0 0 1 0 1.4l-6 6a1 1 0 1 1-1.4-1.4L18 12.7H4a1 1 0 1 1 0-2h14L13.3 6.7a1 1 0 0 1 0-1.4Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
const phones = ["09104067935", "۰۲۵۳۳۳۴۲۶۳۳", "۰۲۵۳۳۳۴۲۹۶۷", "۰۲۵۳۳۳۴۲۹۸۳"];
|
||||||
|
|
||||||
|
const quickLinks = [
|
||||||
|
{ label: "صفحه اصلی", href: "/" },
|
||||||
|
{ label: "محصولات", href: "/products" },
|
||||||
|
{ label: "مقالات", href: "/blog" },
|
||||||
|
{ label: "درباره ما", href: "/about" },
|
||||||
|
{ label: "تماس با ما", href: "/contact" },
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function Footer() {
|
||||||
|
return (
|
||||||
|
<footer id="footer" className="relative bg-secondary text-white/80 overflow-hidden">
|
||||||
|
<Image
|
||||||
|
src="/images/footer-shape.png"
|
||||||
|
alt=""
|
||||||
|
fill
|
||||||
|
className="object-cover object-left opacity-10 pointer-events-none select-none"
|
||||||
|
/>
|
||||||
|
<Container className="relative py-16 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-10">
|
||||||
|
<div>
|
||||||
|
<Image
|
||||||
|
src="/images/footer-logo.png"
|
||||||
|
alt="آراد آریسمان"
|
||||||
|
width={140}
|
||||||
|
height={40}
|
||||||
|
className="h-10 w-auto"
|
||||||
|
/>
|
||||||
|
<p className="mt-5 text-sm leading-7 text-white/60">
|
||||||
|
شرکت آراد آریسمان، پیشرو در تولید و عرضه افزودنیهای خوراک، ویتامینها و
|
||||||
|
مکملهای غذایی دام و طیور با بیش از ۲۳ سال تجربه.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4 className="text-white font-bold mb-5">لینکهای سریع</h4>
|
||||||
|
<ul className="space-y-3 text-sm">
|
||||||
|
{quickLinks.map((l) => (
|
||||||
|
<li key={l.label}>
|
||||||
|
<Link href={l.href} className="hover:text-accent transition-colors">
|
||||||
|
{l.label}
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4 className="text-white font-bold mb-5">آدرس ما</h4>
|
||||||
|
<p className="text-sm leading-7 text-white/60">
|
||||||
|
قم، شهرک صنعتی شکوهیه، فاز دو، خیابان شهید بروجردی، نبش کلاهدوز یک، پلاک ۸۶۶
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4 className="text-white font-bold mb-5">راههای ارتباطی</h4>
|
||||||
|
<ul className="space-y-3 text-sm">
|
||||||
|
{phones.map((p) => (
|
||||||
|
<li key={p}>
|
||||||
|
<a href={`tel:${p}`} dir="ltr" className="hover:text-accent transition-colors block text-right">
|
||||||
|
{p}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
<li className="text-white/50">۰۲۵۳۳۳۴۲۹۴۲ (فاکس)</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
|
||||||
|
<div className="border-t border-white/10">
|
||||||
|
<Container className="py-5 text-center text-sm text-white/50">
|
||||||
|
طراحی و توسعه توسط تیم تجارت الکترونیک مشکی
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { usePathname } from "next/navigation";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
const navLinks = [
|
||||||
|
{ label: "صفحه اصلی", href: "/" },
|
||||||
|
{ label: "محصولات", href: "/products" },
|
||||||
|
{ label: "مقالات", href: "/blog" },
|
||||||
|
{ label: "درباره ما", href: "/about" },
|
||||||
|
{ label: "تماس با ما", href: "/contact" },
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function Header() {
|
||||||
|
const pathname = usePathname();
|
||||||
|
const [scrolledPast, setScrolledPast] = useState(false);
|
||||||
|
const canBeTransparent = pathname === "/";
|
||||||
|
const scrolled = !canBeTransparent || scrolledPast;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!canBeTransparent) return;
|
||||||
|
function onScroll() {
|
||||||
|
setScrolledPast(window.scrollY > 20);
|
||||||
|
}
|
||||||
|
onScroll();
|
||||||
|
window.addEventListener("scroll", onScroll, { passive: true });
|
||||||
|
return () => window.removeEventListener("scroll", onScroll);
|
||||||
|
}, [canBeTransparent]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<header className="fixed inset-x-0 top-0 z-50">
|
||||||
|
<div className="bg-secondary text-white">
|
||||||
|
<Container className="flex h-11 items-center justify-between text-sm">
|
||||||
|
<a
|
||||||
|
href="tel:09104067935"
|
||||||
|
className="flex items-center gap-2 text-white/90 hover:text-accent transition-colors"
|
||||||
|
>
|
||||||
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" className="shrink-0">
|
||||||
|
<path
|
||||||
|
d="M6.6 10.8c1.4 2.8 3.8 5.1 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1C10.6 21 3 13.4 3 4c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1L6.6 10.8z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<span dir="ltr">09104067935</span>
|
||||||
|
</a>
|
||||||
|
<div className="flex items-center gap-4">
|
||||||
|
<a href="#" aria-label="تلگرام" className="text-white/90 hover:text-accent transition-colors">
|
||||||
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M21.5 3.5 2.8 10.9c-1 .4-1 1.7.1 2l4.7 1.5 1.8 5.6c.2.6 1 .8 1.4.3l2.5-2.7 4.9 3.6c.6.5 1.6.1 1.8-.6l3-15.6c.2-1-.7-1.8-1.5-1.5z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="#" aria-label="واتساپ" className="text-white/90 hover:text-accent transition-colors">
|
||||||
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.4A10 10 0 1 0 12 2Zm0 18.2a8.1 8.1 0 0 1-4.2-1.1l-.3-.2-3 .8.8-2.9-.2-.3A8.2 8.2 0 1 1 12 20.2Zm4.5-6.1c-.2-.1-1.5-.7-1.7-.8-.2-.1-.4-.1-.6.1-.2.2-.7.8-.8 1-.2.2-.3.2-.5.1a6.7 6.7 0 0 1-2-1.2 7.4 7.4 0 0 1-1.4-1.7c-.1-.2 0-.4.1-.5l.4-.4c.1-.2.2-.3.2-.5.1-.2 0-.4 0-.5-.1-.1-.6-1.5-.8-2-.2-.5-.4-.4-.6-.4h-.5c-.2 0-.5.1-.7.3-.2.2-.9.9-.9 2.2s.9 2.6 1.1 2.8c.1.2 1.9 3 4.7 4.1.7.3 1.2.4 1.6.6.7.2 1.3.2 1.8.1.5-.1 1.5-.6 1.7-1.2.2-.6.2-1.1.2-1.2-.1-.2-.3-.2-.5-.3Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="#" aria-label="ایمیل" className="text-white/90 hover:text-accent transition-colors">
|
||||||
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Zm0 2v.2l8 5.4 8-5.4V6H4Zm16 12V8.6l-7.4 5a1 1 0 0 1-1.2 0L4 8.6V18h16Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
className={`border-b transition-all duration-300 ${
|
||||||
|
scrolled
|
||||||
|
? "bg-white/95 backdrop-blur border-black/5 shadow-sm"
|
||||||
|
: "bg-white/10 backdrop-blur-md border-white/10"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<Container className="flex h-20 items-center justify-between">
|
||||||
|
<Link href="/" className="shrink-0">
|
||||||
|
<Image
|
||||||
|
src={scrolled ? "/images/logo-wordmark.png" : "/images/footer-logo.png"}
|
||||||
|
alt="آراد آریسمان"
|
||||||
|
width={140}
|
||||||
|
height={40}
|
||||||
|
className="h-10 w-auto"
|
||||||
|
priority
|
||||||
|
/>
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
<nav className="hidden lg:flex items-center gap-8">
|
||||||
|
{navLinks.map((link) => (
|
||||||
|
<Link
|
||||||
|
key={link.label}
|
||||||
|
href={link.href}
|
||||||
|
className={`text-[15px] font-medium transition-colors ${
|
||||||
|
scrolled
|
||||||
|
? "text-secondary/80 hover:text-primary"
|
||||||
|
: "text-white/90 hover:text-accent"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{link.label}
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className={`flex items-center gap-2 rounded-full border px-5 py-2.5 text-[15px] font-medium transition-colors ${
|
||||||
|
scrolled
|
||||||
|
? "border-primary/20 text-primary hover:bg-primary hover:text-white"
|
||||||
|
: "border-white/40 text-white hover:bg-white/10"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M12 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm0 2c-4.4 0-8 2.2-8 5v3h16v-3c0-2.8-3.6-5-8-5Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
ورود
|
||||||
|
</a>
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
export default function Hero() {
|
||||||
|
return (
|
||||||
|
<section className="relative overflow-hidden bg-surface">
|
||||||
|
<Container className="grid grid-cols-1 lg:grid-cols-2 items-center gap-10 py-14 lg:py-0">
|
||||||
|
<div className="relative order-2 lg:order-1 lg:h-[560px] flex items-end">
|
||||||
|
<div className="relative w-full aspect-[4/3] lg:aspect-auto lg:h-[480px] rounded-3xl overflow-hidden shadow-xl">
|
||||||
|
<Image
|
||||||
|
src="/images/hero-1.jpg"
|
||||||
|
alt="محصولات آراد آریسمان در مزرعه گندم"
|
||||||
|
fill
|
||||||
|
priority
|
||||||
|
className="object-cover object-left"
|
||||||
|
sizes="(min-width: 1024px) 45vw, 90vw"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="absolute bottom-6 -start-2 sm:start-2 flex gap-3">
|
||||||
|
<div className="flex flex-col justify-center gap-1 rounded-2xl bg-secondary/70 backdrop-blur px-5 py-4 text-white min-w-[140px]">
|
||||||
|
<span className="text-xs font-bold text-accent">۰۱</span>
|
||||||
|
<span className="text-sm font-semibold leading-6">
|
||||||
|
مکملــی
|
||||||
|
<br />
|
||||||
|
مطمئن
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col justify-center gap-1 rounded-2xl bg-primary/80 backdrop-blur px-5 py-4 text-white min-w-[150px]">
|
||||||
|
<span className="text-xs font-bold text-accent">۰۲</span>
|
||||||
|
<span className="text-sm font-semibold leading-6">
|
||||||
|
تغذیهای
|
||||||
|
<br />
|
||||||
|
کامل
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="order-1 lg:order-2 text-center lg:text-start">
|
||||||
|
<h1 className="text-4xl sm:text-5xl lg:text-6xl font-extrabold text-primary leading-[1.15]">
|
||||||
|
آراد آریسمان
|
||||||
|
</h1>
|
||||||
|
<p className="mt-5 text-lg sm:text-xl text-foreground max-w-md mx-auto lg:mx-0">
|
||||||
|
قدرت رشد، از دل تغذیه سالم
|
||||||
|
</p>
|
||||||
|
<div className="mt-8 flex flex-wrap justify-center lg:justify-start gap-4">
|
||||||
|
<a
|
||||||
|
href="#products"
|
||||||
|
className="rounded-full bg-primary px-7 py-3.5 text-white font-semibold hover:bg-primary-dark transition-colors"
|
||||||
|
>
|
||||||
|
مشاهده محصولات
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#about"
|
||||||
|
className="rounded-full border border-primary/30 px-7 py-3.5 text-primary font-semibold hover:bg-primary/5 transition-colors"
|
||||||
|
>
|
||||||
|
درباره ما
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,200 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { useCallback, useEffect, useRef, useState } from "react";
|
||||||
|
import { toFa } from "@/lib/format";
|
||||||
|
|
||||||
|
type Slide = {
|
||||||
|
image: string;
|
||||||
|
eyebrow: string;
|
||||||
|
title: string;
|
||||||
|
subtitle: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const slides: Slide[] = [
|
||||||
|
{
|
||||||
|
image:
|
||||||
|
"https://images.unsplash.com/photo-1583364428520-fa6c5013c0c3?fm=jpg&q=80&w=2400&auto=format&fit=crop",
|
||||||
|
eyebrow: "بیش از ۲۳ سال تجربه",
|
||||||
|
title: "کیفیتی که به آن اعتماد دارید",
|
||||||
|
subtitle: "بیش از ۲۳۰ مشتری در سراسر کشور، انتخاب اول خود را کردهاند",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
image:
|
||||||
|
"https://images.unsplash.com/photo-1589348792383-8ebcbec4ef88?fm=jpg&q=80&w=2400&auto=format&fit=crop",
|
||||||
|
eyebrow: "دام سالم، تولید پایدار",
|
||||||
|
title: "همراه شما در تمام دورههای پرورش",
|
||||||
|
subtitle:
|
||||||
|
"از دوره پروار تا شیردهی؛ مکملهایی متناسب با نیاز واقعی گله شما",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
image:
|
||||||
|
"https://images.unsplash.com/photo-1723357018190-c0163698165b?fm=jpg&q=80&w=2400&auto=format&fit=crop",
|
||||||
|
eyebrow: "طیور پرقدرت",
|
||||||
|
title: "افزایش بازده با تغذیه اصولی",
|
||||||
|
subtitle:
|
||||||
|
"بهبود کیفیت تخم و گوشت، تقویت ایمنی و رشد یکنواخت گله طیور",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const AUTOPLAY_MS = 6000;
|
||||||
|
|
||||||
|
export default function HeroSlider() {
|
||||||
|
const [index, setIndex] = useState(0);
|
||||||
|
const timerRef = useRef<ReturnType<typeof setInterval> | null>(null);
|
||||||
|
|
||||||
|
const goTo = useCallback((i: number) => {
|
||||||
|
setIndex((i + slides.length) % slides.length);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const next = useCallback(() => goTo(index + 1), [goTo, index]);
|
||||||
|
const prev = useCallback(() => goTo(index - 1), [goTo, index]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
timerRef.current = setInterval(() => {
|
||||||
|
setIndex((i) => (i + 1) % slides.length);
|
||||||
|
}, AUTOPLAY_MS);
|
||||||
|
return () => {
|
||||||
|
if (timerRef.current) clearInterval(timerRef.current);
|
||||||
|
};
|
||||||
|
}, [index]);
|
||||||
|
|
||||||
|
function pause() {
|
||||||
|
if (timerRef.current) clearInterval(timerRef.current);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resume() {
|
||||||
|
if (timerRef.current) clearInterval(timerRef.current);
|
||||||
|
timerRef.current = setInterval(() => {
|
||||||
|
setIndex((i) => (i + 1) % slides.length);
|
||||||
|
}, AUTOPLAY_MS);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section
|
||||||
|
role="region"
|
||||||
|
aria-roledescription="carousel"
|
||||||
|
aria-label="اسلایدر معرفی آراد آریسمان"
|
||||||
|
onMouseEnter={pause}
|
||||||
|
onMouseLeave={resume}
|
||||||
|
className="relative -mt-[125px] h-svh min-h-[520px] w-full overflow-hidden bg-secondary"
|
||||||
|
>
|
||||||
|
{slides.map((slide, i) => (
|
||||||
|
<div
|
||||||
|
key={slide.title}
|
||||||
|
aria-hidden={i !== index}
|
||||||
|
className={`absolute inset-0 transition-opacity duration-1000 ease-in-out ${
|
||||||
|
i === index ? "opacity-100 z-10" : "opacity-0 z-0"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
src={slide.image}
|
||||||
|
alt={slide.title}
|
||||||
|
fill
|
||||||
|
priority={i === 0}
|
||||||
|
className="object-cover"
|
||||||
|
sizes="100vw"
|
||||||
|
/>
|
||||||
|
<div className="absolute inset-0 bg-gradient-to-t from-black/70 via-black/30 to-black/10" />
|
||||||
|
|
||||||
|
<div className="relative z-10 flex h-full items-center pt-[125px]">
|
||||||
|
<div className="mx-auto w-full max-w-7xl px-5 sm:px-8">
|
||||||
|
<div className="max-w-xl text-center sm:text-start mx-auto sm:mx-0 sm:ps-12">
|
||||||
|
<span
|
||||||
|
className={`inline-block rounded-full bg-white/10 backdrop-blur px-4 py-1.5 text-sm font-semibold text-accent transition-all duration-700 delay-200 ${
|
||||||
|
i === index
|
||||||
|
? "translate-y-0 opacity-100"
|
||||||
|
: "translate-y-4 opacity-0"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{slide.eyebrow}
|
||||||
|
</span>
|
||||||
|
<h1
|
||||||
|
className={`mt-5 text-3xl sm:text-5xl font-extrabold leading-[1.25] text-white transition-all duration-700 delay-300 ${
|
||||||
|
i === index
|
||||||
|
? "translate-y-0 opacity-100"
|
||||||
|
: "translate-y-4 opacity-0"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{slide.title}
|
||||||
|
</h1>
|
||||||
|
<p
|
||||||
|
className={`mt-5 text-base sm:text-lg text-white/85 transition-all duration-700 delay-500 ${
|
||||||
|
i === index
|
||||||
|
? "translate-y-0 opacity-100"
|
||||||
|
: "translate-y-4 opacity-0"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{slide.subtitle}
|
||||||
|
</p>
|
||||||
|
<div
|
||||||
|
className={`mt-8 flex flex-wrap justify-center sm:justify-start gap-4 transition-all duration-700 delay-700 ${
|
||||||
|
i === index
|
||||||
|
? "translate-y-0 opacity-100"
|
||||||
|
: "translate-y-4 opacity-0"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<Link
|
||||||
|
href="/products"
|
||||||
|
className="rounded-full bg-primary px-7 py-3.5 text-white font-semibold hover:bg-primary-dark transition-colors"
|
||||||
|
>
|
||||||
|
مشاهده محصولات
|
||||||
|
</Link>
|
||||||
|
<Link
|
||||||
|
href="/contact"
|
||||||
|
className="rounded-full border border-white/40 px-7 py-3.5 text-white font-semibold hover:bg-white/10 transition-colors"
|
||||||
|
>
|
||||||
|
تماس با ما
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={prev}
|
||||||
|
aria-label="اسلاید قبلی"
|
||||||
|
className="absolute top-1/2 start-3 sm:start-6 z-20 hidden h-11 w-11 -translate-y-1/2 items-center justify-center rounded-full bg-white/15 text-white backdrop-blur hover:bg-white/25 transition-colors sm:flex"
|
||||||
|
>
|
||||||
|
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" className="rotate-180">
|
||||||
|
<path
|
||||||
|
d="M10.7 18.7a1 1 0 0 1-1.4 0l-6-6a1 1 0 0 1 0-1.4l6-6a1 1 0 1 1 1.4 1.4L6 11.3h14a1 1 0 1 1 0 2H6l4.7 4.3a1 1 0 0 1 0 1.4Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={next}
|
||||||
|
aria-label="اسلاید بعدی"
|
||||||
|
className="absolute top-1/2 end-3 sm:end-6 z-20 hidden h-11 w-11 -translate-y-1/2 items-center justify-center rounded-full bg-white/15 text-white backdrop-blur hover:bg-white/25 transition-colors sm:flex"
|
||||||
|
>
|
||||||
|
<svg width="20" height="20" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M10.7 18.7a1 1 0 0 1-1.4 0l-6-6a1 1 0 0 1 0-1.4l6-6a1 1 0 1 1 1.4 1.4L6 11.3h14a1 1 0 1 1 0 2H6l4.7 4.3a1 1 0 0 1 0 1.4Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div className="absolute bottom-6 inset-x-0 z-20 flex items-center justify-center gap-2">
|
||||||
|
{slides.map((slide, i) => (
|
||||||
|
<button
|
||||||
|
key={slide.title}
|
||||||
|
type="button"
|
||||||
|
onClick={() => goTo(i)}
|
||||||
|
aria-label={`رفتن به اسلاید ${toFa(i + 1)}`}
|
||||||
|
aria-current={i === index}
|
||||||
|
className={`h-2 rounded-full transition-all ${
|
||||||
|
i === index ? "w-8 bg-accent" : "w-2 bg-white/50 hover:bg-white/80"
|
||||||
|
}`}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
const countries = [
|
||||||
|
{ name: "انگلستان", flag: "🇬🇧" },
|
||||||
|
{ name: "فرانسه", flag: "🇫🇷" },
|
||||||
|
{ name: "ترکیه", flag: "🇹🇷" },
|
||||||
|
{ name: "هندوستان", flag: "🇮🇳" },
|
||||||
|
{ name: "چین", flag: "🇨🇳" },
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function ImportCountries() {
|
||||||
|
return (
|
||||||
|
<section className="py-16 sm:py-20 bg-surface">
|
||||||
|
<Container>
|
||||||
|
<div className="text-center max-w-xl mx-auto">
|
||||||
|
<span className="text-sm font-bold text-accent">شرکای بینالمللی</span>
|
||||||
|
<h2 className="mt-3 text-3xl sm:text-4xl font-extrabold text-primary">
|
||||||
|
واردات از تولیدکنندگان معتبر جهانی
|
||||||
|
</h2>
|
||||||
|
<p className="mt-4 text-foreground">
|
||||||
|
آراد آریسمان محصولات خود را عمدتا از تولیدکنندگان معتبر بینالمللی
|
||||||
|
این کشورها وارد میکند
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-12 grid grid-cols-2 sm:grid-cols-5 gap-5">
|
||||||
|
{countries.map((c) => (
|
||||||
|
<div
|
||||||
|
key={c.name}
|
||||||
|
className="flex flex-col items-center gap-3 rounded-2xl bg-white border border-black/5 py-8 shadow-sm"
|
||||||
|
>
|
||||||
|
<span className="text-4xl">{c.flag}</span>
|
||||||
|
<span className="font-semibold text-secondary">{c.name}</span>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
const items = [
|
||||||
|
{
|
||||||
|
title: "ماموریت ما",
|
||||||
|
desc: "تامین و عرضه مکملهای غذایی، ویتامینها و افزودنیهای خوراک با بالاترین استانداردهای کیفی جهانی، برای ارتقای بهرهوری و سلامت دام، طیور و زنبور عسل در سراسر کشور.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "چشمانداز ما",
|
||||||
|
desc: "تبدیل شدن به معتبرترین و قابلاعتمادترین برند واردکننده و عرضهکننده مکملهای دام و طیور در ایران، با تکیه بر دانش فنی و شراکت با تولیدکنندگان بینالمللی.",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function MissionVision() {
|
||||||
|
return (
|
||||||
|
<section className="py-16 sm:py-20">
|
||||||
|
<Container className="grid grid-cols-1 sm:grid-cols-2 gap-6">
|
||||||
|
{items.map((item) => (
|
||||||
|
<div
|
||||||
|
key={item.title}
|
||||||
|
className="rounded-2xl border border-black/5 bg-white p-8 shadow-sm"
|
||||||
|
>
|
||||||
|
<h3 className="text-xl font-bold text-primary">{item.title}</h3>
|
||||||
|
<p className="mt-4 leading-8 text-foreground">{item.desc}</p>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
import Link from "next/link";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
export default function PageBanner({
|
||||||
|
title,
|
||||||
|
subtitle,
|
||||||
|
breadcrumb,
|
||||||
|
}: {
|
||||||
|
title: string;
|
||||||
|
subtitle?: string;
|
||||||
|
breadcrumb: string;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<section className="relative overflow-hidden bg-surface py-14 sm:py-16">
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
className="absolute inset-0 text-primary/[0.07]"
|
||||||
|
style={{
|
||||||
|
backgroundImage: "radial-gradient(currentColor 1.5px, transparent 1.5px)",
|
||||||
|
backgroundSize: "22px 22px",
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
className="absolute -top-24 -end-24 h-64 w-64 rounded-full bg-primary/10 blur-3xl"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
className="absolute -bottom-28 -start-16 h-56 w-56 rounded-full bg-accent/15 blur-3xl"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Container className="relative">
|
||||||
|
<h1 className="text-3xl sm:text-4xl font-extrabold text-primary">{title}</h1>
|
||||||
|
{subtitle && (
|
||||||
|
<p className="mt-3 max-w-2xl text-foreground">{subtitle}</p>
|
||||||
|
)}
|
||||||
|
<div className="mt-4 flex items-center gap-2 text-sm text-foreground">
|
||||||
|
<Link href="/" className="hover:text-primary transition-colors">
|
||||||
|
خانه
|
||||||
|
</Link>
|
||||||
|
<span className="text-foreground/50">/</span>
|
||||||
|
<span className="font-medium text-primary">{breadcrumb}</span>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
import Link from "next/link";
|
||||||
|
import { toFa } from "@/lib/format";
|
||||||
|
|
||||||
|
export default function Pagination({
|
||||||
|
currentPage,
|
||||||
|
totalPages,
|
||||||
|
basePath,
|
||||||
|
}: {
|
||||||
|
currentPage: number;
|
||||||
|
totalPages: number;
|
||||||
|
basePath: string;
|
||||||
|
}) {
|
||||||
|
if (totalPages <= 1) return null;
|
||||||
|
|
||||||
|
const pages = Array.from({ length: totalPages }, (_, i) => i + 1);
|
||||||
|
|
||||||
|
function hrefFor(page: number) {
|
||||||
|
return page === 1 ? basePath : `${basePath}?page=${page}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const prevDisabled = currentPage === 1;
|
||||||
|
const nextDisabled = currentPage === totalPages;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<nav
|
||||||
|
aria-label="صفحهبندی"
|
||||||
|
className="mt-12 flex flex-wrap items-center justify-center gap-2"
|
||||||
|
>
|
||||||
|
<Link
|
||||||
|
href={hrefFor(Math.max(1, currentPage - 1))}
|
||||||
|
aria-disabled={prevDisabled}
|
||||||
|
tabIndex={prevDisabled ? -1 : undefined}
|
||||||
|
className={`flex h-10 items-center justify-center rounded-full border px-4 text-sm font-medium transition-colors ${
|
||||||
|
prevDisabled
|
||||||
|
? "pointer-events-none border-black/5 text-foreground/30"
|
||||||
|
: "border-black/10 text-secondary hover:border-primary hover:text-primary"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
قبلی
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
{pages.map((p) => (
|
||||||
|
<Link
|
||||||
|
key={p}
|
||||||
|
href={hrefFor(p)}
|
||||||
|
aria-current={p === currentPage ? "page" : undefined}
|
||||||
|
className={`flex h-10 w-10 items-center justify-center rounded-full text-sm font-semibold transition-colors ${
|
||||||
|
p === currentPage
|
||||||
|
? "bg-primary text-white"
|
||||||
|
: "text-secondary hover:bg-primary/10"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{toFa(p)}
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<Link
|
||||||
|
href={hrefFor(Math.min(totalPages, currentPage + 1))}
|
||||||
|
aria-disabled={nextDisabled}
|
||||||
|
tabIndex={nextDisabled ? -1 : undefined}
|
||||||
|
className={`flex h-10 items-center justify-center rounded-full border px-4 text-sm font-medium transition-colors ${
|
||||||
|
nextDisabled
|
||||||
|
? "pointer-events-none border-black/5 text-foreground/30"
|
||||||
|
: "border-black/10 text-secondary hover:border-primary hover:text-primary"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
بعدی
|
||||||
|
</Link>
|
||||||
|
</nav>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
const partners = [
|
||||||
|
"/images/partner-1.png",
|
||||||
|
"/images/partner-2.png",
|
||||||
|
"/images/partner-3.png",
|
||||||
|
"/images/partner-4.png",
|
||||||
|
"/images/partner-5.png",
|
||||||
|
"/images/partner-6.png",
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function Partners() {
|
||||||
|
return (
|
||||||
|
<section className="py-14 border-y border-black/5">
|
||||||
|
<Container>
|
||||||
|
<div className="flex flex-wrap items-center justify-around gap-x-14 gap-y-8 grayscale opacity-70">
|
||||||
|
{partners.map((src, i) => (
|
||||||
|
<Image
|
||||||
|
key={i}
|
||||||
|
src={src}
|
||||||
|
alt="نماد اعتماد"
|
||||||
|
width={95}
|
||||||
|
height={82}
|
||||||
|
className="h-20 sm:h-24 w-auto object-contain"
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import type { Post } from "@/data/posts";
|
||||||
|
|
||||||
|
export default function PostCard({ post }: { post: Post }) {
|
||||||
|
return (
|
||||||
|
<Link
|
||||||
|
href={`/blog/${post.slug}`}
|
||||||
|
className="group flex flex-col rounded-2xl border border-black/5 bg-white overflow-hidden shadow-sm hover:shadow-lg transition-shadow"
|
||||||
|
>
|
||||||
|
<div className="relative aspect-[16/10] bg-surface">
|
||||||
|
<Image
|
||||||
|
src={post.cover}
|
||||||
|
alt={post.title}
|
||||||
|
fill
|
||||||
|
className="object-cover group-hover:scale-105 transition-transform duration-500"
|
||||||
|
sizes="(min-width: 1024px) 33vw, (min-width: 640px) 50vw, 100vw"
|
||||||
|
/>
|
||||||
|
<span className="absolute top-3 right-3 rounded-full bg-white/90 backdrop-blur px-3 py-1 text-xs font-semibold text-primary">
|
||||||
|
{post.category}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-1 flex-col p-5">
|
||||||
|
<div className="flex items-center gap-3 text-xs text-foreground/70">
|
||||||
|
<span>{post.date}</span>
|
||||||
|
<span className="h-1 w-1 rounded-full bg-foreground/30" />
|
||||||
|
<span>{post.readingTime}</span>
|
||||||
|
</div>
|
||||||
|
<h3 className="mt-3 font-bold text-secondary leading-7 line-clamp-2">
|
||||||
|
{post.title}
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm leading-6 text-foreground line-clamp-2 flex-1">
|
||||||
|
{post.excerpt}
|
||||||
|
</p>
|
||||||
|
<span className="mt-4 inline-flex items-center gap-2 text-sm font-semibold text-primary">
|
||||||
|
ادامه مطلب
|
||||||
|
<svg
|
||||||
|
width="14"
|
||||||
|
height="14"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
className="rotate-180 group-hover:-translate-x-1 transition-transform"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M13.3 5.3a1 1 0 0 1 1.4 0l6 6a1 1 0 0 1 0 1.4l-6 6a1 1 0 1 1-1.4-1.4L18 12.7H4a1 1 0 1 1 0-2h14L13.3 6.7a1 1 0 0 1 0-1.4Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import type { Product } from "@/data/products";
|
||||||
|
|
||||||
|
export default function ProductCard({ product }: { product: Product }) {
|
||||||
|
return (
|
||||||
|
<Link
|
||||||
|
href={`/products/${product.slug}`}
|
||||||
|
className="group rounded-2xl border border-black/5 bg-white overflow-hidden shadow-sm hover:shadow-lg transition-shadow"
|
||||||
|
>
|
||||||
|
<div className="relative aspect-square bg-surface">
|
||||||
|
<Image
|
||||||
|
src={product.image}
|
||||||
|
alt={product.title}
|
||||||
|
fill
|
||||||
|
className="object-cover group-hover:scale-105 transition-transform duration-500"
|
||||||
|
sizes="(min-width: 1024px) 25vw, (min-width: 640px) 33vw, 50vw"
|
||||||
|
/>
|
||||||
|
<span className="absolute top-3 right-3 rounded-full bg-white/90 backdrop-blur px-3 py-1 text-xs font-semibold text-primary">
|
||||||
|
{product.category}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="p-4">
|
||||||
|
<h3 className="font-semibold text-secondary leading-6 line-clamp-2 min-h-12">
|
||||||
|
{product.title}
|
||||||
|
</h3>
|
||||||
|
<p className="mt-1 text-sm text-foreground line-clamp-2">
|
||||||
|
{product.shortDesc}
|
||||||
|
</p>
|
||||||
|
<div className="mt-3 flex items-center justify-between">
|
||||||
|
<span className="text-sm font-bold text-primary">تماس بگیرید</span>
|
||||||
|
<span className="flex h-8 w-8 items-center justify-center rounded-full bg-primary/5 text-primary rotate-180 group-hover:bg-primary group-hover:text-white transition-colors">
|
||||||
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path
|
||||||
|
d="M13.3 5.3a1 1 0 0 1 1.4 0l6 6a1 1 0 0 1 0 1.4l-6 6a1 1 0 1 1-1.4-1.4L18 12.7H4a1 1 0 1 1 0-2h14L13.3 6.7a1 1 0 0 1 0-1.4Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
import Link from "next/link";
|
||||||
|
import Container from "./Container";
|
||||||
|
import ProductCard from "./ProductCard";
|
||||||
|
import { products } from "@/data/products";
|
||||||
|
|
||||||
|
export default function Products() {
|
||||||
|
const featured = products.slice(0, 8);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section id="products" className="py-16 sm:py-20">
|
||||||
|
<Container>
|
||||||
|
<div className="flex items-end justify-between flex-wrap gap-4">
|
||||||
|
<h2 className="text-3xl sm:text-4xl font-extrabold text-primary">
|
||||||
|
محصولات جدید
|
||||||
|
</h2>
|
||||||
|
<Link
|
||||||
|
href="/products"
|
||||||
|
className="flex items-center gap-2 text-primary font-semibold hover:text-primary-dark transition-colors"
|
||||||
|
>
|
||||||
|
مشاهده بیشتر
|
||||||
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" className="rotate-180">
|
||||||
|
<path
|
||||||
|
d="M13.3 5.3a1 1 0 0 1 1.4 0l6 6a1 1 0 0 1 0 1.4l-6 6a1 1 0 1 1-1.4-1.4L18 12.7H4a1 1 0 1 1 0-2h14L13.3 6.7a1 1 0 0 1 0-1.4Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-10 grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-5 sm:gap-6">
|
||||||
|
{featured.map((product) => (
|
||||||
|
<ProductCard key={product.id} product={product} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Container from "./Container";
|
||||||
|
|
||||||
|
const stats = [
|
||||||
|
{ value: "۲۳۰+", label: "رضایت مشتری" },
|
||||||
|
{ value: "۲۳", label: "سال تجربه" },
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function Stats() {
|
||||||
|
return (
|
||||||
|
<section className="relative py-20 sm:py-28">
|
||||||
|
<Image
|
||||||
|
src="/images/stats-banner.jpg"
|
||||||
|
alt=""
|
||||||
|
fill
|
||||||
|
className="object-cover"
|
||||||
|
sizes="100vw"
|
||||||
|
/>
|
||||||
|
<div className="absolute inset-0 bg-primary-dark/80" />
|
||||||
|
<Container className="relative">
|
||||||
|
<div className="grid grid-cols-2 max-w-xl mx-auto text-center gap-8">
|
||||||
|
{stats.map((s) => (
|
||||||
|
<div key={s.label}>
|
||||||
|
<div className="text-4xl sm:text-5xl font-extrabold text-white">
|
||||||
|
{s.value}
|
||||||
|
</div>
|
||||||
|
<div className="mt-3 text-white/80">{s.label}</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,211 @@
|
|||||||
|
export type Post = {
|
||||||
|
id: number;
|
||||||
|
slug: string;
|
||||||
|
title: string;
|
||||||
|
excerpt: string;
|
||||||
|
cover: string;
|
||||||
|
category: string;
|
||||||
|
date: string;
|
||||||
|
readingTime: string;
|
||||||
|
content: string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const posts: Post[] = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
slug: "increase-egg-production-tips",
|
||||||
|
title: "۵ نکته کلیدی برای افزایش بازده تخمگذاری مرغهای تخمگذار",
|
||||||
|
excerpt:
|
||||||
|
"بازده تخمگذاری به عوامل متعددی از جمله تغذیه، نور و مدیریت گله بستگی دارد. در این مقاله به مهمترین نکاتی که میتوانند بازده گله شما را بهبود دهند میپردازیم.",
|
||||||
|
cover: "/images/product-1.jpg",
|
||||||
|
category: "طیور",
|
||||||
|
date: "۱۲ اردیبهشت ۱۴۰۴",
|
||||||
|
readingTime: "۵ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"تولید تخممرغ با کیفیت و پایدار، حاصل ترکیبی از تغذیه صحیح، مدیریت محیط پرورش و سلامت عمومی گله است. در ادامه به پنج نکته کلیدی برای بهبود بازده تخمگذاری اشاره میکنیم.",
|
||||||
|
"۱. تعادل جیره غذایی: جیره مرغ تخمگذار باید ترکیبی متعادل از انرژی، پروتئین، کلسیم و فسفر باشد. کمبود یا مازاد هر یک از این اجزا میتواند مستقیما بر کیفیت پوسته و میزان تولید اثر بگذارد.",
|
||||||
|
"۲. تامین کلسیم کافی: با نزدیکشدن به اوج تولید، نیاز مرغ به کلسیم افزایش مییابد. استفاده از مکملهای معدنی استاندارد به حفظ استحکام پوسته و کاهش تخمهای شکسته کمک میکند.",
|
||||||
|
"۳. مدیریت نور: برنامه نوری منظم و پایدار نقش مهمی در تحریک و حفظ چرخه تولید دارد. تغییرات ناگهانی در ساعات روشنایی میتواند باعث افت موقت تولید شود.",
|
||||||
|
"۴. کنترل استرس محیطی: دمای نامناسب، تراکم بالا و جابجاییهای مکرر از عوامل استرسزا هستند که بر بازده تولید تاثیر منفی میگذارند.",
|
||||||
|
"۵. استفاده از مکملهای ویتامینه: مکملهای ویتامینه با تامین ویتامینهای ضروری، به حفظ سلامت عمومی گله و پایداری تولید در بلندمدت کمک میکنند.",
|
||||||
|
"رعایت این نکات به همراه مشورت مستمر با کارشناسان تغذیه دام و طیور، میتواند بازده اقتصادی واحدهای پرورش مرغ تخمگذار را بهطور محسوسی افزایش دهد.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
slug: "increase-calf-growth-rate",
|
||||||
|
title: "چگونه رشد گوسالههای پرواری را افزایش دهیم؟",
|
||||||
|
excerpt:
|
||||||
|
"دستیابی به وزن هدف در کوتاهترین زمان ممکن، هدف اصلی هر واحد پرواربندی است. در این مطلب راهکارهای عملی برای افزایش رشد گوسالههای پرواری را بررسی میکنیم.",
|
||||||
|
cover: "/images/stats-banner.jpg",
|
||||||
|
category: "دام سنگین",
|
||||||
|
date: "۳ خرداد ۱۴۰۴",
|
||||||
|
readingTime: "۶ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"افزایش وزنگیری روزانه و بهبود بازده تبدیل خوراک، دو شاخص کلیدی موفقیت در واحدهای پرواربندی گوساله هستند. دستیابی به این اهداف نیازمند برنامهریزی دقیق تغذیهای و مدیریتی است.",
|
||||||
|
"شروع دوره پروار با گوسالههای سالم و عاری از استرس انتقال، پایهای برای موفقیت دوره است. دوره تطبیق اولیه باید با دقت و بدون تغییرات ناگهانی در جیره انجام شود.",
|
||||||
|
"افزایش تدریجی سهم کنسانتره در جیره، همراه با تامین فیبر کافی از منابعی مانند سبوس گندم، به حفظ سلامت شکمبه و جلوگیری از اسیدوز کمک میکند.",
|
||||||
|
"استفاده از مکملهای معدنی و ویتامینه استاندارد، نقش مهمی در پیشگیری از اختلالات متابولیک و حفظ اشتها در طول دوره پروار دارد.",
|
||||||
|
"پایش منظم وزن گله در بازههای زمانی مشخص، امکان ارزیابی روند رشد و اصلاح بهموقع برنامه تغذیهای را فراهم میکند.",
|
||||||
|
"در نهایت، همکاری نزدیک با کارشناس تغذیه دام برای تنظیم جیره متناسب با نژاد، سن و وزن گوسالهها، بهترین نتیجه اقتصادی را در پی خواهد داشت.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
slug: "vitamin-supplements-poultry-importance",
|
||||||
|
title: "اهمیت مکملهای ویتامینه در تغذیه طیور",
|
||||||
|
excerpt:
|
||||||
|
"ویتامینها اگرچه در مقادیر کم مورد نیاز هستند، اما نقشی حیاتی در سلامت، رشد و تولید طیور ایفا میکنند. در این مقاله به نقش مکملهای ویتامینه میپردازیم.",
|
||||||
|
cover: "/images/product-3.jpg",
|
||||||
|
category: "طیور",
|
||||||
|
date: "۱۸ خرداد ۱۴۰۴",
|
||||||
|
readingTime: "۴ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"ویتامینها گروهی از ترکیبات آلی هستند که بدن طیور به مقدار کم به آنها نیاز دارد، اما نقش آنها در فرآیندهای حیاتی بسیار پررنگ است.",
|
||||||
|
"ویتامینهای محلول در چربی مانند A، D3، E و K در عملکردهایی مانند بینایی، جذب کلسیم، سیستم ایمنی و انعقاد خون نقش دارند. ویتامینهای گروه B نیز در متابولیسم انرژی و رشد سلولی موثرند.",
|
||||||
|
"در سیستمهای پرورش صنعتی، طیور معمولا دسترسی محدودی به منابع طبیعی ویتامین دارند؛ به همین دلیل تامین این ترکیبات از طریق مکملهای استاندارد ضروری است.",
|
||||||
|
"کمبود ویتامین میتواند خود را به شکل کاهش رشد، افت تولید، ضعف سیستم ایمنی و افزایش حساسیت به بیماریها نشان دهد.",
|
||||||
|
"استفاده منظم و متناسب با سن و مرحله تولید از مکملهای ویتامینه استاندارد، یکی از موثرترین و مقرونبهصرفهترین راهکارها برای حفظ سلامت و بازده گله است.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
slug: "choosing-right-sheep-concentrate",
|
||||||
|
title: "راهنمای انتخاب کنسانتره مناسب برای گوسفند",
|
||||||
|
excerpt:
|
||||||
|
"انتخاب کنسانتره مناسب باید بر اساس هدف پرورش، سن و وضعیت فیزیولوژیک گله انجام شود. در این مطلب معیارهای انتخاب کنسانتره گوسفند را بررسی میکنیم.",
|
||||||
|
cover: "/images/product-5.jpg",
|
||||||
|
category: "گوسفند",
|
||||||
|
date: "۲ تیر ۱۴۰۴",
|
||||||
|
readingTime: "۵ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"کنسانترههای موجود در بازار از نظر ترکیب انرژی، پروتئین و ریزمغذیها با یکدیگر متفاوت هستند و انتخاب نادرست میتواند بر بازده اقتصادی پرورش تاثیر منفی بگذارد.",
|
||||||
|
"برای گلههای پرواری، کنسانتره باید انرژی بالایی داشته باشد تا وزنگیری روزانه در کوتاهترین زمان ممکن حاصل شود. در مقابل، برای میشهای مولد، تعادل پروتئین و مواد معدنی اهمیت بیشتری دارد.",
|
||||||
|
"توجه به مرحله فیزیولوژیک گله (نگهداری، آبستنی، شیردهی یا پروار) در انتخاب فرمول کنسانتره ضروری است، زیرا نیاز غذایی در هر مرحله متفاوت است.",
|
||||||
|
"کیفیت مواد اولیه و ثبات ترکیبات کنسانتره از بچی به بچ دیگر، از عوامل مهم در انتخاب تامینکننده معتبر است.",
|
||||||
|
"مشورت با کارشناس تغذیه دام برای تنظیم دقیق جیره بر اساس شرایط منطقه، نژاد گله و اهداف تولیدی، بهترین نتیجه را در پی خواهد داشت.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
slug: "mineral-supplements-role-livestock-health",
|
||||||
|
title: "نقش مکملهای معدنی در سلامت دام",
|
||||||
|
excerpt:
|
||||||
|
"عناصر معدنی اگرچه درصد کمی از وزن بدن دام را تشکیل میدهند، اما نقشی اساسی در سلامت، رشد و تولیدمثل دارند. در این مقاله به این نقش میپردازیم.",
|
||||||
|
cover: "/images/product-4.jpg",
|
||||||
|
category: "دام سنگین",
|
||||||
|
date: "۱۵ تیر ۱۴۰۴",
|
||||||
|
readingTime: "۴ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"عناصر معدنی به دو دسته کلی ماکرومعدنیها (مانند کلسیم، فسفر، سدیم) و ریزمغذیهای معدنی (مانند روی، مس و منگنز) تقسیم میشوند که هر یک نقش مشخصی در بدن دام ایفا میکنند.",
|
||||||
|
"کلسیم و فسفر در ساختار استخوان و تولید شیر نقش دارند، در حالی که عناصر کمیابی مانند روی و مس در عملکرد سیستم ایمنی و باروری اهمیت ویژهای دارند.",
|
||||||
|
"کمبود مواد معدنی معمولا به آرامی و بدون علائم واضح بروز میکند و میتواند در بلندمدت باعث کاهش راندمان تولیدمثل و افت تولید شود.",
|
||||||
|
"استفاده از مکملهای معدنی استاندارد و متناسب با تحلیل خاک و علوفه منطقه، راهکاری موثر برای پیشگیری از این کمبودها است.",
|
||||||
|
"توصیه میشود برنامه مکملدهی معدنی با مشورت کارشناس تغذیه و بر اساس وضعیت خاص هر گله تنظیم شود.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
slug: "winter-feeding-honeybee-colonies",
|
||||||
|
title: "تغذیه زنبور عسل در فصل زمستان",
|
||||||
|
excerpt:
|
||||||
|
"فصل زمستان به دلیل کمبود منابع طبیعی گرده و شهد، یکی از حساسترین دورهها برای بقای کلنی زنبور عسل است. در این مطلب به نکات تغذیه زمستانه میپردازیم.",
|
||||||
|
cover: "/images/category-8.jpg",
|
||||||
|
category: "زنبور عسل",
|
||||||
|
date: "۸ مرداد ۱۴۰۴",
|
||||||
|
readingTime: "۵ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"با کاهش دما و کمبود گل در فصل زمستان، کلنیهای زنبور عسل با محدودیت شدید منابع طبیعی تغذیه مواجه میشوند و نیاز به تغذیه کمکی پیدا میکنند.",
|
||||||
|
"ذخیرهسازی عسل کافی در کندو پیش از شروع سرما، اولین و مهمترین اقدام برای عبور موفق کلنی از زمستان است.",
|
||||||
|
"در صورت کمبود ذخیره طبیعی، استفاده از مکملهای تغذیهای مخصوص زنبور عسل که ترکیبی از قند و پروتئین هستند، میتواند از گرسنگی کلنی جلوگیری کند.",
|
||||||
|
"کنترل رطوبت داخل کندو و جلوگیری از نفوذ سرمای شدید نیز به همان اندازه تغذیه، در بقای کلنی موثر است.",
|
||||||
|
"بازدید دورهای و محدود از کندوها در روزهای نسبتا گرم زمستان، امکان ارزیابی وضعیت ذخیره غذایی و انجام اقدامات لازم را فراهم میکند.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
slug: "why-processed-rice-bran",
|
||||||
|
title: "سبوس برنج فرآوری شده؛ چرا و چگونه؟",
|
||||||
|
excerpt:
|
||||||
|
"سبوس برنج خام به دلیل فعالیت آنزیمی بالا مستعد تندی سریع است. فرآیند پایدارسازی این مشکل را برطرف کرده و آن را به منبعی ارزشمند در تغذیه دام تبدیل میکند.",
|
||||||
|
cover: "/images/product-6.jpg",
|
||||||
|
category: "خوراک دام",
|
||||||
|
date: "۲۰ مرداد ۱۴۰۴",
|
||||||
|
readingTime: "۴ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"سبوس برنج یکی از فرآوردههای جانبی صنعت شالیکوبی است که به دلیل ترکیب غنی از انرژی، فیبر و اسیدهای چرب، پتانسیل بالایی در تغذیه دام و طیور دارد.",
|
||||||
|
"با این حال، سبوس خام حاوی آنزیم لیپاز فعال است که به سرعت باعث تجزیه چربی و تندشدن آن میشود؛ این موضوع کیفیت و خوشخوراکی محصول را کاهش میدهد.",
|
||||||
|
"فرآیند پایدارسازی حرارتی، این آنزیم را غیرفعال کرده و ماندگاری، کیفیت تغذیهای و خوشخوراکی سبوس را به طور قابل توجهی افزایش میدهد.",
|
||||||
|
"سبوس برنج فرآوریشده به دلیل قیمت مناسب و ارزش تغذیهای بالا، گزینهای اقتصادی برای گنجاندن در جیره دام و طیور محسوب میشود.",
|
||||||
|
"توجه به منبع تامین و فرآیند تولید، در انتخاب سبوس برنج با کیفیت باثبات اهمیت زیادی دارد.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
slug: "vitamin-d3-deficiency-poultry",
|
||||||
|
title: "علائم کمبود ویتامین D3 در طیور و راهحل آن",
|
||||||
|
excerpt:
|
||||||
|
"ویتامین D3 نقشی کلیدی در جذب کلسیم و سلامت استخوان طیور دارد. در این مقاله علائم کمبود آن و راهکارهای پیشگیری را بررسی میکنیم.",
|
||||||
|
cover: "/images/product-11.jpg",
|
||||||
|
category: "طیور",
|
||||||
|
date: "۵ شهریور ۱۴۰۴",
|
||||||
|
readingTime: "۵ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"ویتامین D3 با تسهیل جذب کلسیم و فسفر از روده، نقش تعیینکنندهای در استحکام استخوان و کیفیت پوسته تخممرغ ایفا میکند.",
|
||||||
|
"از جمله علائم قابل مشاهده کمبود این ویتامین میتوان به ضعف پا، کاهش استحکام پوسته تخممرغ، افت تولید و کندی رشد در جوجهها اشاره کرد.",
|
||||||
|
"از آنجا که طیور پرورش صنعتی معمولا دسترسی محدودی به نور مستقیم خورشید دارند، تامین ویتامین D3 عمدتا باید از طریق جیره غذایی صورت گیرد.",
|
||||||
|
"استفاده از پرمیکسهای استاندارد حاوی ویتامین D3 با غلظت مناسب، سادهترین و موثرترین راه پیشگیری از این کمبود است.",
|
||||||
|
"در صورت مشاهده علائم مشکوک، مشورت با دامپزشک یا کارشناس تغذیه برای بررسی دقیقتر و اصلاح جیره توصیه میشود.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
slug: "feed-supplement-storage-best-practices",
|
||||||
|
title: "بهترین شیوههای نگهداری مکملهای خوراک دام",
|
||||||
|
excerpt:
|
||||||
|
"نگهداری نامناسب میتواند کیفیت و اثربخشی مکملهای غذایی را به شدت کاهش دهد. در این مطلب اصول صحیح نگهداری این محصولات را مرور میکنیم.",
|
||||||
|
cover: "/images/category-3.jpg",
|
||||||
|
category: "خوراک دام",
|
||||||
|
date: "۱۲ شهریور ۱۴۰۴",
|
||||||
|
readingTime: "۳ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"بسیاری از ویتامینها و ترکیبات فعال موجود در مکملهای غذایی نسبت به رطوبت، حرارت و نور حساس هستند و نگهداری نادرست میتواند اثربخشی آنها را کاهش دهد.",
|
||||||
|
"مکملها باید در محیطی خشک، خنک و دور از تابش مستقیم نور خورشید نگهداری شوند. رطوبت بالا میتواند باعث کلوخهشدن و رشد کپک در محصول شود.",
|
||||||
|
"کیسههای بازشده باید به خوبی بسته و در اسرع وقت مصرف شوند تا از افت کیفیت جلوگیری شود.",
|
||||||
|
"رعایت اصل «اول وارد، اول مصرف» (FIFO) در انبارداری، به اطمینان از مصرف محصولات در تاریخ مناسب کمک میکند.",
|
||||||
|
"چیدمان کیسهها بر روی پالت و دور از تماس مستقیم با کف و دیوار انبار، از رطوبتگیری و آسیب احتمالی جلوگیری میکند.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
slug: "nutrition-impact-on-meat-egg-quality",
|
||||||
|
title: "تاثیر تغذیه صحیح بر کیفیت گوشت و تخممرغ",
|
||||||
|
excerpt:
|
||||||
|
"کیفیت نهایی گوشت و تخممرغ تولیدی، ارتباط مستقیمی با نوع و کیفیت جیره مصرفی دارد. در این مقاله این رابطه را بررسی میکنیم.",
|
||||||
|
cover: "/images/hero-2.jpg",
|
||||||
|
category: "طیور",
|
||||||
|
date: "۲۸ شهریور ۱۴۰۴",
|
||||||
|
readingTime: "۴ دقیقه مطالعه",
|
||||||
|
content: [
|
||||||
|
"ترکیب جیره غذایی طیور، تاثیر مستقیمی بر رنگ، طعم و ارزش تغذیهای محصول نهایی اعم از گوشت و تخممرغ دارد.",
|
||||||
|
"منابع پروتئینی و اسیدهای چرب موجود در جیره، بر بافت و طعم گوشت اثرگذارند، در حالی که رنگدانههای طبیعی موجود در برخی مکملها، رنگ زرده تخممرغ را بهبود میبخشند.",
|
||||||
|
"مکملهای معدنی و ویتامینه با کیفیت، علاوه بر افزایش راندمان تولید، به بهبود شاخصهای کیفی محصول نهایی نیز کمک میکنند.",
|
||||||
|
"توجه به کیفیت جیره از ابتدای دوره پرورش، نهتنها بر عملکرد گله بلکه بر رضایت مصرفکننده نهایی محصولات دامی نیز تاثیرگذار است.",
|
||||||
|
"سرمایهگذاری در تغذیه با کیفیت، در نهایت هم به نفع تولیدکننده و هم مصرفکننده تمام میشود.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export function getPostBySlug(slug: string) {
|
||||||
|
return posts.find((p) => p.slug === slug);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRelatedPosts(post: Post, limit = 3) {
|
||||||
|
return posts
|
||||||
|
.filter((p) => p.id !== post.id && p.category === post.category)
|
||||||
|
.slice(0, limit)
|
||||||
|
.concat(
|
||||||
|
posts.filter((p) => p.id !== post.id && p.category !== post.category)
|
||||||
|
)
|
||||||
|
.slice(0, limit);
|
||||||
|
}
|
||||||
@@ -0,0 +1,325 @@
|
|||||||
|
export type Product = {
|
||||||
|
id: number;
|
||||||
|
slug: string;
|
||||||
|
title: string;
|
||||||
|
category: string;
|
||||||
|
image: string;
|
||||||
|
shortDesc: string;
|
||||||
|
description: string[];
|
||||||
|
packaging: string;
|
||||||
|
usage: string;
|
||||||
|
benefits: string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const products: Product[] = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
slug: "mineral-supplement-laying-hen",
|
||||||
|
title: "مکمل معدنی مرغ تخمگذار",
|
||||||
|
category: "مرغ تخمگذار",
|
||||||
|
image: "/images/product-1.jpg",
|
||||||
|
shortDesc: "تامینکننده عناصر معدنی ضروری برای افزایش کیفیت و دوام پوسته تخممرغ",
|
||||||
|
description: [
|
||||||
|
"مکمل معدنی مرغ تخمگذار آراد آریسمان با فرمولاسیونی متعادل از عناصر ماکرو و میکرو معدنی، نیاز روزانه مرغهای تخمگذار را در دوره تولید تامین میکند.",
|
||||||
|
"استفاده منظم از این مکمل به بهبود استحکام پوسته، کاهش تخمهای شکسته و افزایش یکنواختی وزن تخممرغ کمک میکند.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "طبق دستور کارشناس تغذیه، معمولا به میزان ۱ تا ۲ درصد در جیره روزانه مخلوط میشود.",
|
||||||
|
benefits: [
|
||||||
|
"افزایش استحکام و کیفیت پوسته تخممرغ",
|
||||||
|
"کاهش درصد تخمهای شکسته و بدشکل",
|
||||||
|
"تامین کلسیم و فسفر قابل جذب",
|
||||||
|
"بهبود یکنواختی تولید در گله",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
slug: "vitamin-supplement-laying-hen",
|
||||||
|
title: "مکمل ویتامینه مرغ تخمگذار",
|
||||||
|
category: "مرغ تخمگذار",
|
||||||
|
image: "/images/product-2.jpg",
|
||||||
|
shortDesc: "پک کامل ویتامینهای محلول در آب و چربی برای دوره تولید",
|
||||||
|
description: [
|
||||||
|
"این مکمل ترکیبی متعادل از ویتامینهای A، D3، E، K و گروه B است که برای حفظ سلامت عمومی و راندمان تولید مرغ تخمگذار طراحی شده است.",
|
||||||
|
"کمبود ویتامین در دوره تولید میتواند منجر به افت تخمگذاری شود؛ مصرف منظم این مکمل از این افت پیشگیری میکند.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "به صورت مخلوط در خوراک یا محلول در آب آشامیدنی طبق دستور دامپزشک قابل استفاده است.",
|
||||||
|
benefits: [
|
||||||
|
"تقویت سیستم ایمنی گله",
|
||||||
|
"بهبود باروری و کیفیت جوجهدرآوری",
|
||||||
|
"افزایش پایداری تولید در فصول گرم و سرد",
|
||||||
|
"کاهش استرس ناشی از تراکم و جابجایی",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
slug: "vitamin-supplement-broiler",
|
||||||
|
title: "مکمل ویتامینه مرغ گوشتی",
|
||||||
|
category: "مرغ گوشتی",
|
||||||
|
image: "/images/product-3.jpg",
|
||||||
|
shortDesc: "پشتیبان رشد سریع و یکنواخت در دوره پرورش گوشتی",
|
||||||
|
description: [
|
||||||
|
"مکمل ویتامینه مرغ گوشتی آراد آریسمان برای پوشش نیاز ویتامینی جوجههای گوشتی در تمامی مراحل رشد فرموله شده است.",
|
||||||
|
"این محصول با حمایت از سیستم ایمنی و بهبود متابولیسم، به افزایش ضریب تبدیل غذایی کمک میکند.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "بر اساس سن و وزن گله و طبق برنامه تغذیهای توصیهشده مصرف شود.",
|
||||||
|
benefits: [
|
||||||
|
"بهبود ضریب تبدیل غذایی",
|
||||||
|
"افزایش سرعت و یکنواختی رشد",
|
||||||
|
"کاهش تلفات دوره پرورش",
|
||||||
|
"تقویت مقاومت در برابر تنشهای محیطی",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
slug: "mineral-supplement-broiler",
|
||||||
|
title: "مکمل معدنی مرغ گوشتی",
|
||||||
|
category: "مرغ گوشتی",
|
||||||
|
image: "/images/product-4.jpg",
|
||||||
|
shortDesc: "تامین عناصر معدنی برای استخوانبندی و رشد سالم",
|
||||||
|
description: [
|
||||||
|
"این مکمل معدنی، ترکیبی غنی از کلسیم، فسفر، سدیم و ریزمغذیهای ضروری برای رشد اسکلتی سالم جوجههای گوشتی است.",
|
||||||
|
"استخوانبندی قوی، پیشنیاز دستیابی به وزن هدف در پایان دوره پرورش است.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "طبق فرمول جیره و با نظر کارشناس تغذیه دام و طیور در خوراک مخلوط شود.",
|
||||||
|
benefits: [
|
||||||
|
"تقویت استخوانبندی و کاهش لنگش",
|
||||||
|
"بهبود جذب و بازده خوراک مصرفی",
|
||||||
|
"کاهش ریسک اختلالات متابولیک",
|
||||||
|
"پشتیبانی از رشد یکنواخت گله",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
slug: "sheep-concentrate",
|
||||||
|
title: "کنسانتره گوسفند",
|
||||||
|
category: "گوسفند",
|
||||||
|
image: "/images/product-5.jpg",
|
||||||
|
shortDesc: "خوراک متعادل برای افزایش وزن و بازده پرواربندی",
|
||||||
|
description: [
|
||||||
|
"کنسانتره گوسفند آراد آریسمان با ترکیبی متوازن از انرژی، پروتئین، ویتامین و مواد معدنی، برای دوره پرواربندی و نگهداری طراحی شده است.",
|
||||||
|
"این محصول مصرف خوراک را بهینه کرده و بازده اقتصادی پرورش را افزایش میدهد.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ و ۴۰ کیلوگرمی",
|
||||||
|
usage: "متناسب با سن، وزن و هدف پرورش (پروار یا نگهداری) در جیره روزانه استفاده شود.",
|
||||||
|
benefits: [
|
||||||
|
"افزایش وزنگیری روزانه",
|
||||||
|
"بهبود بازده خوراک مصرفی",
|
||||||
|
"تامین انرژی و پروتئین متعادل",
|
||||||
|
"مناسب برای گلههای پرواری و مولد",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
slug: "processed-rice-bran",
|
||||||
|
title: "سبوس برنج فرآوری شده",
|
||||||
|
category: "خوراک دام",
|
||||||
|
image: "/images/product-6.jpg",
|
||||||
|
shortDesc: "منبع انرژی و فیبر با کیفیت برای جیره دام و طیور",
|
||||||
|
description: [
|
||||||
|
"سبوس برنج فرآوریشده با فرآیند پایدارسازی، از تندشدن چربی جلوگیری کرده و ماندگاری و کیفیت تغذیهای بالاتری نسبت به سبوس خام دارد.",
|
||||||
|
"این محصول منبع خوبی از انرژی، فیبر و اسیدهای چرب ضروری برای جیره دام و طیور است.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "به عنوان بخشی از جیره پایه، طبق فرمولاسیون کارشناس تغذیه در نظر گرفته شود.",
|
||||||
|
benefits: [
|
||||||
|
"پایداری بالا در برابر تندی چربی",
|
||||||
|
"منبع انرژی و فیبر با کیفیت",
|
||||||
|
"بهبود سلامت دستگاه گوارش",
|
||||||
|
"مقرونبهصرفه در فرمولاسیون جیره",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
slug: "wheat-bran",
|
||||||
|
title: "سبوس گندم",
|
||||||
|
category: "خوراک دام",
|
||||||
|
image: "/images/product-7.jpg",
|
||||||
|
shortDesc: "منبع فیبر طبیعی برای تنظیم عملکرد گوارشی دام",
|
||||||
|
description: [
|
||||||
|
"سبوس گندم به عنوان یک منبع فیبر طبیعی، نقش مهمی در تنظیم عملکرد شکمبه و دستگاه گوارش نشخوارکنندگان دارد.",
|
||||||
|
"این محصول با کیفیت یکنواخت و عاری از آلودگی، برای مصرف در جیره دام سبک و سنگین مناسب است.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "به عنوان جزئی از جیره فیبردار، مطابق فرمول تغذیه دام مصرف شود.",
|
||||||
|
benefits: [
|
||||||
|
"تنظیم عملکرد شکمبه و گوارش",
|
||||||
|
"منبع فیبر و انرژی طبیعی",
|
||||||
|
"کیفیت و یکنواختی بالا",
|
||||||
|
"سازگار با انواع جیره دام",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
slug: "dairy-cattle-supplement",
|
||||||
|
title: "مکمل دام شیری",
|
||||||
|
category: "دام سنگین",
|
||||||
|
image: "/images/product-8.jpg",
|
||||||
|
shortDesc: "پشتیبان تولید شیر و سلامت گاوهای شیری",
|
||||||
|
description: [
|
||||||
|
"مکمل دام شیری با تامین انرژی، پروتئین قابلمتابولیسم، ویتامین و مواد معدنی، از تولید پایدار شیر و سلامت باروری گاو شیری حمایت میکند.",
|
||||||
|
"فرمولاسیون این محصول با در نظر گرفتن نیاز دورههای مختلف شیردهی طراحی شده است.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "بر اساس مرحله شیردهی و میزان تولید، طبق برنامه تغذیهای در جیره گنجانده شود.",
|
||||||
|
benefits: [
|
||||||
|
"افزایش پایدار تولید شیر",
|
||||||
|
"بهبود درصد چربی و پروتئین شیر",
|
||||||
|
"پشتیبانی از باروری و سلامت سم",
|
||||||
|
"کاهش ریسک اختلالات متابولیک دوره زایمان",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
slug: "fattening-cattle-supplement",
|
||||||
|
title: "مکمل دام پرواری",
|
||||||
|
category: "دام سنگین",
|
||||||
|
image: "/images/product-9.jpg",
|
||||||
|
shortDesc: "افزایش وزنگیری روزانه در دوره پروار",
|
||||||
|
description: [
|
||||||
|
"مکمل دام پرواری آراد آریسمان با تمرکز بر افزایش بازده خوراک مصرفی، به دستیابی سریعتر به وزن هدف در پایان دوره پروار کمک میکند.",
|
||||||
|
"این محصول ترکیبی از مواد معدنی، ویتامین و افزودنیهای بهبوددهنده گوارش را در خود دارد.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "متناسب با وزن اولیه و طول دوره پروار، طبق فرمول جیره مصرف شود.",
|
||||||
|
benefits: [
|
||||||
|
"افزایش وزنگیری روزانه",
|
||||||
|
"بهبود بازده تبدیل خوراک",
|
||||||
|
"کاهش دوره پرواربندی",
|
||||||
|
"پشتیبانی از سلامت گوارشی دام",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
slug: "premix-vitamin-k3",
|
||||||
|
title: "پرمیکس ویتامین K3",
|
||||||
|
category: "پرمیکس",
|
||||||
|
image: "/images/product-10.jpg",
|
||||||
|
shortDesc: "تامینکننده ویتامین K3 برای انعقاد خون و سلامت عمومی",
|
||||||
|
description: [
|
||||||
|
"ویتامین K3 نقش کلیدی در فرآیند انعقاد خون و سلامت عمومی دام و طیور دارد و کمبود آن میتواند منجر به خونریزیهای داخلی و کاهش راندمان تولید شود.",
|
||||||
|
"این پرمیکس با غلظت استاندارد، برای استفاده در فرمولاسیون خوراک کارخانهای و مزرعهای مناسب است.",
|
||||||
|
],
|
||||||
|
packaging: "بستهبندی ۲۵ کیلوگرمی",
|
||||||
|
usage: "توسط کارخانجات خوراک دام و طیور، طبق فرمول استاندارد در پرمیکس نهایی گنجانده میشود.",
|
||||||
|
benefits: [
|
||||||
|
"پشتیبانی از فرآیند طبیعی انعقاد خون",
|
||||||
|
"غلظت استاندارد و قابل اطمینان",
|
||||||
|
"سازگار با سایر اجزای پرمیکس",
|
||||||
|
"کنترل کیفی در هر batch تولید",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 11,
|
||||||
|
slug: "premix-vitamin-d3",
|
||||||
|
title: "پرمیکس ویتامین D3",
|
||||||
|
category: "پرمیکس",
|
||||||
|
image: "/images/product-11.jpg",
|
||||||
|
shortDesc: "ضروری برای جذب کلسیم و استخوانبندی سالم",
|
||||||
|
description: [
|
||||||
|
"ویتامین D3 نقش تعیینکنندهای در جذب کلسیم و فسفر و در نتیجه استحکام استخوان و کیفیت پوسته تخممرغ دارد.",
|
||||||
|
"این پرمیکس با پایداری بالا، برای نگهداری طولانیمدت و مصرف در شرایط مختلف اقلیمی مناسب است.",
|
||||||
|
],
|
||||||
|
packaging: "بستهبندی ۲۵ کیلوگرمی",
|
||||||
|
usage: "طبق فرمول استاندارد پرمیکس، توسط واحدهای تولید خوراک دام و طیور استفاده میشود.",
|
||||||
|
benefits: [
|
||||||
|
"بهبود جذب کلسیم و فسفر",
|
||||||
|
"افزایش استحکام استخوان و پوسته تخممرغ",
|
||||||
|
"پایداری بالا در نگهداری",
|
||||||
|
"مناسب برای فرمولاسیونهای صنعتی",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 12,
|
||||||
|
slug: "premix-vitamin-a",
|
||||||
|
title: "پرمیکس ویتامین A",
|
||||||
|
category: "پرمیکس",
|
||||||
|
image: "/images/product-12.jpg",
|
||||||
|
shortDesc: "پشتیبان سیستم ایمنی، بینایی و باروری",
|
||||||
|
description: [
|
||||||
|
"ویتامین A در حفظ سلامت پوششهای مخاطی، سیستم ایمنی، بینایی و عملکرد تولیدمثلی دام و طیور نقش اساسی دارد.",
|
||||||
|
"این پرمیکس با غلظت دقیق و کنترلشده، در فرمولاسیون خوراک صنعتی مورد استفاده قرار میگیرد.",
|
||||||
|
],
|
||||||
|
packaging: "بستهبندی ۲۵ کیلوگرمی",
|
||||||
|
usage: "طبق فرمول استاندارد پرمیکس و توسط کارشناسان تغذیه در ترکیب خوراک گنجانده میشود.",
|
||||||
|
benefits: [
|
||||||
|
"تقویت سیستم ایمنی بدن",
|
||||||
|
"پشتیبانی از سلامت پوششهای مخاطی",
|
||||||
|
"بهبود عملکرد تولیدمثلی",
|
||||||
|
"غلظت دقیق و قابل اطمینان",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 13,
|
||||||
|
slug: "poultry-concentrate",
|
||||||
|
title: "کنسانتره طیور",
|
||||||
|
category: "طیور",
|
||||||
|
image: "/images/category-4.jpg",
|
||||||
|
shortDesc: "خوراک کامل و متعادل برای دوره رشد و تولید طیور",
|
||||||
|
description: [
|
||||||
|
"کنسانتره طیور آراد آریسمان با ترکیبی کامل از پروتئین، انرژی، ویتامین و مواد معدنی، نیاز تغذیهای طیور در مراحل مختلف پرورش را پوشش میدهد.",
|
||||||
|
"این محصول برای پرورشدهندگان صنعتی و نیمهصنعتی طراحی شده و کیفیت یکنواختی در هر بچ تولید دارد.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "با نسبت توصیهشده در فرمول جیره، متناسب با سن و نوع طیور مصرف شود.",
|
||||||
|
benefits: [
|
||||||
|
"پوشش کامل نیاز تغذیهای طیور",
|
||||||
|
"افزایش راندمان تولید",
|
||||||
|
"کیفیت یکنواخت در هر بچ",
|
||||||
|
"کاهش هزینه نهایی تولید",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 14,
|
||||||
|
slug: "sheep-supplement",
|
||||||
|
title: "مکمل گوسفند",
|
||||||
|
category: "گوسفند",
|
||||||
|
image: "/images/category-7.jpg",
|
||||||
|
shortDesc: "مکمل معدنی و ویتامینه برای سلامت و باروری گله گوسفند",
|
||||||
|
description: [
|
||||||
|
"این مکمل با تامین ویتامینها و عناصر معدنی کمیاب، از سلامت عمومی، باروری و مقاومت گله گوسفند در برابر تنشهای محیطی پشتیبانی میکند.",
|
||||||
|
"مصرف منظم آن بهویژه در دورههای حساس تولیدمثل و شیردهی توصیه میشود.",
|
||||||
|
],
|
||||||
|
packaging: "کیسه ۲۵ کیلوگرمی",
|
||||||
|
usage: "طبق دستور کارشناس دامپروری و متناسب با دوره فیزیولوژیک گله مصرف شود.",
|
||||||
|
benefits: [
|
||||||
|
"بهبود باروری و درصد زایش",
|
||||||
|
"تقویت سیستم ایمنی گله",
|
||||||
|
"پشتیبانی از دوره شیردهی",
|
||||||
|
"کاهش تلفات بره در دوره پرورش",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 15,
|
||||||
|
slug: "honeybee-supplement",
|
||||||
|
title: "مکمل زنبور عسل",
|
||||||
|
category: "زنبور عسل",
|
||||||
|
image: "/images/category-8.jpg",
|
||||||
|
shortDesc: "تغذیه کمکی برای تقویت کلنی در فصول کمگل",
|
||||||
|
description: [
|
||||||
|
"مکمل زنبور عسل آراد آریسمان به عنوان منبع تغذیه کمکی، در فصول کمبود گل و شهد، از قدرت و بقای کلنی پشتیبانی میکند.",
|
||||||
|
"این محصول با ترکیبی متعادل از قند، پروتئین و ریزمغذیها، به حفظ فعالیت و تولیدمثل کلنی کمک میکند.",
|
||||||
|
],
|
||||||
|
packaging: "بستهبندی ۱ و ۵ کیلوگرمی",
|
||||||
|
usage: "طبق راهنمای زنبورداری، معمولا در فصول پاییز و اوایل بهار مورد استفاده قرار میگیرد.",
|
||||||
|
benefits: [
|
||||||
|
"تقویت کلنی در فصول کمگل",
|
||||||
|
"پشتیبانی از تولیدمثل ملکه",
|
||||||
|
"افزایش مقاومت کلنی در زمستان",
|
||||||
|
"ترکیب متعادل قند و پروتئین",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export function getProductBySlug(slug: string) {
|
||||||
|
return products.find((p) => p.slug === slug);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRelatedProducts(product: Product, limit = 3) {
|
||||||
|
return products
|
||||||
|
.filter((p) => p.id !== product.id && p.category === product.category)
|
||||||
|
.slice(0, limit);
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
const FA_DIGITS = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
|
||||||
|
|
||||||
|
export function toFa(value: number | string): string {
|
||||||
|
return String(value).replace(/[0-9]/g, (d) => FA_DIGITS[Number(d)]);
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2017",
|
||||||
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "react-jsx",
|
||||||
|
"incremental": true,
|
||||||
|
"plugins": [
|
||||||
|
{
|
||||||
|
"name": "next"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"paths": {
|
||||||
|
"@/*": ["./src/*"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"next-env.d.ts",
|
||||||
|
"**/*.ts",
|
||||||
|
"**/*.tsx",
|
||||||
|
".next/types/**/*.ts",
|
||||||
|
".next/dev/types/**/*.ts",
|
||||||
|
"**/*.mts"
|
||||||
|
],
|
||||||
|
"exclude": ["node_modules"]
|
||||||
|
}
|
||||||