@bytebrand/fe-ui-core-autobahn 1.0.47 → 1.0.49

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytebrand/fe-ui-core-autobahn",
3
- "version": "1.0.47",
3
+ "version": "1.0.49",
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
@@ -1405,7 +1405,9 @@
1405
1405
  /* mobile-only "first screen": identity + trust row BEFORE the finance card, highlights/
1406
1406
  condition tiles moved AFTER it (both split out of the desktop-only VdpHeaderCard,
1407
1407
  which stays bundled inside .vdp-gallery, hidden on mobile via hide-mobile). */
1408
- .md3 .vdp-header-summary { order: 2; padding: 0; margin-bottom: 4px; /* flush with the card edges so the trust chips span the same width */ }
1408
+ /* no extra margin — .vdp-grid's uniform gap is THE spacing between all mobile blocks
1409
+ (round 14: a stray 4px here made the summary→card gap bigger than the rest) */
1410
+ .md3 .vdp-header-summary { order: 2; padding: 0; }
1409
1411
  .md3 .vdp-aside { order: 3; }
1410
1412
  /* no extra margin-top — .vdp-grid's own gap (14px, set further below) already spaces every
1411
1413
  mobile card uniformly; an added margin here stacked ON TOP of that gap, making the gap
@@ -1650,12 +1652,21 @@
1650
1652
  /* sheet: no divider under the header; one under the rate row instead (Figma) */
1651
1653
  .md3 .fin-modal-head { border-bottom: 0; padding-bottom: 8px; }
1652
1654
  .md3 .fin-sheet-adjust { border-top: 1px solid var(--fig-tile-border); padding-top: 16px; }
1653
- /* sheet cash rows (Zahlung/Garantie/Lieferung) — Figma sizes (round 13: bigger still) */
1654
- .md3 .fin-modal .calcrow { padding: 17px 0; }
1655
+ /* sheet cash rows (Zahlung/Garantie/Lieferung) — Figma sizes (round 14: taller still) */
1656
+ .md3 .fin-modal .calcrow { padding: 20px 0; }
1655
1657
  .md3 .fin-modal .calcrow-label { font-size: 15px; color: var(--fig-gray); }
1656
1658
  .md3 .fin-modal .calcrow-value { font-size: 16px !important; color: var(--fig-navy); font-weight: 700 !important; }
1657
1659
  /* breathing room at the sheet's bottom edge — content must not stick to the viewport lip */
1658
1660
  .md3 .fin-modal-body { padding-bottom: 44px; }
1661
+ /* round 14: the sheet column stretches so the cash CTA row (margin-top:auto) can sink to
1662
+ the bottom with the Figma gap; taller-content modes just keep their natural height */
1663
+ .md3 .fin-modal-body > .show-mobile { min-height: 56vh; }
1664
+ /* inactive mode tabs are dark + bold on phone (Figma) */
1665
+ .md3 .fin-tab:not(.on) { color: var(--fig-navy); font-weight: 700; }
1666
+ /* round 14: ONE uniform 14px rhythm between ALL mobile blocks — the details column used the
1667
+ desktop 22px gap and the below-grid sections carried inline 24/44px top margins */
1668
+ .md3 .vdp-details { gap: 14px; }
1669
+ .md3 .hiw-section, .md3 #vdp-kontakt, .md3 #vdp-bewertungen, .md3 .vdp-similar { margin-top: 14px !important; }
1659
1670
  /* condition tiles: Figma value size + roomier gap to the pills above */
1660
1671
  .md3 .zustand-tile .md-title-sm { font-size: 16.5px; }
1661
1672
  .md3 .vdp-header-extras .zustand-grid { margin-top: 10px; }
@@ -395,6 +395,13 @@ const FinanceCalculator: React.FunctionComponent<FinanceCalculatorProps> = ({
395
395
  {/* col 1 row 1: hero rate — Figma: "329 €" all-big, then a small stacked column with
396
396
  the struck old rate ABOVE "/mtl." (round 11; was a single baseline row) */}
397
397
  <div className="fin-rate-main">
398
+ {/* mobile Kaufen (Figma round 14): struck list price ABOVE the price, right-aligned,
399
+ tight to the figure — replaces the Festpreis + UVP lines, which stay desktop-only */}
400
+ {isCash && showStrike && (
401
+ <div className="show-mobile" style={{ justifyContent: 'flex-end', lineHeight: 1, marginBottom: -5 }}>
402
+ <s className="num fin-rate-old">{eur(listPrice as number)} €</s>
403
+ </div>
404
+ )}
398
405
  <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
399
406
  <span
400
407
  className="num"
@@ -404,7 +411,16 @@ const FinanceCalculator: React.FunctionComponent<FinanceCalculatorProps> = ({
404
411
  {isCash ? eur(price) : `${eur(Math.round(monthly))} €`}
405
412
  </span>
406
413
  {isCash ? (
407
- <span className="md-body-sm" style={{ fontWeight: 600 }}>€</span>
414
+ <>
415
+ {/* phone: € as big as the digits (Figma); desktop keeps the quiet small € */}
416
+ <span
417
+ className="num show-mobile"
418
+ style={{ fontSize: 48, fontWeight: 800, color: 'var(--md-primary)', letterSpacing: '-2px', marginLeft: -4 }}
419
+ >
420
+ €
421
+ </span>
422
+ <span className="md-body-sm hide-mobile" style={{ fontWeight: 600 }}>€</span>
423
+ </>
408
424
  ) : (
409
425
  <span className="fin-rate-unit">
410
426
  {/* struck old rate (REAL oldMonthlyInstallment; SRP strikes the same source) */}
@@ -413,9 +429,9 @@ const FinanceCalculator: React.FunctionComponent<FinanceCalculatorProps> = ({
413
429
  </span>
414
430
  )}
415
431
  </div>
416
- {isCash && <div className="md-label-sm">{t('autobahn:finance.fixedPrice')}</div>}
432
+ {isCash && <div className="md-label-sm hide-mobile">{t('autobahn:finance.fixedPrice')}</div>}
417
433
  {isCash && showStrike && (
418
- <div className="fin-kauf">
434
+ <div className="fin-kauf hide-mobile">
419
435
  {t('autobahn:finance.uvp')} <s>{eur(listPrice as number)} €</s>
420
436
  </div>
421
437
  )}
@@ -1755,7 +1755,8 @@ export const FinanceDetailsModal: React.FunctionComponent<FinanceDetailsModalPro
1755
1755
  onChange={(checked) => onToggleAddServices && onToggleAddServices(checked)}
1756
1756
  />
1757
1757
  )}
1758
- <div style={{ display: 'flex', gap: 10 }}>
1758
+ {/* pushed to the sheet's bottom edge — Figma keeps a big breathing gap above */}
1759
+ <div style={{ display: 'flex', gap: 10, marginTop: 'auto' }}>
1759
1760
  <Button variant="filled" size="lg" style={{ flex: 1 }} onClick={onSecure}>
1760
1761
  <DocCheckIcon />
1761
1762
  {t('autobahn:finance.secureOffer')}