@lanaco/lnc-react-ui 4.0.146 → 4.0.147

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.
@@ -1,579 +0,0 @@
1
- import { jsxs as n, jsx as e, Fragment as P } from "react/jsx-runtime";
2
- import { forwardRef as M, useState as A, useRef as Y, useEffect as we, cloneElement as K, Suspense as be } from "react";
3
- import { p as ke, t as H, o as k, l as Z, q as J, G as Q, k as ye } from "./utils-BdsZgOUE.js";
4
- import { s as $ } from "./emotion-styled.browser.esm-BNN1dTl3.js";
5
- import { P as _e } from "./index-CF3HhgvN.js";
6
- import C from "./Badge.js";
7
- import Ne from "./Popover.js";
8
- import Ce from "./PopoverTrigger.js";
9
- import Pe from "./PopoverContent.js";
10
- import { u as $e } from "./useDetectMobile-Bkvj0VMa.js";
11
- import { M as x } from "./consts-BuFChS64.js";
12
- const ee = $.div`
13
- display: flex;
14
- flex-direction: column;
15
- gap: 0.5rem;
16
- cursor: pointer;
17
- overflow: hidden;
18
- width: 100%;
19
-
20
- & .wrapper-card-1 {
21
- display: flex;
22
- flex-direction: column;
23
- gap: 0.38rem;
24
- }
25
-
26
- & .wrapper-card-2 {
27
- display: flex;
28
- flex-direction: column;
29
- gap: 0;
30
- }
31
-
32
- & .wrapper-card-3 {
33
- display: flex;
34
- flex-wrap: wrap;
35
- gap: 0.25rem;
36
-
37
- & > div {
38
- & > div {
39
- width: 100% !important;
40
- }
41
- }
42
- }
43
-
44
- & .tag {
45
- height: 1.5rem;
46
- gap: 0.25rem;
47
- padding: 0.25rem 0.375rem;
48
- border-radius: 0.375rem;
49
- background: #f9fafb;
50
- border: 1px solid var(--gray-95012, #14161a1f);
51
- font-weight: 400;
52
- font-size: 0.75rem;
53
- line-height: 1rem;
54
- letter-spacing: 0.025rem;
55
- color: var(--gray-950, #14161a);
56
- white-space: nowrap;
57
- flex: 0 0 auto;
58
-
59
- &.tag-sponsored {
60
- & i {
61
- color: var(--yellow-500, #f59e0b);
62
- }
63
- }
64
- }
65
-
66
- & .tag-mobile {
67
- font-weight: 400;
68
- font-size: 0.75rem;
69
- line-height: 1rem;
70
- letter-spacing: 0.025rem;
71
- color: var(--gray-600, #676e79);
72
- }
73
-
74
- & .card-title {
75
- font-size: 0.875rem;
76
- font-weight: 600;
77
- ${ke(2)}
78
- }
79
-
80
- & .price-text {
81
- font-size: 1rem;
82
- font-weight: 600;
83
- ${H()}
84
- display: flex;
85
- align-items: end;
86
- gap: 0.5rem;
87
- color: var(--gray-950, #14161a);
88
-
89
- &.new-price {
90
- color: var(--danger-600, #e11d48);
91
- }
92
-
93
- & .full-price {
94
- text-decoration: line-through;
95
- font-size: 0.75rem;
96
- font-weight: 400;
97
- padding-bottom: 0.125rem;
98
- color: var(--gray-600, #676e79);
99
- }
100
- }
101
-
102
- & .location-text {
103
- font-size: 0.75rem;
104
- font-weight: 400;
105
- color: var(--gray-600, #676e79);
106
- ${H()}
107
- }
108
-
109
- & .tags-wrapper {
110
- display: flex;
111
- gap: 0.5rem;
112
- }
113
-
114
- & .skeleton-img {
115
- background-color: ${k("-90deg")};
116
- border-radius: 0.75rem;
117
- border: 1px solid white;
118
- }
119
-
120
- & .skeleton-title {
121
- background-color: ${k("-90deg")};
122
- width: 100%;
123
- height: 2.5rem;
124
- }
125
-
126
- & .skeleton-tags {
127
- background-color: ${k("-90deg")};
128
- width: 80%;
129
- height: 1.5rem;
130
- }
131
-
132
- & .skeleton-price {
133
- background-color: ${k("-90deg")};
134
- width: 50%;
135
- height: 2.5rem;
136
- }
137
-
138
- & .skeleton-sponsored {
139
- background-color: ${k("-90deg")};
140
- width: 50%;
141
- height: 1rem;
142
- }
143
-
144
- & .tags-popover__trigger {
145
- display: flex;
146
- gap: 0.25rem;
147
- }
148
-
149
- @media (max-width: ${x + "px"}) {
150
- overflow: visible;
151
-
152
- & .tags-popover__trigger {
153
- flex-wrap: wrap;
154
- }
155
-
156
- & .price-text {
157
- font-size: 0.875rem;
158
- font-weight: 600;
159
-
160
- & .full-price {
161
- display: none;
162
- }
163
- }
164
- }
165
-
166
- &:hover .product-image-wrapper img {
167
- transform: scale(1.1);
168
- }
169
- `, Te = $.div`
170
- position: relative;
171
- overflow: hidden;
172
- border-radius: 0.75rem;
173
- width: 100%;
174
- aspect-ratio: 1 / 1;
175
- border: 1px solid #0c15201f;
176
-
177
- & .bookmarking-btn {
178
- position: absolute;
179
- right: 0.5rem;
180
- top: 0.5rem;
181
- z-index: 1;
182
-
183
- display: none;
184
- }
185
-
186
- &:hover {
187
- & .bookmarking-btn {
188
- display: flex;
189
- }
190
- }
191
-
192
- & img {
193
- display: block;
194
- width: 100%;
195
- height: 100%;
196
- object-fit: cover;
197
- border-radius: 0.75rem;
198
- transition: var(--transition, all 0.3s ease);
199
- }
200
-
201
- @media (max-width: ${x + "px"}) {
202
- & img {
203
- width: 8.875rem;
204
- height: 8.875rem;
205
- min-width: 8.875rem;
206
- min-height: 8.875rem;
207
- object-fit: cover;
208
- }
209
-
210
- & .bookmarking-btn {
211
- display: flex;
212
- }
213
- }
214
- `, Ee = $.div`
215
- background: var(--white, #fff);
216
- z-index: 1;
217
-
218
- border: 1px solid var(--gray-200, #dddfe4);
219
- border-radius: 0.5rem;
220
- line-height: 1rem;
221
- position: absolute;
222
- padding: 0.5rem 0.75rem;
223
- top: 0.5rem;
224
- left: 25%;
225
- transform: translateX(-50%);
226
- min-width: 13rem;
227
-
228
- &::before,
229
- &::after {
230
- content: "";
231
- position: absolute;
232
- left: 50%;
233
- transform: translateX(-50%);
234
- border-style: solid;
235
- border-width: 0.625rem;
236
- }
237
-
238
- &::after {
239
- top: -1.1875rem;
240
- border-color: transparent transparent var(--white, #fff) transparent;
241
- }
242
-
243
- &::before {
244
- top: -1.25rem;
245
- border-color: transparent transparent var(--gray-200, #dddfe4) transparent;
246
- }
247
-
248
- & .tags-popover__content {
249
- display: flex;
250
- flex-wrap: wrap;
251
- flex-direction: column;
252
- gap: 0.375rem;
253
- font-size: 0.75rem;
254
- font-weight: 400;
255
-
256
- & .tags-popover__name {
257
- color: var(--gray-600, #676e79);
258
- }
259
-
260
- & .tags-popover__value {
261
- color: var(--gray-950, #14161a);
262
- }
263
- }
264
- `, Ve = $.div`
265
- display: flex;
266
- align-items: center;
267
- gap: 0.25rem;
268
- color: var(--gray-500);
269
- font-size: 0.75rem;
270
- font-weight: 500;
271
-
272
- & i {
273
- font-size: 1rem;
274
- color: var(--warning-500, #F59E0B);
275
- }
276
- `, Oe = M(({ sponsoredText: m = "Sponsored" }, v) => /* @__PURE__ */ n(Ve, { ref: v, className: "sponsored-line", children: [
277
- /* @__PURE__ */ e("i", { className: "mng-lnc-paw2" }),
278
- /* @__PURE__ */ e("span", { children: m })
279
- ] })), Se = "Vehicles_Cars", ze = "Vehicles_Motorcycles", Be = "Vehicles_Trucks", Me = "Vehicles_AgriculturalMachines_Tractors", We = "Vehicles_ConstructionMachines", Fe = "Vehicles_Bus", De = "Vehicles_Campers", Ie = "RealEstates_", i = {
280
- Mileage: {
281
- icon: "mng-lnc-road",
282
- measure: "km"
283
- },
284
- YearOfProduction: {
285
- icon: "mng-lnc-calendar",
286
- measure: ""
287
- },
288
- Fuel: {
289
- icon: "mng-lnc-gas-station",
290
- measure: ""
291
- },
292
- EnginePowerKW: {
293
- icon: "mng-lnc-engine",
294
- measure: "kW"
295
- },
296
- Transmission: {
297
- icon: "mng-lnc-transmission",
298
- measure: ""
299
- },
300
- Model: {
301
- icon: "mng-lnc-application",
302
- measure: ""
303
- },
304
- Brand: {
305
- icon: "mng-lnc-car--front",
306
- measure: ""
307
- },
308
- SurfaceArea: {
309
- icon: "mng-lnc-right-angle",
310
- measure: ""
311
- },
312
- Floor: {
313
- icon: "mng-lnc-elevator",
314
- measure: ""
315
- },
316
- FurnishedCondition: {
317
- icon: "mng-lnc-sofa-01",
318
- measure: ""
319
- },
320
- AdType: {
321
- icon: "mng-lnc-notes",
322
- measure: ""
323
- },
324
- NumberOfRooms: {
325
- icon: "mng-lnc-meeting-room",
326
- measure: ""
327
- },
328
- HeatingType: {
329
- icon: "mng-lnc-heat",
330
- measure: ""
331
- },
332
- AirConditioning: {
333
- icon: "mng-lnc-air-conditioner",
334
- measure: ""
335
- },
336
- Type: {
337
- icon: "mng-lnc-house-building",
338
- measure: ""
339
- },
340
- Parking: {
341
- icon: "mng-lnc-parking-area-circle",
342
- measure: ""
343
- },
344
- Internet: {
345
- icon: "mng-lnc-wifi-02",
346
- measure: ""
347
- },
348
- State: {
349
- icon: "mng-lnc-settings-1",
350
- measure: ""
351
- },
352
- NumberOfPremises: {
353
- icon: "mng-lnc-meeting-room",
354
- measure: ""
355
- },
356
- Pool: {
357
- icon: "mng-lnc-pool",
358
- measure: ""
359
- },
360
- Approach: {
361
- icon: "mng-lnc-driveway",
362
- measure: ""
363
- },
364
- NumberOfBeds: {
365
- icon: "mng-lnc-bed",
366
- measure: ""
367
- },
368
- Kitchen: {
369
- icon: "mng-lnc-fridge",
370
- measure: ""
371
- },
372
- BathroomToilet: {
373
- icon: "mng-lnc-bath",
374
- measure: ""
375
- },
376
- default: {
377
- icon: " mng-lnc-clock--filled",
378
- measure: ""
379
- }
380
- }, xe = M((m, v) => {
381
- const {
382
- uuid: p,
383
- name: y,
384
- price: u = 0,
385
- sellingPrice: _,
386
- currency: N,
387
- isNegotiable: T,
388
- isFree: E,
389
- imageUrl: re,
390
- location: oe,
391
- sponsored: W,
392
- imageComponent: F,
393
- onSelectCard: ne = () => {
394
- },
395
- freeText: te = "Free",
396
- negotiableText: ae = "Negotiable",
397
- tags: a = [],
398
- categoryCode: V,
399
- condition: O,
400
- quantity: S,
401
- trade: z,
402
- sponsoredText: ie,
403
- onBookmark: D = () => {
404
- },
405
- bookmarkComponent: w,
406
- bookmarked: I,
407
- bookmarkLists: se
408
- } = m, B = $e(), ce = () => {
409
- var c;
410
- if (!Z(w)) return /* @__PURE__ */ e(P, {});
411
- const r = w, o = (c = w == null ? void 0 : w.props) == null ? void 0 : c.children, t = K(o, {
412
- key: `bookmark_pr__${I}`,
413
- bookmarked: I,
414
- productUuid: p,
415
- onAddToBookmark: () => D(!0, p),
416
- onRemoveFromBookmark: () => D(!1, p),
417
- bookmarkedUuidList: se
418
- });
419
- return K(r, void 0, t);
420
- }, j = [
421
- Se,
422
- ze,
423
- Be,
424
- Me,
425
- We,
426
- Fe,
427
- De,
428
- Ie
429
- ].some(
430
- (r) => V == null ? void 0 : V.includes(r)
431
- ), [le, G] = A(!1), de = () => {
432
- G(!0);
433
- }, me = () => {
434
- G(!1);
435
- }, s = Y(null), h = Y([]), [R, pe] = A(a == null ? void 0 : a.length), ge = () => {
436
- var c, l, b;
437
- if (!(s != null && s.current) || ((c = h == null ? void 0 : h.current) == null ? void 0 : c.length) === 0) return;
438
- const r = (l = s == null ? void 0 : s.current) == null ? void 0 : l.offsetWidth;
439
- let o = 0, t = 0;
440
- for (let d = 0; d < (a == null ? void 0 : a.length); d++) {
441
- const f = ((b = h == null ? void 0 : h.current[d]) == null ? void 0 : b.offsetWidth) || 0, g = o + f + 4;
442
- if (g <= r)
443
- o += g, t++;
444
- else
445
- break;
446
- }
447
- pe(t);
448
- };
449
- we(() => {
450
- const r = s == null ? void 0 : s.current;
451
- if (!r) return;
452
- const o = new ResizeObserver(() => {
453
- ge();
454
- });
455
- return o.observe(r), () => {
456
- o.disconnect();
457
- };
458
- }, [a]);
459
- const ue = () => {
460
- var r;
461
- return /* @__PURE__ */ e("div", { className: "tags-popover__trigger", children: (r = a == null ? void 0 : a.slice(0, R)) == null ? void 0 : r.map((o, t) => {
462
- var f, g, X, L, q;
463
- const c = ((f = i == null ? void 0 : i[o == null ? void 0 : o.code]) == null ? void 0 : f.icon) ?? ((g = i == null ? void 0 : i.default) == null ? void 0 : g.icon) ?? "", l = ((X = o == null ? void 0 : o.measurementUnit) == null ? void 0 : X.symbol) ?? ((L = i == null ? void 0 : i[o == null ? void 0 : o.code]) == null ? void 0 : L.measure) ?? "", d = [(o == null ? void 0 : o.value) ?? ((q = o == null ? void 0 : o.multiOptions) == null ? void 0 : q[0]) ?? "", l].filter(Boolean).join(" ");
464
- return B ? /* @__PURE__ */ n("div", { className: "tag-mobile", children: [
465
- d,
466
- t < R - 1 ? " · " : ""
467
- ] }) : /* @__PURE__ */ n(
468
- C,
469
- {
470
- ref: (ve) => h.current[t] = ve,
471
- className: `tag ${W ? "tag-sponsored" : ""}`,
472
- children: [
473
- /* @__PURE__ */ e("i", { className: c }),
474
- d
475
- ]
476
- },
477
- `detailed-products-section-tag__${t + 1}`
478
- );
479
- }) });
480
- }, he = () => /* @__PURE__ */ e("div", { className: "tags-popover__content", children: a == null ? void 0 : a.map((r, o) => {
481
- var d, f, g;
482
- const t = ((d = r == null ? void 0 : r.measurementUnit) == null ? void 0 : d.symbol) ?? ((f = i == null ? void 0 : i[r == null ? void 0 : r.code]) == null ? void 0 : f.measure) ?? "", l = [(r == null ? void 0 : r.value) ?? ((g = r == null ? void 0 : r.multiOptions) == null ? void 0 : g[0]) ?? "", t].filter(Boolean).join(" "), b = r == null ? void 0 : r.name;
483
- return /* @__PURE__ */ n("div", { children: [
484
- /* @__PURE__ */ e("span", { className: "tags-popover__name", children: `${b}: ` }),
485
- /* @__PURE__ */ e("span", { className: "tags-popover__value", children: l })
486
- ] }, `detailed-products-section-tag-dropdown__${o + 1}`);
487
- }) }), fe = () => {
488
- var r;
489
- if (B) {
490
- const o = [O, S, z];
491
- return (r = o == null ? void 0 : o.filter((t) => ye(t))) == null ? void 0 : r.map((t, c, l) => /* @__PURE__ */ n("div", { className: "tag-mobile", children: [
492
- t,
493
- c < (l == null ? void 0 : l.length) - 1 ? " · " : ""
494
- ] }));
495
- }
496
- return /* @__PURE__ */ n(P, { children: [
497
- O && /* @__PURE__ */ e(C, { className: "tag", children: O }, "detailed-products-section-tag__condition"),
498
- S && /* @__PURE__ */ e(C, { className: "tag", children: S }, "detailed-products-section-tag__quantity"),
499
- z && /* @__PURE__ */ e(C, { className: "tag", children: z }, "detailed-products-section-tag__trade")
500
- ] });
501
- }, U = u > 0 && N && T !== !0 && E !== !0 && u !== _;
502
- return (
503
- // <LandingPageProductCardSkeleton />
504
- /* @__PURE__ */ n(
505
- ee,
506
- {
507
- ref: s,
508
- className: "product-card",
509
- onClick: ne,
510
- children: [
511
- /* @__PURE__ */ n(Te, { className: "product-image-wrapper", children: [
512
- /* @__PURE__ */ e(ce, {}),
513
- Z(F) ? F : /* @__PURE__ */ e(_e, { src: re })
514
- ] }),
515
- /* @__PURE__ */ e("div", { className: "wrapper-card-1", children: /* @__PURE__ */ e("div", { className: "card-title", children: y }) }),
516
- /* @__PURE__ */ n("div", { className: "wrapper-card-3", children: [
517
- j && /* @__PURE__ */ e(
518
- "div",
519
- {
520
- ...B ? {} : {
521
- onMouseEnter: de,
522
- onMouseLeave: me
523
- },
524
- children: /* @__PURE__ */ n(Ne, { placement: "bottom", open: le, children: [
525
- /* @__PURE__ */ e(Ce, { children: ue() }),
526
- /* @__PURE__ */ e(Pe, { style: { all: "unset" }, children: /* @__PURE__ */ e(Ee, { children: he() }) })
527
- ] })
528
- }
529
- ),
530
- !j && fe()
531
- ] }),
532
- /* @__PURE__ */ n("div", { className: "wrapper-card-2", children: [
533
- /* @__PURE__ */ n("div", { className: `price-text ${U ? "new-price" : ""}`, children: [
534
- _ > 0 && N && T !== !0 && E !== !0 && /* @__PURE__ */ e("div", { children: `${J(_)} ${Q(N)}` }),
535
- U && /* @__PURE__ */ e("div", { className: `${_ > 0 ? "full-price" : ""}`, children: `${J(u)} ${Q(N)}` }),
536
- T && ae,
537
- E && te
538
- ] }),
539
- /* @__PURE__ */ e("div", { className: "location-text", children: oe })
540
- ] }),
541
- W === !0 && /* @__PURE__ */ e(Oe, { sponsoredText: ie })
542
- ]
543
- }
544
- )
545
- );
546
- }), je = M(({}, m) => /* @__PURE__ */ n(ee, { className: "product-card", children: [
547
- /* @__PURE__ */ e("img", { className: "skeleton-img" }),
548
- /* @__PURE__ */ n("div", { className: "wrapper-card-1", children: [
549
- /* @__PURE__ */ e("div", { className: "skeleton-title" }),
550
- /* @__PURE__ */ e("div", { className: "skeleton-tags" })
551
- ] }),
552
- /* @__PURE__ */ n("div", { className: "wrapper-card-1", children: [
553
- /* @__PURE__ */ e("div", { className: "skeleton-price" }),
554
- /* @__PURE__ */ e("div", { className: "skeleton-sponsored" })
555
- ] })
556
- ] })), Ge = ({ limit: m = 5, isLoading: v = !1, keyPrefix: p }) => /* @__PURE__ */ e(P, { children: Array.from({ length: m }, (y, u) => /* @__PURE__ */ e(
557
- je,
558
- {
559
- isLoading: v
560
- },
561
- `${p}-skeleton-product-card-${u}`
562
- )) }), er = ({
563
- children: m,
564
- fallbackComponent: v = /* @__PURE__ */ e(P, {}),
565
- isLoading: p = !1,
566
- limit: y,
567
- keyPrefix: u
568
- }) => /* @__PURE__ */ e(be, { fallbackComponent: v, children: p === !0 ? /* @__PURE__ */ e(
569
- Ge,
570
- {
571
- isLoading: p,
572
- limit: y,
573
- keyPrefix: u
574
- }
575
- ) : m });
576
- export {
577
- xe as D,
578
- er as S
579
- };