@revikornmann/muka-ui 0.21.0 → 0.22.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.
@@ -1695,8 +1695,7 @@ body {
1695
1695
  --card-border-pressed: 0.125rem solid #3e63dd;
1696
1696
  --card-border-selected: 0.125rem solid #3e63dd;
1697
1697
  --chat-column-max-width: 768px;
1698
- --chatbubble-max-width: 37rem;
1699
- --chatbubble-max-width-ratio: 77%;
1698
+ --chatbubble-max-width: 600px;
1700
1699
  --chatbubble-radius: 0.75rem;
1701
1700
  --chatbubble-padding-block: 0.75rem;
1702
1701
  --chatbubble-padding-inline: 1rem;
@@ -4751,6 +4750,91 @@ body {
4751
4750
  }
4752
4751
 
4753
4752
 
4753
+ /* SpecList */
4754
+ /* SpecList Component Styles */
4755
+
4756
+ .muka-spec-list {
4757
+ margin: 0;
4758
+ padding: 0;
4759
+ }
4760
+
4761
+ /* ─── Row ─────────────────────────────────────────────── */
4762
+
4763
+ .muka-spec-row {
4764
+ display: flex;
4765
+ align-items: flex-start;
4766
+ gap: var(--spacing-3);
4767
+ padding-bottom: var(--spacing-3);
4768
+ }
4769
+
4770
+ /* ─── Label ───────────────────────────────────────────── */
4771
+
4772
+ .muka-spec-row__label {
4773
+ flex: 0 0 auto;
4774
+ margin: 0;
4775
+ color: var(--color-text-subtle-default);
4776
+ font-family: var(--text-body-base-regular-fontFamily);
4777
+ font-weight: var(--text-body-base-regular-fontWeight);
4778
+ font-size: var(--text-body-base-regular-fontSize);
4779
+ line-height: var(--text-body-base-regular-lineHeight);
4780
+ overflow: hidden;
4781
+ text-overflow: ellipsis;
4782
+ white-space: nowrap;
4783
+ }
4784
+
4785
+ /* ─── Value ───────────────────────────────────────────── */
4786
+
4787
+ .muka-spec-row__value {
4788
+ flex: 1 1 0;
4789
+ min-width: 0;
4790
+ margin: 0;
4791
+ display: flex;
4792
+ flex-direction: column;
4793
+ color: var(--color-text-default-default);
4794
+ }
4795
+
4796
+ .muka-spec-row__value-text {
4797
+ font-family: var(--text-body-base-regular-fontFamily);
4798
+ font-weight: var(--text-body-base-regular-fontWeight);
4799
+ font-size: var(--text-body-base-regular-fontSize);
4800
+ line-height: var(--text-body-base-regular-lineHeight);
4801
+ }
4802
+
4803
+ .muka-spec-row__hint {
4804
+ color: var(--color-text-subtle-default);
4805
+ font-family: var(--text-body-sm-regular-fontFamily);
4806
+ font-weight: var(--text-body-sm-regular-fontWeight);
4807
+ font-size: var(--text-body-sm-regular-fontSize);
4808
+ line-height: var(--text-body-sm-regular-lineHeight);
4809
+ }
4810
+
4811
+ /* ─── Label width (horizontal stacking) ───────────────── */
4812
+
4813
+ .muka-spec-list--label-small .muka-spec-row__label {
4814
+ width: 80px;
4815
+ }
4816
+
4817
+ .muka-spec-list--label-medium .muka-spec-row__label {
4818
+ width: 120px;
4819
+ }
4820
+
4821
+ .muka-spec-list--label-large .muka-spec-row__label {
4822
+ width: 160px;
4823
+ }
4824
+
4825
+ /* ─── Vertical stacking ───────────────────────────────── */
4826
+
4827
+ .muka-spec-list--vertical .muka-spec-row {
4828
+ flex-direction: column;
4829
+ gap: var(--spacing-1);
4830
+ }
4831
+
4832
+ .muka-spec-list--vertical .muka-spec-row__label {
4833
+ width: 100%;
4834
+ white-space: normal;
4835
+ }
4836
+
4837
+
4754
4838
  /* SmsOtpField */
4755
4839
  /* SmsOtpField Component Styles - Using Muka Design Tokens */
4756
4840
 
@@ -4943,91 +5027,6 @@ body {
4943
5027
  }
4944
5028
 
4945
5029
 
4946
- /* SpecList */
4947
- /* SpecList Component Styles */
4948
-
4949
- .muka-spec-list {
4950
- margin: 0;
4951
- padding: 0;
4952
- }
4953
-
4954
- /* ─── Row ─────────────────────────────────────────────── */
4955
-
4956
- .muka-spec-row {
4957
- display: flex;
4958
- align-items: flex-start;
4959
- gap: var(--spacing-3);
4960
- padding-bottom: var(--spacing-3);
4961
- }
4962
-
4963
- /* ─── Label ───────────────────────────────────────────── */
4964
-
4965
- .muka-spec-row__label {
4966
- flex: 0 0 auto;
4967
- margin: 0;
4968
- color: var(--color-text-subtle-default);
4969
- font-family: var(--text-body-base-regular-fontFamily);
4970
- font-weight: var(--text-body-base-regular-fontWeight);
4971
- font-size: var(--text-body-base-regular-fontSize);
4972
- line-height: var(--text-body-base-regular-lineHeight);
4973
- overflow: hidden;
4974
- text-overflow: ellipsis;
4975
- white-space: nowrap;
4976
- }
4977
-
4978
- /* ─── Value ───────────────────────────────────────────── */
4979
-
4980
- .muka-spec-row__value {
4981
- flex: 1 1 0;
4982
- min-width: 0;
4983
- margin: 0;
4984
- display: flex;
4985
- flex-direction: column;
4986
- color: var(--color-text-default-default);
4987
- }
4988
-
4989
- .muka-spec-row__value-text {
4990
- font-family: var(--text-body-base-regular-fontFamily);
4991
- font-weight: var(--text-body-base-regular-fontWeight);
4992
- font-size: var(--text-body-base-regular-fontSize);
4993
- line-height: var(--text-body-base-regular-lineHeight);
4994
- }
4995
-
4996
- .muka-spec-row__hint {
4997
- color: var(--color-text-subtle-default);
4998
- font-family: var(--text-body-sm-regular-fontFamily);
4999
- font-weight: var(--text-body-sm-regular-fontWeight);
5000
- font-size: var(--text-body-sm-regular-fontSize);
5001
- line-height: var(--text-body-sm-regular-lineHeight);
5002
- }
5003
-
5004
- /* ─── Label width (horizontal stacking) ───────────────── */
5005
-
5006
- .muka-spec-list--label-small .muka-spec-row__label {
5007
- width: 80px;
5008
- }
5009
-
5010
- .muka-spec-list--label-medium .muka-spec-row__label {
5011
- width: 120px;
5012
- }
5013
-
5014
- .muka-spec-list--label-large .muka-spec-row__label {
5015
- width: 160px;
5016
- }
5017
-
5018
- /* ─── Vertical stacking ───────────────────────────────── */
5019
-
5020
- .muka-spec-list--vertical .muka-spec-row {
5021
- flex-direction: column;
5022
- gap: var(--spacing-1);
5023
- }
5024
-
5025
- .muka-spec-list--vertical .muka-spec-row__label {
5026
- width: 100%;
5027
- white-space: normal;
5028
- }
5029
-
5030
-
5031
5030
  /* Skeleton */
5032
5031
  /* Skeleton Component Styles */
5033
5032
 
@@ -5565,6 +5564,29 @@ body {
5565
5564
  }
5566
5565
 
5567
5566
 
5567
+ /* Section */
5568
+ /* Section Component - Layout tokens (section.padding) */
5569
+
5570
+ .muka-section {
5571
+ box-sizing: border-box;
5572
+ }
5573
+
5574
+ .muka-section--padding-compact {
5575
+ padding-block: var(--section-padding-vertical-compact);
5576
+ padding-inline: var(--section-padding-horizontal-compact);
5577
+ }
5578
+
5579
+ .muka-section--padding-default {
5580
+ padding-block: var(--section-padding-vertical-default);
5581
+ padding-inline: var(--section-padding-horizontal-default);
5582
+ }
5583
+
5584
+ .muka-section--padding-spacious {
5585
+ padding-block: var(--section-padding-vertical-spacious);
5586
+ padding-inline: var(--section-padding-horizontal-spacious);
5587
+ }
5588
+
5589
+
5568
5590
  /* SearchInput */
5569
5591
  /* SearchInput Component Styles */
5570
5592
 
@@ -5734,121 +5756,48 @@ body {
5734
5756
  }
5735
5757
 
5736
5758
 
5737
- /* Section */
5738
- /* Section Component - Layout tokens (section.padding) */
5739
-
5740
- .muka-section {
5741
- box-sizing: border-box;
5742
- }
5759
+ /* Scrollbar */
5760
+ /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5743
5761
 
5744
- .muka-section--padding-compact {
5745
- padding-block: var(--section-padding-vertical-compact);
5746
- padding-inline: var(--section-padding-horizontal-compact);
5762
+ .muka-scrollbar {
5763
+ display: flex;
5764
+ flex-shrink: 0;
5765
+ border-left: var(--border-width-regular) solid var(--color-border-default);
5766
+ background-color: var(--color-surface-level3);
5767
+ user-select: none;
5747
5768
  }
5748
5769
 
5749
- .muka-section--padding-default {
5750
- padding-block: var(--section-padding-vertical-default);
5751
- padding-inline: var(--section-padding-horizontal-default);
5770
+ .muka-scrollbar--vertical {
5771
+ flex-direction: column;
5772
+ width: var(--size-2xl, 32px);
5773
+ align-self: stretch;
5752
5774
  }
5753
5775
 
5754
- .muka-section--padding-spacious {
5755
- padding-block: var(--section-padding-vertical-spacious);
5756
- padding-inline: var(--section-padding-horizontal-spacious);
5776
+ .muka-scrollbar--horizontal {
5777
+ flex-direction: row;
5778
+ height: var(--size-2xl, 32px);
5779
+ width: 100%;
5780
+ border-left: none;
5781
+ border-top: var(--border-width-regular) solid var(--color-border-default);
5757
5782
  }
5758
5783
 
5759
-
5760
- /* RecordingBar */
5761
- /* RecordingBar Component Styles */
5762
-
5763
- .muka-recording-bar {
5784
+ .muka-scrollbar__button {
5764
5785
  display: flex;
5765
5786
  align-items: center;
5766
- gap: var(--spacing-3);
5787
+ justify-content: center;
5788
+ flex-shrink: 0;
5767
5789
  width: 100%;
5768
- min-width: 0;
5790
+ height: var(--size-2xl, 32px);
5791
+ padding: 0;
5792
+ border: none;
5793
+ background-color: var(--button-color-tertiary-background-default, var(--color-surface-level3));
5794
+ color: var(--color-text-default-default);
5795
+ cursor: pointer;
5769
5796
  }
5770
5797
 
5771
- .muka-recording-bar__dot {
5772
- flex: 0 0 auto;
5773
- width: 0.625rem;
5774
- height: 0.625rem;
5775
- border-radius: var(--radius-full, 9999px);
5776
- background: var(--alert-color-error-accent, var(--color-text-default-default));
5777
- animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5778
- }
5779
-
5780
- .muka-recording-bar__time {
5781
- flex: 0 0 auto;
5782
- font-size: var(--text-label-sm-fontSize, 0.75rem);
5783
- line-height: var(--text-label-sm-lineHeight, 1);
5784
- font-variant-numeric: tabular-nums;
5785
- color: var(--color-text-default-default);
5786
- }
5787
-
5788
- .muka-recording-bar__wave {
5789
- flex: 1 1 auto;
5790
- min-width: 0;
5791
- }
5792
-
5793
- @keyframes muka-recording-bar-pulse {
5794
- 0%,
5795
- 100% {
5796
- opacity: 1;
5797
- }
5798
- 50% {
5799
- opacity: 0.3;
5800
- }
5801
- }
5802
-
5803
- @media (prefers-reduced-motion: reduce) {
5804
- .muka-recording-bar__dot {
5805
- animation: none;
5806
- }
5807
- }
5808
-
5809
-
5810
- /* Scrollbar */
5811
- /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5812
-
5813
- .muka-scrollbar {
5814
- display: flex;
5815
- flex-shrink: 0;
5816
- border-left: var(--border-width-regular) solid var(--color-border-default);
5817
- background-color: var(--color-surface-level3);
5818
- user-select: none;
5819
- }
5820
-
5821
- .muka-scrollbar--vertical {
5822
- flex-direction: column;
5823
- width: var(--size-2xl, 32px);
5824
- align-self: stretch;
5825
- }
5826
-
5827
- .muka-scrollbar--horizontal {
5828
- flex-direction: row;
5829
- height: var(--size-2xl, 32px);
5830
- width: 100%;
5831
- border-left: none;
5832
- border-top: var(--border-width-regular) solid var(--color-border-default);
5833
- }
5834
-
5835
- .muka-scrollbar__button {
5836
- display: flex;
5837
- align-items: center;
5838
- justify-content: center;
5839
- flex-shrink: 0;
5840
- width: 100%;
5841
- height: var(--size-2xl, 32px);
5842
- padding: 0;
5843
- border: none;
5844
- background-color: var(--button-color-tertiary-background-default, var(--color-surface-level3));
5845
- color: var(--color-text-default-default);
5846
- cursor: pointer;
5847
- }
5848
-
5849
- .muka-scrollbar--horizontal .muka-scrollbar__button {
5850
- width: var(--size-2xl, 32px);
5851
- height: 100%;
5798
+ .muka-scrollbar--horizontal .muka-scrollbar__button {
5799
+ width: var(--size-2xl, 32px);
5800
+ height: 100%;
5852
5801
  }
5853
5802
 
5854
5803
  .muka-scrollbar__button:hover {
@@ -5934,6 +5883,56 @@ body {
5934
5883
  }
5935
5884
 
5936
5885
 
5886
+ /* RecordingBar */
5887
+ /* RecordingBar Component Styles */
5888
+
5889
+ .muka-recording-bar {
5890
+ display: flex;
5891
+ align-items: center;
5892
+ gap: var(--spacing-3);
5893
+ width: 100%;
5894
+ min-width: 0;
5895
+ }
5896
+
5897
+ .muka-recording-bar__dot {
5898
+ flex: 0 0 auto;
5899
+ width: 0.625rem;
5900
+ height: 0.625rem;
5901
+ border-radius: var(--radius-full, 9999px);
5902
+ background: var(--alert-color-error-accent, var(--color-text-default-default));
5903
+ animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5904
+ }
5905
+
5906
+ .muka-recording-bar__time {
5907
+ flex: 0 0 auto;
5908
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
5909
+ line-height: var(--text-label-sm-lineHeight, 1);
5910
+ font-variant-numeric: tabular-nums;
5911
+ color: var(--color-text-default-default);
5912
+ }
5913
+
5914
+ .muka-recording-bar__wave {
5915
+ flex: 1 1 auto;
5916
+ min-width: 0;
5917
+ }
5918
+
5919
+ @keyframes muka-recording-bar-pulse {
5920
+ 0%,
5921
+ 100% {
5922
+ opacity: 1;
5923
+ }
5924
+ 50% {
5925
+ opacity: 0.3;
5926
+ }
5927
+ }
5928
+
5929
+ @media (prefers-reduced-motion: reduce) {
5930
+ .muka-recording-bar__dot {
5931
+ animation: none;
5932
+ }
5933
+ }
5934
+
5935
+
5937
5936
  /* RangeSlider */
5938
5937
  /* RangeSlider Component Styles - Using Muka Design Tokens */
5939
5938
 
@@ -6293,53 +6292,6 @@ body {
6293
6292
  }
6294
6293
 
6295
6294
 
6296
- /* PullToRefresh */
6297
- /* PullToRefresh Component Styles */
6298
-
6299
- .muka-pull-to-refresh {
6300
- position: relative;
6301
- display: flex;
6302
- flex-direction: column;
6303
- width: 100%;
6304
- height: 100%;
6305
- overflow: hidden;
6306
- }
6307
-
6308
- .muka-pull-to-refresh__indicator {
6309
- position: absolute;
6310
- top: 0;
6311
- left: 0;
6312
- right: 0;
6313
- display: flex;
6314
- align-items: flex-end;
6315
- justify-content: center;
6316
- padding-bottom: var(--spacing-2);
6317
- color: var(--color-text-subtle-default);
6318
- overflow: hidden;
6319
- pointer-events: none;
6320
- z-index: 1;
6321
- }
6322
-
6323
- .muka-pull-to-refresh__chevron {
6324
- display: inline-flex;
6325
- align-items: center;
6326
- justify-content: center;
6327
- transition: transform 0.16s ease;
6328
- }
6329
-
6330
- .muka-pull-to-refresh__scroller {
6331
- flex: 1 1 auto;
6332
- min-height: 0;
6333
- width: 100%;
6334
- overflow-x: clip;
6335
- overflow-y: auto;
6336
- -webkit-overflow-scrolling: touch;
6337
- overscroll-behavior-y: contain;
6338
- touch-action: pan-y;
6339
- will-change: transform;
6340
- }
6341
-
6342
-
6343
6295
  /* Radio */
6344
6296
  /* Radio Component Styles - Using Muka Design Tokens */
6345
6297
 
@@ -6484,268 +6436,71 @@ body {
6484
6436
  }
6485
6437
 
6486
6438
 
6487
- /* ProgressAccordeon */
6488
- /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6439
+ /* PullToRefresh */
6440
+ /* PullToRefresh Component Styles */
6489
6441
 
6490
- /* ─── Root ──────────────────────────────────────────────── */
6491
- .muka-progress-accordeon {
6492
- container-type: inline-size;
6442
+ .muka-pull-to-refresh {
6443
+ position: relative;
6493
6444
  display: flex;
6494
6445
  flex-direction: column;
6495
- align-items: stretch;
6496
6446
  width: 100%;
6497
- /* Top padding provides the vertical rhythm between stacked steps */
6498
- padding-top: var(--spacing-8);
6447
+ height: 100%;
6448
+ overflow: hidden;
6499
6449
  }
6500
6450
 
6501
- /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6502
- .muka-progress-accordeon--current,
6503
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
6504
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
6505
- gap: var(--spacing-6);
6451
+ .muka-pull-to-refresh__indicator {
6452
+ position: absolute;
6453
+ top: 0;
6454
+ left: 0;
6455
+ right: 0;
6456
+ display: flex;
6457
+ align-items: flex-end;
6458
+ justify-content: center;
6459
+ padding-bottom: var(--spacing-2);
6460
+ color: var(--color-text-subtle-default);
6461
+ overflow: hidden;
6462
+ pointer-events: none;
6463
+ z-index: 1;
6506
6464
  }
6507
6465
 
6508
- .muka-progress-accordeon--upcoming,
6509
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
6510
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
6511
- gap: var(--spacing-8);
6466
+ .muka-pull-to-refresh__chevron {
6467
+ display: inline-flex;
6468
+ align-items: center;
6469
+ justify-content: center;
6470
+ transition: transform 0.16s ease;
6512
6471
  }
6513
6472
 
6514
- /* Collapsible steps group header + slot. The header↔content gap lives inside the
6515
- collapsing slot (as padding-top) so it collapses with the content, so the
6516
- body gap itself is 0. */
6517
- .muka-progress-accordeon__body {
6518
- display: flex;
6519
- flex-direction: column;
6520
- gap: 0;
6473
+ .muka-pull-to-refresh__scroller {
6474
+ flex: 1 1 auto;
6475
+ min-height: 0;
6521
6476
  width: 100%;
6477
+ overflow-x: clip;
6478
+ overflow-y: auto;
6479
+ -webkit-overflow-scrolling: touch;
6480
+ overscroll-behavior-y: contain;
6481
+ touch-action: pan-y;
6482
+ will-change: transform;
6522
6483
  }
6523
6484
 
6524
- /* ─── Header ─────────────────────────────────────────────── */
6525
- .muka-progress-accordeon__header {
6526
- display: flex;
6527
- flex-direction: column;
6528
- gap: var(--spacing-3);
6485
+
6486
+ /* ProgressTracker */
6487
+ /* ProgressTracker Component Styles — Using Muka Design Tokens */
6488
+
6489
+ /* ─── Root ──────────────────────────────────────────────── */
6490
+ .muka-progress-tracker {
6529
6491
  width: 100%;
6530
6492
  }
6531
6493
 
6532
- .muka-progress-accordeon__header-row {
6533
- display: flex;
6534
- align-items: flex-start;
6535
- gap: var(--spacing-3);
6536
- width: 100%;
6537
- min-height: 40px;
6494
+ .muka-progress-tracker--horizontal {
6495
+ padding-bottom: var(--spacing-7);
6538
6496
  }
6539
6497
 
6540
- .muka-progress-accordeon__heading-group {
6541
- display: flex;
6542
- flex: 1 0 0;
6543
- min-width: 0;
6544
- align-items: flex-start;
6545
- gap: var(--spacing-4);
6546
- }
6547
-
6548
- /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
6549
- so a single line centres against the indicator + controls row. */
6550
- .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
6551
- .muka-progress-accordeon__heading-group {
6552
- padding-top: var(--spacing-1);
6553
- }
6554
-
6555
- .muka-progress-accordeon__controls {
6556
- display: flex;
6557
- flex-shrink: 0;
6558
- align-items: center;
6559
- gap: var(--spacing-3);
6560
- }
6561
-
6562
- /* ─── Step indicator (circle) ───────────────────────────── */
6563
- .muka-progress-accordeon__indicator {
6564
- width: 32px;
6565
- height: 32px;
6566
- flex-shrink: 0;
6567
- border-radius: var(--border-radius-full);
6568
- display: flex;
6569
- align-items: center;
6570
- justify-content: center;
6571
- }
6572
-
6573
- /* Past: dark accent-contrast circle with inverse checkmark */
6574
- .muka-progress-accordeon__indicator--past {
6575
- background-color: var(--alias-color-accent-contrast);
6576
- color: var(--color-text-default-inverse);
6577
- }
6578
-
6579
- /* Current: accent circle with inverse bold number */
6580
- .muka-progress-accordeon__indicator--current {
6581
- background-color: var(--alias-color-accent-default);
6582
- color: var(--color-text-default-inverse);
6583
- }
6584
-
6585
- /* Upcoming: sunken/muted circle with default-color number */
6586
- .muka-progress-accordeon__indicator--upcoming {
6587
- background-color: var(--color-surface-sunken);
6588
- color: var(--color-text-default-default);
6589
- }
6590
-
6591
- .muka-progress-accordeon__check-icon {
6592
- width: 20px;
6593
- height: 20px;
6594
- color: var(--color-text-default-inverse);
6595
- }
6596
-
6597
- .muka-progress-accordeon__number {
6598
- font-family: var(--text-label-md-bold-fontFamily);
6599
- font-weight: var(--text-label-md-bold-fontWeight);
6600
- font-size: var(--text-label-md-bold-fontSize);
6601
- line-height: var(--text-label-md-bold-lineHeight);
6602
- text-align: center;
6603
- user-select: none;
6604
- }
6605
-
6606
- /* Upcoming number is semibold (not bold) per Figma */
6607
- .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
6608
- font-family: var(--text-label-md-semibold-fontFamily);
6609
- font-weight: var(--text-label-md-semibold-fontWeight);
6610
- }
6611
-
6612
- /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
6613
- .muka-progress-accordeon__heading {
6614
- flex: 1 0 0;
6615
- min-width: 0;
6616
- margin: 0;
6617
- font-family: var(--text-heading-md-fontFamily);
6618
- font-weight: var(--text-heading-md-fontWeight);
6619
- font-size: var(--text-heading-md-fontSize);
6620
- line-height: var(--text-heading-md-lineHeight);
6621
- letter-spacing: var(--text-heading-md-letterSpacing);
6622
- color: var(--color-text-default-default);
6623
- }
6624
-
6625
- /* ─── Description ────────────────────────────────────────── */
6626
- /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
6627
- .muka-progress-accordeon__description {
6628
- width: 100%;
6629
- padding-left: 48px;
6630
- font-family: var(--text-body-base-regular-fontFamily);
6631
- font-weight: var(--text-body-base-regular-fontWeight);
6632
- font-size: var(--text-body-base-regular-fontSize);
6633
- line-height: var(--text-body-base-regular-lineHeight);
6634
- color: var(--color-text-default-default);
6635
- }
6636
-
6637
- /* ─── Edit button ────────────────────────────────────────── */
6638
- .muka-progress-accordeon__edit {
6639
- flex-shrink: 0;
6640
- }
6641
-
6642
- /* Wide container shows the labelled button; the icon-only one is hidden */
6643
- .muka-progress-accordeon__edit--narrow {
6644
- display: none;
6645
- }
6646
-
6647
- /* ─── Content slot ───────────────────────────────────────── */
6648
- .muka-progress-accordeon__slot {
6649
- display: flex;
6650
- flex-direction: column;
6651
- align-items: stretch;
6652
- width: 100%;
6653
- }
6654
-
6655
- /* ─── Collapse/expand animation (past & upcoming steps) ──────
6656
- The grid-template-rows 1fr → 0fr technique animates the content to/from its
6657
- intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
6658
- --motion-duration-view resolves to 0ms, so the toggle stays instant. */
6659
- .muka-progress-accordeon__slot-wrapper {
6660
- display: grid;
6661
- grid-template-rows: 1fr;
6662
- transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
6663
- }
6664
-
6665
- .muka-progress-accordeon__slot-wrapper--collapsed {
6666
- grid-template-rows: 0fr;
6667
- }
6668
-
6669
- /* The direct grid child clips and must have NO padding/border of its own —
6670
- min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
6671
- 0 height (padding on the item would leave a residual gap when collapsed). */
6672
- .muka-progress-accordeon__slot-clip {
6673
- overflow: hidden;
6674
- min-height: 0;
6675
- }
6676
-
6677
- /* The header↔content spacing lives on the inner slot (inside the clip region)
6678
- so it collapses together with the content. */
6679
- .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
6680
- padding-top: var(--spacing-4);
6681
- }
6682
-
6683
- /* ─── Action buttons (current state) ─────────────────────── */
6684
- .muka-progress-accordeon__actions {
6685
- display: flex;
6686
- justify-content: flex-end;
6687
- gap: var(--spacing-4);
6688
- width: 100%;
6689
- }
6690
-
6691
- .muka-progress-accordeon__action {
6692
- min-width: 160px;
6693
- }
6694
-
6695
- /* ─── Divider ────────────────────────────────────────────── */
6696
- .muka-progress-accordeon__divider {
6697
- width: 100%;
6698
- }
6699
-
6700
- /* ─── Responsive (narrow container) ──────────────────────── */
6701
- @container (max-width: 480px) {
6702
- /* Heading steps down to heading/sm. The 24px line-height is shorter than the
6703
- 32px step indicator, so nudge the text down to keep a single line centred. */
6704
- .muka-progress-accordeon__heading {
6705
- font-size: var(--text-heading-sm-fontSize);
6706
- line-height: var(--text-heading-sm-lineHeight);
6707
- padding-top: var(--spacing-1);
6708
- }
6709
-
6710
- /* Edit button swaps to the icon-only variant */
6711
- .muka-progress-accordeon__edit--wide {
6712
- display: none;
6713
- }
6714
-
6715
- .muka-progress-accordeon__edit--narrow {
6716
- display: inline-flex;
6717
- }
6718
-
6719
- /* Action buttons stretch to fill the row */
6720
- .muka-progress-accordeon__actions {
6721
- justify-content: stretch;
6722
- }
6723
-
6724
- .muka-progress-accordeon__action {
6725
- flex: 1 0 0;
6726
- min-width: 0;
6727
- }
6728
- }
6729
-
6730
-
6731
- /* ProgressTracker */
6732
- /* ProgressTracker Component Styles — Using Muka Design Tokens */
6733
-
6734
- /* ─── Root ──────────────────────────────────────────────── */
6735
- .muka-progress-tracker {
6736
- width: 100%;
6737
- }
6738
-
6739
- .muka-progress-tracker--horizontal {
6740
- padding-bottom: var(--spacing-7);
6741
- }
6742
-
6743
- /* ─── Track (layered container) ─────────────────────────── */
6744
- .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6745
- position: relative;
6746
- /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6747
- padding-top: 14px;
6748
- padding-bottom: 14px;
6498
+ /* ─── Track (layered container) ─────────────────────────── */
6499
+ .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6500
+ position: relative;
6501
+ /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6502
+ padding-top: 14px;
6503
+ padding-bottom: 14px;
6749
6504
  }
6750
6505
 
6751
6506
  /* ─── Steps layer (on top) — horizontal ─────────────────── */
@@ -7145,74 +6900,247 @@ body {
7145
6900
  }
7146
6901
 
7147
6902
 
7148
- /* ProfileBadge */
7149
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
6903
+ /* ProgressAccordeon */
6904
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
7150
6905
 
7151
- .muka-profile-badge {
7152
- display: inline-flex;
7153
- align-items: center;
7154
- font-family: var(--text-body-base-regular-fontFamily);
6906
+ /* ─── Root ──────────────────────────────────────────────── */
6907
+ .muka-progress-accordeon {
6908
+ container-type: inline-size;
6909
+ display: flex;
6910
+ flex-direction: column;
6911
+ align-items: stretch;
6912
+ width: 100%;
6913
+ /* Top padding provides the vertical rhythm between stacked steps */
6914
+ padding-top: var(--spacing-8);
7155
6915
  }
7156
6916
 
7157
- /* Size variants */
7158
- .muka-profile-badge--lg {
7159
- gap: var(--spacing-4); /* 16px */
6917
+ /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6918
+ .muka-progress-accordeon--current,
6919
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
6920
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
6921
+ gap: var(--spacing-6);
7160
6922
  }
7161
6923
 
7162
- .muka-profile-badge--md {
7163
- gap: var(--spacing-3); /* 12px */
6924
+ .muka-progress-accordeon--upcoming,
6925
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
6926
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
6927
+ gap: var(--spacing-8);
7164
6928
  }
7165
6929
 
7166
- .muka-profile-badge__avatar {
7167
- flex-shrink: 0;
6930
+ /* Collapsible steps group header + slot. The header↔content gap lives inside the
6931
+ collapsing slot (as padding-top) so it collapses with the content, so the
6932
+ body gap itself is 0. */
6933
+ .muka-progress-accordeon__body {
6934
+ display: flex;
6935
+ flex-direction: column;
6936
+ gap: 0;
6937
+ width: 100%;
7168
6938
  }
7169
6939
 
7170
- /* Text stack */
7171
- .muka-profile-badge__text {
6940
+ /* ─── Header ─────────────────────────────────────────────── */
6941
+ .muka-progress-accordeon__header {
7172
6942
  display: flex;
7173
6943
  flex-direction: column;
7174
- align-items: flex-start;
7175
- min-width: 0;
6944
+ gap: var(--spacing-3);
6945
+ width: 100%;
7176
6946
  }
7177
6947
 
7178
- .muka-profile-badge__name {
7179
- font-family: var(--text-body-base-regular-fontFamily);
7180
- font-size: var(--text-body-base-regular-fontSize);
7181
- font-weight: var(--text-body-base-regular-fontWeight);
7182
- line-height: var(--text-body-base-regular-lineHeight);
6948
+ .muka-progress-accordeon__header-row {
6949
+ display: flex;
6950
+ align-items: flex-start;
6951
+ gap: var(--spacing-3);
6952
+ width: 100%;
6953
+ min-height: 40px;
6954
+ }
6955
+
6956
+ .muka-progress-accordeon__heading-group {
6957
+ display: flex;
6958
+ flex: 1 0 0;
6959
+ min-width: 0;
6960
+ align-items: flex-start;
6961
+ gap: var(--spacing-4);
6962
+ }
6963
+
6964
+ /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
6965
+ so a single line centres against the indicator + controls row. */
6966
+ .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
6967
+ .muka-progress-accordeon__heading-group {
6968
+ padding-top: var(--spacing-1);
6969
+ }
6970
+
6971
+ .muka-progress-accordeon__controls {
6972
+ display: flex;
6973
+ flex-shrink: 0;
6974
+ align-items: center;
6975
+ gap: var(--spacing-3);
6976
+ }
6977
+
6978
+ /* ─── Step indicator (circle) ───────────────────────────── */
6979
+ .muka-progress-accordeon__indicator {
6980
+ width: 32px;
6981
+ height: 32px;
6982
+ flex-shrink: 0;
6983
+ border-radius: var(--border-radius-full);
6984
+ display: flex;
6985
+ align-items: center;
6986
+ justify-content: center;
6987
+ }
6988
+
6989
+ /* Past: dark accent-contrast circle with inverse checkmark */
6990
+ .muka-progress-accordeon__indicator--past {
6991
+ background-color: var(--alias-color-accent-contrast);
6992
+ color: var(--color-text-default-inverse);
6993
+ }
6994
+
6995
+ /* Current: accent circle with inverse bold number */
6996
+ .muka-progress-accordeon__indicator--current {
6997
+ background-color: var(--alias-color-accent-default);
6998
+ color: var(--color-text-default-inverse);
6999
+ }
7000
+
7001
+ /* Upcoming: sunken/muted circle with default-color number */
7002
+ .muka-progress-accordeon__indicator--upcoming {
7003
+ background-color: var(--color-surface-sunken);
7183
7004
  color: var(--color-text-default-default);
7184
7005
  }
7185
7006
 
7186
- .muka-profile-badge__email {
7187
- font-family: var(--text-body-xs-regular-fontFamily);
7188
- font-size: var(--text-body-xs-regular-fontSize);
7189
- font-weight: var(--text-body-xs-regular-fontWeight);
7190
- line-height: var(--text-body-xs-regular-lineHeight);
7191
- color: var(--color-text-subtle-default);
7007
+ .muka-progress-accordeon__check-icon {
7008
+ width: 20px;
7009
+ height: 20px;
7010
+ color: var(--color-text-default-inverse);
7192
7011
  }
7193
7012
 
7194
- /* Clickable state */
7195
- .muka-profile-badge--clickable {
7196
- cursor: pointer;
7197
- border: none;
7198
- background: none;
7199
- padding: 0;
7200
- text-align: left;
7201
- border-radius: var(--radius-md);
7202
- transition: opacity 0.2s ease;
7013
+ .muka-progress-accordeon__number {
7014
+ font-family: var(--text-label-md-bold-fontFamily);
7015
+ font-weight: var(--text-label-md-bold-fontWeight);
7016
+ font-size: var(--text-label-md-bold-fontSize);
7017
+ line-height: var(--text-label-md-bold-lineHeight);
7018
+ text-align: center;
7019
+ user-select: none;
7203
7020
  }
7204
7021
 
7205
- .muka-profile-badge--clickable:hover {
7206
- opacity: 0.9;
7022
+ /* Upcoming number is semibold (not bold) per Figma */
7023
+ .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
7024
+ font-family: var(--text-label-md-semibold-fontFamily);
7025
+ font-weight: var(--text-label-md-semibold-fontWeight);
7207
7026
  }
7208
7027
 
7209
- .muka-profile-badge--clickable:active {
7210
- opacity: 0.8;
7028
+ /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
7029
+ .muka-progress-accordeon__heading {
7030
+ flex: 1 0 0;
7031
+ min-width: 0;
7032
+ margin: 0;
7033
+ font-family: var(--text-heading-md-fontFamily);
7034
+ font-weight: var(--text-heading-md-fontWeight);
7035
+ font-size: var(--text-heading-md-fontSize);
7036
+ line-height: var(--text-heading-md-lineHeight);
7037
+ letter-spacing: var(--text-heading-md-letterSpacing);
7038
+ color: var(--color-text-default-default);
7211
7039
  }
7212
7040
 
7213
- .muka-profile-badge--clickable:focus-visible {
7214
- outline: 2px solid var(--color-border-focus);
7215
- outline-offset: 2px;
7041
+ /* ─── Description ────────────────────────────────────────── */
7042
+ /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
7043
+ .muka-progress-accordeon__description {
7044
+ width: 100%;
7045
+ padding-left: 48px;
7046
+ font-family: var(--text-body-base-regular-fontFamily);
7047
+ font-weight: var(--text-body-base-regular-fontWeight);
7048
+ font-size: var(--text-body-base-regular-fontSize);
7049
+ line-height: var(--text-body-base-regular-lineHeight);
7050
+ color: var(--color-text-default-default);
7051
+ }
7052
+
7053
+ /* ─── Edit button ────────────────────────────────────────── */
7054
+ .muka-progress-accordeon__edit {
7055
+ flex-shrink: 0;
7056
+ }
7057
+
7058
+ /* Wide container shows the labelled button; the icon-only one is hidden */
7059
+ .muka-progress-accordeon__edit--narrow {
7060
+ display: none;
7061
+ }
7062
+
7063
+ /* ─── Content slot ───────────────────────────────────────── */
7064
+ .muka-progress-accordeon__slot {
7065
+ display: flex;
7066
+ flex-direction: column;
7067
+ align-items: stretch;
7068
+ width: 100%;
7069
+ }
7070
+
7071
+ /* ─── Collapse/expand animation (past & upcoming steps) ──────
7072
+ The grid-template-rows 1fr → 0fr technique animates the content to/from its
7073
+ intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7074
+ --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7075
+ .muka-progress-accordeon__slot-wrapper {
7076
+ display: grid;
7077
+ grid-template-rows: 1fr;
7078
+ transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7079
+ }
7080
+
7081
+ .muka-progress-accordeon__slot-wrapper--collapsed {
7082
+ grid-template-rows: 0fr;
7083
+ }
7084
+
7085
+ /* The direct grid child clips and must have NO padding/border of its own —
7086
+ min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7087
+ 0 height (padding on the item would leave a residual gap when collapsed). */
7088
+ .muka-progress-accordeon__slot-clip {
7089
+ overflow: hidden;
7090
+ min-height: 0;
7091
+ }
7092
+
7093
+ /* The header↔content spacing lives on the inner slot (inside the clip region)
7094
+ so it collapses together with the content. */
7095
+ .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7096
+ padding-top: var(--spacing-4);
7097
+ }
7098
+
7099
+ /* ─── Action buttons (current state) ─────────────────────── */
7100
+ .muka-progress-accordeon__actions {
7101
+ display: flex;
7102
+ justify-content: flex-end;
7103
+ gap: var(--spacing-4);
7104
+ width: 100%;
7105
+ }
7106
+
7107
+ .muka-progress-accordeon__action {
7108
+ min-width: 160px;
7109
+ }
7110
+
7111
+ /* ─── Divider ────────────────────────────────────────────── */
7112
+ .muka-progress-accordeon__divider {
7113
+ width: 100%;
7114
+ }
7115
+
7116
+ /* ─── Responsive (narrow container) ──────────────────────── */
7117
+ @container (max-width: 480px) {
7118
+ /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7119
+ 32px step indicator, so nudge the text down to keep a single line centred. */
7120
+ .muka-progress-accordeon__heading {
7121
+ font-size: var(--text-heading-sm-fontSize);
7122
+ line-height: var(--text-heading-sm-lineHeight);
7123
+ padding-top: var(--spacing-1);
7124
+ }
7125
+
7126
+ /* Edit button swaps to the icon-only variant */
7127
+ .muka-progress-accordeon__edit--wide {
7128
+ display: none;
7129
+ }
7130
+
7131
+ .muka-progress-accordeon__edit--narrow {
7132
+ display: inline-flex;
7133
+ }
7134
+
7135
+ /* Action buttons stretch to fill the row */
7136
+ .muka-progress-accordeon__actions {
7137
+ justify-content: stretch;
7138
+ }
7139
+
7140
+ .muka-progress-accordeon__action {
7141
+ flex: 1 0 0;
7142
+ min-width: 0;
7143
+ }
7216
7144
  }
7217
7145
 
7218
7146
 
@@ -7388,34 +7316,74 @@ body {
7388
7316
  }
7389
7317
 
7390
7318
 
7391
- /* Popover */
7392
- /* Popover Component Styles */
7319
+ /* ProfileBadge */
7320
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
7393
7321
 
7394
- .muka-popover__content {
7395
- background-color: var(--color-surface-level3);
7396
- border: var(--border-width-regular) solid var(--color-border-default);
7322
+ .muka-profile-badge {
7323
+ display: inline-flex;
7324
+ align-items: center;
7325
+ font-family: var(--text-body-base-regular-fontFamily);
7326
+ }
7327
+
7328
+ /* Size variants */
7329
+ .muka-profile-badge--lg {
7330
+ gap: var(--spacing-4); /* 16px */
7331
+ }
7332
+
7333
+ .muka-profile-badge--md {
7334
+ gap: var(--spacing-3); /* 12px */
7335
+ }
7336
+
7337
+ .muka-profile-badge__avatar {
7338
+ flex-shrink: 0;
7339
+ }
7340
+
7341
+ /* Text stack */
7342
+ .muka-profile-badge__text {
7343
+ display: flex;
7344
+ flex-direction: column;
7345
+ align-items: flex-start;
7346
+ min-width: 0;
7347
+ }
7348
+
7349
+ .muka-profile-badge__name {
7350
+ font-family: var(--text-body-base-regular-fontFamily);
7351
+ font-size: var(--text-body-base-regular-fontSize);
7352
+ font-weight: var(--text-body-base-regular-fontWeight);
7353
+ line-height: var(--text-body-base-regular-lineHeight);
7354
+ color: var(--color-text-default-default);
7355
+ }
7356
+
7357
+ .muka-profile-badge__email {
7358
+ font-family: var(--text-body-xs-regular-fontFamily);
7359
+ font-size: var(--text-body-xs-regular-fontSize);
7360
+ font-weight: var(--text-body-xs-regular-fontWeight);
7361
+ line-height: var(--text-body-xs-regular-lineHeight);
7362
+ color: var(--color-text-subtle-default);
7363
+ }
7364
+
7365
+ /* Clickable state */
7366
+ .muka-profile-badge--clickable {
7367
+ cursor: pointer;
7368
+ border: none;
7369
+ background: none;
7370
+ padding: 0;
7371
+ text-align: left;
7397
7372
  border-radius: var(--radius-md);
7398
- padding: var(--spacing-4);
7399
- box-shadow: var(--shadow-level3);
7400
- max-width: 20rem;
7401
- z-index: 50;
7402
- animation: muka-popover-fade-in 150ms ease;
7373
+ transition: opacity 0.2s ease;
7403
7374
  }
7404
7375
 
7405
- @keyframes muka-popover-fade-in {
7406
- from {
7407
- opacity: 0;
7408
- transform: scale(0.96);
7409
- }
7410
- to {
7411
- opacity: 1;
7412
- transform: scale(1);
7413
- }
7376
+ .muka-profile-badge--clickable:hover {
7377
+ opacity: 0.9;
7414
7378
  }
7415
7379
 
7416
- /* Arrow */
7417
- .muka-popover__arrow {
7418
- fill: var(--color-surface-level3);
7380
+ .muka-profile-badge--clickable:active {
7381
+ opacity: 0.8;
7382
+ }
7383
+
7384
+ .muka-profile-badge--clickable:focus-visible {
7385
+ outline: 2px solid var(--color-border-focus);
7386
+ outline-offset: 2px;
7419
7387
  }
7420
7388
 
7421
7389
 
@@ -7516,6 +7484,134 @@ body {
7516
7484
  }
7517
7485
 
7518
7486
 
7487
+ /* Popover */
7488
+ /* Popover Component Styles */
7489
+
7490
+ .muka-popover__content {
7491
+ background-color: var(--color-surface-level3);
7492
+ border: var(--border-width-regular) solid var(--color-border-default);
7493
+ border-radius: var(--radius-md);
7494
+ padding: var(--spacing-4);
7495
+ box-shadow: var(--shadow-level3);
7496
+ max-width: 20rem;
7497
+ z-index: 50;
7498
+ animation: muka-popover-fade-in 150ms ease;
7499
+ }
7500
+
7501
+ @keyframes muka-popover-fade-in {
7502
+ from {
7503
+ opacity: 0;
7504
+ transform: scale(0.96);
7505
+ }
7506
+ to {
7507
+ opacity: 1;
7508
+ transform: scale(1);
7509
+ }
7510
+ }
7511
+
7512
+ /* Arrow */
7513
+ .muka-popover__arrow {
7514
+ fill: var(--color-surface-level3);
7515
+ }
7516
+
7517
+
7518
+ /* PieChart */
7519
+ /* PieChart Component Styles - Using Muka Design Tokens */
7520
+
7521
+ .muka-piechart {
7522
+ display: inline-flex;
7523
+ align-items: center;
7524
+ gap: var(--spacing-4);
7525
+ }
7526
+
7527
+ /* Legend layout */
7528
+ .muka-piechart--legend-right {
7529
+ flex-direction: row;
7530
+ }
7531
+
7532
+ .muka-piechart--legend-bottom {
7533
+ flex-direction: column;
7534
+ }
7535
+
7536
+ /* ========================================
7537
+ CHART
7538
+ ======================================== */
7539
+
7540
+ .muka-piechart__chart {
7541
+ position: relative;
7542
+ flex-shrink: 0;
7543
+ }
7544
+
7545
+ .muka-piechart__chart--sm {
7546
+ width: var(--piechart-size-diameter-sm);
7547
+ height: var(--piechart-size-diameter-sm);
7548
+ }
7549
+
7550
+ .muka-piechart__chart--md {
7551
+ width: var(--piechart-size-diameter-md);
7552
+ height: var(--piechart-size-diameter-md);
7553
+ }
7554
+
7555
+ .muka-piechart__chart--lg {
7556
+ width: var(--piechart-size-diameter-lg);
7557
+ height: var(--piechart-size-diameter-lg);
7558
+ }
7559
+
7560
+ .muka-piechart__svg {
7561
+ display: block;
7562
+ width: 100%;
7563
+ height: 100%;
7564
+ /* Start slices at 12 o'clock instead of 3 o'clock */
7565
+ transform: rotate(-90deg);
7566
+ }
7567
+
7568
+ .muka-piechart__track {
7569
+ fill: none;
7570
+ stroke: var(--piechart-color-track);
7571
+ }
7572
+
7573
+ .muka-piechart__segment {
7574
+ fill: none;
7575
+ }
7576
+
7577
+ /* ========================================
7578
+ LEGEND
7579
+ ======================================== */
7580
+
7581
+ .muka-piechart__legend {
7582
+ list-style: none;
7583
+ margin: 0;
7584
+ padding: 0;
7585
+ display: flex;
7586
+ flex-direction: column;
7587
+ gap: var(--spacing-1);
7588
+ }
7589
+
7590
+ .muka-piechart__legend-item {
7591
+ display: flex;
7592
+ align-items: center;
7593
+ gap: var(--spacing-2);
7594
+ font-family: var(--text-body-sm-regular-fontFamily);
7595
+ font-weight: var(--text-body-sm-regular-fontWeight);
7596
+ font-size: var(--text-body-sm-regular-fontSize);
7597
+ line-height: var(--text-body-sm-regular-lineHeight);
7598
+ color: var(--color-text-default-default);
7599
+ }
7600
+
7601
+ .muka-piechart__swatch {
7602
+ flex-shrink: 0;
7603
+ width: var(--spacing-3);
7604
+ height: var(--spacing-3);
7605
+ border-radius: var(--border-radius-sm);
7606
+ }
7607
+
7608
+ .muka-piechart__legend-value {
7609
+ margin-left: auto;
7610
+ padding-left: var(--spacing-2);
7611
+ color: var(--color-text-subtle-default);
7612
+ }
7613
+
7614
+
7519
7615
  /* PhotoUploader */
7520
7616
  /* PhotoUploader Component Styles - Using Muka Design Tokens */
7521
7617
 
@@ -7636,108 +7732,11 @@ body {
7636
7732
  border-radius: var(--border-radius-lg);
7637
7733
  }
7638
7734
 
7639
- /* ─── Reduced motion ──────────────────────────────────── */
7640
- @media (prefers-reduced-motion: reduce) {
7641
- .muka-photo-uploader__dropzone {
7642
- transition: none;
7643
- }
7644
- }
7645
-
7646
-
7647
- /* PieChart */
7648
- /* PieChart Component Styles - Using Muka Design Tokens */
7649
-
7650
- .muka-piechart {
7651
- display: inline-flex;
7652
- align-items: center;
7653
- gap: var(--spacing-4);
7654
- }
7655
-
7656
- /* Legend layout */
7657
- .muka-piechart--legend-right {
7658
- flex-direction: row;
7659
- }
7660
-
7661
- .muka-piechart--legend-bottom {
7662
- flex-direction: column;
7663
- }
7664
-
7665
- /* ========================================
7666
- CHART
7667
- ======================================== */
7668
-
7669
- .muka-piechart__chart {
7670
- position: relative;
7671
- flex-shrink: 0;
7672
- }
7673
-
7674
- .muka-piechart__chart--sm {
7675
- width: var(--piechart-size-diameter-sm);
7676
- height: var(--piechart-size-diameter-sm);
7677
- }
7678
-
7679
- .muka-piechart__chart--md {
7680
- width: var(--piechart-size-diameter-md);
7681
- height: var(--piechart-size-diameter-md);
7682
- }
7683
-
7684
- .muka-piechart__chart--lg {
7685
- width: var(--piechart-size-diameter-lg);
7686
- height: var(--piechart-size-diameter-lg);
7687
- }
7688
-
7689
- .muka-piechart__svg {
7690
- display: block;
7691
- width: 100%;
7692
- height: 100%;
7693
- /* Start slices at 12 o'clock instead of 3 o'clock */
7694
- transform: rotate(-90deg);
7695
- }
7696
-
7697
- .muka-piechart__track {
7698
- fill: none;
7699
- stroke: var(--piechart-color-track);
7700
- }
7701
-
7702
- .muka-piechart__segment {
7703
- fill: none;
7704
- }
7705
-
7706
- /* ========================================
7707
- LEGEND
7708
- ======================================== */
7709
-
7710
- .muka-piechart__legend {
7711
- list-style: none;
7712
- margin: 0;
7713
- padding: 0;
7714
- display: flex;
7715
- flex-direction: column;
7716
- gap: var(--spacing-1);
7717
- }
7718
-
7719
- .muka-piechart__legend-item {
7720
- display: flex;
7721
- align-items: center;
7722
- gap: var(--spacing-2);
7723
- font-family: var(--text-body-sm-regular-fontFamily);
7724
- font-weight: var(--text-body-sm-regular-fontWeight);
7725
- font-size: var(--text-body-sm-regular-fontSize);
7726
- line-height: var(--text-body-sm-regular-lineHeight);
7727
- color: var(--color-text-default-default);
7728
- }
7729
-
7730
- .muka-piechart__swatch {
7731
- flex-shrink: 0;
7732
- width: var(--spacing-3);
7733
- height: var(--spacing-3);
7734
- border-radius: var(--border-radius-sm);
7735
- }
7736
-
7737
- .muka-piechart__legend-value {
7738
- margin-left: auto;
7739
- padding-left: var(--spacing-2);
7740
- color: var(--color-text-subtle-default);
7735
+ /* ─── Reduced motion ──────────────────────────────────── */
7736
+ @media (prefers-reduced-motion: reduce) {
7737
+ .muka-photo-uploader__dropzone {
7738
+ transition: none;
7739
+ }
7741
7740
  }
7742
7741
 
7743
7742
 
@@ -10798,6 +10797,11 @@ li.muka-listitem {
10798
10797
  transition: background-color 0.15s ease;
10799
10798
  }
10800
10799
 
10800
+ /* Last body row: no bottom border (matches Table; avoids a double line at the table edge). */
10801
+ .muka-data-table__body .muka-data-table__row:last-child {
10802
+ border-bottom: none;
10803
+ }
10804
+
10801
10805
  .muka-data-table__row:not(.muka-data-table__row--empty):not(.muka-data-table__row--selected):hover {
10802
10806
  background-color: var(--datatable-row-hover-background);
10803
10807
  }
@@ -12199,6 +12203,128 @@ li.muka-listitem {
12199
12203
  }
12200
12204
 
12201
12205
 
12206
+ /* ChatPhotoGrid */
12207
+ /* ChatPhotoGrid Component Styles */
12208
+
12209
+ /*
12210
+ * The grid clips to its own radius and the tiles stay square, so only the four
12211
+ * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12212
+ */
12213
+ .muka-chat-photo-grid {
12214
+ display: grid;
12215
+ gap: var(--chatphotogrid-gap);
12216
+ width: 100%;
12217
+ min-width: 0;
12218
+ overflow: hidden;
12219
+ border-radius: var(--chatphotogrid-radius);
12220
+ }
12221
+
12222
+ /* ─── Tiles ────────────────────────────────────────────── */
12223
+
12224
+ .muka-chat-photo-grid__tile {
12225
+ position: relative;
12226
+ display: block;
12227
+ overflow: hidden;
12228
+ min-width: 0;
12229
+ padding: 0;
12230
+ margin: 0;
12231
+ border: none;
12232
+ background-color: var(--chatphotogrid-color-placeholder);
12233
+ aspect-ratio: 1 / 1;
12234
+ }
12235
+
12236
+ button.muka-chat-photo-grid__tile {
12237
+ cursor: pointer;
12238
+ appearance: none;
12239
+ }
12240
+
12241
+ button.muka-chat-photo-grid__tile:focus-visible {
12242
+ outline: var(--border-width-bold) solid var(--color-border-focus);
12243
+ /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12244
+ outline-offset: calc(-1 * var(--border-width-bold));
12245
+ }
12246
+
12247
+ .muka-chat-photo-grid__image {
12248
+ display: block;
12249
+ width: 100%;
12250
+ height: 100%;
12251
+ object-fit: cover;
12252
+ }
12253
+
12254
+ /* ─── Overflow tile ────────────────────────────────────── */
12255
+
12256
+ .muka-chat-photo-grid__overflow {
12257
+ position: absolute;
12258
+ inset: 0;
12259
+ display: flex;
12260
+ align-items: center;
12261
+ justify-content: center;
12262
+ background-color: var(--chatphotogrid-color-overflow-background);
12263
+ color: var(--chatphotogrid-color-overflow-foreground);
12264
+ font-family: var(--text-body-2xl-regular-fontFamily);
12265
+ font-weight: var(--text-body-2xl-regular-fontWeight);
12266
+ font-size: var(--text-body-2xl-regular-fontSize);
12267
+ line-height: var(--text-body-2xl-regular-lineHeight);
12268
+ }
12269
+
12270
+ /* ─── Layouts ──────────────────────────────────────────── */
12271
+
12272
+ .muka-chat-photo-grid--1 {
12273
+ grid-template-columns: 1fr;
12274
+ }
12275
+
12276
+ .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12277
+ aspect-ratio: 4 / 3;
12278
+ }
12279
+
12280
+ .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12281
+ aspect-ratio: 3 / 4;
12282
+ }
12283
+
12284
+ .muka-chat-photo-grid--2 {
12285
+ grid-template-columns: repeat(2, 1fr);
12286
+ }
12287
+
12288
+ .muka-chat-photo-grid--3 {
12289
+ grid-template-columns: repeat(3, 1fr);
12290
+ }
12291
+
12292
+ .muka-chat-photo-grid--4 {
12293
+ grid-template-columns: repeat(2, 1fr);
12294
+ }
12295
+
12296
+ /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12297
+ .muka-chat-photo-grid--5 {
12298
+ grid-template-columns: repeat(6, 1fr);
12299
+ }
12300
+
12301
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12302
+ grid-column: span 3;
12303
+ }
12304
+
12305
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12306
+ grid-column: span 2;
12307
+ }
12308
+
12309
+ .muka-chat-photo-grid--6,
12310
+ .muka-chat-photo-grid--overflow {
12311
+ grid-template-columns: repeat(3, 1fr);
12312
+ }
12313
+
12314
+ /* ─── Print ────────────────────────────────────────────── */
12315
+
12316
+ @media print {
12317
+ .muka-chat-photo-grid {
12318
+ break-inside: avoid;
12319
+ }
12320
+
12321
+ .muka-chat-photo-grid__image {
12322
+ print-color-adjust: exact;
12323
+ -webkit-print-color-adjust: exact;
12324
+ }
12325
+ }
12326
+
12327
+
12202
12328
  /* ChatMessageStack */
12203
12329
  /* ChatMessageStack Component Styles */
12204
12330
 
@@ -12362,12 +12488,10 @@ li.muka-listitem {
12362
12488
  */
12363
12489
  width: fit-content;
12364
12490
  /*
12365
- * Stops short of the far edge at every width: the fixed cap once the
12366
- * conversation column reaches its own cap, the ratio below that, where the
12367
- * column runs full-bleed. Without that gap a long `own` bubble spans the
12368
- * column and reads no differently from a `peer` one.
12491
+ * Ceiling from design (Figma 5355:44091). Below it, wrapping text fills the
12492
+ * row; above it the fixed cap leaves room for own/peer alignment.
12369
12493
  */
12370
- max-width: min(var(--chatbubble-max-width), var(--chatbubble-max-width-ratio));
12494
+ max-width: var(--chatbubble-max-width);
12371
12495
  position: relative;
12372
12496
  display: flex;
12373
12497
  flex-direction: column;
@@ -15069,125 +15193,3 @@ li.muka-listitem {
15069
15193
  border-bottom: none;
15070
15194
  }
15071
15195
 
15072
-
15073
- /* ChatPhotoGrid */
15074
- /* ChatPhotoGrid Component Styles */
15075
-
15076
- /*
15077
- * The grid clips to its own radius and the tiles stay square, so only the four
15078
- * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
15079
- */
15080
- .muka-chat-photo-grid {
15081
- display: grid;
15082
- gap: var(--chatphotogrid-gap);
15083
- width: 100%;
15084
- min-width: 0;
15085
- overflow: hidden;
15086
- border-radius: var(--chatphotogrid-radius);
15087
- }
15088
-
15089
- /* ─── Tiles ────────────────────────────────────────────── */
15090
-
15091
- .muka-chat-photo-grid__tile {
15092
- position: relative;
15093
- display: block;
15094
- overflow: hidden;
15095
- min-width: 0;
15096
- padding: 0;
15097
- margin: 0;
15098
- border: none;
15099
- background-color: var(--chatphotogrid-color-placeholder);
15100
- aspect-ratio: 1 / 1;
15101
- }
15102
-
15103
- button.muka-chat-photo-grid__tile {
15104
- cursor: pointer;
15105
- appearance: none;
15106
- }
15107
-
15108
- button.muka-chat-photo-grid__tile:focus-visible {
15109
- outline: var(--border-width-bold) solid var(--color-border-focus);
15110
- /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
15111
- outline-offset: calc(-1 * var(--border-width-bold));
15112
- }
15113
-
15114
- .muka-chat-photo-grid__image {
15115
- display: block;
15116
- width: 100%;
15117
- height: 100%;
15118
- object-fit: cover;
15119
- }
15120
-
15121
- /* ─── Overflow tile ────────────────────────────────────── */
15122
-
15123
- .muka-chat-photo-grid__overflow {
15124
- position: absolute;
15125
- inset: 0;
15126
- display: flex;
15127
- align-items: center;
15128
- justify-content: center;
15129
- background-color: var(--chatphotogrid-color-overflow-background);
15130
- color: var(--chatphotogrid-color-overflow-foreground);
15131
- font-family: var(--text-body-2xl-regular-fontFamily);
15132
- font-weight: var(--text-body-2xl-regular-fontWeight);
15133
- font-size: var(--text-body-2xl-regular-fontSize);
15134
- line-height: var(--text-body-2xl-regular-lineHeight);
15135
- }
15136
-
15137
- /* ─── Layouts ──────────────────────────────────────────── */
15138
-
15139
- .muka-chat-photo-grid--1 {
15140
- grid-template-columns: 1fr;
15141
- }
15142
-
15143
- .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
15144
- aspect-ratio: 4 / 3;
15145
- }
15146
-
15147
- .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
15148
- aspect-ratio: 3 / 4;
15149
- }
15150
-
15151
- .muka-chat-photo-grid--2 {
15152
- grid-template-columns: repeat(2, 1fr);
15153
- }
15154
-
15155
- .muka-chat-photo-grid--3 {
15156
- grid-template-columns: repeat(3, 1fr);
15157
- }
15158
-
15159
- .muka-chat-photo-grid--4 {
15160
- grid-template-columns: repeat(2, 1fr);
15161
- }
15162
-
15163
- /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
15164
- .muka-chat-photo-grid--5 {
15165
- grid-template-columns: repeat(6, 1fr);
15166
- }
15167
-
15168
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
15169
- grid-column: span 3;
15170
- }
15171
-
15172
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
15173
- grid-column: span 2;
15174
- }
15175
-
15176
- .muka-chat-photo-grid--6,
15177
- .muka-chat-photo-grid--overflow {
15178
- grid-template-columns: repeat(3, 1fr);
15179
- }
15180
-
15181
- /* ─── Print ────────────────────────────────────────────── */
15182
-
15183
- @media print {
15184
- .muka-chat-photo-grid {
15185
- break-inside: avoid;
15186
- }
15187
-
15188
- .muka-chat-photo-grid__image {
15189
- print-color-adjust: exact;
15190
- -webkit-print-color-adjust: exact;
15191
- }
15192
- }
15193
-