From 90053ed45bd4abe2a3822821b1a0161ae5b243f5 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 10 Sep 2023 17:05:57 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A6=20Added=20data=20type=20interfaces?= =?UTF-8?q?=20=F0=9F=9A=80=20Define=20data=20structures=20for=20posts=20an?= =?UTF-8?q?d=20listings=20=F0=9F=94=97=20Created=20interfaces=20for=20Cust?= =?UTF-8?q?omLink=20and=20TaxonomyType=20=F0=9F=91=A4=20Defined=20AuthorTy?= =?UTF-8?q?pe=20interface=20for=20author=20information=20=F0=9F=8C=88=20Ad?= =?UTF-8?q?ded=20color=20options=20to=20TaxonomyType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/types.ts | 143 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 src/data/types.ts diff --git a/src/data/types.ts b/src/data/types.ts new file mode 100644 index 0000000..92c6de5 --- /dev/null +++ b/src/data/types.ts @@ -0,0 +1,143 @@ +import { Route } from "@/routers/types"; +import { StaticImageData } from "next/image"; + +// ###### CustomLink ######## // +export interface CustomLink { + label: string; + href: Route | string; + targetBlank?: boolean; +} + +// ########## PostDataType ######## // +export interface TaxonomyType { + id: string | number; + name: string; + href: Route; + count?: number; + thumbnail?: string; + desc?: string; + color?: TwMainColor | string; + taxonomy: "category" | "tag"; + listingType?: "stay" | "experiences" | "car"; +} + +export interface AuthorType { + id: string | number; + firstName: string; + lastName: string; + displayName: string; + avatar: string | StaticImageData; + bgImage?: string | StaticImageData; + email?: string; + count: number; + desc: string; + jobName: string; + href: Route; + starRating?: number; +} + +export interface PostDataType { + id: string | number; + author: AuthorType; + date: string; + href: Route; + categories: TaxonomyType[]; + title: string; + featuredImage: StaticImageData | string; + desc?: string; + commentCount: number; + viewdCount: number; + readingTime: number; + postType?: "standard" | "video" | "gallery" | "audio"; +} + +export type TwMainColor = + | "pink" + | "green" + | "yellow" + | "red" + | "indigo" + | "blue" + | "purple" + | "gray"; + +// +export interface StayDataType { + id: string | number; + author: AuthorType; + date: string; + href: Route; + title: string; + featuredImage: StaticImageData | string; + commentCount: number; + viewCount: number; + address: string; + reviewStart: number; + reviewCount: number; + like: boolean; + galleryImgs: (StaticImageData | string)[]; + price: string; + listingCategory: TaxonomyType; + maxGuests: number; + bedrooms: number; + bathrooms: number; + saleOff?: string | null; + isAds: boolean | null; + map: { + lat: number; + lng: number; + }; +} + +// +export interface ExperiencesDataType { + id: string | number; + author: AuthorType; + date: string; + href: Route; + title: string; + featuredImage: StaticImageData | string; + commentCount: number; + viewCount: number; + address: string; + reviewStart: number; + reviewCount: number; + like: boolean; + galleryImgs: (StaticImageData | string)[]; + price: string; + listingCategory: TaxonomyType; + maxGuests: number; + saleOff?: string | null; + isAds: boolean | null; + map: { + lat: number; + lng: number; + }; +} + +// +export interface CarDataType { + id: string | number; + author: AuthorType; + date: string; + href: Route; + title: string; + featuredImage: StaticImageData | string; + commentCount: number; + viewCount: number; + address: string; + reviewStart: number; + reviewCount: number; + like: boolean; + galleryImgs: (StaticImageData | string)[]; + price: string; + listingCategory: TaxonomyType; + seats: number; + gearshift: string; + saleOff?: string | null; + isAds: boolean | null; + map: { + lat: number; + lng: number; + }; +}