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