@revikornmann/muka-ui 0.27.2 → 0.27.3

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.
@@ -2020,9 +2020,16 @@ body {
2020
2020
  --avatar-size-md: 4rem;
2021
2021
  --avatar-size-lg: 5rem;
2022
2022
  --avatar-size-xl: 7rem;
2023
+ --avatar-icon-size-3xs: 1rem;
2024
+ --avatar-icon-size-2xs: 1.25rem;
2025
+ --avatar-icon-size-xs: 1.5rem;
2026
+ --avatar-icon-size-sm: 2rem;
2027
+ --avatar-icon-size-md: 2.5rem;
2028
+ --avatar-icon-size-lg: 3rem;
2029
+ --avatar-icon-size-xl: 4rem;
2023
2030
  --avatar-color-background-default: #e8e8e8;
2024
2031
  --avatar-color-background-loading: #e0e0e0;
2025
- --avatar-color-foreground-default: #202020;
2032
+ --avatar-color-foreground-default: #838383;
2026
2033
  --avatar-color-foreground-muted: #bbbbbb;
2027
2034
  --avatar-color-status-online: #30a46c;
2028
2035
  --avatar-color-status-offline: #bbbbbb;
@@ -2430,38 +2437,6 @@ body {
2430
2437
  }
2431
2438
 
2432
2439
 
2433
- /* VoiceMessage */
2434
- /* VoiceMessage Component Styles */
2435
-
2436
- .muka-voice-message {
2437
- display: flex;
2438
- align-items: center;
2439
- gap: var(--spacing-3);
2440
- width: 100%;
2441
- min-width: min(16rem, 60vw);
2442
- }
2443
-
2444
- .muka-voice-message__wave {
2445
- flex: 1 1 auto;
2446
- min-width: 0;
2447
- }
2448
-
2449
- .muka-voice-message__time {
2450
- flex: 0 0 auto;
2451
- white-space: nowrap;
2452
- font-size: var(--text-label-sm-fontSize, 0.75rem);
2453
- line-height: var(--text-label-sm-lineHeight, 1);
2454
- font-variant-numeric: tabular-nums;
2455
- color: var(--color-text-subtle-default);
2456
- }
2457
-
2458
- /* On the tinted own bubble the surface is the action color, so the timer flips
2459
- * to the inverse text token for contrast. */
2460
- .muka-voice-message--own .muka-voice-message__time {
2461
- color: var(--color-text-default-inverse);
2462
- }
2463
-
2464
-
2465
2440
  /* View */
2466
2441
  /* View Component Styles */
2467
2442
 
@@ -2572,6 +2547,38 @@ body {
2572
2547
  }
2573
2548
 
2574
2549
 
2550
+ /* VoiceMessage */
2551
+ /* VoiceMessage Component Styles */
2552
+
2553
+ .muka-voice-message {
2554
+ display: flex;
2555
+ align-items: center;
2556
+ gap: var(--spacing-3);
2557
+ width: 100%;
2558
+ min-width: min(16rem, 60vw);
2559
+ }
2560
+
2561
+ .muka-voice-message__wave {
2562
+ flex: 1 1 auto;
2563
+ min-width: 0;
2564
+ }
2565
+
2566
+ .muka-voice-message__time {
2567
+ flex: 0 0 auto;
2568
+ white-space: nowrap;
2569
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
2570
+ line-height: var(--text-label-sm-lineHeight, 1);
2571
+ font-variant-numeric: tabular-nums;
2572
+ color: var(--color-text-subtle-default);
2573
+ }
2574
+
2575
+ /* On the tinted own bubble the surface is the action color, so the timer flips
2576
+ * to the inverse text token for contrast. */
2577
+ .muka-voice-message--own .muka-voice-message__time {
2578
+ color: var(--color-text-default-inverse);
2579
+ }
2580
+
2581
+
2575
2582
  /* Typography */
2576
2583
  .muka-typography-catalog {
2577
2584
  display: flex;
@@ -4598,6 +4605,114 @@ body {
4598
4605
  }
4599
4606
 
4600
4607
 
4608
+ /* SwipeActions */
4609
+ /* SwipeActions Component Styles */
4610
+
4611
+ .muka-swipe-actions {
4612
+ position: relative;
4613
+ overflow: hidden;
4614
+ touch-action: pan-y;
4615
+ -webkit-user-select: none;
4616
+ user-select: none;
4617
+ background-color: var(--color-surface-level3);
4618
+ }
4619
+
4620
+ .muka-swipe-actions--disabled {
4621
+ touch-action: auto;
4622
+ }
4623
+
4624
+ /* ─── Row that holds the actual content ────────────────── */
4625
+
4626
+ .muka-swipe-actions__row {
4627
+ position: relative;
4628
+ z-index: 1;
4629
+ background-color: inherit;
4630
+ will-change: transform;
4631
+ }
4632
+
4633
+ /* ─── Action panels — sit beneath the row ──────────────── */
4634
+
4635
+ .muka-swipe-actions__panel {
4636
+ position: absolute;
4637
+ top: 0;
4638
+ bottom: 0;
4639
+ display: flex;
4640
+ align-items: stretch;
4641
+ z-index: 0;
4642
+ }
4643
+
4644
+ .muka-swipe-actions__panel--left {
4645
+ left: 0;
4646
+ }
4647
+
4648
+ .muka-swipe-actions__panel--right {
4649
+ right: 0;
4650
+ }
4651
+
4652
+ /* ─── Single action button ─────────────────────────────── */
4653
+
4654
+ .muka-swipe-actions__button {
4655
+ display: flex;
4656
+ flex-direction: column;
4657
+ align-items: center;
4658
+ justify-content: center;
4659
+ gap: var(--spacing-1);
4660
+ border: none;
4661
+ cursor: pointer;
4662
+ padding: var(--spacing-2);
4663
+ background-color: var(--color-surface-level2);
4664
+ color: var(--color-text-default-default);
4665
+ font-family: var(--text-label-sm-semibold-fontFamily);
4666
+ font-weight: var(--text-label-sm-semibold-fontWeight);
4667
+ font-size: var(--text-label-sm-semibold-fontSize);
4668
+ line-height: var(--text-label-sm-semibold-lineHeight);
4669
+ -webkit-tap-highlight-color: transparent;
4670
+ transition: filter 0.12s ease;
4671
+ }
4672
+
4673
+ .muka-swipe-actions__button:hover {
4674
+ filter: brightness(0.95);
4675
+ }
4676
+
4677
+ .muka-swipe-actions__button:focus-visible {
4678
+ outline: 2px solid var(--color-action-default);
4679
+ outline-offset: -2px;
4680
+ }
4681
+
4682
+ .muka-swipe-actions__button-icon {
4683
+ display: inline-flex;
4684
+ align-items: center;
4685
+ justify-content: center;
4686
+ }
4687
+
4688
+ /* ─── Color variants ───────────────────────────────────── */
4689
+
4690
+ .muka-swipe-actions__button--neutral {
4691
+ background-color: var(--color-surface-level2);
4692
+ color: var(--color-text-default-default);
4693
+ }
4694
+
4695
+ .muka-swipe-actions__button--primary {
4696
+ background-color: var(--color-action-default);
4697
+ color: var(--color-text-default-inverse);
4698
+ }
4699
+
4700
+ .muka-swipe-actions__button--success {
4701
+ background-color: var(--color-state-success-default);
4702
+ color: var(--color-text-default-inverse);
4703
+ }
4704
+
4705
+ .muka-swipe-actions__button--warning {
4706
+ background-color: var(--color-state-warning-default);
4707
+ color: var(--color-text-default-default);
4708
+ }
4709
+
4710
+ .muka-swipe-actions__button--destructive {
4711
+ background-color: var(--color-state-error-default);
4712
+ color: var(--color-text-default-inverse);
4713
+ }
4714
+
4715
+
4601
4716
  /* Spinner */
4602
4717
  /* Spinner Component Styles */
4603
4718
 
@@ -4761,179 +4876,71 @@ body {
4761
4876
  }
4762
4877
 
4763
4878
 
4764
- /* SwipeActions */
4765
- /* SwipeActions Component Styles */
4879
+ /* SocialSignInButton */
4880
+ /*
4881
+ * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
4882
+ * Google Identity branding) and intentionally fixed across Muka brands —
4883
+ * same exception pattern as LicensePlateInput regulatory colors.
4884
+ *
4885
+ * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
4886
+ * Google: https://developers.google.com/identity/branding-guidelines
4887
+ */
4888
+ .muka-social-sign-in-button {
4889
+ --ssi-white: #ffffff;
4890
+ --ssi-black: #000000;
4891
+ --ssi-google-text-light: #1f1f1f;
4766
4892
 
4767
- .muka-swipe-actions {
4768
- position: relative;
4769
- overflow: hidden;
4770
- touch-action: pan-y;
4771
- -webkit-user-select: none;
4772
- user-select: none;
4773
- background-color: var(--color-surface-level3);
4774
- }
4893
+ display: inline-flex;
4894
+ align-items: center;
4895
+ justify-content: center;
4775
4896
 
4776
- .muka-swipe-actions--disabled {
4777
- touch-action: auto;
4778
- }
4897
+ /* Provider lockup type — matches Figma / HIG, not brand font tokens.
4898
+ * SF Pro Text is OS-provided on Apple platforms (not redistributable).
4899
+ * Google Sans is not freely shippable; Roboto is the closest system fallback. */
4900
+ font-family: inherit;
4901
+ font-weight: 600;
4902
+ text-decoration: none;
4903
+ white-space: nowrap;
4779
4904
 
4780
- /* ─── Row that holds the actual content ────────────────── */
4905
+ border: 1px solid transparent;
4906
+ cursor: pointer;
4907
+ user-select: none;
4908
+ transition: opacity 0.15s ease, filter 0.15s ease;
4781
4909
 
4782
- .muka-swipe-actions__row {
4910
+ outline: none;
4783
4911
  position: relative;
4784
- z-index: 1;
4785
- background-color: inherit;
4786
- will-change: transform;
4912
+ box-sizing: border-box;
4787
4913
  }
4788
4914
 
4789
- /* ─── Action panels — sit beneath the row ──────────────── */
4915
+ .muka-social-sign-in-button--apple {
4916
+ font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
4917
+ Helvetica, Arial, sans-serif;
4918
+ font-weight: 600;
4919
+ }
4790
4920
 
4791
- .muka-swipe-actions__panel {
4792
- position: absolute;
4793
- top: 0;
4794
- bottom: 0;
4795
- display: flex;
4796
- align-items: stretch;
4797
- z-index: 0;
4921
+ .muka-social-sign-in-button--google {
4922
+ font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
4923
+ font-weight: 500;
4798
4924
  }
4799
4925
 
4800
- .muka-swipe-actions__panel--left {
4801
- left: 0;
4926
+ .muka-social-sign-in-button:focus-visible {
4927
+ outline: 2px solid var(--color-border-focus);
4928
+ outline-offset: 2px;
4802
4929
  }
4803
4930
 
4804
- .muka-swipe-actions__panel--right {
4805
- right: 0;
4931
+ /* Sizes — heights align with Button md/lg */
4932
+ .muka-social-sign-in-button--md {
4933
+ padding: 0 var(--button-padding-md-x);
4934
+ border-radius: var(--button-radius-md);
4935
+ font-size: var(--text-label-sm-semibold-fontSize);
4936
+ line-height: var(--text-label-sm-semibold-lineHeight);
4937
+ min-height: 40px;
4938
+ min-width: 240px;
4806
4939
  }
4807
4940
 
4808
- /* ─── Single action button ─────────────────────────────── */
4809
-
4810
- .muka-swipe-actions__button {
4811
- display: flex;
4812
- flex-direction: column;
4813
- align-items: center;
4814
- justify-content: center;
4815
- gap: var(--spacing-1);
4816
- border: none;
4817
- cursor: pointer;
4818
- padding: var(--spacing-2);
4819
- background-color: var(--color-surface-level2);
4820
- color: var(--color-text-default-default);
4821
- font-family: var(--text-label-sm-semibold-fontFamily);
4822
- font-weight: var(--text-label-sm-semibold-fontWeight);
4823
- font-size: var(--text-label-sm-semibold-fontSize);
4824
- line-height: var(--text-label-sm-semibold-lineHeight);
4825
- -webkit-tap-highlight-color: transparent;
4826
- transition: filter 0.12s ease;
4827
- }
4828
-
4829
- .muka-swipe-actions__button:hover {
4830
- filter: brightness(0.95);
4831
- }
4832
-
4833
- .muka-swipe-actions__button:focus-visible {
4834
- outline: 2px solid var(--color-action-default);
4835
- outline-offset: -2px;
4836
- }
4837
-
4838
- .muka-swipe-actions__button-icon {
4839
- display: inline-flex;
4840
- align-items: center;
4841
- justify-content: center;
4842
- }
4843
-
4844
- /* ─── Color variants ───────────────────────────────────── */
4845
-
4846
- .muka-swipe-actions__button--neutral {
4847
- background-color: var(--color-surface-level2);
4848
- color: var(--color-text-default-default);
4849
- }
4850
-
4851
- .muka-swipe-actions__button--primary {
4852
- background-color: var(--color-action-default);
4853
- color: var(--color-text-default-inverse);
4854
- }
4855
-
4856
- .muka-swipe-actions__button--success {
4857
- background-color: var(--color-state-success-default);
4858
- color: var(--color-text-default-inverse);
4859
- }
4860
-
4861
- .muka-swipe-actions__button--warning {
4862
- background-color: var(--color-state-warning-default);
4863
- color: var(--color-text-default-default);
4864
- }
4865
-
4866
- .muka-swipe-actions__button--destructive {
4867
- background-color: var(--color-state-error-default);
4868
- color: var(--color-text-default-inverse);
4869
- }
4870
-
4871
-
4872
- /* SocialSignInButton */
4873
- /*
4874
- * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
4875
- * Google Identity branding) and intentionally fixed across Muka brands —
4876
- * same exception pattern as LicensePlateInput regulatory colors.
4877
- *
4878
- * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
4879
- * Google: https://developers.google.com/identity/branding-guidelines
4880
- */
4881
- .muka-social-sign-in-button {
4882
- --ssi-white: #ffffff;
4883
- --ssi-black: #000000;
4884
- --ssi-google-text-light: #1f1f1f;
4885
-
4886
- display: inline-flex;
4887
- align-items: center;
4888
- justify-content: center;
4889
-
4890
- /* Provider lockup type — matches Figma / HIG, not brand font tokens.
4891
- * SF Pro Text is OS-provided on Apple platforms (not redistributable).
4892
- * Google Sans is not freely shippable; Roboto is the closest system fallback. */
4893
- font-family: inherit;
4894
- font-weight: 600;
4895
- text-decoration: none;
4896
- white-space: nowrap;
4897
-
4898
- border: 1px solid transparent;
4899
- cursor: pointer;
4900
- user-select: none;
4901
- transition: opacity 0.15s ease, filter 0.15s ease;
4902
-
4903
- outline: none;
4904
- position: relative;
4905
- box-sizing: border-box;
4906
- }
4907
-
4908
- .muka-social-sign-in-button--apple {
4909
- font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
4910
- Helvetica, Arial, sans-serif;
4911
- font-weight: 600;
4912
- }
4913
-
4914
- .muka-social-sign-in-button--google {
4915
- font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
4916
- font-weight: 500;
4917
- }
4918
-
4919
- .muka-social-sign-in-button:focus-visible {
4920
- outline: 2px solid var(--color-border-focus);
4921
- outline-offset: 2px;
4922
- }
4923
-
4924
- /* Sizes — heights align with Button md/lg */
4925
- .muka-social-sign-in-button--md {
4926
- padding: 0 var(--button-padding-md-x);
4927
- border-radius: var(--button-radius-md);
4928
- font-size: var(--text-label-sm-semibold-fontSize);
4929
- line-height: var(--text-label-sm-semibold-lineHeight);
4930
- min-height: 40px;
4931
- min-width: 240px;
4932
- }
4933
-
4934
- .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
4935
- padding: 0 var(--button-gap-md);
4936
- }
4941
+ .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
4942
+ padding: 0 var(--button-gap-md);
4943
+ }
4937
4944
 
4938
4945
  .muka-social-sign-in-button--md .muka-social-sign-in-button__icon {
4939
4946
  width: var(--button-icon-md);
@@ -6117,219 +6124,147 @@ body {
6117
6124
  }
6118
6125
 
6119
6126
 
6120
- /* RangeSlider */
6121
- /* RangeSlider Component Styles - Using Muka Design Tokens */
6127
+ /* Radio */
6128
+ /* Radio Component Styles - Using Muka Design Tokens */
6122
6129
 
6123
- .muka-range-slider {
6124
- display: flex;
6125
- flex-direction: column;
6126
- gap: var(--spacing-1);
6127
- width: 100%;
6130
+ /* Wrapper - clickable label container */
6131
+ .muka-radio {
6132
+ display: inline-flex;
6133
+ align-items: center;
6134
+ gap: var(--spacing-4);
6135
+ cursor: pointer;
6136
+ user-select: none;
6128
6137
  }
6129
6138
 
6130
- /* ========================================
6131
- HEADER: label group (label + info + optional) and value readout
6132
- ======================================== */
6133
-
6134
- .muka-range-slider__header {
6135
- display: flex;
6136
- align-items: center;
6137
- justify-content: space-between;
6138
- gap: var(--spacing-2);
6139
- min-height: 24px;
6139
+ .muka-radio--disabled {
6140
+ cursor: not-allowed;
6141
+ opacity: 0.6;
6140
6142
  }
6141
6143
 
6142
- .muka-range-slider__label-group {
6144
+ /* Control container */
6145
+ .muka-radio__control {
6146
+ position: relative;
6143
6147
  display: inline-flex;
6144
6148
  align-items: center;
6145
- gap: var(--spacing-2);
6149
+ justify-content: center;
6150
+ flex-shrink: 0;
6146
6151
  }
6147
6152
 
6148
- .muka-range-slider__label {
6149
- font-family: var(--text-label-md-semibold-fontFamily);
6150
- font-weight: var(--text-label-md-semibold-fontWeight);
6151
- font-size: var(--text-label-md-semibold-fontSize);
6152
- line-height: var(--text-label-md-semibold-lineHeight);
6153
- color: var(--color-text-default-default);
6153
+ /* Hidden native input */
6154
+ .muka-radio__input {
6155
+ position: absolute;
6156
+ width: 1px;
6157
+ height: 1px;
6158
+ padding: 0;
6159
+ margin: -1px;
6160
+ overflow: hidden;
6161
+ clip: rect(0, 0, 0, 0);
6162
+ white-space: nowrap;
6163
+ border: 0;
6154
6164
  }
6155
6165
 
6156
- .muka-range-slider__info {
6157
- color: var(--color-text-subtle-default);
6166
+ /* Visual indicator (circle) */
6167
+ .muka-radio__indicator {
6168
+ display: flex;
6169
+ align-items: center;
6170
+ justify-content: center;
6171
+ width: var(--radio-size-default);
6172
+ height: var(--radio-size-default);
6173
+ border-radius: var(--border-radius-full);
6174
+ background-color: var(--radio-color-default-background);
6175
+ border: var(--border-width-regular) solid var(--radio-color-default-border);
6176
+ transition: all 0.15s ease;
6177
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.15);
6158
6178
  }
6159
6179
 
6160
- .muka-range-slider__optional {
6161
- font-family: var(--text-label-sm-regular-fontFamily);
6162
- font-weight: var(--text-label-sm-regular-fontWeight);
6163
- font-size: var(--text-label-sm-regular-fontSize);
6164
- line-height: var(--text-label-sm-regular-lineHeight);
6165
- color: var(--color-text-subtle-default);
6180
+ /* Size variants */
6181
+ .muka-radio--sm .muka-radio__indicator {
6182
+ width: var(--radio-size-sm);
6183
+ height: var(--radio-size-sm);
6166
6184
  }
6167
6185
 
6168
- .muka-range-slider__value {
6169
- font-family: var(--text-label-md-regular-fontFamily);
6170
- font-weight: var(--text-label-md-regular-fontWeight);
6171
- font-size: var(--text-label-md-regular-fontSize);
6172
- line-height: var(--text-label-md-regular-lineHeight);
6173
- color: var(--color-text-default-default);
6174
- font-variant-numeric: tabular-nums;
6186
+ .muka-radio--lg .muka-radio__indicator {
6187
+ width: var(--radio-size-lg);
6188
+ height: var(--radio-size-lg);
6175
6189
  }
6176
6190
 
6177
- .muka-range-slider__helper {
6178
- margin: 0;
6179
- font-family: var(--text-body-sm-regular-fontFamily);
6180
- font-weight: var(--text-body-sm-regular-fontWeight);
6181
- font-size: var(--text-body-sm-regular-fontSize);
6182
- line-height: var(--text-body-sm-regular-lineHeight);
6183
- color: var(--color-text-subtle-default);
6191
+ /* Inner dot (shown when checked) */
6192
+ .muka-radio__dot {
6193
+ width: var(--radio-dot-size-default);
6194
+ height: var(--radio-dot-size-default);
6195
+ border-radius: var(--border-radius-full);
6196
+ background-color: var(--radio-color-default-dot);
6197
+ transform: scale(0);
6198
+ transition: transform 0.15s ease;
6184
6199
  }
6185
6200
 
6186
- /* ========================================
6187
- TRACK + THUMB
6188
- Native range input, restyled. A thick sunken track holds an accent fill up to
6189
- the current value, with a circular grip handle. The filled portion is driven
6190
- by the inline --muka-range-fill custom property (set from the component value).
6191
- ======================================== */
6192
-
6193
- /* Size variants: track height, thumb diameter and grip geometry */
6194
- .muka-range-slider--sm {
6195
- --muka-range-track-h: 12px;
6196
- --muka-range-thumb: 24px;
6197
- --muka-range-grip-h: 9px;
6198
- }
6199
- .muka-range-slider--md {
6200
- --muka-range-track-h: 16px;
6201
- --muka-range-thumb: 32px;
6202
- --muka-range-grip-h: 12px;
6201
+ .muka-radio--sm .muka-radio__dot {
6202
+ width: var(--radio-dot-size-sm);
6203
+ height: var(--radio-dot-size-sm);
6203
6204
  }
6204
- .muka-range-slider--lg {
6205
- --muka-range-track-h: 20px;
6206
- --muka-range-thumb: 40px;
6207
- --muka-range-grip-h: 15px;
6205
+
6206
+ .muka-radio--lg .muka-radio__dot {
6207
+ width: var(--radio-dot-size-lg);
6208
+ height: var(--radio-dot-size-lg);
6208
6209
  }
6209
6210
 
6210
- .muka-range-slider__bar {
6211
- /* Reserve the full thumb height so the handle never clips the layout. */
6212
- display: flex;
6213
- align-items: center;
6214
- height: var(--muka-range-thumb);
6215
- }
6216
-
6217
- .muka-range-slider__input {
6218
- -webkit-appearance: none;
6219
- appearance: none;
6220
- width: 100%;
6221
- height: var(--muka-range-thumb);
6222
- margin: 0;
6223
- background: transparent;
6224
- cursor: pointer;
6225
-
6226
- /* Grip handle fill + two vertical grip bars, all theme-aware. */
6227
- --muka-range-grip-color: var(--color-text-subtle-default);
6228
- --muka-range-grip-w: 2px;
6229
- --muka-range-grip-gap: 3px;
6211
+ /* Hover state - removed per design */
6230
6212
 
6231
- /* The track fill: action colour up to the value, sunken surface beyond it. */
6232
- --muka-range-track-fill: linear-gradient(
6233
- to right,
6234
- var(--color-action-default) 0,
6235
- var(--color-action-default) var(--muka-range-fill, 0%),
6236
- var(--color-surface-sunken) var(--muka-range-fill, 0%),
6237
- var(--color-surface-sunken) 100%
6238
- );
6213
+ /* Focus state */
6214
+ .muka-radio__input:focus-visible + .muka-radio__indicator {
6215
+ outline: 2px solid var(--color-border-focus);
6216
+ outline-offset: 2px;
6239
6217
  }
6240
6218
 
6241
- .muka-range-slider__input:focus {
6242
- outline: none;
6219
+ /* Checked state */
6220
+ .muka-radio__input:checked + .muka-radio__indicator {
6221
+ background-color: var(--radio-color-checked-background);
6222
+ border-width: var(--border-width-bold);
6223
+ border-color: var(--radio-color-checked-border);
6224
+ box-shadow: none;
6243
6225
  }
6244
6226
 
6245
- /* WebKit / Blink track */
6246
- .muka-range-slider__input::-webkit-slider-runnable-track {
6247
- height: var(--muka-range-track-h);
6248
- border-radius: var(--border-radius-full);
6249
- background-image: var(--muka-range-track-fill);
6250
- border: 1px solid var(--color-border-contrast);
6251
- box-shadow: var(--shadow-sunken);
6227
+ .muka-radio__input:checked + .muka-radio__indicator .muka-radio__dot {
6228
+ background-color: var(--radio-color-checked-dot);
6229
+ transform: scale(1);
6252
6230
  }
6253
6231
 
6254
- /* Firefox track + progress */
6255
- .muka-range-slider__input::-moz-range-track {
6256
- height: var(--muka-range-track-h);
6257
- border-radius: var(--border-radius-full);
6258
- background: var(--color-surface-sunken);
6259
- border: 1px solid var(--color-border-contrast);
6260
- box-shadow: var(--shadow-sunken);
6261
- }
6262
- .muka-range-slider__input::-moz-range-progress {
6263
- height: var(--muka-range-track-h);
6264
- border-radius: var(--border-radius-full);
6265
- background: var(--color-action-default);
6232
+ /* Disabled state */
6233
+ .muka-radio--disabled .muka-radio__indicator {
6234
+ background-color: var(--radio-color-disabled-background);
6235
+ border-color: var(--radio-color-disabled-border);
6236
+ box-shadow: none;
6266
6237
  }
6267
6238
 
6268
- /* WebKit / Blink thumb (vertically centred over the track) */
6269
- .muka-range-slider__input::-webkit-slider-thumb {
6270
- -webkit-appearance: none;
6271
- appearance: none;
6272
- width: var(--muka-range-thumb);
6273
- height: var(--muka-range-thumb);
6274
- margin-top: calc((var(--muka-range-track-h) - var(--muka-range-thumb)) / 2);
6275
- border-radius: var(--border-radius-full);
6276
- border: 1px solid var(--color-border-contrast);
6277
- box-shadow: var(--shadow-level2);
6278
- background-color: var(--color-surface-level1);
6279
- background-image:
6280
- linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color)),
6281
- linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color));
6282
- background-repeat: no-repeat;
6283
- background-size: var(--muka-range-grip-w) var(--muka-range-grip-h), var(--muka-range-grip-w) var(--muka-range-grip-h);
6284
- background-position:
6285
- calc(50% - var(--muka-range-grip-gap)) center,
6286
- calc(50% + var(--muka-range-grip-gap)) center;
6287
- transition: box-shadow 0.15s ease, background-color 0.15s ease;
6239
+ .muka-radio__input:disabled:checked + .muka-radio__indicator .muka-radio__dot {
6240
+ background-color: var(--radio-color-disabled-dot);
6288
6241
  }
6289
6242
 
6290
- /* Firefox thumb */
6291
- .muka-range-slider__input::-moz-range-thumb {
6292
- width: var(--muka-range-thumb);
6293
- height: var(--muka-range-thumb);
6294
- border-radius: var(--border-radius-full);
6295
- border: 1px solid var(--color-border-contrast);
6296
- box-shadow: var(--shadow-level2);
6297
- background-color: var(--color-surface-level1);
6298
- background-image:
6299
- linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color)),
6300
- linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color));
6301
- background-repeat: no-repeat;
6302
- background-size: var(--muka-range-grip-w) var(--muka-range-grip-h), var(--muka-range-grip-w) var(--muka-range-grip-h);
6303
- background-position:
6304
- calc(50% - var(--muka-range-grip-gap)) center,
6305
- calc(50% + var(--muka-range-grip-gap)) center;
6306
- transition: box-shadow 0.15s ease, background-color 0.15s ease;
6243
+ /* Label text */
6244
+ .muka-radio__label {
6245
+ font-family: var(--text-label-lg-regular-fontFamily);
6246
+ font-weight: var(--text-label-lg-regular-fontWeight);
6247
+ font-size: var(--text-label-lg-regular-fontSize);
6248
+ line-height: var(--text-label-lg-regular-lineHeight);
6249
+ color: var(--color-text-default-default);
6307
6250
  }
6308
6251
 
6309
- /* Hover */
6310
- .muka-range-slider__input:hover::-webkit-slider-thumb {
6311
- background-color: var(--color-surface-level1);
6312
- box-shadow: var(--shadow-level3);
6313
- }
6314
- .muka-range-slider__input:hover::-moz-range-thumb {
6315
- background-color: var(--color-surface-level1);
6316
- box-shadow: var(--shadow-level3);
6252
+ .muka-radio--sm .muka-radio__label {
6253
+ font-family: var(--text-label-md-regular-fontFamily);
6254
+ font-weight: var(--text-label-md-regular-fontWeight);
6255
+ font-size: var(--text-label-md-regular-fontSize);
6256
+ line-height: var(--text-label-md-regular-lineHeight);
6317
6257
  }
6318
6258
 
6319
- /* Focus ring */
6320
- .muka-range-slider__input:focus-visible::-webkit-slider-thumb {
6321
- box-shadow: var(--shadow-level2), 0 0 0 3px var(--color-border-focus);
6322
- }
6323
- .muka-range-slider__input:focus-visible::-moz-range-thumb {
6324
- box-shadow: var(--shadow-level2), 0 0 0 3px var(--color-border-focus);
6259
+ .muka-radio--lg .muka-radio__label {
6260
+ font-family: var(--text-label-xl-regular-fontFamily);
6261
+ font-weight: var(--text-label-xl-regular-fontWeight);
6262
+ font-size: var(--text-label-xl-regular-fontSize);
6263
+ line-height: var(--text-label-xl-regular-lineHeight);
6325
6264
  }
6326
6265
 
6327
- /* Disabled */
6328
- .muka-range-slider--disabled {
6329
- opacity: 0.5;
6330
- }
6331
- .muka-range-slider--disabled .muka-range-slider__input {
6332
- cursor: not-allowed;
6266
+ .muka-radio--disabled .muka-radio__label {
6267
+ color: var(--color-text-subtle-default);
6333
6268
  }
6334
6269
 
6335
6270
 
@@ -6476,150 +6411,6 @@ body {
6476
6411
  }
6477
6412
 
6478
6413
 
6479
- /* Radio */
6480
- /* Radio Component Styles - Using Muka Design Tokens */
6481
-
6482
- /* Wrapper - clickable label container */
6483
- .muka-radio {
6484
- display: inline-flex;
6485
- align-items: center;
6486
- gap: var(--spacing-4);
6487
- cursor: pointer;
6488
- user-select: none;
6489
- }
6490
-
6491
- .muka-radio--disabled {
6492
- cursor: not-allowed;
6493
- opacity: 0.6;
6494
- }
6495
-
6496
- /* Control container */
6497
- .muka-radio__control {
6498
- position: relative;
6499
- display: inline-flex;
6500
- align-items: center;
6501
- justify-content: center;
6502
- flex-shrink: 0;
6503
- }
6504
-
6505
- /* Hidden native input */
6506
- .muka-radio__input {
6507
- position: absolute;
6508
- width: 1px;
6509
- height: 1px;
6510
- padding: 0;
6511
- margin: -1px;
6512
- overflow: hidden;
6513
- clip: rect(0, 0, 0, 0);
6514
- white-space: nowrap;
6515
- border: 0;
6516
- }
6517
-
6518
- /* Visual indicator (circle) */
6519
- .muka-radio__indicator {
6520
- display: flex;
6521
- align-items: center;
6522
- justify-content: center;
6523
- width: var(--radio-size-default);
6524
- height: var(--radio-size-default);
6525
- border-radius: var(--border-radius-full);
6526
- background-color: var(--radio-color-default-background);
6527
- border: var(--border-width-regular) solid var(--radio-color-default-border);
6528
- transition: all 0.15s ease;
6529
- box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.15);
6530
- }
6531
-
6532
- /* Size variants */
6533
- .muka-radio--sm .muka-radio__indicator {
6534
- width: var(--radio-size-sm);
6535
- height: var(--radio-size-sm);
6536
- }
6537
-
6538
- .muka-radio--lg .muka-radio__indicator {
6539
- width: var(--radio-size-lg);
6540
- height: var(--radio-size-lg);
6541
- }
6542
-
6543
- /* Inner dot (shown when checked) */
6544
- .muka-radio__dot {
6545
- width: var(--radio-dot-size-default);
6546
- height: var(--radio-dot-size-default);
6547
- border-radius: var(--border-radius-full);
6548
- background-color: var(--radio-color-default-dot);
6549
- transform: scale(0);
6550
- transition: transform 0.15s ease;
6551
- }
6552
-
6553
- .muka-radio--sm .muka-radio__dot {
6554
- width: var(--radio-dot-size-sm);
6555
- height: var(--radio-dot-size-sm);
6556
- }
6557
-
6558
- .muka-radio--lg .muka-radio__dot {
6559
- width: var(--radio-dot-size-lg);
6560
- height: var(--radio-dot-size-lg);
6561
- }
6562
-
6563
- /* Hover state - removed per design */
6564
-
6565
- /* Focus state */
6566
- .muka-radio__input:focus-visible + .muka-radio__indicator {
6567
- outline: 2px solid var(--color-border-focus);
6568
- outline-offset: 2px;
6569
- }
6570
-
6571
- /* Checked state */
6572
- .muka-radio__input:checked + .muka-radio__indicator {
6573
- background-color: var(--radio-color-checked-background);
6574
- border-width: var(--border-width-bold);
6575
- border-color: var(--radio-color-checked-border);
6576
- box-shadow: none;
6577
- }
6578
-
6579
- .muka-radio__input:checked + .muka-radio__indicator .muka-radio__dot {
6580
- background-color: var(--radio-color-checked-dot);
6581
- transform: scale(1);
6582
- }
6583
-
6584
- /* Disabled state */
6585
- .muka-radio--disabled .muka-radio__indicator {
6586
- background-color: var(--radio-color-disabled-background);
6587
- border-color: var(--radio-color-disabled-border);
6588
- box-shadow: none;
6589
- }
6590
-
6591
- .muka-radio__input:disabled:checked + .muka-radio__indicator .muka-radio__dot {
6592
- background-color: var(--radio-color-disabled-dot);
6593
- }
6594
-
6595
- /* Label text */
6596
- .muka-radio__label {
6597
- font-family: var(--text-label-lg-regular-fontFamily);
6598
- font-weight: var(--text-label-lg-regular-fontWeight);
6599
- font-size: var(--text-label-lg-regular-fontSize);
6600
- line-height: var(--text-label-lg-regular-lineHeight);
6601
- color: var(--color-text-default-default);
6602
- }
6603
-
6604
- .muka-radio--sm .muka-radio__label {
6605
- font-family: var(--text-label-md-regular-fontFamily);
6606
- font-weight: var(--text-label-md-regular-fontWeight);
6607
- font-size: var(--text-label-md-regular-fontSize);
6608
- line-height: var(--text-label-md-regular-lineHeight);
6609
- }
6610
-
6611
- .muka-radio--lg .muka-radio__label {
6612
- font-family: var(--text-label-xl-regular-fontFamily);
6613
- font-weight: var(--text-label-xl-regular-fontWeight);
6614
- font-size: var(--text-label-xl-regular-fontSize);
6615
- line-height: var(--text-label-xl-regular-lineHeight);
6616
- }
6617
-
6618
- .muka-radio--disabled .muka-radio__label {
6619
- color: var(--color-text-subtle-default);
6620
- }
6621
-
6622
-
6623
6414
  /* PullToRefresh */
6624
6415
  /* PullToRefresh Component Styles */
6625
6416
 
@@ -7233,98 +7024,314 @@ body {
7233
7024
  line-height: var(--text-body-base-regular-lineHeight);
7234
7025
  color: var(--color-text-default-default);
7235
7026
  }
7236
-
7237
- /* ─── Edit button ────────────────────────────────────────── */
7238
- .muka-progress-accordeon__edit {
7239
- flex-shrink: 0;
7027
+
7028
+ /* ─── Edit button ────────────────────────────────────────── */
7029
+ .muka-progress-accordeon__edit {
7030
+ flex-shrink: 0;
7031
+ }
7032
+
7033
+ /* Wide container shows the labelled button; the icon-only one is hidden */
7034
+ .muka-progress-accordeon__edit--narrow {
7035
+ display: none;
7036
+ }
7037
+
7038
+ /* ─── Content slot ───────────────────────────────────────── */
7039
+ .muka-progress-accordeon__slot {
7040
+ display: flex;
7041
+ flex-direction: column;
7042
+ align-items: stretch;
7043
+ width: 100%;
7044
+ }
7045
+
7046
+ /* ─── Collapse/expand animation (past & upcoming steps) ──────
7047
+ The grid-template-rows 1fr → 0fr technique animates the content to/from its
7048
+ intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7049
+ --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7050
+ .muka-progress-accordeon__slot-wrapper {
7051
+ display: grid;
7052
+ grid-template-rows: 1fr;
7053
+ transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7054
+ }
7055
+
7056
+ .muka-progress-accordeon__slot-wrapper--collapsed {
7057
+ grid-template-rows: 0fr;
7058
+ }
7059
+
7060
+ /* The direct grid child clips and must have NO padding/border of its own —
7061
+ min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7062
+ 0 height (padding on the item would leave a residual gap when collapsed). */
7063
+ .muka-progress-accordeon__slot-clip {
7064
+ overflow: hidden;
7065
+ min-height: 0;
7066
+ }
7067
+
7068
+ /* The header↔content spacing lives on the inner slot (inside the clip region)
7069
+ so it collapses together with the content. */
7070
+ .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7071
+ padding-top: var(--spacing-4);
7072
+ }
7073
+
7074
+ /* ─── Action buttons (current state) ─────────────────────── */
7075
+ .muka-progress-accordeon__actions {
7076
+ display: flex;
7077
+ justify-content: flex-end;
7078
+ gap: var(--spacing-4);
7079
+ width: 100%;
7080
+ }
7081
+
7082
+ .muka-progress-accordeon__action {
7083
+ min-width: 160px;
7084
+ }
7085
+
7086
+ /* ─── Divider ────────────────────────────────────────────── */
7087
+ .muka-progress-accordeon__divider {
7088
+ width: 100%;
7089
+ }
7090
+
7091
+ /* ─── Responsive (narrow container) ──────────────────────── */
7092
+ @container (max-width: 480px) {
7093
+ /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7094
+ 32px step indicator, so nudge the text down to keep a single line centred. */
7095
+ .muka-progress-accordeon__heading {
7096
+ font-size: var(--text-heading-sm-fontSize);
7097
+ line-height: var(--text-heading-sm-lineHeight);
7098
+ padding-top: var(--spacing-1);
7099
+ }
7100
+
7101
+ /* Edit button swaps to the icon-only variant */
7102
+ .muka-progress-accordeon__edit--wide {
7103
+ display: none;
7104
+ }
7105
+
7106
+ .muka-progress-accordeon__edit--narrow {
7107
+ display: inline-flex;
7108
+ }
7109
+
7110
+ /* Action buttons stretch to fill the row */
7111
+ .muka-progress-accordeon__actions {
7112
+ justify-content: stretch;
7113
+ }
7114
+
7115
+ .muka-progress-accordeon__action {
7116
+ flex: 1 0 0;
7117
+ min-width: 0;
7118
+ }
7119
+ }
7120
+
7121
+
7122
+ /* RangeSlider */
7123
+ /* RangeSlider Component Styles - Using Muka Design Tokens */
7124
+
7125
+ .muka-range-slider {
7126
+ display: flex;
7127
+ flex-direction: column;
7128
+ gap: var(--spacing-1);
7129
+ width: 100%;
7130
+ }
7131
+
7132
+ /* ========================================
7133
+ HEADER: label group (label + info + optional) and value readout
7134
+ ======================================== */
7135
+
7136
+ .muka-range-slider__header {
7137
+ display: flex;
7138
+ align-items: center;
7139
+ justify-content: space-between;
7140
+ gap: var(--spacing-2);
7141
+ min-height: 24px;
7142
+ }
7143
+
7144
+ .muka-range-slider__label-group {
7145
+ display: inline-flex;
7146
+ align-items: center;
7147
+ gap: var(--spacing-2);
7148
+ }
7149
+
7150
+ .muka-range-slider__label {
7151
+ font-family: var(--text-label-md-semibold-fontFamily);
7152
+ font-weight: var(--text-label-md-semibold-fontWeight);
7153
+ font-size: var(--text-label-md-semibold-fontSize);
7154
+ line-height: var(--text-label-md-semibold-lineHeight);
7155
+ color: var(--color-text-default-default);
7156
+ }
7157
+
7158
+ .muka-range-slider__info {
7159
+ color: var(--color-text-subtle-default);
7160
+ }
7161
+
7162
+ .muka-range-slider__optional {
7163
+ font-family: var(--text-label-sm-regular-fontFamily);
7164
+ font-weight: var(--text-label-sm-regular-fontWeight);
7165
+ font-size: var(--text-label-sm-regular-fontSize);
7166
+ line-height: var(--text-label-sm-regular-lineHeight);
7167
+ color: var(--color-text-subtle-default);
7168
+ }
7169
+
7170
+ .muka-range-slider__value {
7171
+ font-family: var(--text-label-md-regular-fontFamily);
7172
+ font-weight: var(--text-label-md-regular-fontWeight);
7173
+ font-size: var(--text-label-md-regular-fontSize);
7174
+ line-height: var(--text-label-md-regular-lineHeight);
7175
+ color: var(--color-text-default-default);
7176
+ font-variant-numeric: tabular-nums;
7177
+ }
7178
+
7179
+ .muka-range-slider__helper {
7180
+ margin: 0;
7181
+ font-family: var(--text-body-sm-regular-fontFamily);
7182
+ font-weight: var(--text-body-sm-regular-fontWeight);
7183
+ font-size: var(--text-body-sm-regular-fontSize);
7184
+ line-height: var(--text-body-sm-regular-lineHeight);
7185
+ color: var(--color-text-subtle-default);
7186
+ }
7187
+
7188
+ /* ========================================
7189
+ TRACK + THUMB
7190
+ Native range input, restyled. A thick sunken track holds an accent fill up to
7191
+ the current value, with a circular grip handle. The filled portion is driven
7192
+ by the inline --muka-range-fill custom property (set from the component value).
7193
+ ======================================== */
7194
+
7195
+ /* Size variants: track height, thumb diameter and grip geometry */
7196
+ .muka-range-slider--sm {
7197
+ --muka-range-track-h: 12px;
7198
+ --muka-range-thumb: 24px;
7199
+ --muka-range-grip-h: 9px;
7200
+ }
7201
+ .muka-range-slider--md {
7202
+ --muka-range-track-h: 16px;
7203
+ --muka-range-thumb: 32px;
7204
+ --muka-range-grip-h: 12px;
7205
+ }
7206
+ .muka-range-slider--lg {
7207
+ --muka-range-track-h: 20px;
7208
+ --muka-range-thumb: 40px;
7209
+ --muka-range-grip-h: 15px;
7240
7210
  }
7241
7211
 
7242
- /* Wide container shows the labelled button; the icon-only one is hidden */
7243
- .muka-progress-accordeon__edit--narrow {
7244
- display: none;
7212
+ .muka-range-slider__bar {
7213
+ /* Reserve the full thumb height so the handle never clips the layout. */
7214
+ display: flex;
7215
+ align-items: center;
7216
+ height: var(--muka-range-thumb);
7245
7217
  }
7246
7218
 
7247
- /* ─── Content slot ───────────────────────────────────────── */
7248
- .muka-progress-accordeon__slot {
7249
- display: flex;
7250
- flex-direction: column;
7251
- align-items: stretch;
7219
+ .muka-range-slider__input {
7220
+ -webkit-appearance: none;
7221
+ appearance: none;
7252
7222
  width: 100%;
7253
- }
7223
+ height: var(--muka-range-thumb);
7224
+ margin: 0;
7225
+ background: transparent;
7226
+ cursor: pointer;
7254
7227
 
7255
- /* ─── Collapse/expand animation (past & upcoming steps) ──────
7256
- The grid-template-rows 1fr → 0fr technique animates the content to/from its
7257
- intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7258
- --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7259
- .muka-progress-accordeon__slot-wrapper {
7260
- display: grid;
7261
- grid-template-rows: 1fr;
7262
- transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7263
- }
7228
+ /* Grip handle fill + two vertical grip bars, all theme-aware. */
7229
+ --muka-range-grip-color: var(--color-text-subtle-default);
7230
+ --muka-range-grip-w: 2px;
7231
+ --muka-range-grip-gap: 3px;
7264
7232
 
7265
- .muka-progress-accordeon__slot-wrapper--collapsed {
7266
- grid-template-rows: 0fr;
7233
+ /* The track fill: action colour up to the value, sunken surface beyond it. */
7234
+ --muka-range-track-fill: linear-gradient(
7235
+ to right,
7236
+ var(--color-action-default) 0,
7237
+ var(--color-action-default) var(--muka-range-fill, 0%),
7238
+ var(--color-surface-sunken) var(--muka-range-fill, 0%),
7239
+ var(--color-surface-sunken) 100%
7240
+ );
7267
7241
  }
7268
7242
 
7269
- /* The direct grid child clips and must have NO padding/border of its own —
7270
- min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7271
- 0 height (padding on the item would leave a residual gap when collapsed). */
7272
- .muka-progress-accordeon__slot-clip {
7273
- overflow: hidden;
7274
- min-height: 0;
7243
+ .muka-range-slider__input:focus {
7244
+ outline: none;
7275
7245
  }
7276
7246
 
7277
- /* The header↔content spacing lives on the inner slot (inside the clip region)
7278
- so it collapses together with the content. */
7279
- .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7280
- padding-top: var(--spacing-4);
7247
+ /* WebKit / Blink track */
7248
+ .muka-range-slider__input::-webkit-slider-runnable-track {
7249
+ height: var(--muka-range-track-h);
7250
+ border-radius: var(--border-radius-full);
7251
+ background-image: var(--muka-range-track-fill);
7252
+ border: 1px solid var(--color-border-contrast);
7253
+ box-shadow: var(--shadow-sunken);
7281
7254
  }
7282
7255
 
7283
- /* ─── Action buttons (current state) ─────────────────────── */
7284
- .muka-progress-accordeon__actions {
7285
- display: flex;
7286
- justify-content: flex-end;
7287
- gap: var(--spacing-4);
7288
- width: 100%;
7256
+ /* Firefox track + progress */
7257
+ .muka-range-slider__input::-moz-range-track {
7258
+ height: var(--muka-range-track-h);
7259
+ border-radius: var(--border-radius-full);
7260
+ background: var(--color-surface-sunken);
7261
+ border: 1px solid var(--color-border-contrast);
7262
+ box-shadow: var(--shadow-sunken);
7289
7263
  }
7290
-
7291
- .muka-progress-accordeon__action {
7292
- min-width: 160px;
7264
+ .muka-range-slider__input::-moz-range-progress {
7265
+ height: var(--muka-range-track-h);
7266
+ border-radius: var(--border-radius-full);
7267
+ background: var(--color-action-default);
7293
7268
  }
7294
7269
 
7295
- /* ─── Divider ────────────────────────────────────────────── */
7296
- .muka-progress-accordeon__divider {
7297
- width: 100%;
7270
+ /* WebKit / Blink thumb (vertically centred over the track) */
7271
+ .muka-range-slider__input::-webkit-slider-thumb {
7272
+ -webkit-appearance: none;
7273
+ appearance: none;
7274
+ width: var(--muka-range-thumb);
7275
+ height: var(--muka-range-thumb);
7276
+ margin-top: calc((var(--muka-range-track-h) - var(--muka-range-thumb)) / 2);
7277
+ border-radius: var(--border-radius-full);
7278
+ border: 1px solid var(--color-border-contrast);
7279
+ box-shadow: var(--shadow-level2);
7280
+ background-color: var(--color-surface-level1);
7281
+ background-image:
7282
+ linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color)),
7283
+ linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color));
7284
+ background-repeat: no-repeat;
7285
+ background-size: var(--muka-range-grip-w) var(--muka-range-grip-h), var(--muka-range-grip-w) var(--muka-range-grip-h);
7286
+ background-position:
7287
+ calc(50% - var(--muka-range-grip-gap)) center,
7288
+ calc(50% + var(--muka-range-grip-gap)) center;
7289
+ transition: box-shadow 0.15s ease, background-color 0.15s ease;
7298
7290
  }
7299
7291
 
7300
- /* ─── Responsive (narrow container) ──────────────────────── */
7301
- @container (max-width: 480px) {
7302
- /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7303
- 32px step indicator, so nudge the text down to keep a single line centred. */
7304
- .muka-progress-accordeon__heading {
7305
- font-size: var(--text-heading-sm-fontSize);
7306
- line-height: var(--text-heading-sm-lineHeight);
7307
- padding-top: var(--spacing-1);
7308
- }
7309
-
7310
- /* Edit button swaps to the icon-only variant */
7311
- .muka-progress-accordeon__edit--wide {
7312
- display: none;
7313
- }
7292
+ /* Firefox thumb */
7293
+ .muka-range-slider__input::-moz-range-thumb {
7294
+ width: var(--muka-range-thumb);
7295
+ height: var(--muka-range-thumb);
7296
+ border-radius: var(--border-radius-full);
7297
+ border: 1px solid var(--color-border-contrast);
7298
+ box-shadow: var(--shadow-level2);
7299
+ background-color: var(--color-surface-level1);
7300
+ background-image:
7301
+ linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color)),
7302
+ linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color));
7303
+ background-repeat: no-repeat;
7304
+ background-size: var(--muka-range-grip-w) var(--muka-range-grip-h), var(--muka-range-grip-w) var(--muka-range-grip-h);
7305
+ background-position:
7306
+ calc(50% - var(--muka-range-grip-gap)) center,
7307
+ calc(50% + var(--muka-range-grip-gap)) center;
7308
+ transition: box-shadow 0.15s ease, background-color 0.15s ease;
7309
+ }
7314
7310
 
7315
- .muka-progress-accordeon__edit--narrow {
7316
- display: inline-flex;
7317
- }
7311
+ /* Hover */
7312
+ .muka-range-slider__input:hover::-webkit-slider-thumb {
7313
+ background-color: var(--color-surface-level1);
7314
+ box-shadow: var(--shadow-level3);
7315
+ }
7316
+ .muka-range-slider__input:hover::-moz-range-thumb {
7317
+ background-color: var(--color-surface-level1);
7318
+ box-shadow: var(--shadow-level3);
7319
+ }
7318
7320
 
7319
- /* Action buttons stretch to fill the row */
7320
- .muka-progress-accordeon__actions {
7321
- justify-content: stretch;
7322
- }
7321
+ /* Focus ring */
7322
+ .muka-range-slider__input:focus-visible::-webkit-slider-thumb {
7323
+ box-shadow: var(--shadow-level2), 0 0 0 3px var(--color-border-focus);
7324
+ }
7325
+ .muka-range-slider__input:focus-visible::-moz-range-thumb {
7326
+ box-shadow: var(--shadow-level2), 0 0 0 3px var(--color-border-focus);
7327
+ }
7323
7328
 
7324
- .muka-progress-accordeon__action {
7325
- flex: 1 0 0;
7326
- min-width: 0;
7327
- }
7329
+ /* Disabled */
7330
+ .muka-range-slider--disabled {
7331
+ opacity: 0.5;
7332
+ }
7333
+ .muka-range-slider--disabled .muka-range-slider__input {
7334
+ cursor: not-allowed;
7328
7335
  }
7329
7336
 
7330
7337
 
@@ -7924,36 +7931,6 @@ body {
7924
7931
  }
7925
7932
 
7926
7933
 
7927
- /* PhotoDraftStrip */
7928
- /* PhotoDraftStrip Component Styles */
7929
-
7930
- .muka-photo-draft-strip {
7931
- display: flex;
7932
- align-items: center;
7933
- gap: var(--spacing-3);
7934
- width: 100%;
7935
- padding: var(--spacing-2) 0;
7936
- }
7937
-
7938
- .muka-photo-draft-strip__track {
7939
- display: flex;
7940
- gap: var(--spacing-2);
7941
- flex: 1 1 auto;
7942
- min-width: 0;
7943
- overflow-x: auto;
7944
- scroll-behavior: smooth;
7945
- scrollbar-width: none;
7946
- }
7947
-
7948
- .muka-photo-draft-strip__track::-webkit-scrollbar {
7949
- display: none;
7950
- }
7951
-
7952
- .muka-photo-draft-strip__item {
7953
- flex: 0 0 auto;
7954
- }
7955
-
7956
-
7957
7934
  /* Pagination */
7958
7935
  /* Pagination Component Styles */
7959
7936
 
@@ -8056,6 +8033,36 @@ body {
8056
8033
  }
8057
8034
 
8058
8035
 
8036
+ /* PhotoDraftStrip */
8037
+ /* PhotoDraftStrip Component Styles */
8038
+
8039
+ .muka-photo-draft-strip {
8040
+ display: flex;
8041
+ align-items: center;
8042
+ gap: var(--spacing-3);
8043
+ width: 100%;
8044
+ padding: var(--spacing-2) 0;
8045
+ }
8046
+
8047
+ .muka-photo-draft-strip__track {
8048
+ display: flex;
8049
+ gap: var(--spacing-2);
8050
+ flex: 1 1 auto;
8051
+ min-width: 0;
8052
+ overflow-x: auto;
8053
+ scroll-behavior: smooth;
8054
+ scrollbar-width: none;
8055
+ }
8056
+
8057
+ .muka-photo-draft-strip__track::-webkit-scrollbar {
8058
+ display: none;
8059
+ }
8060
+
8061
+ .muka-photo-draft-strip__item {
8062
+ flex: 0 0 auto;
8063
+ }
8064
+
8065
+
8059
8066
  /* NumberInput */
8060
8067
  /* NumberInput — reuses Input field styles (../Input/Input.css). */
8061
8068
  /* Only the prefix/suffix affixes are NumberInput-specific. */
@@ -14598,7 +14605,8 @@ button.muka-chat-photo-grid__tile:focus-visible {
14598
14605
  align-items: center;
14599
14606
  justify-content: center;
14600
14607
  flex-shrink: 0;
14601
- overflow: hidden;
14608
+ /* No overflow clipping: the status dot sits on the edge. The image and the
14609
+ loading shimmer round themselves to the avatar shape instead. */
14602
14610
  user-select: none;
14603
14611
  vertical-align: middle;
14604
14612
  background-color: var(--avatar-color-background-default);
@@ -14671,9 +14679,10 @@ button.muka-chat-photo-grid__tile:focus-visible {
14671
14679
  border-radius: var(--avatar-radius-square-sm);
14672
14680
  }
14673
14681
 
14674
- /* 4xs is too small for initials, the fallback icon or a status dot:
14682
+ /* 4xs is too small for initials, an icon, the fallback icon or a status dot:
14675
14683
  it shows the picture, or the plain background */
14676
14684
  .muka-avatar--4xs .muka-avatar__initials,
14685
+ .muka-avatar--4xs .muka-avatar__icon,
14677
14686
  .muka-avatar--4xs .muka-avatar__fallback,
14678
14687
  .muka-avatar--4xs .muka-avatar__status {
14679
14688
  display: none;
@@ -14709,38 +14718,59 @@ button.muka-chat-photo-grid__tile:focus-visible {
14709
14718
  .muka-avatar__skeleton {
14710
14719
  position: absolute;
14711
14720
  inset: 0;
14721
+ border-radius: inherit;
14712
14722
  background: linear-gradient(
14713
14723
  90deg,
14714
14724
  transparent 0%,
14715
14725
  var(--color-surface-level1) 50%,
14716
14726
  transparent 100%
14717
- );
14727
+ ) no-repeat;
14728
+ background-size: 50% 100%;
14718
14729
  animation: avatar-loading 1.5s ease-in-out infinite;
14719
14730
  }
14720
14731
 
14732
+ /* The highlight sweeps by background position, so it stays inside the
14733
+ rounded shape without the avatar clipping its overflow */
14721
14734
  @keyframes avatar-loading {
14722
14735
  0% {
14723
- transform: translateX(-100%);
14736
+ background-position: -100% 0;
14724
14737
  }
14725
14738
  100% {
14726
- transform: translateX(100%);
14739
+ background-position: 200% 0;
14727
14740
  }
14728
14741
  }
14729
14742
 
14730
14743
  /* Avatar content */
14731
14744
  .muka-avatar__image {
14745
+ border-radius: inherit;
14732
14746
  width: 100%;
14733
14747
  height: 100%;
14734
14748
  object-fit: cover;
14735
14749
  display: block;
14736
14750
  }
14737
14751
 
14752
+ /* Icon slot: a fixed icon size per avatar size, in the initials colour
14753
+ (subtle text) */
14738
14754
  .muka-avatar__icon {
14739
- width: 60%;
14740
- height: 60%;
14741
14755
  display: flex;
14742
14756
  align-items: center;
14743
14757
  justify-content: center;
14758
+ color: var(--avatar-color-foreground-default);
14759
+ }
14760
+
14761
+ .muka-avatar--3xs .muka-avatar__icon { width: var(--avatar-icon-size-3xs); height: var(--avatar-icon-size-3xs); }
14762
+ .muka-avatar--2xs .muka-avatar__icon { width: var(--avatar-icon-size-2xs); height: var(--avatar-icon-size-2xs); }
14763
+ .muka-avatar--xs .muka-avatar__icon { width: var(--avatar-icon-size-xs); height: var(--avatar-icon-size-xs); }
14764
+ .muka-avatar--sm .muka-avatar__icon { width: var(--avatar-icon-size-sm); height: var(--avatar-icon-size-sm); }
14765
+ .muka-avatar--md .muka-avatar__icon { width: var(--avatar-icon-size-md); height: var(--avatar-icon-size-md); }
14766
+ .muka-avatar--lg .muka-avatar__icon { width: var(--avatar-icon-size-lg); height: var(--avatar-icon-size-lg); }
14767
+ .muka-avatar--xl .muka-avatar__icon { width: var(--avatar-icon-size-xl); height: var(--avatar-icon-size-xl); }
14768
+
14769
+ /* A Muka Icon fills the slot and takes its colour (its own `color` prop still wins) */
14770
+ .muka-avatar__icon .muka-icon {
14771
+ width: 100%;
14772
+ height: 100%;
14773
+ color: inherit;
14744
14774
  }
14745
14775
 
14746
14776
  .muka-avatar__icon svg {