@revikornmann/muka-ui 0.27.1 → 0.27.2

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.
Files changed (31) hide show
  1. package/dist/cjs/components/Avatar/Avatar.css +15 -4
  2. package/dist/cjs/components/Avatar/AvatarGroup.js +4 -2
  3. package/dist/cjs/components/Avatar/AvatarGroup.js.map +1 -1
  4. package/dist/cjs/components/Tabs/Tabs.js +6 -3
  5. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  6. package/dist/esm/components/Avatar/Avatar.css +15 -4
  7. package/dist/esm/components/Avatar/AvatarGroup.js +4 -2
  8. package/dist/esm/components/Avatar/AvatarGroup.js.map +1 -1
  9. package/dist/esm/components/Tabs/Tabs.js +6 -3
  10. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  11. package/dist/styles/components/Avatar.css +15 -4
  12. package/dist/styles/index.css +397 -385
  13. package/dist/styles/muka-dark.css +397 -385
  14. package/dist/styles/muka-light.css +397 -385
  15. package/dist/styles/tokens-bouwplan-dark.css +7 -6
  16. package/dist/styles/tokens-bouwplan-light.css +7 -6
  17. package/dist/styles/tokens-fscl-dark.css +7 -6
  18. package/dist/styles/tokens-fscl-light.css +7 -6
  19. package/dist/styles/tokens-grip-dark.css +7 -6
  20. package/dist/styles/tokens-grip-light.css +7 -6
  21. package/dist/styles/tokens-muka-dark.css +7 -6
  22. package/dist/styles/tokens-muka-light.css +7 -6
  23. package/dist/styles/tokens-wireframe-dark.css +7 -6
  24. package/dist/styles/tokens-wireframe-light.css +7 -6
  25. package/dist/styles/wireframe-dark.css +397 -385
  26. package/dist/styles/wireframe-light.css +397 -385
  27. package/dist/types/components/Avatar/AvatarGroup.d.ts +8 -0
  28. package/dist/types/components/Avatar/AvatarGroup.d.ts.map +1 -1
  29. package/dist/types/components/Tabs/Tabs.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/tokens/t4-components/avatar.json +13 -7
@@ -2079,15 +2079,16 @@ body {
2079
2079
  --avatar-status-size-xl: 1.5rem;
2080
2080
  --avatar-group-ring-width: 0.125rem;
2081
2081
  --avatar-group-ring-color: #fdfcfd;
2082
- --avatar-group-overlap-tight-sm: 2rem;
2083
- --avatar-group-overlap-tight-2xs: 1.25rem;
2082
+ --avatar-group-overlap-tight-xs: 1.75rem;
2083
+ --avatar-group-overlap-tight-2xs: 1.5rem;
2084
2084
  --avatar-group-overlap-tight-3xs: 1rem;
2085
- --avatar-group-overlap-compact-sm: 1.5rem;
2086
- --avatar-group-overlap-compact-2xs: 1rem;
2087
- --avatar-group-overlap-compact-3xs: 0.75rem;
2088
- --avatar-group-overlap-spacious-sm: 1rem;
2085
+ --avatar-group-overlap-compact-xs: 1.5rem;
2086
+ --avatar-group-overlap-compact-2xs: 1.125rem;
2087
+ --avatar-group-overlap-compact-3xs: 0.875rem;
2088
+ --avatar-group-overlap-spacious-xs: 1rem;
2089
2089
  --avatar-group-overlap-spacious-2xs: 0.75rem;
2090
2090
  --avatar-group-overlap-spacious-3xs: 0.5rem;
2091
+ --avatar-group-badge-offset: 0.25rem;
2091
2092
  --toast-color-info-background: #211f26;
2092
2093
  --toast-color-info-foreground: #fdfcfd;
2093
2094
  --toast-color-info-accent: #edf2fe;
@@ -4629,114 +4630,6 @@ body {
4629
4630
  }
4630
4631
 
4631
4632
 
4632
- /* SwipeActions */
4633
- /* SwipeActions Component Styles */
4634
-
4635
- .muka-swipe-actions {
4636
- position: relative;
4637
- overflow: hidden;
4638
- touch-action: pan-y;
4639
- -webkit-user-select: none;
4640
- user-select: none;
4641
- background-color: var(--color-surface-level3);
4642
- }
4643
-
4644
- .muka-swipe-actions--disabled {
4645
- touch-action: auto;
4646
- }
4647
-
4648
- /* ─── Row that holds the actual content ────────────────── */
4649
-
4650
- .muka-swipe-actions__row {
4651
- position: relative;
4652
- z-index: 1;
4653
- background-color: inherit;
4654
- will-change: transform;
4655
- }
4656
-
4657
- /* ─── Action panels — sit beneath the row ──────────────── */
4658
-
4659
- .muka-swipe-actions__panel {
4660
- position: absolute;
4661
- top: 0;
4662
- bottom: 0;
4663
- display: flex;
4664
- align-items: stretch;
4665
- z-index: 0;
4666
- }
4667
-
4668
- .muka-swipe-actions__panel--left {
4669
- left: 0;
4670
- }
4671
-
4672
- .muka-swipe-actions__panel--right {
4673
- right: 0;
4674
- }
4675
-
4676
- /* ─── Single action button ─────────────────────────────── */
4677
-
4678
- .muka-swipe-actions__button {
4679
- display: flex;
4680
- flex-direction: column;
4681
- align-items: center;
4682
- justify-content: center;
4683
- gap: var(--spacing-1);
4684
- border: none;
4685
- cursor: pointer;
4686
- padding: var(--spacing-2);
4687
- background-color: var(--color-surface-level2);
4688
- color: var(--color-text-default-default);
4689
- font-family: var(--text-label-sm-semibold-fontFamily);
4690
- font-weight: var(--text-label-sm-semibold-fontWeight);
4691
- font-size: var(--text-label-sm-semibold-fontSize);
4692
- line-height: var(--text-label-sm-semibold-lineHeight);
4693
- -webkit-tap-highlight-color: transparent;
4694
- transition: filter 0.12s ease;
4695
- }
4696
-
4697
- .muka-swipe-actions__button:hover {
4698
- filter: brightness(0.95);
4699
- }
4700
-
4701
- .muka-swipe-actions__button:focus-visible {
4702
- outline: 2px solid var(--color-action-default);
4703
- outline-offset: -2px;
4704
- }
4705
-
4706
- .muka-swipe-actions__button-icon {
4707
- display: inline-flex;
4708
- align-items: center;
4709
- justify-content: center;
4710
- }
4711
-
4712
- /* ─── Color variants ───────────────────────────────────── */
4713
-
4714
- .muka-swipe-actions__button--neutral {
4715
- background-color: var(--color-surface-level2);
4716
- color: var(--color-text-default-default);
4717
- }
4718
-
4719
- .muka-swipe-actions__button--primary {
4720
- background-color: var(--color-action-default);
4721
- color: var(--color-text-default-inverse);
4722
- }
4723
-
4724
- .muka-swipe-actions__button--success {
4725
- background-color: var(--color-state-success-default);
4726
- color: var(--color-text-default-inverse);
4727
- }
4728
-
4729
- .muka-swipe-actions__button--warning {
4730
- background-color: var(--color-state-warning-default);
4731
- color: var(--color-text-default-default);
4732
- }
4733
-
4734
- .muka-swipe-actions__button--destructive {
4735
- background-color: var(--color-state-error-default);
4736
- color: var(--color-text-default-inverse);
4737
- }
4738
-
4739
-
4740
4633
  /* Spinner */
4741
4634
  /* Spinner Component Styles */
4742
4635
 
@@ -4900,6 +4793,114 @@ body {
4900
4793
  }
4901
4794
 
4902
4795
 
4796
+ /* SwipeActions */
4797
+ /* SwipeActions Component Styles */
4798
+
4799
+ .muka-swipe-actions {
4800
+ position: relative;
4801
+ overflow: hidden;
4802
+ touch-action: pan-y;
4803
+ -webkit-user-select: none;
4804
+ user-select: none;
4805
+ background-color: var(--color-surface-level3);
4806
+ }
4807
+
4808
+ .muka-swipe-actions--disabled {
4809
+ touch-action: auto;
4810
+ }
4811
+
4812
+ /* ─── Row that holds the actual content ────────────────── */
4813
+
4814
+ .muka-swipe-actions__row {
4815
+ position: relative;
4816
+ z-index: 1;
4817
+ background-color: inherit;
4818
+ will-change: transform;
4819
+ }
4820
+
4821
+ /* ─── Action panels — sit beneath the row ──────────────── */
4822
+
4823
+ .muka-swipe-actions__panel {
4824
+ position: absolute;
4825
+ top: 0;
4826
+ bottom: 0;
4827
+ display: flex;
4828
+ align-items: stretch;
4829
+ z-index: 0;
4830
+ }
4831
+
4832
+ .muka-swipe-actions__panel--left {
4833
+ left: 0;
4834
+ }
4835
+
4836
+ .muka-swipe-actions__panel--right {
4837
+ right: 0;
4838
+ }
4839
+
4840
+ /* ─── Single action button ─────────────────────────────── */
4841
+
4842
+ .muka-swipe-actions__button {
4843
+ display: flex;
4844
+ flex-direction: column;
4845
+ align-items: center;
4846
+ justify-content: center;
4847
+ gap: var(--spacing-1);
4848
+ border: none;
4849
+ cursor: pointer;
4850
+ padding: var(--spacing-2);
4851
+ background-color: var(--color-surface-level2);
4852
+ color: var(--color-text-default-default);
4853
+ font-family: var(--text-label-sm-semibold-fontFamily);
4854
+ font-weight: var(--text-label-sm-semibold-fontWeight);
4855
+ font-size: var(--text-label-sm-semibold-fontSize);
4856
+ line-height: var(--text-label-sm-semibold-lineHeight);
4857
+ -webkit-tap-highlight-color: transparent;
4858
+ transition: filter 0.12s ease;
4859
+ }
4860
+
4861
+ .muka-swipe-actions__button:hover {
4862
+ filter: brightness(0.95);
4863
+ }
4864
+
4865
+ .muka-swipe-actions__button:focus-visible {
4866
+ outline: 2px solid var(--color-action-default);
4867
+ outline-offset: -2px;
4868
+ }
4869
+
4870
+ .muka-swipe-actions__button-icon {
4871
+ display: inline-flex;
4872
+ align-items: center;
4873
+ justify-content: center;
4874
+ }
4875
+
4876
+ /* ─── Color variants ───────────────────────────────────── */
4877
+
4878
+ .muka-swipe-actions__button--neutral {
4879
+ background-color: var(--color-surface-level2);
4880
+ color: var(--color-text-default-default);
4881
+ }
4882
+
4883
+ .muka-swipe-actions__button--primary {
4884
+ background-color: var(--color-action-default);
4885
+ color: var(--color-text-default-inverse);
4886
+ }
4887
+
4888
+ .muka-swipe-actions__button--success {
4889
+ background-color: var(--color-state-success-default);
4890
+ color: var(--color-text-default-inverse);
4891
+ }
4892
+
4893
+ .muka-swipe-actions__button--warning {
4894
+ background-color: var(--color-state-warning-default);
4895
+ color: var(--color-text-default-default);
4896
+ }
4897
+
4898
+ .muka-swipe-actions__button--destructive {
4899
+ background-color: var(--color-state-error-default);
4900
+ color: var(--color-text-default-inverse);
4901
+ }
4902
+
4903
+
4903
4904
  /* SocialSignInButton */
4904
4905
  /*
4905
4906
  * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
@@ -10820,38 +10821,6 @@ li.muka-listitem {
10820
10821
  }
10821
10822
 
10822
10823
 
10823
- /* DatePicker */
10824
- /* DatePicker — compact native date field. */
10825
- /* Field/label/helper styling is inherited from ../Input/Input.css. */
10826
-
10827
- /* Adopt the field typography on the native date input. */
10828
- .muka-datepicker__field .muka-input__native {
10829
- font-family: var(--text-input-md-fontFamily);
10830
- font-size: var(--text-input-md-fontSize);
10831
- line-height: var(--text-input-md-lineHeight);
10832
- }
10833
-
10834
- .muka-datepicker__field--sm .muka-input__native {
10835
- font-family: var(--text-input-sm-fontFamily);
10836
- font-size: var(--text-input-sm-fontSize);
10837
- line-height: var(--text-input-sm-lineHeight);
10838
- }
10839
-
10840
- /* Tint the browser calendar indicator to match the field foreground. */
10841
- .muka-datepicker__field .muka-input__native::-webkit-calendar-picker-indicator {
10842
- cursor: pointer;
10843
- opacity: 0.6;
10844
- }
10845
-
10846
- .muka-datepicker__field .muka-input__native::-webkit-calendar-picker-indicator:hover {
10847
- opacity: 1;
10848
- }
10849
-
10850
- .muka-datepicker__field .muka-input__native:disabled {
10851
- cursor: not-allowed;
10852
- }
10853
-
10854
-
10855
10824
  /* Dialog */
10856
10825
  /* Dialog Component Styles */
10857
10826
 
@@ -11120,12 +11089,44 @@ li.muka-listitem {
11120
11089
  }
11121
11090
 
11122
11091
 
11123
- /* DataTable */
11124
- /* DataTable Component Styles - Using Muka Design Tokens */
11092
+ /* DatePicker */
11093
+ /* DatePicker — compact native date field. */
11094
+ /* Field/label/helper styling is inherited from ../Input/Input.css. */
11125
11095
 
11126
- .muka-data-table-wrapper {
11127
- width: 100%;
11128
- overflow-x: auto;
11096
+ /* Adopt the field typography on the native date input. */
11097
+ .muka-datepicker__field .muka-input__native {
11098
+ font-family: var(--text-input-md-fontFamily);
11099
+ font-size: var(--text-input-md-fontSize);
11100
+ line-height: var(--text-input-md-lineHeight);
11101
+ }
11102
+
11103
+ .muka-datepicker__field--sm .muka-input__native {
11104
+ font-family: var(--text-input-sm-fontFamily);
11105
+ font-size: var(--text-input-sm-fontSize);
11106
+ line-height: var(--text-input-sm-lineHeight);
11107
+ }
11108
+
11109
+ /* Tint the browser calendar indicator to match the field foreground. */
11110
+ .muka-datepicker__field .muka-input__native::-webkit-calendar-picker-indicator {
11111
+ cursor: pointer;
11112
+ opacity: 0.6;
11113
+ }
11114
+
11115
+ .muka-datepicker__field .muka-input__native::-webkit-calendar-picker-indicator:hover {
11116
+ opacity: 1;
11117
+ }
11118
+
11119
+ .muka-datepicker__field .muka-input__native:disabled {
11120
+ cursor: not-allowed;
11121
+ }
11122
+
11123
+
11124
+ /* DataTable */
11125
+ /* DataTable Component Styles - Using Muka Design Tokens */
11126
+
11127
+ .muka-data-table-wrapper {
11128
+ width: 100%;
11129
+ overflow-x: auto;
11129
11130
  -webkit-overflow-scrolling: touch;
11130
11131
  }
11131
11132
 
@@ -12437,128 +12438,6 @@ li.muka-listitem {
12437
12438
  }
12438
12439
 
12439
12440
 
12440
- /* ChatPhotoGrid */
12441
- /* ChatPhotoGrid Component Styles */
12442
-
12443
- /*
12444
- * The grid clips to its own radius and the tiles stay square, so only the four
12445
- * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12446
- */
12447
- .muka-chat-photo-grid {
12448
- display: grid;
12449
- gap: var(--chatphotogrid-gap);
12450
- width: 100%;
12451
- min-width: 0;
12452
- overflow: hidden;
12453
- border-radius: var(--chatphotogrid-radius);
12454
- }
12455
-
12456
- /* ─── Tiles ────────────────────────────────────────────── */
12457
-
12458
- .muka-chat-photo-grid__tile {
12459
- position: relative;
12460
- display: block;
12461
- overflow: hidden;
12462
- min-width: 0;
12463
- padding: 0;
12464
- margin: 0;
12465
- border: none;
12466
- background-color: var(--chatphotogrid-color-placeholder);
12467
- aspect-ratio: 1 / 1;
12468
- }
12469
-
12470
- button.muka-chat-photo-grid__tile {
12471
- cursor: pointer;
12472
- appearance: none;
12473
- }
12474
-
12475
- button.muka-chat-photo-grid__tile:focus-visible {
12476
- outline: var(--border-width-bold) solid var(--color-border-focus);
12477
- /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12478
- outline-offset: calc(-1 * var(--border-width-bold));
12479
- }
12480
-
12481
- .muka-chat-photo-grid__image {
12482
- display: block;
12483
- width: 100%;
12484
- height: 100%;
12485
- object-fit: cover;
12486
- }
12487
-
12488
- /* ─── Overflow tile ────────────────────────────────────── */
12489
-
12490
- .muka-chat-photo-grid__overflow {
12491
- position: absolute;
12492
- inset: 0;
12493
- display: flex;
12494
- align-items: center;
12495
- justify-content: center;
12496
- background-color: var(--chatphotogrid-color-overflow-background);
12497
- color: var(--chatphotogrid-color-overflow-foreground);
12498
- font-family: var(--text-body-2xl-regular-fontFamily);
12499
- font-weight: var(--text-body-2xl-regular-fontWeight);
12500
- font-size: var(--text-body-2xl-regular-fontSize);
12501
- line-height: var(--text-body-2xl-regular-lineHeight);
12502
- }
12503
-
12504
- /* ─── Layouts ──────────────────────────────────────────── */
12505
-
12506
- .muka-chat-photo-grid--1 {
12507
- grid-template-columns: 1fr;
12508
- }
12509
-
12510
- .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12511
- aspect-ratio: 4 / 3;
12512
- }
12513
-
12514
- .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12515
- aspect-ratio: 3 / 4;
12516
- }
12517
-
12518
- .muka-chat-photo-grid--2 {
12519
- grid-template-columns: repeat(2, 1fr);
12520
- }
12521
-
12522
- .muka-chat-photo-grid--3 {
12523
- grid-template-columns: repeat(3, 1fr);
12524
- }
12525
-
12526
- .muka-chat-photo-grid--4 {
12527
- grid-template-columns: repeat(2, 1fr);
12528
- }
12529
-
12530
- /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12531
- .muka-chat-photo-grid--5 {
12532
- grid-template-columns: repeat(6, 1fr);
12533
- }
12534
-
12535
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12536
- grid-column: span 3;
12537
- }
12538
-
12539
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12540
- grid-column: span 2;
12541
- }
12542
-
12543
- .muka-chat-photo-grid--6,
12544
- .muka-chat-photo-grid--overflow {
12545
- grid-template-columns: repeat(3, 1fr);
12546
- }
12547
-
12548
- /* ─── Print ────────────────────────────────────────────── */
12549
-
12550
- @media print {
12551
- .muka-chat-photo-grid {
12552
- break-inside: avoid;
12553
- }
12554
-
12555
- .muka-chat-photo-grid__image {
12556
- print-color-adjust: exact;
12557
- -webkit-print-color-adjust: exact;
12558
- }
12559
- }
12560
-
12561
-
12562
12441
  /* Checkbox */
12563
12442
  /* Checkbox Component Styles - Using Muka Design Tokens */
12564
12443
 
@@ -12726,6 +12605,128 @@ button.muka-chat-photo-grid__tile:focus-visible {
12726
12605
  }
12727
12606
 
12728
12607
 
12608
+ /* ChatPhotoGrid */
12609
+ /* ChatPhotoGrid Component Styles */
12610
+
12611
+ /*
12612
+ * The grid clips to its own radius and the tiles stay square, so only the four
12613
+ * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12614
+ */
12615
+ .muka-chat-photo-grid {
12616
+ display: grid;
12617
+ gap: var(--chatphotogrid-gap);
12618
+ width: 100%;
12619
+ min-width: 0;
12620
+ overflow: hidden;
12621
+ border-radius: var(--chatphotogrid-radius);
12622
+ }
12623
+
12624
+ /* ─── Tiles ────────────────────────────────────────────── */
12625
+
12626
+ .muka-chat-photo-grid__tile {
12627
+ position: relative;
12628
+ display: block;
12629
+ overflow: hidden;
12630
+ min-width: 0;
12631
+ padding: 0;
12632
+ margin: 0;
12633
+ border: none;
12634
+ background-color: var(--chatphotogrid-color-placeholder);
12635
+ aspect-ratio: 1 / 1;
12636
+ }
12637
+
12638
+ button.muka-chat-photo-grid__tile {
12639
+ cursor: pointer;
12640
+ appearance: none;
12641
+ }
12642
+
12643
+ button.muka-chat-photo-grid__tile:focus-visible {
12644
+ outline: var(--border-width-bold) solid var(--color-border-focus);
12645
+ /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12646
+ outline-offset: calc(-1 * var(--border-width-bold));
12647
+ }
12648
+
12649
+ .muka-chat-photo-grid__image {
12650
+ display: block;
12651
+ width: 100%;
12652
+ height: 100%;
12653
+ object-fit: cover;
12654
+ }
12655
+
12656
+ /* ─── Overflow tile ────────────────────────────────────── */
12657
+
12658
+ .muka-chat-photo-grid__overflow {
12659
+ position: absolute;
12660
+ inset: 0;
12661
+ display: flex;
12662
+ align-items: center;
12663
+ justify-content: center;
12664
+ background-color: var(--chatphotogrid-color-overflow-background);
12665
+ color: var(--chatphotogrid-color-overflow-foreground);
12666
+ font-family: var(--text-body-2xl-regular-fontFamily);
12667
+ font-weight: var(--text-body-2xl-regular-fontWeight);
12668
+ font-size: var(--text-body-2xl-regular-fontSize);
12669
+ line-height: var(--text-body-2xl-regular-lineHeight);
12670
+ }
12671
+
12672
+ /* ─── Layouts ──────────────────────────────────────────── */
12673
+
12674
+ .muka-chat-photo-grid--1 {
12675
+ grid-template-columns: 1fr;
12676
+ }
12677
+
12678
+ .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12679
+ aspect-ratio: 4 / 3;
12680
+ }
12681
+
12682
+ .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12683
+ aspect-ratio: 3 / 4;
12684
+ }
12685
+
12686
+ .muka-chat-photo-grid--2 {
12687
+ grid-template-columns: repeat(2, 1fr);
12688
+ }
12689
+
12690
+ .muka-chat-photo-grid--3 {
12691
+ grid-template-columns: repeat(3, 1fr);
12692
+ }
12693
+
12694
+ .muka-chat-photo-grid--4 {
12695
+ grid-template-columns: repeat(2, 1fr);
12696
+ }
12697
+
12698
+ /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12699
+ .muka-chat-photo-grid--5 {
12700
+ grid-template-columns: repeat(6, 1fr);
12701
+ }
12702
+
12703
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12704
+ grid-column: span 3;
12705
+ }
12706
+
12707
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12708
+ grid-column: span 2;
12709
+ }
12710
+
12711
+ .muka-chat-photo-grid--6,
12712
+ .muka-chat-photo-grid--overflow {
12713
+ grid-template-columns: repeat(3, 1fr);
12714
+ }
12715
+
12716
+ /* ─── Print ────────────────────────────────────────────── */
12717
+
12718
+ @media print {
12719
+ .muka-chat-photo-grid {
12720
+ break-inside: avoid;
12721
+ }
12722
+
12723
+ .muka-chat-photo-grid__image {
12724
+ print-color-adjust: exact;
12725
+ -webkit-print-color-adjust: exact;
12726
+ }
12727
+ }
12728
+
12729
+
12729
12730
  /* ChatMessageStack */
12730
12731
  /* ChatMessageStack Component Styles */
12731
12732
 
@@ -14011,114 +14012,6 @@ button.muka-chat-photo-grid__tile:focus-visible {
14011
14012
  }
14012
14013
 
14013
14014
 
14014
- /* BadgeNumber */
14015
- /* BadgeNumber Component Styles - Using Muka Design Tokens */
14016
-
14017
- .muka-badge-number {
14018
- display: inline-flex;
14019
- align-items: center;
14020
- justify-content: center;
14021
- border-radius: var(--border-radius-full);
14022
- white-space: nowrap;
14023
- user-select: none;
14024
- box-sizing: border-box;
14025
- }
14026
-
14027
- /*
14028
- * Sizes — fixed height, matching min-width (so a single digit renders as a
14029
- * circle), horizontal padding, and bold label typography. Vertical centering
14030
- * is handled by the fixed height + align-items: center.
14031
- */
14032
- .muka-badge-number--2xs {
14033
- height: var(--badge-number-size-2xs);
14034
- min-width: var(--badge-number-size-2xs);
14035
- padding: 0 var(--badge-number-padding-2xs);
14036
- font-family: var(--text-label-xs-bold-fontFamily);
14037
- font-weight: var(--text-label-xs-bold-fontWeight);
14038
- font-size: var(--text-label-xs-bold-fontSize);
14039
- line-height: var(--text-label-xs-bold-lineHeight);
14040
- }
14041
-
14042
- .muka-badge-number--xs {
14043
- height: var(--badge-number-size-xs);
14044
- min-width: var(--badge-number-size-xs);
14045
- padding: 0 var(--badge-number-padding-xs);
14046
- font-family: var(--text-label-sm-bold-fontFamily);
14047
- font-weight: var(--text-label-sm-bold-fontWeight);
14048
- font-size: var(--text-label-sm-bold-fontSize);
14049
- line-height: var(--text-label-sm-bold-lineHeight);
14050
- }
14051
-
14052
- .muka-badge-number--sm {
14053
- height: var(--badge-number-size-sm);
14054
- min-width: var(--badge-number-size-sm);
14055
- padding: 0 var(--badge-number-padding-sm);
14056
- font-family: var(--text-label-md-bold-fontFamily);
14057
- font-weight: var(--text-label-md-bold-fontWeight);
14058
- font-size: var(--text-label-md-bold-fontSize);
14059
- line-height: var(--text-label-md-bold-lineHeight);
14060
- }
14061
-
14062
- .muka-badge-number--md {
14063
- height: var(--badge-number-size-md);
14064
- min-width: var(--badge-number-size-md);
14065
- padding: 0 var(--badge-number-padding-md);
14066
- font-family: var(--text-label-lg-bold-fontFamily);
14067
- font-weight: var(--text-label-lg-bold-fontWeight);
14068
- font-size: var(--text-label-lg-bold-fontSize);
14069
- line-height: var(--text-label-lg-bold-lineHeight);
14070
- }
14071
-
14072
- .muka-badge-number--lg {
14073
- height: var(--badge-number-size-lg);
14074
- min-width: var(--badge-number-size-lg);
14075
- padding: 0 var(--badge-number-padding-lg);
14076
- font-family: var(--text-label-2xl-bold-fontFamily);
14077
- font-weight: var(--text-label-2xl-bold-fontWeight);
14078
- font-size: var(--text-label-2xl-bold-fontSize);
14079
- line-height: var(--text-label-2xl-bold-lineHeight);
14080
- }
14081
-
14082
- .muka-badge-number__label {
14083
- /*
14084
- * The badge sets a tight line-height for compact sizing, which would clip
14085
- * glyph descenders; give the label a roomier line-height. Vertical centering
14086
- * is unaffected because the badge height is fixed and content is centered.
14087
- */
14088
- line-height: normal;
14089
- }
14090
-
14091
- /* Neutral variant */
14092
- .muka-badge-number--neutral {
14093
- background-color: var(--color-surface-level1);
14094
- color: var(--color-text-default-default);
14095
- }
14096
-
14097
- /* Info variant */
14098
- .muka-badge-number--info {
14099
- background-color: var(--color-state-info-contrast);
14100
- color: var(--color-text-default-inverse);
14101
- }
14102
-
14103
- /* Success variant */
14104
- .muka-badge-number--success {
14105
- background-color: var(--color-state-success-contrast);
14106
- color: var(--color-text-default-inverse);
14107
- }
14108
-
14109
- /* Warning variant */
14110
- .muka-badge-number--warning {
14111
- background-color: var(--color-state-warning-contrast);
14112
- color: var(--color-text-default-inverse);
14113
- }
14114
-
14115
- /* Error variant */
14116
- .muka-badge-number--error {
14117
- background-color: var(--color-state-error-contrast);
14118
- color: var(--color-text-default-inverse);
14119
- }
14120
-
14121
-
14122
14015
  /* BottomBar */
14123
14016
  /* BottomBar Component Styles */
14124
14017
 
@@ -14435,6 +14328,114 @@ button.muka-chat-photo-grid__tile:focus-visible {
14435
14328
  }
14436
14329
 
14437
14330
 
14331
+ /* BadgeNumber */
14332
+ /* BadgeNumber Component Styles - Using Muka Design Tokens */
14333
+
14334
+ .muka-badge-number {
14335
+ display: inline-flex;
14336
+ align-items: center;
14337
+ justify-content: center;
14338
+ border-radius: var(--border-radius-full);
14339
+ white-space: nowrap;
14340
+ user-select: none;
14341
+ box-sizing: border-box;
14342
+ }
14343
+
14344
+ /*
14345
+ * Sizes — fixed height, matching min-width (so a single digit renders as a
14346
+ * circle), horizontal padding, and bold label typography. Vertical centering
14347
+ * is handled by the fixed height + align-items: center.
14348
+ */
14349
+ .muka-badge-number--2xs {
14350
+ height: var(--badge-number-size-2xs);
14351
+ min-width: var(--badge-number-size-2xs);
14352
+ padding: 0 var(--badge-number-padding-2xs);
14353
+ font-family: var(--text-label-xs-bold-fontFamily);
14354
+ font-weight: var(--text-label-xs-bold-fontWeight);
14355
+ font-size: var(--text-label-xs-bold-fontSize);
14356
+ line-height: var(--text-label-xs-bold-lineHeight);
14357
+ }
14358
+
14359
+ .muka-badge-number--xs {
14360
+ height: var(--badge-number-size-xs);
14361
+ min-width: var(--badge-number-size-xs);
14362
+ padding: 0 var(--badge-number-padding-xs);
14363
+ font-family: var(--text-label-sm-bold-fontFamily);
14364
+ font-weight: var(--text-label-sm-bold-fontWeight);
14365
+ font-size: var(--text-label-sm-bold-fontSize);
14366
+ line-height: var(--text-label-sm-bold-lineHeight);
14367
+ }
14368
+
14369
+ .muka-badge-number--sm {
14370
+ height: var(--badge-number-size-sm);
14371
+ min-width: var(--badge-number-size-sm);
14372
+ padding: 0 var(--badge-number-padding-sm);
14373
+ font-family: var(--text-label-md-bold-fontFamily);
14374
+ font-weight: var(--text-label-md-bold-fontWeight);
14375
+ font-size: var(--text-label-md-bold-fontSize);
14376
+ line-height: var(--text-label-md-bold-lineHeight);
14377
+ }
14378
+
14379
+ .muka-badge-number--md {
14380
+ height: var(--badge-number-size-md);
14381
+ min-width: var(--badge-number-size-md);
14382
+ padding: 0 var(--badge-number-padding-md);
14383
+ font-family: var(--text-label-lg-bold-fontFamily);
14384
+ font-weight: var(--text-label-lg-bold-fontWeight);
14385
+ font-size: var(--text-label-lg-bold-fontSize);
14386
+ line-height: var(--text-label-lg-bold-lineHeight);
14387
+ }
14388
+
14389
+ .muka-badge-number--lg {
14390
+ height: var(--badge-number-size-lg);
14391
+ min-width: var(--badge-number-size-lg);
14392
+ padding: 0 var(--badge-number-padding-lg);
14393
+ font-family: var(--text-label-2xl-bold-fontFamily);
14394
+ font-weight: var(--text-label-2xl-bold-fontWeight);
14395
+ font-size: var(--text-label-2xl-bold-fontSize);
14396
+ line-height: var(--text-label-2xl-bold-lineHeight);
14397
+ }
14398
+
14399
+ .muka-badge-number__label {
14400
+ /*
14401
+ * The badge sets a tight line-height for compact sizing, which would clip
14402
+ * glyph descenders; give the label a roomier line-height. Vertical centering
14403
+ * is unaffected because the badge height is fixed and content is centered.
14404
+ */
14405
+ line-height: normal;
14406
+ }
14407
+
14408
+ /* Neutral variant */
14409
+ .muka-badge-number--neutral {
14410
+ background-color: var(--color-surface-level1);
14411
+ color: var(--color-text-default-default);
14412
+ }
14413
+
14414
+ /* Info variant */
14415
+ .muka-badge-number--info {
14416
+ background-color: var(--color-state-info-contrast);
14417
+ color: var(--color-text-default-inverse);
14418
+ }
14419
+
14420
+ /* Success variant */
14421
+ .muka-badge-number--success {
14422
+ background-color: var(--color-state-success-contrast);
14423
+ color: var(--color-text-default-inverse);
14424
+ }
14425
+
14426
+ /* Warning variant */
14427
+ .muka-badge-number--warning {
14428
+ background-color: var(--color-state-warning-contrast);
14429
+ color: var(--color-text-default-inverse);
14430
+ }
14431
+
14432
+ /* Error variant */
14433
+ .muka-badge-number--error {
14434
+ background-color: var(--color-state-error-contrast);
14435
+ color: var(--color-text-default-inverse);
14436
+ }
14437
+
14438
+
14438
14439
  /* Badge */
14439
14440
  /* Badge Component Styles - Using Muka Design Tokens */
14440
14441
 
@@ -14878,9 +14879,12 @@ button.muka-chat-photo-grid__tile:focus-visible {
14878
14879
 
14879
14880
  /* Avatar Group (Figma "Avatar Stack") */
14880
14881
  .muka-avatar-group {
14882
+ position: relative;
14881
14883
  display: inline-flex;
14882
14884
  align-items: center;
14883
14885
  flex-direction: row;
14886
+ /* Never stretch to a grid cell or column, so the badge stays on the last avatar */
14887
+ width: fit-content;
14884
14888
  }
14885
14889
 
14886
14890
  /* Later avatars sit on top of earlier ones (DOM order); a hovered one comes to the front */
@@ -14900,7 +14904,7 @@ button.muka-chat-photo-grid__tile:focus-visible {
14900
14904
  box-shadow: 0 0 0 var(--avatar-group-ring-width) var(--avatar-group-ring-color);
14901
14905
  }
14902
14906
 
14903
- /* Overlap. Figma specifies exact values for 48 / 32 / 24px avatars (sm / 2xs / 3xs);
14907
+ /* Overlap. Figma specifies exact values for 40 / 32 / 24px avatars (xs / 2xs / 3xs);
14904
14908
  other sizes use the same proportions: tight 2/3, compact 1/2, spacious 1/3. */
14905
14909
  .muka-avatar-group--4xs { --muka-avatar-group-size: var(--avatar-size-4xs); }
14906
14910
  .muka-avatar-group--3xs { --muka-avatar-group-size: var(--avatar-size-3xs); }
@@ -14915,13 +14919,13 @@ button.muka-chat-photo-grid__tile:focus-visible {
14915
14919
  .muka-avatar-group--compact { --muka-avatar-group-overlap: calc(var(--muka-avatar-group-size) / 2); }
14916
14920
  .muka-avatar-group--spacious { --muka-avatar-group-overlap: calc(var(--muka-avatar-group-size) / 3); }
14917
14921
 
14918
- .muka-avatar-group--tight.muka-avatar-group--sm { --muka-avatar-group-overlap: var(--avatar-group-overlap-tight-sm); }
14922
+ .muka-avatar-group--tight.muka-avatar-group--xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-tight-xs); }
14919
14923
  .muka-avatar-group--tight.muka-avatar-group--2xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-tight-2xs); }
14920
14924
  .muka-avatar-group--tight.muka-avatar-group--3xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-tight-3xs); }
14921
- .muka-avatar-group--compact.muka-avatar-group--sm { --muka-avatar-group-overlap: var(--avatar-group-overlap-compact-sm); }
14925
+ .muka-avatar-group--compact.muka-avatar-group--xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-compact-xs); }
14922
14926
  .muka-avatar-group--compact.muka-avatar-group--2xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-compact-2xs); }
14923
14927
  .muka-avatar-group--compact.muka-avatar-group--3xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-compact-3xs); }
14924
- .muka-avatar-group--spacious.muka-avatar-group--sm { --muka-avatar-group-overlap: var(--avatar-group-overlap-spacious-sm); }
14928
+ .muka-avatar-group--spacious.muka-avatar-group--xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-spacious-xs); }
14925
14929
  .muka-avatar-group--spacious.muka-avatar-group--2xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-spacious-2xs); }
14926
14930
  .muka-avatar-group--spacious.muka-avatar-group--3xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-spacious-3xs); }
14927
14931
 
@@ -14929,6 +14933,14 @@ button.muka-chat-photo-grid__tile:focus-visible {
14929
14933
  margin-left: calc(-1 * var(--muka-avatar-group-overlap));
14930
14934
  }
14931
14935
 
14936
+ /* Badge: a BadgeNumber on the top-right corner of the stack, above every avatar */
14937
+ .muka-avatar-group__badge {
14938
+ position: absolute;
14939
+ top: calc(-1 * var(--avatar-group-badge-offset));
14940
+ right: calc(-1 * var(--avatar-group-badge-offset));
14941
+ z-index: 20;
14942
+ }
14943
+
14932
14944
  /* Overflow avatar styling */
14933
14945
  .muka-avatar--overflow {
14934
14946
  background-color: var(--avatar-color-background-default);