@webority/theme 0.122.0 → 0.124.0

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": "@webority/theme",
3
- "version": "0.122.0",
3
+ "version": "0.124.0",
4
4
  "description": "Webority shared design system — Bootstrap 5.3 SCSS overrides, --wui-* tokens, and shared component CSS. The single source of brand chrome for React portals and Razor sites.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {
@@ -47,7 +47,7 @@
47
47
  "postcss": "^8.5.31"
48
48
  },
49
49
  "devDependencies": {
50
- "@webority/tokens": "0.122.0",
50
+ "@webority/tokens": "0.124.0",
51
51
  "bootstrap": "5.3.3",
52
52
  "country-flag-icons": "^1.6.20",
53
53
  "sass-embedded": "^1.97.0",
@@ -1,4 +1,4 @@
1
- // Generated by @webority/tokens 0.122.0 from its token source. Do not edit; run webority brand --library.
1
+ // Generated by @webority/tokens 0.124.0 from its token source. Do not edit; run webority brand --library.
2
2
  $body-color: #252f4a !default;
3
3
  $body-secondary-color: #4b5675 !default;
4
4
  $body-tertiary-color: #626a82 !default;
@@ -1,4 +1,4 @@
1
- // Generated by @webority/tokens 0.122.0 from its token source. Do not edit; run webority brand --library.
1
+ // Generated by @webority/tokens 0.124.0 from its token source. Do not edit; run webority brand --library.
2
2
 
3
3
  :root {
4
4
  --wui-primary: #4F46E5;
@@ -360,6 +360,13 @@
360
360
  --wui-surface-mute: var(--wui-dark-bg-muted);
361
361
  --wui-neutral-bg-dark: var(--wui-dark-bg-muted);
362
362
  --wui-neutral-bg-light: var(--wui-dark-bg-surface);
363
+ --wui-info-10: color-mix(in srgb, var(--wui-info) 16%, var(--wui-dark-bg-surface));
364
+ --wui-info-5: color-mix(in srgb, var(--wui-info) 10%, var(--wui-dark-bg-surface));
365
+ --wui-success-10: color-mix(in srgb, var(--wui-success) 16%, var(--wui-dark-bg-surface));
366
+ --wui-success-5: color-mix(in srgb, var(--wui-success) 10%, var(--wui-dark-bg-surface));
367
+ --wui-warning-10: color-mix(in srgb, var(--wui-warning) 16%, var(--wui-dark-bg-surface));
368
+ --wui-warning-5: color-mix(in srgb, var(--wui-warning) 10%, var(--wui-dark-bg-surface));
369
+ --wui-danger-10: color-mix(in srgb, var(--wui-danger) 16%, var(--wui-dark-bg-surface));
363
370
  --wui-danger-5: color-mix(in srgb, var(--wui-danger) 10%, var(--wui-dark-bg-surface));
364
371
  --wui-chart-1: var(--wui-dark-primary);
365
372
  --wui-chart-2: var(--wui-dark-chart-2);
@@ -380,6 +387,8 @@
380
387
  --wui-chart-diverging-mid: var(--wui-dark-chart-diverging-mid);
381
388
  --wui-chart-diverging-high: var(--wui-dark-chart-diverging-high);
382
389
  --wui-chart-neutral: var(--wui-dark-chart-neutral);
390
+ --wui-shadow-popover: 0px 8px 28px -6px rgba(0, 0, 0, 0.55);
391
+ --wui-shadow-modal: 0px 24px 60px -16px rgba(0, 0, 0, 0.7);
383
392
  --color-bg: var(--wui-dark-bg-page);
384
393
  --color-bg-subtle: var(--wui-dark-bg-elevated);
385
394
  --color-bg-muted: var(--wui-dark-bg-muted);
@@ -475,6 +484,7 @@
475
484
  --bs-emphasis-color: var(--color-text);
476
485
  --bs-secondary-color: var(--color-text-muted);
477
486
  --bs-tertiary-color: var(--color-text-subtle);
487
+ --bs-heading-color: var(--color-text);
478
488
  --bs-body-bg: var(--color-bg);
479
489
  --bs-border-color: var(--color-border);
480
490
  --bs-secondary-bg: var(--color-surface);
@@ -505,6 +515,13 @@
505
515
  --wui-surface-mute: var(--wui-dark-bg-muted);
506
516
  --wui-neutral-bg-dark: var(--wui-dark-bg-muted);
507
517
  --wui-neutral-bg-light: var(--wui-dark-bg-surface);
518
+ --wui-info-10: color-mix(in srgb, var(--wui-info) 16%, var(--wui-dark-bg-surface));
519
+ --wui-info-5: color-mix(in srgb, var(--wui-info) 10%, var(--wui-dark-bg-surface));
520
+ --wui-success-10: color-mix(in srgb, var(--wui-success) 16%, var(--wui-dark-bg-surface));
521
+ --wui-success-5: color-mix(in srgb, var(--wui-success) 10%, var(--wui-dark-bg-surface));
522
+ --wui-warning-10: color-mix(in srgb, var(--wui-warning) 16%, var(--wui-dark-bg-surface));
523
+ --wui-warning-5: color-mix(in srgb, var(--wui-warning) 10%, var(--wui-dark-bg-surface));
524
+ --wui-danger-10: color-mix(in srgb, var(--wui-danger) 16%, var(--wui-dark-bg-surface));
508
525
  --wui-danger-5: color-mix(in srgb, var(--wui-danger) 10%, var(--wui-dark-bg-surface));
509
526
  --wui-chart-1: var(--wui-dark-primary);
510
527
  --wui-chart-2: var(--wui-dark-chart-2);
@@ -525,6 +542,8 @@
525
542
  --wui-chart-diverging-mid: var(--wui-dark-chart-diverging-mid);
526
543
  --wui-chart-diverging-high: var(--wui-dark-chart-diverging-high);
527
544
  --wui-chart-neutral: var(--wui-dark-chart-neutral);
545
+ --wui-shadow-popover: 0px 8px 28px -6px rgba(0, 0, 0, 0.55);
546
+ --wui-shadow-modal: 0px 24px 60px -16px rgba(0, 0, 0, 0.7);
528
547
  --color-bg: var(--wui-dark-bg-page);
529
548
  --color-bg-subtle: var(--wui-dark-bg-elevated);
530
549
  --color-bg-muted: var(--wui-dark-bg-muted);
@@ -620,6 +639,7 @@
620
639
  --bs-emphasis-color: var(--color-text);
621
640
  --bs-secondary-color: var(--color-text-muted);
622
641
  --bs-tertiary-color: var(--color-text-subtle);
642
+ --bs-heading-color: var(--color-text);
623
643
  --bs-body-bg: var(--color-bg);
624
644
  --bs-border-color: var(--color-border);
625
645
  --bs-secondary-bg: var(--color-surface);
@@ -645,29 +665,30 @@
645
665
 
646
666
  $wui-dark-layer-names: (
647
667
  wui-primary-50, wui-primary-30, wui-primary-20, wui-primary-15, wui-primary-10, wui-primary-5,
648
- wui-surface-soft, wui-surface-violet-soft, wui-surface-mute, wui-neutral-bg-dark, wui-neutral-bg-light, wui-danger-5,
649
- wui-chart-1, wui-chart-2, wui-chart-3, wui-chart-4, wui-chart-5, wui-chart-6,
650
- wui-chart-7, wui-chart-8, wui-chart-seq-0, wui-chart-seq-1, wui-chart-seq-2, wui-chart-seq-3,
651
- wui-chart-seq-4, wui-chart-seq-5, wui-chart-seq-6, wui-chart-diverging-low, wui-chart-diverging-mid, wui-chart-diverging-high,
652
- wui-chart-neutral, color-bg, color-bg-subtle, color-bg-muted, color-surface, color-surface-inverse,
653
- color-text, color-text-body, color-text-muted, color-text-subtle, color-text-inverse, color-link,
654
- color-border, color-border-subtle, color-border-strong, color-field-bg, color-field-border, color-field-border-hover,
655
- color-field-border-focus, color-scrim, color-scrim-strong, color-progress-track, color-progress-label, color-thumb,
656
- color-scrollbar, color-scrollbar-hover, color-scrollbar-active, color-primary, color-primary-hover, color-primary-soft,
657
- color-primary-text, color-on-primary, color-success, color-success-pressed, color-success-soft, color-success-border,
658
- color-success-text, color-success-text-on-soft, color-success-strong, color-on-success, color-on-success-strong, color-warning,
659
- color-warning-pressed, color-warning-soft, color-warning-border, color-warning-text, color-warning-text-on-soft, color-warning-strong,
660
- color-warning-strong-hover, color-on-warning, color-on-warning-strong, color-danger, color-danger-pressed, color-danger-soft,
661
- color-danger-border, color-danger-text, color-danger-text-on-soft, color-danger-strong, color-danger-strong-hover, color-on-danger,
662
- color-on-danger-strong, color-info, color-info-pressed, color-info-soft, color-info-border, color-info-text,
663
- color-info-text-on-soft, color-info-strong, color-on-info, color-on-info-strong, color-chart-1, color-chart-2,
664
- color-chart-3, color-chart-4, color-chart-5, color-chart-6, color-chart-7, color-chart-8,
665
- color-chart-seq-0, color-chart-seq-1, color-chart-seq-2, color-chart-seq-3, color-chart-seq-4, color-chart-seq-5,
666
- color-chart-seq-6, color-chart-diverging-low, color-chart-diverging-mid, color-chart-diverging-high, color-chart-neutral, wui-close-filter,
667
- wui-thumb-shadow, wui-thumb-shadow-hover, bs-body-color, bs-emphasis-color, bs-secondary-color, bs-tertiary-color,
668
- bs-body-bg, bs-border-color, bs-secondary-bg, bs-tertiary-bg, bs-primary, bs-body-bg-rgb,
669
- bs-primary-rgb, bs-body-color-rgb, bs-emphasis-color-rgb, bs-secondary-color-rgb, bs-tertiary-color-rgb, bs-secondary-bg-rgb,
670
- bs-tertiary-bg-rgb, bs-border-color-rgb
668
+ wui-surface-soft, wui-surface-violet-soft, wui-surface-mute, wui-neutral-bg-dark, wui-neutral-bg-light, wui-info-10,
669
+ wui-info-5, wui-success-10, wui-success-5, wui-warning-10, wui-warning-5, wui-danger-10,
670
+ wui-danger-5, wui-chart-1, wui-chart-2, wui-chart-3, wui-chart-4, wui-chart-5,
671
+ wui-chart-6, wui-chart-7, wui-chart-8, wui-chart-seq-0, wui-chart-seq-1, wui-chart-seq-2,
672
+ wui-chart-seq-3, wui-chart-seq-4, wui-chart-seq-5, wui-chart-seq-6, wui-chart-diverging-low, wui-chart-diverging-mid,
673
+ wui-chart-diverging-high, wui-chart-neutral, wui-shadow-popover, wui-shadow-modal, color-bg, color-bg-subtle,
674
+ color-bg-muted, color-surface, color-surface-inverse, color-text, color-text-body, color-text-muted,
675
+ color-text-subtle, color-text-inverse, color-link, color-border, color-border-subtle, color-border-strong,
676
+ color-field-bg, color-field-border, color-field-border-hover, color-field-border-focus, color-scrim, color-scrim-strong,
677
+ color-progress-track, color-progress-label, color-thumb, color-scrollbar, color-scrollbar-hover, color-scrollbar-active,
678
+ color-primary, color-primary-hover, color-primary-soft, color-primary-text, color-on-primary, color-success,
679
+ color-success-pressed, color-success-soft, color-success-border, color-success-text, color-success-text-on-soft, color-success-strong,
680
+ color-on-success, color-on-success-strong, color-warning, color-warning-pressed, color-warning-soft, color-warning-border,
681
+ color-warning-text, color-warning-text-on-soft, color-warning-strong, color-warning-strong-hover, color-on-warning, color-on-warning-strong,
682
+ color-danger, color-danger-pressed, color-danger-soft, color-danger-border, color-danger-text, color-danger-text-on-soft,
683
+ color-danger-strong, color-danger-strong-hover, color-on-danger, color-on-danger-strong, color-info, color-info-pressed,
684
+ color-info-soft, color-info-border, color-info-text, color-info-text-on-soft, color-info-strong, color-on-info,
685
+ color-on-info-strong, color-chart-1, color-chart-2, color-chart-3, color-chart-4, color-chart-5,
686
+ color-chart-6, color-chart-7, color-chart-8, color-chart-seq-0, color-chart-seq-1, color-chart-seq-2,
687
+ color-chart-seq-3, color-chart-seq-4, color-chart-seq-5, color-chart-seq-6, color-chart-diverging-low, color-chart-diverging-mid,
688
+ color-chart-diverging-high, color-chart-neutral, wui-close-filter, wui-thumb-shadow, wui-thumb-shadow-hover, bs-body-color,
689
+ bs-emphasis-color, bs-secondary-color, bs-tertiary-color, bs-heading-color, bs-body-bg, bs-border-color,
690
+ bs-secondary-bg, bs-tertiary-bg, bs-primary, bs-body-bg-rgb, bs-primary-rgb, bs-body-color-rgb,
691
+ bs-emphasis-color-rgb, bs-secondary-color-rgb, bs-tertiary-color-rgb, bs-secondary-bg-rgb, bs-tertiary-bg-rgb, bs-border-color-rgb
671
692
  );
672
693
 
673
694
  // var() resolves where a name is declared, so the html copies keep the light values for a light box.
@@ -708,6 +729,13 @@ html {
708
729
  --wui-surface-mute: var(--wui-dark-bg-muted);
709
730
  --wui-neutral-bg-dark: var(--wui-dark-bg-muted);
710
731
  --wui-neutral-bg-light: var(--wui-dark-bg-surface);
732
+ --wui-info-10: color-mix(in srgb, var(--wui-info) 16%, var(--wui-dark-bg-surface));
733
+ --wui-info-5: color-mix(in srgb, var(--wui-info) 10%, var(--wui-dark-bg-surface));
734
+ --wui-success-10: color-mix(in srgb, var(--wui-success) 16%, var(--wui-dark-bg-surface));
735
+ --wui-success-5: color-mix(in srgb, var(--wui-success) 10%, var(--wui-dark-bg-surface));
736
+ --wui-warning-10: color-mix(in srgb, var(--wui-warning) 16%, var(--wui-dark-bg-surface));
737
+ --wui-warning-5: color-mix(in srgb, var(--wui-warning) 10%, var(--wui-dark-bg-surface));
738
+ --wui-danger-10: color-mix(in srgb, var(--wui-danger) 16%, var(--wui-dark-bg-surface));
711
739
  --wui-danger-5: color-mix(in srgb, var(--wui-danger) 10%, var(--wui-dark-bg-surface));
712
740
  --wui-chart-1: var(--wui-dark-primary);
713
741
  --wui-chart-2: var(--wui-dark-chart-2);
@@ -728,6 +756,8 @@ html {
728
756
  --wui-chart-diverging-mid: var(--wui-dark-chart-diverging-mid);
729
757
  --wui-chart-diverging-high: var(--wui-dark-chart-diverging-high);
730
758
  --wui-chart-neutral: var(--wui-dark-chart-neutral);
759
+ --wui-shadow-popover: 0px 8px 28px -6px rgba(0, 0, 0, 0.55);
760
+ --wui-shadow-modal: 0px 24px 60px -16px rgba(0, 0, 0, 0.7);
731
761
  --color-bg: var(--wui-dark-bg-page);
732
762
  --color-bg-subtle: var(--wui-dark-bg-elevated);
733
763
  --color-bg-muted: var(--wui-dark-bg-muted);
@@ -823,6 +853,7 @@ html {
823
853
  --bs-emphasis-color: var(--color-text);
824
854
  --bs-secondary-color: var(--color-text-muted);
825
855
  --bs-tertiary-color: var(--color-text-subtle);
856
+ --bs-heading-color: var(--color-text);
826
857
  --bs-body-bg: var(--color-bg);
827
858
  --bs-border-color: var(--color-border);
828
859
  --bs-secondary-bg: var(--color-surface);
@@ -89,3 +89,68 @@ wui-chat[position="start"] .wui-chat-panel {
89
89
  .wui-chat-composer .wui-field-message:empty {
90
90
  display: none;
91
91
  }
92
+
93
+ // Attachments wrap onto new rows as the composer or a sent question grows.
94
+ .wui-chat-attachments {
95
+ display: flex;
96
+ flex-wrap: wrap;
97
+ gap: var(--wui-space-xs);
98
+ }
99
+ .wui-chat-question-attachments {
100
+ display: flex;
101
+ flex-wrap: wrap;
102
+ justify-content: flex-end;
103
+ gap: var(--wui-space-xs);
104
+ }
105
+
106
+ // The banner that says a question is being edited, with its cancel control beside the text.
107
+ .wui-chat-editing {
108
+ display: flex;
109
+ align-items: center;
110
+ gap: var(--wui-space-sm);
111
+ padding: var(--wui-space-sm) var(--wui-space-md);
112
+ background: var(--color-bg-muted);
113
+ border-radius: var(--wui-radius-md);
114
+ color: var(--color-text-muted);
115
+ font-size: var(--wui-fs-sm);
116
+ }
117
+
118
+ // Copy, edit, retry and the other actions under an answer; they wrap rather than overflow the panel.
119
+ .wui-chat-turn-actions {
120
+ display: flex;
121
+ flex-wrap: wrap;
122
+ gap: var(--wui-space-xs);
123
+ margin-block-start: var(--wui-space-xs);
124
+ }
125
+
126
+ // Suggested follow-up questions under an answer, as wrapping chips.
127
+ .wui-chat-suggestions {
128
+ display: flex;
129
+ flex-wrap: wrap;
130
+ gap: var(--wui-space-xs);
131
+ }
132
+
133
+ // Past chats: a scrolling list in the body's padding, one row per chat.
134
+ .wui-chat-past {
135
+ display: flex;
136
+ flex-direction: column;
137
+ flex: 1 1 auto;
138
+ min-height: 0;
139
+ gap: var(--wui-space-xs);
140
+ padding: var(--wui-space-lg);
141
+ overflow: auto;
142
+ }
143
+ // min-width 0 lets the title inside the row shrink and truncate instead of pushing the row wider.
144
+ .wui-chat-past-row {
145
+ display: flex;
146
+ align-items: center;
147
+ gap: var(--wui-space-sm);
148
+ min-width: 0;
149
+ }
150
+
151
+ // Bootstrap's d-flex is !important, so hidden needs its own rule.
152
+ .wui-chat-foot[hidden],
153
+ .wui-chat-past[hidden],
154
+ .wui-chat-suggestions[hidden] {
155
+ display: none !important;
156
+ }
@@ -255,6 +255,10 @@
255
255
  box-shadow: none;
256
256
  filter: none;
257
257
  }
258
+ // Bootstrap paints a mouse-focused box's border in its compiled indigo; the switch keeps its own transparent track.
259
+ .form-check-input:focus:not(:focus-visible):not(:checked):not([type="checkbox"]:indeterminate):not(.form-switch .form-check-input) {
260
+ border-color: color-mix(in srgb, var(--color-primary) 50%, transparent);
261
+ }
258
262
  .form-check-input:checked,
259
263
  .wui-check:checked,
260
264
  .wui-radio:checked {
@@ -372,6 +376,50 @@
372
376
  border-radius: 50%;
373
377
  corner-shape: round;
374
378
  }
379
+
380
+ // Table-row switch (<app-row-switch>, AppRowSwitch): a button, not an input, so a row can post it.
381
+ // Same track, knob, colours and focus ring as the form switch above.
382
+ .wui-row-switch {
383
+ display: inline-flex;
384
+ align-items: center;
385
+ padding: 0;
386
+ border: 0;
387
+ background: none;
388
+ border-radius: var(--wui-radius-pill);
389
+ cursor: pointer;
390
+ }
391
+ .wui-row-switch:focus-visible {
392
+ outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
393
+ outline-offset: var(--wui-focus-ring-offset);
394
+ }
395
+ .wui-row-switch__track {
396
+ position: relative;
397
+ display: block;
398
+ width: 40px;
399
+ height: 22px;
400
+ border-radius: var(--wui-radius-pill);
401
+ background-color: var(--color-border-strong);
402
+ }
403
+ .wui-row-switch__thumb {
404
+ position: absolute;
405
+ top: 2px;
406
+ left: 2px;
407
+ width: 18px;
408
+ height: 18px;
409
+ border-radius: 50%;
410
+ background-color: var(--color-surface);
411
+ }
412
+ .wui-row-switch[aria-checked="true"] .wui-row-switch__track {
413
+ background-color: var(--color-primary);
414
+ }
415
+ .wui-row-switch[aria-checked="true"] .wui-row-switch__thumb {
416
+ transform: translateX(18px);
417
+ }
418
+ .wui-row-switch:disabled,
419
+ .wui-row-switch[aria-busy="true"] {
420
+ opacity: var(--wui-disabled-opacity);
421
+ cursor: not-allowed;
422
+ }
375
423
  @media (prefers-reduced-motion: reduce) {
376
424
  .form-check-input,
377
425
  .wui-check,
@@ -1335,6 +1383,22 @@ wui-select[compact] {
1335
1383
  .field > .wui-score-scale {
1336
1384
  align-self: stretch;
1337
1385
  }
1386
+ // A chosen value's photo or initials sits at the control's start edge, and the start padding makes
1387
+ // room for it: the avatar's own width plus the control's gap. The width is .avatar-xs's fixed size,
1388
+ // a layout constant with no token. Logical properties, so the start edge follows the reading direction.
1389
+ .search-select-control.wui-has-value-avatar {
1390
+ --wui-search-select-value-avatar-size: 20px;
1391
+ position: relative;
1392
+ padding-inline-start: calc(var(--wui-space-md) + var(--wui-search-select-value-avatar-size) + var(--wui-space-sm));
1393
+ }
1394
+ .search-select-control.wui-has-value-avatar > .wui-search-select-value-avatar {
1395
+ position: absolute;
1396
+ inset-inline-start: var(--wui-space-md);
1397
+ top: 50%;
1398
+ transform: translateY(-50%);
1399
+ display: inline-flex;
1400
+ pointer-events: none;
1401
+ }
1338
1402
  // A file picker fills its column by default (align-self:stretch fills the field on the cross
1339
1403
  // axis, but the field itself collapses to its content when it is a flex item — the showcase
1340
1404
  // lays fields out in a flex row — so stretch the field to its container first). Override per
@@ -768,7 +768,7 @@
768
768
  min-width: 0;
769
769
  max-width: none;
770
770
  white-space: normal;
771
- overflow-wrap: anywhere;
771
+ overflow-wrap: break-word;
772
772
  }
773
773
  .table-ledger.wui-table-stack,
774
774
  .table-ledger.wui-table-stack > tbody,
@@ -826,7 +826,7 @@
826
826
  // its edge (a long email under an avatar did).
827
827
  .table-ledger.wui-table-stack > * > tr > td > * {
828
828
  min-width: 0;
829
- overflow-wrap: anywhere;
829
+ overflow-wrap: break-word;
830
830
  }
831
831
  .table-ledger.wui-table-stack > tbody > tr > td .u-meta {
832
832
  align-items: flex-end;
@@ -851,7 +851,7 @@
851
851
  overflow: visible;
852
852
  -webkit-line-clamp: none;
853
853
  line-clamp: none;
854
- overflow-wrap: anywhere;
854
+ overflow-wrap: break-word;
855
855
  }
856
856
  // A group header is a section label between the cards, not a card of its own.
857
857
  .table-ledger.wui-table-stack > tbody > tr.wui-group-row {
@@ -937,6 +937,12 @@
937
937
  .table-wrap.wui-table-scroll:has(> .table-ledger) {
938
938
  padding-top: 0;
939
939
  }
940
+ // A scrolling table that opens its card needs its spacing outside the scroll box: padding here
941
+ // would show scrolled rows above the sticky header. The card is a flex column, so the margin
942
+ // does not collapse out of it.
943
+ .card > .table-wrap.wui-table-scroll:has(> .table-ledger):first-child {
944
+ margin-top: var(--wui-card-pad);
945
+ }
940
946
 
941
947
  // Pinned first column (`stickyFirstColumn`): the identity column, and the select/expand columns the
942
948
  // library puts before it, hold their place while a wide table scrolls sideways. The identity column
@@ -1494,6 +1494,10 @@ button.wui-link {
1494
1494
  z-index: 0;
1495
1495
  white-space: var(--wui-link-label-white-space, nowrap);
1496
1496
  }
1497
+ // A link in a table cell may wrap: a nowrap label runs under the pinned actions column.
1498
+ .table-ledger td .wui-link__label {
1499
+ --wui-link-label-white-space: normal;
1500
+ }
1497
1501
  .wui-link__ic {
1498
1502
  display: inline-flex;
1499
1503
  flex: none;
@@ -88,3 +88,9 @@
88
88
  .wui-markdown .table th {
89
89
  font-weight: 600;
90
90
  }
91
+ // A citation chip sits inside a line of text, so it takes the line's baseline.
92
+ .wui-markdown-citation {
93
+ display: inline-flex;
94
+ vertical-align: baseline;
95
+ margin-inline: var(--wui-space-xxs);
96
+ }
@@ -33,7 +33,7 @@ wui-navigation-menu {
33
33
  padding: 8px 12px;
34
34
  border: 0;
35
35
  border-radius: var(--wui-radius-sm);
36
- background: transparent;
36
+ background: var(--wui-nav-menu-item-bg, transparent);
37
37
  color: var(--color-text);
38
38
  font: inherit;
39
39
  font-size: 14px;
@@ -54,6 +54,8 @@ wui-navigation-menu {
54
54
  outline-offset: 1px;
55
55
  }
56
56
  &[aria-current="page"] {
57
+ // Set through the item variable, not background, so the hover fill above still wins.
58
+ --wui-nav-menu-item-bg: var(--wui-nav-menu-current-bg, transparent);
57
59
  color: var(--color-primary-text);
58
60
  }
59
61
  }
@@ -262,6 +262,16 @@
262
262
  filter: none;
263
263
  opacity: 1;
264
264
  }
265
+ // Dark pages: a dark mark turns light, and the hover and focus reveal keeps that inversion.
266
+ :root[data-theme="dark"] .wui-section-logo-img {
267
+ filter: grayscale(1) invert(1);
268
+ opacity: 0.8;
269
+ }
270
+ :root[data-theme="dark"] .wui-section-logo-img:hover,
271
+ :root[data-theme="dark"] .wui-section-logo a:focus-visible .wui-section-logo-img {
272
+ filter: grayscale(1) invert(1);
273
+ opacity: 1;
274
+ }
265
275
  .wui-section-logo-text {
266
276
  font-family: inherit;
267
277
  font-weight: 600;
@@ -8,7 +8,7 @@
8
8
  // Phone floor: every control here is at least 44px tall below 768px, and nothing that opens is
9
9
  // wider than the viewport less 24px.
10
10
 
11
- .app-shell {
11
+ :root {
12
12
  // One height the tab bar, the content's bottom padding and the footer's offset agree on.
13
13
  --wui-tabbar-h: 60px;
14
14
  }