stone-kit
Version:
uikit for redesign
350 lines (349 loc) • 12.1 kB
TypeScript
/// <reference types="react" />
interface LotPromo {
/** Промо текст */
val: string;
/** Идентификатор */
slug: string;
/** Категория */
category: string;
/** Ссылка на иконку */
icoImg: string | null;
/** hex цвет */
color: string;
}
export interface ILot {
/** id Лота */
id: number;
/** Название проекта */
name?: string | null;
/** Квартал сдачи */
buildingQuarter?: number | null;
cornerKitchenLiving?: boolean | null;
/** uuid Лота из 1с */
lotUuid: string;
/** TODO: убрать */
projectUuid: string | null;
/** Скидка */
discount: string | null;
/** Стоимость объекта недвижимости до скидки */
sellingPriceBeforeDiscount: string | null;
/** Стоимость объекта недвижимости */
sellingPrice: string | null;
/**id проекта */
projectId: number | null;
/** Показывать цену или "цена по запросу" */
showPriceFlg?: boolean | null;
/** Цена за квм */
sellingPricePerMeter?: string | null;
/** цена за метра квадратный за год за аренду */
rentPricePerMeterPerYear: string | null;
/** аренда за месяц */
rentPricePerMonth: string | null;
/** стороны света */
cardinalDirections?: string[] | null;
/** Размер скидки */
discountVolume: number | null;
/** Цена со скидкой */
discountedPrice: number | null;
/** дата освобождения лота */
availableFrom: string | null;
/** дата, до которой должны быть выданы ключи */
handoverKeys: string | null;
/** состояние лота: свободен, зарезервирован, продан, сдан в аренду, заблокирован, деактивирован */
status?: number | null;
/** Статус аренды лота */
rentStatus: number | null;
/** название лота в 1С */
number: string | null | undefined;
/** полный адрес лота (с корпусом) */
address: string | null;
/** коммерческие программы рассрочки */
termsOfPurchase: string[] | null;
/** Тип помещения => Квартиры/Пентхаусы/Келлеры/Паркинг Офисы/Ритейл/Офисные Блоки/Паркинг */
type: number | null;
/** Название помещения => Квартиры/Пентхаусы/Келлеры/Паркинг Офисы/Ритейл/Офисные Блоки/Паркинг */
typeName: string | null;
/** направления, по которым продвигается этот лот */
direction: number | null;
/** Размерность спален S/M/L */
typeSizeCode: string | null;
/** номер подъезда/секции */
entrance: string | null;
/** Номер квартиры / офиса */
doorNumber: string | null;
/** Площадь квартиры */
area: string | null;
/** площадь кухни */
kitchenArea: number | null;
/** Жилая площадь */
livingArea: number | null;
/** Кол-во этажей */
floorsNumber: number | null;
/** Этаж */
floor: number | null;
/** Высота потолков */
ceiling: string | null;
/** Этаж, с которого начинаются продаваемые лоты */
saleFloorMin: number | null;
/** Этаж, на котором заканчиваются продаваемые лоты */
saleFloorMax: number | null;
/** Первый этаж большого лота/здания */
beginFloor: number | null;
/** Последний этаж большого лота/здания */
endFloor: number | null;
/** Ежемясячный платеж */
mortgageMonthlyPayment?: string;
/** Количество комнат */
roomsCount: number | null;
/** Количество спален */
bedroomsCount?: number | null;
/** Корпус */
housing: string | null;
/** Секция */
section: string | null;
/** Очередь строительства */
buildStage: number | null;
/** угловое? */
isCorner: boolean | null;
/** Квартира с террасой */
terrace?: boolean | null;
/** общепит? */
isCatering: boolean | null;
pdfPresentation: string | null | undefined;
/** является ли лот отдельно стоящим зданием */
isDetachedBuilding: boolean | null;
/** Наличие телефона */
isPhone: boolean | null;
/** в ипотеку */
isMortgage: boolean | null;
/** мусоропровод */
isGarbageTube: boolean | null;
/** Является ли лот пентхаусом */
isPenthouse?: boolean | null;
/** Является ли лот апартаментом */
isApart: boolean | null;
/** Является ли лот двухуровневым */
isDoubleLevel?: boolean | null;
/** Есть ли пандус */
isRamp: boolean | null;
/** Близко ли вход к лифтовой группе */
isCloseToLift: boolean | null;
/** Занят ли лот */
isOccupied: boolean | null;
/** Является ли лот ГАБ */
isGab: boolean | null;
/** Есть ли отделка */
isFacing: boolean | null;
/** Особенности квартиры */
features: LotFeature[] | null;
/** Количество пассажирских лифтов */
liftPassenger: number | null;
/** Количество грузовых лифтов */
liftService?: number | null;
/** Количество балконов */
balcony: number | null;
bathroomWithWindow: boolean | null;
dressingRoom: boolean | null;
masterBedroom: boolean | null;
workroom: boolean | null;
objectId: string;
reservations: unknown[];
businessType: string | null;
/** Количество лоджий */
loggia?: number | null;
/** Состояние помещения */
condition: string | null;
/** Тип входа в помещений */
inputType?: string | null;
/** Отделка */
decoration?: string | null;
/** Тип планировки */
layout: string | null;
/** Тип ремонта */
repairType: string | null;
slug: string;
/** количество стояков с водой */
waterPipesCount?: number[] | null;
/** количество рабочих мест */
workPlacesCount: number | null;
/** Количество совместных санузлов */
combinedWcsCount: number | null;
/** Возможное назначение */
speciality: number | null;
/** Куда выходят витрины */
showcaseWindows: string | null;
/** Вид из окна */
windowView: string | null;
/** Вид из окна для ритейла*/
windowViews: string[];
/** Promo метки */
promo: LotPromo[] | null;
/** Promo текст */
promoText?: string | null;
/** Ссылка на картинку */
interiorPlanImg?: string | null;
/** Ссылка на картинку */
floorPlanImg: string | null;
/** Ссылка на картинку */
sitPlanImg: string | null;
/** Дата создания */
createdAt?: string;
/** Дата обновления */
updatedAt?: string;
/** Первоначальный взнос */
firstPaymentSum?: string | null;
/** Массив с лотами в фоисных блоках */
childLots?: {
id: number;
floor: number;
floorPlanImg: string;
interiorPlanImg: string;
}[];
recommended?: ILot[] | null;
parking?: ILot[] | null;
project?: LotProject | null;
isWaterPipes?: boolean | null;
azimuthAngle?: number | null;
isDecoration?: boolean | null;
subTypeName?: string | null;
subType: number | null;
}
export interface LotFeature {
/** Текст */
val: string;
/** Категория */
category: string;
/** Ссылка на иконку */
icoImg: string | null;
/** Идентификатор */
slug: string;
isSearchable?: boolean | null;
}
export interface LotCardFeature {
/** Текст */
val: string;
/** Категория */
category: string;
/** Ссылка на иконку */
icoImg: {
attributes: IDefaultImg;
id: number;
} | null;
/** Идентификатор */
slug: string;
}
export interface LotProject {
direction: number;
discount: string;
/** id */
id: number;
/** Название проекта */
name: string;
/** адрес */
address: string;
/** особенности, набор строк */
features: LotFeature[] | null;
frontFeatures: unknown;
geo: {
lat: string;
long: string;
};
logoImg: unknown;
minimalLotPrice: {
[key: number]: string;
};
retailLotsCount: {
[key: number]: number;
};
salesOffice: unknown;
shortDesc: string;
showCatalog: boolean;
showDetailPage: boolean;
showPdfBtn: boolean;
/** условия для больших лотов */
bigLotFeatures: LotCardFeature;
/** условия для каталога */
catalogFeatures: LotCardFeature[];
/** квартал сдачи */
buildingQuarter?: number | null;
/** Локация */
location?: string | null;
/** год сдачи */
buildingYear?: number;
/** широта */
lat?: string;
/** долгота */
long?: string;
/** сортровка */
sort: number | null;
/** Дата создания */
createdAt: string;
/** Дата обновления */
updatedAt: string;
/** Расстояние до метро */
metro: Metro[];
/** Показывать цену лотов */
showPriceFlg?: boolean;
/** uuid */
uuid?: string;
/** Статус проекта */
status: string;
/** Количество лотов проекта в продаже */
lotsCount?: number | null;
/** SitPlan проекта */
sitPlanImg: string;
strapiSlug?: string;
sortOffice?: number;
sortRetail?: number;
}
export interface Metro {
/** Цвет ветки */
color: string;
/** Широта */
lat?: number;
/** Долгота */
long?: number;
/** Название станции */
name: string;
station?: string | null;
/** Время до станции в минутах */
timeTo: number;
mode: null | string;
/** Иконка */
icon?: {
data?: IDefaultImg;
} | null;
}
export interface ILotCard {
lot: ILot;
btnName?: string;
btnDisabled?: boolean;
handleBtnForm: (e?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
handleFullScreenBtn?: () => void;
addClassname?: string;
addClassnameLotImage?: string;
imgNode?: React.ReactNode;
rowConditions?: boolean;
}
export interface IDefaultImg extends IDefaultAttributes {
alternativeText: string | null;
caption: string | null;
ext: string;
formats: unknown;
hash: string;
height: number;
mime: string;
name: string;
previewUrl: unknown;
provider: string;
provider_metadata?: unknown;
size: number;
url: string;
width?: number;
}
export interface IDefaultAttributes {
createdAt: string;
updatedAt: string;
publishedAt: string;
}
export {};