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