@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.
@@ -2052,9 +2052,16 @@ body {
2052
2052
  --avatar-size-md: 4rem;
2053
2053
  --avatar-size-lg: 5rem;
2054
2054
  --avatar-size-xl: 7rem;
2055
+ --avatar-icon-size-3xs: 1rem;
2056
+ --avatar-icon-size-2xs: 1.25rem;
2057
+ --avatar-icon-size-xs: 1.5rem;
2058
+ --avatar-icon-size-sm: 2rem;
2059
+ --avatar-icon-size-md: 2.5rem;
2060
+ --avatar-icon-size-lg: 3rem;
2061
+ --avatar-icon-size-xl: 4rem;
2055
2062
  --avatar-color-background-default: #232326;
2056
2063
  --avatar-color-background-loading: #2b2b30;
2057
- --avatar-color-foreground-default: #e6e6ea;
2064
+ --avatar-color-foreground-default: #737387;
2058
2065
  --avatar-color-foreground-muted: #4c4c57;
2059
2066
  --avatar-color-status-online: #58d5ba;
2060
2067
  --avatar-color-status-offline: #4c4c57;
@@ -2462,38 +2469,6 @@ body {
2462
2469
  }
2463
2470
 
2464
2471
 
2465
- /* VoiceMessage */
2466
- /* VoiceMessage Component Styles */
2467
-
2468
- .muka-voice-message {
2469
- display: flex;
2470
- align-items: center;
2471
- gap: var(--spacing-3);
2472
- width: 100%;
2473
- min-width: min(16rem, 60vw);
2474
- }
2475
-
2476
- .muka-voice-message__wave {
2477
- flex: 1 1 auto;
2478
- min-width: 0;
2479
- }
2480
-
2481
- .muka-voice-message__time {
2482
- flex: 0 0 auto;
2483
- white-space: nowrap;
2484
- font-size: var(--text-label-sm-fontSize, 0.75rem);
2485
- line-height: var(--text-label-sm-lineHeight, 1);
2486
- font-variant-numeric: tabular-nums;
2487
- color: var(--color-text-subtle-default);
2488
- }
2489
-
2490
- /* On the tinted own bubble the surface is the action color, so the timer flips
2491
- * to the inverse text token for contrast. */
2492
- .muka-voice-message--own .muka-voice-message__time {
2493
- color: var(--color-text-default-inverse);
2494
- }
2495
-
2496
-
2497
2472
  /* View */
2498
2473
  /* View Component Styles */
2499
2474
 
@@ -2604,6 +2579,38 @@ body {
2604
2579
  }
2605
2580
 
2606
2581
 
2582
+ /* VoiceMessage */
2583
+ /* VoiceMessage Component Styles */
2584
+
2585
+ .muka-voice-message {
2586
+ display: flex;
2587
+ align-items: center;
2588
+ gap: var(--spacing-3);
2589
+ width: 100%;
2590
+ min-width: min(16rem, 60vw);
2591
+ }
2592
+
2593
+ .muka-voice-message__wave {
2594
+ flex: 1 1 auto;
2595
+ min-width: 0;
2596
+ }
2597
+
2598
+ .muka-voice-message__time {
2599
+ flex: 0 0 auto;
2600
+ white-space: nowrap;
2601
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
2602
+ line-height: var(--text-label-sm-lineHeight, 1);
2603
+ font-variant-numeric: tabular-nums;
2604
+ color: var(--color-text-subtle-default);
2605
+ }
2606
+
2607
+ /* On the tinted own bubble the surface is the action color, so the timer flips
2608
+ * to the inverse text token for contrast. */
2609
+ .muka-voice-message--own .muka-voice-message__time {
2610
+ color: var(--color-text-default-inverse);
2611
+ }
2612
+
2613
+
2607
2614
  /* Typography */
2608
2615
  .muka-typography-catalog {
2609
2616
  display: flex;
@@ -4630,6 +4637,114 @@ body {
4630
4637
  }
4631
4638
 
4632
4639
 
4640
+ /* SwipeActions */
4641
+ /* SwipeActions Component Styles */
4642
+
4643
+ .muka-swipe-actions {
4644
+ position: relative;
4645
+ overflow: hidden;
4646
+ touch-action: pan-y;
4647
+ -webkit-user-select: none;
4648
+ user-select: none;
4649
+ background-color: var(--color-surface-level3);
4650
+ }
4651
+
4652
+ .muka-swipe-actions--disabled {
4653
+ touch-action: auto;
4654
+ }
4655
+
4656
+ /* ─── Row that holds the actual content ────────────────── */
4657
+
4658
+ .muka-swipe-actions__row {
4659
+ position: relative;
4660
+ z-index: 1;
4661
+ background-color: inherit;
4662
+ will-change: transform;
4663
+ }
4664
+
4665
+ /* ─── Action panels — sit beneath the row ──────────────── */
4666
+
4667
+ .muka-swipe-actions__panel {
4668
+ position: absolute;
4669
+ top: 0;
4670
+ bottom: 0;
4671
+ display: flex;
4672
+ align-items: stretch;
4673
+ z-index: 0;
4674
+ }
4675
+
4676
+ .muka-swipe-actions__panel--left {
4677
+ left: 0;
4678
+ }
4679
+
4680
+ .muka-swipe-actions__panel--right {
4681
+ right: 0;
4682
+ }
4683
+
4684
+ /* ─── Single action button ─────────────────────────────── */
4685
+
4686
+ .muka-swipe-actions__button {
4687
+ display: flex;
4688
+ flex-direction: column;
4689
+ align-items: center;
4690
+ justify-content: center;
4691
+ gap: var(--spacing-1);
4692
+ border: none;
4693
+ cursor: pointer;
4694
+ padding: var(--spacing-2);
4695
+ background-color: var(--color-surface-level2);
4696
+ color: var(--color-text-default-default);
4697
+ font-family: var(--text-label-sm-semibold-fontFamily);
4698
+ font-weight: var(--text-label-sm-semibold-fontWeight);
4699
+ font-size: var(--text-label-sm-semibold-fontSize);
4700
+ line-height: var(--text-label-sm-semibold-lineHeight);
4701
+ -webkit-tap-highlight-color: transparent;
4702
+ transition: filter 0.12s ease;
4703
+ }
4704
+
4705
+ .muka-swipe-actions__button:hover {
4706
+ filter: brightness(0.95);
4707
+ }
4708
+
4709
+ .muka-swipe-actions__button:focus-visible {
4710
+ outline: 2px solid var(--color-action-default);
4711
+ outline-offset: -2px;
4712
+ }
4713
+
4714
+ .muka-swipe-actions__button-icon {
4715
+ display: inline-flex;
4716
+ align-items: center;
4717
+ justify-content: center;
4718
+ }
4719
+
4720
+ /* ─── Color variants ───────────────────────────────────── */
4721
+
4722
+ .muka-swipe-actions__button--neutral {
4723
+ background-color: var(--color-surface-level2);
4724
+ color: var(--color-text-default-default);
4725
+ }
4726
+
4727
+ .muka-swipe-actions__button--primary {
4728
+ background-color: var(--color-action-default);
4729
+ color: var(--color-text-default-inverse);
4730
+ }
4731
+
4732
+ .muka-swipe-actions__button--success {
4733
+ background-color: var(--color-state-success-default);
4734
+ color: var(--color-text-default-inverse);
4735
+ }
4736
+
4737
+ .muka-swipe-actions__button--warning {
4738
+ background-color: var(--color-state-warning-default);
4739
+ color: var(--color-text-default-default);
4740
+ }
4741
+
4742
+ .muka-swipe-actions__button--destructive {
4743
+ background-color: var(--color-state-error-default);
4744
+ color: var(--color-text-default-inverse);
4745
+ }
4746
+
4747
+
4633
4748
  /* Spinner */
4634
4749
  /* Spinner Component Styles */
4635
4750
 
@@ -4793,179 +4908,71 @@ body {
4793
4908
  }
4794
4909
 
4795
4910
 
4796
- /* SwipeActions */
4797
- /* SwipeActions Component Styles */
4911
+ /* SocialSignInButton */
4912
+ /*
4913
+ * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
4914
+ * Google Identity branding) and intentionally fixed across Muka brands —
4915
+ * same exception pattern as LicensePlateInput regulatory colors.
4916
+ *
4917
+ * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
4918
+ * Google: https://developers.google.com/identity/branding-guidelines
4919
+ */
4920
+ .muka-social-sign-in-button {
4921
+ --ssi-white: #ffffff;
4922
+ --ssi-black: #000000;
4923
+ --ssi-google-text-light: #1f1f1f;
4798
4924
 
4799
- .muka-swipe-actions {
4800
- position: relative;
4801
- overflow: hidden;
4802
- touch-action: pan-y;
4803
- -webkit-user-select: none;
4804
- user-select: none;
4805
- background-color: var(--color-surface-level3);
4806
- }
4925
+ display: inline-flex;
4926
+ align-items: center;
4927
+ justify-content: center;
4807
4928
 
4808
- .muka-swipe-actions--disabled {
4809
- touch-action: auto;
4810
- }
4929
+ /* Provider lockup type — matches Figma / HIG, not brand font tokens.
4930
+ * SF Pro Text is OS-provided on Apple platforms (not redistributable).
4931
+ * Google Sans is not freely shippable; Roboto is the closest system fallback. */
4932
+ font-family: inherit;
4933
+ font-weight: 600;
4934
+ text-decoration: none;
4935
+ white-space: nowrap;
4811
4936
 
4812
- /* ─── Row that holds the actual content ────────────────── */
4937
+ border: 1px solid transparent;
4938
+ cursor: pointer;
4939
+ user-select: none;
4940
+ transition: opacity 0.15s ease, filter 0.15s ease;
4813
4941
 
4814
- .muka-swipe-actions__row {
4942
+ outline: none;
4815
4943
  position: relative;
4816
- z-index: 1;
4817
- background-color: inherit;
4818
- will-change: transform;
4944
+ box-sizing: border-box;
4819
4945
  }
4820
4946
 
4821
- /* ─── Action panels — sit beneath the row ──────────────── */
4947
+ .muka-social-sign-in-button--apple {
4948
+ font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
4949
+ Helvetica, Arial, sans-serif;
4950
+ font-weight: 600;
4951
+ }
4822
4952
 
4823
- .muka-swipe-actions__panel {
4824
- position: absolute;
4825
- top: 0;
4826
- bottom: 0;
4827
- display: flex;
4828
- align-items: stretch;
4829
- z-index: 0;
4953
+ .muka-social-sign-in-button--google {
4954
+ font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
4955
+ font-weight: 500;
4830
4956
  }
4831
4957
 
4832
- .muka-swipe-actions__panel--left {
4833
- left: 0;
4958
+ .muka-social-sign-in-button:focus-visible {
4959
+ outline: 2px solid var(--color-border-focus);
4960
+ outline-offset: 2px;
4834
4961
  }
4835
4962
 
4836
- .muka-swipe-actions__panel--right {
4837
- right: 0;
4963
+ /* Sizes — heights align with Button md/lg */
4964
+ .muka-social-sign-in-button--md {
4965
+ padding: 0 var(--button-padding-md-x);
4966
+ border-radius: var(--button-radius-md);
4967
+ font-size: var(--text-label-sm-semibold-fontSize);
4968
+ line-height: var(--text-label-sm-semibold-lineHeight);
4969
+ min-height: 40px;
4970
+ min-width: 240px;
4838
4971
  }
4839
4972
 
4840
- /* ─── Single action button ─────────────────────────────── */
4841
-
4842
- .muka-swipe-actions__button {
4843
- display: flex;
4844
- flex-direction: column;
4845
- align-items: center;
4846
- justify-content: center;
4847
- gap: var(--spacing-1);
4848
- border: none;
4849
- cursor: pointer;
4850
- padding: var(--spacing-2);
4851
- background-color: var(--color-surface-level2);
4852
- color: var(--color-text-default-default);
4853
- font-family: var(--text-label-sm-semibold-fontFamily);
4854
- font-weight: var(--text-label-sm-semibold-fontWeight);
4855
- font-size: var(--text-label-sm-semibold-fontSize);
4856
- line-height: var(--text-label-sm-semibold-lineHeight);
4857
- -webkit-tap-highlight-color: transparent;
4858
- transition: filter 0.12s ease;
4859
- }
4860
-
4861
- .muka-swipe-actions__button:hover {
4862
- filter: brightness(0.95);
4863
- }
4864
-
4865
- .muka-swipe-actions__button:focus-visible {
4866
- outline: 2px solid var(--color-action-default);
4867
- outline-offset: -2px;
4868
- }
4869
-
4870
- .muka-swipe-actions__button-icon {
4871
- display: inline-flex;
4872
- align-items: center;
4873
- justify-content: center;
4874
- }
4875
-
4876
- /* ─── Color variants ───────────────────────────────────── */
4877
-
4878
- .muka-swipe-actions__button--neutral {
4879
- background-color: var(--color-surface-level2);
4880
- color: var(--color-text-default-default);
4881
- }
4882
-
4883
- .muka-swipe-actions__button--primary {
4884
- background-color: var(--color-action-default);
4885
- color: var(--color-text-default-inverse);
4886
- }
4887
-
4888
- .muka-swipe-actions__button--success {
4889
- background-color: var(--color-state-success-default);
4890
- color: var(--color-text-default-inverse);
4891
- }
4892
-
4893
- .muka-swipe-actions__button--warning {
4894
- background-color: var(--color-state-warning-default);
4895
- color: var(--color-text-default-default);
4896
- }
4897
-
4898
- .muka-swipe-actions__button--destructive {
4899
- background-color: var(--color-state-error-default);
4900
- color: var(--color-text-default-inverse);
4901
- }
4902
-
4903
-
4904
- /* SocialSignInButton */
4905
- /*
4906
- * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
4907
- * Google Identity branding) and intentionally fixed across Muka brands —
4908
- * same exception pattern as LicensePlateInput regulatory colors.
4909
- *
4910
- * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
4911
- * Google: https://developers.google.com/identity/branding-guidelines
4912
- */
4913
- .muka-social-sign-in-button {
4914
- --ssi-white: #ffffff;
4915
- --ssi-black: #000000;
4916
- --ssi-google-text-light: #1f1f1f;
4917
-
4918
- display: inline-flex;
4919
- align-items: center;
4920
- justify-content: center;
4921
-
4922
- /* Provider lockup type — matches Figma / HIG, not brand font tokens.
4923
- * SF Pro Text is OS-provided on Apple platforms (not redistributable).
4924
- * Google Sans is not freely shippable; Roboto is the closest system fallback. */
4925
- font-family: inherit;
4926
- font-weight: 600;
4927
- text-decoration: none;
4928
- white-space: nowrap;
4929
-
4930
- border: 1px solid transparent;
4931
- cursor: pointer;
4932
- user-select: none;
4933
- transition: opacity 0.15s ease, filter 0.15s ease;
4934
-
4935
- outline: none;
4936
- position: relative;
4937
- box-sizing: border-box;
4938
- }
4939
-
4940
- .muka-social-sign-in-button--apple {
4941
- font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
4942
- Helvetica, Arial, sans-serif;
4943
- font-weight: 600;
4944
- }
4945
-
4946
- .muka-social-sign-in-button--google {
4947
- font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
4948
- font-weight: 500;
4949
- }
4950
-
4951
- .muka-social-sign-in-button:focus-visible {
4952
- outline: 2px solid var(--color-border-focus);
4953
- outline-offset: 2px;
4954
- }
4955
-
4956
- /* Sizes — heights align with Button md/lg */
4957
- .muka-social-sign-in-button--md {
4958
- padding: 0 var(--button-padding-md-x);
4959
- border-radius: var(--button-radius-md);
4960
- font-size: var(--text-label-sm-semibold-fontSize);
4961
- line-height: var(--text-label-sm-semibold-lineHeight);
4962
- min-height: 40px;
4963
- min-width: 240px;
4964
- }
4965
-
4966
- .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
4967
- padding: 0 var(--button-gap-md);
4968
- }
4973
+ .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
4974
+ padding: 0 var(--button-gap-md);
4975
+ }
4969
4976
 
4970
4977
  .muka-social-sign-in-button--md .muka-social-sign-in-button__icon {
4971
4978
  width: var(--button-icon-md);
@@ -6149,219 +6156,147 @@ body {
6149
6156
  }
6150
6157
 
6151
6158
 
6152
- /* RangeSlider */
6153
- /* RangeSlider Component Styles - Using Muka Design Tokens */
6159
+ /* Radio */
6160
+ /* Radio Component Styles - Using Muka Design Tokens */
6154
6161
 
6155
- .muka-range-slider {
6156
- display: flex;
6157
- flex-direction: column;
6158
- gap: var(--spacing-1);
6159
- width: 100%;
6162
+ /* Wrapper - clickable label container */
6163
+ .muka-radio {
6164
+ display: inline-flex;
6165
+ align-items: center;
6166
+ gap: var(--spacing-4);
6167
+ cursor: pointer;
6168
+ user-select: none;
6160
6169
  }
6161
6170
 
6162
- /* ========================================
6163
- HEADER: label group (label + info + optional) and value readout
6164
- ======================================== */
6165
-
6166
- .muka-range-slider__header {
6167
- display: flex;
6168
- align-items: center;
6169
- justify-content: space-between;
6170
- gap: var(--spacing-2);
6171
- min-height: 24px;
6171
+ .muka-radio--disabled {
6172
+ cursor: not-allowed;
6173
+ opacity: 0.6;
6172
6174
  }
6173
6175
 
6174
- .muka-range-slider__label-group {
6176
+ /* Control container */
6177
+ .muka-radio__control {
6178
+ position: relative;
6175
6179
  display: inline-flex;
6176
6180
  align-items: center;
6177
- gap: var(--spacing-2);
6181
+ justify-content: center;
6182
+ flex-shrink: 0;
6178
6183
  }
6179
6184
 
6180
- .muka-range-slider__label {
6181
- font-family: var(--text-label-md-semibold-fontFamily);
6182
- font-weight: var(--text-label-md-semibold-fontWeight);
6183
- font-size: var(--text-label-md-semibold-fontSize);
6184
- line-height: var(--text-label-md-semibold-lineHeight);
6185
- color: var(--color-text-default-default);
6185
+ /* Hidden native input */
6186
+ .muka-radio__input {
6187
+ position: absolute;
6188
+ width: 1px;
6189
+ height: 1px;
6190
+ padding: 0;
6191
+ margin: -1px;
6192
+ overflow: hidden;
6193
+ clip: rect(0, 0, 0, 0);
6194
+ white-space: nowrap;
6195
+ border: 0;
6186
6196
  }
6187
6197
 
6188
- .muka-range-slider__info {
6189
- color: var(--color-text-subtle-default);
6198
+ /* Visual indicator (circle) */
6199
+ .muka-radio__indicator {
6200
+ display: flex;
6201
+ align-items: center;
6202
+ justify-content: center;
6203
+ width: var(--radio-size-default);
6204
+ height: var(--radio-size-default);
6205
+ border-radius: var(--border-radius-full);
6206
+ background-color: var(--radio-color-default-background);
6207
+ border: var(--border-width-regular) solid var(--radio-color-default-border);
6208
+ transition: all 0.15s ease;
6209
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.15);
6190
6210
  }
6191
6211
 
6192
- .muka-range-slider__optional {
6193
- font-family: var(--text-label-sm-regular-fontFamily);
6194
- font-weight: var(--text-label-sm-regular-fontWeight);
6195
- font-size: var(--text-label-sm-regular-fontSize);
6196
- line-height: var(--text-label-sm-regular-lineHeight);
6197
- color: var(--color-text-subtle-default);
6212
+ /* Size variants */
6213
+ .muka-radio--sm .muka-radio__indicator {
6214
+ width: var(--radio-size-sm);
6215
+ height: var(--radio-size-sm);
6198
6216
  }
6199
6217
 
6200
- .muka-range-slider__value {
6201
- font-family: var(--text-label-md-regular-fontFamily);
6202
- font-weight: var(--text-label-md-regular-fontWeight);
6203
- font-size: var(--text-label-md-regular-fontSize);
6204
- line-height: var(--text-label-md-regular-lineHeight);
6205
- color: var(--color-text-default-default);
6206
- font-variant-numeric: tabular-nums;
6218
+ .muka-radio--lg .muka-radio__indicator {
6219
+ width: var(--radio-size-lg);
6220
+ height: var(--radio-size-lg);
6207
6221
  }
6208
6222
 
6209
- .muka-range-slider__helper {
6210
- margin: 0;
6211
- font-family: var(--text-body-sm-regular-fontFamily);
6212
- font-weight: var(--text-body-sm-regular-fontWeight);
6213
- font-size: var(--text-body-sm-regular-fontSize);
6214
- line-height: var(--text-body-sm-regular-lineHeight);
6215
- color: var(--color-text-subtle-default);
6223
+ /* Inner dot (shown when checked) */
6224
+ .muka-radio__dot {
6225
+ width: var(--radio-dot-size-default);
6226
+ height: var(--radio-dot-size-default);
6227
+ border-radius: var(--border-radius-full);
6228
+ background-color: var(--radio-color-default-dot);
6229
+ transform: scale(0);
6230
+ transition: transform 0.15s ease;
6216
6231
  }
6217
6232
 
6218
- /* ========================================
6219
- TRACK + THUMB
6220
- Native range input, restyled. A thick sunken track holds an accent fill up to
6221
- the current value, with a circular grip handle. The filled portion is driven
6222
- by the inline --muka-range-fill custom property (set from the component value).
6223
- ======================================== */
6224
-
6225
- /* Size variants: track height, thumb diameter and grip geometry */
6226
- .muka-range-slider--sm {
6227
- --muka-range-track-h: 12px;
6228
- --muka-range-thumb: 24px;
6229
- --muka-range-grip-h: 9px;
6230
- }
6231
- .muka-range-slider--md {
6232
- --muka-range-track-h: 16px;
6233
- --muka-range-thumb: 32px;
6234
- --muka-range-grip-h: 12px;
6233
+ .muka-radio--sm .muka-radio__dot {
6234
+ width: var(--radio-dot-size-sm);
6235
+ height: var(--radio-dot-size-sm);
6235
6236
  }
6236
- .muka-range-slider--lg {
6237
- --muka-range-track-h: 20px;
6238
- --muka-range-thumb: 40px;
6239
- --muka-range-grip-h: 15px;
6237
+
6238
+ .muka-radio--lg .muka-radio__dot {
6239
+ width: var(--radio-dot-size-lg);
6240
+ height: var(--radio-dot-size-lg);
6240
6241
  }
6241
6242
 
6242
- .muka-range-slider__bar {
6243
- /* Reserve the full thumb height so the handle never clips the layout. */
6244
- display: flex;
6245
- align-items: center;
6246
- height: var(--muka-range-thumb);
6247
- }
6248
-
6249
- .muka-range-slider__input {
6250
- -webkit-appearance: none;
6251
- appearance: none;
6252
- width: 100%;
6253
- height: var(--muka-range-thumb);
6254
- margin: 0;
6255
- background: transparent;
6256
- cursor: pointer;
6257
-
6258
- /* Grip handle fill + two vertical grip bars, all theme-aware. */
6259
- --muka-range-grip-color: var(--color-text-subtle-default);
6260
- --muka-range-grip-w: 2px;
6261
- --muka-range-grip-gap: 3px;
6243
+ /* Hover state - removed per design */
6262
6244
 
6263
- /* The track fill: action colour up to the value, sunken surface beyond it. */
6264
- --muka-range-track-fill: linear-gradient(
6265
- to right,
6266
- var(--color-action-default) 0,
6267
- var(--color-action-default) var(--muka-range-fill, 0%),
6268
- var(--color-surface-sunken) var(--muka-range-fill, 0%),
6269
- var(--color-surface-sunken) 100%
6270
- );
6245
+ /* Focus state */
6246
+ .muka-radio__input:focus-visible + .muka-radio__indicator {
6247
+ outline: 2px solid var(--color-border-focus);
6248
+ outline-offset: 2px;
6271
6249
  }
6272
6250
 
6273
- .muka-range-slider__input:focus {
6274
- outline: none;
6251
+ /* Checked state */
6252
+ .muka-radio__input:checked + .muka-radio__indicator {
6253
+ background-color: var(--radio-color-checked-background);
6254
+ border-width: var(--border-width-bold);
6255
+ border-color: var(--radio-color-checked-border);
6256
+ box-shadow: none;
6275
6257
  }
6276
6258
 
6277
- /* WebKit / Blink track */
6278
- .muka-range-slider__input::-webkit-slider-runnable-track {
6279
- height: var(--muka-range-track-h);
6280
- border-radius: var(--border-radius-full);
6281
- background-image: var(--muka-range-track-fill);
6282
- border: 1px solid var(--color-border-contrast);
6283
- box-shadow: var(--shadow-sunken);
6259
+ .muka-radio__input:checked + .muka-radio__indicator .muka-radio__dot {
6260
+ background-color: var(--radio-color-checked-dot);
6261
+ transform: scale(1);
6284
6262
  }
6285
6263
 
6286
- /* Firefox track + progress */
6287
- .muka-range-slider__input::-moz-range-track {
6288
- height: var(--muka-range-track-h);
6289
- border-radius: var(--border-radius-full);
6290
- background: var(--color-surface-sunken);
6291
- border: 1px solid var(--color-border-contrast);
6292
- box-shadow: var(--shadow-sunken);
6293
- }
6294
- .muka-range-slider__input::-moz-range-progress {
6295
- height: var(--muka-range-track-h);
6296
- border-radius: var(--border-radius-full);
6297
- background: var(--color-action-default);
6264
+ /* Disabled state */
6265
+ .muka-radio--disabled .muka-radio__indicator {
6266
+ background-color: var(--radio-color-disabled-background);
6267
+ border-color: var(--radio-color-disabled-border);
6268
+ box-shadow: none;
6298
6269
  }
6299
6270
 
6300
- /* WebKit / Blink thumb (vertically centred over the track) */
6301
- .muka-range-slider__input::-webkit-slider-thumb {
6302
- -webkit-appearance: none;
6303
- appearance: none;
6304
- width: var(--muka-range-thumb);
6305
- height: var(--muka-range-thumb);
6306
- margin-top: calc((var(--muka-range-track-h) - var(--muka-range-thumb)) / 2);
6307
- border-radius: var(--border-radius-full);
6308
- border: 1px solid var(--color-border-contrast);
6309
- box-shadow: var(--shadow-level2);
6310
- background-color: var(--color-surface-level1);
6311
- background-image:
6312
- linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color)),
6313
- linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color));
6314
- background-repeat: no-repeat;
6315
- background-size: var(--muka-range-grip-w) var(--muka-range-grip-h), var(--muka-range-grip-w) var(--muka-range-grip-h);
6316
- background-position:
6317
- calc(50% - var(--muka-range-grip-gap)) center,
6318
- calc(50% + var(--muka-range-grip-gap)) center;
6319
- transition: box-shadow 0.15s ease, background-color 0.15s ease;
6271
+ .muka-radio__input:disabled:checked + .muka-radio__indicator .muka-radio__dot {
6272
+ background-color: var(--radio-color-disabled-dot);
6320
6273
  }
6321
6274
 
6322
- /* Firefox thumb */
6323
- .muka-range-slider__input::-moz-range-thumb {
6324
- width: var(--muka-range-thumb);
6325
- height: var(--muka-range-thumb);
6326
- border-radius: var(--border-radius-full);
6327
- border: 1px solid var(--color-border-contrast);
6328
- box-shadow: var(--shadow-level2);
6329
- background-color: var(--color-surface-level1);
6330
- background-image:
6331
- linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color)),
6332
- linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color));
6333
- background-repeat: no-repeat;
6334
- background-size: var(--muka-range-grip-w) var(--muka-range-grip-h), var(--muka-range-grip-w) var(--muka-range-grip-h);
6335
- background-position:
6336
- calc(50% - var(--muka-range-grip-gap)) center,
6337
- calc(50% + var(--muka-range-grip-gap)) center;
6338
- transition: box-shadow 0.15s ease, background-color 0.15s ease;
6275
+ /* Label text */
6276
+ .muka-radio__label {
6277
+ font-family: var(--text-label-lg-regular-fontFamily);
6278
+ font-weight: var(--text-label-lg-regular-fontWeight);
6279
+ font-size: var(--text-label-lg-regular-fontSize);
6280
+ line-height: var(--text-label-lg-regular-lineHeight);
6281
+ color: var(--color-text-default-default);
6339
6282
  }
6340
6283
 
6341
- /* Hover */
6342
- .muka-range-slider__input:hover::-webkit-slider-thumb {
6343
- background-color: var(--color-surface-level1);
6344
- box-shadow: var(--shadow-level3);
6345
- }
6346
- .muka-range-slider__input:hover::-moz-range-thumb {
6347
- background-color: var(--color-surface-level1);
6348
- box-shadow: var(--shadow-level3);
6284
+ .muka-radio--sm .muka-radio__label {
6285
+ font-family: var(--text-label-md-regular-fontFamily);
6286
+ font-weight: var(--text-label-md-regular-fontWeight);
6287
+ font-size: var(--text-label-md-regular-fontSize);
6288
+ line-height: var(--text-label-md-regular-lineHeight);
6349
6289
  }
6350
6290
 
6351
- /* Focus ring */
6352
- .muka-range-slider__input:focus-visible::-webkit-slider-thumb {
6353
- box-shadow: var(--shadow-level2), 0 0 0 3px var(--color-border-focus);
6354
- }
6355
- .muka-range-slider__input:focus-visible::-moz-range-thumb {
6356
- box-shadow: var(--shadow-level2), 0 0 0 3px var(--color-border-focus);
6291
+ .muka-radio--lg .muka-radio__label {
6292
+ font-family: var(--text-label-xl-regular-fontFamily);
6293
+ font-weight: var(--text-label-xl-regular-fontWeight);
6294
+ font-size: var(--text-label-xl-regular-fontSize);
6295
+ line-height: var(--text-label-xl-regular-lineHeight);
6357
6296
  }
6358
6297
 
6359
- /* Disabled */
6360
- .muka-range-slider--disabled {
6361
- opacity: 0.5;
6362
- }
6363
- .muka-range-slider--disabled .muka-range-slider__input {
6364
- cursor: not-allowed;
6298
+ .muka-radio--disabled .muka-radio__label {
6299
+ color: var(--color-text-subtle-default);
6365
6300
  }
6366
6301
 
6367
6302
 
@@ -6508,150 +6443,6 @@ body {
6508
6443
  }
6509
6444
 
6510
6445
 
6511
- /* Radio */
6512
- /* Radio Component Styles - Using Muka Design Tokens */
6513
-
6514
- /* Wrapper - clickable label container */
6515
- .muka-radio {
6516
- display: inline-flex;
6517
- align-items: center;
6518
- gap: var(--spacing-4);
6519
- cursor: pointer;
6520
- user-select: none;
6521
- }
6522
-
6523
- .muka-radio--disabled {
6524
- cursor: not-allowed;
6525
- opacity: 0.6;
6526
- }
6527
-
6528
- /* Control container */
6529
- .muka-radio__control {
6530
- position: relative;
6531
- display: inline-flex;
6532
- align-items: center;
6533
- justify-content: center;
6534
- flex-shrink: 0;
6535
- }
6536
-
6537
- /* Hidden native input */
6538
- .muka-radio__input {
6539
- position: absolute;
6540
- width: 1px;
6541
- height: 1px;
6542
- padding: 0;
6543
- margin: -1px;
6544
- overflow: hidden;
6545
- clip: rect(0, 0, 0, 0);
6546
- white-space: nowrap;
6547
- border: 0;
6548
- }
6549
-
6550
- /* Visual indicator (circle) */
6551
- .muka-radio__indicator {
6552
- display: flex;
6553
- align-items: center;
6554
- justify-content: center;
6555
- width: var(--radio-size-default);
6556
- height: var(--radio-size-default);
6557
- border-radius: var(--border-radius-full);
6558
- background-color: var(--radio-color-default-background);
6559
- border: var(--border-width-regular) solid var(--radio-color-default-border);
6560
- transition: all 0.15s ease;
6561
- box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.15);
6562
- }
6563
-
6564
- /* Size variants */
6565
- .muka-radio--sm .muka-radio__indicator {
6566
- width: var(--radio-size-sm);
6567
- height: var(--radio-size-sm);
6568
- }
6569
-
6570
- .muka-radio--lg .muka-radio__indicator {
6571
- width: var(--radio-size-lg);
6572
- height: var(--radio-size-lg);
6573
- }
6574
-
6575
- /* Inner dot (shown when checked) */
6576
- .muka-radio__dot {
6577
- width: var(--radio-dot-size-default);
6578
- height: var(--radio-dot-size-default);
6579
- border-radius: var(--border-radius-full);
6580
- background-color: var(--radio-color-default-dot);
6581
- transform: scale(0);
6582
- transition: transform 0.15s ease;
6583
- }
6584
-
6585
- .muka-radio--sm .muka-radio__dot {
6586
- width: var(--radio-dot-size-sm);
6587
- height: var(--radio-dot-size-sm);
6588
- }
6589
-
6590
- .muka-radio--lg .muka-radio__dot {
6591
- width: var(--radio-dot-size-lg);
6592
- height: var(--radio-dot-size-lg);
6593
- }
6594
-
6595
- /* Hover state - removed per design */
6596
-
6597
- /* Focus state */
6598
- .muka-radio__input:focus-visible + .muka-radio__indicator {
6599
- outline: 2px solid var(--color-border-focus);
6600
- outline-offset: 2px;
6601
- }
6602
-
6603
- /* Checked state */
6604
- .muka-radio__input:checked + .muka-radio__indicator {
6605
- background-color: var(--radio-color-checked-background);
6606
- border-width: var(--border-width-bold);
6607
- border-color: var(--radio-color-checked-border);
6608
- box-shadow: none;
6609
- }
6610
-
6611
- .muka-radio__input:checked + .muka-radio__indicator .muka-radio__dot {
6612
- background-color: var(--radio-color-checked-dot);
6613
- transform: scale(1);
6614
- }
6615
-
6616
- /* Disabled state */
6617
- .muka-radio--disabled .muka-radio__indicator {
6618
- background-color: var(--radio-color-disabled-background);
6619
- border-color: var(--radio-color-disabled-border);
6620
- box-shadow: none;
6621
- }
6622
-
6623
- .muka-radio__input:disabled:checked + .muka-radio__indicator .muka-radio__dot {
6624
- background-color: var(--radio-color-disabled-dot);
6625
- }
6626
-
6627
- /* Label text */
6628
- .muka-radio__label {
6629
- font-family: var(--text-label-lg-regular-fontFamily);
6630
- font-weight: var(--text-label-lg-regular-fontWeight);
6631
- font-size: var(--text-label-lg-regular-fontSize);
6632
- line-height: var(--text-label-lg-regular-lineHeight);
6633
- color: var(--color-text-default-default);
6634
- }
6635
-
6636
- .muka-radio--sm .muka-radio__label {
6637
- font-family: var(--text-label-md-regular-fontFamily);
6638
- font-weight: var(--text-label-md-regular-fontWeight);
6639
- font-size: var(--text-label-md-regular-fontSize);
6640
- line-height: var(--text-label-md-regular-lineHeight);
6641
- }
6642
-
6643
- .muka-radio--lg .muka-radio__label {
6644
- font-family: var(--text-label-xl-regular-fontFamily);
6645
- font-weight: var(--text-label-xl-regular-fontWeight);
6646
- font-size: var(--text-label-xl-regular-fontSize);
6647
- line-height: var(--text-label-xl-regular-lineHeight);
6648
- }
6649
-
6650
- .muka-radio--disabled .muka-radio__label {
6651
- color: var(--color-text-subtle-default);
6652
- }
6653
-
6654
-
6655
6446
  /* PullToRefresh */
6656
6447
  /* PullToRefresh Component Styles */
6657
6448
 
@@ -7265,98 +7056,314 @@ body {
7265
7056
  line-height: var(--text-body-base-regular-lineHeight);
7266
7057
  color: var(--color-text-default-default);
7267
7058
  }
7268
-
7269
- /* ─── Edit button ────────────────────────────────────────── */
7270
- .muka-progress-accordeon__edit {
7271
- flex-shrink: 0;
7059
+
7060
+ /* ─── Edit button ────────────────────────────────────────── */
7061
+ .muka-progress-accordeon__edit {
7062
+ flex-shrink: 0;
7063
+ }
7064
+
7065
+ /* Wide container shows the labelled button; the icon-only one is hidden */
7066
+ .muka-progress-accordeon__edit--narrow {
7067
+ display: none;
7068
+ }
7069
+
7070
+ /* ─── Content slot ───────────────────────────────────────── */
7071
+ .muka-progress-accordeon__slot {
7072
+ display: flex;
7073
+ flex-direction: column;
7074
+ align-items: stretch;
7075
+ width: 100%;
7076
+ }
7077
+
7078
+ /* ─── Collapse/expand animation (past & upcoming steps) ──────
7079
+ The grid-template-rows 1fr → 0fr technique animates the content to/from its
7080
+ intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7081
+ --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7082
+ .muka-progress-accordeon__slot-wrapper {
7083
+ display: grid;
7084
+ grid-template-rows: 1fr;
7085
+ transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7086
+ }
7087
+
7088
+ .muka-progress-accordeon__slot-wrapper--collapsed {
7089
+ grid-template-rows: 0fr;
7090
+ }
7091
+
7092
+ /* The direct grid child clips and must have NO padding/border of its own —
7093
+ min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7094
+ 0 height (padding on the item would leave a residual gap when collapsed). */
7095
+ .muka-progress-accordeon__slot-clip {
7096
+ overflow: hidden;
7097
+ min-height: 0;
7098
+ }
7099
+
7100
+ /* The header↔content spacing lives on the inner slot (inside the clip region)
7101
+ so it collapses together with the content. */
7102
+ .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7103
+ padding-top: var(--spacing-4);
7104
+ }
7105
+
7106
+ /* ─── Action buttons (current state) ─────────────────────── */
7107
+ .muka-progress-accordeon__actions {
7108
+ display: flex;
7109
+ justify-content: flex-end;
7110
+ gap: var(--spacing-4);
7111
+ width: 100%;
7112
+ }
7113
+
7114
+ .muka-progress-accordeon__action {
7115
+ min-width: 160px;
7116
+ }
7117
+
7118
+ /* ─── Divider ────────────────────────────────────────────── */
7119
+ .muka-progress-accordeon__divider {
7120
+ width: 100%;
7121
+ }
7122
+
7123
+ /* ─── Responsive (narrow container) ──────────────────────── */
7124
+ @container (max-width: 480px) {
7125
+ /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7126
+ 32px step indicator, so nudge the text down to keep a single line centred. */
7127
+ .muka-progress-accordeon__heading {
7128
+ font-size: var(--text-heading-sm-fontSize);
7129
+ line-height: var(--text-heading-sm-lineHeight);
7130
+ padding-top: var(--spacing-1);
7131
+ }
7132
+
7133
+ /* Edit button swaps to the icon-only variant */
7134
+ .muka-progress-accordeon__edit--wide {
7135
+ display: none;
7136
+ }
7137
+
7138
+ .muka-progress-accordeon__edit--narrow {
7139
+ display: inline-flex;
7140
+ }
7141
+
7142
+ /* Action buttons stretch to fill the row */
7143
+ .muka-progress-accordeon__actions {
7144
+ justify-content: stretch;
7145
+ }
7146
+
7147
+ .muka-progress-accordeon__action {
7148
+ flex: 1 0 0;
7149
+ min-width: 0;
7150
+ }
7151
+ }
7152
+
7153
+
7154
+ /* RangeSlider */
7155
+ /* RangeSlider Component Styles - Using Muka Design Tokens */
7156
+
7157
+ .muka-range-slider {
7158
+ display: flex;
7159
+ flex-direction: column;
7160
+ gap: var(--spacing-1);
7161
+ width: 100%;
7162
+ }
7163
+
7164
+ /* ========================================
7165
+ HEADER: label group (label + info + optional) and value readout
7166
+ ======================================== */
7167
+
7168
+ .muka-range-slider__header {
7169
+ display: flex;
7170
+ align-items: center;
7171
+ justify-content: space-between;
7172
+ gap: var(--spacing-2);
7173
+ min-height: 24px;
7174
+ }
7175
+
7176
+ .muka-range-slider__label-group {
7177
+ display: inline-flex;
7178
+ align-items: center;
7179
+ gap: var(--spacing-2);
7180
+ }
7181
+
7182
+ .muka-range-slider__label {
7183
+ font-family: var(--text-label-md-semibold-fontFamily);
7184
+ font-weight: var(--text-label-md-semibold-fontWeight);
7185
+ font-size: var(--text-label-md-semibold-fontSize);
7186
+ line-height: var(--text-label-md-semibold-lineHeight);
7187
+ color: var(--color-text-default-default);
7188
+ }
7189
+
7190
+ .muka-range-slider__info {
7191
+ color: var(--color-text-subtle-default);
7192
+ }
7193
+
7194
+ .muka-range-slider__optional {
7195
+ font-family: var(--text-label-sm-regular-fontFamily);
7196
+ font-weight: var(--text-label-sm-regular-fontWeight);
7197
+ font-size: var(--text-label-sm-regular-fontSize);
7198
+ line-height: var(--text-label-sm-regular-lineHeight);
7199
+ color: var(--color-text-subtle-default);
7200
+ }
7201
+
7202
+ .muka-range-slider__value {
7203
+ font-family: var(--text-label-md-regular-fontFamily);
7204
+ font-weight: var(--text-label-md-regular-fontWeight);
7205
+ font-size: var(--text-label-md-regular-fontSize);
7206
+ line-height: var(--text-label-md-regular-lineHeight);
7207
+ color: var(--color-text-default-default);
7208
+ font-variant-numeric: tabular-nums;
7209
+ }
7210
+
7211
+ .muka-range-slider__helper {
7212
+ margin: 0;
7213
+ font-family: var(--text-body-sm-regular-fontFamily);
7214
+ font-weight: var(--text-body-sm-regular-fontWeight);
7215
+ font-size: var(--text-body-sm-regular-fontSize);
7216
+ line-height: var(--text-body-sm-regular-lineHeight);
7217
+ color: var(--color-text-subtle-default);
7218
+ }
7219
+
7220
+ /* ========================================
7221
+ TRACK + THUMB
7222
+ Native range input, restyled. A thick sunken track holds an accent fill up to
7223
+ the current value, with a circular grip handle. The filled portion is driven
7224
+ by the inline --muka-range-fill custom property (set from the component value).
7225
+ ======================================== */
7226
+
7227
+ /* Size variants: track height, thumb diameter and grip geometry */
7228
+ .muka-range-slider--sm {
7229
+ --muka-range-track-h: 12px;
7230
+ --muka-range-thumb: 24px;
7231
+ --muka-range-grip-h: 9px;
7232
+ }
7233
+ .muka-range-slider--md {
7234
+ --muka-range-track-h: 16px;
7235
+ --muka-range-thumb: 32px;
7236
+ --muka-range-grip-h: 12px;
7237
+ }
7238
+ .muka-range-slider--lg {
7239
+ --muka-range-track-h: 20px;
7240
+ --muka-range-thumb: 40px;
7241
+ --muka-range-grip-h: 15px;
7272
7242
  }
7273
7243
 
7274
- /* Wide container shows the labelled button; the icon-only one is hidden */
7275
- .muka-progress-accordeon__edit--narrow {
7276
- display: none;
7244
+ .muka-range-slider__bar {
7245
+ /* Reserve the full thumb height so the handle never clips the layout. */
7246
+ display: flex;
7247
+ align-items: center;
7248
+ height: var(--muka-range-thumb);
7277
7249
  }
7278
7250
 
7279
- /* ─── Content slot ───────────────────────────────────────── */
7280
- .muka-progress-accordeon__slot {
7281
- display: flex;
7282
- flex-direction: column;
7283
- align-items: stretch;
7251
+ .muka-range-slider__input {
7252
+ -webkit-appearance: none;
7253
+ appearance: none;
7284
7254
  width: 100%;
7285
- }
7255
+ height: var(--muka-range-thumb);
7256
+ margin: 0;
7257
+ background: transparent;
7258
+ cursor: pointer;
7286
7259
 
7287
- /* ─── Collapse/expand animation (past & upcoming steps) ──────
7288
- The grid-template-rows 1fr → 0fr technique animates the content to/from its
7289
- intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7290
- --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7291
- .muka-progress-accordeon__slot-wrapper {
7292
- display: grid;
7293
- grid-template-rows: 1fr;
7294
- transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7295
- }
7260
+ /* Grip handle fill + two vertical grip bars, all theme-aware. */
7261
+ --muka-range-grip-color: var(--color-text-subtle-default);
7262
+ --muka-range-grip-w: 2px;
7263
+ --muka-range-grip-gap: 3px;
7296
7264
 
7297
- .muka-progress-accordeon__slot-wrapper--collapsed {
7298
- grid-template-rows: 0fr;
7265
+ /* The track fill: action colour up to the value, sunken surface beyond it. */
7266
+ --muka-range-track-fill: linear-gradient(
7267
+ to right,
7268
+ var(--color-action-default) 0,
7269
+ var(--color-action-default) var(--muka-range-fill, 0%),
7270
+ var(--color-surface-sunken) var(--muka-range-fill, 0%),
7271
+ var(--color-surface-sunken) 100%
7272
+ );
7299
7273
  }
7300
7274
 
7301
- /* The direct grid child clips and must have NO padding/border of its own —
7302
- min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7303
- 0 height (padding on the item would leave a residual gap when collapsed). */
7304
- .muka-progress-accordeon__slot-clip {
7305
- overflow: hidden;
7306
- min-height: 0;
7275
+ .muka-range-slider__input:focus {
7276
+ outline: none;
7307
7277
  }
7308
7278
 
7309
- /* The header↔content spacing lives on the inner slot (inside the clip region)
7310
- so it collapses together with the content. */
7311
- .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7312
- padding-top: var(--spacing-4);
7279
+ /* WebKit / Blink track */
7280
+ .muka-range-slider__input::-webkit-slider-runnable-track {
7281
+ height: var(--muka-range-track-h);
7282
+ border-radius: var(--border-radius-full);
7283
+ background-image: var(--muka-range-track-fill);
7284
+ border: 1px solid var(--color-border-contrast);
7285
+ box-shadow: var(--shadow-sunken);
7313
7286
  }
7314
7287
 
7315
- /* ─── Action buttons (current state) ─────────────────────── */
7316
- .muka-progress-accordeon__actions {
7317
- display: flex;
7318
- justify-content: flex-end;
7319
- gap: var(--spacing-4);
7320
- width: 100%;
7288
+ /* Firefox track + progress */
7289
+ .muka-range-slider__input::-moz-range-track {
7290
+ height: var(--muka-range-track-h);
7291
+ border-radius: var(--border-radius-full);
7292
+ background: var(--color-surface-sunken);
7293
+ border: 1px solid var(--color-border-contrast);
7294
+ box-shadow: var(--shadow-sunken);
7321
7295
  }
7322
-
7323
- .muka-progress-accordeon__action {
7324
- min-width: 160px;
7296
+ .muka-range-slider__input::-moz-range-progress {
7297
+ height: var(--muka-range-track-h);
7298
+ border-radius: var(--border-radius-full);
7299
+ background: var(--color-action-default);
7325
7300
  }
7326
7301
 
7327
- /* ─── Divider ────────────────────────────────────────────── */
7328
- .muka-progress-accordeon__divider {
7329
- width: 100%;
7302
+ /* WebKit / Blink thumb (vertically centred over the track) */
7303
+ .muka-range-slider__input::-webkit-slider-thumb {
7304
+ -webkit-appearance: none;
7305
+ appearance: none;
7306
+ width: var(--muka-range-thumb);
7307
+ height: var(--muka-range-thumb);
7308
+ margin-top: calc((var(--muka-range-track-h) - var(--muka-range-thumb)) / 2);
7309
+ border-radius: var(--border-radius-full);
7310
+ border: 1px solid var(--color-border-contrast);
7311
+ box-shadow: var(--shadow-level2);
7312
+ background-color: var(--color-surface-level1);
7313
+ background-image:
7314
+ linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color)),
7315
+ linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color));
7316
+ background-repeat: no-repeat;
7317
+ background-size: var(--muka-range-grip-w) var(--muka-range-grip-h), var(--muka-range-grip-w) var(--muka-range-grip-h);
7318
+ background-position:
7319
+ calc(50% - var(--muka-range-grip-gap)) center,
7320
+ calc(50% + var(--muka-range-grip-gap)) center;
7321
+ transition: box-shadow 0.15s ease, background-color 0.15s ease;
7330
7322
  }
7331
7323
 
7332
- /* ─── Responsive (narrow container) ──────────────────────── */
7333
- @container (max-width: 480px) {
7334
- /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7335
- 32px step indicator, so nudge the text down to keep a single line centred. */
7336
- .muka-progress-accordeon__heading {
7337
- font-size: var(--text-heading-sm-fontSize);
7338
- line-height: var(--text-heading-sm-lineHeight);
7339
- padding-top: var(--spacing-1);
7340
- }
7341
-
7342
- /* Edit button swaps to the icon-only variant */
7343
- .muka-progress-accordeon__edit--wide {
7344
- display: none;
7345
- }
7324
+ /* Firefox thumb */
7325
+ .muka-range-slider__input::-moz-range-thumb {
7326
+ width: var(--muka-range-thumb);
7327
+ height: var(--muka-range-thumb);
7328
+ border-radius: var(--border-radius-full);
7329
+ border: 1px solid var(--color-border-contrast);
7330
+ box-shadow: var(--shadow-level2);
7331
+ background-color: var(--color-surface-level1);
7332
+ background-image:
7333
+ linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color)),
7334
+ linear-gradient(var(--muka-range-grip-color), var(--muka-range-grip-color));
7335
+ background-repeat: no-repeat;
7336
+ background-size: var(--muka-range-grip-w) var(--muka-range-grip-h), var(--muka-range-grip-w) var(--muka-range-grip-h);
7337
+ background-position:
7338
+ calc(50% - var(--muka-range-grip-gap)) center,
7339
+ calc(50% + var(--muka-range-grip-gap)) center;
7340
+ transition: box-shadow 0.15s ease, background-color 0.15s ease;
7341
+ }
7346
7342
 
7347
- .muka-progress-accordeon__edit--narrow {
7348
- display: inline-flex;
7349
- }
7343
+ /* Hover */
7344
+ .muka-range-slider__input:hover::-webkit-slider-thumb {
7345
+ background-color: var(--color-surface-level1);
7346
+ box-shadow: var(--shadow-level3);
7347
+ }
7348
+ .muka-range-slider__input:hover::-moz-range-thumb {
7349
+ background-color: var(--color-surface-level1);
7350
+ box-shadow: var(--shadow-level3);
7351
+ }
7350
7352
 
7351
- /* Action buttons stretch to fill the row */
7352
- .muka-progress-accordeon__actions {
7353
- justify-content: stretch;
7354
- }
7353
+ /* Focus ring */
7354
+ .muka-range-slider__input:focus-visible::-webkit-slider-thumb {
7355
+ box-shadow: var(--shadow-level2), 0 0 0 3px var(--color-border-focus);
7356
+ }
7357
+ .muka-range-slider__input:focus-visible::-moz-range-thumb {
7358
+ box-shadow: var(--shadow-level2), 0 0 0 3px var(--color-border-focus);
7359
+ }
7355
7360
 
7356
- .muka-progress-accordeon__action {
7357
- flex: 1 0 0;
7358
- min-width: 0;
7359
- }
7361
+ /* Disabled */
7362
+ .muka-range-slider--disabled {
7363
+ opacity: 0.5;
7364
+ }
7365
+ .muka-range-slider--disabled .muka-range-slider__input {
7366
+ cursor: not-allowed;
7360
7367
  }
7361
7368
 
7362
7369
 
@@ -7956,36 +7963,6 @@ body {
7956
7963
  }
7957
7964
 
7958
7965
 
7959
- /* PhotoDraftStrip */
7960
- /* PhotoDraftStrip Component Styles */
7961
-
7962
- .muka-photo-draft-strip {
7963
- display: flex;
7964
- align-items: center;
7965
- gap: var(--spacing-3);
7966
- width: 100%;
7967
- padding: var(--spacing-2) 0;
7968
- }
7969
-
7970
- .muka-photo-draft-strip__track {
7971
- display: flex;
7972
- gap: var(--spacing-2);
7973
- flex: 1 1 auto;
7974
- min-width: 0;
7975
- overflow-x: auto;
7976
- scroll-behavior: smooth;
7977
- scrollbar-width: none;
7978
- }
7979
-
7980
- .muka-photo-draft-strip__track::-webkit-scrollbar {
7981
- display: none;
7982
- }
7983
-
7984
- .muka-photo-draft-strip__item {
7985
- flex: 0 0 auto;
7986
- }
7987
-
7988
-
7989
7966
  /* Pagination */
7990
7967
  /* Pagination Component Styles */
7991
7968
 
@@ -8088,6 +8065,36 @@ body {
8088
8065
  }
8089
8066
 
8090
8067
 
8068
+ /* PhotoDraftStrip */
8069
+ /* PhotoDraftStrip Component Styles */
8070
+
8071
+ .muka-photo-draft-strip {
8072
+ display: flex;
8073
+ align-items: center;
8074
+ gap: var(--spacing-3);
8075
+ width: 100%;
8076
+ padding: var(--spacing-2) 0;
8077
+ }
8078
+
8079
+ .muka-photo-draft-strip__track {
8080
+ display: flex;
8081
+ gap: var(--spacing-2);
8082
+ flex: 1 1 auto;
8083
+ min-width: 0;
8084
+ overflow-x: auto;
8085
+ scroll-behavior: smooth;
8086
+ scrollbar-width: none;
8087
+ }
8088
+
8089
+ .muka-photo-draft-strip__track::-webkit-scrollbar {
8090
+ display: none;
8091
+ }
8092
+
8093
+ .muka-photo-draft-strip__item {
8094
+ flex: 0 0 auto;
8095
+ }
8096
+
8097
+
8091
8098
  /* NumberInput */
8092
8099
  /* NumberInput — reuses Input field styles (../Input/Input.css). */
8093
8100
  /* Only the prefix/suffix affixes are NumberInput-specific. */
@@ -14630,7 +14637,8 @@ button.muka-chat-photo-grid__tile:focus-visible {
14630
14637
  align-items: center;
14631
14638
  justify-content: center;
14632
14639
  flex-shrink: 0;
14633
- overflow: hidden;
14640
+ /* No overflow clipping: the status dot sits on the edge. The image and the
14641
+ loading shimmer round themselves to the avatar shape instead. */
14634
14642
  user-select: none;
14635
14643
  vertical-align: middle;
14636
14644
  background-color: var(--avatar-color-background-default);
@@ -14703,9 +14711,10 @@ button.muka-chat-photo-grid__tile:focus-visible {
14703
14711
  border-radius: var(--avatar-radius-square-sm);
14704
14712
  }
14705
14713
 
14706
- /* 4xs is too small for initials, the fallback icon or a status dot:
14714
+ /* 4xs is too small for initials, an icon, the fallback icon or a status dot:
14707
14715
  it shows the picture, or the plain background */
14708
14716
  .muka-avatar--4xs .muka-avatar__initials,
14717
+ .muka-avatar--4xs .muka-avatar__icon,
14709
14718
  .muka-avatar--4xs .muka-avatar__fallback,
14710
14719
  .muka-avatar--4xs .muka-avatar__status {
14711
14720
  display: none;
@@ -14741,38 +14750,59 @@ button.muka-chat-photo-grid__tile:focus-visible {
14741
14750
  .muka-avatar__skeleton {
14742
14751
  position: absolute;
14743
14752
  inset: 0;
14753
+ border-radius: inherit;
14744
14754
  background: linear-gradient(
14745
14755
  90deg,
14746
14756
  transparent 0%,
14747
14757
  var(--color-surface-level1) 50%,
14748
14758
  transparent 100%
14749
- );
14759
+ ) no-repeat;
14760
+ background-size: 50% 100%;
14750
14761
  animation: avatar-loading 1.5s ease-in-out infinite;
14751
14762
  }
14752
14763
 
14764
+ /* The highlight sweeps by background position, so it stays inside the
14765
+ rounded shape without the avatar clipping its overflow */
14753
14766
  @keyframes avatar-loading {
14754
14767
  0% {
14755
- transform: translateX(-100%);
14768
+ background-position: -100% 0;
14756
14769
  }
14757
14770
  100% {
14758
- transform: translateX(100%);
14771
+ background-position: 200% 0;
14759
14772
  }
14760
14773
  }
14761
14774
 
14762
14775
  /* Avatar content */
14763
14776
  .muka-avatar__image {
14777
+ border-radius: inherit;
14764
14778
  width: 100%;
14765
14779
  height: 100%;
14766
14780
  object-fit: cover;
14767
14781
  display: block;
14768
14782
  }
14769
14783
 
14784
+ /* Icon slot: a fixed icon size per avatar size, in the initials colour
14785
+ (subtle text) */
14770
14786
  .muka-avatar__icon {
14771
- width: 60%;
14772
- height: 60%;
14773
14787
  display: flex;
14774
14788
  align-items: center;
14775
14789
  justify-content: center;
14790
+ color: var(--avatar-color-foreground-default);
14791
+ }
14792
+
14793
+ .muka-avatar--3xs .muka-avatar__icon { width: var(--avatar-icon-size-3xs); height: var(--avatar-icon-size-3xs); }
14794
+ .muka-avatar--2xs .muka-avatar__icon { width: var(--avatar-icon-size-2xs); height: var(--avatar-icon-size-2xs); }
14795
+ .muka-avatar--xs .muka-avatar__icon { width: var(--avatar-icon-size-xs); height: var(--avatar-icon-size-xs); }
14796
+ .muka-avatar--sm .muka-avatar__icon { width: var(--avatar-icon-size-sm); height: var(--avatar-icon-size-sm); }
14797
+ .muka-avatar--md .muka-avatar__icon { width: var(--avatar-icon-size-md); height: var(--avatar-icon-size-md); }
14798
+ .muka-avatar--lg .muka-avatar__icon { width: var(--avatar-icon-size-lg); height: var(--avatar-icon-size-lg); }
14799
+ .muka-avatar--xl .muka-avatar__icon { width: var(--avatar-icon-size-xl); height: var(--avatar-icon-size-xl); }
14800
+
14801
+ /* A Muka Icon fills the slot and takes its colour (its own `color` prop still wins) */
14802
+ .muka-avatar__icon .muka-icon {
14803
+ width: 100%;
14804
+ height: 100%;
14805
+ color: inherit;
14776
14806
  }
14777
14807
 
14778
14808
  .muka-avatar__icon svg {