@revikornmann/muka-ui 0.23.1 → 0.25.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 (33) hide show
  1. package/dist/cjs/components/Combobox/Combobox.js +46 -11
  2. package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
  3. package/dist/cjs/components/Dialog/Dialog.css +3 -2
  4. package/dist/cjs/components/Dialog/Dialog.js +23 -11
  5. package/dist/cjs/components/Dialog/Dialog.js.map +1 -1
  6. package/dist/cjs/components/PhotoUploader/PhotoUploader.js +1 -1
  7. package/dist/cjs/components/PhotoUploader/PhotoUploader.js.map +1 -1
  8. package/dist/cjs/components/TopBar/TopBar.css +49 -20
  9. package/dist/cjs/components/View/View.js +33 -1
  10. package/dist/cjs/components/View/View.js.map +1 -1
  11. package/dist/esm/components/Combobox/Combobox.js +46 -11
  12. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  13. package/dist/esm/components/Dialog/Dialog.css +3 -2
  14. package/dist/esm/components/Dialog/Dialog.js +23 -11
  15. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  16. package/dist/esm/components/PhotoUploader/PhotoUploader.js +1 -1
  17. package/dist/esm/components/PhotoUploader/PhotoUploader.js.map +1 -1
  18. package/dist/esm/components/TopBar/TopBar.css +49 -20
  19. package/dist/esm/components/View/View.js +30 -1
  20. package/dist/esm/components/View/View.js.map +1 -1
  21. package/dist/styles/components/Dialog.css +3 -2
  22. package/dist/styles/index.css +252 -251
  23. package/dist/styles/muka-dark.css +252 -251
  24. package/dist/styles/muka-light.css +252 -251
  25. package/dist/styles/wireframe-dark.css +252 -251
  26. package/dist/styles/wireframe-light.css +252 -251
  27. package/dist/types/components/Combobox/Combobox.d.ts +6 -0
  28. package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
  29. package/dist/types/components/Dialog/Dialog.d.ts +25 -3
  30. package/dist/types/components/Dialog/Dialog.d.ts.map +1 -1
  31. package/dist/types/components/View/View.d.ts +3 -0
  32. package/dist/types/components/View/View.d.ts.map +1 -1
  33. package/package.json +1 -1
@@ -4802,6 +4802,156 @@ body {
4802
4802
  }
4803
4803
 
4804
4804
 
4805
+ /* SocialSignInButton */
4806
+ /*
4807
+ * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
4808
+ * Google Identity branding) and intentionally fixed across Muka brands —
4809
+ * same exception pattern as LicensePlateInput regulatory colors.
4810
+ *
4811
+ * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
4812
+ * Google: https://developers.google.com/identity/branding-guidelines
4813
+ */
4814
+ .muka-social-sign-in-button {
4815
+ --ssi-white: #ffffff;
4816
+ --ssi-black: #000000;
4817
+ --ssi-google-text-light: #1f1f1f;
4818
+
4819
+ display: inline-flex;
4820
+ align-items: center;
4821
+ justify-content: center;
4822
+
4823
+ /* Provider lockup type — matches Figma / HIG, not brand font tokens.
4824
+ * SF Pro Text is OS-provided on Apple platforms (not redistributable).
4825
+ * Google Sans is not freely shippable; Roboto is the closest system fallback. */
4826
+ font-family: inherit;
4827
+ font-weight: 600;
4828
+ text-decoration: none;
4829
+ white-space: nowrap;
4830
+
4831
+ border: 1px solid transparent;
4832
+ cursor: pointer;
4833
+ user-select: none;
4834
+ transition: opacity 0.15s ease, filter 0.15s ease;
4835
+
4836
+ outline: none;
4837
+ position: relative;
4838
+ box-sizing: border-box;
4839
+ }
4840
+
4841
+ .muka-social-sign-in-button--apple {
4842
+ font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
4843
+ Helvetica, Arial, sans-serif;
4844
+ font-weight: 600;
4845
+ }
4846
+
4847
+ .muka-social-sign-in-button--google {
4848
+ font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
4849
+ font-weight: 500;
4850
+ }
4851
+
4852
+ .muka-social-sign-in-button:focus-visible {
4853
+ outline: 2px solid var(--color-border-focus);
4854
+ outline-offset: 2px;
4855
+ }
4856
+
4857
+ /* Sizes — heights align with Button md/lg */
4858
+ .muka-social-sign-in-button--md {
4859
+ padding: 0 var(--button-padding-md-x);
4860
+ border-radius: var(--button-radius-md);
4861
+ font-size: var(--text-label-sm-semibold-fontSize);
4862
+ line-height: var(--text-label-sm-semibold-lineHeight);
4863
+ min-height: 40px;
4864
+ min-width: 240px;
4865
+ }
4866
+
4867
+ .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
4868
+ padding: 0 var(--button-gap-md);
4869
+ }
4870
+
4871
+ .muka-social-sign-in-button--md .muka-social-sign-in-button__icon {
4872
+ width: var(--button-icon-md);
4873
+ height: var(--button-icon-md);
4874
+ }
4875
+
4876
+ .muka-social-sign-in-button--lg {
4877
+ padding: 0 var(--button-padding-lg-x);
4878
+ border-radius: var(--button-radius-lg);
4879
+ font-size: var(--text-label-lg-semibold-fontSize);
4880
+ line-height: var(--text-label-lg-semibold-lineHeight);
4881
+ min-height: 48px;
4882
+ min-width: 280px;
4883
+ }
4884
+
4885
+ .muka-social-sign-in-button--lg .muka-social-sign-in-button__label {
4886
+ padding: 0 var(--button-gap-lg);
4887
+ }
4888
+
4889
+ .muka-social-sign-in-button--lg .muka-social-sign-in-button__icon {
4890
+ width: var(--button-icon-lg);
4891
+ height: var(--button-icon-lg);
4892
+ }
4893
+
4894
+ /* White lockup — for dark surfaces (Apple White with Outline) */
4895
+ .muka-social-sign-in-button--white {
4896
+ background-color: var(--ssi-white);
4897
+ color: var(--ssi-black);
4898
+ border-color: var(--ssi-black);
4899
+ }
4900
+
4901
+ .muka-social-sign-in-button--white.muka-social-sign-in-button--google {
4902
+ color: var(--ssi-google-text-light);
4903
+ }
4904
+
4905
+ /* Black lockup — for light surfaces */
4906
+ .muka-social-sign-in-button--black {
4907
+ background-color: var(--ssi-black);
4908
+ color: var(--ssi-white);
4909
+ border-color: transparent;
4910
+ }
4911
+
4912
+ /* Interaction — luminance/opacity only; no brand tint */
4913
+ .muka-social-sign-in-button:hover:not(:disabled) {
4914
+ filter: brightness(0.92);
4915
+ }
4916
+
4917
+ .muka-social-sign-in-button:active:not(:disabled) {
4918
+ filter: brightness(0.85);
4919
+ }
4920
+
4921
+ .muka-social-sign-in-button:disabled,
4922
+ .muka-social-sign-in-button--disabled {
4923
+ cursor: not-allowed;
4924
+ opacity: 0.4;
4925
+ pointer-events: none;
4926
+ filter: none;
4927
+ }
4928
+
4929
+ .muka-social-sign-in-button--full-width {
4930
+ width: 100%;
4931
+ min-width: 0;
4932
+ }
4933
+
4934
+ .muka-social-sign-in-button__icon {
4935
+ display: inline-flex;
4936
+ align-items: center;
4937
+ justify-content: center;
4938
+ flex-shrink: 0;
4939
+ }
4940
+
4941
+ .muka-social-sign-in-button__icon > *,
4942
+ .muka-social-sign-in-button__icon svg {
4943
+ width: auto;
4944
+ height: 100%;
4945
+ max-width: 100%;
4946
+ display: block;
4947
+ }
4948
+
4949
+ .muka-social-sign-in-button__label {
4950
+ display: inline-flex;
4951
+ align-items: center;
4952
+ }
4953
+
4954
+
4805
4955
  /* SmsOtpField */
4806
4956
  /* SmsOtpField Component Styles - Using Muka Design Tokens */
4807
4957
 
@@ -4994,156 +5144,6 @@ body {
4994
5144
  }
4995
5145
 
4996
5146
 
4997
- /* SocialSignInButton */
4998
- /*
4999
- * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
5000
- * Google Identity branding) and intentionally fixed across Muka brands —
5001
- * same exception pattern as LicensePlateInput regulatory colors.
5002
- *
5003
- * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
5004
- * Google: https://developers.google.com/identity/branding-guidelines
5005
- */
5006
- .muka-social-sign-in-button {
5007
- --ssi-white: #ffffff;
5008
- --ssi-black: #000000;
5009
- --ssi-google-text-light: #1f1f1f;
5010
-
5011
- display: inline-flex;
5012
- align-items: center;
5013
- justify-content: center;
5014
-
5015
- /* Provider lockup type — matches Figma / HIG, not brand font tokens.
5016
- * SF Pro Text is OS-provided on Apple platforms (not redistributable).
5017
- * Google Sans is not freely shippable; Roboto is the closest system fallback. */
5018
- font-family: inherit;
5019
- font-weight: 600;
5020
- text-decoration: none;
5021
- white-space: nowrap;
5022
-
5023
- border: 1px solid transparent;
5024
- cursor: pointer;
5025
- user-select: none;
5026
- transition: opacity 0.15s ease, filter 0.15s ease;
5027
-
5028
- outline: none;
5029
- position: relative;
5030
- box-sizing: border-box;
5031
- }
5032
-
5033
- .muka-social-sign-in-button--apple {
5034
- font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
5035
- Helvetica, Arial, sans-serif;
5036
- font-weight: 600;
5037
- }
5038
-
5039
- .muka-social-sign-in-button--google {
5040
- font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
5041
- font-weight: 500;
5042
- }
5043
-
5044
- .muka-social-sign-in-button:focus-visible {
5045
- outline: 2px solid var(--color-border-focus);
5046
- outline-offset: 2px;
5047
- }
5048
-
5049
- /* Sizes — heights align with Button md/lg */
5050
- .muka-social-sign-in-button--md {
5051
- padding: 0 var(--button-padding-md-x);
5052
- border-radius: var(--button-radius-md);
5053
- font-size: var(--text-label-sm-semibold-fontSize);
5054
- line-height: var(--text-label-sm-semibold-lineHeight);
5055
- min-height: 40px;
5056
- min-width: 240px;
5057
- }
5058
-
5059
- .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
5060
- padding: 0 var(--button-gap-md);
5061
- }
5062
-
5063
- .muka-social-sign-in-button--md .muka-social-sign-in-button__icon {
5064
- width: var(--button-icon-md);
5065
- height: var(--button-icon-md);
5066
- }
5067
-
5068
- .muka-social-sign-in-button--lg {
5069
- padding: 0 var(--button-padding-lg-x);
5070
- border-radius: var(--button-radius-lg);
5071
- font-size: var(--text-label-lg-semibold-fontSize);
5072
- line-height: var(--text-label-lg-semibold-lineHeight);
5073
- min-height: 48px;
5074
- min-width: 280px;
5075
- }
5076
-
5077
- .muka-social-sign-in-button--lg .muka-social-sign-in-button__label {
5078
- padding: 0 var(--button-gap-lg);
5079
- }
5080
-
5081
- .muka-social-sign-in-button--lg .muka-social-sign-in-button__icon {
5082
- width: var(--button-icon-lg);
5083
- height: var(--button-icon-lg);
5084
- }
5085
-
5086
- /* White lockup — for dark surfaces (Apple White with Outline) */
5087
- .muka-social-sign-in-button--white {
5088
- background-color: var(--ssi-white);
5089
- color: var(--ssi-black);
5090
- border-color: var(--ssi-black);
5091
- }
5092
-
5093
- .muka-social-sign-in-button--white.muka-social-sign-in-button--google {
5094
- color: var(--ssi-google-text-light);
5095
- }
5096
-
5097
- /* Black lockup — for light surfaces */
5098
- .muka-social-sign-in-button--black {
5099
- background-color: var(--ssi-black);
5100
- color: var(--ssi-white);
5101
- border-color: transparent;
5102
- }
5103
-
5104
- /* Interaction — luminance/opacity only; no brand tint */
5105
- .muka-social-sign-in-button:hover:not(:disabled) {
5106
- filter: brightness(0.92);
5107
- }
5108
-
5109
- .muka-social-sign-in-button:active:not(:disabled) {
5110
- filter: brightness(0.85);
5111
- }
5112
-
5113
- .muka-social-sign-in-button:disabled,
5114
- .muka-social-sign-in-button--disabled {
5115
- cursor: not-allowed;
5116
- opacity: 0.4;
5117
- pointer-events: none;
5118
- filter: none;
5119
- }
5120
-
5121
- .muka-social-sign-in-button--full-width {
5122
- width: 100%;
5123
- min-width: 0;
5124
- }
5125
-
5126
- .muka-social-sign-in-button__icon {
5127
- display: inline-flex;
5128
- align-items: center;
5129
- justify-content: center;
5130
- flex-shrink: 0;
5131
- }
5132
-
5133
- .muka-social-sign-in-button__icon > *,
5134
- .muka-social-sign-in-button__icon svg {
5135
- width: auto;
5136
- height: 100%;
5137
- max-width: 100%;
5138
- display: block;
5139
- }
5140
-
5141
- .muka-social-sign-in-button__label {
5142
- display: inline-flex;
5143
- align-items: center;
5144
- }
5145
-
5146
-
5147
5147
  /* Skeleton */
5148
5148
  /* Skeleton Component Styles */
5149
5149
 
@@ -7433,77 +7433,6 @@ body {
7433
7433
  }
7434
7434
 
7435
7435
 
7436
- /* ProfileBadge */
7437
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
7438
-
7439
- .muka-profile-badge {
7440
- display: inline-flex;
7441
- align-items: center;
7442
- font-family: var(--text-body-base-regular-fontFamily);
7443
- }
7444
-
7445
- /* Size variants */
7446
- .muka-profile-badge--lg {
7447
- gap: var(--spacing-4); /* 16px */
7448
- }
7449
-
7450
- .muka-profile-badge--md {
7451
- gap: var(--spacing-3); /* 12px */
7452
- }
7453
-
7454
- .muka-profile-badge__avatar {
7455
- flex-shrink: 0;
7456
- }
7457
-
7458
- /* Text stack */
7459
- .muka-profile-badge__text {
7460
- display: flex;
7461
- flex-direction: column;
7462
- align-items: flex-start;
7463
- min-width: 0;
7464
- }
7465
-
7466
- .muka-profile-badge__name {
7467
- font-family: var(--text-body-base-regular-fontFamily);
7468
- font-size: var(--text-body-base-regular-fontSize);
7469
- font-weight: var(--text-body-base-regular-fontWeight);
7470
- line-height: var(--text-body-base-regular-lineHeight);
7471
- color: var(--color-text-default-default);
7472
- }
7473
-
7474
- .muka-profile-badge__email {
7475
- font-family: var(--text-body-xs-regular-fontFamily);
7476
- font-size: var(--text-body-xs-regular-fontSize);
7477
- font-weight: var(--text-body-xs-regular-fontWeight);
7478
- line-height: var(--text-body-xs-regular-lineHeight);
7479
- color: var(--color-text-subtle-default);
7480
- }
7481
-
7482
- /* Clickable state */
7483
- .muka-profile-badge--clickable {
7484
- cursor: pointer;
7485
- border: none;
7486
- background: none;
7487
- padding: 0;
7488
- text-align: left;
7489
- border-radius: var(--radius-md);
7490
- transition: opacity 0.2s ease;
7491
- }
7492
-
7493
- .muka-profile-badge--clickable:hover {
7494
- opacity: 0.9;
7495
- }
7496
-
7497
- .muka-profile-badge--clickable:active {
7498
- opacity: 0.8;
7499
- }
7500
-
7501
- .muka-profile-badge--clickable:focus-visible {
7502
- outline: 2px solid var(--color-border-focus);
7503
- outline-offset: 2px;
7504
- }
7505
-
7506
-
7507
7436
  /* PriceTag */
7508
7437
  /* PriceTag Component Styles - Using Muka Design Tokens */
7509
7438
 
@@ -7601,6 +7530,77 @@ body {
7601
7530
  }
7602
7531
 
7603
7532
 
7533
+ /* ProfileBadge */
7534
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
7535
+
7536
+ .muka-profile-badge {
7537
+ display: inline-flex;
7538
+ align-items: center;
7539
+ font-family: var(--text-body-base-regular-fontFamily);
7540
+ }
7541
+
7542
+ /* Size variants */
7543
+ .muka-profile-badge--lg {
7544
+ gap: var(--spacing-4); /* 16px */
7545
+ }
7546
+
7547
+ .muka-profile-badge--md {
7548
+ gap: var(--spacing-3); /* 12px */
7549
+ }
7550
+
7551
+ .muka-profile-badge__avatar {
7552
+ flex-shrink: 0;
7553
+ }
7554
+
7555
+ /* Text stack */
7556
+ .muka-profile-badge__text {
7557
+ display: flex;
7558
+ flex-direction: column;
7559
+ align-items: flex-start;
7560
+ min-width: 0;
7561
+ }
7562
+
7563
+ .muka-profile-badge__name {
7564
+ font-family: var(--text-body-base-regular-fontFamily);
7565
+ font-size: var(--text-body-base-regular-fontSize);
7566
+ font-weight: var(--text-body-base-regular-fontWeight);
7567
+ line-height: var(--text-body-base-regular-lineHeight);
7568
+ color: var(--color-text-default-default);
7569
+ }
7570
+
7571
+ .muka-profile-badge__email {
7572
+ font-family: var(--text-body-xs-regular-fontFamily);
7573
+ font-size: var(--text-body-xs-regular-fontSize);
7574
+ font-weight: var(--text-body-xs-regular-fontWeight);
7575
+ line-height: var(--text-body-xs-regular-lineHeight);
7576
+ color: var(--color-text-subtle-default);
7577
+ }
7578
+
7579
+ /* Clickable state */
7580
+ .muka-profile-badge--clickable {
7581
+ cursor: pointer;
7582
+ border: none;
7583
+ background: none;
7584
+ padding: 0;
7585
+ text-align: left;
7586
+ border-radius: var(--radius-md);
7587
+ transition: opacity 0.2s ease;
7588
+ }
7589
+
7590
+ .muka-profile-badge--clickable:hover {
7591
+ opacity: 0.9;
7592
+ }
7593
+
7594
+ .muka-profile-badge--clickable:active {
7595
+ opacity: 0.8;
7596
+ }
7597
+
7598
+ .muka-profile-badge--clickable:focus-visible {
7599
+ outline: 2px solid var(--color-border-focus);
7600
+ outline-offset: 2px;
7601
+ }
7602
+
7603
+
7604
7604
  /* Popover */
7605
7605
  /* Popover Component Styles */
7606
7606
 
@@ -8019,34 +8019,6 @@ body {
8019
8019
  }
8020
8020
 
8021
8021
 
8022
- /* NavigationTransition */
8023
- /* NavigationTransition Component Styles */
8024
-
8025
- /* ─── Wrapper ────────────────────────────────────────── */
8026
-
8027
- .muka-nav-transition {
8028
- position: relative;
8029
- height: 100vh;
8030
- overflow: hidden;
8031
- }
8032
-
8033
- /* Disable interaction during animation */
8034
- .muka-nav-transition--active {
8035
- pointer-events: none;
8036
- }
8037
-
8038
- /* ─── View slots ─────────────────────────────────────── */
8039
-
8040
- .muka-nav-transition--active .muka-nav-transition__view {
8041
- position: absolute;
8042
- inset: 0;
8043
- }
8044
-
8045
- /* Z-index layering */
8046
- .muka-nav-transition__view--bottom { z-index: 1; }
8047
- .muka-nav-transition__view--top { z-index: 2; }
8048
-
8049
-
8050
8022
  /* Menu */
8051
8023
  /* Menu Component Styles */
8052
8024
 
@@ -8526,6 +8498,34 @@ body {
8526
8498
  }
8527
8499
 
8528
8500
 
8501
+ /* NavigationTransition */
8502
+ /* NavigationTransition Component Styles */
8503
+
8504
+ /* ─── Wrapper ────────────────────────────────────────── */
8505
+
8506
+ .muka-nav-transition {
8507
+ position: relative;
8508
+ height: 100vh;
8509
+ overflow: hidden;
8510
+ }
8511
+
8512
+ /* Disable interaction during animation */
8513
+ .muka-nav-transition--active {
8514
+ pointer-events: none;
8515
+ }
8516
+
8517
+ /* ─── View slots ─────────────────────────────────────── */
8518
+
8519
+ .muka-nav-transition--active .muka-nav-transition__view {
8520
+ position: absolute;
8521
+ inset: 0;
8522
+ }
8523
+
8524
+ /* Z-index layering */
8525
+ .muka-nav-transition__view--bottom { z-index: 1; }
8526
+ .muka-nav-transition__view--top { z-index: 2; }
8527
+
8528
+
8529
8529
  /* ListItem */
8530
8530
  /* ListItem Component Styles - Using Muka Design Tokens */
8531
8531
 
@@ -10643,9 +10643,10 @@ li.muka-listitem {
10643
10643
  flex-shrink: 0;
10644
10644
  }
10645
10645
 
10646
- /* Hide footer on mobile for modal dialogs with inputs (actions move to TopBar) */
10646
+ /* Hide footer on mobile for modal dialogs with inputs (actions move to TopBar),
10647
+ unless the consumer keeps them in the BottomBar (mobileActions="footer") */
10647
10648
  @media (max-width: 1023px) {
10648
- .muka-dialog:not(.muka-dialog--non-modal):not(.muka-dialog--no-inputs) .muka-dialog__footer {
10649
+ .muka-dialog:not(.muka-dialog--non-modal):not(.muka-dialog--no-inputs):not(.muka-dialog--mobile-actions-footer) .muka-dialog__footer {
10649
10650
  display: none;
10650
10651
  }
10651
10652
 
@@ -41,6 +41,12 @@ export interface ComboboxProps {
41
41
  * Default: true (Figma Input Combobox free-input).
42
42
  */
43
43
  creatable?: boolean;
44
+ /**
45
+ * When `creatable`, commit the text still in the field as a chip when focus
46
+ * leaves the field, so typed-but-unconfirmed input isn't silently dropped
47
+ * (an exact option label commits that option). Default: true.
48
+ */
49
+ commitOnBlur?: boolean;
44
50
  /**
45
51
  * Custom filter. Receives the option and the lowercased query.
46
52
  * Defaults to substring match against `label` and `caption`.
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../../components/Combobox/Combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAQ5F,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAEpC;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAE3B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,kBAAkB;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kCAAkC;IAClC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B,iBAAiB;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAE5D,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,cAAc;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC;AA+BD;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAoU5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../../components/Combobox/Combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAQ5F,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAEpC;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAE3B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,kBAAkB;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kCAAkC;IAClC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B,iBAAiB;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAE5D,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,cAAc;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC;AA+BD;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkX5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -23,11 +23,33 @@ export interface DialogProps {
23
23
  footerActions?: React.ReactNode;
24
24
  /** Footer layout variant (default: 'actions') */
25
25
  footerVariant?: 'actions' | 'actions-vertical';
26
- /** Mobile-only: leading action text (e.g., "Cancel") */
26
+ /**
27
+ * Where a modal dialog with inputs shows its actions on mobile (< 1024px).
28
+ * - `topbar` (default): `footerActions` are hidden and the TopBar shows
29
+ * icon-only actions — a secondary close button (leading) and a primary
30
+ * checkmark button (trailing) — so the on-screen keyboard never covers
31
+ * them and they never crowd the title. Enable them with
32
+ * `mobileLeadingLabel` / `mobileTrailingLabel`, which become their
33
+ * accessible names.
34
+ * - `footer`: keep the `footerActions` BottomBar under the content, with a
35
+ * title-only TopBar. Use this when the button labels are indispensable.
36
+ *
37
+ * Desktop always shows `footerActions` in the BottomBar. Has no effect on
38
+ * non-modal dialogs or dialogs without inputs, which always use the
39
+ * BottomBar.
40
+ */
41
+ mobileActions?: 'topbar' | 'footer';
42
+ /**
43
+ * Mobile-only: accessible name of the leading icon-only close button
44
+ * (e.g. "Cancel"). Setting it shows the button.
45
+ */
27
46
  mobileLeadingLabel?: string;
28
- /** Mobile-only: trailing action text (e.g., "Done") */
47
+ /**
48
+ * Mobile-only: accessible name of the trailing icon-only checkmark button
49
+ * (e.g. "Save"). Setting it shows the button.
50
+ */
29
51
  mobileTrailingLabel?: string;
30
- /** Callback for mobile leading action */
52
+ /** Callback for mobile leading action (defaults to onClose) */
31
53
  onMobileLeadingClick?: () => void;
32
54
  /** Callback for mobile trailing action (defaults to onClose) */
33
55
  onMobileTrailingClick?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoE,MAAM,OAAO,CAAC;AAIzF,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,IAAI,EAAE,OAAO,CAAC;IAEd,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,iCAAiC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,iFAAiF;IACjF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/B,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0DAA0D;IAC1D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,kEAAkE;IAClE,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEhC,iDAAiD;IACjD,aAAa,CAAC,EAAE,SAAS,GAAG,kBAAkB,CAAC;IAE/C,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,yCAAyC;IACzC,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAElC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEnC,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAErB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuCD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAgRxC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoE,MAAM,OAAO,CAAC;AAKzF,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,IAAI,EAAE,OAAO,CAAC;IAEd,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,iCAAiC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,iFAAiF;IACjF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/B,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0DAA0D;IAC1D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,kEAAkE;IAClE,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEhC,iDAAiD;IACjD,aAAa,CAAC,EAAE,SAAS,GAAG,kBAAkB,CAAC;IAE/C;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEpC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAElC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEnC,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAErB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyDD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAkSxC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -44,6 +44,9 @@ export interface ViewProps {
44
44
  * - `level="top"`: App home screen. No back button, footer slot for BottomBar navigation.
45
45
  * - `level="sub"`: Deeper view. Leading slot for back button, no footer by default.
46
46
  *
47
+ * TopBar action Buttons are always `ghost`; icon-only ones are `lg` on large
48
+ * screens and `md` below 1024px.
49
+ *
47
50
  * @accessibility
48
51
  * - Uses `<main>` landmark for the scrollable body
49
52
  * - TopBar provides semantic `<header>` structure
@@ -1 +1 @@
1
- {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../../../../components/View/View.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,YAAY,CAAC;AAEpB,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;IAErB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEpC,mDAAmD;IACnD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,qDAAqD;IACrD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB,qCAAqC;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAErB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA8CpC,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../../../../components/View/View.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,YAAY,CAAC;AAEpB,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;IAErB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEpC,mDAAmD;IACnD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,qDAAqD;IACrD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB,qCAAqC;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAErB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgCD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA8CpC,CAAC;AAEF,eAAe,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revikornmann/muka-ui",
3
- "version": "0.23.1",
3
+ "version": "0.25.0",
4
4
  "description": "Muka Design System - Multi-brand design tokens and React components",
5
5
  "main": "dist/cjs/components/index.js",
6
6
  "module": "dist/esm/components/index.js",