@bytebrand/fe-ui-core-autobahn 1.0.153 → 1.0.154

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.153",
3
+ "version": "1.0.154",
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
@@ -1491,6 +1491,10 @@ line-height: 31px;
1491
1491
  line-height: 15px;
1492
1492
  color: #44464F;
1493
1493
  margin-bottom: 2px;
1494
+ /* long submodels (e.g. "C4 1.2 Plus/Rückfahrkamera/Sitzheizung/Tempomat") use "/" instead of
1495
+ spaces between items, so the browser's default word-wrap sees one unbreakable "word" and
1496
+ overflows past the 296px aside instead of wrapping (ADV-238). */
1497
+ overflow-wrap: break-word;
1494
1498
  }
1495
1499
  .md3 .co-aside-finance {
1496
1500
  font-family: 'Arial';
@@ -2923,6 +2927,13 @@ line-height: 31px;
2923
2927
  height: 48px;
2924
2928
  padding: 0 40px 0 10px;
2925
2929
  }
2930
+ /* ADV-238: mandatory-but-empty Geburtsdatum must show the same red border as the other
2931
+ required fields. Same specificity as the rule above (two classes) so it only wins because
2932
+ it comes later in source order — .co-personal-grid .mfield--error can't reach in here, its
2933
+ border gets overridden by .co-birthdate .mfield right above for the same reason. */
2934
+ .md3 .co-birthdate .mfield--error {
2935
+ border: 1px solid #BA1A1A;
2936
+ }
2926
2937
  /* on-the-border notch, matching .mfield-label--notch exactly (same mechanic as Vorwahl/
2927
2938
  Telefonnummer's own label) instead of the earlier stacked-inside-the-box layout. */
2928
2939
  .md3 .co-birthdate .mfield-label {
@@ -3090,6 +3101,25 @@ line-height: 31px;
3090
3101
  .md3 .co-borrower-relationship .mselect-btn {
3091
3102
  position: relative;
3092
3103
  }
3104
+ /* ADV-240 QA (comment 35891): mandatory-but-empty red border — Dropdown has no built-in visual
3105
+ error state, so this keys off the `is-error` wrapper class PaymentDetailsNext.tsx adds. Three
3106
+ classes deep so it outranks both the base .mselect-btn idle box-shadow and this file's own
3107
+ .co-borrower-relationship .mselect-btn above without needing !important. */
3108
+ .md3 .co-borrower-relationship.is-error .mselect-btn {
3109
+ box-shadow: inset 0 0 0 1px #BA1A1A;
3110
+ }
3111
+ /* same chevron glyph as the ::after above, just stroke='%23BA1A1A' (red) instead of '%23005CFF'. */
3112
+ .md3 .co-borrower-relationship.is-error .mselect-btn::after {
3113
+ background-image: url("data:image/svg+xml,%3Csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M4%206L8%2010L12%206'%20stroke='%23BA1A1A'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E");
3114
+ }
3115
+ /* .co-borrower-relationship .mselect-btn:hover below is the SAME specificity (3 classes) as the
3116
+ .is-error border rule above and comes later in the file, so hovering an errored field was
3117
+ winning the box-shadow back to idle gray. One more class (:hover added to .is-error's own
3118
+ selector) outranks it regardless of source order — same fix shape as the co-birthdate
3119
+ :focus-within override above. */
3120
+ .md3 .co-borrower-relationship.is-error .mselect-btn:hover {
3121
+ box-shadow: inset 0 0 0 1px #BA1A1A;
3122
+ }
3093
3123
  .md3 .co-borrower-relationship .mselect-btn:hover {
3094
3124
  box-shadow: inset 0 0 0 1px var(--md-outline-variant);
3095
3125
  }
@@ -3558,6 +3588,35 @@ line-height: 31px;
3558
3588
  color: #1A1B22;
3559
3589
  background: #FFFFFF;
3560
3590
  }
3591
+ /* ADV-249 QA: Lieferadresse's "Abweichende Lieferadresse" form had no validation at all — this
3592
+ is its red error state, same red as .co-error (--md-error). Each field is now wrapped in
3593
+ .co-addr-form-item (the actual grid cell) so a per-field hint can sit directly under its own
3594
+ input instead of one generic message for the whole form. */
3595
+ .md3 .co-addr-form-item {
3596
+ display: flex;
3597
+ flex-direction: column;
3598
+ gap: 4px;
3599
+ min-width: 0;
3600
+ }
3601
+ .md3 .co-addr-form-field.is-error {
3602
+ border-color: var(--md-error);
3603
+ }
3604
+ /* native focus outline stacked on top of the red border looked like two rings at once
3605
+ (browser default blue + our red) — same inset-ring swap as .mtextarea:focus, red instead of
3606
+ blue while the field is still invalid. */
3607
+ .md3 .co-addr-form-field:focus {
3608
+ outline: 0;
3609
+ box-shadow: inset 0 0 0 2px #005CFF;
3610
+ }
3611
+ .md3 .co-addr-form-field.is-error:focus {
3612
+ box-shadow: inset 0 0 0 2px var(--md-error);
3613
+ }
3614
+ .md3 .co-addr-field-hint {
3615
+ color: var(--md-error);
3616
+ font-family: 'Arimo';
3617
+ font-size: 12px;
3618
+ line-height: 14px;
3619
+ }
3561
3620
  .md3 .co-addr-form-actions {
3562
3621
  grid-column: 1 / -1;
3563
3622
  display: flex;
@@ -6419,7 +6478,8 @@ a.oo-warranty-link--icon:hover {
6419
6478
  .md3 .enq-float input:focus-visible,
6420
6479
  .md3 .enq-float textarea:focus-visible,
6421
6480
  .md3 .enquiry-name-row input:focus-visible,
6422
- .md3 .enquiry-email-wrap input:focus-visible {
6481
+ .md3 .enquiry-email-wrap input:focus-visible,
6482
+ .md3 .co-addr-form-field:focus-visible {
6423
6483
  box-shadow: none !important;
6424
6484
  }
6425
6485
  .md3 .link-accent {
@@ -1,13 +1,13 @@
1
- import * as React from 'react';
2
-
3
- // Figma-exact valid-field checkmark (.mfield-ok, FormField/MdField's showValid) — a distinct
4
- // path/stroke from the generic lucide Check that Icon name="check" renders elsewhere, so it's
5
- // its own tiny component rather than a REGISTRY entry in Icon.tsx (which would change every
6
- // other "check" usage in the app too).
7
- const MfieldCheckIcon: React.FunctionComponent = () => (
8
- <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
9
- <path d="M13.3334 4L6.00002 11.3333L2.66669 8" stroke="#168A45" strokeWidth={2} strokeLinecap="round" strokeLinejoin="round" />
10
- </svg>
11
- );
12
-
13
- export default MfieldCheckIcon;
1
+ import * as React from 'react';
2
+
3
+ // Figma-exact valid-field checkmark (.mfield-ok, FormField/MdField's showValid) — a distinct
4
+ // path/stroke from the generic lucide Check that Icon name="check" renders elsewhere, so it's
5
+ // its own tiny component rather than a REGISTRY entry in Icon.tsx (which would change every
6
+ // other "check" usage in the app too).
7
+ const MfieldCheckIcon: React.FunctionComponent = () => (
8
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
9
+ <path d="M13.3334 4L6.00002 11.3333L2.66669 8" stroke="#168A45" strokeWidth={2} strokeLinecap="round" strokeLinejoin="round" />
10
+ </svg>
11
+ );
12
+
13
+ export default MfieldCheckIcon;