nestiq-component-library 1.1.141 → 1.1.142

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/assets/images/{card-arrow-left.28090aba4b4f2006.svg → card-arrow-left.55343410142dad3f.svg} +4 -4
  2. package/dist/assets/images/{card-arrow-right.c60af4cbbd49f3aa.svg → card-arrow-right.60b3bf0e34c1800d.svg} +4 -4
  3. package/dist/assets/images/{imooly.890e3dd01ea33574.svg → imooly.b46514ac970e6052.svg} +7 -7
  4. package/dist/assets/images/{more.1e158adc48fbb406.svg → more.ce14789c8d37e327.svg} +12 -12
  5. package/dist/index.es.js +41 -51
  6. package/dist/index.es.js.map +1 -1
  7. package/dist/index.js +41 -51
  8. package/dist/index.js.map +1 -1
  9. package/package.json +1 -1
  10. package/rollup.config.mjs +36 -36
  11. package/src/assets/images/card-arrow-left.svg +4 -4
  12. package/src/assets/images/card-arrow-right.svg +4 -4
  13. package/src/assets/images/imooly.svg +7 -7
  14. package/src/assets/images/more.svg +12 -12
  15. package/src/components/FloorPlanPopup/FloorPlanPopup.css +3 -3
  16. package/src/components/FloorPlanPopup/FloorPlanPopup.tsx +83 -83
  17. package/src/components/ImageListPopup/ImageListPopup.css +83 -83
  18. package/src/components/ImageListPopup/ImageListPopup.tsx +141 -141
  19. package/src/components/NewPropertyCard/NewPropertyCard.css +52 -43
  20. package/src/components/NewPropertyCard/NewPropertyCard.tsx +358 -359
  21. package/src/components/Popup/Popup.tsx +29 -29
  22. package/src/components/ToastWrapper/ToastWrapper.tsx +25 -25
  23. package/src/models/message.model.ts +7 -7
  24. package/dist/assets/images/Icon_rightArrow.svg +0 -3
  25. package/dist/assets/images/LayersIcon.svg +0 -5
  26. package/dist/assets/images/blackarrow-Right.svg +0 -3
  27. package/dist/assets/images/blckarrow-Left.svg +0 -3
  28. package/dist/assets/images/chevron-left.svg +0 -3
  29. package/dist/assets/images/default-property.jpg +0 -0
  30. package/dist/assets/images/heartIcon.svg +0 -3
  31. package/dist/assets/images/icon-close-white.webp +0 -0
  32. package/dist/assets/images/icon_close 2.e41bb9a4db48e048.png +0 -0
  33. package/dist/assets/images/icon_close_2.png +0 -0
  34. package/dist/assets/images/icon_gallery.svg +0 -4
  35. package/dist/assets/images/icon_map.svg +0 -10
  36. package/dist/assets/images/icon_share_1.svg +0 -3
  37. package/dist/assets/images/layer_icon.svg +0 -5
  38. package/dist/assets/images/locationIcon.0af399c78e0cdc20.svg +0 -4
  39. package/dist/assets/images/locationIcon.svg +0 -4
  40. package/dist/assets/images/locationIconBlack.svg +0 -4
  41. package/dist/assets/images/no-image-icon.png +0 -0
  42. package/dist/components/Button/Button.js +0 -6
  43. package/dist/components/ImageListPopup/ImageListPopup.js +0 -26
  44. package/dist/components/MessagePopup/ErrorPopup.d.ts +0 -7
  45. package/dist/components/Popup/Popup.js +0 -12
  46. package/dist/components/SharePopup/PopUp.d.ts +0 -7
@@ -1,359 +1,358 @@
1
- import React, { useRef, useState } from "react";
2
- // import { FormattedMessage } from "react-intl";
3
- import locationIcon from "../../assets/images/locationIcon.svg";
4
- import "../NewPropertyCard/NewPropertyCard.css";
5
- import noImageIcon from "../../assets/Images/default-property.jpg";
6
- import { formatPrice } from "../../functions/util";
7
- import shareIcon from "../../assets/Images/icon_share_1.svg";
8
- import moreIcon from "../../assets/Images/more.svg";
9
- import arrowLeft from "../../assets/Images/card-arrow-left.svg";
10
- import arrowRight from "../../assets/Images/card-arrow-right.svg";
11
- import iconLayers from "../../assets/Images/layer_icon.svg";
12
- import FloorPlanPopup from "../FloorPlanPopup/FloorPlanPopup";
13
- // import MessagePopUp from "../MessagePopup/MessagePopUp";
14
- import SharePopup from "../SharePopup/SharePopup";
15
- import { MessageModel } from "../../models/message.model";
16
- import immooly from "../../assets/images/imooly.svg";
17
-
18
- interface PopupProps {
19
- property: {
20
- city: string;
21
- propertyArea: string;
22
- historicalProtection: boolean;
23
- basement: boolean;
24
- balcony: boolean;
25
- terrace: boolean;
26
- guestBathroom: boolean;
27
- bathrooms: string;
28
- usableArea: string;
29
- id: string;
30
- rooms: string;
31
- constructedArea: string;
32
- title: string;
33
- evaluation?: {
34
- askingPrice: number;
35
- };
36
- expose: {
37
- title: string;
38
- };
39
- pictures: { contentUrl: string }[];
40
- };
41
- Impliment: any;
42
- baseUrl: string;
43
- themesList: any;
44
- floorPlanUrl: string;
45
- // onMessagePopupSubmitClick: (formValues: MessageModel) => void;
46
- messageOnClick: () => void;
47
- onclickSuccess: () => void;
48
- onClick: () => void;
49
- }
50
- export default function PropertyCard(props: PopupProps) {
51
- const [liked, setLiked] = useState(false);
52
- const [mainImage, setMainImage] = useState<string | null>(null);
53
- const [currentImageIndex, setCurrentImageIndex] = useState(0);
54
- const imageListRef = useRef<HTMLDivElement>(null);
55
- const [floorPlan, setFloorPlan] = useState(false);
56
- const [messagePopUp, setMessagPopUp] = useState(false);
57
- const [sharePopUp, setSharePopUp] = useState(false);
58
-
59
- const pictureUrls =
60
- props.property?.pictures?.length > 0
61
- ? props.property.pictures.map(
62
- (picture) => `${props.baseUrl}${picture.contentUrl}`
63
- )
64
- : [noImageIcon];
65
-
66
- // setPictureUrls(pictureUrls);
67
- const handleLike = () => {
68
- setLiked(!liked);
69
- };
70
- const floorPlanOnClick = () => {
71
- if (props.floorPlanUrl) {
72
- setFloorPlan(true);
73
- }
74
- };
75
- const handleMessagPopUp = () => {
76
- // setMessagPopUp(true);
77
- props.messageOnClick();
78
- };
79
- const handleSharePopUp = () => {
80
- setSharePopUp(true);
81
- };
82
-
83
- const handleArrowClickInMainImage = (direction: string) => {
84
- if (!props.property || pictureUrls.length === 0) return;
85
-
86
- let newIndex = currentImageIndex;
87
- if (direction === "left") {
88
- newIndex =
89
- (currentImageIndex - 1 + pictureUrls.length) % pictureUrls.length;
90
- } else if (direction === "right") {
91
- newIndex = (currentImageIndex + 1) % pictureUrls.length;
92
- }
93
-
94
- setCurrentImageIndex(newIndex);
95
- setMainImage(pictureUrls[newIndex]);
96
-
97
- // Ensure the ref exists before calling scrollTo
98
- if (imageListRef.current) {
99
- imageListRef.current.scrollTo({
100
- left: newIndex * 150,
101
- behavior: "smooth",
102
- });
103
- } else {
104
- console.warn("imageListRef is not set");
105
- }
106
- };
107
- // const boosted = "true";
108
-
109
- return (
110
- <div className="d-flex flex-row property-card">
111
- <div className="d-flex flex-column col-md-6 col-lg-6">
112
- <div
113
- key={props.property.id}
114
- className="card-bod position-relative cardStyles h-100 w-100"
115
- style={{
116
- backgroundImage: `url(${mainImage || pictureUrls[0]})`,
117
- backgroundSize: "cover",
118
- backgroundPosition: "center",
119
- maxWidth: "640",
120
- }}
121
- >
122
- <div className="d-flex flex-row col-12 justify-content-between ">
123
- <div
124
- className="d-felx align-self-start justify-items-start ms-4 "
125
- style={{ left: "16px" }}
126
- onClick={() => handleArrowClickInMainImage("left")}
127
- role="button"
128
- >
129
- <img src={arrowLeft} />
130
- </div>
131
- <div></div>
132
- <div
133
- className="d-flex align-self-end justify-items-end me-4"
134
- onClick={() => handleArrowClickInMainImage("right")}
135
- role="button"
136
- >
137
- <img src={arrowRight} style={{ right: "16px" }} />
138
- </div>
139
- </div>
140
- <div
141
- className="d-flex flex-row align-self-end justify-item-start justify-content-between align-item-start gap-1 mb-2 ms-4"
142
- style={{ position: "absolute", left: "0" }}
143
- >
144
- <div className="cardTag" style={{ marginBottom: "16px" }}>{`${
145
- currentImageIndex + 1
146
- }/${pictureUrls.length}`}</div>
147
- <div
148
- className="Grundriss kontact-button-text ms-2 "
149
- role="button"
150
- onClick={floorPlanOnClick}
151
- style={{ marginBottom: "16px" }}
152
- >
153
- <img src={iconLayers} className="" style={{ width: "18px" }} />{" "}
154
- Grundriss
155
- </div>
156
- </div>
157
- </div>
158
- </div>
159
- <div className={"listing-compact d-flex flex-column col-6"}>
160
- <div className="d-flex flex-row justify-content-between gap-2">
161
- <span
162
- className="propertyTitle align-items-start "
163
- style={{
164
- paddingLeft: "32px",
165
- paddingTop: "32px",
166
- }}
167
- onClick={props.onClick}
168
- role="button"
169
- >
170
- {props.property.expose?.title}
171
- </span>
172
- <div
173
- className="d-flex gap-2"
174
- style={{
175
- paddingRight: "32px",
176
- paddingTop: "21px",
177
- paddingLeft: "76px",
178
- }}
179
- >
180
- <img
181
- src={shareIcon}
182
- alt="Location Icon"
183
- className=" "
184
- onClick={handleSharePopUp}
185
- style={{ maxHeight: "24px", maxWidth: "24px" }}
186
- role="button"
187
- />
188
- <img
189
- src={moreIcon}
190
- alt="Location Icon"
191
- className=""
192
- style={{ maxHeight: "24px", maxWidth: "24px" }}
193
- role="button"
194
- />
195
- </div>
196
- </div>
197
- <div
198
- style={{
199
- paddingLeft: "32px",
200
- paddingRight: "32px",
201
- paddingTop: "28px",
202
- }}
203
- >
204
- {" "}
205
- <div className="d-flex ">
206
- <img src={locationIcon} alt="Location Icon" className="Vector" />
207
- <span className="locationTexts ">
208
- {props.property.city || "N/A"}
209
- </span>
210
- </div>
211
- </div>
212
- <div
213
- className="d-flex flex-row gap-3 col-6 col-lg-8 justify-content-between "
214
- style={{
215
- paddingLeft: "32px",
216
- paddingRight: "32px",
217
- paddingTop: "28px",
218
- }}
219
- >
220
- <span className="priceValue col-lg-4 col-md-4 col-sm-6 ">
221
- {formatPrice(props.property?.evaluation?.askingPrice ?? 0)} €
222
- <br />
223
- <span className="details">Kaufpreis</span>
224
- </span>
225
- <span className="text-dark value col-lg-5 col-md-5 col-sm-7 ">
226
- {props.property.constructedArea} m²
227
- <br />
228
- <span className="details">
229
- <span>Wohnfläche</span>
230
- </span>
231
- </span>
232
- <span className="text-dark value col-lg-4 col-md-3 col-sm-6 text-truncate ">
233
- {+props.property?.rooms}
234
- <br />
235
- <span className="details">
236
- {" "}
237
- <span>Zimmer</span>
238
- </span>
239
- </span>
240
- <span className="text-dark value col-lg-4 col-md-3 col-sm-4 text-truncate ">
241
- {+props.property.propertyArea}
242
- <br />
243
- <span className="details">
244
- <span>Grundstück</span>
245
- </span>
246
- </span>
247
- </div>
248
- <div
249
- className="labelTopClass d-flex start-0 col-sm-5 col-lg-8 "
250
- style={{ padding: "28px" }}
251
- >
252
- <div className=" align-items-center d-flex flex-row gap-3">
253
- {props.property.historicalProtection && (
254
- <label className="thirdLabels justify-content-center align-items-center">
255
- <span className="layersText ">{"Denkmalschutz"}</span>
256
- </label>
257
- )}
258
-
259
- {props.property.basement && (
260
- <label className="secondLabel justify-content-center align-items-center">
261
- <span className="layersText ">{"Keller"}</span>
262
- </label>
263
- )}
264
- {props.property.balcony && (
265
- <label className="secondLabel justify-content-center align-items-center">
266
- <span className="layersText ">{"Balkon"}</span>
267
- </label>
268
- )}
269
- {props.property.terrace && (
270
- <label className="thirdLabels justify-content-center align-items-center ">
271
- <span className="layersText">{"Terrace"}</span>
272
- </label>
273
- )}
274
- {props.property.guestBathroom && (
275
- <label className="col-1 thirdLabels justify-content-center align-items-center ">
276
- <span className="layersText ">{"Gäste-WC"}</span>
277
- </label>
278
- )}
279
- </div>
280
- </div>
281
- {props.Impliment && (
282
- <div
283
- className=""
284
- style={{
285
- paddingLeft: "32px",
286
- paddingRight: "32px",
287
- }}
288
- >
289
- <div className="Frame-136 d-flex flex-row">
290
- <div className="d-flex flex-column flex-lg-row col-4 justify-content-between ">
291
- <img src={immooly} alt="Logo" className="immooly" />
292
- </div>
293
- <div className="ms-2 d-flex flex-column col-8 justify-content-center align-self-center text-center">
294
- <span className="fw-bold">Herr Florian Gauss</span>
295
- <span>Immogart UGh</span>
296
- <button
297
- className="kontactbutton text-light align-self-center"
298
- onClick={handleMessagPopUp}
299
- role="button"
300
- >
301
- <span className="kontact-button-text">
302
- Kontakt aufnehmen{" "}
303
- </span>
304
- </button>
305
- </div>
306
- </div>
307
- </div>
308
- )}
309
- {!props.Impliment && (
310
- <div
311
- className=""
312
- style={{
313
- paddingLeft: "32px",
314
- paddingRight: "32px",
315
- paddingBottom: "32px",
316
- }}
317
- >
318
- <div className="Frame-136 d-flex flex-row">
319
- <div className="d-flex flex-column flex-lg-row col-4 justify-content-between ">
320
- <img src={immooly} alt="Logo" className="immooly" />
321
- </div>
322
- <div className="d-flex flex-column flex-lg-row justify-content-between">
323
- <div className="d-flex flex-column col-7">
324
- <span className="">Herr Florian Gauss</span>
325
- <span>Immogart UGh</span>
326
- </div>
327
- <button
328
- className="kontactbutton text-light "
329
- onClick={handleMessagPopUp}
330
- role="button"
331
- >
332
- <span className="kontact-button-text">
333
- Kontakt aufnehmen{" "}
334
- </span>
335
- </button>
336
- </div>
337
- </div>
338
- </div>
339
- )}
340
- </div>
341
- {floorPlan && (
342
- <FloorPlanPopup
343
- contentUrl={props.floorPlanUrl}
344
- onCloseClick={() => setFloorPlan(false)}
345
- />
346
- )}
347
- {/* {messagePopUp && (
348
- <MessagePopUp
349
- onCloseClick={() => setMessagPopUp(false)}
350
- sellerFirstName={props.userData?.firstname}
351
- sellerLastName={props.userData?.lastname}
352
- themesList={props.themesList}
353
- onSubmit={props.onMessagePopupSubmitClick}
354
- />
355
- )} */}
356
- {sharePopUp && <SharePopup onClick={() => setSharePopUp(false)} />}
357
- </div>
358
- );
359
- }
1
+ import React, { useRef, useState } from "react";
2
+ // import { FormattedMessage } from "react-intl";
3
+ import locationIcon from "../../assets/images/locationIcon.svg";
4
+ import "../NewPropertyCard/NewPropertyCard.css";
5
+ import noImageIcon from "../../assets/Images/default-property.jpg";
6
+ import { formatPrice } from "../../functions/util";
7
+ import shareIcon from "../../assets/Images/icon_share_1.svg";
8
+ import moreIcon from "../../assets/Images/more.svg";
9
+ import arrowLeft from "../../assets/Images/card-arrow-left.svg";
10
+ import arrowRight from "../../assets/Images/card-arrow-right.svg";
11
+ import iconLayers from "../../assets/Images/layer_icon.svg";
12
+ import FloorPlanPopup from "../FloorPlanPopup/FloorPlanPopup";
13
+ // import MessagePopUp from "../MessagePopup/MessagePopUp";
14
+ import SharePopup from "../SharePopup/SharePopup";
15
+ import { MessageModel } from "../../models/message.model";
16
+ import immooly from "../../assets/images/imooly.svg";
17
+
18
+ interface PopupProps {
19
+ property: {
20
+ city: string;
21
+ propertyArea: string;
22
+ historicalProtection: boolean;
23
+ basement: boolean;
24
+ balcony: boolean;
25
+ terrace: boolean;
26
+ guestBathroom: boolean;
27
+ bathrooms: string;
28
+ usableArea: string;
29
+ id: string;
30
+ rooms: string;
31
+ constructedArea: string;
32
+ title: string;
33
+ evaluation?: {
34
+ askingPrice: number;
35
+ };
36
+ expose: {
37
+ title: string;
38
+ };
39
+ pictures: { contentUrl: string }[];
40
+ };
41
+ Impliment: any;
42
+ baseUrl: string;
43
+ themesList: any;
44
+ floorPlanUrl: string;
45
+ // onMessagePopupSubmitClick: (formValues: MessageModel) => void;
46
+ messageOnClick: () => void;
47
+ onclickSuccess: () => void;
48
+ onClick: () => void;
49
+ }
50
+ export default function PropertyCard(props: PopupProps) {
51
+ const [liked, setLiked] = useState(false);
52
+ const [mainImage, setMainImage] = useState<string | null>(null);
53
+ const [currentImageIndex, setCurrentImageIndex] = useState(0);
54
+ const imageListRef = useRef<HTMLDivElement>(null);
55
+ const [floorPlan, setFloorPlan] = useState(false);
56
+ const [messagePopUp, setMessagPopUp] = useState(false);
57
+ const [sharePopUp, setSharePopUp] = useState(false);
58
+
59
+ const pictureUrls =
60
+ props.property?.pictures?.length > 0
61
+ ? props.property.pictures.map(
62
+ (picture) => `${props.baseUrl}${picture.contentUrl}`,
63
+ )
64
+ : [noImageIcon];
65
+
66
+ // setPictureUrls(pictureUrls);
67
+ const handleLike = () => {
68
+ setLiked(!liked);
69
+ };
70
+ const floorPlanOnClick = () => {
71
+ if (props.floorPlanUrl) {
72
+ setFloorPlan(true);
73
+ }
74
+ };
75
+ const handleMessagPopUp = () => {
76
+ // setMessagPopUp(true);
77
+ props.messageOnClick();
78
+ };
79
+ const handleSharePopUp = () => {
80
+ setSharePopUp(true);
81
+ };
82
+
83
+ const handleArrowClickInMainImage = (direction: string) => {
84
+ if (!props.property || pictureUrls.length === 0) return;
85
+
86
+ let newIndex = currentImageIndex;
87
+ if (direction === "left") {
88
+ newIndex =
89
+ (currentImageIndex - 1 + pictureUrls.length) % pictureUrls.length;
90
+ } else if (direction === "right") {
91
+ newIndex = (currentImageIndex + 1) % pictureUrls.length;
92
+ }
93
+
94
+ setCurrentImageIndex(newIndex);
95
+ setMainImage(pictureUrls[newIndex]);
96
+
97
+ // Ensure the ref exists before calling scrollTo
98
+ if (imageListRef.current) {
99
+ imageListRef.current.scrollTo({
100
+ left: newIndex * 150,
101
+ behavior: "smooth",
102
+ });
103
+ } else {
104
+ console.warn("imageListRef is not set");
105
+ }
106
+ };
107
+ // const boosted = "true";
108
+
109
+ return (
110
+ <div className="d-flex flex-row property-card">
111
+ <div className="d-flex flex-column col-md-6 col-lg-6">
112
+ <div
113
+ key={props.property.id}
114
+ className="card-bod position-relative cardStyles h-100 w-100"
115
+ style={{
116
+ backgroundImage: `url(${mainImage || pictureUrls[0]})`,
117
+ backgroundSize: "cover",
118
+ backgroundPosition: "center",
119
+ maxWidth: "640",
120
+ }}
121
+ >
122
+ <div className="d-flex flex-row col-12 justify-content-between ">
123
+ <div
124
+ className="d-felx align-self-start justify-items-start ms-4 "
125
+ style={{ left: "16px" }}
126
+ onClick={() => handleArrowClickInMainImage("left")}
127
+ role="button"
128
+ >
129
+ <img src={arrowLeft} />
130
+ </div>
131
+ <div></div>
132
+ <div
133
+ className="d-flex align-self-end justify-items-end me-4"
134
+ onClick={() => handleArrowClickInMainImage("right")}
135
+ role="button"
136
+ >
137
+ <img src={arrowRight} style={{ right: "16px" }} />
138
+ </div>
139
+ </div>
140
+ <div
141
+ className="d-flex flex-row align-self-end justify-item-start justify-content-between align-item-start gap-1 mb-2 ms-4"
142
+ style={{ position: "absolute", left: "0" }}
143
+ >
144
+ <div className="cardTag" style={{ marginBottom: "16px" }}>{`${
145
+ currentImageIndex + 1
146
+ }/${pictureUrls.length}`}</div>
147
+ <div
148
+ className="Grundriss kontact-button-text ms-2 "
149
+ role="button"
150
+ onClick={floorPlanOnClick}
151
+ style={{ marginBottom: "16px" }}
152
+ >
153
+ <img src={iconLayers} className="" style={{ width: "18px" }} />{" "}
154
+ Grundriss
155
+ </div>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ <div
160
+ className={`listing-compact d-flex flex-column col-6 ${
161
+ props.Impliment ? "cc-height" : "listing-height"
162
+ }`}
163
+ >
164
+ <div className="d-flex flex-column gap-3">
165
+ <div className="d-flex flex-row justify-content-between gap-2">
166
+ <span
167
+ className="propertyTitle align-items-start "
168
+ style={{
169
+ paddingLeft: "32px",
170
+ paddingTop: "32px",
171
+ }}
172
+ onClick={props.onClick}
173
+ role="button"
174
+ >
175
+ {props.property.expose?.title}
176
+ {/*Einziehen ohne einen Pinselstrich - Kernsanierte Eigentumswohnung*/}
177
+ {/*in top Lage*/}
178
+ </span>
179
+ <div
180
+ className="d-flex gap-2"
181
+ style={{
182
+ paddingRight: "32px",
183
+ paddingTop: "21px",
184
+ paddingLeft: "10px",
185
+ }}
186
+ >
187
+ <img
188
+ src={shareIcon}
189
+ alt="Share Icon"
190
+ className=" "
191
+ onClick={handleSharePopUp}
192
+ style={{ maxHeight: "24px", maxWidth: "24px" }}
193
+ role="button"
194
+ />
195
+ <img
196
+ src={moreIcon}
197
+ alt="More Icon"
198
+ className=""
199
+ style={{ maxHeight: "24px", maxWidth: "24px" }}
200
+ role="button"
201
+ />
202
+ </div>
203
+ </div>
204
+
205
+ <div
206
+ style={{
207
+ paddingLeft: "32px",
208
+ paddingRight: "32px",
209
+ }}
210
+ >
211
+ {" "}
212
+ <div className="location-wrapper">
213
+ <img
214
+ src={locationIcon}
215
+ alt="Location Icon"
216
+ className="location-icon"
217
+ />
218
+ <span className="locationTexts ">
219
+ {props.property.city || "N/A"}
220
+ </span>
221
+ </div>
222
+ </div>
223
+ </div>
224
+ <div
225
+ className="d-flex flex-row gap-3 col-6 col-lg-8 justify-content-between "
226
+ style={{
227
+ paddingLeft: "32px",
228
+ paddingRight: "32px",
229
+ }}
230
+ >
231
+ <span className="priceValue col-lg-4 col-md-4 col-sm-6 ">
232
+ {formatPrice(props.property?.evaluation?.askingPrice ?? 0)}
233
+ <div className="price_label">Kaufpreis</div>
234
+ </span>
235
+ <span className="text-dark value col-lg-5 col-md-5 col-sm-7">
236
+ {props.property.constructedArea}
237
+ <div className="details">Wohnfläche</div>
238
+ </span>
239
+ <span className="text-dark value col-lg-4 col-md-3 col-sm-6 text-truncate ">
240
+ {+props.property?.rooms}
241
+ <div className="details">Zimmer</div>
242
+ </span>
243
+ <span className="text-dark value col-lg-4 col-md-3 col-sm-4 text-truncate ">
244
+ {+props.property.propertyArea} m²
245
+ <div className="details">Grundstück</div>
246
+ </span>
247
+ </div>
248
+ <div
249
+ className="labelTopClass d-flex start-0 col-sm-5 col-lg-8 "
250
+ style={{ padding: "0 28px" }}
251
+ >
252
+ <div className=" align-items-center d-flex flex-row gap-3">
253
+ {props.property.historicalProtection && (
254
+ <label className="chipLabel justify-content-center align-items-center">
255
+ <span className="layersText">{"Denkmalschutz"}</span>
256
+ </label>
257
+ )}
258
+
259
+ {props.property.basement && (
260
+ <label className="chipLabel justify-content-center align-items-center">
261
+ <span className="layersText">{"Keller"}</span>
262
+ </label>
263
+ )}
264
+ {props.property.balcony && (
265
+ <label className="chipLabel justify-content-center align-items-center">
266
+ <span className="layersText">{"Balkon"}</span>
267
+ </label>
268
+ )}
269
+ {props.property.terrace && (
270
+ <label className="chipLabel justify-content-center align-items-center ">
271
+ <span className="layersText">{"Terrace"}</span>
272
+ </label>
273
+ )}
274
+ {props.property.guestBathroom && (
275
+ <label className="chipLabel">
276
+ <span className="layersText">{"Gäste-WC"}</span>
277
+ </label>
278
+ )}
279
+ </div>
280
+ </div>
281
+ {props.Impliment && (
282
+ <div
283
+ className=""
284
+ style={{
285
+ paddingLeft: "32px",
286
+ paddingRight: "32px",
287
+ }}
288
+ >
289
+ <div className="Frame-136 d-flex flex-row">
290
+ <div className="d-flex flex-column flex-lg-row col-4 justify-content-between ">
291
+ <img src={immooly} alt="Logo" className="immooly" />
292
+ </div>
293
+ <div className="ms-2 d-flex flex-column col-8 justify-content-center align-self-center text-center">
294
+ <span className="fw-bold">Herr Florian Gauss</span>
295
+ <span>Immogart UGh</span>
296
+ <button
297
+ className="kontactbutton text-light align-self-center"
298
+ onClick={handleMessagPopUp}
299
+ role="button"
300
+ >
301
+ <span className="kontact-button-text">
302
+ Kontakt aufnehmen{" "}
303
+ </span>
304
+ </button>
305
+ </div>
306
+ </div>
307
+ </div>
308
+ )}
309
+ {!props.Impliment && (
310
+ <div
311
+ className=""
312
+ style={{
313
+ paddingLeft: "32px",
314
+ paddingRight: "32px",
315
+ }}
316
+ >
317
+ <div className="Frame-136 d-flex flex-row">
318
+ <div className="d-flex flex-column flex-lg-row col-4 justify-content-between ">
319
+ <img src={immooly} alt="Logo" className="immooly" />
320
+ </div>
321
+ <div className="d-flex flex-column flex-lg-row justify-content-between">
322
+ <div className="d-flex flex-column col-6">
323
+ <span className="">Herr Florian Gauss</span>
324
+ <span>Immogart UGh</span>
325
+ </div>
326
+ <button
327
+ className="kontactbutton text-light "
328
+ onClick={handleMessagPopUp}
329
+ role="button"
330
+ >
331
+ <span className="kontact-button-text">
332
+ Kontakt aufnehmen{" "}
333
+ </span>
334
+ </button>
335
+ </div>
336
+ </div>
337
+ </div>
338
+ )}
339
+ </div>
340
+ {floorPlan && (
341
+ <FloorPlanPopup
342
+ contentUrl={props.floorPlanUrl}
343
+ onCloseClick={() => setFloorPlan(false)}
344
+ />
345
+ )}
346
+ {/* {messagePopUp && (
347
+ <MessagePopUp
348
+ onCloseClick={() => setMessagPopUp(false)}
349
+ sellerFirstName={props.userData?.firstname}
350
+ sellerLastName={props.userData?.lastname}
351
+ themesList={props.themesList}
352
+ onSubmit={props.onMessagePopupSubmitClick}
353
+ />
354
+ )} */}
355
+ {sharePopUp && <SharePopup onClick={() => setSharePopUp(false)} />}
356
+ </div>
357
+ );
358
+ }