@revikornmann/muka-ui 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/build/manifest.json +4 -1
  2. package/dist/cjs/components/Button/Button.css +29 -0
  3. package/dist/cjs/components/Button/Button.js +1 -1
  4. package/dist/cjs/components/Checkbox/Checkbox.js +44 -5
  5. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  6. package/dist/cjs/components/DatePicker/DatePicker.js +51 -6
  7. package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
  8. package/dist/cjs/components/Form/Form.css +17 -0
  9. package/dist/cjs/components/Form/Form.js +31 -0
  10. package/dist/cjs/components/Form/Form.js.map +1 -0
  11. package/dist/cjs/components/Form/index.js +13 -0
  12. package/dist/cjs/components/Form/index.js.map +1 -0
  13. package/dist/cjs/components/Form/useForm.js +95 -0
  14. package/dist/cjs/components/Form/useForm.js.map +1 -0
  15. package/dist/cjs/components/Input/Input.js +52 -5
  16. package/dist/cjs/components/Input/Input.js.map +1 -1
  17. package/dist/cjs/components/LicensePlateInput/LicensePlateInput.js +50 -5
  18. package/dist/cjs/components/LicensePlateInput/LicensePlateInput.js.map +1 -1
  19. package/dist/cjs/components/NumberInput/NumberInput.js +51 -6
  20. package/dist/cjs/components/NumberInput/NumberInput.js.map +1 -1
  21. package/dist/cjs/components/Radio/Radio.js +37 -5
  22. package/dist/cjs/components/Radio/Radio.js.map +1 -1
  23. package/dist/cjs/components/RangeSlider/RangeSlider.js +37 -5
  24. package/dist/cjs/components/RangeSlider/RangeSlider.js.map +1 -1
  25. package/dist/cjs/components/Select/Select.js +53 -7
  26. package/dist/cjs/components/Select/Select.js.map +1 -1
  27. package/dist/cjs/components/Textarea/Textarea.js +43 -5
  28. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  29. package/dist/cjs/components/Toggle/Toggle.js +37 -5
  30. package/dist/cjs/components/Toggle/Toggle.js.map +1 -1
  31. package/dist/cjs/components/index.js +6 -3
  32. package/dist/cjs/components/index.js.map +1 -1
  33. package/dist/esm/components/Button/Button.css +29 -0
  34. package/dist/esm/components/Button/Button.js +1 -1
  35. package/dist/esm/components/Checkbox/Checkbox.js +11 -4
  36. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  37. package/dist/esm/components/DatePicker/DatePicker.js +18 -5
  38. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  39. package/dist/esm/components/Form/Form.css +17 -0
  40. package/dist/esm/components/Form/Form.js +27 -0
  41. package/dist/esm/components/Form/Form.js.map +1 -0
  42. package/dist/esm/components/Form/index.js +4 -0
  43. package/dist/esm/components/Form/index.js.map +1 -0
  44. package/dist/esm/components/Form/useForm.js +92 -0
  45. package/dist/esm/components/Form/useForm.js.map +1 -0
  46. package/dist/esm/components/Input/Input.js +19 -4
  47. package/dist/esm/components/Input/Input.js.map +1 -1
  48. package/dist/esm/components/LicensePlateInput/LicensePlateInput.js +17 -4
  49. package/dist/esm/components/LicensePlateInput/LicensePlateInput.js.map +1 -1
  50. package/dist/esm/components/NumberInput/NumberInput.js +18 -5
  51. package/dist/esm/components/NumberInput/NumberInput.js.map +1 -1
  52. package/dist/esm/components/Radio/Radio.js +4 -4
  53. package/dist/esm/components/Radio/Radio.js.map +1 -1
  54. package/dist/esm/components/RangeSlider/RangeSlider.js +4 -4
  55. package/dist/esm/components/RangeSlider/RangeSlider.js.map +1 -1
  56. package/dist/esm/components/Select/Select.js +18 -5
  57. package/dist/esm/components/Select/Select.js.map +1 -1
  58. package/dist/esm/components/Textarea/Textarea.js +10 -4
  59. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  60. package/dist/esm/components/Toggle/Toggle.js +4 -4
  61. package/dist/esm/components/Toggle/Toggle.js.map +1 -1
  62. package/dist/esm/components/index.js +1 -0
  63. package/dist/esm/components/index.js.map +1 -1
  64. package/dist/styles/components/Button.css +29 -0
  65. package/dist/styles/components/Form.css +17 -0
  66. package/dist/styles/index.css +772 -685
  67. package/dist/styles/muka-dark.css +772 -685
  68. package/dist/styles/muka-light.css +772 -685
  69. package/dist/styles/tokens-bouwplan-dark.css +38 -0
  70. package/dist/styles/tokens-bouwplan-light.css +38 -0
  71. package/dist/styles/tokens-fscl-dark.css +38 -0
  72. package/dist/styles/tokens-fscl-light.css +38 -0
  73. package/dist/styles/tokens-grip-dark.css +38 -0
  74. package/dist/styles/tokens-grip-light.css +38 -0
  75. package/dist/styles/tokens-muka-dark.css +38 -0
  76. package/dist/styles/tokens-muka-light.css +38 -0
  77. package/dist/styles/tokens-wireframe-dark.css +80 -42
  78. package/dist/styles/tokens-wireframe-light.css +80 -42
  79. package/dist/styles/wireframe-dark.css +814 -727
  80. package/dist/styles/wireframe-light.css +814 -727
  81. package/dist/types/components/Button/Button.d.ts +2 -2
  82. package/dist/types/components/Button/Button.d.ts.map +1 -1
  83. package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
  84. package/dist/types/components/Checkbox/Checkbox.d.ts.map +1 -1
  85. package/dist/types/components/DatePicker/DatePicker.d.ts +5 -1
  86. package/dist/types/components/DatePicker/DatePicker.d.ts.map +1 -1
  87. package/dist/types/components/Form/Form.d.ts +34 -0
  88. package/dist/types/components/Form/Form.d.ts.map +1 -0
  89. package/dist/types/components/Form/index.d.ts +4 -0
  90. package/dist/types/components/Form/index.d.ts.map +1 -0
  91. package/dist/types/components/Form/useForm.d.ts +74 -0
  92. package/dist/types/components/Form/useForm.d.ts.map +1 -0
  93. package/dist/types/components/Input/Input.d.ts +5 -1
  94. package/dist/types/components/Input/Input.d.ts.map +1 -1
  95. package/dist/types/components/LicensePlateInput/LicensePlateInput.d.ts +5 -1
  96. package/dist/types/components/LicensePlateInput/LicensePlateInput.d.ts.map +1 -1
  97. package/dist/types/components/NumberInput/NumberInput.d.ts +5 -1
  98. package/dist/types/components/NumberInput/NumberInput.d.ts.map +1 -1
  99. package/dist/types/components/Radio/Radio.d.ts +1 -1
  100. package/dist/types/components/Radio/Radio.d.ts.map +1 -1
  101. package/dist/types/components/RangeSlider/RangeSlider.d.ts +1 -1
  102. package/dist/types/components/RangeSlider/RangeSlider.d.ts.map +1 -1
  103. package/dist/types/components/Select/Select.d.ts +7 -1
  104. package/dist/types/components/Select/Select.d.ts.map +1 -1
  105. package/dist/types/components/Textarea/Textarea.d.ts +5 -1
  106. package/dist/types/components/Textarea/Textarea.d.ts.map +1 -1
  107. package/dist/types/components/Toggle/Toggle.d.ts +1 -1
  108. package/dist/types/components/Toggle/Toggle.d.ts.map +1 -1
  109. package/dist/types/components/index.d.ts +1 -0
  110. package/dist/types/components/index.d.ts.map +1 -1
  111. package/package.json +1 -1
  112. package/tokens/t2-alias/brand/wireframe/radius.json +34 -0
  113. package/tokens/t4-components/button.json +56 -0
@@ -1592,6 +1592,18 @@ body {
1592
1592
  --button-color-ghost-border-hover: #2b2b30;
1593
1593
  --button-color-ghost-border-pressed: #2b2b30;
1594
1594
  --button-color-ghost-border-disabled: transparent;
1595
+ --button-color-muted-background-default: transparent;
1596
+ --button-color-muted-background-hover: transparent;
1597
+ --button-color-muted-background-pressed: transparent;
1598
+ --button-color-muted-background-disabled: transparent;
1599
+ --button-color-muted-foreground-default: #737387;
1600
+ --button-color-muted-foreground-hover: #e6e6ea;
1601
+ --button-color-muted-foreground-pressed: #e6e6ea;
1602
+ --button-color-muted-foreground-disabled: #737387;
1603
+ --button-color-muted-border-default: transparent;
1604
+ --button-color-muted-border-hover: #2b2b30;
1605
+ --button-color-muted-border-pressed: #2b2b30;
1606
+ --button-color-muted-border-disabled: transparent;
1595
1607
  --button-color-tertiary-background-default: #161618;
1596
1608
  --button-color-tertiary-background-hover: #161618;
1597
1609
  --button-color-tertiary-background-pressed: #232326;
@@ -2226,6 +2238,20 @@ body {
2226
2238
  }
2227
2239
  }
2228
2240
 
2241
+ /* Responsive overrides: xl (min-width: 1280px) */
2242
+ @media (min-width: 1280px) {
2243
+ :root {
2244
+ --section-padding-vertical-default: 3rem;
2245
+ --section-padding-vertical-compact: 2.5rem;
2246
+ --section-padding-vertical-spacious: 4rem;
2247
+ --section-padding-horizontal-default: 2.5rem;
2248
+ --section-padding-horizontal-compact: 1.5rem;
2249
+ --section-padding-horizontal-spacious: 3rem;
2250
+ --container-gap-default: 2rem;
2251
+ --container-gap-spacious: 3rem;
2252
+ }
2253
+ }
2254
+
2229
2255
  /* Layout mode: tablet (forced via data-layout attribute) */
2230
2256
  [data-layout="tablet"] {
2231
2257
  --section-padding-vertical-default: 2.5rem;
@@ -2251,6 +2277,18 @@ body {
2251
2277
  --container-gap-spacious: 3rem;
2252
2278
  }
2253
2279
 
2280
+ /* Layout mode: widescreen (forced via data-layout attribute) */
2281
+ [data-layout="widescreen"] {
2282
+ --section-padding-vertical-default: 3rem;
2283
+ --section-padding-vertical-compact: 2.5rem;
2284
+ --section-padding-vertical-spacious: 4rem;
2285
+ --section-padding-horizontal-default: 2.5rem;
2286
+ --section-padding-horizontal-compact: 1.5rem;
2287
+ --section-padding-horizontal-spacious: 3rem;
2288
+ --container-gap-default: 2rem;
2289
+ --container-gap-spacious: 3rem;
2290
+ }
2291
+
2254
2292
  /* Accessibility: disable motion for users who prefer reduced motion */
2255
2293
  @media (prefers-reduced-motion: reduce) {
2256
2294
  :root {
@@ -2793,6 +2831,196 @@ body {
2793
2831
  }
2794
2832
 
2795
2833
 
2834
+ /* Toast */
2835
+ /* Toast Component Styles - Using Muka Design Tokens */
2836
+
2837
+ .muka-toast {
2838
+ display: flex;
2839
+ align-items: flex-start;
2840
+ gap: var(--toast-gap);
2841
+ padding: var(--toast-padding-y) var(--toast-padding-x);
2842
+ border-radius: var(--toast-radius);
2843
+ box-shadow: var(--toast-shadow);
2844
+ min-width: var(--toast-width-min);
2845
+ max-width: var(--toast-width-max);
2846
+ pointer-events: auto;
2847
+ animation: muka-toast-slide-in 0.2s ease-out;
2848
+ }
2849
+
2850
+ /* Entry animation */
2851
+ @keyframes muka-toast-slide-in {
2852
+ from {
2853
+ opacity: 0;
2854
+ transform: translateY(8px);
2855
+ }
2856
+ to {
2857
+ opacity: 1;
2858
+ transform: translateY(0);
2859
+ }
2860
+ }
2861
+
2862
+ /* Position variants (for standalone use - typically managed by ToastProvider) */
2863
+ .muka-toast--top-right,
2864
+ .muka-toast--top-left,
2865
+ .muka-toast--top-center,
2866
+ .muka-toast--bottom-right,
2867
+ .muka-toast--bottom-left,
2868
+ .muka-toast--bottom-center {
2869
+ position: fixed;
2870
+ z-index: 9999;
2871
+ }
2872
+
2873
+ .muka-toast--top-right {
2874
+ top: var(--spacing-4);
2875
+ right: var(--spacing-4);
2876
+ }
2877
+
2878
+ .muka-toast--top-left {
2879
+ top: var(--spacing-4);
2880
+ left: var(--spacing-4);
2881
+ }
2882
+
2883
+ .muka-toast--top-center {
2884
+ top: var(--spacing-4);
2885
+ left: 50%;
2886
+ transform: translateX(-50%);
2887
+ }
2888
+
2889
+ .muka-toast--bottom-right {
2890
+ bottom: var(--spacing-4);
2891
+ right: var(--spacing-4);
2892
+ }
2893
+
2894
+ .muka-toast--bottom-left {
2895
+ bottom: var(--spacing-4);
2896
+ left: var(--spacing-4);
2897
+ }
2898
+
2899
+ .muka-toast--bottom-center {
2900
+ bottom: var(--spacing-4);
2901
+ left: 50%;
2902
+ transform: translateX(-50%);
2903
+ }
2904
+
2905
+ /* Variant: Info */
2906
+ .muka-toast--info {
2907
+ background-color: var(--toast-color-info-background);
2908
+ color: var(--toast-color-info-foreground);
2909
+ }
2910
+
2911
+ .muka-toast--info .muka-toast__icon {
2912
+ color: var(--toast-color-info-accent);
2913
+ }
2914
+
2915
+ /* Variant: Success */
2916
+ .muka-toast--success {
2917
+ background-color: var(--toast-color-success-background);
2918
+ color: var(--toast-color-success-foreground);
2919
+ }
2920
+
2921
+ .muka-toast--success .muka-toast__icon {
2922
+ color: var(--toast-color-success-accent);
2923
+ }
2924
+
2925
+ /* Variant: Warning */
2926
+ .muka-toast--warning {
2927
+ background-color: var(--toast-color-warning-background);
2928
+ color: var(--toast-color-warning-foreground);
2929
+ }
2930
+
2931
+ .muka-toast--warning .muka-toast__icon {
2932
+ color: var(--toast-color-warning-accent);
2933
+ }
2934
+
2935
+ /* Variant: Error */
2936
+ .muka-toast--error {
2937
+ background-color: var(--toast-color-error-background);
2938
+ color: var(--toast-color-error-foreground);
2939
+ }
2940
+
2941
+ .muka-toast--error .muka-toast__icon {
2942
+ color: var(--toast-color-error-accent);
2943
+ }
2944
+
2945
+ /* Icon */
2946
+ .muka-toast__icon {
2947
+ display: flex;
2948
+ align-items: center;
2949
+ justify-content: center;
2950
+ flex-shrink: 0;
2951
+ width: var(--toast-icon-size);
2952
+ height: var(--toast-icon-size);
2953
+ }
2954
+
2955
+ .muka-toast__icon svg {
2956
+ width: 100%;
2957
+ height: 100%;
2958
+ }
2959
+
2960
+ /* Content */
2961
+ .muka-toast__content {
2962
+ flex: 1;
2963
+ min-width: 0;
2964
+ }
2965
+
2966
+ .muka-toast__title {
2967
+ font-family: var(--text-label-md-semibold-fontFamily);
2968
+ font-weight: var(--text-label-md-semibold-fontWeight);
2969
+ font-size: var(--text-label-md-semibold-fontSize);
2970
+ line-height: var(--text-label-md-semibold-lineHeight);
2971
+ margin-bottom: var(--spacing-1);
2972
+ }
2973
+
2974
+ .muka-toast__message {
2975
+ font-family: var(--text-body-sm-regular-fontFamily);
2976
+ font-weight: var(--text-body-sm-regular-fontWeight);
2977
+ font-size: var(--text-body-sm-regular-fontSize);
2978
+ line-height: var(--text-body-sm-regular-lineHeight);
2979
+ }
2980
+
2981
+ /* Action slot */
2982
+ .muka-toast__action {
2983
+ display: flex;
2984
+ align-items: center;
2985
+ flex-shrink: 0;
2986
+ }
2987
+
2988
+ /* Dismiss button */
2989
+ .muka-toast__dismiss {
2990
+ display: flex;
2991
+ align-items: center;
2992
+ justify-content: center;
2993
+ flex-shrink: 0;
2994
+ width: 24px;
2995
+ height: 24px;
2996
+ padding: 0;
2997
+ margin: -2px -4px -2px 0;
2998
+ border: none;
2999
+ background: transparent;
3000
+ color: inherit;
3001
+ opacity: 0.7;
3002
+ cursor: pointer;
3003
+ border-radius: var(--border-radius-sm);
3004
+ transition: opacity 0.15s ease, background-color 0.15s ease;
3005
+ }
3006
+
3007
+ .muka-toast__dismiss:hover {
3008
+ opacity: 1;
3009
+ background-color: rgba(0, 0, 0, 0.05);
3010
+ }
3011
+
3012
+ .muka-toast__dismiss:focus-visible {
3013
+ outline: 2px solid var(--color-border-focus);
3014
+ outline-offset: 2px;
3015
+ opacity: 1;
3016
+ }
3017
+
3018
+ .muka-toast__dismiss svg {
3019
+ width: 16px;
3020
+ height: 16px;
3021
+ }
3022
+
3023
+
2796
3024
  /* Tile */
2797
3025
  /* Tile Component Styles - Using Muka Design Tokens */
2798
3026
 
@@ -3095,252 +3323,62 @@ body {
3095
3323
 
3096
3324
  .muka-tile__subheading {
3097
3325
  margin: 0;
3098
- color: var(--color-text-subtle-default);
3099
- }
3100
-
3101
- .muka-tile--lg .muka-tile__subheading {
3102
- font-family: var(--text-subheading-md-fontFamily);
3103
- font-weight: var(--text-subheading-md-fontWeight);
3104
- font-size: var(--text-subheading-md-fontSize);
3105
- line-height: var(--text-subheading-md-lineHeight);
3106
- }
3107
-
3108
- .muka-tile--md .muka-tile__subheading,
3109
- .muka-tile--sm .muka-tile__subheading {
3110
- font-family: var(--text-subheading-sm-fontFamily);
3111
- font-weight: var(--text-subheading-sm-fontWeight);
3112
- font-size: var(--text-subheading-sm-fontSize);
3113
- line-height: var(--text-subheading-sm-lineHeight);
3114
- }
3115
-
3116
- /* ─── Description typography ──────────────────────────── */
3117
-
3118
- .muka-tile__description {
3119
- margin: 0;
3120
- color: var(--color-text-default-default);
3121
- }
3122
-
3123
- .muka-tile--lg .muka-tile__description {
3124
- font-family: var(--text-body-lg-regular-fontFamily);
3125
- font-weight: var(--text-body-lg-regular-fontWeight);
3126
- font-size: var(--text-body-lg-regular-fontSize);
3127
- line-height: var(--text-body-lg-regular-lineHeight);
3128
- }
3129
-
3130
- .muka-tile--md .muka-tile__description,
3131
- .muka-tile--sm .muka-tile__description {
3132
- font-family: var(--text-body-base-regular-fontFamily);
3133
- font-weight: var(--text-body-base-regular-fontWeight);
3134
- font-size: var(--text-body-base-regular-fontSize);
3135
- line-height: var(--text-body-base-regular-lineHeight);
3136
- }
3137
-
3138
- /* Description overflow for medium */
3139
- .muka-tile--md .muka-tile__description {
3140
- overflow: hidden;
3141
- text-overflow: ellipsis;
3142
- }
3143
-
3144
- /* ─── Price slot ──────────────────────────────────────── */
3145
-
3146
- .muka-tile__price {
3147
- flex-shrink: 0;
3148
- }
3149
-
3150
- /* ─── Action slot ─────────────────────────────────────── */
3151
-
3152
- .muka-tile__action {
3153
- flex-shrink: 0;
3154
- }
3155
-
3156
-
3157
- /* Toast */
3158
- /* Toast Component Styles - Using Muka Design Tokens */
3159
-
3160
- .muka-toast {
3161
- display: flex;
3162
- align-items: flex-start;
3163
- gap: var(--toast-gap);
3164
- padding: var(--toast-padding-y) var(--toast-padding-x);
3165
- border-radius: var(--toast-radius);
3166
- box-shadow: var(--toast-shadow);
3167
- min-width: var(--toast-width-min);
3168
- max-width: var(--toast-width-max);
3169
- pointer-events: auto;
3170
- animation: muka-toast-slide-in 0.2s ease-out;
3171
- }
3172
-
3173
- /* Entry animation */
3174
- @keyframes muka-toast-slide-in {
3175
- from {
3176
- opacity: 0;
3177
- transform: translateY(8px);
3178
- }
3179
- to {
3180
- opacity: 1;
3181
- transform: translateY(0);
3182
- }
3183
- }
3184
-
3185
- /* Position variants (for standalone use - typically managed by ToastProvider) */
3186
- .muka-toast--top-right,
3187
- .muka-toast--top-left,
3188
- .muka-toast--top-center,
3189
- .muka-toast--bottom-right,
3190
- .muka-toast--bottom-left,
3191
- .muka-toast--bottom-center {
3192
- position: fixed;
3193
- z-index: 9999;
3194
- }
3195
-
3196
- .muka-toast--top-right {
3197
- top: var(--spacing-4);
3198
- right: var(--spacing-4);
3199
- }
3200
-
3201
- .muka-toast--top-left {
3202
- top: var(--spacing-4);
3203
- left: var(--spacing-4);
3204
- }
3205
-
3206
- .muka-toast--top-center {
3207
- top: var(--spacing-4);
3208
- left: 50%;
3209
- transform: translateX(-50%);
3210
- }
3211
-
3212
- .muka-toast--bottom-right {
3213
- bottom: var(--spacing-4);
3214
- right: var(--spacing-4);
3215
- }
3216
-
3217
- .muka-toast--bottom-left {
3218
- bottom: var(--spacing-4);
3219
- left: var(--spacing-4);
3220
- }
3221
-
3222
- .muka-toast--bottom-center {
3223
- bottom: var(--spacing-4);
3224
- left: 50%;
3225
- transform: translateX(-50%);
3226
- }
3227
-
3228
- /* Variant: Info */
3229
- .muka-toast--info {
3230
- background-color: var(--toast-color-info-background);
3231
- color: var(--toast-color-info-foreground);
3232
- }
3233
-
3234
- .muka-toast--info .muka-toast__icon {
3235
- color: var(--toast-color-info-accent);
3236
- }
3237
-
3238
- /* Variant: Success */
3239
- .muka-toast--success {
3240
- background-color: var(--toast-color-success-background);
3241
- color: var(--toast-color-success-foreground);
3242
- }
3243
-
3244
- .muka-toast--success .muka-toast__icon {
3245
- color: var(--toast-color-success-accent);
3246
- }
3247
-
3248
- /* Variant: Warning */
3249
- .muka-toast--warning {
3250
- background-color: var(--toast-color-warning-background);
3251
- color: var(--toast-color-warning-foreground);
3252
- }
3253
-
3254
- .muka-toast--warning .muka-toast__icon {
3255
- color: var(--toast-color-warning-accent);
3256
- }
3257
-
3258
- /* Variant: Error */
3259
- .muka-toast--error {
3260
- background-color: var(--toast-color-error-background);
3261
- color: var(--toast-color-error-foreground);
3262
- }
3263
-
3264
- .muka-toast--error .muka-toast__icon {
3265
- color: var(--toast-color-error-accent);
3266
- }
3267
-
3268
- /* Icon */
3269
- .muka-toast__icon {
3270
- display: flex;
3271
- align-items: center;
3272
- justify-content: center;
3273
- flex-shrink: 0;
3274
- width: var(--toast-icon-size);
3275
- height: var(--toast-icon-size);
3326
+ color: var(--color-text-subtle-default);
3276
3327
  }
3277
3328
 
3278
- .muka-toast__icon svg {
3279
- width: 100%;
3280
- height: 100%;
3329
+ .muka-tile--lg .muka-tile__subheading {
3330
+ font-family: var(--text-subheading-md-fontFamily);
3331
+ font-weight: var(--text-subheading-md-fontWeight);
3332
+ font-size: var(--text-subheading-md-fontSize);
3333
+ line-height: var(--text-subheading-md-lineHeight);
3281
3334
  }
3282
3335
 
3283
- /* Content */
3284
- .muka-toast__content {
3285
- flex: 1;
3286
- min-width: 0;
3336
+ .muka-tile--md .muka-tile__subheading,
3337
+ .muka-tile--sm .muka-tile__subheading {
3338
+ font-family: var(--text-subheading-sm-fontFamily);
3339
+ font-weight: var(--text-subheading-sm-fontWeight);
3340
+ font-size: var(--text-subheading-sm-fontSize);
3341
+ line-height: var(--text-subheading-sm-lineHeight);
3287
3342
  }
3288
3343
 
3289
- .muka-toast__title {
3290
- font-family: var(--text-label-md-semibold-fontFamily);
3291
- font-weight: var(--text-label-md-semibold-fontWeight);
3292
- font-size: var(--text-label-md-semibold-fontSize);
3293
- line-height: var(--text-label-md-semibold-lineHeight);
3294
- margin-bottom: var(--spacing-1);
3295
- }
3344
+ /* ─── Description typography ──────────────────────────── */
3296
3345
 
3297
- .muka-toast__message {
3298
- font-family: var(--text-body-sm-regular-fontFamily);
3299
- font-weight: var(--text-body-sm-regular-fontWeight);
3300
- font-size: var(--text-body-sm-regular-fontSize);
3301
- line-height: var(--text-body-sm-regular-lineHeight);
3346
+ .muka-tile__description {
3347
+ margin: 0;
3348
+ color: var(--color-text-default-default);
3302
3349
  }
3303
3350
 
3304
- /* Action slot */
3305
- .muka-toast__action {
3306
- display: flex;
3307
- align-items: center;
3308
- flex-shrink: 0;
3351
+ .muka-tile--lg .muka-tile__description {
3352
+ font-family: var(--text-body-lg-regular-fontFamily);
3353
+ font-weight: var(--text-body-lg-regular-fontWeight);
3354
+ font-size: var(--text-body-lg-regular-fontSize);
3355
+ line-height: var(--text-body-lg-regular-lineHeight);
3309
3356
  }
3310
3357
 
3311
- /* Dismiss button */
3312
- .muka-toast__dismiss {
3313
- display: flex;
3314
- align-items: center;
3315
- justify-content: center;
3316
- flex-shrink: 0;
3317
- width: 24px;
3318
- height: 24px;
3319
- padding: 0;
3320
- margin: -2px -4px -2px 0;
3321
- border: none;
3322
- background: transparent;
3323
- color: inherit;
3324
- opacity: 0.7;
3325
- cursor: pointer;
3326
- border-radius: var(--border-radius-sm);
3327
- transition: opacity 0.15s ease, background-color 0.15s ease;
3358
+ .muka-tile--md .muka-tile__description,
3359
+ .muka-tile--sm .muka-tile__description {
3360
+ font-family: var(--text-body-base-regular-fontFamily);
3361
+ font-weight: var(--text-body-base-regular-fontWeight);
3362
+ font-size: var(--text-body-base-regular-fontSize);
3363
+ line-height: var(--text-body-base-regular-lineHeight);
3328
3364
  }
3329
3365
 
3330
- .muka-toast__dismiss:hover {
3331
- opacity: 1;
3332
- background-color: rgba(0, 0, 0, 0.05);
3366
+ /* Description overflow for medium */
3367
+ .muka-tile--md .muka-tile__description {
3368
+ overflow: hidden;
3369
+ text-overflow: ellipsis;
3333
3370
  }
3334
3371
 
3335
- .muka-toast__dismiss:focus-visible {
3336
- outline: 2px solid var(--color-border-focus);
3337
- outline-offset: 2px;
3338
- opacity: 1;
3372
+ /* ─── Price slot ──────────────────────────────────────── */
3373
+
3374
+ .muka-tile__price {
3375
+ flex-shrink: 0;
3339
3376
  }
3340
3377
 
3341
- .muka-toast__dismiss svg {
3342
- width: 16px;
3343
- height: 16px;
3378
+ /* ─── Action slot ─────────────────────────────────────── */
3379
+
3380
+ .muka-tile__action {
3381
+ flex-shrink: 0;
3344
3382
  }
3345
3383
 
3346
3384
 
@@ -4773,49 +4811,243 @@ body {
4773
4811
  outline: none;
4774
4812
  }
4775
4813
 
4776
- /* Safe-area bottom inset for the iPhone home indicator. */
4777
- .muka-sheet:not(.muka-sheet--no-safe-area) {
4778
- padding-bottom: env(safe-area-inset-bottom);
4814
+ /* Safe-area bottom inset for the iPhone home indicator. */
4815
+ .muka-sheet:not(.muka-sheet--no-safe-area) {
4816
+ padding-bottom: env(safe-area-inset-bottom);
4817
+ }
4818
+
4819
+ /* ─── Drag handle ─────────────────────────────────────── */
4820
+
4821
+ .muka-sheet__handle-container {
4822
+ display: flex;
4823
+ justify-content: center;
4824
+ flex-shrink: 0;
4825
+ padding: var(--spacing-3) 0;
4826
+ }
4827
+
4828
+ .muka-sheet__handle {
4829
+ width: var(--dialog-drag-handle-width);
4830
+ height: var(--dialog-drag-handle-height);
4831
+ background-color: var(--dialog-drag-handle-color);
4832
+ border-radius: var(--dialog-drag-handle-radius);
4833
+ }
4834
+
4835
+ /* ─── Body (scrollable) ───────────────────────────────── */
4836
+
4837
+ .muka-sheet__body {
4838
+ flex: 1 1 0%;
4839
+ min-height: 0;
4840
+ overflow-y: auto;
4841
+ -webkit-overflow-scrolling: touch;
4842
+ overscroll-behavior: contain;
4843
+ }
4844
+
4845
+ /* ─── Visually-hidden title (a11y) ────────────────────── */
4846
+
4847
+ .muka-sheet__sr-title {
4848
+ position: absolute;
4849
+ width: 1px;
4850
+ height: 1px;
4851
+ padding: 0;
4852
+ margin: -1px;
4853
+ overflow: hidden;
4854
+ clip: rect(0, 0, 0, 0);
4855
+ white-space: nowrap;
4856
+ border: 0;
4857
+ }
4858
+
4859
+
4860
+ /* Select */
4861
+ /* Select Component Styles - Aligned with Input for consistency */
4862
+
4863
+ .muka-select {
4864
+ display: inline-flex;
4865
+ flex-direction: column;
4866
+ gap: var(--spacing-2);
4867
+ }
4868
+
4869
+ .muka-select--full-width {
4870
+ width: 100%;
4871
+ }
4872
+
4873
+ /* Label */
4874
+ .muka-select__label {
4875
+ color: var(--color-text-default-default);
4876
+ cursor: pointer;
4877
+ }
4878
+
4879
+ .muka-select__label--sm {
4880
+ font-family: var(--text-label-sm-semibold-fontFamily);
4881
+ font-weight: var(--text-label-sm-semibold-fontWeight);
4882
+ font-size: var(--text-label-sm-semibold-fontSize);
4883
+ line-height: var(--text-label-sm-semibold-lineHeight);
4884
+ }
4885
+
4886
+ .muka-select__label--md {
4887
+ font-family: var(--text-label-md-semibold-fontFamily);
4888
+ font-weight: var(--text-label-md-semibold-fontWeight);
4889
+ font-size: var(--text-label-md-semibold-fontSize);
4890
+ line-height: var(--text-label-md-semibold-lineHeight);
4891
+ }
4892
+
4893
+ .muka-select__label--lg {
4894
+ font-family: var(--text-label-lg-semibold-fontFamily);
4895
+ font-weight: var(--text-label-lg-semibold-fontWeight);
4896
+ font-size: var(--text-label-lg-semibold-fontSize);
4897
+ line-height: var(--text-label-lg-semibold-lineHeight);
4898
+ }
4899
+
4900
+ .muka-select__required {
4901
+ color: var(--color-state-error-foreground);
4902
+ }
4903
+
4904
+ .muka-select__label--sm + .muka-select__field--disabled,
4905
+ .muka-select__label--md + .muka-select__field--disabled,
4906
+ .muka-select__label--lg + .muka-select__field--disabled {
4907
+ cursor: not-allowed;
4908
+ }
4909
+
4910
+ /* Field container — same as Input: 1px border, radius, padding, inset shadow */
4911
+ .muka-select__field {
4912
+ display: flex;
4913
+ align-items: center;
4914
+ gap: var(--spacing-2);
4915
+ position: relative;
4916
+ background-color: var(--input-field-color-default-background);
4917
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
4918
+ border-radius: var(--input-field-radius-md);
4919
+ padding: var(--input-field-padding-y) var(--input-field-padding-x);
4920
+ transition: border-color 0.2s ease, background-color 0.2s ease;
4921
+ cursor: pointer;
4922
+ box-sizing: border-box;
4923
+ }
4924
+
4925
+ /* Inset shadow — same as Input (single subtle line) */
4926
+ .muka-select__field::after {
4927
+ content: '';
4928
+ position: absolute;
4929
+ inset: 0;
4930
+ border-radius: inherit;
4931
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
4932
+ pointer-events: none;
4933
+ }
4934
+
4935
+ /* Size variants — same radius/height as Input */
4936
+ .muka-select__field--sm {
4937
+ min-height: var(--input-field-height-sm);
4938
+ border-radius: var(--input-field-radius-sm);
4939
+ }
4940
+
4941
+ .muka-select__field--md {
4942
+ min-height: var(--input-field-height-default);
4943
+ border-radius: var(--input-field-radius-md);
4944
+ }
4945
+
4946
+ .muka-select__field--lg {
4947
+ min-height: var(--input-field-height-lg);
4948
+ border-radius: var(--input-field-radius-lg);
4949
+ }
4950
+
4951
+ /* Hover — no visual change (same as Input) */
4952
+
4953
+ /* Focus (active) — same as Input: 2px border, padding compensation */
4954
+ .muka-select__field--focused:not(.muka-select__field--disabled) {
4955
+ border-width: var(--border-width-bold);
4956
+ border-color: var(--input-field-color-focus-border);
4957
+ background-color: var(--input-field-color-focus-background);
4958
+ padding: calc(var(--input-field-padding-y) - 1px) calc(var(--input-field-padding-x) - 1px);
4959
+ }
4960
+
4961
+ /* Error — same as Input: 2px border, padding compensation */
4962
+ .muka-select__field--error:not(.muka-select__field--disabled) {
4963
+ border-width: var(--border-width-bold);
4964
+ border-color: var(--input-field-color-error-border);
4965
+ background-color: var(--input-field-color-error-background);
4966
+ padding: calc(var(--input-field-padding-y) - 1px) calc(var(--input-field-padding-x) - 1px);
4967
+ }
4968
+
4969
+ /* Disabled — same as Input */
4970
+ .muka-select__field--disabled {
4971
+ background-color: var(--input-field-color-disabled-background);
4972
+ border-color: var(--input-field-color-disabled-border);
4973
+ cursor: not-allowed;
4974
+ }
4975
+
4976
+ .muka-select__field--disabled::after {
4977
+ display: none;
4978
+ }
4979
+
4980
+ /* Native select — padding on field so native has 0 + right space for chevron */
4981
+ .muka-select__native {
4982
+ appearance: none;
4983
+ -webkit-appearance: none;
4984
+ flex: 1;
4985
+ border: none;
4986
+ outline: none;
4987
+ background: transparent;
4988
+ color: var(--input-field-color-default-foreground);
4989
+ font-family: var(--text-input-md-fontFamily);
4990
+ font-weight: var(--text-input-md-fontWeight);
4991
+ font-size: var(--text-input-md-fontSize);
4992
+ line-height: var(--text-input-md-lineHeight);
4993
+ padding: 0;
4994
+ padding-right: calc(var(--input-field-padding-x) + 1.5rem);
4995
+ cursor: pointer;
4996
+ min-width: 0;
4997
+ width: 100%;
4998
+ }
4999
+
5000
+ .muka-select__field--sm .muka-select__native {
5001
+ font-family: var(--text-input-sm-fontFamily);
5002
+ font-weight: var(--text-input-sm-fontWeight);
5003
+ font-size: var(--text-input-sm-fontSize);
5004
+ line-height: var(--text-input-sm-lineHeight);
4779
5005
  }
4780
5006
 
4781
- /* ─── Drag handle ─────────────────────────────────────── */
4782
-
4783
- .muka-sheet__handle-container {
4784
- display: flex;
4785
- justify-content: center;
4786
- flex-shrink: 0;
4787
- padding: var(--spacing-3) 0;
5007
+ .muka-select__field--lg .muka-select__native {
5008
+ font-family: var(--text-input-lg-fontFamily);
5009
+ font-weight: var(--text-input-lg-fontWeight);
5010
+ font-size: var(--text-input-lg-fontSize);
5011
+ line-height: var(--text-input-lg-lineHeight);
4788
5012
  }
4789
5013
 
4790
- .muka-sheet__handle {
4791
- width: var(--dialog-drag-handle-width);
4792
- height: var(--dialog-drag-handle-height);
4793
- background-color: var(--dialog-drag-handle-color);
4794
- border-radius: var(--dialog-drag-handle-radius);
5014
+ .muka-select__field--disabled .muka-select__native {
5015
+ color: var(--input-field-color-disabled-foreground);
5016
+ cursor: not-allowed;
4795
5017
  }
4796
5018
 
4797
- /* ─── Body (scrollable) ───────────────────────────────── */
5019
+ /* Chevron — aligned with field padding */
5020
+ .muka-select__chevron {
5021
+ display: inline-flex;
5022
+ align-items: center;
5023
+ position: absolute;
5024
+ right: var(--input-field-padding-x);
5025
+ pointer-events: none;
5026
+ color: var(--color-text-subtle-default);
5027
+ }
4798
5028
 
4799
- .muka-sheet__body {
4800
- flex: 1 1 0%;
4801
- min-height: 0;
4802
- overflow-y: auto;
4803
- -webkit-overflow-scrolling: touch;
4804
- overscroll-behavior: contain;
5029
+ .muka-select__field--disabled .muka-select__chevron {
5030
+ color: var(--input-field-color-disabled-foreground);
4805
5031
  }
4806
5032
 
4807
- /* ─── Visually-hidden title (a11y) ────────────────────── */
5033
+ /* Helper text — same as Input */
5034
+ .muka-select__helper {
5035
+ font-family: var(--text-label-sm-regular-fontFamily);
5036
+ font-weight: var(--text-label-sm-regular-fontWeight);
5037
+ font-size: var(--text-label-sm-regular-fontSize);
5038
+ line-height: var(--text-label-sm-regular-lineHeight);
5039
+ color: var(--color-text-subtle-default);
5040
+ margin: 0;
5041
+ }
4808
5042
 
4809
- .muka-sheet__sr-title {
4810
- position: absolute;
4811
- width: 1px;
4812
- height: 1px;
4813
- padding: 0;
4814
- margin: -1px;
4815
- overflow: hidden;
4816
- clip: rect(0, 0, 0, 0);
4817
- white-space: nowrap;
4818
- border: 0;
5043
+ /* Error message — same as Input */
5044
+ .muka-select__error {
5045
+ font-family: var(--text-label-sm-regular-fontFamily);
5046
+ font-weight: var(--text-label-sm-regular-fontWeight);
5047
+ font-size: var(--text-label-sm-regular-fontSize);
5048
+ line-height: var(--text-label-sm-regular-lineHeight);
5049
+ color: var(--color-state-error-foreground);
5050
+ margin: 0;
4819
5051
  }
4820
5052
 
4821
5053
 
@@ -5702,53 +5934,6 @@ body {
5702
5934
  }
5703
5935
 
5704
5936
 
5705
- /* PullToRefresh */
5706
- /* PullToRefresh Component Styles */
5707
-
5708
- .muka-pull-to-refresh {
5709
- position: relative;
5710
- display: flex;
5711
- flex-direction: column;
5712
- width: 100%;
5713
- height: 100%;
5714
- overflow: hidden;
5715
- }
5716
-
5717
- .muka-pull-to-refresh__indicator {
5718
- position: absolute;
5719
- top: 0;
5720
- left: 0;
5721
- right: 0;
5722
- display: flex;
5723
- align-items: flex-end;
5724
- justify-content: center;
5725
- padding-bottom: var(--spacing-2);
5726
- color: var(--color-text-subtle-default);
5727
- overflow: hidden;
5728
- pointer-events: none;
5729
- z-index: 1;
5730
- }
5731
-
5732
- .muka-pull-to-refresh__chevron {
5733
- display: inline-flex;
5734
- align-items: center;
5735
- justify-content: center;
5736
- transition: transform 0.16s ease;
5737
- }
5738
-
5739
- .muka-pull-to-refresh__scroller {
5740
- flex: 1 1 auto;
5741
- min-height: 0;
5742
- width: 100%;
5743
- overflow-x: clip;
5744
- overflow-y: auto;
5745
- -webkit-overflow-scrolling: touch;
5746
- overscroll-behavior-y: contain;
5747
- touch-action: pan-y;
5748
- will-change: transform;
5749
- }
5750
-
5751
-
5752
5937
  /* ProgressTracker */
5753
5938
  /* ProgressTracker Component Styles — Using Muka Design Tokens */
5754
5939
 
@@ -6155,6 +6340,53 @@ body {
6155
6340
  }
6156
6341
 
6157
6342
 
6343
+ /* PullToRefresh */
6344
+ /* PullToRefresh Component Styles */
6345
+
6346
+ .muka-pull-to-refresh {
6347
+ position: relative;
6348
+ display: flex;
6349
+ flex-direction: column;
6350
+ width: 100%;
6351
+ height: 100%;
6352
+ overflow: hidden;
6353
+ }
6354
+
6355
+ .muka-pull-to-refresh__indicator {
6356
+ position: absolute;
6357
+ top: 0;
6358
+ left: 0;
6359
+ right: 0;
6360
+ display: flex;
6361
+ align-items: flex-end;
6362
+ justify-content: center;
6363
+ padding-bottom: var(--spacing-2);
6364
+ color: var(--color-text-subtle-default);
6365
+ overflow: hidden;
6366
+ pointer-events: none;
6367
+ z-index: 1;
6368
+ }
6369
+
6370
+ .muka-pull-to-refresh__chevron {
6371
+ display: inline-flex;
6372
+ align-items: center;
6373
+ justify-content: center;
6374
+ transition: transform 0.16s ease;
6375
+ }
6376
+
6377
+ .muka-pull-to-refresh__scroller {
6378
+ flex: 1 1 auto;
6379
+ min-height: 0;
6380
+ width: 100%;
6381
+ overflow-x: clip;
6382
+ overflow-y: auto;
6383
+ -webkit-overflow-scrolling: touch;
6384
+ overscroll-behavior-y: contain;
6385
+ touch-action: pan-y;
6386
+ will-change: transform;
6387
+ }
6388
+
6389
+
6158
6390
  /* Progress */
6159
6391
  /* Progress Component Styles - Using Muka Design Tokens */
6160
6392
 
@@ -6287,114 +6519,43 @@ body {
6287
6519
  color: var(--color-text-default-default);
6288
6520
  }
6289
6521
 
6290
- .muka-progress--circle.muka-progress--sm .muka-progress__label {
6291
- font-size: var(--text-label-sm-semibold-fontSize);
6292
- }
6293
-
6294
- .muka-progress--circle.muka-progress--md .muka-progress__label {
6295
- font-size: var(--text-label-md-semibold-fontSize);
6296
- }
6297
-
6298
- .muka-progress--circle.muka-progress--lg .muka-progress__label {
6299
- font-size: var(--text-label-lg-semibold-fontSize);
6300
- }
6301
-
6302
- /* Indeterminate animation for circle */
6303
- .muka-progress--circle.muka-progress--indeterminate .muka-progress__circle {
6304
- animation: muka-progress-circle-rotate 2s linear infinite;
6305
- }
6306
-
6307
- .muka-progress--circle.muka-progress--indeterminate .muka-progress__fill {
6308
- animation: muka-progress-circle-dash 1.5s ease-in-out infinite;
6309
- }
6310
-
6311
- @keyframes muka-progress-circle-rotate {
6312
- 100% {
6313
- transform: rotate(270deg);
6314
- }
6315
- }
6316
-
6317
- @keyframes muka-progress-circle-dash {
6318
- 0% {
6319
- stroke-dashoffset: 220;
6320
- }
6321
- 50% {
6322
- stroke-dashoffset: 70;
6323
- }
6324
- 100% {
6325
- stroke-dashoffset: 220;
6326
- }
6327
- }
6328
-
6329
-
6330
- /* ProfileBadge */
6331
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
6332
-
6333
- .muka-profile-badge {
6334
- display: inline-flex;
6335
- align-items: center;
6336
- font-family: var(--text-body-base-regular-fontFamily);
6337
- }
6338
-
6339
- /* Size variants */
6340
- .muka-profile-badge--lg {
6341
- gap: var(--spacing-4); /* 16px */
6342
- }
6343
-
6344
- .muka-profile-badge--md {
6345
- gap: var(--spacing-3); /* 12px */
6346
- }
6347
-
6348
- .muka-profile-badge__avatar {
6349
- flex-shrink: 0;
6350
- }
6351
-
6352
- /* Text stack */
6353
- .muka-profile-badge__text {
6354
- display: flex;
6355
- flex-direction: column;
6356
- align-items: flex-start;
6357
- min-width: 0;
6522
+ .muka-progress--circle.muka-progress--sm .muka-progress__label {
6523
+ font-size: var(--text-label-sm-semibold-fontSize);
6358
6524
  }
6359
6525
 
6360
- .muka-profile-badge__name {
6361
- font-family: var(--text-body-base-regular-fontFamily);
6362
- font-size: var(--text-body-base-regular-fontSize);
6363
- font-weight: var(--text-body-base-regular-fontWeight);
6364
- line-height: var(--text-body-base-regular-lineHeight);
6365
- color: var(--color-text-default-default);
6526
+ .muka-progress--circle.muka-progress--md .muka-progress__label {
6527
+ font-size: var(--text-label-md-semibold-fontSize);
6366
6528
  }
6367
6529
 
6368
- .muka-profile-badge__email {
6369
- font-family: var(--text-body-xs-regular-fontFamily);
6370
- font-size: var(--text-body-xs-regular-fontSize);
6371
- font-weight: var(--text-body-xs-regular-fontWeight);
6372
- line-height: var(--text-body-xs-regular-lineHeight);
6373
- color: var(--color-text-subtle-default);
6530
+ .muka-progress--circle.muka-progress--lg .muka-progress__label {
6531
+ font-size: var(--text-label-lg-semibold-fontSize);
6374
6532
  }
6375
6533
 
6376
- /* Clickable state */
6377
- .muka-profile-badge--clickable {
6378
- cursor: pointer;
6379
- border: none;
6380
- background: none;
6381
- padding: 0;
6382
- text-align: left;
6383
- border-radius: var(--radius-md);
6384
- transition: opacity 0.2s ease;
6534
+ /* Indeterminate animation for circle */
6535
+ .muka-progress--circle.muka-progress--indeterminate .muka-progress__circle {
6536
+ animation: muka-progress-circle-rotate 2s linear infinite;
6385
6537
  }
6386
6538
 
6387
- .muka-profile-badge--clickable:hover {
6388
- opacity: 0.9;
6539
+ .muka-progress--circle.muka-progress--indeterminate .muka-progress__fill {
6540
+ animation: muka-progress-circle-dash 1.5s ease-in-out infinite;
6389
6541
  }
6390
6542
 
6391
- .muka-profile-badge--clickable:active {
6392
- opacity: 0.8;
6543
+ @keyframes muka-progress-circle-rotate {
6544
+ 100% {
6545
+ transform: rotate(270deg);
6546
+ }
6393
6547
  }
6394
6548
 
6395
- .muka-profile-badge--clickable:focus-visible {
6396
- outline: 2px solid var(--color-border-focus);
6397
- outline-offset: 2px;
6549
+ @keyframes muka-progress-circle-dash {
6550
+ 0% {
6551
+ stroke-dashoffset: 220;
6552
+ }
6553
+ 50% {
6554
+ stroke-dashoffset: 70;
6555
+ }
6556
+ 100% {
6557
+ stroke-dashoffset: 220;
6558
+ }
6398
6559
  }
6399
6560
 
6400
6561
 
@@ -6526,6 +6687,77 @@ body {
6526
6687
  }
6527
6688
 
6528
6689
 
6690
+ /* ProfileBadge */
6691
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
6692
+
6693
+ .muka-profile-badge {
6694
+ display: inline-flex;
6695
+ align-items: center;
6696
+ font-family: var(--text-body-base-regular-fontFamily);
6697
+ }
6698
+
6699
+ /* Size variants */
6700
+ .muka-profile-badge--lg {
6701
+ gap: var(--spacing-4); /* 16px */
6702
+ }
6703
+
6704
+ .muka-profile-badge--md {
6705
+ gap: var(--spacing-3); /* 12px */
6706
+ }
6707
+
6708
+ .muka-profile-badge__avatar {
6709
+ flex-shrink: 0;
6710
+ }
6711
+
6712
+ /* Text stack */
6713
+ .muka-profile-badge__text {
6714
+ display: flex;
6715
+ flex-direction: column;
6716
+ align-items: flex-start;
6717
+ min-width: 0;
6718
+ }
6719
+
6720
+ .muka-profile-badge__name {
6721
+ font-family: var(--text-body-base-regular-fontFamily);
6722
+ font-size: var(--text-body-base-regular-fontSize);
6723
+ font-weight: var(--text-body-base-regular-fontWeight);
6724
+ line-height: var(--text-body-base-regular-lineHeight);
6725
+ color: var(--color-text-default-default);
6726
+ }
6727
+
6728
+ .muka-profile-badge__email {
6729
+ font-family: var(--text-body-xs-regular-fontFamily);
6730
+ font-size: var(--text-body-xs-regular-fontSize);
6731
+ font-weight: var(--text-body-xs-regular-fontWeight);
6732
+ line-height: var(--text-body-xs-regular-lineHeight);
6733
+ color: var(--color-text-subtle-default);
6734
+ }
6735
+
6736
+ /* Clickable state */
6737
+ .muka-profile-badge--clickable {
6738
+ cursor: pointer;
6739
+ border: none;
6740
+ background: none;
6741
+ padding: 0;
6742
+ text-align: left;
6743
+ border-radius: var(--radius-md);
6744
+ transition: opacity 0.2s ease;
6745
+ }
6746
+
6747
+ .muka-profile-badge--clickable:hover {
6748
+ opacity: 0.9;
6749
+ }
6750
+
6751
+ .muka-profile-badge--clickable:active {
6752
+ opacity: 0.8;
6753
+ }
6754
+
6755
+ .muka-profile-badge--clickable:focus-visible {
6756
+ outline: 2px solid var(--color-border-focus);
6757
+ outline-offset: 2px;
6758
+ }
6759
+
6760
+
6529
6761
  /* PieChart */
6530
6762
  /* PieChart Component Styles - Using Muka Design Tokens */
6531
6763
 
@@ -7838,57 +8070,23 @@ li.muka-listitem {
7838
8070
  }
7839
8071
 
7840
8072
 
7841
- /* Icon */
7842
- /* Icon Component Styles - Using Muka Design Tokens */
7843
-
7844
- .muka-icon {
7845
- display: inline-flex;
7846
- align-items: center;
7847
- justify-content: center;
7848
- flex-shrink: 0;
7849
- color: var(--color-icon-default-default, currentColor);
7850
- }
7851
-
7852
- /* Icons inside buttons should inherit from button's foreground color */
7853
- .muka-button .muka-icon {
7854
- color: inherit;
7855
- }
7856
-
7857
- .muka-icon--subtle {
7858
- color: var(--color-icon-subtle-default);
7859
- }
7860
-
7861
- .muka-icon--muted {
7862
- color: var(--color-icon-muted-default);
7863
- }
7864
-
7865
- .muka-icon--inverse {
7866
- color: var(--color-icon-default-inverse);
7867
- }
7868
-
7869
- .muka-icon--xs {
7870
- width: var(--icon-size-xs);
7871
- height: var(--icon-size-xs);
7872
- }
7873
-
7874
- .muka-icon--sm {
7875
- width: var(--icon-size-sm);
7876
- height: var(--icon-size-sm);
8073
+ /* Form */
8074
+ .muka-form {
8075
+ display: flex;
8076
+ flex-direction: column;
8077
+ width: 100%;
7877
8078
  }
7878
8079
 
7879
- .muka-icon--md {
7880
- width: var(--icon-size-default);
7881
- height: var(--icon-size-default);
8080
+ .muka-form--gap-sm {
8081
+ gap: var(--size-sm);
7882
8082
  }
7883
8083
 
7884
- .muka-icon--lg {
7885
- width: var(--icon-size-lg);
7886
- height: var(--icon-size-lg);
8084
+ .muka-form--gap-md {
8085
+ gap: var(--size-md);
7887
8086
  }
7888
8087
 
7889
- .muka-icon svg {
7890
- width: 100%;
7891
- height: 100%;
8088
+ .muka-form--gap-lg {
8089
+ gap: var(--size-lg);
7892
8090
  }
7893
8091
 
7894
8092
 
@@ -8295,6 +8493,60 @@ li.muka-listitem {
8295
8493
  }
8296
8494
 
8297
8495
 
8496
+ /* Icon */
8497
+ /* Icon Component Styles - Using Muka Design Tokens */
8498
+
8499
+ .muka-icon {
8500
+ display: inline-flex;
8501
+ align-items: center;
8502
+ justify-content: center;
8503
+ flex-shrink: 0;
8504
+ color: var(--color-icon-default-default, currentColor);
8505
+ }
8506
+
8507
+ /* Icons inside buttons should inherit from button's foreground color */
8508
+ .muka-button .muka-icon {
8509
+ color: inherit;
8510
+ }
8511
+
8512
+ .muka-icon--subtle {
8513
+ color: var(--color-icon-subtle-default);
8514
+ }
8515
+
8516
+ .muka-icon--muted {
8517
+ color: var(--color-icon-muted-default);
8518
+ }
8519
+
8520
+ .muka-icon--inverse {
8521
+ color: var(--color-icon-default-inverse);
8522
+ }
8523
+
8524
+ .muka-icon--xs {
8525
+ width: var(--icon-size-xs);
8526
+ height: var(--icon-size-xs);
8527
+ }
8528
+
8529
+ .muka-icon--sm {
8530
+ width: var(--icon-size-sm);
8531
+ height: var(--icon-size-sm);
8532
+ }
8533
+
8534
+ .muka-icon--md {
8535
+ width: var(--icon-size-default);
8536
+ height: var(--icon-size-default);
8537
+ }
8538
+
8539
+ .muka-icon--lg {
8540
+ width: var(--icon-size-lg);
8541
+ height: var(--icon-size-lg);
8542
+ }
8543
+
8544
+ .muka-icon svg {
8545
+ width: 100%;
8546
+ height: 100%;
8547
+ }
8548
+
8549
+
8298
8550
  /* EmptyState */
8299
8551
  /* EmptyState Component Styles - Using Muka Design Tokens */
8300
8552
 
@@ -8846,55 +9098,28 @@ li.muka-listitem {
8846
9098
  .react-pdf__Document {
8847
9099
  display: flex;
8848
9100
  flex-direction: column;
8849
- align-items: center;
8850
- }
8851
-
8852
- .react-pdf__Page {
8853
- max-width: 100%;
8854
- box-shadow: var(--documentviewer-page-shadow);
8855
- border-radius: var(--documentviewer-page-borderRadius);
8856
- overflow: hidden;
8857
- }
8858
-
8859
- .react-pdf__Page__canvas {
8860
- max-width: 100%;
8861
- height: auto !important;
8862
- display: block;
8863
- }
8864
-
8865
- .react-pdf__Page__textContent {
8866
- max-width: 100%;
8867
- }
8868
-
8869
- .react-pdf__Page__annotations {
8870
- max-width: 100%;
8871
- }
8872
-
8873
-
8874
- /* Divider */
8875
- /* Divider Component Styles - Using Muka Design Tokens */
8876
-
8877
- .muka-divider {
8878
- flex-shrink: 0;
9101
+ align-items: center;
8879
9102
  }
8880
9103
 
8881
- .muka-divider--horizontal {
8882
- width: 100%;
8883
- height: var(--separator-width);
9104
+ .react-pdf__Page {
9105
+ max-width: 100%;
9106
+ box-shadow: var(--documentviewer-page-shadow);
9107
+ border-radius: var(--documentviewer-page-borderRadius);
9108
+ overflow: hidden;
8884
9109
  }
8885
9110
 
8886
- .muka-divider--vertical {
8887
- height: 100%;
8888
- width: var(--separator-width);
8889
- align-self: stretch;
9111
+ .react-pdf__Page__canvas {
9112
+ max-width: 100%;
9113
+ height: auto !important;
9114
+ display: block;
8890
9115
  }
8891
9116
 
8892
- .muka-divider--default {
8893
- background-color: var(--separator-color-default);
9117
+ .react-pdf__Page__textContent {
9118
+ max-width: 100%;
8894
9119
  }
8895
9120
 
8896
- .muka-divider--contrast {
8897
- background-color: var(--separator-color-contrast);
9121
+ .react-pdf__Page__annotations {
9122
+ max-width: 100%;
8898
9123
  }
8899
9124
 
8900
9125
 
@@ -9165,6 +9390,33 @@ li.muka-listitem {
9165
9390
  }
9166
9391
 
9167
9392
 
9393
+ /* Divider */
9394
+ /* Divider Component Styles - Using Muka Design Tokens */
9395
+
9396
+ .muka-divider {
9397
+ flex-shrink: 0;
9398
+ }
9399
+
9400
+ .muka-divider--horizontal {
9401
+ width: 100%;
9402
+ height: var(--separator-width);
9403
+ }
9404
+
9405
+ .muka-divider--vertical {
9406
+ height: 100%;
9407
+ width: var(--separator-width);
9408
+ align-self: stretch;
9409
+ }
9410
+
9411
+ .muka-divider--default {
9412
+ background-color: var(--separator-color-default);
9413
+ }
9414
+
9415
+ .muka-divider--contrast {
9416
+ background-color: var(--separator-color-contrast);
9417
+ }
9418
+
9419
+
9168
9420
  /* DatePicker */
9169
9421
  /* DatePicker — compact native date field. */
9170
9422
  /* Field/label/helper styling is inherited from ../Input/Input.css. */
@@ -11219,6 +11471,35 @@ li.muka-listitem {
11219
11471
  opacity: 1;
11220
11472
  }
11221
11473
 
11474
+ /* Muted variant - same as ghost but resting foreground is subtle, darkens on interaction */
11475
+ .muka-button--muted {
11476
+ background-color: var(--button-color-muted-background-default);
11477
+ color: var(--button-color-muted-foreground-default);
11478
+ border: 1px solid var(--button-color-muted-border-default);
11479
+ }
11480
+
11481
+ .muka-button--muted:hover:not(:disabled) {
11482
+ background-color: var(--button-color-muted-background-hover);
11483
+ color: var(--button-color-muted-foreground-hover);
11484
+ border-color: var(--button-color-muted-border-hover);
11485
+ }
11486
+
11487
+ .muka-button--muted:active:not(:disabled),
11488
+ .muka-button--muted.muka-button--pressed:not(:disabled),
11489
+ .muka-button--muted[data-state="open"]:not(:disabled) {
11490
+ background-color: var(--button-color-muted-background-pressed);
11491
+ color: var(--button-color-muted-foreground-pressed);
11492
+ border-color: var(--button-color-muted-border-pressed);
11493
+ }
11494
+
11495
+ .muka-button--muted:disabled {
11496
+ background-color: var(--button-color-muted-background-disabled);
11497
+ color: var(--button-color-muted-foreground-disabled);
11498
+ border-color: var(--button-color-muted-border-disabled);
11499
+ cursor: not-allowed;
11500
+ opacity: 1;
11501
+ }
11502
+
11222
11503
  /* General disabled state - fallback */
11223
11504
  .muka-button:disabled {
11224
11505
  cursor: not-allowed;
@@ -12829,197 +13110,3 @@ li.muka-listitem {
12829
13110
  border-bottom: none;
12830
13111
  }
12831
13112
 
12832
-
12833
- /* Select */
12834
- /* Select Component Styles - Aligned with Input for consistency */
12835
-
12836
- .muka-select {
12837
- display: inline-flex;
12838
- flex-direction: column;
12839
- gap: var(--spacing-2);
12840
- }
12841
-
12842
- .muka-select--full-width {
12843
- width: 100%;
12844
- }
12845
-
12846
- /* Label */
12847
- .muka-select__label {
12848
- color: var(--color-text-default-default);
12849
- cursor: pointer;
12850
- }
12851
-
12852
- .muka-select__label--sm {
12853
- font-family: var(--text-label-sm-semibold-fontFamily);
12854
- font-weight: var(--text-label-sm-semibold-fontWeight);
12855
- font-size: var(--text-label-sm-semibold-fontSize);
12856
- line-height: var(--text-label-sm-semibold-lineHeight);
12857
- }
12858
-
12859
- .muka-select__label--md {
12860
- font-family: var(--text-label-md-semibold-fontFamily);
12861
- font-weight: var(--text-label-md-semibold-fontWeight);
12862
- font-size: var(--text-label-md-semibold-fontSize);
12863
- line-height: var(--text-label-md-semibold-lineHeight);
12864
- }
12865
-
12866
- .muka-select__label--lg {
12867
- font-family: var(--text-label-lg-semibold-fontFamily);
12868
- font-weight: var(--text-label-lg-semibold-fontWeight);
12869
- font-size: var(--text-label-lg-semibold-fontSize);
12870
- line-height: var(--text-label-lg-semibold-lineHeight);
12871
- }
12872
-
12873
- .muka-select__required {
12874
- color: var(--color-state-error-foreground);
12875
- }
12876
-
12877
- .muka-select__label--sm + .muka-select__field--disabled,
12878
- .muka-select__label--md + .muka-select__field--disabled,
12879
- .muka-select__label--lg + .muka-select__field--disabled {
12880
- cursor: not-allowed;
12881
- }
12882
-
12883
- /* Field container — same as Input: 1px border, radius, padding, inset shadow */
12884
- .muka-select__field {
12885
- display: flex;
12886
- align-items: center;
12887
- gap: var(--spacing-2);
12888
- position: relative;
12889
- background-color: var(--input-field-color-default-background);
12890
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
12891
- border-radius: var(--input-field-radius-md);
12892
- padding: var(--input-field-padding-y) var(--input-field-padding-x);
12893
- transition: border-color 0.2s ease, background-color 0.2s ease;
12894
- cursor: pointer;
12895
- box-sizing: border-box;
12896
- }
12897
-
12898
- /* Inset shadow — same as Input (single subtle line) */
12899
- .muka-select__field::after {
12900
- content: '';
12901
- position: absolute;
12902
- inset: 0;
12903
- border-radius: inherit;
12904
- box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
12905
- pointer-events: none;
12906
- }
12907
-
12908
- /* Size variants — same radius/height as Input */
12909
- .muka-select__field--sm {
12910
- min-height: var(--input-field-height-sm);
12911
- border-radius: var(--input-field-radius-sm);
12912
- }
12913
-
12914
- .muka-select__field--md {
12915
- min-height: var(--input-field-height-default);
12916
- border-radius: var(--input-field-radius-md);
12917
- }
12918
-
12919
- .muka-select__field--lg {
12920
- min-height: var(--input-field-height-lg);
12921
- border-radius: var(--input-field-radius-lg);
12922
- }
12923
-
12924
- /* Hover — no visual change (same as Input) */
12925
-
12926
- /* Focus (active) — same as Input: 2px border, padding compensation */
12927
- .muka-select__field--focused:not(.muka-select__field--disabled) {
12928
- border-width: var(--border-width-bold);
12929
- border-color: var(--input-field-color-focus-border);
12930
- background-color: var(--input-field-color-focus-background);
12931
- padding: calc(var(--input-field-padding-y) - 1px) calc(var(--input-field-padding-x) - 1px);
12932
- }
12933
-
12934
- /* Error — same as Input: 2px border, padding compensation */
12935
- .muka-select__field--error:not(.muka-select__field--disabled) {
12936
- border-width: var(--border-width-bold);
12937
- border-color: var(--input-field-color-error-border);
12938
- background-color: var(--input-field-color-error-background);
12939
- padding: calc(var(--input-field-padding-y) - 1px) calc(var(--input-field-padding-x) - 1px);
12940
- }
12941
-
12942
- /* Disabled — same as Input */
12943
- .muka-select__field--disabled {
12944
- background-color: var(--input-field-color-disabled-background);
12945
- border-color: var(--input-field-color-disabled-border);
12946
- cursor: not-allowed;
12947
- }
12948
-
12949
- .muka-select__field--disabled::after {
12950
- display: none;
12951
- }
12952
-
12953
- /* Native select — padding on field so native has 0 + right space for chevron */
12954
- .muka-select__native {
12955
- appearance: none;
12956
- -webkit-appearance: none;
12957
- flex: 1;
12958
- border: none;
12959
- outline: none;
12960
- background: transparent;
12961
- color: var(--input-field-color-default-foreground);
12962
- font-family: var(--text-input-md-fontFamily);
12963
- font-weight: var(--text-input-md-fontWeight);
12964
- font-size: var(--text-input-md-fontSize);
12965
- line-height: var(--text-input-md-lineHeight);
12966
- padding: 0;
12967
- padding-right: calc(var(--input-field-padding-x) + 1.5rem);
12968
- cursor: pointer;
12969
- min-width: 0;
12970
- width: 100%;
12971
- }
12972
-
12973
- .muka-select__field--sm .muka-select__native {
12974
- font-family: var(--text-input-sm-fontFamily);
12975
- font-weight: var(--text-input-sm-fontWeight);
12976
- font-size: var(--text-input-sm-fontSize);
12977
- line-height: var(--text-input-sm-lineHeight);
12978
- }
12979
-
12980
- .muka-select__field--lg .muka-select__native {
12981
- font-family: var(--text-input-lg-fontFamily);
12982
- font-weight: var(--text-input-lg-fontWeight);
12983
- font-size: var(--text-input-lg-fontSize);
12984
- line-height: var(--text-input-lg-lineHeight);
12985
- }
12986
-
12987
- .muka-select__field--disabled .muka-select__native {
12988
- color: var(--input-field-color-disabled-foreground);
12989
- cursor: not-allowed;
12990
- }
12991
-
12992
- /* Chevron — aligned with field padding */
12993
- .muka-select__chevron {
12994
- display: inline-flex;
12995
- align-items: center;
12996
- position: absolute;
12997
- right: var(--input-field-padding-x);
12998
- pointer-events: none;
12999
- color: var(--color-text-subtle-default);
13000
- }
13001
-
13002
- .muka-select__field--disabled .muka-select__chevron {
13003
- color: var(--input-field-color-disabled-foreground);
13004
- }
13005
-
13006
- /* Helper text — same as Input */
13007
- .muka-select__helper {
13008
- font-family: var(--text-label-sm-regular-fontFamily);
13009
- font-weight: var(--text-label-sm-regular-fontWeight);
13010
- font-size: var(--text-label-sm-regular-fontSize);
13011
- line-height: var(--text-label-sm-regular-lineHeight);
13012
- color: var(--color-text-subtle-default);
13013
- margin: 0;
13014
- }
13015
-
13016
- /* Error message — same as Input */
13017
- .muka-select__error {
13018
- font-family: var(--text-label-sm-regular-fontFamily);
13019
- font-weight: var(--text-label-sm-regular-fontWeight);
13020
- font-size: var(--text-label-sm-regular-fontSize);
13021
- line-height: var(--text-label-sm-regular-lineHeight);
13022
- color: var(--color-state-error-foreground);
13023
- margin: 0;
13024
- }
13025
-