@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.
@@ -1662,8 +1662,7 @@ body {
1662
1662
  --card-border-pressed: 0.125rem solid #b4b4b4;
1663
1663
  --card-border-selected: 0.125rem solid #b4b4b4;
1664
1664
  --chat-column-max-width: 768px;
1665
- --chatbubble-max-width: 37rem;
1666
- --chatbubble-max-width-ratio: 77%;
1665
+ --chatbubble-max-width: 600px;
1667
1666
  --chatbubble-radius: 0px;
1668
1667
  --chatbubble-padding-block: 0.75rem;
1669
1668
  --chatbubble-padding-inline: 1rem;
@@ -4718,6 +4717,91 @@ body {
4718
4717
  }
4719
4718
 
4720
4719
 
4720
+ /* SpecList */
4721
+ /* SpecList Component Styles */
4722
+
4723
+ .muka-spec-list {
4724
+ margin: 0;
4725
+ padding: 0;
4726
+ }
4727
+
4728
+ /* ─── Row ─────────────────────────────────────────────── */
4729
+
4730
+ .muka-spec-row {
4731
+ display: flex;
4732
+ align-items: flex-start;
4733
+ gap: var(--spacing-3);
4734
+ padding-bottom: var(--spacing-3);
4735
+ }
4736
+
4737
+ /* ─── Label ───────────────────────────────────────────── */
4738
+
4739
+ .muka-spec-row__label {
4740
+ flex: 0 0 auto;
4741
+ margin: 0;
4742
+ color: var(--color-text-subtle-default);
4743
+ font-family: var(--text-body-base-regular-fontFamily);
4744
+ font-weight: var(--text-body-base-regular-fontWeight);
4745
+ font-size: var(--text-body-base-regular-fontSize);
4746
+ line-height: var(--text-body-base-regular-lineHeight);
4747
+ overflow: hidden;
4748
+ text-overflow: ellipsis;
4749
+ white-space: nowrap;
4750
+ }
4751
+
4752
+ /* ─── Value ───────────────────────────────────────────── */
4753
+
4754
+ .muka-spec-row__value {
4755
+ flex: 1 1 0;
4756
+ min-width: 0;
4757
+ margin: 0;
4758
+ display: flex;
4759
+ flex-direction: column;
4760
+ color: var(--color-text-default-default);
4761
+ }
4762
+
4763
+ .muka-spec-row__value-text {
4764
+ font-family: var(--text-body-base-regular-fontFamily);
4765
+ font-weight: var(--text-body-base-regular-fontWeight);
4766
+ font-size: var(--text-body-base-regular-fontSize);
4767
+ line-height: var(--text-body-base-regular-lineHeight);
4768
+ }
4769
+
4770
+ .muka-spec-row__hint {
4771
+ color: var(--color-text-subtle-default);
4772
+ font-family: var(--text-body-sm-regular-fontFamily);
4773
+ font-weight: var(--text-body-sm-regular-fontWeight);
4774
+ font-size: var(--text-body-sm-regular-fontSize);
4775
+ line-height: var(--text-body-sm-regular-lineHeight);
4776
+ }
4777
+
4778
+ /* ─── Label width (horizontal stacking) ───────────────── */
4779
+
4780
+ .muka-spec-list--label-small .muka-spec-row__label {
4781
+ width: 80px;
4782
+ }
4783
+
4784
+ .muka-spec-list--label-medium .muka-spec-row__label {
4785
+ width: 120px;
4786
+ }
4787
+
4788
+ .muka-spec-list--label-large .muka-spec-row__label {
4789
+ width: 160px;
4790
+ }
4791
+
4792
+ /* ─── Vertical stacking ───────────────────────────────── */
4793
+
4794
+ .muka-spec-list--vertical .muka-spec-row {
4795
+ flex-direction: column;
4796
+ gap: var(--spacing-1);
4797
+ }
4798
+
4799
+ .muka-spec-list--vertical .muka-spec-row__label {
4800
+ width: 100%;
4801
+ white-space: normal;
4802
+ }
4803
+
4804
+
4721
4805
  /* SmsOtpField */
4722
4806
  /* SmsOtpField Component Styles - Using Muka Design Tokens */
4723
4807
 
@@ -4910,91 +4994,6 @@ body {
4910
4994
  }
4911
4995
 
4912
4996
 
4913
- /* SpecList */
4914
- /* SpecList Component Styles */
4915
-
4916
- .muka-spec-list {
4917
- margin: 0;
4918
- padding: 0;
4919
- }
4920
-
4921
- /* ─── Row ─────────────────────────────────────────────── */
4922
-
4923
- .muka-spec-row {
4924
- display: flex;
4925
- align-items: flex-start;
4926
- gap: var(--spacing-3);
4927
- padding-bottom: var(--spacing-3);
4928
- }
4929
-
4930
- /* ─── Label ───────────────────────────────────────────── */
4931
-
4932
- .muka-spec-row__label {
4933
- flex: 0 0 auto;
4934
- margin: 0;
4935
- color: var(--color-text-subtle-default);
4936
- font-family: var(--text-body-base-regular-fontFamily);
4937
- font-weight: var(--text-body-base-regular-fontWeight);
4938
- font-size: var(--text-body-base-regular-fontSize);
4939
- line-height: var(--text-body-base-regular-lineHeight);
4940
- overflow: hidden;
4941
- text-overflow: ellipsis;
4942
- white-space: nowrap;
4943
- }
4944
-
4945
- /* ─── Value ───────────────────────────────────────────── */
4946
-
4947
- .muka-spec-row__value {
4948
- flex: 1 1 0;
4949
- min-width: 0;
4950
- margin: 0;
4951
- display: flex;
4952
- flex-direction: column;
4953
- color: var(--color-text-default-default);
4954
- }
4955
-
4956
- .muka-spec-row__value-text {
4957
- font-family: var(--text-body-base-regular-fontFamily);
4958
- font-weight: var(--text-body-base-regular-fontWeight);
4959
- font-size: var(--text-body-base-regular-fontSize);
4960
- line-height: var(--text-body-base-regular-lineHeight);
4961
- }
4962
-
4963
- .muka-spec-row__hint {
4964
- color: var(--color-text-subtle-default);
4965
- font-family: var(--text-body-sm-regular-fontFamily);
4966
- font-weight: var(--text-body-sm-regular-fontWeight);
4967
- font-size: var(--text-body-sm-regular-fontSize);
4968
- line-height: var(--text-body-sm-regular-lineHeight);
4969
- }
4970
-
4971
- /* ─── Label width (horizontal stacking) ───────────────── */
4972
-
4973
- .muka-spec-list--label-small .muka-spec-row__label {
4974
- width: 80px;
4975
- }
4976
-
4977
- .muka-spec-list--label-medium .muka-spec-row__label {
4978
- width: 120px;
4979
- }
4980
-
4981
- .muka-spec-list--label-large .muka-spec-row__label {
4982
- width: 160px;
4983
- }
4984
-
4985
- /* ─── Vertical stacking ───────────────────────────────── */
4986
-
4987
- .muka-spec-list--vertical .muka-spec-row {
4988
- flex-direction: column;
4989
- gap: var(--spacing-1);
4990
- }
4991
-
4992
- .muka-spec-list--vertical .muka-spec-row__label {
4993
- width: 100%;
4994
- white-space: normal;
4995
- }
4996
-
4997
-
4998
4997
  /* Skeleton */
4999
4998
  /* Skeleton Component Styles */
5000
4999
 
@@ -5532,6 +5531,29 @@ body {
5532
5531
  }
5533
5532
 
5534
5533
 
5534
+ /* Section */
5535
+ /* Section Component - Layout tokens (section.padding) */
5536
+
5537
+ .muka-section {
5538
+ box-sizing: border-box;
5539
+ }
5540
+
5541
+ .muka-section--padding-compact {
5542
+ padding-block: var(--section-padding-vertical-compact);
5543
+ padding-inline: var(--section-padding-horizontal-compact);
5544
+ }
5545
+
5546
+ .muka-section--padding-default {
5547
+ padding-block: var(--section-padding-vertical-default);
5548
+ padding-inline: var(--section-padding-horizontal-default);
5549
+ }
5550
+
5551
+ .muka-section--padding-spacious {
5552
+ padding-block: var(--section-padding-vertical-spacious);
5553
+ padding-inline: var(--section-padding-horizontal-spacious);
5554
+ }
5555
+
5556
+
5535
5557
  /* SearchInput */
5536
5558
  /* SearchInput Component Styles */
5537
5559
 
@@ -5701,121 +5723,48 @@ body {
5701
5723
  }
5702
5724
 
5703
5725
 
5704
- /* Section */
5705
- /* Section Component - Layout tokens (section.padding) */
5706
-
5707
- .muka-section {
5708
- box-sizing: border-box;
5709
- }
5726
+ /* Scrollbar */
5727
+ /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5710
5728
 
5711
- .muka-section--padding-compact {
5712
- padding-block: var(--section-padding-vertical-compact);
5713
- padding-inline: var(--section-padding-horizontal-compact);
5729
+ .muka-scrollbar {
5730
+ display: flex;
5731
+ flex-shrink: 0;
5732
+ border-left: var(--border-width-regular) solid var(--color-border-default);
5733
+ background-color: var(--color-surface-level3);
5734
+ user-select: none;
5714
5735
  }
5715
5736
 
5716
- .muka-section--padding-default {
5717
- padding-block: var(--section-padding-vertical-default);
5718
- padding-inline: var(--section-padding-horizontal-default);
5737
+ .muka-scrollbar--vertical {
5738
+ flex-direction: column;
5739
+ width: var(--size-2xl, 32px);
5740
+ align-self: stretch;
5719
5741
  }
5720
5742
 
5721
- .muka-section--padding-spacious {
5722
- padding-block: var(--section-padding-vertical-spacious);
5723
- padding-inline: var(--section-padding-horizontal-spacious);
5743
+ .muka-scrollbar--horizontal {
5744
+ flex-direction: row;
5745
+ height: var(--size-2xl, 32px);
5746
+ width: 100%;
5747
+ border-left: none;
5748
+ border-top: var(--border-width-regular) solid var(--color-border-default);
5724
5749
  }
5725
5750
 
5726
-
5727
- /* RecordingBar */
5728
- /* RecordingBar Component Styles */
5729
-
5730
- .muka-recording-bar {
5751
+ .muka-scrollbar__button {
5731
5752
  display: flex;
5732
5753
  align-items: center;
5733
- gap: var(--spacing-3);
5754
+ justify-content: center;
5755
+ flex-shrink: 0;
5734
5756
  width: 100%;
5735
- min-width: 0;
5757
+ height: var(--size-2xl, 32px);
5758
+ padding: 0;
5759
+ border: none;
5760
+ background-color: var(--button-color-tertiary-background-default, var(--color-surface-level3));
5761
+ color: var(--color-text-default-default);
5762
+ cursor: pointer;
5736
5763
  }
5737
5764
 
5738
- .muka-recording-bar__dot {
5739
- flex: 0 0 auto;
5740
- width: 0.625rem;
5741
- height: 0.625rem;
5742
- border-radius: var(--radius-full, 9999px);
5743
- background: var(--alert-color-error-accent, var(--color-text-default-default));
5744
- animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5745
- }
5746
-
5747
- .muka-recording-bar__time {
5748
- flex: 0 0 auto;
5749
- font-size: var(--text-label-sm-fontSize, 0.75rem);
5750
- line-height: var(--text-label-sm-lineHeight, 1);
5751
- font-variant-numeric: tabular-nums;
5752
- color: var(--color-text-default-default);
5753
- }
5754
-
5755
- .muka-recording-bar__wave {
5756
- flex: 1 1 auto;
5757
- min-width: 0;
5758
- }
5759
-
5760
- @keyframes muka-recording-bar-pulse {
5761
- 0%,
5762
- 100% {
5763
- opacity: 1;
5764
- }
5765
- 50% {
5766
- opacity: 0.3;
5767
- }
5768
- }
5769
-
5770
- @media (prefers-reduced-motion: reduce) {
5771
- .muka-recording-bar__dot {
5772
- animation: none;
5773
- }
5774
- }
5775
-
5776
-
5777
- /* Scrollbar */
5778
- /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5779
-
5780
- .muka-scrollbar {
5781
- display: flex;
5782
- flex-shrink: 0;
5783
- border-left: var(--border-width-regular) solid var(--color-border-default);
5784
- background-color: var(--color-surface-level3);
5785
- user-select: none;
5786
- }
5787
-
5788
- .muka-scrollbar--vertical {
5789
- flex-direction: column;
5790
- width: var(--size-2xl, 32px);
5791
- align-self: stretch;
5792
- }
5793
-
5794
- .muka-scrollbar--horizontal {
5795
- flex-direction: row;
5796
- height: var(--size-2xl, 32px);
5797
- width: 100%;
5798
- border-left: none;
5799
- border-top: var(--border-width-regular) solid var(--color-border-default);
5800
- }
5801
-
5802
- .muka-scrollbar__button {
5803
- display: flex;
5804
- align-items: center;
5805
- justify-content: center;
5806
- flex-shrink: 0;
5807
- width: 100%;
5808
- height: var(--size-2xl, 32px);
5809
- padding: 0;
5810
- border: none;
5811
- background-color: var(--button-color-tertiary-background-default, var(--color-surface-level3));
5812
- color: var(--color-text-default-default);
5813
- cursor: pointer;
5814
- }
5815
-
5816
- .muka-scrollbar--horizontal .muka-scrollbar__button {
5817
- width: var(--size-2xl, 32px);
5818
- height: 100%;
5765
+ .muka-scrollbar--horizontal .muka-scrollbar__button {
5766
+ width: var(--size-2xl, 32px);
5767
+ height: 100%;
5819
5768
  }
5820
5769
 
5821
5770
  .muka-scrollbar__button:hover {
@@ -5901,6 +5850,56 @@ body {
5901
5850
  }
5902
5851
 
5903
5852
 
5853
+ /* RecordingBar */
5854
+ /* RecordingBar Component Styles */
5855
+
5856
+ .muka-recording-bar {
5857
+ display: flex;
5858
+ align-items: center;
5859
+ gap: var(--spacing-3);
5860
+ width: 100%;
5861
+ min-width: 0;
5862
+ }
5863
+
5864
+ .muka-recording-bar__dot {
5865
+ flex: 0 0 auto;
5866
+ width: 0.625rem;
5867
+ height: 0.625rem;
5868
+ border-radius: var(--radius-full, 9999px);
5869
+ background: var(--alert-color-error-accent, var(--color-text-default-default));
5870
+ animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5871
+ }
5872
+
5873
+ .muka-recording-bar__time {
5874
+ flex: 0 0 auto;
5875
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
5876
+ line-height: var(--text-label-sm-lineHeight, 1);
5877
+ font-variant-numeric: tabular-nums;
5878
+ color: var(--color-text-default-default);
5879
+ }
5880
+
5881
+ .muka-recording-bar__wave {
5882
+ flex: 1 1 auto;
5883
+ min-width: 0;
5884
+ }
5885
+
5886
+ @keyframes muka-recording-bar-pulse {
5887
+ 0%,
5888
+ 100% {
5889
+ opacity: 1;
5890
+ }
5891
+ 50% {
5892
+ opacity: 0.3;
5893
+ }
5894
+ }
5895
+
5896
+ @media (prefers-reduced-motion: reduce) {
5897
+ .muka-recording-bar__dot {
5898
+ animation: none;
5899
+ }
5900
+ }
5901
+
5902
+
5904
5903
  /* RangeSlider */
5905
5904
  /* RangeSlider Component Styles - Using Muka Design Tokens */
5906
5905
 
@@ -6260,53 +6259,6 @@ body {
6260
6259
  }
6261
6260
 
6262
6261
 
6263
- /* PullToRefresh */
6264
- /* PullToRefresh Component Styles */
6265
-
6266
- .muka-pull-to-refresh {
6267
- position: relative;
6268
- display: flex;
6269
- flex-direction: column;
6270
- width: 100%;
6271
- height: 100%;
6272
- overflow: hidden;
6273
- }
6274
-
6275
- .muka-pull-to-refresh__indicator {
6276
- position: absolute;
6277
- top: 0;
6278
- left: 0;
6279
- right: 0;
6280
- display: flex;
6281
- align-items: flex-end;
6282
- justify-content: center;
6283
- padding-bottom: var(--spacing-2);
6284
- color: var(--color-text-subtle-default);
6285
- overflow: hidden;
6286
- pointer-events: none;
6287
- z-index: 1;
6288
- }
6289
-
6290
- .muka-pull-to-refresh__chevron {
6291
- display: inline-flex;
6292
- align-items: center;
6293
- justify-content: center;
6294
- transition: transform 0.16s ease;
6295
- }
6296
-
6297
- .muka-pull-to-refresh__scroller {
6298
- flex: 1 1 auto;
6299
- min-height: 0;
6300
- width: 100%;
6301
- overflow-x: clip;
6302
- overflow-y: auto;
6303
- -webkit-overflow-scrolling: touch;
6304
- overscroll-behavior-y: contain;
6305
- touch-action: pan-y;
6306
- will-change: transform;
6307
- }
6308
-
6309
-
6310
6262
  /* Radio */
6311
6263
  /* Radio Component Styles - Using Muka Design Tokens */
6312
6264
 
@@ -6451,268 +6403,71 @@ body {
6451
6403
  }
6452
6404
 
6453
6405
 
6454
- /* ProgressAccordeon */
6455
- /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6406
+ /* PullToRefresh */
6407
+ /* PullToRefresh Component Styles */
6456
6408
 
6457
- /* ─── Root ──────────────────────────────────────────────── */
6458
- .muka-progress-accordeon {
6459
- container-type: inline-size;
6409
+ .muka-pull-to-refresh {
6410
+ position: relative;
6460
6411
  display: flex;
6461
6412
  flex-direction: column;
6462
- align-items: stretch;
6463
6413
  width: 100%;
6464
- /* Top padding provides the vertical rhythm between stacked steps */
6465
- padding-top: var(--spacing-8);
6414
+ height: 100%;
6415
+ overflow: hidden;
6466
6416
  }
6467
6417
 
6468
- /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6469
- .muka-progress-accordeon--current,
6470
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
6471
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
6472
- gap: var(--spacing-6);
6418
+ .muka-pull-to-refresh__indicator {
6419
+ position: absolute;
6420
+ top: 0;
6421
+ left: 0;
6422
+ right: 0;
6423
+ display: flex;
6424
+ align-items: flex-end;
6425
+ justify-content: center;
6426
+ padding-bottom: var(--spacing-2);
6427
+ color: var(--color-text-subtle-default);
6428
+ overflow: hidden;
6429
+ pointer-events: none;
6430
+ z-index: 1;
6473
6431
  }
6474
6432
 
6475
- .muka-progress-accordeon--upcoming,
6476
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
6477
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
6478
- gap: var(--spacing-8);
6433
+ .muka-pull-to-refresh__chevron {
6434
+ display: inline-flex;
6435
+ align-items: center;
6436
+ justify-content: center;
6437
+ transition: transform 0.16s ease;
6479
6438
  }
6480
6439
 
6481
- /* Collapsible steps group header + slot. The header↔content gap lives inside the
6482
- collapsing slot (as padding-top) so it collapses with the content, so the
6483
- body gap itself is 0. */
6484
- .muka-progress-accordeon__body {
6485
- display: flex;
6486
- flex-direction: column;
6487
- gap: 0;
6440
+ .muka-pull-to-refresh__scroller {
6441
+ flex: 1 1 auto;
6442
+ min-height: 0;
6488
6443
  width: 100%;
6444
+ overflow-x: clip;
6445
+ overflow-y: auto;
6446
+ -webkit-overflow-scrolling: touch;
6447
+ overscroll-behavior-y: contain;
6448
+ touch-action: pan-y;
6449
+ will-change: transform;
6489
6450
  }
6490
6451
 
6491
- /* ─── Header ─────────────────────────────────────────────── */
6492
- .muka-progress-accordeon__header {
6493
- display: flex;
6494
- flex-direction: column;
6495
- gap: var(--spacing-3);
6452
+
6453
+ /* ProgressTracker */
6454
+ /* ProgressTracker Component Styles — Using Muka Design Tokens */
6455
+
6456
+ /* ─── Root ──────────────────────────────────────────────── */
6457
+ .muka-progress-tracker {
6496
6458
  width: 100%;
6497
6459
  }
6498
6460
 
6499
- .muka-progress-accordeon__header-row {
6500
- display: flex;
6501
- align-items: flex-start;
6502
- gap: var(--spacing-3);
6503
- width: 100%;
6504
- min-height: 40px;
6461
+ .muka-progress-tracker--horizontal {
6462
+ padding-bottom: var(--spacing-7);
6505
6463
  }
6506
6464
 
6507
- .muka-progress-accordeon__heading-group {
6508
- display: flex;
6509
- flex: 1 0 0;
6510
- min-width: 0;
6511
- align-items: flex-start;
6512
- gap: var(--spacing-4);
6513
- }
6514
-
6515
- /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
6516
- so a single line centres against the indicator + controls row. */
6517
- .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
6518
- .muka-progress-accordeon__heading-group {
6519
- padding-top: var(--spacing-1);
6520
- }
6521
-
6522
- .muka-progress-accordeon__controls {
6523
- display: flex;
6524
- flex-shrink: 0;
6525
- align-items: center;
6526
- gap: var(--spacing-3);
6527
- }
6528
-
6529
- /* ─── Step indicator (circle) ───────────────────────────── */
6530
- .muka-progress-accordeon__indicator {
6531
- width: 32px;
6532
- height: 32px;
6533
- flex-shrink: 0;
6534
- border-radius: var(--border-radius-full);
6535
- display: flex;
6536
- align-items: center;
6537
- justify-content: center;
6538
- }
6539
-
6540
- /* Past: dark accent-contrast circle with inverse checkmark */
6541
- .muka-progress-accordeon__indicator--past {
6542
- background-color: var(--alias-color-accent-contrast);
6543
- color: var(--color-text-default-inverse);
6544
- }
6545
-
6546
- /* Current: accent circle with inverse bold number */
6547
- .muka-progress-accordeon__indicator--current {
6548
- background-color: var(--alias-color-accent-default);
6549
- color: var(--color-text-default-inverse);
6550
- }
6551
-
6552
- /* Upcoming: sunken/muted circle with default-color number */
6553
- .muka-progress-accordeon__indicator--upcoming {
6554
- background-color: var(--color-surface-sunken);
6555
- color: var(--color-text-default-default);
6556
- }
6557
-
6558
- .muka-progress-accordeon__check-icon {
6559
- width: 20px;
6560
- height: 20px;
6561
- color: var(--color-text-default-inverse);
6562
- }
6563
-
6564
- .muka-progress-accordeon__number {
6565
- font-family: var(--text-label-md-bold-fontFamily);
6566
- font-weight: var(--text-label-md-bold-fontWeight);
6567
- font-size: var(--text-label-md-bold-fontSize);
6568
- line-height: var(--text-label-md-bold-lineHeight);
6569
- text-align: center;
6570
- user-select: none;
6571
- }
6572
-
6573
- /* Upcoming number is semibold (not bold) per Figma */
6574
- .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
6575
- font-family: var(--text-label-md-semibold-fontFamily);
6576
- font-weight: var(--text-label-md-semibold-fontWeight);
6577
- }
6578
-
6579
- /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
6580
- .muka-progress-accordeon__heading {
6581
- flex: 1 0 0;
6582
- min-width: 0;
6583
- margin: 0;
6584
- font-family: var(--text-heading-md-fontFamily);
6585
- font-weight: var(--text-heading-md-fontWeight);
6586
- font-size: var(--text-heading-md-fontSize);
6587
- line-height: var(--text-heading-md-lineHeight);
6588
- letter-spacing: var(--text-heading-md-letterSpacing);
6589
- color: var(--color-text-default-default);
6590
- }
6591
-
6592
- /* ─── Description ────────────────────────────────────────── */
6593
- /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
6594
- .muka-progress-accordeon__description {
6595
- width: 100%;
6596
- padding-left: 48px;
6597
- font-family: var(--text-body-base-regular-fontFamily);
6598
- font-weight: var(--text-body-base-regular-fontWeight);
6599
- font-size: var(--text-body-base-regular-fontSize);
6600
- line-height: var(--text-body-base-regular-lineHeight);
6601
- color: var(--color-text-default-default);
6602
- }
6603
-
6604
- /* ─── Edit button ────────────────────────────────────────── */
6605
- .muka-progress-accordeon__edit {
6606
- flex-shrink: 0;
6607
- }
6608
-
6609
- /* Wide container shows the labelled button; the icon-only one is hidden */
6610
- .muka-progress-accordeon__edit--narrow {
6611
- display: none;
6612
- }
6613
-
6614
- /* ─── Content slot ───────────────────────────────────────── */
6615
- .muka-progress-accordeon__slot {
6616
- display: flex;
6617
- flex-direction: column;
6618
- align-items: stretch;
6619
- width: 100%;
6620
- }
6621
-
6622
- /* ─── Collapse/expand animation (past & upcoming steps) ──────
6623
- The grid-template-rows 1fr → 0fr technique animates the content to/from its
6624
- intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
6625
- --motion-duration-view resolves to 0ms, so the toggle stays instant. */
6626
- .muka-progress-accordeon__slot-wrapper {
6627
- display: grid;
6628
- grid-template-rows: 1fr;
6629
- transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
6630
- }
6631
-
6632
- .muka-progress-accordeon__slot-wrapper--collapsed {
6633
- grid-template-rows: 0fr;
6634
- }
6635
-
6636
- /* The direct grid child clips and must have NO padding/border of its own —
6637
- min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
6638
- 0 height (padding on the item would leave a residual gap when collapsed). */
6639
- .muka-progress-accordeon__slot-clip {
6640
- overflow: hidden;
6641
- min-height: 0;
6642
- }
6643
-
6644
- /* The header↔content spacing lives on the inner slot (inside the clip region)
6645
- so it collapses together with the content. */
6646
- .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
6647
- padding-top: var(--spacing-4);
6648
- }
6649
-
6650
- /* ─── Action buttons (current state) ─────────────────────── */
6651
- .muka-progress-accordeon__actions {
6652
- display: flex;
6653
- justify-content: flex-end;
6654
- gap: var(--spacing-4);
6655
- width: 100%;
6656
- }
6657
-
6658
- .muka-progress-accordeon__action {
6659
- min-width: 160px;
6660
- }
6661
-
6662
- /* ─── Divider ────────────────────────────────────────────── */
6663
- .muka-progress-accordeon__divider {
6664
- width: 100%;
6665
- }
6666
-
6667
- /* ─── Responsive (narrow container) ──────────────────────── */
6668
- @container (max-width: 480px) {
6669
- /* Heading steps down to heading/sm. The 24px line-height is shorter than the
6670
- 32px step indicator, so nudge the text down to keep a single line centred. */
6671
- .muka-progress-accordeon__heading {
6672
- font-size: var(--text-heading-sm-fontSize);
6673
- line-height: var(--text-heading-sm-lineHeight);
6674
- padding-top: var(--spacing-1);
6675
- }
6676
-
6677
- /* Edit button swaps to the icon-only variant */
6678
- .muka-progress-accordeon__edit--wide {
6679
- display: none;
6680
- }
6681
-
6682
- .muka-progress-accordeon__edit--narrow {
6683
- display: inline-flex;
6684
- }
6685
-
6686
- /* Action buttons stretch to fill the row */
6687
- .muka-progress-accordeon__actions {
6688
- justify-content: stretch;
6689
- }
6690
-
6691
- .muka-progress-accordeon__action {
6692
- flex: 1 0 0;
6693
- min-width: 0;
6694
- }
6695
- }
6696
-
6697
-
6698
- /* ProgressTracker */
6699
- /* ProgressTracker Component Styles — Using Muka Design Tokens */
6700
-
6701
- /* ─── Root ──────────────────────────────────────────────── */
6702
- .muka-progress-tracker {
6703
- width: 100%;
6704
- }
6705
-
6706
- .muka-progress-tracker--horizontal {
6707
- padding-bottom: var(--spacing-7);
6708
- }
6709
-
6710
- /* ─── Track (layered container) ─────────────────────────── */
6711
- .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6712
- position: relative;
6713
- /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6714
- padding-top: 14px;
6715
- padding-bottom: 14px;
6465
+ /* ─── Track (layered container) ─────────────────────────── */
6466
+ .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6467
+ position: relative;
6468
+ /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6469
+ padding-top: 14px;
6470
+ padding-bottom: 14px;
6716
6471
  }
6717
6472
 
6718
6473
  /* ─── Steps layer (on top) — horizontal ─────────────────── */
@@ -7112,74 +6867,247 @@ body {
7112
6867
  }
7113
6868
 
7114
6869
 
7115
- /* ProfileBadge */
7116
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
6870
+ /* ProgressAccordeon */
6871
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
7117
6872
 
7118
- .muka-profile-badge {
7119
- display: inline-flex;
7120
- align-items: center;
7121
- font-family: var(--text-body-base-regular-fontFamily);
6873
+ /* ─── Root ──────────────────────────────────────────────── */
6874
+ .muka-progress-accordeon {
6875
+ container-type: inline-size;
6876
+ display: flex;
6877
+ flex-direction: column;
6878
+ align-items: stretch;
6879
+ width: 100%;
6880
+ /* Top padding provides the vertical rhythm between stacked steps */
6881
+ padding-top: var(--spacing-8);
7122
6882
  }
7123
6883
 
7124
- /* Size variants */
7125
- .muka-profile-badge--lg {
7126
- gap: var(--spacing-4); /* 16px */
6884
+ /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6885
+ .muka-progress-accordeon--current,
6886
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
6887
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
6888
+ gap: var(--spacing-6);
7127
6889
  }
7128
6890
 
7129
- .muka-profile-badge--md {
7130
- gap: var(--spacing-3); /* 12px */
6891
+ .muka-progress-accordeon--upcoming,
6892
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
6893
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
6894
+ gap: var(--spacing-8);
7131
6895
  }
7132
6896
 
7133
- .muka-profile-badge__avatar {
7134
- flex-shrink: 0;
6897
+ /* Collapsible steps group header + slot. The header↔content gap lives inside the
6898
+ collapsing slot (as padding-top) so it collapses with the content, so the
6899
+ body gap itself is 0. */
6900
+ .muka-progress-accordeon__body {
6901
+ display: flex;
6902
+ flex-direction: column;
6903
+ gap: 0;
6904
+ width: 100%;
7135
6905
  }
7136
6906
 
7137
- /* Text stack */
7138
- .muka-profile-badge__text {
6907
+ /* ─── Header ─────────────────────────────────────────────── */
6908
+ .muka-progress-accordeon__header {
7139
6909
  display: flex;
7140
6910
  flex-direction: column;
7141
- align-items: flex-start;
7142
- min-width: 0;
6911
+ gap: var(--spacing-3);
6912
+ width: 100%;
7143
6913
  }
7144
6914
 
7145
- .muka-profile-badge__name {
7146
- font-family: var(--text-body-base-regular-fontFamily);
7147
- font-size: var(--text-body-base-regular-fontSize);
7148
- font-weight: var(--text-body-base-regular-fontWeight);
7149
- line-height: var(--text-body-base-regular-lineHeight);
6915
+ .muka-progress-accordeon__header-row {
6916
+ display: flex;
6917
+ align-items: flex-start;
6918
+ gap: var(--spacing-3);
6919
+ width: 100%;
6920
+ min-height: 40px;
6921
+ }
6922
+
6923
+ .muka-progress-accordeon__heading-group {
6924
+ display: flex;
6925
+ flex: 1 0 0;
6926
+ min-width: 0;
6927
+ align-items: flex-start;
6928
+ gap: var(--spacing-4);
6929
+ }
6930
+
6931
+ /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
6932
+ so a single line centres against the indicator + controls row. */
6933
+ .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
6934
+ .muka-progress-accordeon__heading-group {
6935
+ padding-top: var(--spacing-1);
6936
+ }
6937
+
6938
+ .muka-progress-accordeon__controls {
6939
+ display: flex;
6940
+ flex-shrink: 0;
6941
+ align-items: center;
6942
+ gap: var(--spacing-3);
6943
+ }
6944
+
6945
+ /* ─── Step indicator (circle) ───────────────────────────── */
6946
+ .muka-progress-accordeon__indicator {
6947
+ width: 32px;
6948
+ height: 32px;
6949
+ flex-shrink: 0;
6950
+ border-radius: var(--border-radius-full);
6951
+ display: flex;
6952
+ align-items: center;
6953
+ justify-content: center;
6954
+ }
6955
+
6956
+ /* Past: dark accent-contrast circle with inverse checkmark */
6957
+ .muka-progress-accordeon__indicator--past {
6958
+ background-color: var(--alias-color-accent-contrast);
6959
+ color: var(--color-text-default-inverse);
6960
+ }
6961
+
6962
+ /* Current: accent circle with inverse bold number */
6963
+ .muka-progress-accordeon__indicator--current {
6964
+ background-color: var(--alias-color-accent-default);
6965
+ color: var(--color-text-default-inverse);
6966
+ }
6967
+
6968
+ /* Upcoming: sunken/muted circle with default-color number */
6969
+ .muka-progress-accordeon__indicator--upcoming {
6970
+ background-color: var(--color-surface-sunken);
7150
6971
  color: var(--color-text-default-default);
7151
6972
  }
7152
6973
 
7153
- .muka-profile-badge__email {
7154
- font-family: var(--text-body-xs-regular-fontFamily);
7155
- font-size: var(--text-body-xs-regular-fontSize);
7156
- font-weight: var(--text-body-xs-regular-fontWeight);
7157
- line-height: var(--text-body-xs-regular-lineHeight);
7158
- color: var(--color-text-subtle-default);
6974
+ .muka-progress-accordeon__check-icon {
6975
+ width: 20px;
6976
+ height: 20px;
6977
+ color: var(--color-text-default-inverse);
7159
6978
  }
7160
6979
 
7161
- /* Clickable state */
7162
- .muka-profile-badge--clickable {
7163
- cursor: pointer;
7164
- border: none;
7165
- background: none;
7166
- padding: 0;
7167
- text-align: left;
7168
- border-radius: var(--radius-md);
7169
- transition: opacity 0.2s ease;
6980
+ .muka-progress-accordeon__number {
6981
+ font-family: var(--text-label-md-bold-fontFamily);
6982
+ font-weight: var(--text-label-md-bold-fontWeight);
6983
+ font-size: var(--text-label-md-bold-fontSize);
6984
+ line-height: var(--text-label-md-bold-lineHeight);
6985
+ text-align: center;
6986
+ user-select: none;
7170
6987
  }
7171
6988
 
7172
- .muka-profile-badge--clickable:hover {
7173
- opacity: 0.9;
6989
+ /* Upcoming number is semibold (not bold) per Figma */
6990
+ .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
6991
+ font-family: var(--text-label-md-semibold-fontFamily);
6992
+ font-weight: var(--text-label-md-semibold-fontWeight);
7174
6993
  }
7175
6994
 
7176
- .muka-profile-badge--clickable:active {
7177
- opacity: 0.8;
6995
+ /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
6996
+ .muka-progress-accordeon__heading {
6997
+ flex: 1 0 0;
6998
+ min-width: 0;
6999
+ margin: 0;
7000
+ font-family: var(--text-heading-md-fontFamily);
7001
+ font-weight: var(--text-heading-md-fontWeight);
7002
+ font-size: var(--text-heading-md-fontSize);
7003
+ line-height: var(--text-heading-md-lineHeight);
7004
+ letter-spacing: var(--text-heading-md-letterSpacing);
7005
+ color: var(--color-text-default-default);
7178
7006
  }
7179
7007
 
7180
- .muka-profile-badge--clickable:focus-visible {
7181
- outline: 2px solid var(--color-border-focus);
7182
- outline-offset: 2px;
7008
+ /* ─── Description ────────────────────────────────────────── */
7009
+ /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
7010
+ .muka-progress-accordeon__description {
7011
+ width: 100%;
7012
+ padding-left: 48px;
7013
+ font-family: var(--text-body-base-regular-fontFamily);
7014
+ font-weight: var(--text-body-base-regular-fontWeight);
7015
+ font-size: var(--text-body-base-regular-fontSize);
7016
+ line-height: var(--text-body-base-regular-lineHeight);
7017
+ color: var(--color-text-default-default);
7018
+ }
7019
+
7020
+ /* ─── Edit button ────────────────────────────────────────── */
7021
+ .muka-progress-accordeon__edit {
7022
+ flex-shrink: 0;
7023
+ }
7024
+
7025
+ /* Wide container shows the labelled button; the icon-only one is hidden */
7026
+ .muka-progress-accordeon__edit--narrow {
7027
+ display: none;
7028
+ }
7029
+
7030
+ /* ─── Content slot ───────────────────────────────────────── */
7031
+ .muka-progress-accordeon__slot {
7032
+ display: flex;
7033
+ flex-direction: column;
7034
+ align-items: stretch;
7035
+ width: 100%;
7036
+ }
7037
+
7038
+ /* ─── Collapse/expand animation (past & upcoming steps) ──────
7039
+ The grid-template-rows 1fr → 0fr technique animates the content to/from its
7040
+ intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7041
+ --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7042
+ .muka-progress-accordeon__slot-wrapper {
7043
+ display: grid;
7044
+ grid-template-rows: 1fr;
7045
+ transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7046
+ }
7047
+
7048
+ .muka-progress-accordeon__slot-wrapper--collapsed {
7049
+ grid-template-rows: 0fr;
7050
+ }
7051
+
7052
+ /* The direct grid child clips and must have NO padding/border of its own —
7053
+ min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7054
+ 0 height (padding on the item would leave a residual gap when collapsed). */
7055
+ .muka-progress-accordeon__slot-clip {
7056
+ overflow: hidden;
7057
+ min-height: 0;
7058
+ }
7059
+
7060
+ /* The header↔content spacing lives on the inner slot (inside the clip region)
7061
+ so it collapses together with the content. */
7062
+ .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7063
+ padding-top: var(--spacing-4);
7064
+ }
7065
+
7066
+ /* ─── Action buttons (current state) ─────────────────────── */
7067
+ .muka-progress-accordeon__actions {
7068
+ display: flex;
7069
+ justify-content: flex-end;
7070
+ gap: var(--spacing-4);
7071
+ width: 100%;
7072
+ }
7073
+
7074
+ .muka-progress-accordeon__action {
7075
+ min-width: 160px;
7076
+ }
7077
+
7078
+ /* ─── Divider ────────────────────────────────────────────── */
7079
+ .muka-progress-accordeon__divider {
7080
+ width: 100%;
7081
+ }
7082
+
7083
+ /* ─── Responsive (narrow container) ──────────────────────── */
7084
+ @container (max-width: 480px) {
7085
+ /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7086
+ 32px step indicator, so nudge the text down to keep a single line centred. */
7087
+ .muka-progress-accordeon__heading {
7088
+ font-size: var(--text-heading-sm-fontSize);
7089
+ line-height: var(--text-heading-sm-lineHeight);
7090
+ padding-top: var(--spacing-1);
7091
+ }
7092
+
7093
+ /* Edit button swaps to the icon-only variant */
7094
+ .muka-progress-accordeon__edit--wide {
7095
+ display: none;
7096
+ }
7097
+
7098
+ .muka-progress-accordeon__edit--narrow {
7099
+ display: inline-flex;
7100
+ }
7101
+
7102
+ /* Action buttons stretch to fill the row */
7103
+ .muka-progress-accordeon__actions {
7104
+ justify-content: stretch;
7105
+ }
7106
+
7107
+ .muka-progress-accordeon__action {
7108
+ flex: 1 0 0;
7109
+ min-width: 0;
7110
+ }
7183
7111
  }
7184
7112
 
7185
7113
 
@@ -7355,34 +7283,74 @@ body {
7355
7283
  }
7356
7284
 
7357
7285
 
7358
- /* Popover */
7359
- /* Popover Component Styles */
7286
+ /* ProfileBadge */
7287
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
7360
7288
 
7361
- .muka-popover__content {
7362
- background-color: var(--color-surface-level3);
7363
- border: var(--border-width-regular) solid var(--color-border-default);
7289
+ .muka-profile-badge {
7290
+ display: inline-flex;
7291
+ align-items: center;
7292
+ font-family: var(--text-body-base-regular-fontFamily);
7293
+ }
7294
+
7295
+ /* Size variants */
7296
+ .muka-profile-badge--lg {
7297
+ gap: var(--spacing-4); /* 16px */
7298
+ }
7299
+
7300
+ .muka-profile-badge--md {
7301
+ gap: var(--spacing-3); /* 12px */
7302
+ }
7303
+
7304
+ .muka-profile-badge__avatar {
7305
+ flex-shrink: 0;
7306
+ }
7307
+
7308
+ /* Text stack */
7309
+ .muka-profile-badge__text {
7310
+ display: flex;
7311
+ flex-direction: column;
7312
+ align-items: flex-start;
7313
+ min-width: 0;
7314
+ }
7315
+
7316
+ .muka-profile-badge__name {
7317
+ font-family: var(--text-body-base-regular-fontFamily);
7318
+ font-size: var(--text-body-base-regular-fontSize);
7319
+ font-weight: var(--text-body-base-regular-fontWeight);
7320
+ line-height: var(--text-body-base-regular-lineHeight);
7321
+ color: var(--color-text-default-default);
7322
+ }
7323
+
7324
+ .muka-profile-badge__email {
7325
+ font-family: var(--text-body-xs-regular-fontFamily);
7326
+ font-size: var(--text-body-xs-regular-fontSize);
7327
+ font-weight: var(--text-body-xs-regular-fontWeight);
7328
+ line-height: var(--text-body-xs-regular-lineHeight);
7329
+ color: var(--color-text-subtle-default);
7330
+ }
7331
+
7332
+ /* Clickable state */
7333
+ .muka-profile-badge--clickable {
7334
+ cursor: pointer;
7335
+ border: none;
7336
+ background: none;
7337
+ padding: 0;
7338
+ text-align: left;
7364
7339
  border-radius: var(--radius-md);
7365
- padding: var(--spacing-4);
7366
- box-shadow: var(--shadow-level3);
7367
- max-width: 20rem;
7368
- z-index: 50;
7369
- animation: muka-popover-fade-in 150ms ease;
7340
+ transition: opacity 0.2s ease;
7370
7341
  }
7371
7342
 
7372
- @keyframes muka-popover-fade-in {
7373
- from {
7374
- opacity: 0;
7375
- transform: scale(0.96);
7376
- }
7377
- to {
7378
- opacity: 1;
7379
- transform: scale(1);
7380
- }
7343
+ .muka-profile-badge--clickable:hover {
7344
+ opacity: 0.9;
7381
7345
  }
7382
7346
 
7383
- /* Arrow */
7384
- .muka-popover__arrow {
7385
- fill: var(--color-surface-level3);
7347
+ .muka-profile-badge--clickable:active {
7348
+ opacity: 0.8;
7349
+ }
7350
+
7351
+ .muka-profile-badge--clickable:focus-visible {
7352
+ outline: 2px solid var(--color-border-focus);
7353
+ outline-offset: 2px;
7386
7354
  }
7387
7355
 
7388
7356
 
@@ -7483,6 +7451,134 @@ body {
7483
7451
  }
7484
7452
 
7485
7453
 
7454
+ /* Popover */
7455
+ /* Popover Component Styles */
7456
+
7457
+ .muka-popover__content {
7458
+ background-color: var(--color-surface-level3);
7459
+ border: var(--border-width-regular) solid var(--color-border-default);
7460
+ border-radius: var(--radius-md);
7461
+ padding: var(--spacing-4);
7462
+ box-shadow: var(--shadow-level3);
7463
+ max-width: 20rem;
7464
+ z-index: 50;
7465
+ animation: muka-popover-fade-in 150ms ease;
7466
+ }
7467
+
7468
+ @keyframes muka-popover-fade-in {
7469
+ from {
7470
+ opacity: 0;
7471
+ transform: scale(0.96);
7472
+ }
7473
+ to {
7474
+ opacity: 1;
7475
+ transform: scale(1);
7476
+ }
7477
+ }
7478
+
7479
+ /* Arrow */
7480
+ .muka-popover__arrow {
7481
+ fill: var(--color-surface-level3);
7482
+ }
7483
+
7484
+
7485
+ /* PieChart */
7486
+ /* PieChart Component Styles - Using Muka Design Tokens */
7487
+
7488
+ .muka-piechart {
7489
+ display: inline-flex;
7490
+ align-items: center;
7491
+ gap: var(--spacing-4);
7492
+ }
7493
+
7494
+ /* Legend layout */
7495
+ .muka-piechart--legend-right {
7496
+ flex-direction: row;
7497
+ }
7498
+
7499
+ .muka-piechart--legend-bottom {
7500
+ flex-direction: column;
7501
+ }
7502
+
7503
+ /* ========================================
7504
+ CHART
7505
+ ======================================== */
7506
+
7507
+ .muka-piechart__chart {
7508
+ position: relative;
7509
+ flex-shrink: 0;
7510
+ }
7511
+
7512
+ .muka-piechart__chart--sm {
7513
+ width: var(--piechart-size-diameter-sm);
7514
+ height: var(--piechart-size-diameter-sm);
7515
+ }
7516
+
7517
+ .muka-piechart__chart--md {
7518
+ width: var(--piechart-size-diameter-md);
7519
+ height: var(--piechart-size-diameter-md);
7520
+ }
7521
+
7522
+ .muka-piechart__chart--lg {
7523
+ width: var(--piechart-size-diameter-lg);
7524
+ height: var(--piechart-size-diameter-lg);
7525
+ }
7526
+
7527
+ .muka-piechart__svg {
7528
+ display: block;
7529
+ width: 100%;
7530
+ height: 100%;
7531
+ /* Start slices at 12 o'clock instead of 3 o'clock */
7532
+ transform: rotate(-90deg);
7533
+ }
7534
+
7535
+ .muka-piechart__track {
7536
+ fill: none;
7537
+ stroke: var(--piechart-color-track);
7538
+ }
7539
+
7540
+ .muka-piechart__segment {
7541
+ fill: none;
7542
+ }
7543
+
7544
+ /* ========================================
7545
+ LEGEND
7546
+ ======================================== */
7547
+
7548
+ .muka-piechart__legend {
7549
+ list-style: none;
7550
+ margin: 0;
7551
+ padding: 0;
7552
+ display: flex;
7553
+ flex-direction: column;
7554
+ gap: var(--spacing-1);
7555
+ }
7556
+
7557
+ .muka-piechart__legend-item {
7558
+ display: flex;
7559
+ align-items: center;
7560
+ gap: var(--spacing-2);
7561
+ font-family: var(--text-body-sm-regular-fontFamily);
7562
+ font-weight: var(--text-body-sm-regular-fontWeight);
7563
+ font-size: var(--text-body-sm-regular-fontSize);
7564
+ line-height: var(--text-body-sm-regular-lineHeight);
7565
+ color: var(--color-text-default-default);
7566
+ }
7567
+
7568
+ .muka-piechart__swatch {
7569
+ flex-shrink: 0;
7570
+ width: var(--spacing-3);
7571
+ height: var(--spacing-3);
7572
+ border-radius: var(--border-radius-sm);
7573
+ }
7574
+
7575
+ .muka-piechart__legend-value {
7576
+ margin-left: auto;
7577
+ padding-left: var(--spacing-2);
7578
+ color: var(--color-text-subtle-default);
7579
+ }
7580
+
7581
+
7486
7582
  /* PhotoUploader */
7487
7583
  /* PhotoUploader Component Styles - Using Muka Design Tokens */
7488
7584
 
@@ -7603,108 +7699,11 @@ body {
7603
7699
  border-radius: var(--border-radius-lg);
7604
7700
  }
7605
7701
 
7606
- /* ─── Reduced motion ──────────────────────────────────── */
7607
- @media (prefers-reduced-motion: reduce) {
7608
- .muka-photo-uploader__dropzone {
7609
- transition: none;
7610
- }
7611
- }
7612
-
7613
-
7614
- /* PieChart */
7615
- /* PieChart Component Styles - Using Muka Design Tokens */
7616
-
7617
- .muka-piechart {
7618
- display: inline-flex;
7619
- align-items: center;
7620
- gap: var(--spacing-4);
7621
- }
7622
-
7623
- /* Legend layout */
7624
- .muka-piechart--legend-right {
7625
- flex-direction: row;
7626
- }
7627
-
7628
- .muka-piechart--legend-bottom {
7629
- flex-direction: column;
7630
- }
7631
-
7632
- /* ========================================
7633
- CHART
7634
- ======================================== */
7635
-
7636
- .muka-piechart__chart {
7637
- position: relative;
7638
- flex-shrink: 0;
7639
- }
7640
-
7641
- .muka-piechart__chart--sm {
7642
- width: var(--piechart-size-diameter-sm);
7643
- height: var(--piechart-size-diameter-sm);
7644
- }
7645
-
7646
- .muka-piechart__chart--md {
7647
- width: var(--piechart-size-diameter-md);
7648
- height: var(--piechart-size-diameter-md);
7649
- }
7650
-
7651
- .muka-piechart__chart--lg {
7652
- width: var(--piechart-size-diameter-lg);
7653
- height: var(--piechart-size-diameter-lg);
7654
- }
7655
-
7656
- .muka-piechart__svg {
7657
- display: block;
7658
- width: 100%;
7659
- height: 100%;
7660
- /* Start slices at 12 o'clock instead of 3 o'clock */
7661
- transform: rotate(-90deg);
7662
- }
7663
-
7664
- .muka-piechart__track {
7665
- fill: none;
7666
- stroke: var(--piechart-color-track);
7667
- }
7668
-
7669
- .muka-piechart__segment {
7670
- fill: none;
7671
- }
7672
-
7673
- /* ========================================
7674
- LEGEND
7675
- ======================================== */
7676
-
7677
- .muka-piechart__legend {
7678
- list-style: none;
7679
- margin: 0;
7680
- padding: 0;
7681
- display: flex;
7682
- flex-direction: column;
7683
- gap: var(--spacing-1);
7684
- }
7685
-
7686
- .muka-piechart__legend-item {
7687
- display: flex;
7688
- align-items: center;
7689
- gap: var(--spacing-2);
7690
- font-family: var(--text-body-sm-regular-fontFamily);
7691
- font-weight: var(--text-body-sm-regular-fontWeight);
7692
- font-size: var(--text-body-sm-regular-fontSize);
7693
- line-height: var(--text-body-sm-regular-lineHeight);
7694
- color: var(--color-text-default-default);
7695
- }
7696
-
7697
- .muka-piechart__swatch {
7698
- flex-shrink: 0;
7699
- width: var(--spacing-3);
7700
- height: var(--spacing-3);
7701
- border-radius: var(--border-radius-sm);
7702
- }
7703
-
7704
- .muka-piechart__legend-value {
7705
- margin-left: auto;
7706
- padding-left: var(--spacing-2);
7707
- color: var(--color-text-subtle-default);
7702
+ /* ─── Reduced motion ──────────────────────────────────── */
7703
+ @media (prefers-reduced-motion: reduce) {
7704
+ .muka-photo-uploader__dropzone {
7705
+ transition: none;
7706
+ }
7708
7707
  }
7709
7708
 
7710
7709
 
@@ -10765,6 +10764,11 @@ li.muka-listitem {
10765
10764
  transition: background-color 0.15s ease;
10766
10765
  }
10767
10766
 
10767
+ /* Last body row: no bottom border (matches Table; avoids a double line at the table edge). */
10768
+ .muka-data-table__body .muka-data-table__row:last-child {
10769
+ border-bottom: none;
10770
+ }
10771
+
10768
10772
  .muka-data-table__row:not(.muka-data-table__row--empty):not(.muka-data-table__row--selected):hover {
10769
10773
  background-color: var(--datatable-row-hover-background);
10770
10774
  }
@@ -12166,6 +12170,128 @@ li.muka-listitem {
12166
12170
  }
12167
12171
 
12168
12172
 
12173
+ /* ChatPhotoGrid */
12174
+ /* ChatPhotoGrid Component Styles */
12175
+
12176
+ /*
12177
+ * The grid clips to its own radius and the tiles stay square, so only the four
12178
+ * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12179
+ */
12180
+ .muka-chat-photo-grid {
12181
+ display: grid;
12182
+ gap: var(--chatphotogrid-gap);
12183
+ width: 100%;
12184
+ min-width: 0;
12185
+ overflow: hidden;
12186
+ border-radius: var(--chatphotogrid-radius);
12187
+ }
12188
+
12189
+ /* ─── Tiles ────────────────────────────────────────────── */
12190
+
12191
+ .muka-chat-photo-grid__tile {
12192
+ position: relative;
12193
+ display: block;
12194
+ overflow: hidden;
12195
+ min-width: 0;
12196
+ padding: 0;
12197
+ margin: 0;
12198
+ border: none;
12199
+ background-color: var(--chatphotogrid-color-placeholder);
12200
+ aspect-ratio: 1 / 1;
12201
+ }
12202
+
12203
+ button.muka-chat-photo-grid__tile {
12204
+ cursor: pointer;
12205
+ appearance: none;
12206
+ }
12207
+
12208
+ button.muka-chat-photo-grid__tile:focus-visible {
12209
+ outline: var(--border-width-bold) solid var(--color-border-focus);
12210
+ /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12211
+ outline-offset: calc(-1 * var(--border-width-bold));
12212
+ }
12213
+
12214
+ .muka-chat-photo-grid__image {
12215
+ display: block;
12216
+ width: 100%;
12217
+ height: 100%;
12218
+ object-fit: cover;
12219
+ }
12220
+
12221
+ /* ─── Overflow tile ────────────────────────────────────── */
12222
+
12223
+ .muka-chat-photo-grid__overflow {
12224
+ position: absolute;
12225
+ inset: 0;
12226
+ display: flex;
12227
+ align-items: center;
12228
+ justify-content: center;
12229
+ background-color: var(--chatphotogrid-color-overflow-background);
12230
+ color: var(--chatphotogrid-color-overflow-foreground);
12231
+ font-family: var(--text-body-2xl-regular-fontFamily);
12232
+ font-weight: var(--text-body-2xl-regular-fontWeight);
12233
+ font-size: var(--text-body-2xl-regular-fontSize);
12234
+ line-height: var(--text-body-2xl-regular-lineHeight);
12235
+ }
12236
+
12237
+ /* ─── Layouts ──────────────────────────────────────────── */
12238
+
12239
+ .muka-chat-photo-grid--1 {
12240
+ grid-template-columns: 1fr;
12241
+ }
12242
+
12243
+ .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12244
+ aspect-ratio: 4 / 3;
12245
+ }
12246
+
12247
+ .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12248
+ aspect-ratio: 3 / 4;
12249
+ }
12250
+
12251
+ .muka-chat-photo-grid--2 {
12252
+ grid-template-columns: repeat(2, 1fr);
12253
+ }
12254
+
12255
+ .muka-chat-photo-grid--3 {
12256
+ grid-template-columns: repeat(3, 1fr);
12257
+ }
12258
+
12259
+ .muka-chat-photo-grid--4 {
12260
+ grid-template-columns: repeat(2, 1fr);
12261
+ }
12262
+
12263
+ /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12264
+ .muka-chat-photo-grid--5 {
12265
+ grid-template-columns: repeat(6, 1fr);
12266
+ }
12267
+
12268
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12269
+ grid-column: span 3;
12270
+ }
12271
+
12272
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12273
+ grid-column: span 2;
12274
+ }
12275
+
12276
+ .muka-chat-photo-grid--6,
12277
+ .muka-chat-photo-grid--overflow {
12278
+ grid-template-columns: repeat(3, 1fr);
12279
+ }
12280
+
12281
+ /* ─── Print ────────────────────────────────────────────── */
12282
+
12283
+ @media print {
12284
+ .muka-chat-photo-grid {
12285
+ break-inside: avoid;
12286
+ }
12287
+
12288
+ .muka-chat-photo-grid__image {
12289
+ print-color-adjust: exact;
12290
+ -webkit-print-color-adjust: exact;
12291
+ }
12292
+ }
12293
+
12294
+
12169
12295
  /* ChatMessageStack */
12170
12296
  /* ChatMessageStack Component Styles */
12171
12297
 
@@ -12329,12 +12455,10 @@ li.muka-listitem {
12329
12455
  */
12330
12456
  width: fit-content;
12331
12457
  /*
12332
- * Stops short of the far edge at every width: the fixed cap once the
12333
- * conversation column reaches its own cap, the ratio below that, where the
12334
- * column runs full-bleed. Without that gap a long `own` bubble spans the
12335
- * column and reads no differently from a `peer` one.
12458
+ * Ceiling from design (Figma 5355:44091). Below it, wrapping text fills the
12459
+ * row; above it the fixed cap leaves room for own/peer alignment.
12336
12460
  */
12337
- max-width: min(var(--chatbubble-max-width), var(--chatbubble-max-width-ratio));
12461
+ max-width: var(--chatbubble-max-width);
12338
12462
  position: relative;
12339
12463
  display: flex;
12340
12464
  flex-direction: column;
@@ -15036,125 +15160,3 @@ li.muka-listitem {
15036
15160
  border-bottom: none;
15037
15161
  }
15038
15162
 
15039
-
15040
- /* ChatPhotoGrid */
15041
- /* ChatPhotoGrid Component Styles */
15042
-
15043
- /*
15044
- * The grid clips to its own radius and the tiles stay square, so only the four
15045
- * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
15046
- */
15047
- .muka-chat-photo-grid {
15048
- display: grid;
15049
- gap: var(--chatphotogrid-gap);
15050
- width: 100%;
15051
- min-width: 0;
15052
- overflow: hidden;
15053
- border-radius: var(--chatphotogrid-radius);
15054
- }
15055
-
15056
- /* ─── Tiles ────────────────────────────────────────────── */
15057
-
15058
- .muka-chat-photo-grid__tile {
15059
- position: relative;
15060
- display: block;
15061
- overflow: hidden;
15062
- min-width: 0;
15063
- padding: 0;
15064
- margin: 0;
15065
- border: none;
15066
- background-color: var(--chatphotogrid-color-placeholder);
15067
- aspect-ratio: 1 / 1;
15068
- }
15069
-
15070
- button.muka-chat-photo-grid__tile {
15071
- cursor: pointer;
15072
- appearance: none;
15073
- }
15074
-
15075
- button.muka-chat-photo-grid__tile:focus-visible {
15076
- outline: var(--border-width-bold) solid var(--color-border-focus);
15077
- /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
15078
- outline-offset: calc(-1 * var(--border-width-bold));
15079
- }
15080
-
15081
- .muka-chat-photo-grid__image {
15082
- display: block;
15083
- width: 100%;
15084
- height: 100%;
15085
- object-fit: cover;
15086
- }
15087
-
15088
- /* ─── Overflow tile ────────────────────────────────────── */
15089
-
15090
- .muka-chat-photo-grid__overflow {
15091
- position: absolute;
15092
- inset: 0;
15093
- display: flex;
15094
- align-items: center;
15095
- justify-content: center;
15096
- background-color: var(--chatphotogrid-color-overflow-background);
15097
- color: var(--chatphotogrid-color-overflow-foreground);
15098
- font-family: var(--text-body-2xl-regular-fontFamily);
15099
- font-weight: var(--text-body-2xl-regular-fontWeight);
15100
- font-size: var(--text-body-2xl-regular-fontSize);
15101
- line-height: var(--text-body-2xl-regular-lineHeight);
15102
- }
15103
-
15104
- /* ─── Layouts ──────────────────────────────────────────── */
15105
-
15106
- .muka-chat-photo-grid--1 {
15107
- grid-template-columns: 1fr;
15108
- }
15109
-
15110
- .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
15111
- aspect-ratio: 4 / 3;
15112
- }
15113
-
15114
- .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
15115
- aspect-ratio: 3 / 4;
15116
- }
15117
-
15118
- .muka-chat-photo-grid--2 {
15119
- grid-template-columns: repeat(2, 1fr);
15120
- }
15121
-
15122
- .muka-chat-photo-grid--3 {
15123
- grid-template-columns: repeat(3, 1fr);
15124
- }
15125
-
15126
- .muka-chat-photo-grid--4 {
15127
- grid-template-columns: repeat(2, 1fr);
15128
- }
15129
-
15130
- /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
15131
- .muka-chat-photo-grid--5 {
15132
- grid-template-columns: repeat(6, 1fr);
15133
- }
15134
-
15135
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
15136
- grid-column: span 3;
15137
- }
15138
-
15139
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
15140
- grid-column: span 2;
15141
- }
15142
-
15143
- .muka-chat-photo-grid--6,
15144
- .muka-chat-photo-grid--overflow {
15145
- grid-template-columns: repeat(3, 1fr);
15146
- }
15147
-
15148
- /* ─── Print ────────────────────────────────────────────── */
15149
-
15150
- @media print {
15151
- .muka-chat-photo-grid {
15152
- break-inside: avoid;
15153
- }
15154
-
15155
- .muka-chat-photo-grid__image {
15156
- print-color-adjust: exact;
15157
- -webkit-print-color-adjust: exact;
15158
- }
15159
- }
15160
-