@bytebrand/fe-ui-core-autobahn 1.0.7 → 1.0.9
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/chrome/Footer.tsx +79 -25
- package/locales/de/autobahn.json +17 -4
- package/locales/en/autobahn.json +17 -4
- package/package.json +1 -1
package/chrome/Footer.tsx
CHANGED
|
@@ -13,41 +13,49 @@ interface FooterLink {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* Footer link columns
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* Footer link columns — content/order/hrefs copied 1:1 from the LIVE prod footer (fe-main
|
|
17
|
+
* deploy_prod: components/layout/footer/FooterLinks/FooterLinksData.ts + de/footer.json), not
|
|
18
|
+
* redesigned. Viktoriia (2026-07-10): keep the new design's chrome (styles, social icons on the
|
|
19
|
+
* left) but the column list/links must match prod exactly.
|
|
19
20
|
*
|
|
20
|
-
* A 4th "Kaufen" column
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* A 4th "Kaufen" column and a reshuffled Services/Unternehmen/Rechtliches set were tried here
|
|
22
|
+
* first — both dropped per Rene Sander + Viktoriia in favor of prod's real three columns
|
|
23
|
+
* (Unternehmen/Händler/Service). Some entries share an href with a different label than you'd
|
|
24
|
+
* expect (e.g. "Nutzungsbedingungen" → /agb/, same URL as the old "AGB" label) — that mismatch
|
|
25
|
+
* exists on prod too; replicated faithfully rather than "fixed".
|
|
24
26
|
*/
|
|
25
27
|
const COLUMNS: ReadonlyArray<{ headingKey: string; items: FooterLink[] }> = [
|
|
26
28
|
{
|
|
27
|
-
headingKey: 'autobahn:chrome.
|
|
29
|
+
headingKey: 'autobahn:chrome.company',
|
|
28
30
|
items: [
|
|
29
|
-
{ labelKey: 'autobahn:chrome.
|
|
30
|
-
{ labelKey: 'autobahn:chrome.
|
|
31
|
-
{ labelKey: 'autobahn:chrome.
|
|
32
|
-
{ labelKey: 'autobahn:chrome.
|
|
31
|
+
{ labelKey: 'autobahn:chrome.about', href: '/das-neue-auto-de/' },
|
|
32
|
+
{ labelKey: 'autobahn:chrome.codex', href: '/kodex/' },
|
|
33
|
+
{ labelKey: 'autobahn:chrome.press', href: '/presse/' },
|
|
34
|
+
{ labelKey: 'autobahn:chrome.careers', href: 'https://jobs.auto.de/', external: true },
|
|
35
|
+
{ labelKey: 'autobahn:chrome.termsOfUse', href: '/agb/' },
|
|
36
|
+
{ labelKey: 'autobahn:chrome.imprint', href: '/impressum/' },
|
|
37
|
+
{ labelKey: 'autobahn:chrome.privacy', href: '/datenschutz/' },
|
|
33
38
|
],
|
|
34
39
|
},
|
|
35
40
|
{
|
|
36
|
-
headingKey: 'autobahn:chrome.
|
|
41
|
+
headingKey: 'autobahn:chrome.dealer',
|
|
37
42
|
items: [
|
|
38
|
-
{ labelKey: 'autobahn:chrome.
|
|
39
|
-
{ labelKey: 'autobahn:chrome.
|
|
40
|
-
{ labelKey: 'autobahn:chrome.
|
|
41
|
-
{ labelKey: 'autobahn:chrome.
|
|
43
|
+
{ labelKey: 'autobahn:chrome.dealerAdvantages', href: '/kontoanfrage/' },
|
|
44
|
+
{ labelKey: 'autobahn:chrome.dealerLogin', href: '/login/sign-in' },
|
|
45
|
+
{ labelKey: 'autobahn:chrome.dealerRegister', href: '/dealer/sign-up' },
|
|
46
|
+
{ labelKey: 'autobahn:chrome.dealerTerms', href: '/handler-agb/' },
|
|
47
|
+
{ labelKey: 'autobahn:chrome.dealerPurchaseTerms', href: '/allgemeine-einkaufsbedingungen-aeb/' },
|
|
42
48
|
],
|
|
43
49
|
},
|
|
44
50
|
{
|
|
45
|
-
headingKey: 'autobahn:chrome.
|
|
51
|
+
headingKey: 'autobahn:chrome.services',
|
|
46
52
|
items: [
|
|
47
|
-
{ labelKey: 'autobahn:chrome.
|
|
48
|
-
{ labelKey: 'autobahn:chrome.
|
|
49
|
-
{ labelKey: 'autobahn:chrome.
|
|
50
|
-
{ labelKey: 'autobahn:chrome.
|
|
53
|
+
{ labelKey: 'autobahn:chrome.help', href: '/service/kontakt/' },
|
|
54
|
+
{ labelKey: 'autobahn:chrome.feedback', href: '/service/kontakt/' },
|
|
55
|
+
{ labelKey: 'autobahn:chrome.contact', href: '/account/kontakt' },
|
|
56
|
+
{ labelKey: 'autobahn:chrome.newsletter', href: '/service/kontakt/' },
|
|
57
|
+
{ labelKey: 'autobahn:chrome.forms', href: '/ratgeber/autokauf/' },
|
|
58
|
+
{ labelKey: 'autobahn:chrome.magazine', href: '/magazin/' },
|
|
51
59
|
],
|
|
52
60
|
},
|
|
53
61
|
];
|
|
@@ -59,6 +67,12 @@ const SOCIALS: ReadonlyArray<{ name: string; label: string; href: string }> = [
|
|
|
59
67
|
{ name: 'instagram', label: 'Instagram', href: 'https://instagram.com/auto.de_official/' },
|
|
60
68
|
];
|
|
61
69
|
|
|
70
|
+
/** App store links (same real targets as the legacy 'Bleiben Sie in Kontakt' block, app.ts). */
|
|
71
|
+
const APPS: ReadonlyArray<{ name: string; labelKey: string; href: string }> = [
|
|
72
|
+
{ name: 'apple', labelKey: 'autobahn:chrome.iosApp', href: 'https://itunes.apple.com/us/app/yourapp/id1396544891' },
|
|
73
|
+
{ name: 'android', labelKey: 'autobahn:chrome.androidApp', href: 'https://play.google.com/store/apps/details?id=de.auto.app' },
|
|
74
|
+
];
|
|
75
|
+
|
|
62
76
|
/** financing defaults for the §17a PAngV representative example (same source the legacy footer uses). */
|
|
63
77
|
const FIN = defaultConfig.financing;
|
|
64
78
|
const fmt2 = (n: number): string => Number(n).toFixed(2);
|
|
@@ -89,6 +103,30 @@ const Footer: React.FunctionComponent<FooterProps> = ({ t }) => {
|
|
|
89
103
|
<p className="md-body-sm" style={{ marginTop: 14, maxWidth: 240 }}>
|
|
90
104
|
{t('autobahn:chrome.brandBlurb')}
|
|
91
105
|
</p>
|
|
106
|
+
<div style={{ marginTop: 18 }}>
|
|
107
|
+
<div
|
|
108
|
+
className="md-title-sm"
|
|
109
|
+
style={{ paddingBottom: 8, marginBottom: 10, borderBottom: '1px solid var(--md-outline-variant)' }}
|
|
110
|
+
>
|
|
111
|
+
{t('autobahn:chrome.stayInContact')}
|
|
112
|
+
</div>
|
|
113
|
+
<ul style={{ listStyle: 'none', margin: 0, padding: 0, display: 'flex', flexDirection: 'column', gap: 10 }}>
|
|
114
|
+
{APPS.map((a) => (
|
|
115
|
+
<li key={a.name}>
|
|
116
|
+
<a
|
|
117
|
+
href={a.href}
|
|
118
|
+
target="_blank"
|
|
119
|
+
rel="noopener noreferrer"
|
|
120
|
+
className="md-body-sm"
|
|
121
|
+
style={{ display: 'inline-flex', alignItems: 'center', gap: 8, color: 'var(--md-on-surface-variant)', textDecoration: 'none' }}
|
|
122
|
+
>
|
|
123
|
+
<SocialIcon name={a.name} />
|
|
124
|
+
{t(a.labelKey)}
|
|
125
|
+
</a>
|
|
126
|
+
</li>
|
|
127
|
+
))}
|
|
128
|
+
</ul>
|
|
129
|
+
</div>
|
|
92
130
|
<div style={{ display: 'flex', gap: 8, marginTop: 14 }}>
|
|
93
131
|
{SOCIALS.map((s) => (
|
|
94
132
|
<a
|
|
@@ -168,8 +206,8 @@ const Footer: React.FunctionComponent<FooterProps> = ({ t }) => {
|
|
|
168
206
|
};
|
|
169
207
|
|
|
170
208
|
/**
|
|
171
|
-
* Inline brand-correct social
|
|
172
|
-
*
|
|
209
|
+
* Inline brand-correct glyphs (social profiles + app stores). lucide-react dropped these brand
|
|
210
|
+
* marks from its `icons` map, so the shared Icon would render nothing — use small inline SVGs.
|
|
173
211
|
*/
|
|
174
212
|
const SocialIcon: React.FunctionComponent<{ name: string }> = ({ name }) => {
|
|
175
213
|
const common = { width: 18, height: 18, viewBox: '0 0 24 24', fill: 'currentColor' as const, 'aria-hidden': true };
|
|
@@ -179,7 +217,23 @@ const SocialIcon: React.FunctionComponent<{ name: string }> = ({ name }) => {
|
|
|
179
217
|
if (name === 'twitter') {
|
|
180
218
|
return (<svg {...common}><path d="M18.24 2.25h3.31l-7.23 8.26 8.5 11.24h-6.65l-5.21-6.81-5.96 6.81H1.69l7.73-8.84L1.25 2.25h6.82l4.71 6.23 5.46-6.23Zm-1.16 17.52h1.83L7.01 4.13H5.05l12.03 15.64Z" /></svg>);
|
|
181
219
|
}
|
|
182
|
-
|
|
220
|
+
if (name === 'instagram') {
|
|
221
|
+
return (<svg {...common}><path d="M12 2.16c3.2 0 3.58.01 4.85.07 1.17.05 1.8.25 2.23.41.56.22.96.48 1.38.9.42.42.68.82.9 1.38.16.42.36 1.06.41 2.23.06 1.27.07 1.65.07 4.85s-.01 3.58-.07 4.85c-.05 1.17-.25 1.8-.41 2.23-.22.56-.48.96-.9 1.38-.42.42-.82.68-1.38.9-.42.16-1.06.36-2.23.41-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-1.17-.05-1.8-.25-2.23-.41a3.7 3.7 0 0 1-1.38-.9 3.7 3.7 0 0 1-.9-1.38c-.16-.42-.36-1.06-.41-2.23C2.17 15.58 2.16 15.2 2.16 12s.01-3.58.07-4.85c.05-1.17.25-1.8.41-2.23.22-.56.48-.96.9-1.38.42-.42.82-.68 1.38-.9.42-.16 1.06-.36 2.23-.41C8.42 2.17 8.8 2.16 12 2.16Zm0 1.62c-3.15 0-3.5.01-4.74.07-.9.04-1.39.19-1.71.32-.43.17-.74.37-1.06.69-.32.32-.52.63-.69 1.06-.13.32-.28.81-.32 1.71-.06 1.24-.07 1.59-.07 4.74s.01 3.5.07 4.74c.04.9.19 1.39.32 1.71.17.43.37.74.69 1.06.32.32.63.52 1.06.69.32.13.81.28 1.71.32 1.24.06 1.59.07 4.74.07s3.5-.01 4.74-.07c.9-.04 1.39-.19 1.71-.32.43-.17.74-.37 1.06-.69.32-.32.52-.63.69-1.06.13-.32.28-.81.32-1.71.06-1.24.07-1.59.07-4.74s-.01-3.5-.07-4.74c-.04-.9-.19-1.39-.32-1.71a2.85 2.85 0 0 0-.69-1.06 2.85 2.85 0 0 0-1.06-.69c-.32-.13-.81-.28-1.71-.32-1.24-.06-1.59-.07-4.74-.07Zm0 2.76a5.46 5.46 0 1 1 0 10.92 5.46 5.46 0 0 1 0-10.92Zm0 9a3.54 3.54 0 1 0 0-7.08 3.54 3.54 0 0 0 0 7.08Zm6.95-9.22a1.28 1.28 0 1 1-2.55 0 1.28 1.28 0 0 1 2.55 0Z" /></svg>);
|
|
222
|
+
}
|
|
223
|
+
// Apple/Android use their own native viewBoxes (paths lifted from the legacy
|
|
224
|
+
// iconsvg/SVG/social/{Apple,AndroidLogo}.tsx, recolored to currentColor).
|
|
225
|
+
if (name === 'apple') {
|
|
226
|
+
return (
|
|
227
|
+
<svg width={18} height={18} viewBox="0 0 291.538 291.538" fill="currentColor" aria-hidden="true">
|
|
228
|
+
<path d="M188.373 44.308c10.97-11.744 18.39-28.049 16.359-44.308-15.804.564-34.958 9.277-46.302 21.02-10.169 10.396-19.072 27.011-16.696 42.951 17.635 1.193 35.651-7.938 46.639-19.663zm33.657 112.285c-.337-36.451 28.859-53.958 30.152-54.804-16.414-24.753-41.977-28.14-51.081-28.522-21.767-2.285-42.442 13.182-53.493 13.182-11.006 0-28.03-12.882-46.083-12.536-23.733.391-45.601 14.211-57.79 36.114-24.654 44.063-6.319 109.336 17.705 145.077 11.744 17.497 25.727 37.125 44.089 36.415 17.725-.71 24.407-11.789 45.792-11.789 21.394 0 27.384 11.789 46.101 11.434 19.045-.355 31.098-17.834 42.742-35.386 13.473-20.292 19.027-39.938 19.345-40.93-.409-.237-37.088-14.666-37.479-58.255z" />
|
|
229
|
+
</svg>
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
return (
|
|
233
|
+
<svg width={18} height={18} viewBox="0 0 505.145 505.145" fill="currentColor" aria-hidden="true">
|
|
234
|
+
<path d="M68.541 164.715h-1.294c-16.588 0-30.113 13.568-30.113 30.113v131.107c0 16.61 13.525 30.134 30.113 30.134h1.316c16.588 0 30.113-13.568 30.113-30.134V194.827c-.022-16.544-13.568-30.112-30.135-30.112zM113.085 376.54c0 15.229 12.446 27.632 27.675 27.632h29.574v70.817c0 16.631 13.568 30.156 30.113 30.156h1.294c16.61 0 30.156-13.546 30.156-30.156v-70.817h41.33v70.817c0 16.631 13.611 30.156 30.156 30.156h1.273c16.609 0 30.134-13.546 30.134-30.156v-70.817h29.595c15.207 0 27.654-12.403 27.654-27.632V169.525H113.085zM322.041 43.983l23.491-36.26c1.51-2.287.841-5.414-1.467-6.903-2.286-1.51-5.414-.884-6.903 1.467l-24.353 37.512c-18.27-7.485-38.676-11.691-60.226-11.691-21.571 0-41.934 4.206-60.247 11.691l-24.31-37.512C166.538-.064 163.388-.69 161.08.82c-2.308 1.488-2.977 4.616-1.467 6.903l23.512 36.26c-42.387 20.773-70.968 59.924-70.968 104.834 0 2.761.173 5.479.41 8.175H392.62c.237-2.696.388-5.414.388-8.175.001-44.91-28.602-84.061-70.967-104.834zm-134.386 64.928c-7.442 0-13.482-5.997-13.482-13.46s6.04-13.439 13.482-13.439c7.485 0 13.482 5.975 13.482 13.439s-6.04 13.46-13.482 13.46zm129.835 0c-7.442 0-13.482-5.997-13.482-13.46s6.04-13.439 13.482-13.439c7.463 0 13.46 5.975 13.46 13.439 0 7.463-5.997 13.46-13.46 13.46zM437.876 164.715h-1.251c-16.588 0-30.156 13.568-30.156 30.113v131.107c0 16.61 13.59 30.134 30.156 30.134h1.273c16.609 0 30.113-13.568 30.113-30.134V194.827c0-16.544-13.547-30.112-30.135-30.112z" />
|
|
235
|
+
</svg>
|
|
236
|
+
);
|
|
183
237
|
};
|
|
184
238
|
|
|
185
239
|
export default Footer;
|
package/locales/de/autobahn.json
CHANGED
|
@@ -174,19 +174,32 @@
|
|
|
174
174
|
"vans": "Transporter",
|
|
175
175
|
"electricCars": "Elektroautos",
|
|
176
176
|
"buy": "Kaufen",
|
|
177
|
-
"services": "
|
|
177
|
+
"services": "Service",
|
|
178
178
|
"helpContact": "Hilfe & Kontakt",
|
|
179
|
+
"help": "Hilfe",
|
|
180
|
+
"feedback": "Feedback",
|
|
181
|
+
"contact": "Kontakt",
|
|
179
182
|
"newsletter": "Newsletter",
|
|
180
|
-
"forms": "Formulare
|
|
183
|
+
"forms": "Formulare und Vorlagen",
|
|
181
184
|
"company": "Unternehmen",
|
|
182
|
-
"about": "Über
|
|
183
|
-
"careers": "
|
|
185
|
+
"about": "Über AUTO.DE",
|
|
186
|
+
"careers": "Jobs",
|
|
184
187
|
"press": "Presse",
|
|
185
188
|
"legal": "Rechtliches",
|
|
186
189
|
"imprint": "Impressum",
|
|
187
190
|
"privacy": "Datenschutz",
|
|
188
191
|
"terms": "AGB",
|
|
192
|
+
"termsOfUse": "Nutzungsbedingungen",
|
|
189
193
|
"codex": "Kodex",
|
|
194
|
+
"dealer": "Händler",
|
|
195
|
+
"dealerAdvantages": "Vorteile",
|
|
196
|
+
"dealerLogin": "Anmelden",
|
|
197
|
+
"dealerRegister": "Registrieren",
|
|
198
|
+
"dealerTerms": "AGB für Händler",
|
|
199
|
+
"dealerPurchaseTerms": "AEB für Händler",
|
|
200
|
+
"stayInContact": "Bleiben Sie in Kontakt",
|
|
201
|
+
"iosApp": "AUTO.DE für iOS",
|
|
202
|
+
"androidApp": "AUTO.DE für Android",
|
|
190
203
|
"brandBlurb": "Auto online kaufen — geprüfte Fahrzeuge mit Lieferung nach Hause. auto.de GmbH, Sandersdorf-Brehna.",
|
|
191
204
|
"scrollUp": "Nach Oben",
|
|
192
205
|
"favoritesCount": "Merkliste",
|
package/locales/en/autobahn.json
CHANGED
|
@@ -174,19 +174,32 @@
|
|
|
174
174
|
"vans": "Vans",
|
|
175
175
|
"electricCars": "Electric cars",
|
|
176
176
|
"buy": "Buy",
|
|
177
|
-
"services": "
|
|
177
|
+
"services": "Service",
|
|
178
178
|
"helpContact": "Help & contact",
|
|
179
|
+
"help": "Help",
|
|
180
|
+
"feedback": "Feedback",
|
|
181
|
+
"contact": "Contact",
|
|
179
182
|
"newsletter": "Newsletter",
|
|
180
|
-
"forms": "Forms
|
|
183
|
+
"forms": "Forms and templates",
|
|
181
184
|
"company": "Company",
|
|
182
|
-
"about": "About
|
|
183
|
-
"careers": "
|
|
185
|
+
"about": "About AUTO.DE",
|
|
186
|
+
"careers": "Jobs",
|
|
184
187
|
"press": "Press",
|
|
185
188
|
"legal": "Legal",
|
|
186
189
|
"imprint": "Imprint",
|
|
187
190
|
"privacy": "Privacy policy",
|
|
188
191
|
"terms": "Terms and conditions",
|
|
192
|
+
"termsOfUse": "Terms of use",
|
|
189
193
|
"codex": "Code of conduct",
|
|
194
|
+
"dealer": "Dealers",
|
|
195
|
+
"dealerAdvantages": "Advantages",
|
|
196
|
+
"dealerLogin": "Sign in",
|
|
197
|
+
"dealerRegister": "Register",
|
|
198
|
+
"dealerTerms": "Terms for dealers",
|
|
199
|
+
"dealerPurchaseTerms": "Purchase terms for dealers",
|
|
200
|
+
"stayInContact": "Stay in touch",
|
|
201
|
+
"iosApp": "AUTO.DE for iOS",
|
|
202
|
+
"androidApp": "AUTO.DE for Android",
|
|
190
203
|
"brandBlurb": "Buy cars online — verified vehicles with home delivery. auto.de GmbH, Sandersdorf-Brehna.",
|
|
191
204
|
"scrollUp": "Back to top",
|
|
192
205
|
"favoritesCount": "Watchlist",
|
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.9",
|
|
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",
|