@besaitech/ng-design-system 0.0.26 → 0.0.29
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.
|
Binary file
|
|
@@ -29,6 +29,9 @@ const SDS_ICONS = {
|
|
|
29
29
|
'user-plus': '<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><line x1="19" x2="19" y1="8" y2="14"/><line x1="22" x2="16" y1="11" y2="11"/>',
|
|
30
30
|
hand: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hand-icon lucide-hand"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg>',
|
|
31
31
|
users: '<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>',
|
|
32
|
+
// Couriers. The back-office and the courier-facing screens both name a rider, and every Belvigo
|
|
33
|
+
// surface that does should draw the same one.
|
|
34
|
+
bike: '<circle cx="18.5" cy="17.5" r="3.5"/><circle cx="5.5" cy="17.5" r="3.5"/><circle cx="15" cy="5" r="1"/><path d="M12 17.5V14l-3-3 4-3 2 3h2"/>',
|
|
32
35
|
'building-2': '<path d="M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z"/><path d="M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2"/><path d="M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2"/><path d="M10 6h4"/><path d="M10 10h4"/><path d="M10 14h4"/><path d="M10 18h4"/>',
|
|
33
36
|
package: '<path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"/><path d="M12 22V12"/><polyline points="3.29 7 12 12 20.71 7"/><path d="m7.5 4.27 9 5.15"/>',
|
|
34
37
|
'package-plus': '<path d="M16 16h6"/><path d="M19 13v6"/><path d="M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0"/><path d="m7.5 4.27 9 5.15"/><polyline points="3.29 7 12 12 20.71 7"/><path d="M12 22V12"/>',
|
|
@@ -273,11 +276,33 @@ class SdsInput {
|
|
|
273
276
|
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
274
277
|
hint = input('', ...(ngDevMode ? [{ debugName: "hint" }] : []));
|
|
275
278
|
error = input('', ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
279
|
+
/**
|
|
280
|
+
* `search` is the semantically right type for a search field, and the template strips the WebKit
|
|
281
|
+
* search decorations that come with it. Without that, a `search` field with {@link clearable} draws
|
|
282
|
+
* TWO clear buttons — the component's and the browser's own, which no stylesheet can reach and which
|
|
283
|
+
* sits outside the field's own padding.
|
|
284
|
+
*/
|
|
276
285
|
type = input('text', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
277
286
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
287
|
+
/**
|
|
288
|
+
* `filled` is a borderless field on a muted ground, for a search box that has to sit inside a page
|
|
289
|
+
* rather than announce itself as a form control — a storefront's search pill above all.
|
|
290
|
+
* `on-brand` is the same field tuned for a dark surface.
|
|
291
|
+
*/
|
|
278
292
|
appearance = input('default', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
|
|
293
|
+
/**
|
|
294
|
+
* `pill` fully rounds the field. Separate from {@link appearance} on purpose: a bordered pill and a
|
|
295
|
+
* filled box are both real designs, and folding the two axes into one enum would forbid half of them.
|
|
296
|
+
*/
|
|
297
|
+
shape = input('control', ...(ngDevMode ? [{ debugName: "shape" }] : []));
|
|
279
298
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
280
299
|
clearable = input(false, ...(ngDevMode ? [{ debugName: "clearable", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
300
|
+
/**
|
|
301
|
+
* Accessible name for the clear button. French default so existing consumers are unchanged, but an
|
|
302
|
+
* app serving more than one language MUST translate it — it is an icon-only control, so this string
|
|
303
|
+
* is its only name.
|
|
304
|
+
*/
|
|
305
|
+
clearLabel = input('Effacer', ...(ngDevMode ? [{ debugName: "clearLabel" }] : []));
|
|
281
306
|
leadingIcon = input(null, ...(ngDevMode ? [{ debugName: "leadingIcon" }] : []));
|
|
282
307
|
trailingIcon = input(null, ...(ngDevMode ? [{ debugName: "trailingIcon" }] : []));
|
|
283
308
|
/**
|
|
@@ -299,6 +324,8 @@ class SdsInput {
|
|
|
299
324
|
value = signal('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
300
325
|
cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : []));
|
|
301
326
|
onBrand = computed(() => this.appearance() === 'on-brand', ...(ngDevMode ? [{ debugName: "onBrand" }] : []));
|
|
327
|
+
filled = computed(() => this.appearance() === 'filled', ...(ngDevMode ? [{ debugName: "filled" }] : []));
|
|
328
|
+
pill = computed(() => this.shape() === 'pill', ...(ngDevMode ? [{ debugName: "pill" }] : []));
|
|
302
329
|
isDisabled = computed(() => this.disabled() || this.cvaDisabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
|
|
303
330
|
describedBy = computed(() => {
|
|
304
331
|
if (this.error())
|
|
@@ -308,15 +335,29 @@ class SdsInput {
|
|
|
308
335
|
return null;
|
|
309
336
|
}, ...(ngDevMode ? [{ debugName: "describedBy" }] : []));
|
|
310
337
|
fieldPadding = computed(() => {
|
|
311
|
-
const
|
|
312
|
-
const
|
|
338
|
+
const inset = this.pill() ? 'pl-11' : 'pl-10';
|
|
339
|
+
const bare = this.pill() ? 'pl-5' : 'pl-3.5';
|
|
340
|
+
const left = this.leadingIcon() ? inset : bare;
|
|
341
|
+
const right = this.trailingIcon() || this.clearable() || this.trailingAction()
|
|
342
|
+
? 'pr-10'
|
|
343
|
+
: this.pill()
|
|
344
|
+
? 'pr-5'
|
|
345
|
+
: 'pr-3.5';
|
|
313
346
|
return `${left} ${right}`;
|
|
314
347
|
}, ...(ngDevMode ? [{ debugName: "fieldPadding" }] : []));
|
|
315
348
|
wrapperClasses = computed(() => {
|
|
316
|
-
const parts = [SIZES$8[this.size()]];
|
|
349
|
+
const parts = [SIZES$8[this.size()], this.pill() ? 'rounded-full' : 'rounded-control'];
|
|
317
350
|
if (this.isDisabled())
|
|
318
351
|
parts.push('opacity-60 cursor-not-allowed');
|
|
319
|
-
if (this.
|
|
352
|
+
if (this.filled()) {
|
|
353
|
+
// border-transparent, not border-0: the border box is what keeps a filled field the same height
|
|
354
|
+
// as a bordered one, so the two sit level when a toolbar mixes them.
|
|
355
|
+
parts.push('border-transparent bg-muted text-ink');
|
|
356
|
+
parts.push(this.error()
|
|
357
|
+
? 'border-danger focus-within:ring-2 focus-within:ring-danger/30'
|
|
358
|
+
: 'focus-within:ring-2 focus-within:ring-brand-500/25');
|
|
359
|
+
}
|
|
360
|
+
else if (this.onBrand()) {
|
|
320
361
|
parts.push('bg-white/10 text-white');
|
|
321
362
|
parts.push(this.error()
|
|
322
363
|
? 'border-danger focus-within:ring-2 focus-within:ring-danger/30'
|
|
@@ -356,7 +397,7 @@ class SdsInput {
|
|
|
356
397
|
this.onTouched();
|
|
357
398
|
}
|
|
358
399
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SdsInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
359
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SdsInput, isStandalone: true, selector: "sds-input", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, leadingIcon: { classPropertyName: "leadingIcon", publicName: "leadingIcon", isSignal: true, isRequired: false, transformFunction: null }, trailingIcon: { classPropertyName: "trailingIcon", publicName: "trailingIcon", isSignal: true, isRequired: false, transformFunction: null }, trailingAction: { classPropertyName: "trailingAction", publicName: "trailingAction", isSignal: true, isRequired: false, transformFunction: null }, trailingActionLabel: { classPropertyName: "trailingActionLabel", publicName: "trailingActionLabel", isSignal: true, isRequired: false, transformFunction: null }, trailingActionPressed: { classPropertyName: "trailingActionPressed", publicName: "trailingActionPressed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trailingActionClick: "trailingActionClick" }, host: { classAttribute: "block" }, providers: [
|
|
400
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SdsInput, isStandalone: true, selector: "sds-input", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, clearLabel: { classPropertyName: "clearLabel", publicName: "clearLabel", isSignal: true, isRequired: false, transformFunction: null }, leadingIcon: { classPropertyName: "leadingIcon", publicName: "leadingIcon", isSignal: true, isRequired: false, transformFunction: null }, trailingIcon: { classPropertyName: "trailingIcon", publicName: "trailingIcon", isSignal: true, isRequired: false, transformFunction: null }, trailingAction: { classPropertyName: "trailingAction", publicName: "trailingAction", isSignal: true, isRequired: false, transformFunction: null }, trailingActionLabel: { classPropertyName: "trailingActionLabel", publicName: "trailingActionLabel", isSignal: true, isRequired: false, transformFunction: null }, trailingActionPressed: { classPropertyName: "trailingActionPressed", publicName: "trailingActionPressed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trailingActionClick: "trailingActionClick" }, host: { classAttribute: "block" }, providers: [
|
|
360
401
|
{
|
|
361
402
|
provide: NG_VALUE_ACCESSOR,
|
|
362
403
|
useExisting: forwardRef(() => SdsInput),
|
|
@@ -374,14 +415,17 @@ class SdsInput {
|
|
|
374
415
|
}
|
|
375
416
|
|
|
376
417
|
<div
|
|
377
|
-
class="relative flex items-center
|
|
418
|
+
class="relative flex items-center border transition-colors"
|
|
378
419
|
[class]="wrapperClasses()"
|
|
379
420
|
>
|
|
380
421
|
@if (leadingIcon()) {
|
|
422
|
+
<!-- A pill needs its icon further in: on a fully-rounded field an icon at left-3 sits over
|
|
423
|
+
the curve rather than inside the field. -->
|
|
381
424
|
<sds-icon
|
|
382
425
|
[name]="leadingIcon()!"
|
|
383
426
|
[size]="18"
|
|
384
|
-
class="pointer-events-none absolute
|
|
427
|
+
class="pointer-events-none absolute opacity-70"
|
|
428
|
+
[class]="pill() ? 'left-4' : 'left-3'"
|
|
385
429
|
/>
|
|
386
430
|
}
|
|
387
431
|
|
|
@@ -394,7 +438,9 @@ class SdsInput {
|
|
|
394
438
|
[attr.aria-label]="!label() && ariaLabel() ? ariaLabel() : null"
|
|
395
439
|
[attr.aria-invalid]="error() ? 'true' : null"
|
|
396
440
|
[attr.aria-describedby]="describedBy()"
|
|
397
|
-
class="w-full bg-transparent outline-none placeholder:text-current/50 disabled:cursor-not-allowed
|
|
441
|
+
class="w-full bg-transparent outline-none placeholder:text-current/50 disabled:cursor-not-allowed
|
|
442
|
+
[&::-webkit-search-cancel-button]:appearance-none
|
|
443
|
+
[&::-webkit-search-decoration]:appearance-none"
|
|
398
444
|
[class]="fieldPadding()"
|
|
399
445
|
(input)="onInput($event)"
|
|
400
446
|
(blur)="onTouched()"
|
|
@@ -404,7 +450,7 @@ class SdsInput {
|
|
|
404
450
|
<button
|
|
405
451
|
type="button"
|
|
406
452
|
tabindex="-1"
|
|
407
|
-
aria-label="
|
|
453
|
+
[attr.aria-label]="clearLabel()"
|
|
408
454
|
class="absolute right-2.5 inline-flex h-6 w-6 items-center justify-center rounded-full opacity-60 hover:opacity-100 hover:bg-black/5"
|
|
409
455
|
(click)="clear()"
|
|
410
456
|
>
|
|
@@ -472,14 +518,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
472
518
|
}
|
|
473
519
|
|
|
474
520
|
<div
|
|
475
|
-
class="relative flex items-center
|
|
521
|
+
class="relative flex items-center border transition-colors"
|
|
476
522
|
[class]="wrapperClasses()"
|
|
477
523
|
>
|
|
478
524
|
@if (leadingIcon()) {
|
|
525
|
+
<!-- A pill needs its icon further in: on a fully-rounded field an icon at left-3 sits over
|
|
526
|
+
the curve rather than inside the field. -->
|
|
479
527
|
<sds-icon
|
|
480
528
|
[name]="leadingIcon()!"
|
|
481
529
|
[size]="18"
|
|
482
|
-
class="pointer-events-none absolute
|
|
530
|
+
class="pointer-events-none absolute opacity-70"
|
|
531
|
+
[class]="pill() ? 'left-4' : 'left-3'"
|
|
483
532
|
/>
|
|
484
533
|
}
|
|
485
534
|
|
|
@@ -492,7 +541,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
492
541
|
[attr.aria-label]="!label() && ariaLabel() ? ariaLabel() : null"
|
|
493
542
|
[attr.aria-invalid]="error() ? 'true' : null"
|
|
494
543
|
[attr.aria-describedby]="describedBy()"
|
|
495
|
-
class="w-full bg-transparent outline-none placeholder:text-current/50 disabled:cursor-not-allowed
|
|
544
|
+
class="w-full bg-transparent outline-none placeholder:text-current/50 disabled:cursor-not-allowed
|
|
545
|
+
[&::-webkit-search-cancel-button]:appearance-none
|
|
546
|
+
[&::-webkit-search-decoration]:appearance-none"
|
|
496
547
|
[class]="fieldPadding()"
|
|
497
548
|
(input)="onInput($event)"
|
|
498
549
|
(blur)="onTouched()"
|
|
@@ -502,7 +553,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
502
553
|
<button
|
|
503
554
|
type="button"
|
|
504
555
|
tabindex="-1"
|
|
505
|
-
aria-label="
|
|
556
|
+
[attr.aria-label]="clearLabel()"
|
|
506
557
|
class="absolute right-2.5 inline-flex h-6 w-6 items-center justify-center rounded-full opacity-60 hover:opacity-100 hover:bg-black/5"
|
|
507
558
|
(click)="clear()"
|
|
508
559
|
>
|
|
@@ -544,7 +595,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
544
595
|
}
|
|
545
596
|
`,
|
|
546
597
|
}]
|
|
547
|
-
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], leadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingIcon", required: false }] }], trailingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingIcon", required: false }] }], trailingAction: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingAction", required: false }] }], trailingActionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingActionLabel", required: false }] }], trailingActionPressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingActionPressed", required: false }] }], trailingActionClick: [{ type: i0.Output, args: ["trailingActionClick"] }] } });
|
|
598
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], clearLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearLabel", required: false }] }], leadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingIcon", required: false }] }], trailingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingIcon", required: false }] }], trailingAction: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingAction", required: false }] }], trailingActionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingActionLabel", required: false }] }], trailingActionPressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingActionPressed", required: false }] }], trailingActionClick: [{ type: i0.Output, args: ["trailingActionClick"] }] } });
|
|
548
599
|
|
|
549
600
|
let nextId$9 = 0;
|
|
550
601
|
const SIZES$7 = {
|
|
@@ -6632,9 +6683,19 @@ class SdsTopbar {
|
|
|
6632
6683
|
</button>
|
|
6633
6684
|
}
|
|
6634
6685
|
<ng-content select="[sdsLogo]" />
|
|
6686
|
+
<!--
|
|
6687
|
+
shrink-0 + whitespace-nowrap, both required. The left block is a flex row, so without them a
|
|
6688
|
+
two-word app name wraps to a second line INSIDE a bar whose height is fixed at
|
|
6689
|
+
--sds-topbar-h, and the name is clipped by its own bar. It surfaced at 375px on a bar
|
|
6690
|
+
carrying a logo, a wordmark and a two-syllable name; it is wrong at every width.
|
|
6691
|
+
|
|
6692
|
+
The name never truncates and never hides: it is the answer to "which app am I in", which on a
|
|
6693
|
+
platform of five same-branded apps is the one thing the bar must not drop. An app whose left
|
|
6694
|
+
block is too crowded for a phone hides ITS OWN wordmark under sm and keeps the mark.
|
|
6695
|
+
-->
|
|
6635
6696
|
@if (appName()) {
|
|
6636
|
-
<span class="h-7 w-px" [class]="appearance() === 'brand' ? 'bg-white/30' : 'bg-border'"></span>
|
|
6637
|
-
<span class="text-xl font-bold tracking-tight">{{ appName() }}</span>
|
|
6697
|
+
<span class="h-7 w-px shrink-0" [class]="appearance() === 'brand' ? 'bg-white/30' : 'bg-border'"></span>
|
|
6698
|
+
<span class="shrink-0 whitespace-nowrap text-xl font-bold tracking-tight">{{ appName() }}</span>
|
|
6638
6699
|
}
|
|
6639
6700
|
<ng-content select="[sdsLead]" />
|
|
6640
6701
|
</div>
|
|
@@ -6721,9 +6782,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
6721
6782
|
</button>
|
|
6722
6783
|
}
|
|
6723
6784
|
<ng-content select="[sdsLogo]" />
|
|
6785
|
+
<!--
|
|
6786
|
+
shrink-0 + whitespace-nowrap, both required. The left block is a flex row, so without them a
|
|
6787
|
+
two-word app name wraps to a second line INSIDE a bar whose height is fixed at
|
|
6788
|
+
--sds-topbar-h, and the name is clipped by its own bar. It surfaced at 375px on a bar
|
|
6789
|
+
carrying a logo, a wordmark and a two-syllable name; it is wrong at every width.
|
|
6790
|
+
|
|
6791
|
+
The name never truncates and never hides: it is the answer to "which app am I in", which on a
|
|
6792
|
+
platform of five same-branded apps is the one thing the bar must not drop. An app whose left
|
|
6793
|
+
block is too crowded for a phone hides ITS OWN wordmark under sm and keeps the mark.
|
|
6794
|
+
-->
|
|
6724
6795
|
@if (appName()) {
|
|
6725
|
-
<span class="h-7 w-px" [class]="appearance() === 'brand' ? 'bg-white/30' : 'bg-border'"></span>
|
|
6726
|
-
<span class="text-xl font-bold tracking-tight">{{ appName() }}</span>
|
|
6796
|
+
<span class="h-7 w-px shrink-0" [class]="appearance() === 'brand' ? 'bg-white/30' : 'bg-border'"></span>
|
|
6797
|
+
<span class="shrink-0 whitespace-nowrap text-xl font-bold tracking-tight">{{ appName() }}</span>
|
|
6727
6798
|
}
|
|
6728
6799
|
<ng-content select="[sdsLead]" />
|
|
6729
6800
|
</div>
|