@bytebrand/fe-ui-core-autobahn 1.0.141 → 1.0.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.
- package/package.json +1 -1
- package/theme/md3.css +7 -7
- package/vdp/VdpModules.tsx +252 -187
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bytebrand/fe-ui-core-autobahn",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.142",
|
|
4
4
|
"description": "auto.de md3 (Autobahn) design system — UI primitives, cards, chrome, VDP modules, theme CSS and locales. Ships raw TypeScript source (like fe-ui-core before it); each consumer's bundler compiles it.",
|
|
5
5
|
"main": "index.ts",
|
|
6
6
|
"license": "UNLICENSED",
|
package/theme/md3.css
CHANGED
|
@@ -6544,15 +6544,15 @@ line-height: 31px;
|
|
|
6544
6544
|
align-items: flex-end;
|
|
6545
6545
|
padding: 0;
|
|
6546
6546
|
}
|
|
6547
|
-
/* one fixed height, whatever is inside
|
|
6548
|
-
the
|
|
6549
|
-
|
|
6550
|
-
|
|
6551
|
-
|
|
6547
|
+
/* one fixed height (the original 85vh look), whatever is inside — collapsed rate controls,
|
|
6548
|
+
the expanded details, or the Kaufen tab. Opening "Finanzierungs-Details" no longer grows the
|
|
6549
|
+
sheet (was min-height 85vh -> 100vh, which jumped it over the page header and, on iOS
|
|
6550
|
+
Safari where 100vh > the visible area, pushed its top off-screen); the details scroll
|
|
6551
|
+
inside instead. max-height caps it to the fixed inset:0 scrim's CURRENT visible height. */
|
|
6552
6552
|
.md3 .fin-modal {
|
|
6553
6553
|
max-width: none;
|
|
6554
|
-
height:
|
|
6555
|
-
max-height:
|
|
6554
|
+
height: 85vh;
|
|
6555
|
+
max-height: calc(100% - 24px);
|
|
6556
6556
|
background: #FFFFFF;
|
|
6557
6557
|
box-shadow: 0px -4px 18px rgba(0, 0, 0, 0.13);
|
|
6558
6558
|
border-radius: 26px 26px 0px 0px;
|
package/vdp/VdpModules.tsx
CHANGED
|
@@ -2216,16 +2216,19 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
|
|
|
2216
2216
|
// modal's mobile "Rate anpassen" sheet renders its own separate copy of that hero row, so it
|
|
2217
2217
|
// needs its own tooltip-open state (not shared with FinanceCalculator's instance).
|
|
2218
2218
|
const [uvpTooltipOpen, setUvpTooltipOpen] = React.useState(false);
|
|
2219
|
-
//
|
|
2220
|
-
//
|
|
2221
|
-
//
|
|
2222
|
-
|
|
2219
|
+
// mobile-only: the Finanzierungs-/Leasingdetails breakdown starts collapsed (opened via "Rate
|
|
2220
|
+
// anpassen") or expanded (opened directly via the page's details link) — reset on every open,
|
|
2221
|
+
// since this component stays mounted (the page always renders it, gated by `open`).
|
|
2222
|
+
const [showBreakdown, setShowBreakdown] = React.useState(!!initialShowBreakdown);
|
|
2223
|
+
// Desktop always shows the breakdown inline but it can sit below the fold of .fin-modal-body's
|
|
2224
|
+
// own scroll area too — whichever of the two refs is actually visible (show-mobile/hide-mobile
|
|
2225
|
+
// via CSS) is the one scrolled to.
|
|
2223
2226
|
const desktopBreakdownRef = React.useRef<HTMLDivElement | null>(null);
|
|
2224
2227
|
const mobileBreakdownRef = React.useRef<HTMLDivElement | null>(null);
|
|
2225
|
-
// mobile: the breakdown
|
|
2226
|
-
//
|
|
2227
|
-
//
|
|
2228
|
-
//
|
|
2228
|
+
// mobile (ADV-276): revealing the breakdown scrolls the sheet body until the "Repräsentatives
|
|
2229
|
+
// Beispiel" headline sits at its top — not all the way down to the CTA row under the breakdown.
|
|
2230
|
+
// The sheet keeps its fixed height (see .fin-modal in md3.css), so nothing jumps; only the
|
|
2231
|
+
// body scrolls. Hand-rolled rAF ease-out so the duration is ours, not the browser's.
|
|
2229
2232
|
const breakdownScrollRaf = React.useRef(0);
|
|
2230
2233
|
const scrollSheetToBreakdown = React.useCallback((): void => {
|
|
2231
2234
|
const el = mobileBreakdownRef.current;
|
|
@@ -2247,14 +2250,25 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
|
|
|
2247
2250
|
breakdownScrollRaf.current = window.requestAnimationFrame(step);
|
|
2248
2251
|
}, []);
|
|
2249
2252
|
React.useEffect(() => () => window.cancelAnimationFrame(breakdownScrollRaf.current), []);
|
|
2253
|
+
// opened directly via the page's details link: open expanded and scrolled to the breakdown.
|
|
2250
2254
|
React.useEffect(() => {
|
|
2251
|
-
if (!open
|
|
2255
|
+
if (!open) return;
|
|
2256
|
+
setShowBreakdown(!!initialShowBreakdown);
|
|
2257
|
+
if (!initialShowBreakdown) return;
|
|
2252
2258
|
const timer = window.setTimeout(() => {
|
|
2253
2259
|
if (mobileBreakdownRef.current?.offsetParent) scrollSheetToBreakdown();
|
|
2254
2260
|
else desktopBreakdownRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
2255
2261
|
}, 50);
|
|
2256
2262
|
return () => window.clearTimeout(timer);
|
|
2257
|
-
|
|
2263
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2264
|
+
}, [open, initialShowBreakdown]);
|
|
2265
|
+
// in-sheet details toggle: scroll once the expanded breakdown has rendered. Collapsing doesn't scroll.
|
|
2266
|
+
const revealBreakdownRef = React.useRef(false);
|
|
2267
|
+
React.useEffect(() => {
|
|
2268
|
+
if (!showBreakdown || !revealBreakdownRef.current) return;
|
|
2269
|
+
revealBreakdownRef.current = false;
|
|
2270
|
+
scrollSheetToBreakdown();
|
|
2271
|
+
}, [showBreakdown, scrollSheetToBreakdown]);
|
|
2258
2272
|
|
|
2259
2273
|
// mobile-only: swipe-down-to-dismiss on the grabber/header (the mockup's drag handle).
|
|
2260
2274
|
// The sheet follows the finger (imperative transform — no re-renders while dragging);
|
|
@@ -3429,7 +3443,10 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
|
|
|
3429
3443
|
{/* centered ⓘ details link (mockup shows no chevron) — scrolls to the breakdown below */}
|
|
3430
3444
|
<button
|
|
3431
3445
|
type="button"
|
|
3432
|
-
onClick={
|
|
3446
|
+
onClick={() => {
|
|
3447
|
+
revealBreakdownRef.current = !showBreakdown;
|
|
3448
|
+
setShowBreakdown((v) => !v);
|
|
3449
|
+
}}
|
|
3433
3450
|
style={{ ...expanderBtnStyle, justifyContent: 'center', padding: '2px 0 20px' }}>
|
|
3434
3451
|
<span
|
|
3435
3452
|
style={{
|
|
@@ -3447,86 +3464,58 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
|
|
|
3447
3464
|
{isLease ? t('autobahn:modal.leasingDetails') : t('autobahn:modal.financingDetails')}
|
|
3448
3465
|
</span>
|
|
3449
3466
|
</button>
|
|
3450
|
-
{/* same row-by-row breakdown
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3454
|
-
style={{
|
|
3455
|
-
|
|
3456
|
-
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
alignItems: 'flex-start',
|
|
3486
|
-
gap: 10,
|
|
3487
|
-
background: '#FAFBFD',
|
|
3488
|
-
border: '1px solid #D4DDE7',
|
|
3489
|
-
borderRadius: 6,
|
|
3490
|
-
padding: 10,
|
|
3491
|
-
marginBottom: 10,
|
|
3492
|
-
}}
|
|
3493
|
-
>
|
|
3494
|
-
<svg width="27" height="27" viewBox="0 0 27 27" fill="none" xmlns="http://www.w3.org/2000/svg" style={{ flex: 'none' }}>
|
|
3495
|
-
<path d="M2.7002 9.00001L13.5002 3.60001L24.3002 9.00001H2.7002Z" stroke="#0E2238" strokeWidth="1.6" strokeLinejoin="round" />
|
|
3496
|
-
<path d="M4.49961 10.8H22.4996M5.39961 21.6H21.5996M3.59961 24.3H23.3996" stroke="#0E2238" strokeWidth="1.6" strokeLinecap="round" />
|
|
3497
|
-
<path d="M7.2002 10.8V21.6M11.7002 10.8V21.6M15.3002 10.8V21.6M19.8002 10.8V21.6" stroke="#0E2238" strokeWidth="1.6" />
|
|
3498
|
-
</svg>
|
|
3499
|
-
<div style={{ width: '100%' }}>
|
|
3500
|
-
<p
|
|
3501
|
-
style={{
|
|
3502
|
-
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3503
|
-
fontWeight: 700,
|
|
3504
|
-
fontSize: 14,
|
|
3505
|
-
lineHeight: '13px',
|
|
3506
|
-
color: '#0E2238',
|
|
3507
|
-
margin: 0,
|
|
3508
|
-
marginBottom: 3,
|
|
3509
|
-
}}
|
|
3510
|
-
>
|
|
3511
|
-
{isLease ? t('autobahn:modal.leaseLenderLabel') : t('autobahn:modal.lenderLabel')}
|
|
3512
|
-
</p>
|
|
3513
|
-
<p
|
|
3467
|
+
{/* mobile "Finanzierungsdetails" toggle reveals the same row-by-row breakdown
|
|
3468
|
+
table as desktop (breakdownRows, built once above). */}
|
|
3469
|
+
{showBreakdown && (
|
|
3470
|
+
<>
|
|
3471
|
+
<div ref={mobileBreakdownRef} style={{ marginBottom: 5 }}>
|
|
3472
|
+
<p
|
|
3473
|
+
style={{
|
|
3474
|
+
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3475
|
+
fontWeight: 700,
|
|
3476
|
+
fontSize: 16,
|
|
3477
|
+
lineHeight: '18px',
|
|
3478
|
+
color: '#0E2238',
|
|
3479
|
+
margin: 0,
|
|
3480
|
+
marginBottom: 5,
|
|
3481
|
+
paddingTop: 10,
|
|
3482
|
+
borderTop: '1px solid rgba(212, 221, 231, 0.95)',
|
|
3483
|
+
}}
|
|
3484
|
+
>
|
|
3485
|
+
{t('autobahn:modal.representativeExample')}
|
|
3486
|
+
</p>
|
|
3487
|
+
<p
|
|
3488
|
+
style={{
|
|
3489
|
+
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3490
|
+
fontWeight: 700,
|
|
3491
|
+
fontSize: 9,
|
|
3492
|
+
lineHeight: '12px',
|
|
3493
|
+
color: '#5B6B7F',
|
|
3494
|
+
marginBottom: 5,
|
|
3495
|
+
}}
|
|
3496
|
+
>
|
|
3497
|
+
{t('autobahn:modal.vatDisclaimer')}
|
|
3498
|
+
</p>
|
|
3499
|
+
{breakdownRows}
|
|
3500
|
+
</div>
|
|
3501
|
+
<div
|
|
3514
3502
|
style={{
|
|
3515
|
-
|
|
3516
|
-
|
|
3517
|
-
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
|
|
3503
|
+
display: 'flex',
|
|
3504
|
+
alignItems: 'flex-start',
|
|
3505
|
+
gap: 10,
|
|
3506
|
+
background: '#FAFBFD',
|
|
3507
|
+
border: '1px solid #D4DDE7',
|
|
3508
|
+
borderRadius: 6,
|
|
3509
|
+
padding: 10,
|
|
3510
|
+
marginBottom: 10,
|
|
3521
3511
|
}}
|
|
3522
3512
|
>
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
<div style={{ height: 1, background: '#D6DEE8', margin: '8px 0' }} />
|
|
3513
|
+
<svg width="27" height="27" viewBox="0 0 27 27" fill="none" xmlns="http://www.w3.org/2000/svg" style={{ flex: 'none' }}>
|
|
3514
|
+
<path d="M2.7002 9.00001L13.5002 3.60001L24.3002 9.00001H2.7002Z" stroke="#0E2238" strokeWidth="1.6" strokeLinejoin="round" />
|
|
3515
|
+
<path d="M4.49961 10.8H22.4996M5.39961 21.6H21.5996M3.59961 24.3H23.3996" stroke="#0E2238" strokeWidth="1.6" strokeLinecap="round" />
|
|
3516
|
+
<path d="M7.2002 10.8V21.6M11.7002 10.8V21.6M15.3002 10.8V21.6M19.8002 10.8V21.6" stroke="#0E2238" strokeWidth="1.6" />
|
|
3517
|
+
</svg>
|
|
3518
|
+
<div style={{ width: '100%' }}>
|
|
3530
3519
|
<p
|
|
3531
3520
|
style={{
|
|
3532
3521
|
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
@@ -3538,7 +3527,7 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
|
|
|
3538
3527
|
marginBottom: 3,
|
|
3539
3528
|
}}
|
|
3540
3529
|
>
|
|
3541
|
-
{t('autobahn:modal.
|
|
3530
|
+
{isLease ? t('autobahn:modal.leaseLenderLabel') : t('autobahn:modal.lenderLabel')}
|
|
3542
3531
|
</p>
|
|
3543
3532
|
<p
|
|
3544
3533
|
style={{
|
|
@@ -3550,122 +3539,198 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
|
|
|
3550
3539
|
margin: 0,
|
|
3551
3540
|
}}
|
|
3552
3541
|
>
|
|
3553
|
-
{t('autobahn:modal.
|
|
3542
|
+
{lenderName || (isLease ? t('autobahn:modal.leaseLenderName') : t('autobahn:modal.lenderName'))}
|
|
3554
3543
|
</p>
|
|
3555
|
-
|
|
3544
|
+
{/* leasing's Darlehensgeber-style card also discloses the contract type
|
|
3545
|
+
(Figma: "Vertragsart: Restwertleasing"), split off by its own divider */}
|
|
3546
|
+
{isLease && (
|
|
3547
|
+
<>
|
|
3548
|
+
<div style={{ height: 1, background: '#D6DEE8', margin: '8px 0' }} />
|
|
3549
|
+
<p
|
|
3550
|
+
style={{
|
|
3551
|
+
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3552
|
+
fontWeight: 700,
|
|
3553
|
+
fontSize: 14,
|
|
3554
|
+
lineHeight: '13px',
|
|
3555
|
+
color: '#0E2238',
|
|
3556
|
+
margin: 0,
|
|
3557
|
+
marginBottom: 3,
|
|
3558
|
+
}}
|
|
3559
|
+
>
|
|
3560
|
+
{t('autobahn:modal.contractTypeLabel')}
|
|
3561
|
+
</p>
|
|
3562
|
+
<p
|
|
3563
|
+
style={{
|
|
3564
|
+
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3565
|
+
fontWeight: 400,
|
|
3566
|
+
fontSize: 12,
|
|
3567
|
+
lineHeight: '13px',
|
|
3568
|
+
color: '#0E2238',
|
|
3569
|
+
margin: 0,
|
|
3570
|
+
}}
|
|
3571
|
+
>
|
|
3572
|
+
{t('autobahn:modal.contractTypeValue')}
|
|
3573
|
+
</p>
|
|
3574
|
+
</>
|
|
3575
|
+
)}
|
|
3576
|
+
</div>
|
|
3577
|
+
</div>
|
|
3578
|
+
{/* leasing-only mandatory-package disclosure (Figma "Hinweisbox") — the
|
|
3579
|
+
Rundum-Sorglos-Paket is compulsory for leasing (unlike financing, where
|
|
3580
|
+
it's an optional add-on), so it gets its own callout instead of a bullet. */}
|
|
3581
|
+
{isLease && hasAddServicesRow && (
|
|
3582
|
+
<div
|
|
3583
|
+
style={{
|
|
3584
|
+
display: 'flex',
|
|
3585
|
+
alignItems: 'flex-start',
|
|
3586
|
+
gap: 10,
|
|
3587
|
+
background: '#F7FAFE',
|
|
3588
|
+
border: '0.5px solid #D6DEE8',
|
|
3589
|
+
borderRadius: 5,
|
|
3590
|
+
padding: '7px 8px',
|
|
3591
|
+
marginBottom: 10,
|
|
3592
|
+
}}
|
|
3593
|
+
>
|
|
3594
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style={{ flex: 'none', marginTop: 2 }}>
|
|
3595
|
+
<circle cx="12" cy="12" r="10" stroke="#0E2238" strokeWidth="1.6" />
|
|
3596
|
+
<path d="M12 16v-4" stroke="#0E2238" strokeWidth="1.6" strokeLinecap="round" />
|
|
3597
|
+
<path d="M12 8h.01" stroke="#0E2238" strokeWidth="1.6" strokeLinecap="round" />
|
|
3598
|
+
</svg>
|
|
3599
|
+
<p
|
|
3600
|
+
style={{
|
|
3601
|
+
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3602
|
+
fontWeight: 400,
|
|
3603
|
+
fontSize: 10,
|
|
3604
|
+
lineHeight: '10px',
|
|
3605
|
+
textAlign: 'justify',
|
|
3606
|
+
color: '#0E2238',
|
|
3607
|
+
margin: 0,
|
|
3608
|
+
}}
|
|
3609
|
+
>
|
|
3610
|
+
{t('autobahn:modal.packageMandatoryNotice', { amount: eur(addServicesCostRaw ?? 0) })}
|
|
3611
|
+
</p>
|
|
3612
|
+
</div>
|
|
3556
3613
|
)}
|
|
3557
|
-
</div>
|
|
3558
|
-
</div>
|
|
3559
|
-
{/* leasing-only mandatory-package disclosure (Figma "Hinweisbox") — the
|
|
3560
|
-
Rundum-Sorglos-Paket is compulsory for leasing (unlike financing, where
|
|
3561
|
-
it's an optional add-on), so it gets its own callout instead of a bullet. */}
|
|
3562
|
-
{isLease && hasAddServicesRow && (
|
|
3563
|
-
<div
|
|
3564
|
-
style={{
|
|
3565
|
-
display: 'flex',
|
|
3566
|
-
alignItems: 'flex-start',
|
|
3567
|
-
gap: 10,
|
|
3568
|
-
background: '#F7FAFE',
|
|
3569
|
-
border: '0.5px solid #D6DEE8',
|
|
3570
|
-
borderRadius: 5,
|
|
3571
|
-
padding: '7px 8px',
|
|
3572
|
-
marginBottom: 10,
|
|
3573
|
-
}}
|
|
3574
|
-
>
|
|
3575
|
-
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style={{ flex: 'none', marginTop: 2 }}>
|
|
3576
|
-
<circle cx="12" cy="12" r="10" stroke="#0E2238" strokeWidth="1.6" />
|
|
3577
|
-
<path d="M12 16v-4" stroke="#0E2238" strokeWidth="1.6" strokeLinecap="round" />
|
|
3578
|
-
<path d="M12 8h.01" stroke="#0E2238" strokeWidth="1.6" strokeLinecap="round" />
|
|
3579
|
-
</svg>
|
|
3580
3614
|
<p
|
|
3581
3615
|
style={{
|
|
3582
3616
|
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3583
|
-
fontWeight:
|
|
3584
|
-
fontSize:
|
|
3585
|
-
lineHeight: '
|
|
3586
|
-
textAlign: 'justify',
|
|
3587
|
-
color: '#0E2238',
|
|
3588
|
-
margin: 0,
|
|
3589
|
-
}}
|
|
3590
|
-
>
|
|
3591
|
-
{t('autobahn:modal.packageMandatoryNotice', { amount: eur(addServicesCostRaw ?? 0) })}
|
|
3592
|
-
</p>
|
|
3593
|
-
</div>
|
|
3594
|
-
)}
|
|
3595
|
-
<p
|
|
3596
|
-
style={{
|
|
3597
|
-
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3598
|
-
fontWeight: 700,
|
|
3599
|
-
fontSize: 13.3,
|
|
3600
|
-
lineHeight: '17px',
|
|
3601
|
-
color: '#0E2238',
|
|
3602
|
-
margin: 0,
|
|
3603
|
-
marginBottom: 7,
|
|
3604
|
-
}}
|
|
3605
|
-
>
|
|
3606
|
-
{t('autobahn:modal.legalNoticesTitle')}
|
|
3607
|
-
</p>
|
|
3608
|
-
{isLease ? (
|
|
3609
|
-
<>
|
|
3610
|
-
<p style={{ fontFamily: 'Arial, Helvetica, Arimo, sans-serif', fontWeight: 400, fontSize: 12, lineHeight: '12px', color: '#0E2238', margin: 0, marginBottom: 5 }}>
|
|
3611
|
-
{t('autobahn:modal.legalFootnoteAcquisitionPrice')}
|
|
3612
|
-
</p>
|
|
3613
|
-
<p style={{ fontFamily: 'Arial, Helvetica, Arimo, sans-serif', fontWeight: 400, fontSize: 12, lineHeight: '12px', color: '#0E2238', margin: 0, marginBottom: 10 }}>
|
|
3614
|
-
{t('autobahn:modal.legalFootnoteListPriceLease')}
|
|
3615
|
-
</p>
|
|
3616
|
-
<p
|
|
3617
|
-
style={{
|
|
3618
|
-
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3619
|
-
fontWeight: 400,
|
|
3620
|
-
fontSize: 12,
|
|
3621
|
-
lineHeight: '12px',
|
|
3617
|
+
fontWeight: 700,
|
|
3618
|
+
fontSize: 13.3,
|
|
3619
|
+
lineHeight: '17px',
|
|
3622
3620
|
color: '#0E2238',
|
|
3623
3621
|
margin: 0,
|
|
3624
|
-
|
|
3622
|
+
marginBottom: 7,
|
|
3625
3623
|
}}
|
|
3626
3624
|
>
|
|
3627
|
-
{t('autobahn:modal.
|
|
3628
|
-
<br />
|
|
3629
|
-
{t('autobahn:modal.closingDisclaimerLine2')}
|
|
3625
|
+
{t('autobahn:modal.legalNoticesTitle')}
|
|
3630
3626
|
</p>
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
t('autobahn:modal.legalNoticeAddServices'),
|
|
3641
|
-
].map((notice) => (
|
|
3642
|
-
<li
|
|
3643
|
-
key={notice}
|
|
3627
|
+
{isLease ? (
|
|
3628
|
+
<>
|
|
3629
|
+
<p style={{ fontFamily: 'Arial, Helvetica, Arimo, sans-serif', fontWeight: 400, fontSize: 12, lineHeight: '12px', color: '#0E2238', margin: 0, marginBottom: 5 }}>
|
|
3630
|
+
{t('autobahn:modal.legalFootnoteAcquisitionPrice')}
|
|
3631
|
+
</p>
|
|
3632
|
+
<p style={{ fontFamily: 'Arial, Helvetica, Arimo, sans-serif', fontWeight: 400, fontSize: 12, lineHeight: '12px', color: '#0E2238', margin: 0, marginBottom: 10 }}>
|
|
3633
|
+
{t('autobahn:modal.legalFootnoteListPriceLease')}
|
|
3634
|
+
</p>
|
|
3635
|
+
<p
|
|
3644
3636
|
style={{
|
|
3645
3637
|
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3646
3638
|
fontWeight: 400,
|
|
3647
3639
|
fontSize: 12,
|
|
3648
3640
|
lineHeight: '12px',
|
|
3649
3641
|
color: '#0E2238',
|
|
3642
|
+
margin: 0,
|
|
3643
|
+
paddingBottom: 10,
|
|
3650
3644
|
}}
|
|
3651
3645
|
>
|
|
3652
|
-
{
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
|
|
3667
|
-
|
|
3668
|
-
|
|
3646
|
+
{t('autobahn:modal.closingDisclaimerLine1')}
|
|
3647
|
+
<br />
|
|
3648
|
+
{t('autobahn:modal.closingDisclaimerLine2')}
|
|
3649
|
+
</p>
|
|
3650
|
+
</>
|
|
3651
|
+
) : (
|
|
3652
|
+
<>
|
|
3653
|
+
<ul style={{ margin: 0, marginBottom: 3, paddingLeft: 16, display: 'flex', flexDirection: 'column', gap: 3 }}>
|
|
3654
|
+
{[
|
|
3655
|
+
t('autobahn:modal.legalNoticeCreditworthiness'),
|
|
3656
|
+
t('autobahn:modal.legalNoticeExample'),
|
|
3657
|
+
t('autobahn:modal.legalNoticeTwoThirds'),
|
|
3658
|
+
t('autobahn:modal.legalNoticeVat'),
|
|
3659
|
+
t('autobahn:modal.legalNoticeAddServices'),
|
|
3660
|
+
].map((notice) => (
|
|
3661
|
+
<li
|
|
3662
|
+
key={notice}
|
|
3663
|
+
style={{
|
|
3664
|
+
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3665
|
+
fontWeight: 400,
|
|
3666
|
+
fontSize: 12,
|
|
3667
|
+
lineHeight: '12px',
|
|
3668
|
+
color: '#0E2238',
|
|
3669
|
+
}}
|
|
3670
|
+
>
|
|
3671
|
+
{notice}
|
|
3672
|
+
</li>
|
|
3673
|
+
))}
|
|
3674
|
+
</ul>
|
|
3675
|
+
<p
|
|
3676
|
+
style={{
|
|
3677
|
+
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3678
|
+
fontWeight: 400,
|
|
3679
|
+
fontSize: 12,
|
|
3680
|
+
lineHeight: '12px',
|
|
3681
|
+
color: '#0E2238',
|
|
3682
|
+
margin: 0,
|
|
3683
|
+
paddingBottom: 10,
|
|
3684
|
+
}}
|
|
3685
|
+
>
|
|
3686
|
+
{t('autobahn:modal.listPriceFootnote')}
|
|
3687
|
+
</p>
|
|
3688
|
+
</>
|
|
3689
|
+
)}
|
|
3690
|
+
<div className="fin-sheet-cta-row" style={{ display: 'flex', gap: 7, paddingBottom: 15 }}>
|
|
3691
|
+
<Button
|
|
3692
|
+
variant="filled"
|
|
3693
|
+
size="lg"
|
|
3694
|
+
style={{
|
|
3695
|
+
width: 286,
|
|
3696
|
+
height: 50,
|
|
3697
|
+
background: '#005CFF',
|
|
3698
|
+
borderRadius: 16,
|
|
3699
|
+
justifyContent: 'flex-start',
|
|
3700
|
+
paddingLeft: 47,
|
|
3701
|
+
paddingRight: 47,
|
|
3702
|
+
fontFamily: 'Arial, Helvetica, Arimo, sans-serif',
|
|
3703
|
+
fontWeight: 700,
|
|
3704
|
+
fontSize: 16,
|
|
3705
|
+
lineHeight: '18px',
|
|
3706
|
+
textAlign: 'center',
|
|
3707
|
+
color: '#FFFFFF',
|
|
3708
|
+
}}
|
|
3709
|
+
onClick={onSecure}
|
|
3710
|
+
>
|
|
3711
|
+
<span style={{ display: 'inline-flex', marginRight: 18 }}>
|
|
3712
|
+
<DocCheckIcon size={23} />
|
|
3713
|
+
</span>
|
|
3714
|
+
{t('autobahn:finance.requestRate')}
|
|
3715
|
+
</Button>
|
|
3716
|
+
{/* padding:0 — mbtn--lg's 30px side padding left no room for the icon at width 52 */}
|
|
3717
|
+
<Button
|
|
3718
|
+
variant="outlined"
|
|
3719
|
+
size="lg"
|
|
3720
|
+
icon="phone"
|
|
3721
|
+
className="fin-sheet-call-btn"
|
|
3722
|
+
style={{
|
|
3723
|
+
width: 50,
|
|
3724
|
+
height: 50,
|
|
3725
|
+
flex: 'none',
|
|
3726
|
+
padding: 0,
|
|
3727
|
+
background: '#FFFFFF',
|
|
3728
|
+
border: '1.6px solid #005CFF',
|
|
3729
|
+
borderRadius: 16,
|
|
3730
|
+
}}
|
|
3731
|
+
onClick={onCall}
|
|
3732
|
+
/>
|
|
3733
|
+
</div>
|
|
3669
3734
|
</>
|
|
3670
3735
|
)}
|
|
3671
3736
|
</>
|