@revikornmann/muka-ui 0.20.0 → 0.21.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.
Files changed (35) hide show
  1. package/dist/cjs/components/DocumentViewer/DocumentToolbar.js +1 -1
  2. package/dist/cjs/components/DocumentViewer/DocumentToolbar.js.map +1 -1
  3. package/dist/cjs/components/Icon/Icon.js +17 -7
  4. package/dist/cjs/components/Icon/Icon.js.map +1 -1
  5. package/dist/cjs/components/Icon/iconRegistry.js +140 -116
  6. package/dist/cjs/components/Icon/iconRegistry.js.map +1 -1
  7. package/dist/cjs/components/Icon/index.js +4 -1
  8. package/dist/cjs/components/Icon/index.js.map +1 -1
  9. package/dist/cjs/components/index.js +5 -3
  10. package/dist/cjs/components/index.js.map +1 -1
  11. package/dist/esm/components/DocumentViewer/DocumentToolbar.js +1 -1
  12. package/dist/esm/components/DocumentViewer/DocumentToolbar.js.map +1 -1
  13. package/dist/esm/components/Icon/Icon.js +14 -7
  14. package/dist/esm/components/Icon/Icon.js.map +1 -1
  15. package/dist/esm/components/Icon/iconRegistry.js +138 -83
  16. package/dist/esm/components/Icon/iconRegistry.js.map +1 -1
  17. package/dist/esm/components/Icon/index.js +1 -1
  18. package/dist/esm/components/Icon/index.js.map +1 -1
  19. package/dist/esm/components/index.js +1 -1
  20. package/dist/esm/components/index.js.map +1 -1
  21. package/dist/styles/index.css +843 -843
  22. package/dist/styles/muka-dark.css +843 -843
  23. package/dist/styles/muka-light.css +843 -843
  24. package/dist/styles/wireframe-dark.css +843 -843
  25. package/dist/styles/wireframe-light.css +843 -843
  26. package/dist/types/components/Icon/Icon.d.ts +20 -7
  27. package/dist/types/components/Icon/Icon.d.ts.map +1 -1
  28. package/dist/types/components/Icon/iconRegistry.d.ts +109 -14
  29. package/dist/types/components/Icon/iconRegistry.d.ts.map +1 -1
  30. package/dist/types/components/Icon/index.d.ts +1 -1
  31. package/dist/types/components/Icon/index.d.ts.map +1 -1
  32. package/dist/types/components/index.d.ts +1 -1
  33. package/dist/types/components/index.d.ts.map +1 -1
  34. package/package.json +2 -1
  35. package/skills/figma-to-code/SKILL.md +17 -2
@@ -4718,91 +4718,6 @@ body {
4718
4718
  }
4719
4719
 
4720
4720
 
4721
- /* SpecList */
4722
- /* SpecList Component Styles */
4723
-
4724
- .muka-spec-list {
4725
- margin: 0;
4726
- padding: 0;
4727
- }
4728
-
4729
- /* ─── Row ─────────────────────────────────────────────── */
4730
-
4731
- .muka-spec-row {
4732
- display: flex;
4733
- align-items: flex-start;
4734
- gap: var(--spacing-3);
4735
- padding-bottom: var(--spacing-3);
4736
- }
4737
-
4738
- /* ─── Label ───────────────────────────────────────────── */
4739
-
4740
- .muka-spec-row__label {
4741
- flex: 0 0 auto;
4742
- margin: 0;
4743
- color: var(--color-text-subtle-default);
4744
- font-family: var(--text-body-base-regular-fontFamily);
4745
- font-weight: var(--text-body-base-regular-fontWeight);
4746
- font-size: var(--text-body-base-regular-fontSize);
4747
- line-height: var(--text-body-base-regular-lineHeight);
4748
- overflow: hidden;
4749
- text-overflow: ellipsis;
4750
- white-space: nowrap;
4751
- }
4752
-
4753
- /* ─── Value ───────────────────────────────────────────── */
4754
-
4755
- .muka-spec-row__value {
4756
- flex: 1 1 0;
4757
- min-width: 0;
4758
- margin: 0;
4759
- display: flex;
4760
- flex-direction: column;
4761
- color: var(--color-text-default-default);
4762
- }
4763
-
4764
- .muka-spec-row__value-text {
4765
- font-family: var(--text-body-base-regular-fontFamily);
4766
- font-weight: var(--text-body-base-regular-fontWeight);
4767
- font-size: var(--text-body-base-regular-fontSize);
4768
- line-height: var(--text-body-base-regular-lineHeight);
4769
- }
4770
-
4771
- .muka-spec-row__hint {
4772
- color: var(--color-text-subtle-default);
4773
- font-family: var(--text-body-sm-regular-fontFamily);
4774
- font-weight: var(--text-body-sm-regular-fontWeight);
4775
- font-size: var(--text-body-sm-regular-fontSize);
4776
- line-height: var(--text-body-sm-regular-lineHeight);
4777
- }
4778
-
4779
- /* ─── Label width (horizontal stacking) ───────────────── */
4780
-
4781
- .muka-spec-list--label-small .muka-spec-row__label {
4782
- width: 80px;
4783
- }
4784
-
4785
- .muka-spec-list--label-medium .muka-spec-row__label {
4786
- width: 120px;
4787
- }
4788
-
4789
- .muka-spec-list--label-large .muka-spec-row__label {
4790
- width: 160px;
4791
- }
4792
-
4793
- /* ─── Vertical stacking ───────────────────────────────── */
4794
-
4795
- .muka-spec-list--vertical .muka-spec-row {
4796
- flex-direction: column;
4797
- gap: var(--spacing-1);
4798
- }
4799
-
4800
- .muka-spec-list--vertical .muka-spec-row__label {
4801
- width: 100%;
4802
- white-space: normal;
4803
- }
4804
-
4805
-
4806
4721
  /* SmsOtpField */
4807
4722
  /* SmsOtpField Component Styles - Using Muka Design Tokens */
4808
4723
 
@@ -4995,6 +4910,91 @@ body {
4995
4910
  }
4996
4911
 
4997
4912
 
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
4998
  /* Skeleton */
4999
4999
  /* Skeleton Component Styles */
5000
5000
 
@@ -5532,29 +5532,6 @@ body {
5532
5532
  }
5533
5533
 
5534
5534
 
5535
- /* Section */
5536
- /* Section Component - Layout tokens (section.padding) */
5537
-
5538
- .muka-section {
5539
- box-sizing: border-box;
5540
- }
5541
-
5542
- .muka-section--padding-compact {
5543
- padding-block: var(--section-padding-vertical-compact);
5544
- padding-inline: var(--section-padding-horizontal-compact);
5545
- }
5546
-
5547
- .muka-section--padding-default {
5548
- padding-block: var(--section-padding-vertical-default);
5549
- padding-inline: var(--section-padding-horizontal-default);
5550
- }
5551
-
5552
- .muka-section--padding-spacious {
5553
- padding-block: var(--section-padding-vertical-spacious);
5554
- padding-inline: var(--section-padding-horizontal-spacious);
5555
- }
5556
-
5557
-
5558
5535
  /* SearchInput */
5559
5536
  /* SearchInput Component Styles */
5560
5537
 
@@ -5724,63 +5701,136 @@ body {
5724
5701
  }
5725
5702
 
5726
5703
 
5727
- /* Scrollbar */
5728
- /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5704
+ /* Section */
5705
+ /* Section Component - Layout tokens (section.padding) */
5729
5706
 
5730
- .muka-scrollbar {
5731
- display: flex;
5732
- flex-shrink: 0;
5733
- border-left: var(--border-width-regular) solid var(--color-border-default);
5734
- background-color: var(--color-surface-level3);
5735
- user-select: none;
5707
+ .muka-section {
5708
+ box-sizing: border-box;
5736
5709
  }
5737
5710
 
5738
- .muka-scrollbar--vertical {
5739
- flex-direction: column;
5740
- width: var(--size-2xl, 32px);
5741
- align-self: stretch;
5711
+ .muka-section--padding-compact {
5712
+ padding-block: var(--section-padding-vertical-compact);
5713
+ padding-inline: var(--section-padding-horizontal-compact);
5742
5714
  }
5743
5715
 
5744
- .muka-scrollbar--horizontal {
5745
- flex-direction: row;
5746
- height: var(--size-2xl, 32px);
5747
- width: 100%;
5748
- border-left: none;
5749
- border-top: var(--border-width-regular) solid var(--color-border-default);
5716
+ .muka-section--padding-default {
5717
+ padding-block: var(--section-padding-vertical-default);
5718
+ padding-inline: var(--section-padding-horizontal-default);
5750
5719
  }
5751
5720
 
5752
- .muka-scrollbar__button {
5753
- display: flex;
5754
- align-items: center;
5755
- justify-content: center;
5756
- flex-shrink: 0;
5757
- width: 100%;
5758
- height: var(--size-2xl, 32px);
5759
- padding: 0;
5760
- border: none;
5761
- background-color: var(--button-color-tertiary-background-default, var(--color-surface-level3));
5762
- color: var(--color-text-default-default);
5763
- cursor: pointer;
5721
+ .muka-section--padding-spacious {
5722
+ padding-block: var(--section-padding-vertical-spacious);
5723
+ padding-inline: var(--section-padding-horizontal-spacious);
5764
5724
  }
5765
5725
 
5766
- .muka-scrollbar--horizontal .muka-scrollbar__button {
5767
- width: var(--size-2xl, 32px);
5768
- height: 100%;
5769
- }
5770
5726
 
5771
- .muka-scrollbar__button:hover {
5772
- background-color: var(--color-surface-hover);
5773
- }
5727
+ /* RecordingBar */
5728
+ /* RecordingBar Component Styles */
5774
5729
 
5775
- .muka-scrollbar__divider {
5776
- flex-shrink: 0;
5730
+ .muka-recording-bar {
5731
+ display: flex;
5732
+ align-items: center;
5733
+ gap: var(--spacing-3);
5777
5734
  width: 100%;
5778
- height: 1px;
5779
- background-color: var(--color-border-default);
5735
+ min-width: 0;
5780
5736
  }
5781
5737
 
5782
- .muka-scrollbar--horizontal .muka-scrollbar__divider {
5783
- width: 1px;
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%;
5819
+ }
5820
+
5821
+ .muka-scrollbar__button:hover {
5822
+ background-color: var(--color-surface-hover);
5823
+ }
5824
+
5825
+ .muka-scrollbar__divider {
5826
+ flex-shrink: 0;
5827
+ width: 100%;
5828
+ height: 1px;
5829
+ background-color: var(--color-border-default);
5830
+ }
5831
+
5832
+ .muka-scrollbar--horizontal .muka-scrollbar__divider {
5833
+ width: 1px;
5784
5834
  height: 100%;
5785
5835
  }
5786
5836
 
@@ -5851,56 +5901,6 @@ body {
5851
5901
  }
5852
5902
 
5853
5903
 
5854
- /* RecordingBar */
5855
- /* RecordingBar Component Styles */
5856
-
5857
- .muka-recording-bar {
5858
- display: flex;
5859
- align-items: center;
5860
- gap: var(--spacing-3);
5861
- width: 100%;
5862
- min-width: 0;
5863
- }
5864
-
5865
- .muka-recording-bar__dot {
5866
- flex: 0 0 auto;
5867
- width: 0.625rem;
5868
- height: 0.625rem;
5869
- border-radius: var(--radius-full, 9999px);
5870
- background: var(--alert-color-error-accent, var(--color-text-default-default));
5871
- animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5872
- }
5873
-
5874
- .muka-recording-bar__time {
5875
- flex: 0 0 auto;
5876
- font-size: var(--text-label-sm-fontSize, 0.75rem);
5877
- line-height: var(--text-label-sm-lineHeight, 1);
5878
- font-variant-numeric: tabular-nums;
5879
- color: var(--color-text-default-default);
5880
- }
5881
-
5882
- .muka-recording-bar__wave {
5883
- flex: 1 1 auto;
5884
- min-width: 0;
5885
- }
5886
-
5887
- @keyframes muka-recording-bar-pulse {
5888
- 0%,
5889
- 100% {
5890
- opacity: 1;
5891
- }
5892
- 50% {
5893
- opacity: 0.3;
5894
- }
5895
- }
5896
-
5897
- @media (prefers-reduced-motion: reduce) {
5898
- .muka-recording-bar__dot {
5899
- animation: none;
5900
- }
5901
- }
5902
-
5903
-
5904
5904
  /* RangeSlider */
5905
5905
  /* RangeSlider Component Styles - Using Muka Design Tokens */
5906
5906
 
@@ -6260,6 +6260,53 @@ body {
6260
6260
  }
6261
6261
 
6262
6262
 
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
+
6263
6310
  /* Radio */
6264
6311
  /* Radio Component Styles - Using Muka Design Tokens */
6265
6312
 
@@ -6404,58 +6451,255 @@ body {
6404
6451
  }
6405
6452
 
6406
6453
 
6407
- /* PullToRefresh */
6408
- /* PullToRefresh Component Styles */
6454
+ /* ProgressAccordeon */
6455
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6409
6456
 
6410
- .muka-pull-to-refresh {
6411
- position: relative;
6457
+ /* ─── Root ──────────────────────────────────────────────── */
6458
+ .muka-progress-accordeon {
6459
+ container-type: inline-size;
6412
6460
  display: flex;
6413
6461
  flex-direction: column;
6462
+ align-items: stretch;
6414
6463
  width: 100%;
6415
- height: 100%;
6416
- overflow: hidden;
6464
+ /* Top padding provides the vertical rhythm between stacked steps */
6465
+ padding-top: var(--spacing-8);
6417
6466
  }
6418
6467
 
6419
- .muka-pull-to-refresh__indicator {
6420
- position: absolute;
6421
- top: 0;
6422
- left: 0;
6423
- right: 0;
6424
- display: flex;
6425
- align-items: flex-end;
6426
- justify-content: center;
6427
- padding-bottom: var(--spacing-2);
6428
- color: var(--color-text-subtle-default);
6429
- overflow: hidden;
6430
- pointer-events: none;
6431
- z-index: 1;
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);
6432
6473
  }
6433
6474
 
6434
- .muka-pull-to-refresh__chevron {
6435
- display: inline-flex;
6436
- align-items: center;
6437
- justify-content: center;
6438
- transition: transform 0.16s ease;
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);
6439
6479
  }
6440
6480
 
6441
- .muka-pull-to-refresh__scroller {
6442
- flex: 1 1 auto;
6443
- min-height: 0;
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;
6444
6488
  width: 100%;
6445
- overflow-x: clip;
6446
- overflow-y: auto;
6447
- -webkit-overflow-scrolling: touch;
6448
- overscroll-behavior-y: contain;
6449
- touch-action: pan-y;
6450
- will-change: transform;
6451
6489
  }
6452
6490
 
6453
-
6454
- /* ProgressTracker */
6455
- /* ProgressTracker Component Styles — Using Muka Design Tokens */
6456
-
6457
- /* ─── Root ──────────────────────────────────────────────── */
6458
- .muka-progress-tracker {
6491
+ /* ─── Header ─────────────────────────────────────────────── */
6492
+ .muka-progress-accordeon__header {
6493
+ display: flex;
6494
+ flex-direction: column;
6495
+ gap: var(--spacing-3);
6496
+ width: 100%;
6497
+ }
6498
+
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;
6505
+ }
6506
+
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 {
6459
6703
  width: 100%;
6460
6704
  }
6461
6705
 
@@ -6868,247 +7112,74 @@ body {
6868
7112
  }
6869
7113
 
6870
7114
 
6871
- /* ProgressAccordeon */
6872
- /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
7115
+ /* ProfileBadge */
7116
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
6873
7117
 
6874
- /* ─── Root ──────────────────────────────────────────────── */
6875
- .muka-progress-accordeon {
6876
- container-type: inline-size;
6877
- display: flex;
6878
- flex-direction: column;
6879
- align-items: stretch;
6880
- width: 100%;
6881
- /* Top padding provides the vertical rhythm between stacked steps */
6882
- padding-top: var(--spacing-8);
7118
+ .muka-profile-badge {
7119
+ display: inline-flex;
7120
+ align-items: center;
7121
+ font-family: var(--text-body-base-regular-fontFamily);
6883
7122
  }
6884
7123
 
6885
- /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6886
- .muka-progress-accordeon--current,
6887
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
6888
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
6889
- gap: var(--spacing-6);
7124
+ /* Size variants */
7125
+ .muka-profile-badge--lg {
7126
+ gap: var(--spacing-4); /* 16px */
6890
7127
  }
6891
7128
 
6892
- .muka-progress-accordeon--upcoming,
6893
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
6894
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
6895
- gap: var(--spacing-8);
7129
+ .muka-profile-badge--md {
7130
+ gap: var(--spacing-3); /* 12px */
6896
7131
  }
6897
7132
 
6898
- /* Collapsible steps group header + slot. The header↔content gap lives inside the
6899
- collapsing slot (as padding-top) so it collapses with the content, so the
6900
- body gap itself is 0. */
6901
- .muka-progress-accordeon__body {
6902
- display: flex;
6903
- flex-direction: column;
6904
- gap: 0;
6905
- width: 100%;
7133
+ .muka-profile-badge__avatar {
7134
+ flex-shrink: 0;
6906
7135
  }
6907
7136
 
6908
- /* ─── Header ─────────────────────────────────────────────── */
6909
- .muka-progress-accordeon__header {
6910
- display: flex;
6911
- flex-direction: column;
6912
- gap: var(--spacing-3);
6913
- width: 100%;
6914
- }
6915
-
6916
- .muka-progress-accordeon__header-row {
6917
- display: flex;
6918
- align-items: flex-start;
6919
- gap: var(--spacing-3);
6920
- width: 100%;
6921
- min-height: 40px;
6922
- }
6923
-
6924
- .muka-progress-accordeon__heading-group {
7137
+ /* Text stack */
7138
+ .muka-profile-badge__text {
6925
7139
  display: flex;
6926
- flex: 1 0 0;
6927
- min-width: 0;
7140
+ flex-direction: column;
6928
7141
  align-items: flex-start;
6929
- gap: var(--spacing-4);
6930
- }
6931
-
6932
- /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
6933
- so a single line centres against the indicator + controls row. */
6934
- .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
6935
- .muka-progress-accordeon__heading-group {
6936
- padding-top: var(--spacing-1);
6937
- }
6938
-
6939
- .muka-progress-accordeon__controls {
6940
- display: flex;
6941
- flex-shrink: 0;
6942
- align-items: center;
6943
- gap: var(--spacing-3);
6944
- }
6945
-
6946
- /* ─── Step indicator (circle) ───────────────────────────── */
6947
- .muka-progress-accordeon__indicator {
6948
- width: 32px;
6949
- height: 32px;
6950
- flex-shrink: 0;
6951
- border-radius: var(--border-radius-full);
6952
- display: flex;
6953
- align-items: center;
6954
- justify-content: center;
6955
- }
6956
-
6957
- /* Past: dark accent-contrast circle with inverse checkmark */
6958
- .muka-progress-accordeon__indicator--past {
6959
- background-color: var(--alias-color-accent-contrast);
6960
- color: var(--color-text-default-inverse);
6961
- }
6962
-
6963
- /* Current: accent circle with inverse bold number */
6964
- .muka-progress-accordeon__indicator--current {
6965
- background-color: var(--alias-color-accent-default);
6966
- color: var(--color-text-default-inverse);
6967
- }
6968
-
6969
- /* Upcoming: sunken/muted circle with default-color number */
6970
- .muka-progress-accordeon__indicator--upcoming {
6971
- background-color: var(--color-surface-sunken);
6972
- color: var(--color-text-default-default);
6973
- }
6974
-
6975
- .muka-progress-accordeon__check-icon {
6976
- width: 20px;
6977
- height: 20px;
6978
- color: var(--color-text-default-inverse);
6979
- }
6980
-
6981
- .muka-progress-accordeon__number {
6982
- font-family: var(--text-label-md-bold-fontFamily);
6983
- font-weight: var(--text-label-md-bold-fontWeight);
6984
- font-size: var(--text-label-md-bold-fontSize);
6985
- line-height: var(--text-label-md-bold-lineHeight);
6986
- text-align: center;
6987
- user-select: none;
6988
- }
6989
-
6990
- /* Upcoming number is semibold (not bold) per Figma */
6991
- .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
6992
- font-family: var(--text-label-md-semibold-fontFamily);
6993
- font-weight: var(--text-label-md-semibold-fontWeight);
6994
- }
6995
-
6996
- /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
6997
- .muka-progress-accordeon__heading {
6998
- flex: 1 0 0;
6999
7142
  min-width: 0;
7000
- margin: 0;
7001
- font-family: var(--text-heading-md-fontFamily);
7002
- font-weight: var(--text-heading-md-fontWeight);
7003
- font-size: var(--text-heading-md-fontSize);
7004
- line-height: var(--text-heading-md-lineHeight);
7005
- letter-spacing: var(--text-heading-md-letterSpacing);
7006
- color: var(--color-text-default-default);
7007
7143
  }
7008
7144
 
7009
- /* ─── Description ────────────────────────────────────────── */
7010
- /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
7011
- .muka-progress-accordeon__description {
7012
- width: 100%;
7013
- padding-left: 48px;
7145
+ .muka-profile-badge__name {
7014
7146
  font-family: var(--text-body-base-regular-fontFamily);
7015
- font-weight: var(--text-body-base-regular-fontWeight);
7016
7147
  font-size: var(--text-body-base-regular-fontSize);
7148
+ font-weight: var(--text-body-base-regular-fontWeight);
7017
7149
  line-height: var(--text-body-base-regular-lineHeight);
7018
7150
  color: var(--color-text-default-default);
7019
7151
  }
7020
7152
 
7021
- /* ─── Edit button ────────────────────────────────────────── */
7022
- .muka-progress-accordeon__edit {
7023
- flex-shrink: 0;
7024
- }
7025
-
7026
- /* Wide container shows the labelled button; the icon-only one is hidden */
7027
- .muka-progress-accordeon__edit--narrow {
7028
- display: none;
7029
- }
7030
-
7031
- /* ─── Content slot ───────────────────────────────────────── */
7032
- .muka-progress-accordeon__slot {
7033
- display: flex;
7034
- flex-direction: column;
7035
- align-items: stretch;
7036
- width: 100%;
7037
- }
7038
-
7039
- /* ─── Collapse/expand animation (past & upcoming steps) ──────
7040
- The grid-template-rows 1fr → 0fr technique animates the content to/from its
7041
- intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7042
- --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7043
- .muka-progress-accordeon__slot-wrapper {
7044
- display: grid;
7045
- grid-template-rows: 1fr;
7046
- transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7047
- }
7048
-
7049
- .muka-progress-accordeon__slot-wrapper--collapsed {
7050
- grid-template-rows: 0fr;
7051
- }
7052
-
7053
- /* The direct grid child clips and must have NO padding/border of its own —
7054
- min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7055
- 0 height (padding on the item would leave a residual gap when collapsed). */
7056
- .muka-progress-accordeon__slot-clip {
7057
- overflow: hidden;
7058
- min-height: 0;
7059
- }
7060
-
7061
- /* The header↔content spacing lives on the inner slot (inside the clip region)
7062
- so it collapses together with the content. */
7063
- .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7064
- padding-top: var(--spacing-4);
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);
7065
7159
  }
7066
7160
 
7067
- /* ─── Action buttons (current state) ─────────────────────── */
7068
- .muka-progress-accordeon__actions {
7069
- display: flex;
7070
- justify-content: flex-end;
7071
- gap: var(--spacing-4);
7072
- width: 100%;
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;
7073
7170
  }
7074
7171
 
7075
- .muka-progress-accordeon__action {
7076
- min-width: 160px;
7172
+ .muka-profile-badge--clickable:hover {
7173
+ opacity: 0.9;
7077
7174
  }
7078
7175
 
7079
- /* ─── Divider ────────────────────────────────────────────── */
7080
- .muka-progress-accordeon__divider {
7081
- width: 100%;
7176
+ .muka-profile-badge--clickable:active {
7177
+ opacity: 0.8;
7082
7178
  }
7083
7179
 
7084
- /* ─── Responsive (narrow container) ──────────────────────── */
7085
- @container (max-width: 480px) {
7086
- /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7087
- 32px step indicator, so nudge the text down to keep a single line centred. */
7088
- .muka-progress-accordeon__heading {
7089
- font-size: var(--text-heading-sm-fontSize);
7090
- line-height: var(--text-heading-sm-lineHeight);
7091
- padding-top: var(--spacing-1);
7092
- }
7093
-
7094
- /* Edit button swaps to the icon-only variant */
7095
- .muka-progress-accordeon__edit--wide {
7096
- display: none;
7097
- }
7098
-
7099
- .muka-progress-accordeon__edit--narrow {
7100
- display: inline-flex;
7101
- }
7102
-
7103
- /* Action buttons stretch to fill the row */
7104
- .muka-progress-accordeon__actions {
7105
- justify-content: stretch;
7106
- }
7107
-
7108
- .muka-progress-accordeon__action {
7109
- flex: 1 0 0;
7110
- min-width: 0;
7111
- }
7180
+ .muka-profile-badge--clickable:focus-visible {
7181
+ outline: 2px solid var(--color-border-focus);
7182
+ outline-offset: 2px;
7112
7183
  }
7113
7184
 
7114
7185
 
@@ -7284,74 +7355,34 @@ body {
7284
7355
  }
7285
7356
 
7286
7357
 
7287
- /* ProfileBadge */
7288
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
7289
-
7290
- .muka-profile-badge {
7291
- display: inline-flex;
7292
- align-items: center;
7293
- font-family: var(--text-body-base-regular-fontFamily);
7294
- }
7295
-
7296
- /* Size variants */
7297
- .muka-profile-badge--lg {
7298
- gap: var(--spacing-4); /* 16px */
7299
- }
7300
-
7301
- .muka-profile-badge--md {
7302
- gap: var(--spacing-3); /* 12px */
7303
- }
7304
-
7305
- .muka-profile-badge__avatar {
7306
- flex-shrink: 0;
7307
- }
7308
-
7309
- /* Text stack */
7310
- .muka-profile-badge__text {
7311
- display: flex;
7312
- flex-direction: column;
7313
- align-items: flex-start;
7314
- min-width: 0;
7315
- }
7316
-
7317
- .muka-profile-badge__name {
7318
- font-family: var(--text-body-base-regular-fontFamily);
7319
- font-size: var(--text-body-base-regular-fontSize);
7320
- font-weight: var(--text-body-base-regular-fontWeight);
7321
- line-height: var(--text-body-base-regular-lineHeight);
7322
- color: var(--color-text-default-default);
7323
- }
7324
-
7325
- .muka-profile-badge__email {
7326
- font-family: var(--text-body-xs-regular-fontFamily);
7327
- font-size: var(--text-body-xs-regular-fontSize);
7328
- font-weight: var(--text-body-xs-regular-fontWeight);
7329
- line-height: var(--text-body-xs-regular-lineHeight);
7330
- color: var(--color-text-subtle-default);
7331
- }
7358
+ /* Popover */
7359
+ /* Popover Component Styles */
7332
7360
 
7333
- /* Clickable state */
7334
- .muka-profile-badge--clickable {
7335
- cursor: pointer;
7336
- border: none;
7337
- background: none;
7338
- padding: 0;
7339
- text-align: left;
7361
+ .muka-popover__content {
7362
+ background-color: var(--color-surface-level3);
7363
+ border: var(--border-width-regular) solid var(--color-border-default);
7340
7364
  border-radius: var(--radius-md);
7341
- transition: opacity 0.2s ease;
7342
- }
7343
-
7344
- .muka-profile-badge--clickable:hover {
7345
- opacity: 0.9;
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;
7346
7370
  }
7347
7371
 
7348
- .muka-profile-badge--clickable:active {
7349
- opacity: 0.8;
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
+ }
7350
7381
  }
7351
7382
 
7352
- .muka-profile-badge--clickable:focus-visible {
7353
- outline: 2px solid var(--color-border-focus);
7354
- outline-offset: 2px;
7383
+ /* Arrow */
7384
+ .muka-popover__arrow {
7385
+ fill: var(--color-surface-level3);
7355
7386
  }
7356
7387
 
7357
7388
 
@@ -7384,198 +7415,70 @@ body {
7384
7415
  gap: var(--spacing-1);
7385
7416
  }
7386
7417
 
7387
- .muka-price-tag--sm .muka-price-tag__amount {
7388
- align-items: center;
7389
- }
7390
-
7391
- /* Numbers group: whole + decimal + cents */
7392
- .muka-price-tag__numbers {
7393
- display: flex;
7394
- align-items: baseline;
7395
- }
7396
-
7397
- /* ─── Medium size typography ──────────────────────────── */
7398
-
7399
- .muka-price-tag--md .muka-price-tag__currency {
7400
- font-family: var(--text-subheading-md-fontFamily);
7401
- font-weight: var(--text-subheading-md-fontWeight);
7402
- font-size: var(--text-subheading-md-fontSize);
7403
- line-height: var(--text-label-2xl-bold-lineHeight);
7404
- color: var(--color-text-subtle-default);
7405
- }
7406
-
7407
- .muka-price-tag--md .muka-price-tag__whole {
7408
- font-family: var(--text-label-2xl-bold-fontFamily);
7409
- font-weight: var(--text-label-2xl-bold-fontWeight);
7410
- font-size: var(--text-label-2xl-bold-fontSize);
7411
- line-height: var(--text-label-2xl-bold-lineHeight);
7412
- color: var(--color-text-default-default);
7413
- }
7414
-
7415
- .muka-price-tag--md .muka-price-tag__decimal,
7416
- .muka-price-tag--md .muka-price-tag__cents {
7417
- font-family: var(--text-label-md-bold-fontFamily);
7418
- font-weight: var(--text-label-md-bold-fontWeight);
7419
- font-size: var(--text-label-md-bold-fontSize);
7420
- line-height: var(--text-label-md-bold-lineHeight);
7421
- color: var(--color-text-default-default);
7422
- }
7423
-
7424
- /* ─── Small size typography ───────────────────────────── */
7425
-
7426
- .muka-price-tag--sm .muka-price-tag__currency {
7427
- font-family: var(--text-body-base-regular-fontFamily);
7428
- font-weight: var(--text-body-base-regular-fontWeight);
7429
- font-size: var(--text-body-base-regular-fontSize);
7430
- line-height: var(--text-label-md-bold-lineHeight);
7431
- color: var(--color-text-subtle-default);
7432
- }
7433
-
7434
- .muka-price-tag--sm .muka-price-tag__whole,
7435
- .muka-price-tag--sm .muka-price-tag__decimal,
7436
- .muka-price-tag--sm .muka-price-tag__cents {
7437
- font-family: var(--text-label-md-bold-fontFamily);
7438
- font-weight: var(--text-label-md-bold-fontWeight);
7439
- font-size: var(--text-label-md-bold-fontSize);
7440
- line-height: var(--text-label-md-bold-lineHeight);
7441
- color: var(--color-text-default-default);
7442
- }
7443
-
7444
- /* ─── Unit label (same for both sizes) ────────────────── */
7445
-
7446
- .muka-price-tag__unit {
7447
- font-family: var(--text-body-sm-regular-fontFamily);
7448
- font-weight: var(--text-body-sm-regular-fontWeight);
7449
- font-size: var(--text-body-sm-regular-fontSize);
7450
- line-height: var(--text-body-sm-regular-lineHeight);
7451
- color: var(--color-text-subtle-default);
7452
- }
7453
-
7454
-
7455
- /* Popover */
7456
- /* Popover Component Styles */
7457
-
7458
- .muka-popover__content {
7459
- background-color: var(--color-surface-level3);
7460
- border: var(--border-width-regular) solid var(--color-border-default);
7461
- border-radius: var(--radius-md);
7462
- padding: var(--spacing-4);
7463
- box-shadow: var(--shadow-level3);
7464
- max-width: 20rem;
7465
- z-index: 50;
7466
- animation: muka-popover-fade-in 150ms ease;
7467
- }
7468
-
7469
- @keyframes muka-popover-fade-in {
7470
- from {
7471
- opacity: 0;
7472
- transform: scale(0.96);
7473
- }
7474
- to {
7475
- opacity: 1;
7476
- transform: scale(1);
7477
- }
7478
- }
7479
-
7480
- /* Arrow */
7481
- .muka-popover__arrow {
7482
- fill: var(--color-surface-level3);
7483
- }
7484
-
7485
-
7486
- /* PieChart */
7487
- /* PieChart Component Styles - Using Muka Design Tokens */
7488
-
7489
- .muka-piechart {
7490
- display: inline-flex;
7491
- align-items: center;
7492
- gap: var(--spacing-4);
7493
- }
7494
-
7495
- /* Legend layout */
7496
- .muka-piechart--legend-right {
7497
- flex-direction: row;
7498
- }
7499
-
7500
- .muka-piechart--legend-bottom {
7501
- flex-direction: column;
7418
+ .muka-price-tag--sm .muka-price-tag__amount {
7419
+ align-items: center;
7502
7420
  }
7503
7421
 
7504
- /* ========================================
7505
- CHART
7506
- ======================================== */
7507
-
7508
- .muka-piechart__chart {
7509
- position: relative;
7510
- flex-shrink: 0;
7422
+ /* Numbers group: whole + decimal + cents */
7423
+ .muka-price-tag__numbers {
7424
+ display: flex;
7425
+ align-items: baseline;
7511
7426
  }
7512
7427
 
7513
- .muka-piechart__chart--sm {
7514
- width: var(--piechart-size-diameter-sm);
7515
- height: var(--piechart-size-diameter-sm);
7516
- }
7428
+ /* ─── Medium size typography ──────────────────────────── */
7517
7429
 
7518
- .muka-piechart__chart--md {
7519
- width: var(--piechart-size-diameter-md);
7520
- height: var(--piechart-size-diameter-md);
7430
+ .muka-price-tag--md .muka-price-tag__currency {
7431
+ font-family: var(--text-subheading-md-fontFamily);
7432
+ font-weight: var(--text-subheading-md-fontWeight);
7433
+ font-size: var(--text-subheading-md-fontSize);
7434
+ line-height: var(--text-label-2xl-bold-lineHeight);
7435
+ color: var(--color-text-subtle-default);
7521
7436
  }
7522
7437
 
7523
- .muka-piechart__chart--lg {
7524
- width: var(--piechart-size-diameter-lg);
7525
- height: var(--piechart-size-diameter-lg);
7438
+ .muka-price-tag--md .muka-price-tag__whole {
7439
+ font-family: var(--text-label-2xl-bold-fontFamily);
7440
+ font-weight: var(--text-label-2xl-bold-fontWeight);
7441
+ font-size: var(--text-label-2xl-bold-fontSize);
7442
+ line-height: var(--text-label-2xl-bold-lineHeight);
7443
+ color: var(--color-text-default-default);
7526
7444
  }
7527
7445
 
7528
- .muka-piechart__svg {
7529
- display: block;
7530
- width: 100%;
7531
- height: 100%;
7532
- /* Start slices at 12 o'clock instead of 3 o'clock */
7533
- transform: rotate(-90deg);
7446
+ .muka-price-tag--md .muka-price-tag__decimal,
7447
+ .muka-price-tag--md .muka-price-tag__cents {
7448
+ font-family: var(--text-label-md-bold-fontFamily);
7449
+ font-weight: var(--text-label-md-bold-fontWeight);
7450
+ font-size: var(--text-label-md-bold-fontSize);
7451
+ line-height: var(--text-label-md-bold-lineHeight);
7452
+ color: var(--color-text-default-default);
7534
7453
  }
7535
7454
 
7536
- .muka-piechart__track {
7537
- fill: none;
7538
- stroke: var(--piechart-color-track);
7539
- }
7455
+ /* ─── Small size typography ───────────────────────────── */
7540
7456
 
7541
- .muka-piechart__segment {
7542
- fill: none;
7457
+ .muka-price-tag--sm .muka-price-tag__currency {
7458
+ font-family: var(--text-body-base-regular-fontFamily);
7459
+ font-weight: var(--text-body-base-regular-fontWeight);
7460
+ font-size: var(--text-body-base-regular-fontSize);
7461
+ line-height: var(--text-label-md-bold-lineHeight);
7462
+ color: var(--color-text-subtle-default);
7543
7463
  }
7544
7464
 
7545
- /* ========================================
7546
- LEGEND
7547
- ======================================== */
7548
-
7549
- .muka-piechart__legend {
7550
- list-style: none;
7551
- margin: 0;
7552
- padding: 0;
7553
- display: flex;
7554
- flex-direction: column;
7555
- gap: var(--spacing-1);
7465
+ .muka-price-tag--sm .muka-price-tag__whole,
7466
+ .muka-price-tag--sm .muka-price-tag__decimal,
7467
+ .muka-price-tag--sm .muka-price-tag__cents {
7468
+ font-family: var(--text-label-md-bold-fontFamily);
7469
+ font-weight: var(--text-label-md-bold-fontWeight);
7470
+ font-size: var(--text-label-md-bold-fontSize);
7471
+ line-height: var(--text-label-md-bold-lineHeight);
7472
+ color: var(--color-text-default-default);
7556
7473
  }
7557
7474
 
7558
- .muka-piechart__legend-item {
7559
- display: flex;
7560
- align-items: center;
7561
- gap: var(--spacing-2);
7475
+ /* ─── Unit label (same for both sizes) ────────────────── */
7476
+
7477
+ .muka-price-tag__unit {
7562
7478
  font-family: var(--text-body-sm-regular-fontFamily);
7563
7479
  font-weight: var(--text-body-sm-regular-fontWeight);
7564
7480
  font-size: var(--text-body-sm-regular-fontSize);
7565
7481
  line-height: var(--text-body-sm-regular-lineHeight);
7566
- color: var(--color-text-default-default);
7567
- }
7568
-
7569
- .muka-piechart__swatch {
7570
- flex-shrink: 0;
7571
- width: var(--spacing-3);
7572
- height: var(--spacing-3);
7573
- border-radius: var(--border-radius-sm);
7574
- }
7575
-
7576
- .muka-piechart__legend-value {
7577
- margin-left: auto;
7578
- padding-left: var(--spacing-2);
7579
7482
  color: var(--color-text-subtle-default);
7580
7483
  }
7581
7484
 
@@ -7708,6 +7611,103 @@ body {
7708
7611
  }
7709
7612
 
7710
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);
7708
+ }
7709
+
7710
+
7711
7711
  /* PhotoDraftStrip */
7712
7712
  /* PhotoDraftStrip Component Styles */
7713
7713
 
@@ -7738,36 +7738,6 @@ body {
7738
7738
  }
7739
7739
 
7740
7740
 
7741
- /* NumberInput */
7742
- /* NumberInput — reuses Input field styles (../Input/Input.css). */
7743
- /* Only the prefix/suffix affixes are NumberInput-specific. */
7744
-
7745
- .muka-numberinput__addon {
7746
- display: inline-flex;
7747
- align-items: center;
7748
- flex: none;
7749
- color: var(--color-text-subtle-default);
7750
- font-family: var(--text-input-md-fontFamily);
7751
- font-size: var(--text-input-md-fontSize);
7752
- line-height: var(--text-input-md-lineHeight);
7753
- user-select: none;
7754
- pointer-events: none;
7755
- white-space: nowrap;
7756
- }
7757
-
7758
- /* Hide the native number spinners — affixes/step API replace them. */
7759
- .muka-numberinput__field .muka-input__native::-webkit-outer-spin-button,
7760
- .muka-numberinput__field .muka-input__native::-webkit-inner-spin-button {
7761
- -webkit-appearance: none;
7762
- margin: 0;
7763
- }
7764
-
7765
- .muka-numberinput__field .muka-input__native {
7766
- -moz-appearance: textfield;
7767
- appearance: textfield;
7768
- }
7769
-
7770
-
7771
7741
  /* Pagination */
7772
7742
  /* Pagination Component Styles */
7773
7743
 
@@ -7863,10 +7833,40 @@ body {
7863
7833
  font-size: var(--text-label-lg-regular-fontSize);
7864
7834
  }
7865
7835
 
7866
- .muka-pagination--lg .muka-pagination__ellipsis {
7867
- min-width: var(--size-4xl);
7868
- height: var(--size-4xl);
7869
- font-size: var(--text-label-lg-regular-fontSize);
7836
+ .muka-pagination--lg .muka-pagination__ellipsis {
7837
+ min-width: var(--size-4xl);
7838
+ height: var(--size-4xl);
7839
+ font-size: var(--text-label-lg-regular-fontSize);
7840
+ }
7841
+
7842
+
7843
+ /* NumberInput */
7844
+ /* NumberInput — reuses Input field styles (../Input/Input.css). */
7845
+ /* Only the prefix/suffix affixes are NumberInput-specific. */
7846
+
7847
+ .muka-numberinput__addon {
7848
+ display: inline-flex;
7849
+ align-items: center;
7850
+ flex: none;
7851
+ color: var(--color-text-subtle-default);
7852
+ font-family: var(--text-input-md-fontFamily);
7853
+ font-size: var(--text-input-md-fontSize);
7854
+ line-height: var(--text-input-md-lineHeight);
7855
+ user-select: none;
7856
+ pointer-events: none;
7857
+ white-space: nowrap;
7858
+ }
7859
+
7860
+ /* Hide the native number spinners — affixes/step API replace them. */
7861
+ .muka-numberinput__field .muka-input__native::-webkit-outer-spin-button,
7862
+ .muka-numberinput__field .muka-input__native::-webkit-inner-spin-button {
7863
+ -webkit-appearance: none;
7864
+ margin: 0;
7865
+ }
7866
+
7867
+ .muka-numberinput__field .muka-input__native {
7868
+ -moz-appearance: textfield;
7869
+ appearance: textfield;
7870
7870
  }
7871
7871
 
7872
7872
 
@@ -12166,128 +12166,6 @@ li.muka-listitem {
12166
12166
  }
12167
12167
 
12168
12168
 
12169
- /* ChatPhotoGrid */
12170
- /* ChatPhotoGrid Component Styles */
12171
-
12172
- /*
12173
- * The grid clips to its own radius and the tiles stay square, so only the four
12174
- * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12175
- */
12176
- .muka-chat-photo-grid {
12177
- display: grid;
12178
- gap: var(--chatphotogrid-gap);
12179
- width: 100%;
12180
- min-width: 0;
12181
- overflow: hidden;
12182
- border-radius: var(--chatphotogrid-radius);
12183
- }
12184
-
12185
- /* ─── Tiles ────────────────────────────────────────────── */
12186
-
12187
- .muka-chat-photo-grid__tile {
12188
- position: relative;
12189
- display: block;
12190
- overflow: hidden;
12191
- min-width: 0;
12192
- padding: 0;
12193
- margin: 0;
12194
- border: none;
12195
- background-color: var(--chatphotogrid-color-placeholder);
12196
- aspect-ratio: 1 / 1;
12197
- }
12198
-
12199
- button.muka-chat-photo-grid__tile {
12200
- cursor: pointer;
12201
- appearance: none;
12202
- }
12203
-
12204
- button.muka-chat-photo-grid__tile:focus-visible {
12205
- outline: var(--border-width-bold) solid var(--color-border-focus);
12206
- /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12207
- outline-offset: calc(-1 * var(--border-width-bold));
12208
- }
12209
-
12210
- .muka-chat-photo-grid__image {
12211
- display: block;
12212
- width: 100%;
12213
- height: 100%;
12214
- object-fit: cover;
12215
- }
12216
-
12217
- /* ─── Overflow tile ────────────────────────────────────── */
12218
-
12219
- .muka-chat-photo-grid__overflow {
12220
- position: absolute;
12221
- inset: 0;
12222
- display: flex;
12223
- align-items: center;
12224
- justify-content: center;
12225
- background-color: var(--chatphotogrid-color-overflow-background);
12226
- color: var(--chatphotogrid-color-overflow-foreground);
12227
- font-family: var(--text-body-2xl-regular-fontFamily);
12228
- font-weight: var(--text-body-2xl-regular-fontWeight);
12229
- font-size: var(--text-body-2xl-regular-fontSize);
12230
- line-height: var(--text-body-2xl-regular-lineHeight);
12231
- }
12232
-
12233
- /* ─── Layouts ──────────────────────────────────────────── */
12234
-
12235
- .muka-chat-photo-grid--1 {
12236
- grid-template-columns: 1fr;
12237
- }
12238
-
12239
- .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12240
- aspect-ratio: 4 / 3;
12241
- }
12242
-
12243
- .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12244
- aspect-ratio: 3 / 4;
12245
- }
12246
-
12247
- .muka-chat-photo-grid--2 {
12248
- grid-template-columns: repeat(2, 1fr);
12249
- }
12250
-
12251
- .muka-chat-photo-grid--3 {
12252
- grid-template-columns: repeat(3, 1fr);
12253
- }
12254
-
12255
- .muka-chat-photo-grid--4 {
12256
- grid-template-columns: repeat(2, 1fr);
12257
- }
12258
-
12259
- /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12260
- .muka-chat-photo-grid--5 {
12261
- grid-template-columns: repeat(6, 1fr);
12262
- }
12263
-
12264
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12265
- grid-column: span 3;
12266
- }
12267
-
12268
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12269
- grid-column: span 2;
12270
- }
12271
-
12272
- .muka-chat-photo-grid--6,
12273
- .muka-chat-photo-grid--overflow {
12274
- grid-template-columns: repeat(3, 1fr);
12275
- }
12276
-
12277
- /* ─── Print ────────────────────────────────────────────── */
12278
-
12279
- @media print {
12280
- .muka-chat-photo-grid {
12281
- break-inside: avoid;
12282
- }
12283
-
12284
- .muka-chat-photo-grid__image {
12285
- print-color-adjust: exact;
12286
- -webkit-print-color-adjust: exact;
12287
- }
12288
- }
12289
-
12290
-
12291
12169
  /* ChatMessageStack */
12292
12170
  /* ChatMessageStack Component Styles */
12293
12171
 
@@ -15158,3 +15036,125 @@ button.muka-chat-photo-grid__tile:focus-visible {
15158
15036
  border-bottom: none;
15159
15037
  }
15160
15038
 
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
+