@bytebrand/fe-ui-core-autobahn 1.0.20 → 1.0.21
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 +13 -3
- package/vdp/FinanceCalculator.tsx +3 -8
- package/vdp/VdpModules.tsx +9 -2
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.21",
|
|
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
|
@@ -174,6 +174,13 @@
|
|
|
174
174
|
border-radius: var(--md-r-full); background: rgba(0,0,0,.55); color: #fff; font-size: 12px; font-weight: 500; backdrop-filter: blur(2px); }
|
|
175
175
|
.md3 .imglabel .lucide { width: 14px; height: 14px; }
|
|
176
176
|
|
|
177
|
+
/* mobile-only row under the gallery image: photo-count (plain text link, not an overlay
|
|
178
|
+
pill — the dark .imglabel pill only makes sense against the image itself) · favorite/share. */
|
|
179
|
+
.md3 .gallery-controls-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 2px 0; }
|
|
180
|
+
.md3 .gallery-photos-btn { display: inline-flex; align-items: center; gap: 6px; border: 0; background: none;
|
|
181
|
+
cursor: pointer; font: inherit; font-size: 13px; font-weight: 600; color: var(--md-on-surface-variant); padding: 0; }
|
|
182
|
+
.md3 .gallery-photos-btn .lucide { width: 15px; height: 15px; }
|
|
183
|
+
|
|
177
184
|
/* ---------- cards ---------- */
|
|
178
185
|
.md3 .mcard { background: var(--md-sc-lowest); border-radius: var(--md-r-md); border: 1px solid var(--md-outline-variant);
|
|
179
186
|
overflow: hidden; transition: box-shadow var(--dur-2) var(--ease-standard), border-color var(--dur-2) var(--ease-standard), transform var(--dur-2) var(--ease-standard); }
|
|
@@ -1150,7 +1157,7 @@
|
|
|
1150
1157
|
.md3 .fin-tabs { display: flex; border-bottom: 1px solid var(--md-outline-variant); margin-bottom: 18px; }
|
|
1151
1158
|
.md3 .fin-tab { flex: 1; background: none; border: 0; padding: 11px 4px; cursor: pointer; font: inherit;
|
|
1152
1159
|
font-size: 13.5px; font-weight: 600; color: var(--md-on-surface-variant); border-bottom: 2px solid transparent;
|
|
1153
|
-
margin-bottom: -1px; transition: color .15s, border-color .15s; }
|
|
1160
|
+
margin-bottom: -1px; transition: color .15s, border-color .15s; text-align: center; }
|
|
1154
1161
|
.md3 .fin-tab.on { color: var(--md-primary); border-bottom-color: var(--md-primary); }
|
|
1155
1162
|
.md3 .fin-tab:hover:not(.on) { color: var(--md-on-surface); }
|
|
1156
1163
|
/* 2-col grid: left grows, right fixed 148px — pill (row 1) and bar (row 2) share a column edge, never wrap */
|
|
@@ -1208,10 +1215,13 @@
|
|
|
1208
1215
|
.md3 .enquiry-phone { margin-top: 16px; }
|
|
1209
1216
|
}
|
|
1210
1217
|
|
|
1211
|
-
/* sticky mobile CTA bar (VDP)
|
|
1218
|
+
/* sticky mobile CTA bar (VDP) — hidden (slid off-screen) until the page scrolls past the
|
|
1219
|
+
main offer card, matching the desktop VdpStickyBar's show/scroll-gated behavior. */
|
|
1212
1220
|
.md3 .vdp-bottom-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; background: var(--md-sc-lowest);
|
|
1213
1221
|
border-top: 1px solid var(--md-outline-variant); box-shadow: 0 -2px 14px rgba(0,0,0,.10);
|
|
1214
|
-
padding: 10px 16px; align-items: center; gap: 14px;
|
|
1222
|
+
padding: 10px 16px; align-items: center; gap: 14px;
|
|
1223
|
+
transform: translateY(100%); transition: transform var(--dur-2, .25s); }
|
|
1224
|
+
.md3 .vdp-bottom-bar--on { transform: translateY(0); }
|
|
1215
1225
|
|
|
1216
1226
|
/* bottom-sheet (SRP filters) — sticky header + scrollable body + sticky action bar, slide-up entrance */
|
|
1217
1227
|
.md3 .sheet-scrim { position: fixed; inset: 0; background: rgba(16,22,42,.5); z-index: 70;
|
|
@@ -505,18 +505,13 @@ const FinanceCalculator: React.FunctionComponent<FinanceCalculatorProps> = ({
|
|
|
505
505
|
<div className="md-label-sm">{t('autobahn:finance.personalConsultationSub')}</div>
|
|
506
506
|
</div>
|
|
507
507
|
</div>
|
|
508
|
-
{
|
|
508
|
+
{/* non-cash: the Finanzierungsdetails link already sits on the auto.de-ID row
|
|
509
|
+
above — showing it here too was a duplicate (round-3 regression). */}
|
|
510
|
+
{isCash && (
|
|
509
511
|
<div style={{ display: 'flex', alignItems: 'center', gap: 6, color: 'var(--md-on-surface-variant)' }}>
|
|
510
512
|
<Icon name="info" size={15} />
|
|
511
513
|
<span className="md-label-sm">{t('autobahn:finance.financingLeasingPossible')}</span>
|
|
512
514
|
</div>
|
|
513
|
-
) : (
|
|
514
|
-
onShowDetails && (
|
|
515
|
-
<DetailsLink
|
|
516
|
-
label={mode === 'leasing' ? t('autobahn:finance.leasingDetails') : t('autobahn:finance.financingDetails')}
|
|
517
|
-
onClick={onShowDetails}
|
|
518
|
-
/>
|
|
519
|
-
)
|
|
520
515
|
)}
|
|
521
516
|
</div>
|
|
522
517
|
|
package/vdp/VdpModules.tsx
CHANGED
|
@@ -922,6 +922,13 @@ export const VdpStickyBar: React.FunctionComponent<VdpStickyBarProps> = ({ vehic
|
|
|
922
922
|
|
|
923
923
|
export interface VdpBottomBarProps {
|
|
924
924
|
vehicle: VehicleDetail;
|
|
925
|
+
/**
|
|
926
|
+
* Whether the bar is docked/visible — mirrors VdpStickyBar's `show` (same
|
|
927
|
+
* page-owned scroll-position toggle, STICKY_SHOW_AT). Was unconditionally
|
|
928
|
+
* visible before, unlike the desktop VdpStickyBar; the mockup only shows it
|
|
929
|
+
* after scrolling past the main offer card.
|
|
930
|
+
*/
|
|
931
|
+
show: boolean;
|
|
925
932
|
/** primary CTA click. */
|
|
926
933
|
onSecure?: () => void;
|
|
927
934
|
/** i18n function (drilled from the page). */
|
|
@@ -929,8 +936,8 @@ export interface VdpBottomBarProps {
|
|
|
929
936
|
}
|
|
930
937
|
|
|
931
938
|
/** Mobile sticky bottom CTA bar — rate + Kaufpreis + "Angebot sichern". */
|
|
932
|
-
export const VdpBottomBar: React.FunctionComponent<VdpBottomBarProps> = ({ vehicle, onSecure, t }) => (
|
|
933
|
-
<div className=
|
|
939
|
+
export const VdpBottomBar: React.FunctionComponent<VdpBottomBarProps> = ({ vehicle, show, onSecure, t }) => (
|
|
940
|
+
<div className={'vdp-bottom-bar show-mobile' + (show ? ' vdp-bottom-bar--on' : '')}>
|
|
934
941
|
<div style={{ flex: 1, minWidth: 0 }}>
|
|
935
942
|
<div style={{ display: 'flex', alignItems: 'baseline', gap: 5, whiteSpace: 'nowrap' }}>
|
|
936
943
|
<span className="md-label-sm">{t('autobahn:bottom.from')}</span>
|