@bytebrand/fe-ui-core-autobahn 1.0.109 → 1.0.110
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/locales/de/autobahn.json +5 -5
- package/locales/en/autobahn.json +5 -5
- package/package.json +1 -1
- package/theme/md3.css +21 -0
- package/vdp/VdpModules.tsx +54 -18
- package/vdp/types.ts +1 -1
package/locales/de/autobahn.json
CHANGED
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
"srp": {
|
|
281
281
|
"trust": {
|
|
282
282
|
"topQuality": "Top Qualität",
|
|
283
|
-
"warranty": "
|
|
283
|
+
"warranty": "12 Monate Garantie",
|
|
284
284
|
"financing": "Günstige Finanzierung",
|
|
285
285
|
"testDrive": "14 Tage Probefahrt"
|
|
286
286
|
},
|
|
@@ -497,7 +497,7 @@
|
|
|
497
497
|
"seo": {
|
|
498
498
|
"title": "{{name}} gebraucht kaufen | auto.de",
|
|
499
499
|
"regPrefix": "EZ",
|
|
500
|
-
"descriptionSuffix": " – online kaufen oder finanzieren bei auto.de. Inkl.
|
|
500
|
+
"descriptionSuffix": " – online kaufen oder finanzieren bei auto.de. Inkl. 12 Monate Garantie & 14 Tage Rückgaberecht."
|
|
501
501
|
}
|
|
502
502
|
},
|
|
503
503
|
"fuel": {
|
|
@@ -582,14 +582,14 @@
|
|
|
582
582
|
"heading": "Fahrzeugbeschreibung",
|
|
583
583
|
"showMore": "Mehr anzeigen",
|
|
584
584
|
"showLess": "Weniger anzeigen",
|
|
585
|
-
"defaultBody": "Dieser {{make}} {{model}} ({{trim}}) überzeugt mit {{power}} und {{gear}}. Das Fahrzeug ist scheckheftgepflegt, unfallfrei und stammt aus {{owners}}. Hand. Erstzulassung {{reg}}, Laufleistung {{km}} km, Außenfarbe {{color}}. Jedes auto.de-Fahrzeug durchläuft einen 130-Punkte-Check und kommt mit
|
|
585
|
+
"defaultBody": "Dieser {{make}} {{model}} ({{trim}}) überzeugt mit {{power}} und {{gear}}. Das Fahrzeug ist scheckheftgepflegt, unfallfrei und stammt aus {{owners}}. Hand. Erstzulassung {{reg}}, Laufleistung {{km}} km, Außenfarbe {{color}}. Jedes auto.de-Fahrzeug durchläuft einen 130-Punkte-Check und kommt mit 12 Monate Garantie sowie 14 Tagen Rückgaberecht. Lieferung deutschlandweit bis vor die Tür oder Abholung nach Vereinbarung. Finanzierung und Leasing zu fairen Konditionen direkt online — die monatliche Rate berechnest du oben im Rechner."
|
|
586
586
|
},
|
|
587
587
|
"trust": {
|
|
588
|
-
"warranty": "
|
|
588
|
+
"warranty": "12 Monate Garantie",
|
|
589
589
|
"return": "14 Tage Rückgabe",
|
|
590
590
|
"delivery": "Lieferung o. Abholung",
|
|
591
591
|
"inspection": "130-Punkte-Check",
|
|
592
|
-
"warrantySub": "Sicher fahren -
|
|
592
|
+
"warrantySub": "Sicher fahren - 12 Monate lang",
|
|
593
593
|
"returnSub": "Ohne Angabe von Gründen",
|
|
594
594
|
"deliverySub": "Deutschlandweit flexibel wählen",
|
|
595
595
|
"inspectionSub": "Geprüfte Qualität für mehr Sicherheit"
|
package/locales/en/autobahn.json
CHANGED
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
"srp": {
|
|
281
281
|
"trust": {
|
|
282
282
|
"topQuality": "Top Quality",
|
|
283
|
-
"warranty": "
|
|
283
|
+
"warranty": "12 months warranty",
|
|
284
284
|
"financing": "Affordable financing",
|
|
285
285
|
"testDrive": "14 days test drive"
|
|
286
286
|
},
|
|
@@ -497,7 +497,7 @@
|
|
|
497
497
|
"seo": {
|
|
498
498
|
"title": "{{name}} used car for sale | auto.de",
|
|
499
499
|
"regPrefix": "Reg.",
|
|
500
|
-
"descriptionSuffix": " – buy or finance online at auto.de. Incl.
|
|
500
|
+
"descriptionSuffix": " – buy or finance online at auto.de. Incl. 12-month warranty & 14-day return policy."
|
|
501
501
|
}
|
|
502
502
|
},
|
|
503
503
|
"fuel": {
|
|
@@ -582,14 +582,14 @@
|
|
|
582
582
|
"heading": "Vehicle description",
|
|
583
583
|
"showMore": "Show more",
|
|
584
584
|
"showLess": "Show less",
|
|
585
|
-
"defaultBody": "This {{make}} {{model}} ({{trim}}) impresses with {{power}} and {{gear}}. The vehicle has a full service history, is accident-free and comes from owner no. {{owners}}. First registration {{reg}}, mileage {{km}} km, exterior colour {{color}}. Every auto.de vehicle passes a 130-point check and comes with a
|
|
585
|
+
"defaultBody": "This {{make}} {{model}} ({{trim}}) impresses with {{power}} and {{gear}}. The vehicle has a full service history, is accident-free and comes from owner no. {{owners}}. First registration {{reg}}, mileage {{km}} km, exterior colour {{color}}. Every auto.de vehicle passes a 130-point check and comes with a 12-month warranty as well as a 14-day right of return. Delivery throughout Germany to your door, or collection by appointment. Financing and leasing at fair terms directly online — calculate your monthly rate in the calculator above."
|
|
586
586
|
},
|
|
587
587
|
"trust": {
|
|
588
|
-
"warranty": "
|
|
588
|
+
"warranty": "12-month warranty",
|
|
589
589
|
"return": "14-day returns",
|
|
590
590
|
"delivery": "Delivery or collection",
|
|
591
591
|
"inspection": "130-point check",
|
|
592
|
-
"warrantySub": "Drive safe —
|
|
592
|
+
"warrantySub": "Drive safe — for 12 months",
|
|
593
593
|
"returnSub": "No questions asked",
|
|
594
594
|
"deliverySub": "Flexible across Germany",
|
|
595
595
|
"inspectionSub": "Inspected quality for extra peace of mind"
|
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.110",
|
|
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
|
@@ -6718,6 +6718,12 @@ line-height: 31px;
|
|
|
6718
6718
|
.md3 .gitem {
|
|
6719
6719
|
padding: 20px 18px;
|
|
6720
6720
|
}
|
|
6721
|
+
/* title font-size 16→14 on mobile only — desktop keeps the inline style={{ fontSize: 16 }}
|
|
6722
|
+
set in NewMainPage.tsx's GuaranteeBand unchanged; !important is required here to beat
|
|
6723
|
+
that inline style (icon sizes are untouched, only the title text shrinks). */
|
|
6724
|
+
.md3 .gitem .md-title-sm {
|
|
6725
|
+
font-size: 14px !important;
|
|
6726
|
+
}
|
|
6721
6727
|
/* steps/hiw: the ≤980 Figma vertical-list card already applies here */
|
|
6722
6728
|
/* --- VDP header card: structured phone layout (desktop-composed VdpHeaderCard,
|
|
6723
6729
|
hidden on phone via hide-mobile — kept for tablet widths 600-980px where the
|
|
@@ -6821,6 +6827,13 @@ line-height: 31px;
|
|
|
6821
6827
|
.md3 .zustand-tile:nth-child(n + 3) {
|
|
6822
6828
|
border-top: 1px solid #d4dde7;
|
|
6823
6829
|
}
|
|
6830
|
+
/* Garantie label's "more info" link icon — 15x15 on mobile only (desktop keeps the
|
|
6831
|
+
Icon component's own size={14} prop, untouched); higher specificity than any
|
|
6832
|
+
.zustand-tile .lucide sizing rule beats it regardless of source order. */
|
|
6833
|
+
.md3 .zustand-tile a .lucide {
|
|
6834
|
+
width: 15px;
|
|
6835
|
+
height: 15px;
|
|
6836
|
+
}
|
|
6824
6837
|
.md3 .curated-grid {
|
|
6825
6838
|
grid-template-columns: 1fr;
|
|
6826
6839
|
gap: 12px;
|
|
@@ -7029,6 +7042,14 @@ line-height: 31px;
|
|
|
7029
7042
|
height: 22px;
|
|
7030
7043
|
margin-top: 1px;
|
|
7031
7044
|
}
|
|
7045
|
+
/* "12 Monate Garantie" label's "more info" link icon — 15x15 on mobile only (desktop
|
|
7046
|
+
keeps the Icon component's own size={14} prop) — higher specificity than the 22px
|
|
7047
|
+
rule above beats it regardless of source order. */
|
|
7048
|
+
.md3 .trust-strip a .lucide {
|
|
7049
|
+
width: 15px;
|
|
7050
|
+
height: 15px;
|
|
7051
|
+
margin-top: 0;
|
|
7052
|
+
}
|
|
7032
7053
|
.md3 .trust-strip > div > span {
|
|
7033
7054
|
display: block;
|
|
7034
7055
|
font-family: Arial, Helvetica, sans-serif;
|
package/vdp/VdpModules.tsx
CHANGED
|
@@ -197,24 +197,43 @@ export const VdpHeaderHighlights: React.FunctionComponent<VdpHeaderCardProps> =
|
|
|
197
197
|
export const VdpHeaderCondition: React.FunctionComponent<VdpHeaderCardProps> = ({ vehicle, t }) => {
|
|
198
198
|
const { condition } = vehicle;
|
|
199
199
|
// condition.hu === 'Neu' compares the RAW backend data value, not a display string — left as-is.
|
|
200
|
-
|
|
200
|
+
// 4th (optional) tuple element: label opens this URL in a new tab via a small info icon —
|
|
201
|
+
// only the Garantie tile has one, linking out to auto.de's warranty policy page.
|
|
202
|
+
const tiles: ReadonlyArray<readonly [string, string, string, string?]> = [
|
|
201
203
|
['wrench', t('autobahn:header.huLabel'), condition.hu === 'Neu' ? t('autobahn:header.huNew') : t('autobahn:header.huUntil', { date: condition.hu })],
|
|
202
204
|
['shield-check', t('autobahn:header.accidentFree'), condition.unfallfrei ? t('autobahn:header.yes') : t('autobahn:header.no')],
|
|
203
205
|
['clipboard-check', t('autobahn:header.serviceHistory'), condition.scheckheft ? t('autobahn:header.yes') : t('autobahn:header.no')],
|
|
204
|
-
['award', t('autobahn:header.warranty'), condition.garantie],
|
|
206
|
+
['award', t('autobahn:header.warranty'), condition.garantie, 'https://www.auto.de/garantie/'],
|
|
205
207
|
];
|
|
206
208
|
return (
|
|
207
209
|
<div className="zustand-grid">
|
|
208
|
-
{tiles.map(([ic, l, v]) => (
|
|
210
|
+
{tiles.map(([ic, l, v, labelLinkUrl]) => (
|
|
209
211
|
<div key={l} className="zustand-tile">
|
|
210
212
|
<Icon name={ic} size={19} color="var(--md-primary)" stroke={1.9} style={{ flex: 'none' }} />
|
|
211
213
|
<span style={{ minWidth: 0 }}>
|
|
212
|
-
|
|
213
|
-
className="md-label-sm"
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
214
|
+
{labelLinkUrl ? (
|
|
215
|
+
<span className="md-label-sm" style={{ display: 'flex', alignItems: 'center', gap: 4, minWidth: 0 }}>
|
|
216
|
+
<span style={{ minWidth: 0, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>
|
|
217
|
+
{l}
|
|
218
|
+
</span>
|
|
219
|
+
<a
|
|
220
|
+
href={labelLinkUrl}
|
|
221
|
+
target="_blank"
|
|
222
|
+
rel="noopener noreferrer"
|
|
223
|
+
aria-label={l}
|
|
224
|
+
style={{ display: 'inline-flex', flex: 'none', cursor: 'pointer' }}
|
|
225
|
+
>
|
|
226
|
+
<Icon name="info" size={14} color="var(--md-primary)" />
|
|
227
|
+
</a>
|
|
228
|
+
</span>
|
|
229
|
+
) : (
|
|
230
|
+
<span
|
|
231
|
+
className="md-label-sm"
|
|
232
|
+
style={{ display: 'block', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}
|
|
233
|
+
>
|
|
234
|
+
{l}
|
|
235
|
+
</span>
|
|
236
|
+
)}
|
|
218
237
|
<span className="md-title-sm" style={{ display: 'block' }}>
|
|
219
238
|
{v}
|
|
220
239
|
</span>
|
|
@@ -550,8 +569,8 @@ export const VehicleDescription: React.FunctionComponent<VehicleDescriptionProps
|
|
|
550
569
|
// Trust strip
|
|
551
570
|
// ---------------------------------------------------------------------------
|
|
552
571
|
|
|
553
|
-
/** [kebab-case lucide icon, label, optional subline (mobile Figma tiles)]. */
|
|
554
|
-
export type TrustItem = readonly [icon: string, label: string, sub?: string];
|
|
572
|
+
/** [kebab-case lucide icon, label, optional subline (mobile Figma tiles), optional label link URL]. */
|
|
573
|
+
export type TrustItem = readonly [icon: string, label: string, sub?: string, linkUrl?: string];
|
|
555
574
|
|
|
556
575
|
export interface TrustStripProps {
|
|
557
576
|
/** trust badges; defaults to auto.de's four standard promises. */
|
|
@@ -560,9 +579,9 @@ export interface TrustStripProps {
|
|
|
560
579
|
t: TranslationFunction;
|
|
561
580
|
}
|
|
562
581
|
|
|
563
|
-
/** auto.de's four standard promises — [icon, i18n label key, i18n subline key]. */
|
|
564
|
-
const DEFAULT_TRUST: ReadonlyArray<readonly [string, string, string]> = [
|
|
565
|
-
['shield-check', 'autobahn:trust.warranty', 'autobahn:trust.warrantySub'],
|
|
582
|
+
/** auto.de's four standard promises — [icon, i18n label key, i18n subline key, optional label link URL]. */
|
|
583
|
+
const DEFAULT_TRUST: ReadonlyArray<readonly [string, string, string, string?]> = [
|
|
584
|
+
['shield-check', 'autobahn:trust.warranty', 'autobahn:trust.warrantySub', 'https://www.auto.de/garantie/'],
|
|
566
585
|
['undo-2', 'autobahn:trust.return', 'autobahn:trust.returnSub'],
|
|
567
586
|
['truck', 'autobahn:trust.delivery', 'autobahn:trust.deliverySub'],
|
|
568
587
|
['badge-check', 'autobahn:trust.inspection', 'autobahn:trust.inspectionSub'],
|
|
@@ -572,11 +591,26 @@ const DEFAULT_TRUST: ReadonlyArray<readonly [string, string, string]> = [
|
|
|
572
591
|
* (the .trust-sub sublines only surface in the mobile tile layout via CSS). */
|
|
573
592
|
export const TrustStrip: React.FunctionComponent<TrustStripProps> = ({ items, t }) => (
|
|
574
593
|
<div className="trust-strip">
|
|
575
|
-
{(items ?? DEFAULT_TRUST.map(([ic, key, subKey]) => [ic, t(key), t(subKey)] as TrustItem)).map(([ic, label, sub]) => (
|
|
594
|
+
{(items ?? DEFAULT_TRUST.map(([ic, key, subKey, linkUrl]) => [ic, t(key), t(subKey), linkUrl] as TrustItem)).map(([ic, label, sub, linkUrl]) => (
|
|
576
595
|
<div key={label}>
|
|
577
596
|
<Icon name={ic} size={17} color="var(--md-primary)" stroke={2} style={{ flex: 'none' }} />
|
|
578
597
|
<span style={{ minWidth: 0 }}>
|
|
579
|
-
{
|
|
598
|
+
{linkUrl ? (
|
|
599
|
+
<span style={{ display: 'inline-flex', alignItems: 'center', gap: 4 }}>
|
|
600
|
+
{label}
|
|
601
|
+
<a
|
|
602
|
+
href={linkUrl}
|
|
603
|
+
target="_blank"
|
|
604
|
+
rel="noopener noreferrer"
|
|
605
|
+
aria-label={label}
|
|
606
|
+
style={{ display: 'inline-flex', flex: 'none', cursor: 'pointer' }}
|
|
607
|
+
>
|
|
608
|
+
<Icon name="info" size={14} color="var(--md-primary)" />
|
|
609
|
+
</a>
|
|
610
|
+
</span>
|
|
611
|
+
) : (
|
|
612
|
+
label
|
|
613
|
+
)}
|
|
580
614
|
{sub && <span className="trust-sub">{sub}</span>}
|
|
581
615
|
</span>
|
|
582
616
|
</div>
|
|
@@ -2420,7 +2454,9 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
|
|
|
2420
2454
|
<div style={{ display: 'flex', flexDirection: 'column', gap: 16, marginBottom: 18 }}>
|
|
2421
2455
|
<div>
|
|
2422
2456
|
<div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: 6 }}>
|
|
2423
|
-
<span className="md-title-sm">
|
|
2457
|
+
<span className="md-title-sm">
|
|
2458
|
+
{t(isLease ? 'autobahn:finance.downPaymentSliderLabelSheet' : 'autobahn:finance.downPaymentSliderLabel')}
|
|
2459
|
+
</span>
|
|
2424
2460
|
<span className="num" style={{ fontWeight: 700 }}>
|
|
2425
2461
|
{eur(down)} €
|
|
2426
2462
|
</span>
|
|
@@ -3028,7 +3064,7 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
|
|
|
3028
3064
|
<div>
|
|
3029
3065
|
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
3030
3066
|
<span className="md-title-sm" style={{ display: 'inline-flex', alignItems: 'center', gap: 5 }}>
|
|
3031
|
-
{t('autobahn:finance.downPaymentSliderLabelSheet')}
|
|
3067
|
+
{t(isLease ? 'autobahn:finance.downPaymentSliderLabelSheet' : 'autobahn:finance.downPaymentSliderLabel')}
|
|
3032
3068
|
</span>
|
|
3033
3069
|
<span className="num fin-down-value" style={{ fontWeight: 700, color: 'var(--md-primary)' }}>
|
|
3034
3070
|
{eur(down)} €
|
package/vdp/types.ts
CHANGED
|
@@ -35,7 +35,7 @@ export interface VehicleCondition {
|
|
|
35
35
|
unfallfrei: boolean;
|
|
36
36
|
/** full service history (Scheckheftgepflegt). */
|
|
37
37
|
scheckheft: boolean;
|
|
38
|
-
/** warranty label, e.g. '
|
|
38
|
+
/** warranty label, e.g. '12 Monate inkl.'. */
|
|
39
39
|
garantie: string;
|
|
40
40
|
}
|
|
41
41
|
|