title pages and ...
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#ffffff" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 512 512" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M124.631,158.153h-98.69c-9.995,0-18.128,8.132-18.128,18.128v317.048c0,9.995,8.132,18.128,18.128,18.128h98.69
|
||||
c9.996,0,18.128-8.132,18.128-18.129V176.281C142.759,166.286,134.627,158.153,124.631,158.153z M122.362,491.059h-94.15V178.551
|
||||
h94.15V491.059z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M128.524,22.601C114.293,8.376,95.399,0.54,75.322,0.54C33.789,0.54,0,34.298,0,75.791
|
||||
C0,117.3,33.789,151.07,75.322,151.07c41.504,0,75.27-33.77,75.27-75.278C150.593,55.719,142.756,36.829,128.524,22.601z
|
||||
M75.322,130.671c-30.284,0-54.924-24.62-54.924-54.88c0-30.246,24.639-54.852,54.924-54.852c14.63,0,28.403,5.714,38.78,16.089
|
||||
c10.377,10.374,16.091,24.141,16.091,38.763C130.194,106.052,105.579,130.671,75.322,130.671z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M489.199,205.292c-21.531-36.508-59.732-55.019-113.542-55.019c-34.667,0-59.857,11.83-76.618,24.035
|
||||
c-0.986-9.071-8.693-16.156-18.022-16.156h-94.513c-9.995,0-18.128,8.132-18.128,18.128v317.048
|
||||
c0,9.995,8.132,18.128,18.128,18.128h98.474c9.996,0,18.128-8.132,18.128-18.128V336.465c0-53.175,14.411-63.254,41.007-63.254
|
||||
c26.002,0,33.121,14.181,33.121,65.974v154.148c0,9.996,8.132,18.128,18.128,18.128h98.51c9.995,0,18.128-8.132,18.128-18.128
|
||||
V319.425C512,284.287,509.408,239.561,489.199,205.292z M491.602,491.061h-93.969V339.184c0-20.661-0.574-42.18-7.427-58.268
|
||||
c-7.943-18.648-23.451-28.104-46.092-28.104c-54.11,0-61.405,42.287-61.405,83.653v154.594h-93.934V178.551h89.972v18.322
|
||||
c0,4.204,2.58,7.978,6.499,9.504c3.919,1.527,8.371,0.491,11.214-2.607c11.347-12.36,36.724-33.098,79.197-33.098
|
||||
c101.899,0,115.946,71.494,115.946,148.753V491.061z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M48.956,364.112c-5.633,0-10.199,4.566-10.199,10.199v94.853c0,5.633,4.566,10.199,10.199,10.199
|
||||
s10.199-4.566,10.199-10.199v-94.853C59.155,368.678,54.589,364.112,48.956,364.112z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M48.956,321.275c-5.633,0-10.199,4.566-10.199,10.199v9.179c0,5.633,4.566,10.199,10.199,10.199
|
||||
s10.199-4.566,10.199-10.199v-9.179C59.155,325.841,54.589,321.275,48.956,321.275z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
+14
-1
@@ -5,6 +5,19 @@ import React from 'react'
|
||||
import Accordion from '@/components/Accordion'
|
||||
import WhyDanak from '../home/WhyDanak'
|
||||
|
||||
export const metadata = {
|
||||
title: 'داناک | درباره ما',
|
||||
description: 'درباره ما',
|
||||
openGraph: {
|
||||
title: 'داناک | درباره ما',
|
||||
description: 'درباره ما',
|
||||
url: 'https://danakcorp.com/about',
|
||||
siteName: 'داناک',
|
||||
locale: 'fa_IR',
|
||||
type: 'website',
|
||||
},
|
||||
}
|
||||
|
||||
const About: NextPage = () => {
|
||||
return (
|
||||
<div className='mt-24'>
|
||||
@@ -62,7 +75,7 @@ const About: NextPage = () => {
|
||||
مشاوره استقرار ISMS
|
||||
</div>
|
||||
<div className='flex-1 xl:min-w-[30%] min-w-[90%] bg-[#ECEFF6] h-10 rounded-xl font-bold flex justify-center items-center'>
|
||||
نظام صنفی
|
||||
نظام صنفی رایانه ای
|
||||
</div>
|
||||
<div className='flex-1 xl:min-w-[30%] min-w-[90%] bg-[#ECEFF6] h-10 rounded-xl font-bold flex justify-center items-center'>
|
||||
GDPR
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import { Metadata } from 'next'
|
||||
import { Suspense } from 'react'
|
||||
import { dehydrate, HydrationBoundary, QueryClient } from '@tanstack/react-query'
|
||||
import { blogSingleQueryOptions, mostVisitedBlogsQueryOptions } from '../hooks/useBlogsData'
|
||||
import { NextPage } from 'next'
|
||||
import SingleBlogPage from '../components/SingleBlogPage'
|
||||
import Loading from './loading'
|
||||
import { BlogSingleResponse } from '../types/BlogTypes'
|
||||
|
||||
interface PageProps {
|
||||
params: Promise<{
|
||||
@@ -11,6 +13,21 @@ interface PageProps {
|
||||
}>
|
||||
}
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: PageProps
|
||||
): Promise<Metadata> {
|
||||
const { id } = await params
|
||||
const queryClient = new QueryClient()
|
||||
|
||||
await queryClient.prefetchQuery(blogSingleQueryOptions(id))
|
||||
const blog = queryClient.getQueryData(blogSingleQueryOptions(id).queryKey) as BlogSingleResponse
|
||||
|
||||
return {
|
||||
title: 'مجله داناک' + ' | ' + blog.data.blog.metaTitle,
|
||||
description: blog.data.blog.metaDescription,
|
||||
}
|
||||
}
|
||||
|
||||
const SingleBlog: NextPage<PageProps> = async ({ params }) => {
|
||||
|
||||
const { id } = await params
|
||||
|
||||
@@ -11,7 +11,7 @@ const ContactUs: FC = () => {
|
||||
<div className='flex gap-4 mt-6'>
|
||||
<div className='flex-1 bg-[#0A66C2] text-white rounded-xl p-4'>
|
||||
<Image
|
||||
src='/images/linkedin2.svg'
|
||||
src='/images/linkedin3.svg'
|
||||
alt='contact us'
|
||||
width={25}
|
||||
height={25}
|
||||
|
||||
@@ -6,8 +6,16 @@ import Loading from './loading'
|
||||
import { blogCategoriesQueryOptions, blogsQueryOptions, blogCombinedQueryOptions, mostVisitedBlogsQueryOptions } from './hooks/useBlogsData'
|
||||
|
||||
export const metadata = {
|
||||
title: 'مجله داناک | مقالات و آموزشها',
|
||||
title: 'مجله داناک | مدیریت ، فناوری ، طراحی',
|
||||
description: 'مقالات جذاب، نکات آموزشی و اخبار دنیای نرمافزار در مجله داناک',
|
||||
openGraph: {
|
||||
title: 'مجله داناک | مدیریت ، فناوری ، طراحی',
|
||||
description: 'مقالات جذاب، نکات آموزشی و اخبار دنیای نرمافزار در مجله داناک',
|
||||
url: 'https://danakcorp.com/blogs',
|
||||
siteName: 'داناک',
|
||||
locale: 'fa_IR',
|
||||
type: 'website',
|
||||
},
|
||||
}
|
||||
|
||||
export default function BlogsPage() {
|
||||
|
||||
@@ -3,6 +3,19 @@ import { Suspense } from 'react'
|
||||
import Loading from './loading'
|
||||
import DanakServicesContent from './DanakServicesContent'
|
||||
|
||||
export const metadata = {
|
||||
title: 'داناک | خدمات',
|
||||
description: 'خدمات ما',
|
||||
openGraph: {
|
||||
title: 'داناک | خدمات',
|
||||
description: 'خدمات ما',
|
||||
url: 'https://danakcorp.com/danak-services',
|
||||
siteName: 'داناک',
|
||||
locale: 'fa_IR',
|
||||
type: 'website',
|
||||
},
|
||||
}
|
||||
|
||||
const DanakServices: NextPage = () => {
|
||||
return (
|
||||
<Suspense fallback={<Loading />}>
|
||||
|
||||
@@ -7,6 +7,20 @@ import { landingQueryOptions } from './home/hooks/useHomeData'
|
||||
import LangingPage from './home/LangingPage'
|
||||
import Loading from './loading'
|
||||
|
||||
export const metadata = {
|
||||
title: 'شرکت نرم افزاری داناک',
|
||||
description: 'ارائه راهکارهای مبتنی بر تکنولوژی نوآورانه برای بهبود کسبوکار، افزایش بهرهوری و رشد پایدار',
|
||||
openGraph: {
|
||||
title: 'شرکت نرم افزاری داناک',
|
||||
description: 'ارائه راهکارهای مبتنی بر تکنولوژی نوآورانه برای بهبود کسبوکار، افزایش بهرهوری و رشد پایدار',
|
||||
url: 'https://danakcorp.com/',
|
||||
siteName: 'شرکت نرم افزاری داناک',
|
||||
locale: 'fa_IR',
|
||||
type: 'website',
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
const Home: NextPage = () => {
|
||||
return (
|
||||
<Suspense fallback={<Loading />}>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { Suspense } from 'react'
|
||||
import { dehydrate, HydrationBoundary, QueryClient } from '@tanstack/react-query'
|
||||
import { detailServiceQueryOptions } from '../hooks/useProductData'
|
||||
import { NextPage } from 'next'
|
||||
import { Metadata, NextPage } from 'next'
|
||||
import DetailService from '../DetailService'
|
||||
import Loading from './loading'
|
||||
import { ServiceDetailResponse } from '../types/ProductTypes'
|
||||
|
||||
interface PageProps {
|
||||
params: Promise<{
|
||||
@@ -11,6 +12,22 @@ interface PageProps {
|
||||
}>
|
||||
}
|
||||
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: PageProps
|
||||
): Promise<Metadata> {
|
||||
const { id } = await params
|
||||
const queryClient = new QueryClient()
|
||||
|
||||
await queryClient.prefetchQuery(detailServiceQueryOptions(id))
|
||||
const service = queryClient.getQueryData(detailServiceQueryOptions(id).queryKey) as ServiceDetailResponse
|
||||
|
||||
return {
|
||||
title: 'مجله داناک' + ' | ' + service.data.danakService.name,
|
||||
description: service.data.danakService.metaDescription,
|
||||
}
|
||||
}
|
||||
|
||||
const SingleService: NextPage<PageProps> = async ({ params }) => {
|
||||
|
||||
const { id } = await params
|
||||
|
||||
@@ -77,7 +77,7 @@ const ServiceHeader: FC<Props> = (props: Props) => {
|
||||
<div className='text-xs whitespace-nowrap flex gap-1 items-center'>
|
||||
<div className='flex gap-2'>
|
||||
{
|
||||
finalPrice !== price &&
|
||||
finalPrice !== price && !!price &&
|
||||
<div className='line-through text-xs text-description'>
|
||||
{NumberFormat(Number(price))}
|
||||
</div>
|
||||
|
||||
@@ -7,6 +7,20 @@ import { categoriesQueryOptions, danakServiceSuggestedQueryOptions, servicesQuer
|
||||
import Products from './ProductsPage'
|
||||
import Loading from './loading'
|
||||
|
||||
export const metadata = {
|
||||
title: 'داناک | محصولات',
|
||||
description: 'محصولات و خدمات ما',
|
||||
openGraph: {
|
||||
title: 'داناک | محصولات',
|
||||
description: 'محصولات و خدمات ما',
|
||||
url: 'https://danakcorp.com/products',
|
||||
siteName: 'داناک',
|
||||
locale: 'fa_IR',
|
||||
type: 'website',
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
const ProductsPage: NextPage = () => {
|
||||
return (
|
||||
<Suspense fallback={<Loading />}>
|
||||
|
||||
Reference in New Issue
Block a user