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