@revikornmann/muka-ui 0.27.0 → 0.27.1

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.
@@ -2493,6 +2493,116 @@ body {
2493
2493
  }
2494
2494
 
2495
2495
 
2496
+ /* View */
2497
+ /* View Component Styles */
2498
+
2499
+ /* ─── Base layout ─────────────────────────────────────── */
2500
+
2501
+ .muka-view {
2502
+ display: flex;
2503
+ flex-direction: column;
2504
+ height: 100dvh;
2505
+ background-color: var(--view-color-background);
2506
+ position: relative;
2507
+ isolation: isolate;
2508
+ box-sizing: border-box;
2509
+
2510
+ /* Width reserved for the footer nav once it becomes a left sidebar at the
2511
+ large tier (matches BottomBar's desktopAs="sidebar" rail width). */
2512
+ --view-sidebar-width: 240px;
2513
+ }
2514
+
2515
+ /* ─── Surface level variants ─────────────────────────── */
2516
+
2517
+ .muka-view--surface-3 {
2518
+ background-color: var(--color-surface-level3);
2519
+ }
2520
+
2521
+ /* ─── Large screens: make room for the left sidebar ──────────
2522
+ A footer nav with desktopAs="sidebar" becomes a fixed 240px left rail at
2523
+ ≥1024px. Offset the shell so the TopBar/body clear it — tied to the sidebar's
2524
+ actual presence (the `.muka-bottombar--desktop-sidebar` element) rather than
2525
+ the View's `size`, so a forced `size="lg"` below 1024px never reserves space
2526
+ for a sidebar that hasn't rendered yet. */
2527
+ @media (min-width: 1024px) {
2528
+ .muka-view:has(.muka-bottombar--desktop-sidebar) {
2529
+ padding-left: var(--view-sidebar-width);
2530
+ }
2531
+ }
2532
+
2533
+ /* ─── TopBar elevation ────────────────────────────────── */
2534
+
2535
+ .muka-view .muka-topbar {
2536
+ flex-shrink: 0;
2537
+ z-index: 3;
2538
+ box-shadow: var(--shadow-level2);
2539
+ }
2540
+
2541
+ /* ─── Scrollable body ─────────────────────────────────── */
2542
+
2543
+ .muka-view__body {
2544
+ flex: 1 1 0%;
2545
+ min-height: 0;
2546
+ overflow-y: auto;
2547
+ overflow-x: clip;
2548
+ z-index: 1;
2549
+
2550
+ /* Column flow so the footer (now a scroll-area child) can pin to the bottom and
2551
+ content scrolls *behind* it — letting a floating BottomBar's frosted backdrop
2552
+ reveal the content underneath. */
2553
+ display: flex;
2554
+ flex-direction: column;
2555
+ }
2556
+
2557
+ /* Inner wrapper constrains content width at the large tier (enterprise desktop)
2558
+ using the alias-layer section/container tokens, while the body scrolls full
2559
+ width. Full-bleed below large. */
2560
+ .muka-view__body-inner {
2561
+ width: 100%;
2562
+ /* Grow on short content so the sticky footer is pushed to the bottom rather
2563
+ than floating mid-screen. */
2564
+ flex: 1 0 auto;
2565
+ }
2566
+
2567
+ @media (min-width: 1024px) {
2568
+ .muka-view:not([data-size]) .muka-view__body-inner {
2569
+ max-width: var(--container-max-width-xl);
2570
+ margin-inline: auto;
2571
+ padding-inline: var(--section-padding-horizontal-default);
2572
+ }
2573
+ }
2574
+
2575
+ .muka-view[data-size='lg'] .muka-view__body-inner {
2576
+ max-width: var(--container-max-width-xl);
2577
+ margin-inline: auto;
2578
+ padding-inline: var(--section-padding-horizontal-default);
2579
+ }
2580
+
2581
+ /* ─── Footer (e.g. BottomBar) ─────────────────────────── */
2582
+
2583
+ .muka-view__footer {
2584
+ position: sticky;
2585
+ bottom: 0;
2586
+ flex-shrink: 0;
2587
+ z-index: 2;
2588
+ }
2589
+
2590
+ /* Inside an AppShell, the persistent left rail replaces the per-view bottom
2591
+ navigation at the large tier, so hide a footer that holds a navigation bar.
2592
+ Scoped to `.muka-app-shell` so bare Views (and the standalone
2593
+ desktopAs="sidebar" footer pattern above) are unaffected. Action-bar footers
2594
+ (`.muka-bottombar--actions`) don't match and remain at the bottom. */
2595
+ @media (min-width: 1024px) {
2596
+ .muka-app-shell .muka-view__footer:has(.muka-bottombar--navigation) {
2597
+ display: none;
2598
+ }
2599
+ }
2600
+
2601
+ .muka-app-shell[data-size='lg'] .muka-view__footer:has(.muka-bottombar--navigation) {
2602
+ display: none;
2603
+ }
2604
+
2605
+
2496
2606
  /* Typography */
2497
2607
  .muka-typography-catalog {
2498
2608
  display: flex;
@@ -2843,122 +2953,175 @@ body {
2843
2953
  }
2844
2954
 
2845
2955
 
2846
- /* View */
2847
- /* View Component Styles */
2848
-
2849
- /* ─── Base layout ─────────────────────────────────────── */
2956
+ /* Toggle */
2957
+ /* Toggle Component Styles - Using Muka Design Tokens */
2850
2958
 
2851
- .muka-view {
2959
+ /* Wrapper container */
2960
+ .muka-toggle {
2852
2961
  display: flex;
2853
- flex-direction: column;
2854
- height: 100dvh;
2855
- background-color: var(--view-color-background);
2962
+ align-items: center;
2963
+ gap: var(--spacing-2);
2856
2964
  position: relative;
2857
- isolation: isolate;
2858
- box-sizing: border-box;
2859
-
2860
- /* Width reserved for the footer nav once it becomes a left sidebar at the
2861
- large tier (matches BottomBar's desktopAs="sidebar" rail width). */
2862
- --view-sidebar-width: 240px;
2965
+ padding: var(--spacing-4) 0;
2863
2966
  }
2864
2967
 
2865
- /* ─── Surface level variants ─────────────────────────── */
2866
-
2867
- .muka-view--surface-3 {
2868
- background-color: var(--color-surface-level3);
2968
+ .muka-toggle--with-caption {
2969
+ padding: var(--spacing-5) 0;
2869
2970
  }
2870
2971
 
2871
- /* ─── Large screens: make room for the left sidebar ──────────
2872
- A footer nav with desktopAs="sidebar" becomes a fixed 240px left rail at
2873
- ≥1024px. Offset the shell so the TopBar/body clear it — tied to the sidebar's
2874
- actual presence (the `.muka-bottombar--desktop-sidebar` element) rather than
2875
- the View's `size`, so a forced `size="lg"` below 1024px never reserves space
2876
- for a sidebar that hasn't rendered yet. */
2877
- @media (min-width: 1024px) {
2878
- .muka-view:has(.muka-bottombar--desktop-sidebar) {
2879
- padding-left: var(--view-sidebar-width);
2880
- }
2972
+ .muka-toggle--disabled {
2973
+ opacity: 0.6;
2881
2974
  }
2882
2975
 
2883
- /* ─── TopBar elevation ────────────────────────────────── */
2884
-
2885
- .muka-view .muka-topbar {
2976
+ /* Icon */
2977
+ .muka-toggle__icon {
2978
+ display: flex;
2979
+ align-items: center;
2980
+ justify-content: center;
2886
2981
  flex-shrink: 0;
2887
- z-index: 3;
2888
- box-shadow: var(--shadow-level2);
2982
+ width: var(--icon-size-default);
2983
+ height: var(--icon-size-default);
2984
+ color: var(--color-text-default-default);
2889
2985
  }
2890
2986
 
2891
- /* ─── Scrollable body ─────────────────────────────────── */
2892
-
2893
- .muka-view__body {
2894
- flex: 1 1 0%;
2895
- min-height: 0;
2896
- overflow-y: auto;
2897
- overflow-x: clip;
2898
- z-index: 1;
2987
+ .muka-toggle__icon svg {
2988
+ width: 100%;
2989
+ height: 100%;
2990
+ }
2899
2991
 
2900
- /* Column flow so the footer (now a scroll-area child) can pin to the bottom and
2901
- content scrolls *behind* it — letting a floating BottomBar's frosted backdrop
2902
- reveal the content underneath. */
2992
+ /* Content area (label + caption) */
2993
+ .muka-toggle__content {
2903
2994
  display: flex;
2904
2995
  flex-direction: column;
2996
+ flex: 1;
2997
+ min-width: 0;
2998
+ gap: var(--spacing-1);
2905
2999
  }
2906
3000
 
2907
- /* Inner wrapper constrains content width at the large tier (enterprise desktop)
2908
- using the alias-layer section/container tokens, while the body scrolls full
2909
- width. Full-bleed below large. */
2910
- .muka-view__body-inner {
2911
- width: 100%;
2912
- /* Grow on short content so the sticky footer is pushed to the bottom rather
2913
- than floating mid-screen. */
2914
- flex: 1 0 auto;
3001
+ /* Label */
3002
+ .muka-toggle__label {
3003
+ font-family: var(--text-label-lg-regular-fontFamily);
3004
+ font-weight: var(--text-label-lg-regular-fontWeight);
3005
+ font-size: var(--text-label-lg-regular-fontSize);
3006
+ line-height: var(--text-label-lg-regular-lineHeight);
3007
+ color: var(--color-text-default-default);
3008
+ cursor: pointer;
2915
3009
  }
2916
3010
 
2917
- @media (min-width: 1024px) {
2918
- .muka-view:not([data-size]) .muka-view__body-inner {
2919
- max-width: var(--container-max-width-xl);
2920
- margin-inline: auto;
2921
- padding-inline: var(--section-padding-horizontal-default);
2922
- }
3011
+ .muka-toggle--with-caption .muka-toggle__label {
3012
+ font-family: var(--text-label-lg-semibold-fontFamily);
3013
+ font-weight: var(--text-label-lg-semibold-fontWeight);
3014
+ font-size: var(--text-label-lg-semibold-fontSize);
3015
+ line-height: var(--text-label-lg-semibold-lineHeight);
2923
3016
  }
2924
3017
 
2925
- .muka-view[data-size='lg'] .muka-view__body-inner {
2926
- max-width: var(--container-max-width-xl);
2927
- margin-inline: auto;
2928
- padding-inline: var(--section-padding-horizontal-default);
3018
+ .muka-toggle--disabled .muka-toggle__label {
3019
+ color: var(--color-text-subtle-default);
3020
+ cursor: not-allowed;
2929
3021
  }
2930
3022
 
2931
- /* ─── Footer (e.g. BottomBar) ─────────────────────────── */
2932
-
2933
- .muka-view__footer {
2934
- position: sticky;
2935
- bottom: 0;
2936
- flex-shrink: 0;
2937
- z-index: 2;
3023
+ /* Caption */
3024
+ .muka-toggle__caption {
3025
+ font-family: var(--text-body-base-regular-fontFamily);
3026
+ font-weight: var(--text-body-base-regular-fontWeight);
3027
+ font-size: var(--text-body-base-regular-fontSize);
3028
+ line-height: var(--text-body-base-regular-lineHeight);
3029
+ color: var(--color-text-subtle-default);
2938
3030
  }
2939
3031
 
2940
- /* Inside an AppShell, the persistent left rail replaces the per-view bottom
2941
- navigation at the large tier, so hide a footer that holds a navigation bar.
2942
- Scoped to `.muka-app-shell` so bare Views (and the standalone
2943
- desktopAs="sidebar" footer pattern above) are unaffected. Action-bar footers
2944
- (`.muka-bottombar--actions`) don't match and remain at the bottom. */
2945
- @media (min-width: 1024px) {
2946
- .muka-app-shell .muka-view__footer:has(.muka-bottombar--navigation) {
2947
- display: none;
2948
- }
3032
+ /* Switch container */
3033
+ .muka-toggle__switch {
3034
+ position: relative;
3035
+ display: inline-flex;
3036
+ flex-shrink: 0;
3037
+ cursor: pointer;
2949
3038
  }
2950
3039
 
2951
- .muka-app-shell[data-size='lg'] .muka-view__footer:has(.muka-bottombar--navigation) {
2952
- display: none;
3040
+ .muka-toggle--disabled .muka-toggle__switch {
3041
+ cursor: not-allowed;
2953
3042
  }
2954
3043
 
2955
-
2956
- /* Toast */
2957
- /* Toast Component Styles - Using Muka Design Tokens */
2958
-
2959
- .muka-toast {
2960
- display: flex;
2961
- align-items: flex-start;
3044
+ /* Hidden native input */
3045
+ .muka-toggle__input {
3046
+ position: absolute;
3047
+ width: 1px;
3048
+ height: 1px;
3049
+ padding: 0;
3050
+ margin: -1px;
3051
+ overflow: hidden;
3052
+ clip: rect(0, 0, 0, 0);
3053
+ white-space: nowrap;
3054
+ border: 0;
3055
+ }
3056
+
3057
+ /* Track (background pill) */
3058
+ .muka-toggle__track {
3059
+ display: flex;
3060
+ align-items: center;
3061
+ width: var(--toggle-track-width);
3062
+ height: var(--toggle-track-height);
3063
+ border-radius: var(--toggle-track-radius);
3064
+ background-color: var(--toggle-track-color-off);
3065
+ transition: background-color 0.2s ease;
3066
+ box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.16);
3067
+ position: relative;
3068
+ }
3069
+
3070
+ /* Knob (sliding circle) */
3071
+ .muka-toggle__knob {
3072
+ position: absolute;
3073
+ width: var(--toggle-knob-size);
3074
+ height: var(--toggle-knob-size);
3075
+ border-radius: var(--border-radius-full);
3076
+ background-color: var(--toggle-knob-color-default);
3077
+ box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1);
3078
+ left: var(--toggle-knob-offset);
3079
+ transition: left 0.2s ease, transform 0.2s ease;
3080
+ }
3081
+
3082
+ /* Focus state */
3083
+ .muka-toggle__input:focus-visible + .muka-toggle__track {
3084
+ outline: 2px solid var(--color-border-focus);
3085
+ outline-offset: 2px;
3086
+ }
3087
+
3088
+ /* Checked (on) state */
3089
+ .muka-toggle__input:checked + .muka-toggle__track {
3090
+ background-color: var(--toggle-track-color-on);
3091
+ }
3092
+
3093
+ .muka-toggle__input:checked + .muka-toggle__track .muka-toggle__knob {
3094
+ left: calc(var(--toggle-track-width) - var(--toggle-knob-size) - var(--toggle-knob-offset));
3095
+ }
3096
+
3097
+ /* Disabled state */
3098
+ .muka-toggle--disabled .muka-toggle__track {
3099
+ background-color: var(--toggle-track-color-disabled);
3100
+ box-shadow: none;
3101
+ }
3102
+
3103
+ .muka-toggle--disabled .muka-toggle__knob {
3104
+ background-color: var(--toggle-knob-color-disabled);
3105
+ box-shadow: none;
3106
+ }
3107
+
3108
+ /* Divider */
3109
+ .muka-toggle__divider {
3110
+ position: absolute;
3111
+ bottom: 0;
3112
+ left: 0;
3113
+ right: 0;
3114
+ height: 1px;
3115
+ background-color: var(--color-border-muted);
3116
+ }
3117
+
3118
+
3119
+ /* Toast */
3120
+ /* Toast Component Styles - Using Muka Design Tokens */
3121
+
3122
+ .muka-toast {
3123
+ display: flex;
3124
+ align-items: flex-start;
2962
3125
  gap: var(--toast-gap);
2963
3126
  padding: var(--toast-padding-y) var(--toast-padding-x);
2964
3127
  border-radius: var(--toast-radius);
@@ -3678,166 +3841,249 @@ body {
3678
3841
  }
3679
3842
 
3680
3843
 
3681
- /* Toggle */
3682
- /* Toggle Component Styles - Using Muka Design Tokens */
3844
+ /* Textarea */
3845
+ /* Textarea Component Styles - Using Muka Design Tokens */
3683
3846
 
3684
- /* Wrapper container */
3685
- .muka-toggle {
3686
- display: flex;
3687
- align-items: center;
3847
+ .muka-textarea {
3848
+ display: inline-flex;
3849
+ flex-direction: column;
3688
3850
  gap: var(--spacing-2);
3689
- position: relative;
3690
- padding: var(--spacing-4) 0;
3691
- }
3692
-
3693
- .muka-toggle--with-caption {
3694
- padding: var(--spacing-5) 0;
3695
- }
3696
-
3697
- .muka-toggle--disabled {
3698
- opacity: 0.6;
3699
3851
  }
3700
3852
 
3701
- /* Icon */
3702
- .muka-toggle__icon {
3703
- display: flex;
3704
- align-items: center;
3705
- justify-content: center;
3706
- flex-shrink: 0;
3707
- width: var(--icon-size-default);
3708
- height: var(--icon-size-default);
3853
+ /* Label */
3854
+ .muka-textarea__label {
3709
3855
  color: var(--color-text-default-default);
3856
+ cursor: pointer;
3710
3857
  }
3711
3858
 
3712
- .muka-toggle__icon svg {
3713
- width: 100%;
3714
- height: 100%;
3715
- }
3716
-
3717
- /* Content area (label + caption) */
3718
- .muka-toggle__content {
3719
- display: flex;
3720
- flex-direction: column;
3721
- flex: 1;
3722
- min-width: 0;
3723
- gap: var(--spacing-1);
3859
+ .muka-textarea__label--sm {
3860
+ font-family: var(--text-label-sm-semibold-fontFamily);
3861
+ font-weight: var(--text-label-sm-semibold-fontWeight);
3862
+ font-size: var(--text-label-sm-semibold-fontSize);
3863
+ line-height: var(--text-label-sm-semibold-lineHeight);
3724
3864
  }
3725
3865
 
3726
- /* Label */
3727
- .muka-toggle__label {
3728
- font-family: var(--text-label-lg-regular-fontFamily);
3729
- font-weight: var(--text-label-lg-regular-fontWeight);
3730
- font-size: var(--text-label-lg-regular-fontSize);
3731
- line-height: var(--text-label-lg-regular-lineHeight);
3732
- color: var(--color-text-default-default);
3733
- cursor: pointer;
3866
+ .muka-textarea__label--md {
3867
+ font-family: var(--text-label-md-semibold-fontFamily);
3868
+ font-weight: var(--text-label-md-semibold-fontWeight);
3869
+ font-size: var(--text-label-md-semibold-fontSize);
3870
+ line-height: var(--text-label-md-semibold-lineHeight);
3734
3871
  }
3735
3872
 
3736
- .muka-toggle--with-caption .muka-toggle__label {
3873
+ .muka-textarea__label--lg {
3737
3874
  font-family: var(--text-label-lg-semibold-fontFamily);
3738
3875
  font-weight: var(--text-label-lg-semibold-fontWeight);
3739
3876
  font-size: var(--text-label-lg-semibold-fontSize);
3740
3877
  line-height: var(--text-label-lg-semibold-lineHeight);
3741
3878
  }
3742
3879
 
3743
- .muka-toggle--disabled .muka-toggle__label {
3744
- color: var(--color-text-subtle-default);
3745
- cursor: not-allowed;
3746
- }
3747
-
3748
- /* Caption */
3749
- .muka-toggle__caption {
3750
- font-family: var(--text-body-base-regular-fontFamily);
3751
- font-weight: var(--text-body-base-regular-fontWeight);
3752
- font-size: var(--text-body-base-regular-fontSize);
3753
- line-height: var(--text-body-base-regular-lineHeight);
3754
- color: var(--color-text-subtle-default);
3755
- }
3756
-
3757
- /* Switch container */
3758
- .muka-toggle__switch {
3759
- position: relative;
3760
- display: inline-flex;
3761
- flex-shrink: 0;
3762
- cursor: pointer;
3880
+ .muka-textarea__required {
3881
+ color: var(--color-state-error-default);
3763
3882
  }
3764
3883
 
3765
- .muka-toggle--disabled .muka-toggle__switch {
3766
- cursor: not-allowed;
3884
+ /* Field container */
3885
+ .muka-textarea__field {
3886
+ display: flex;
3887
+ background-color: var(--input-field-color-default-background);
3888
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
3889
+ border-radius: var(--input-field-radius-md);
3890
+ padding: var(--input-field-padding-y) var(--input-field-padding-x);
3891
+ transition: border-color 0.2s ease, background-color 0.2s ease;
3892
+ box-sizing: border-box;
3767
3893
  }
3768
3894
 
3769
- /* Hidden native input */
3770
- .muka-toggle__input {
3771
- position: absolute;
3772
- width: 1px;
3773
- height: 1px;
3774
- padding: 0;
3775
- margin: -1px;
3776
- overflow: hidden;
3777
- clip: rect(0, 0, 0, 0);
3778
- white-space: nowrap;
3779
- border: 0;
3895
+ .muka-textarea__field--sm {
3896
+ min-height: var(--input-textarea-height-sm);
3897
+ border-radius: var(--input-field-radius-sm);
3780
3898
  }
3781
3899
 
3782
- /* Track (background pill) */
3783
- .muka-toggle__track {
3784
- display: flex;
3785
- align-items: center;
3786
- width: var(--toggle-track-width);
3787
- height: var(--toggle-track-height);
3788
- border-radius: var(--toggle-track-radius);
3789
- background-color: var(--toggle-track-color-off);
3790
- transition: background-color 0.2s ease;
3791
- box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.16);
3792
- position: relative;
3900
+ .muka-textarea__field--md {
3901
+ min-height: var(--input-textarea-height-default);
3902
+ border-radius: var(--input-field-radius-md);
3793
3903
  }
3794
3904
 
3795
- /* Knob (sliding circle) */
3796
- .muka-toggle__knob {
3797
- position: absolute;
3798
- width: var(--toggle-knob-size);
3799
- height: var(--toggle-knob-size);
3800
- border-radius: var(--border-radius-full);
3801
- background-color: var(--toggle-knob-color-default);
3802
- box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1);
3803
- left: var(--toggle-knob-offset);
3804
- transition: left 0.2s ease, transform 0.2s ease;
3905
+ .muka-textarea__field--lg {
3906
+ min-height: var(--input-textarea-height-lg);
3907
+ border-radius: var(--input-field-radius-lg);
3805
3908
  }
3806
3909
 
3807
3910
  /* Focus state */
3808
- .muka-toggle__input:focus-visible + .muka-toggle__track {
3809
- outline: 2px solid var(--color-border-focus);
3810
- outline-offset: 2px;
3811
- }
3812
-
3813
- /* Checked (on) state */
3814
- .muka-toggle__input:checked + .muka-toggle__track {
3815
- background-color: var(--toggle-track-color-on);
3911
+ .muka-textarea__field--focused:not(.muka-textarea__field--disabled) {
3912
+ border-width: var(--border-width-bold);
3913
+ border-color: var(--input-field-color-focus-border);
3914
+ background-color: var(--input-field-color-focus-background);
3915
+ padding: calc(var(--input-field-padding-y) - 1px) calc(var(--input-field-padding-x) - 1px);
3816
3916
  }
3817
3917
 
3818
- .muka-toggle__input:checked + .muka-toggle__track .muka-toggle__knob {
3819
- left: calc(var(--toggle-track-width) - var(--toggle-knob-size) - var(--toggle-knob-offset));
3918
+ /* Error state */
3919
+ .muka-textarea__field--error:not(.muka-textarea__field--disabled) {
3920
+ border-width: var(--border-width-bold);
3921
+ border-color: var(--input-field-color-error-border);
3922
+ background-color: var(--input-field-color-error-background);
3923
+ padding: calc(var(--input-field-padding-y) - 1px) calc(var(--input-field-padding-x) - 1px);
3820
3924
  }
3821
3925
 
3822
3926
  /* Disabled state */
3823
- .muka-toggle--disabled .muka-toggle__track {
3824
- background-color: var(--toggle-track-color-disabled);
3825
- box-shadow: none;
3826
- }
3827
-
3828
- .muka-toggle--disabled .muka-toggle__knob {
3829
- background-color: var(--toggle-knob-color-disabled);
3830
- box-shadow: none;
3927
+ .muka-textarea__field--disabled {
3928
+ background-color: var(--input-field-color-disabled-background);
3929
+ border-color: var(--input-field-color-disabled-border);
3930
+ cursor: not-allowed;
3831
3931
  }
3832
3932
 
3833
- /* Divider */
3834
- .muka-toggle__divider {
3835
- position: absolute;
3836
- bottom: 0;
3837
- left: 0;
3838
- right: 0;
3839
- height: 1px;
3840
- background-color: var(--color-border-muted);
3933
+ /* Native textarea */
3934
+ .muka-textarea__native {
3935
+ flex: 1;
3936
+ border: none;
3937
+ outline: none;
3938
+ background: transparent;
3939
+ color: var(--input-field-color-default-foreground);
3940
+ font-family: var(--text-input-md-fontFamily);
3941
+ font-weight: var(--text-input-md-fontWeight);
3942
+ font-size: var(--text-input-md-fontSize);
3943
+ line-height: var(--text-input-md-lineHeight);
3944
+ padding: 0;
3945
+ width: 100%;
3946
+ min-width: 0;
3947
+ }
3948
+
3949
+ .muka-textarea__field--sm .muka-textarea__native {
3950
+ font-family: var(--text-input-sm-fontFamily);
3951
+ font-weight: var(--text-input-sm-fontWeight);
3952
+ font-size: var(--text-input-sm-fontSize);
3953
+ line-height: var(--text-input-sm-lineHeight);
3954
+ }
3955
+
3956
+ .muka-textarea__field--lg .muka-textarea__native {
3957
+ font-family: var(--text-input-lg-fontFamily);
3958
+ font-weight: var(--text-input-lg-fontWeight);
3959
+ font-size: var(--text-input-lg-fontSize);
3960
+ line-height: var(--text-input-lg-lineHeight);
3961
+ }
3962
+
3963
+ .muka-textarea__native::placeholder {
3964
+ color: var(--color-text-subtle-default);
3965
+ }
3966
+
3967
+ .muka-textarea__field--disabled .muka-textarea__native {
3968
+ color: var(--input-field-color-disabled-foreground);
3969
+ cursor: not-allowed;
3970
+ }
3971
+
3972
+ /* Footer (helper/error + count) */
3973
+ .muka-textarea__footer {
3974
+ display: flex;
3975
+ justify-content: space-between;
3976
+ align-items: flex-start;
3977
+ gap: var(--spacing-2);
3978
+ }
3979
+
3980
+ .muka-textarea__helper {
3981
+ font-family: var(--text-label-sm-regular-fontFamily);
3982
+ font-weight: var(--text-label-sm-regular-fontWeight);
3983
+ font-size: var(--text-label-sm-regular-fontSize);
3984
+ line-height: var(--text-label-sm-regular-lineHeight);
3985
+ color: var(--color-text-subtle-default);
3986
+ margin: 0;
3987
+ }
3988
+
3989
+ .muka-textarea__error {
3990
+ font-family: var(--text-label-sm-regular-fontFamily);
3991
+ font-weight: var(--text-label-sm-regular-fontWeight);
3992
+ font-size: var(--text-label-sm-regular-fontSize);
3993
+ line-height: var(--text-label-sm-regular-lineHeight);
3994
+ color: var(--color-state-error-default);
3995
+ margin: 0;
3996
+ }
3997
+
3998
+ .muka-textarea__count {
3999
+ font-family: var(--text-label-sm-regular-fontFamily);
4000
+ font-weight: var(--text-label-sm-regular-fontWeight);
4001
+ font-size: var(--text-label-sm-regular-fontSize);
4002
+ line-height: var(--text-label-sm-regular-lineHeight);
4003
+ color: var(--color-text-subtle-default);
4004
+ margin-left: auto;
4005
+ }
4006
+
4007
+
4008
+ /* TextLink */
4009
+ /* TextLink Component Styles - Using Muka Design Tokens */
4010
+
4011
+ .muka-text-link {
4012
+ display: inline;
4013
+ cursor: pointer;
4014
+ text-decoration: underline;
4015
+ /* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
4016
+ text-underline-offset: 0.2em;
4017
+ text-decoration-thickness: from-font;
4018
+ /* Rounds the focus ring's corners; the link itself has no visible box. */
4019
+ border-radius: var(--border-radius-sm);
4020
+ transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
4021
+ }
4022
+
4023
+ /* ─── Sizes ───────────────────────────────────────────────
4024
+ Mirrors the body text scale so a link matches the copy it sits in. */
4025
+ .muka-text-link--sm {
4026
+ font-family: var(--text-body-sm-regular-fontFamily);
4027
+ font-weight: var(--text-body-sm-regular-fontWeight);
4028
+ font-size: var(--text-body-sm-regular-fontSize);
4029
+ line-height: var(--text-body-sm-regular-lineHeight);
4030
+ }
4031
+
4032
+ .muka-text-link--base {
4033
+ font-family: var(--text-body-base-regular-fontFamily);
4034
+ font-weight: var(--text-body-base-regular-fontWeight);
4035
+ font-size: var(--text-body-base-regular-fontSize);
4036
+ line-height: var(--text-body-base-regular-lineHeight);
4037
+ }
4038
+
4039
+ .muka-text-link--lg {
4040
+ font-family: var(--text-body-lg-regular-fontFamily);
4041
+ font-weight: var(--text-body-lg-regular-fontWeight);
4042
+ font-size: var(--text-body-lg-regular-fontSize);
4043
+ line-height: var(--text-body-lg-regular-lineHeight);
4044
+ }
4045
+
4046
+ /* ─── Variant: default (accent) ───────────────────────────
4047
+ Visited repeats the default colour on purpose: the design treats visited and
4048
+ default the same, and pinning it stops the browser's purple from showing. */
4049
+ .muka-text-link--default,
4050
+ .muka-text-link--default:visited {
4051
+ color: var(--color-text-action-default);
4052
+ }
4053
+
4054
+ .muka-text-link--default:hover,
4055
+ .muka-text-link--default:focus-visible {
4056
+ color: var(--color-text-action-hover);
4057
+ }
4058
+
4059
+ .muka-text-link--default:active {
4060
+ color: var(--color-text-action-pressed);
4061
+ }
4062
+
4063
+ /* ─── Variant: subtle (neutral) ───────────────────────────
4064
+ Hover, focus and pressed all darken to the default text colour. */
4065
+ .muka-text-link--subtle,
4066
+ .muka-text-link--subtle:visited {
4067
+ color: var(--color-text-subtle-default);
4068
+ }
4069
+
4070
+ .muka-text-link--subtle:hover,
4071
+ .muka-text-link--subtle:focus-visible,
4072
+ .muka-text-link--subtle:active {
4073
+ color: var(--color-text-default-default);
4074
+ }
4075
+
4076
+ /* ─── Focus ───────────────────────────────────────────────
4077
+ Same ring as every other focusable Muka component. */
4078
+ .muka-text-link:focus-visible {
4079
+ outline: 2px solid var(--color-border-focus);
4080
+ outline-offset: 2px;
4081
+ }
4082
+
4083
+ @media (prefers-reduced-motion: reduce) {
4084
+ .muka-text-link {
4085
+ transition: none;
4086
+ }
3841
4087
  }
3842
4088
 
3843
4089
 
@@ -4031,252 +4277,6 @@ body {
4031
4277
  }
4032
4278
 
4033
4279
 
4034
- /* Textarea */
4035
- /* Textarea Component Styles - Using Muka Design Tokens */
4036
-
4037
- .muka-textarea {
4038
- display: inline-flex;
4039
- flex-direction: column;
4040
- gap: var(--spacing-2);
4041
- }
4042
-
4043
- /* Label */
4044
- .muka-textarea__label {
4045
- color: var(--color-text-default-default);
4046
- cursor: pointer;
4047
- }
4048
-
4049
- .muka-textarea__label--sm {
4050
- font-family: var(--text-label-sm-semibold-fontFamily);
4051
- font-weight: var(--text-label-sm-semibold-fontWeight);
4052
- font-size: var(--text-label-sm-semibold-fontSize);
4053
- line-height: var(--text-label-sm-semibold-lineHeight);
4054
- }
4055
-
4056
- .muka-textarea__label--md {
4057
- font-family: var(--text-label-md-semibold-fontFamily);
4058
- font-weight: var(--text-label-md-semibold-fontWeight);
4059
- font-size: var(--text-label-md-semibold-fontSize);
4060
- line-height: var(--text-label-md-semibold-lineHeight);
4061
- }
4062
-
4063
- .muka-textarea__label--lg {
4064
- font-family: var(--text-label-lg-semibold-fontFamily);
4065
- font-weight: var(--text-label-lg-semibold-fontWeight);
4066
- font-size: var(--text-label-lg-semibold-fontSize);
4067
- line-height: var(--text-label-lg-semibold-lineHeight);
4068
- }
4069
-
4070
- .muka-textarea__required {
4071
- color: var(--color-state-error-default);
4072
- }
4073
-
4074
- /* Field container */
4075
- .muka-textarea__field {
4076
- display: flex;
4077
- background-color: var(--input-field-color-default-background);
4078
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
4079
- border-radius: var(--input-field-radius-md);
4080
- padding: var(--input-field-padding-y) var(--input-field-padding-x);
4081
- transition: border-color 0.2s ease, background-color 0.2s ease;
4082
- box-sizing: border-box;
4083
- }
4084
-
4085
- .muka-textarea__field--sm {
4086
- min-height: var(--input-textarea-height-sm);
4087
- border-radius: var(--input-field-radius-sm);
4088
- }
4089
-
4090
- .muka-textarea__field--md {
4091
- min-height: var(--input-textarea-height-default);
4092
- border-radius: var(--input-field-radius-md);
4093
- }
4094
-
4095
- .muka-textarea__field--lg {
4096
- min-height: var(--input-textarea-height-lg);
4097
- border-radius: var(--input-field-radius-lg);
4098
- }
4099
-
4100
- /* Focus state */
4101
- .muka-textarea__field--focused:not(.muka-textarea__field--disabled) {
4102
- border-width: var(--border-width-bold);
4103
- border-color: var(--input-field-color-focus-border);
4104
- background-color: var(--input-field-color-focus-background);
4105
- padding: calc(var(--input-field-padding-y) - 1px) calc(var(--input-field-padding-x) - 1px);
4106
- }
4107
-
4108
- /* Error state */
4109
- .muka-textarea__field--error:not(.muka-textarea__field--disabled) {
4110
- border-width: var(--border-width-bold);
4111
- border-color: var(--input-field-color-error-border);
4112
- background-color: var(--input-field-color-error-background);
4113
- padding: calc(var(--input-field-padding-y) - 1px) calc(var(--input-field-padding-x) - 1px);
4114
- }
4115
-
4116
- /* Disabled state */
4117
- .muka-textarea__field--disabled {
4118
- background-color: var(--input-field-color-disabled-background);
4119
- border-color: var(--input-field-color-disabled-border);
4120
- cursor: not-allowed;
4121
- }
4122
-
4123
- /* Native textarea */
4124
- .muka-textarea__native {
4125
- flex: 1;
4126
- border: none;
4127
- outline: none;
4128
- background: transparent;
4129
- color: var(--input-field-color-default-foreground);
4130
- font-family: var(--text-input-md-fontFamily);
4131
- font-weight: var(--text-input-md-fontWeight);
4132
- font-size: var(--text-input-md-fontSize);
4133
- line-height: var(--text-input-md-lineHeight);
4134
- padding: 0;
4135
- width: 100%;
4136
- min-width: 0;
4137
- }
4138
-
4139
- .muka-textarea__field--sm .muka-textarea__native {
4140
- font-family: var(--text-input-sm-fontFamily);
4141
- font-weight: var(--text-input-sm-fontWeight);
4142
- font-size: var(--text-input-sm-fontSize);
4143
- line-height: var(--text-input-sm-lineHeight);
4144
- }
4145
-
4146
- .muka-textarea__field--lg .muka-textarea__native {
4147
- font-family: var(--text-input-lg-fontFamily);
4148
- font-weight: var(--text-input-lg-fontWeight);
4149
- font-size: var(--text-input-lg-fontSize);
4150
- line-height: var(--text-input-lg-lineHeight);
4151
- }
4152
-
4153
- .muka-textarea__native::placeholder {
4154
- color: var(--color-text-subtle-default);
4155
- }
4156
-
4157
- .muka-textarea__field--disabled .muka-textarea__native {
4158
- color: var(--input-field-color-disabled-foreground);
4159
- cursor: not-allowed;
4160
- }
4161
-
4162
- /* Footer (helper/error + count) */
4163
- .muka-textarea__footer {
4164
- display: flex;
4165
- justify-content: space-between;
4166
- align-items: flex-start;
4167
- gap: var(--spacing-2);
4168
- }
4169
-
4170
- .muka-textarea__helper {
4171
- font-family: var(--text-label-sm-regular-fontFamily);
4172
- font-weight: var(--text-label-sm-regular-fontWeight);
4173
- font-size: var(--text-label-sm-regular-fontSize);
4174
- line-height: var(--text-label-sm-regular-lineHeight);
4175
- color: var(--color-text-subtle-default);
4176
- margin: 0;
4177
- }
4178
-
4179
- .muka-textarea__error {
4180
- font-family: var(--text-label-sm-regular-fontFamily);
4181
- font-weight: var(--text-label-sm-regular-fontWeight);
4182
- font-size: var(--text-label-sm-regular-fontSize);
4183
- line-height: var(--text-label-sm-regular-lineHeight);
4184
- color: var(--color-state-error-default);
4185
- margin: 0;
4186
- }
4187
-
4188
- .muka-textarea__count {
4189
- font-family: var(--text-label-sm-regular-fontFamily);
4190
- font-weight: var(--text-label-sm-regular-fontWeight);
4191
- font-size: var(--text-label-sm-regular-fontSize);
4192
- line-height: var(--text-label-sm-regular-lineHeight);
4193
- color: var(--color-text-subtle-default);
4194
- margin-left: auto;
4195
- }
4196
-
4197
-
4198
- /* TextLink */
4199
- /* TextLink Component Styles - Using Muka Design Tokens */
4200
-
4201
- .muka-text-link {
4202
- display: inline;
4203
- cursor: pointer;
4204
- text-decoration: underline;
4205
- /* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
4206
- text-underline-offset: 0.2em;
4207
- text-decoration-thickness: from-font;
4208
- /* Rounds the focus ring's corners; the link itself has no visible box. */
4209
- border-radius: var(--border-radius-sm);
4210
- transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
4211
- }
4212
-
4213
- /* ─── Sizes ───────────────────────────────────────────────
4214
- Mirrors the body text scale so a link matches the copy it sits in. */
4215
- .muka-text-link--sm {
4216
- font-family: var(--text-body-sm-regular-fontFamily);
4217
- font-weight: var(--text-body-sm-regular-fontWeight);
4218
- font-size: var(--text-body-sm-regular-fontSize);
4219
- line-height: var(--text-body-sm-regular-lineHeight);
4220
- }
4221
-
4222
- .muka-text-link--base {
4223
- font-family: var(--text-body-base-regular-fontFamily);
4224
- font-weight: var(--text-body-base-regular-fontWeight);
4225
- font-size: var(--text-body-base-regular-fontSize);
4226
- line-height: var(--text-body-base-regular-lineHeight);
4227
- }
4228
-
4229
- .muka-text-link--lg {
4230
- font-family: var(--text-body-lg-regular-fontFamily);
4231
- font-weight: var(--text-body-lg-regular-fontWeight);
4232
- font-size: var(--text-body-lg-regular-fontSize);
4233
- line-height: var(--text-body-lg-regular-lineHeight);
4234
- }
4235
-
4236
- /* ─── Variant: default (accent) ───────────────────────────
4237
- Visited repeats the default colour on purpose: the design treats visited and
4238
- default the same, and pinning it stops the browser's purple from showing. */
4239
- .muka-text-link--default,
4240
- .muka-text-link--default:visited {
4241
- color: var(--color-text-action-default);
4242
- }
4243
-
4244
- .muka-text-link--default:hover,
4245
- .muka-text-link--default:focus-visible {
4246
- color: var(--color-text-action-hover);
4247
- }
4248
-
4249
- .muka-text-link--default:active {
4250
- color: var(--color-text-action-pressed);
4251
- }
4252
-
4253
- /* ─── Variant: subtle (neutral) ───────────────────────────
4254
- Hover, focus and pressed all darken to the default text colour. */
4255
- .muka-text-link--subtle,
4256
- .muka-text-link--subtle:visited {
4257
- color: var(--color-text-subtle-default);
4258
- }
4259
-
4260
- .muka-text-link--subtle:hover,
4261
- .muka-text-link--subtle:focus-visible,
4262
- .muka-text-link--subtle:active {
4263
- color: var(--color-text-default-default);
4264
- }
4265
-
4266
- /* ─── Focus ───────────────────────────────────────────────
4267
- Same ring as every other focusable Muka component. */
4268
- .muka-text-link:focus-visible {
4269
- outline: 2px solid var(--color-border-focus);
4270
- outline-offset: 2px;
4271
- }
4272
-
4273
- @media (prefers-reduced-motion: reduce) {
4274
- .muka-text-link {
4275
- transition: none;
4276
- }
4277
- }
4278
-
4279
-
4280
4280
  /* Table */
4281
4281
  /* Table Component Styles - Using Muka Design Tokens */
4282
4282
 
@@ -4567,65 +4567,173 @@ body {
4567
4567
  text-align: left;
4568
4568
  }
4569
4569
 
4570
- .muka-table__cell--center,
4571
- .muka-table__header-cell--center {
4572
- text-align: center;
4570
+ .muka-table__cell--center,
4571
+ .muka-table__header-cell--center {
4572
+ text-align: center;
4573
+ }
4574
+
4575
+ .muka-table__cell--right,
4576
+ .muka-table__header-cell--right {
4577
+ text-align: right;
4578
+ }
4579
+
4580
+ /* ========================================
4581
+ HEADER CELLS
4582
+ ======================================== */
4583
+
4584
+ .muka-table__header-cell {
4585
+ font-family: var(--text-body-base-bold-fontFamily);
4586
+ font-weight: var(--text-body-base-bold-fontWeight);
4587
+ font-size: var(--text-body-base-bold-fontSize);
4588
+ line-height: var(--text-body-base-bold-lineHeight);
4589
+ color: var(--color-text-default-default);
4590
+ white-space: nowrap;
4591
+ }
4592
+
4593
+ .muka-table__header-content {
4594
+ display: inline-flex;
4595
+ align-items: center;
4596
+ gap: var(--spacing-1);
4597
+ }
4598
+
4599
+ /* Sortable */
4600
+ .muka-table__header-cell--sortable {
4601
+ cursor: pointer;
4602
+ user-select: none;
4603
+ }
4604
+
4605
+ .muka-table__header-cell--sortable:hover {
4606
+ color: var(--color-text-default-default);
4607
+ }
4608
+
4609
+ .muka-table__header-cell--sortable:focus-visible {
4610
+ outline: 2px solid var(--color-action-default);
4611
+ outline-offset: -2px;
4612
+ }
4613
+
4614
+ /* Sort icon */
4615
+ .muka-table__sort-icon {
4616
+ width: 1em;
4617
+ height: 1em;
4618
+ opacity: 0.4;
4619
+ transition: opacity 0.2s, transform 0.2s;
4620
+ }
4621
+
4622
+ .muka-table__header-cell--sortable:hover .muka-table__sort-icon {
4623
+ opacity: 0.7;
4624
+ }
4625
+
4626
+ .muka-table__sort-icon--asc,
4627
+ .muka-table__sort-icon--desc {
4628
+ opacity: 1;
4629
+ }
4630
+
4631
+
4632
+ /* SwipeActions */
4633
+ /* SwipeActions Component Styles */
4634
+
4635
+ .muka-swipe-actions {
4636
+ position: relative;
4637
+ overflow: hidden;
4638
+ touch-action: pan-y;
4639
+ -webkit-user-select: none;
4640
+ user-select: none;
4641
+ background-color: var(--color-surface-level3);
4642
+ }
4643
+
4644
+ .muka-swipe-actions--disabled {
4645
+ touch-action: auto;
4646
+ }
4647
+
4648
+ /* ─── Row that holds the actual content ────────────────── */
4649
+
4650
+ .muka-swipe-actions__row {
4651
+ position: relative;
4652
+ z-index: 1;
4653
+ background-color: inherit;
4654
+ will-change: transform;
4655
+ }
4656
+
4657
+ /* ─── Action panels — sit beneath the row ──────────────── */
4658
+
4659
+ .muka-swipe-actions__panel {
4660
+ position: absolute;
4661
+ top: 0;
4662
+ bottom: 0;
4663
+ display: flex;
4664
+ align-items: stretch;
4665
+ z-index: 0;
4666
+ }
4667
+
4668
+ .muka-swipe-actions__panel--left {
4669
+ left: 0;
4670
+ }
4671
+
4672
+ .muka-swipe-actions__panel--right {
4673
+ right: 0;
4573
4674
  }
4574
4675
 
4575
- .muka-table__cell--right,
4576
- .muka-table__header-cell--right {
4577
- text-align: right;
4676
+ /* ─── Single action button ─────────────────────────────── */
4677
+
4678
+ .muka-swipe-actions__button {
4679
+ display: flex;
4680
+ flex-direction: column;
4681
+ align-items: center;
4682
+ justify-content: center;
4683
+ gap: var(--spacing-1);
4684
+ border: none;
4685
+ cursor: pointer;
4686
+ padding: var(--spacing-2);
4687
+ background-color: var(--color-surface-level2);
4688
+ color: var(--color-text-default-default);
4689
+ font-family: var(--text-label-sm-semibold-fontFamily);
4690
+ font-weight: var(--text-label-sm-semibold-fontWeight);
4691
+ font-size: var(--text-label-sm-semibold-fontSize);
4692
+ line-height: var(--text-label-sm-semibold-lineHeight);
4693
+ -webkit-tap-highlight-color: transparent;
4694
+ transition: filter 0.12s ease;
4578
4695
  }
4579
4696
 
4580
- /* ========================================
4581
- HEADER CELLS
4582
- ======================================== */
4697
+ .muka-swipe-actions__button:hover {
4698
+ filter: brightness(0.95);
4699
+ }
4583
4700
 
4584
- .muka-table__header-cell {
4585
- font-family: var(--text-body-base-bold-fontFamily);
4586
- font-weight: var(--text-body-base-bold-fontWeight);
4587
- font-size: var(--text-body-base-bold-fontSize);
4588
- line-height: var(--text-body-base-bold-lineHeight);
4589
- color: var(--color-text-default-default);
4590
- white-space: nowrap;
4701
+ .muka-swipe-actions__button:focus-visible {
4702
+ outline: 2px solid var(--color-action-default);
4703
+ outline-offset: -2px;
4591
4704
  }
4592
4705
 
4593
- .muka-table__header-content {
4706
+ .muka-swipe-actions__button-icon {
4594
4707
  display: inline-flex;
4595
4708
  align-items: center;
4596
- gap: var(--spacing-1);
4709
+ justify-content: center;
4597
4710
  }
4598
4711
 
4599
- /* Sortable */
4600
- .muka-table__header-cell--sortable {
4601
- cursor: pointer;
4602
- user-select: none;
4603
- }
4712
+ /* ─── Color variants ───────────────────────────────────── */
4604
4713
 
4605
- .muka-table__header-cell--sortable:hover {
4714
+ .muka-swipe-actions__button--neutral {
4715
+ background-color: var(--color-surface-level2);
4606
4716
  color: var(--color-text-default-default);
4607
4717
  }
4608
4718
 
4609
- .muka-table__header-cell--sortable:focus-visible {
4610
- outline: 2px solid var(--color-action-default);
4611
- outline-offset: -2px;
4719
+ .muka-swipe-actions__button--primary {
4720
+ background-color: var(--color-action-default);
4721
+ color: var(--color-text-default-inverse);
4612
4722
  }
4613
4723
 
4614
- /* Sort icon */
4615
- .muka-table__sort-icon {
4616
- width: 1em;
4617
- height: 1em;
4618
- opacity: 0.4;
4619
- transition: opacity 0.2s, transform 0.2s;
4724
+ .muka-swipe-actions__button--success {
4725
+ background-color: var(--color-state-success-default);
4726
+ color: var(--color-text-default-inverse);
4620
4727
  }
4621
4728
 
4622
- .muka-table__header-cell--sortable:hover .muka-table__sort-icon {
4623
- opacity: 0.7;
4729
+ .muka-swipe-actions__button--warning {
4730
+ background-color: var(--color-state-warning-default);
4731
+ color: var(--color-text-default-default);
4624
4732
  }
4625
4733
 
4626
- .muka-table__sort-icon--asc,
4627
- .muka-table__sort-icon--desc {
4628
- opacity: 1;
4734
+ .muka-swipe-actions__button--destructive {
4735
+ background-color: var(--color-state-error-default);
4736
+ color: var(--color-text-default-inverse);
4629
4737
  }
4630
4738
 
4631
4739
 
@@ -4792,114 +4900,6 @@ body {
4792
4900
  }
4793
4901
 
4794
4902
 
4795
- /* SwipeActions */
4796
- /* SwipeActions Component Styles */
4797
-
4798
- .muka-swipe-actions {
4799
- position: relative;
4800
- overflow: hidden;
4801
- touch-action: pan-y;
4802
- -webkit-user-select: none;
4803
- user-select: none;
4804
- background-color: var(--color-surface-level3);
4805
- }
4806
-
4807
- .muka-swipe-actions--disabled {
4808
- touch-action: auto;
4809
- }
4810
-
4811
- /* ─── Row that holds the actual content ────────────────── */
4812
-
4813
- .muka-swipe-actions__row {
4814
- position: relative;
4815
- z-index: 1;
4816
- background-color: inherit;
4817
- will-change: transform;
4818
- }
4819
-
4820
- /* ─── Action panels — sit beneath the row ──────────────── */
4821
-
4822
- .muka-swipe-actions__panel {
4823
- position: absolute;
4824
- top: 0;
4825
- bottom: 0;
4826
- display: flex;
4827
- align-items: stretch;
4828
- z-index: 0;
4829
- }
4830
-
4831
- .muka-swipe-actions__panel--left {
4832
- left: 0;
4833
- }
4834
-
4835
- .muka-swipe-actions__panel--right {
4836
- right: 0;
4837
- }
4838
-
4839
- /* ─── Single action button ─────────────────────────────── */
4840
-
4841
- .muka-swipe-actions__button {
4842
- display: flex;
4843
- flex-direction: column;
4844
- align-items: center;
4845
- justify-content: center;
4846
- gap: var(--spacing-1);
4847
- border: none;
4848
- cursor: pointer;
4849
- padding: var(--spacing-2);
4850
- background-color: var(--color-surface-level2);
4851
- color: var(--color-text-default-default);
4852
- font-family: var(--text-label-sm-semibold-fontFamily);
4853
- font-weight: var(--text-label-sm-semibold-fontWeight);
4854
- font-size: var(--text-label-sm-semibold-fontSize);
4855
- line-height: var(--text-label-sm-semibold-lineHeight);
4856
- -webkit-tap-highlight-color: transparent;
4857
- transition: filter 0.12s ease;
4858
- }
4859
-
4860
- .muka-swipe-actions__button:hover {
4861
- filter: brightness(0.95);
4862
- }
4863
-
4864
- .muka-swipe-actions__button:focus-visible {
4865
- outline: 2px solid var(--color-action-default);
4866
- outline-offset: -2px;
4867
- }
4868
-
4869
- .muka-swipe-actions__button-icon {
4870
- display: inline-flex;
4871
- align-items: center;
4872
- justify-content: center;
4873
- }
4874
-
4875
- /* ─── Color variants ───────────────────────────────────── */
4876
-
4877
- .muka-swipe-actions__button--neutral {
4878
- background-color: var(--color-surface-level2);
4879
- color: var(--color-text-default-default);
4880
- }
4881
-
4882
- .muka-swipe-actions__button--primary {
4883
- background-color: var(--color-action-default);
4884
- color: var(--color-text-default-inverse);
4885
- }
4886
-
4887
- .muka-swipe-actions__button--success {
4888
- background-color: var(--color-state-success-default);
4889
- color: var(--color-text-default-inverse);
4890
- }
4891
-
4892
- .muka-swipe-actions__button--warning {
4893
- background-color: var(--color-state-warning-default);
4894
- color: var(--color-text-default-default);
4895
- }
4896
-
4897
- .muka-swipe-actions__button--destructive {
4898
- background-color: var(--color-state-error-default);
4899
- color: var(--color-text-default-inverse);
4900
- }
4901
-
4902
-
4903
4903
  /* SocialSignInButton */
4904
4904
  /*
4905
4905
  * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
@@ -10820,6 +10820,38 @@ li.muka-listitem {
10820
10820
  }
10821
10821
 
10822
10822
 
10823
+ /* DatePicker */
10824
+ /* DatePicker — compact native date field. */
10825
+ /* Field/label/helper styling is inherited from ../Input/Input.css. */
10826
+
10827
+ /* Adopt the field typography on the native date input. */
10828
+ .muka-datepicker__field .muka-input__native {
10829
+ font-family: var(--text-input-md-fontFamily);
10830
+ font-size: var(--text-input-md-fontSize);
10831
+ line-height: var(--text-input-md-lineHeight);
10832
+ }
10833
+
10834
+ .muka-datepicker__field--sm .muka-input__native {
10835
+ font-family: var(--text-input-sm-fontFamily);
10836
+ font-size: var(--text-input-sm-fontSize);
10837
+ line-height: var(--text-input-sm-lineHeight);
10838
+ }
10839
+
10840
+ /* Tint the browser calendar indicator to match the field foreground. */
10841
+ .muka-datepicker__field .muka-input__native::-webkit-calendar-picker-indicator {
10842
+ cursor: pointer;
10843
+ opacity: 0.6;
10844
+ }
10845
+
10846
+ .muka-datepicker__field .muka-input__native::-webkit-calendar-picker-indicator:hover {
10847
+ opacity: 1;
10848
+ }
10849
+
10850
+ .muka-datepicker__field .muka-input__native:disabled {
10851
+ cursor: not-allowed;
10852
+ }
10853
+
10854
+
10823
10855
  /* Dialog */
10824
10856
  /* Dialog Component Styles */
10825
10857
 
@@ -11081,42 +11113,10 @@ li.muka-listitem {
11081
11113
  box-shadow: var(--shadow-level2);
11082
11114
  }
11083
11115
 
11084
- .muka-dialog .muka-bottombar {
11085
- position: relative;
11086
- z-index: 1;
11087
- box-shadow: var(--shadow-level2);
11088
- }
11089
-
11090
-
11091
- /* DatePicker */
11092
- /* DatePicker — compact native date field. */
11093
- /* Field/label/helper styling is inherited from ../Input/Input.css. */
11094
-
11095
- /* Adopt the field typography on the native date input. */
11096
- .muka-datepicker__field .muka-input__native {
11097
- font-family: var(--text-input-md-fontFamily);
11098
- font-size: var(--text-input-md-fontSize);
11099
- line-height: var(--text-input-md-lineHeight);
11100
- }
11101
-
11102
- .muka-datepicker__field--sm .muka-input__native {
11103
- font-family: var(--text-input-sm-fontFamily);
11104
- font-size: var(--text-input-sm-fontSize);
11105
- line-height: var(--text-input-sm-lineHeight);
11106
- }
11107
-
11108
- /* Tint the browser calendar indicator to match the field foreground. */
11109
- .muka-datepicker__field .muka-input__native::-webkit-calendar-picker-indicator {
11110
- cursor: pointer;
11111
- opacity: 0.6;
11112
- }
11113
-
11114
- .muka-datepicker__field .muka-input__native::-webkit-calendar-picker-indicator:hover {
11115
- opacity: 1;
11116
- }
11117
-
11118
- .muka-datepicker__field .muka-input__native:disabled {
11119
- cursor: not-allowed;
11116
+ .muka-dialog .muka-bottombar {
11117
+ position: relative;
11118
+ z-index: 1;
11119
+ box-shadow: var(--shadow-level2);
11120
11120
  }
11121
11121
 
11122
11122
 
@@ -12437,6 +12437,128 @@ li.muka-listitem {
12437
12437
  }
12438
12438
 
12439
12439
 
12440
+ /* ChatPhotoGrid */
12441
+ /* ChatPhotoGrid Component Styles */
12442
+
12443
+ /*
12444
+ * The grid clips to its own radius and the tiles stay square, so only the four
12445
+ * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12446
+ */
12447
+ .muka-chat-photo-grid {
12448
+ display: grid;
12449
+ gap: var(--chatphotogrid-gap);
12450
+ width: 100%;
12451
+ min-width: 0;
12452
+ overflow: hidden;
12453
+ border-radius: var(--chatphotogrid-radius);
12454
+ }
12455
+
12456
+ /* ─── Tiles ────────────────────────────────────────────── */
12457
+
12458
+ .muka-chat-photo-grid__tile {
12459
+ position: relative;
12460
+ display: block;
12461
+ overflow: hidden;
12462
+ min-width: 0;
12463
+ padding: 0;
12464
+ margin: 0;
12465
+ border: none;
12466
+ background-color: var(--chatphotogrid-color-placeholder);
12467
+ aspect-ratio: 1 / 1;
12468
+ }
12469
+
12470
+ button.muka-chat-photo-grid__tile {
12471
+ cursor: pointer;
12472
+ appearance: none;
12473
+ }
12474
+
12475
+ button.muka-chat-photo-grid__tile:focus-visible {
12476
+ outline: var(--border-width-bold) solid var(--color-border-focus);
12477
+ /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12478
+ outline-offset: calc(-1 * var(--border-width-bold));
12479
+ }
12480
+
12481
+ .muka-chat-photo-grid__image {
12482
+ display: block;
12483
+ width: 100%;
12484
+ height: 100%;
12485
+ object-fit: cover;
12486
+ }
12487
+
12488
+ /* ─── Overflow tile ────────────────────────────────────── */
12489
+
12490
+ .muka-chat-photo-grid__overflow {
12491
+ position: absolute;
12492
+ inset: 0;
12493
+ display: flex;
12494
+ align-items: center;
12495
+ justify-content: center;
12496
+ background-color: var(--chatphotogrid-color-overflow-background);
12497
+ color: var(--chatphotogrid-color-overflow-foreground);
12498
+ font-family: var(--text-body-2xl-regular-fontFamily);
12499
+ font-weight: var(--text-body-2xl-regular-fontWeight);
12500
+ font-size: var(--text-body-2xl-regular-fontSize);
12501
+ line-height: var(--text-body-2xl-regular-lineHeight);
12502
+ }
12503
+
12504
+ /* ─── Layouts ──────────────────────────────────────────── */
12505
+
12506
+ .muka-chat-photo-grid--1 {
12507
+ grid-template-columns: 1fr;
12508
+ }
12509
+
12510
+ .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12511
+ aspect-ratio: 4 / 3;
12512
+ }
12513
+
12514
+ .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12515
+ aspect-ratio: 3 / 4;
12516
+ }
12517
+
12518
+ .muka-chat-photo-grid--2 {
12519
+ grid-template-columns: repeat(2, 1fr);
12520
+ }
12521
+
12522
+ .muka-chat-photo-grid--3 {
12523
+ grid-template-columns: repeat(3, 1fr);
12524
+ }
12525
+
12526
+ .muka-chat-photo-grid--4 {
12527
+ grid-template-columns: repeat(2, 1fr);
12528
+ }
12529
+
12530
+ /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12531
+ .muka-chat-photo-grid--5 {
12532
+ grid-template-columns: repeat(6, 1fr);
12533
+ }
12534
+
12535
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12536
+ grid-column: span 3;
12537
+ }
12538
+
12539
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12540
+ grid-column: span 2;
12541
+ }
12542
+
12543
+ .muka-chat-photo-grid--6,
12544
+ .muka-chat-photo-grid--overflow {
12545
+ grid-template-columns: repeat(3, 1fr);
12546
+ }
12547
+
12548
+ /* ─── Print ────────────────────────────────────────────── */
12549
+
12550
+ @media print {
12551
+ .muka-chat-photo-grid {
12552
+ break-inside: avoid;
12553
+ }
12554
+
12555
+ .muka-chat-photo-grid__image {
12556
+ print-color-adjust: exact;
12557
+ -webkit-print-color-adjust: exact;
12558
+ }
12559
+ }
12560
+
12561
+
12440
12562
  /* Checkbox */
12441
12563
  /* Checkbox Component Styles - Using Muka Design Tokens */
12442
12564
 
@@ -12571,158 +12693,36 @@ li.muka-listitem {
12571
12693
  box-shadow: none;
12572
12694
  }
12573
12695
 
12574
- .muka-checkbox__input:disabled:checked + .muka-checkbox__indicator .muka-checkbox__icon--check,
12575
- .muka-checkbox__input:disabled:indeterminate + .muka-checkbox__indicator .muka-checkbox__icon--indeterminate {
12576
- color: var(--checkbox-color-disabled-icon);
12577
- }
12578
-
12579
- /* Label text */
12580
- .muka-checkbox__label {
12581
- font-family: var(--text-label-lg-regular-fontFamily);
12582
- font-weight: var(--text-label-lg-regular-fontWeight);
12583
- font-size: var(--text-label-lg-regular-fontSize);
12584
- line-height: var(--text-label-lg-regular-lineHeight);
12585
- color: var(--color-text-default-default);
12586
- }
12587
-
12588
- .muka-checkbox--sm .muka-checkbox__label {
12589
- font-family: var(--text-label-md-regular-fontFamily);
12590
- font-weight: var(--text-label-md-regular-fontWeight);
12591
- font-size: var(--text-label-md-regular-fontSize);
12592
- line-height: var(--text-label-md-regular-lineHeight);
12593
- }
12594
-
12595
- .muka-checkbox--lg .muka-checkbox__label {
12596
- font-family: var(--text-label-xl-regular-fontFamily);
12597
- font-weight: var(--text-label-xl-regular-fontWeight);
12598
- font-size: var(--text-label-xl-regular-fontSize);
12599
- line-height: var(--text-label-xl-regular-lineHeight);
12600
- }
12601
-
12602
- .muka-checkbox--disabled .muka-checkbox__label {
12603
- color: var(--color-text-subtle-default);
12604
- }
12605
-
12606
-
12607
- /* ChatPhotoGrid */
12608
- /* ChatPhotoGrid Component Styles */
12609
-
12610
- /*
12611
- * The grid clips to its own radius and the tiles stay square, so only the four
12612
- * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12613
- */
12614
- .muka-chat-photo-grid {
12615
- display: grid;
12616
- gap: var(--chatphotogrid-gap);
12617
- width: 100%;
12618
- min-width: 0;
12619
- overflow: hidden;
12620
- border-radius: var(--chatphotogrid-radius);
12621
- }
12622
-
12623
- /* ─── Tiles ────────────────────────────────────────────── */
12624
-
12625
- .muka-chat-photo-grid__tile {
12626
- position: relative;
12627
- display: block;
12628
- overflow: hidden;
12629
- min-width: 0;
12630
- padding: 0;
12631
- margin: 0;
12632
- border: none;
12633
- background-color: var(--chatphotogrid-color-placeholder);
12634
- aspect-ratio: 1 / 1;
12635
- }
12636
-
12637
- button.muka-chat-photo-grid__tile {
12638
- cursor: pointer;
12639
- appearance: none;
12640
- }
12641
-
12642
- button.muka-chat-photo-grid__tile:focus-visible {
12643
- outline: var(--border-width-bold) solid var(--color-border-focus);
12644
- /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12645
- outline-offset: calc(-1 * var(--border-width-bold));
12646
- }
12647
-
12648
- .muka-chat-photo-grid__image {
12649
- display: block;
12650
- width: 100%;
12651
- height: 100%;
12652
- object-fit: cover;
12653
- }
12654
-
12655
- /* ─── Overflow tile ────────────────────────────────────── */
12656
-
12657
- .muka-chat-photo-grid__overflow {
12658
- position: absolute;
12659
- inset: 0;
12660
- display: flex;
12661
- align-items: center;
12662
- justify-content: center;
12663
- background-color: var(--chatphotogrid-color-overflow-background);
12664
- color: var(--chatphotogrid-color-overflow-foreground);
12665
- font-family: var(--text-body-2xl-regular-fontFamily);
12666
- font-weight: var(--text-body-2xl-regular-fontWeight);
12667
- font-size: var(--text-body-2xl-regular-fontSize);
12668
- line-height: var(--text-body-2xl-regular-lineHeight);
12669
- }
12670
-
12671
- /* ─── Layouts ──────────────────────────────────────────── */
12672
-
12673
- .muka-chat-photo-grid--1 {
12674
- grid-template-columns: 1fr;
12675
- }
12676
-
12677
- .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12678
- aspect-ratio: 4 / 3;
12679
- }
12680
-
12681
- .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12682
- aspect-ratio: 3 / 4;
12683
- }
12684
-
12685
- .muka-chat-photo-grid--2 {
12686
- grid-template-columns: repeat(2, 1fr);
12687
- }
12688
-
12689
- .muka-chat-photo-grid--3 {
12690
- grid-template-columns: repeat(3, 1fr);
12691
- }
12692
-
12693
- .muka-chat-photo-grid--4 {
12694
- grid-template-columns: repeat(2, 1fr);
12695
- }
12696
-
12697
- /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12698
- .muka-chat-photo-grid--5 {
12699
- grid-template-columns: repeat(6, 1fr);
12700
- }
12701
-
12702
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12703
- grid-column: span 3;
12696
+ .muka-checkbox__input:disabled:checked + .muka-checkbox__indicator .muka-checkbox__icon--check,
12697
+ .muka-checkbox__input:disabled:indeterminate + .muka-checkbox__indicator .muka-checkbox__icon--indeterminate {
12698
+ color: var(--checkbox-color-disabled-icon);
12704
12699
  }
12705
12700
 
12706
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12707
- grid-column: span 2;
12701
+ /* Label text */
12702
+ .muka-checkbox__label {
12703
+ font-family: var(--text-label-lg-regular-fontFamily);
12704
+ font-weight: var(--text-label-lg-regular-fontWeight);
12705
+ font-size: var(--text-label-lg-regular-fontSize);
12706
+ line-height: var(--text-label-lg-regular-lineHeight);
12707
+ color: var(--color-text-default-default);
12708
12708
  }
12709
12709
 
12710
- .muka-chat-photo-grid--6,
12711
- .muka-chat-photo-grid--overflow {
12712
- grid-template-columns: repeat(3, 1fr);
12710
+ .muka-checkbox--sm .muka-checkbox__label {
12711
+ font-family: var(--text-label-md-regular-fontFamily);
12712
+ font-weight: var(--text-label-md-regular-fontWeight);
12713
+ font-size: var(--text-label-md-regular-fontSize);
12714
+ line-height: var(--text-label-md-regular-lineHeight);
12713
12715
  }
12714
12716
 
12715
- /* ─── Print ────────────────────────────────────────────── */
12716
-
12717
- @media print {
12718
- .muka-chat-photo-grid {
12719
- break-inside: avoid;
12720
- }
12717
+ .muka-checkbox--lg .muka-checkbox__label {
12718
+ font-family: var(--text-label-xl-regular-fontFamily);
12719
+ font-weight: var(--text-label-xl-regular-fontWeight);
12720
+ font-size: var(--text-label-xl-regular-fontSize);
12721
+ line-height: var(--text-label-xl-regular-lineHeight);
12722
+ }
12721
12723
 
12722
- .muka-chat-photo-grid__image {
12723
- print-color-adjust: exact;
12724
- -webkit-print-color-adjust: exact;
12725
- }
12724
+ .muka-checkbox--disabled .muka-checkbox__label {
12725
+ color: var(--color-text-subtle-default);
12726
12726
  }
12727
12727
 
12728
12728
 
@@ -14011,6 +14011,114 @@ button.muka-chat-photo-grid__tile:focus-visible {
14011
14011
  }
14012
14012
 
14013
14013
 
14014
+ /* BadgeNumber */
14015
+ /* BadgeNumber Component Styles - Using Muka Design Tokens */
14016
+
14017
+ .muka-badge-number {
14018
+ display: inline-flex;
14019
+ align-items: center;
14020
+ justify-content: center;
14021
+ border-radius: var(--border-radius-full);
14022
+ white-space: nowrap;
14023
+ user-select: none;
14024
+ box-sizing: border-box;
14025
+ }
14026
+
14027
+ /*
14028
+ * Sizes — fixed height, matching min-width (so a single digit renders as a
14029
+ * circle), horizontal padding, and bold label typography. Vertical centering
14030
+ * is handled by the fixed height + align-items: center.
14031
+ */
14032
+ .muka-badge-number--2xs {
14033
+ height: var(--badge-number-size-2xs);
14034
+ min-width: var(--badge-number-size-2xs);
14035
+ padding: 0 var(--badge-number-padding-2xs);
14036
+ font-family: var(--text-label-xs-bold-fontFamily);
14037
+ font-weight: var(--text-label-xs-bold-fontWeight);
14038
+ font-size: var(--text-label-xs-bold-fontSize);
14039
+ line-height: var(--text-label-xs-bold-lineHeight);
14040
+ }
14041
+
14042
+ .muka-badge-number--xs {
14043
+ height: var(--badge-number-size-xs);
14044
+ min-width: var(--badge-number-size-xs);
14045
+ padding: 0 var(--badge-number-padding-xs);
14046
+ font-family: var(--text-label-sm-bold-fontFamily);
14047
+ font-weight: var(--text-label-sm-bold-fontWeight);
14048
+ font-size: var(--text-label-sm-bold-fontSize);
14049
+ line-height: var(--text-label-sm-bold-lineHeight);
14050
+ }
14051
+
14052
+ .muka-badge-number--sm {
14053
+ height: var(--badge-number-size-sm);
14054
+ min-width: var(--badge-number-size-sm);
14055
+ padding: 0 var(--badge-number-padding-sm);
14056
+ font-family: var(--text-label-md-bold-fontFamily);
14057
+ font-weight: var(--text-label-md-bold-fontWeight);
14058
+ font-size: var(--text-label-md-bold-fontSize);
14059
+ line-height: var(--text-label-md-bold-lineHeight);
14060
+ }
14061
+
14062
+ .muka-badge-number--md {
14063
+ height: var(--badge-number-size-md);
14064
+ min-width: var(--badge-number-size-md);
14065
+ padding: 0 var(--badge-number-padding-md);
14066
+ font-family: var(--text-label-lg-bold-fontFamily);
14067
+ font-weight: var(--text-label-lg-bold-fontWeight);
14068
+ font-size: var(--text-label-lg-bold-fontSize);
14069
+ line-height: var(--text-label-lg-bold-lineHeight);
14070
+ }
14071
+
14072
+ .muka-badge-number--lg {
14073
+ height: var(--badge-number-size-lg);
14074
+ min-width: var(--badge-number-size-lg);
14075
+ padding: 0 var(--badge-number-padding-lg);
14076
+ font-family: var(--text-label-2xl-bold-fontFamily);
14077
+ font-weight: var(--text-label-2xl-bold-fontWeight);
14078
+ font-size: var(--text-label-2xl-bold-fontSize);
14079
+ line-height: var(--text-label-2xl-bold-lineHeight);
14080
+ }
14081
+
14082
+ .muka-badge-number__label {
14083
+ /*
14084
+ * The badge sets a tight line-height for compact sizing, which would clip
14085
+ * glyph descenders; give the label a roomier line-height. Vertical centering
14086
+ * is unaffected because the badge height is fixed and content is centered.
14087
+ */
14088
+ line-height: normal;
14089
+ }
14090
+
14091
+ /* Neutral variant */
14092
+ .muka-badge-number--neutral {
14093
+ background-color: var(--color-surface-level1);
14094
+ color: var(--color-text-default-default);
14095
+ }
14096
+
14097
+ /* Info variant */
14098
+ .muka-badge-number--info {
14099
+ background-color: var(--color-state-info-contrast);
14100
+ color: var(--color-text-default-inverse);
14101
+ }
14102
+
14103
+ /* Success variant */
14104
+ .muka-badge-number--success {
14105
+ background-color: var(--color-state-success-contrast);
14106
+ color: var(--color-text-default-inverse);
14107
+ }
14108
+
14109
+ /* Warning variant */
14110
+ .muka-badge-number--warning {
14111
+ background-color: var(--color-state-warning-contrast);
14112
+ color: var(--color-text-default-inverse);
14113
+ }
14114
+
14115
+ /* Error variant */
14116
+ .muka-badge-number--error {
14117
+ background-color: var(--color-state-error-contrast);
14118
+ color: var(--color-text-default-inverse);
14119
+ }
14120
+
14121
+
14014
14122
  /* BottomBar */
14015
14123
  /* BottomBar Component Styles */
14016
14124
 
@@ -14327,114 +14435,6 @@ button.muka-chat-photo-grid__tile:focus-visible {
14327
14435
  }
14328
14436
 
14329
14437
 
14330
- /* BadgeNumber */
14331
- /* BadgeNumber Component Styles - Using Muka Design Tokens */
14332
-
14333
- .muka-badge-number {
14334
- display: inline-flex;
14335
- align-items: center;
14336
- justify-content: center;
14337
- border-radius: var(--border-radius-full);
14338
- white-space: nowrap;
14339
- user-select: none;
14340
- box-sizing: border-box;
14341
- }
14342
-
14343
- /*
14344
- * Sizes — fixed height, matching min-width (so a single digit renders as a
14345
- * circle), horizontal padding, and bold label typography. Vertical centering
14346
- * is handled by the fixed height + align-items: center.
14347
- */
14348
- .muka-badge-number--2xs {
14349
- height: var(--badge-number-size-2xs);
14350
- min-width: var(--badge-number-size-2xs);
14351
- padding: 0 var(--badge-number-padding-2xs);
14352
- font-family: var(--text-label-xs-bold-fontFamily);
14353
- font-weight: var(--text-label-xs-bold-fontWeight);
14354
- font-size: var(--text-label-xs-bold-fontSize);
14355
- line-height: var(--text-label-xs-bold-lineHeight);
14356
- }
14357
-
14358
- .muka-badge-number--xs {
14359
- height: var(--badge-number-size-xs);
14360
- min-width: var(--badge-number-size-xs);
14361
- padding: 0 var(--badge-number-padding-xs);
14362
- font-family: var(--text-label-sm-bold-fontFamily);
14363
- font-weight: var(--text-label-sm-bold-fontWeight);
14364
- font-size: var(--text-label-sm-bold-fontSize);
14365
- line-height: var(--text-label-sm-bold-lineHeight);
14366
- }
14367
-
14368
- .muka-badge-number--sm {
14369
- height: var(--badge-number-size-sm);
14370
- min-width: var(--badge-number-size-sm);
14371
- padding: 0 var(--badge-number-padding-sm);
14372
- font-family: var(--text-label-md-bold-fontFamily);
14373
- font-weight: var(--text-label-md-bold-fontWeight);
14374
- font-size: var(--text-label-md-bold-fontSize);
14375
- line-height: var(--text-label-md-bold-lineHeight);
14376
- }
14377
-
14378
- .muka-badge-number--md {
14379
- height: var(--badge-number-size-md);
14380
- min-width: var(--badge-number-size-md);
14381
- padding: 0 var(--badge-number-padding-md);
14382
- font-family: var(--text-label-lg-bold-fontFamily);
14383
- font-weight: var(--text-label-lg-bold-fontWeight);
14384
- font-size: var(--text-label-lg-bold-fontSize);
14385
- line-height: var(--text-label-lg-bold-lineHeight);
14386
- }
14387
-
14388
- .muka-badge-number--lg {
14389
- height: var(--badge-number-size-lg);
14390
- min-width: var(--badge-number-size-lg);
14391
- padding: 0 var(--badge-number-padding-lg);
14392
- font-family: var(--text-label-2xl-bold-fontFamily);
14393
- font-weight: var(--text-label-2xl-bold-fontWeight);
14394
- font-size: var(--text-label-2xl-bold-fontSize);
14395
- line-height: var(--text-label-2xl-bold-lineHeight);
14396
- }
14397
-
14398
- .muka-badge-number__label {
14399
- /*
14400
- * The badge sets a tight line-height for compact sizing, which would clip
14401
- * glyph descenders; give the label a roomier line-height. Vertical centering
14402
- * is unaffected because the badge height is fixed and content is centered.
14403
- */
14404
- line-height: normal;
14405
- }
14406
-
14407
- /* Neutral variant */
14408
- .muka-badge-number--neutral {
14409
- background-color: var(--color-surface-level1);
14410
- color: var(--color-text-default-default);
14411
- }
14412
-
14413
- /* Info variant */
14414
- .muka-badge-number--info {
14415
- background-color: var(--color-state-info-contrast);
14416
- color: var(--color-text-default-inverse);
14417
- }
14418
-
14419
- /* Success variant */
14420
- .muka-badge-number--success {
14421
- background-color: var(--color-state-success-contrast);
14422
- color: var(--color-text-default-inverse);
14423
- }
14424
-
14425
- /* Warning variant */
14426
- .muka-badge-number--warning {
14427
- background-color: var(--color-state-warning-contrast);
14428
- color: var(--color-text-default-inverse);
14429
- }
14430
-
14431
- /* Error variant */
14432
- .muka-badge-number--error {
14433
- background-color: var(--color-state-error-contrast);
14434
- color: var(--color-text-default-inverse);
14435
- }
14436
-
14437
-
14438
14438
  /* Badge */
14439
14439
  /* Badge Component Styles - Using Muka Design Tokens */
14440
14440