@12-apps/ui 6.56.1 → 6.57.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 (114) hide show
  1. package/NATIVE.md +2 -2
  2. package/components-catalog.md +2 -2
  3. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +7 -7
  4. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
  5. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +3 -3
  6. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
  7. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +5 -5
  8. package/dist/_internal/components/data-display/Progress/Progress.js +1 -1
  9. package/dist/_internal/components/data-display/index.js +1 -1
  10. package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
  11. package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +1 -1
  12. package/dist/_internal/components/feedback/index.js +2 -2
  13. package/dist/_internal/components/index.js +13 -13
  14. package/dist/_internal/components/layout/SettingCard/SettingCard.js +5 -5
  15. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +3 -3
  16. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +4 -4
  17. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +4 -4
  18. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +6 -6
  19. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +5 -5
  20. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +6 -6
  21. package/dist/_internal/components/layout/index.js +9 -9
  22. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +3 -3
  23. package/dist/_internal/components/navigation/index.js +3 -3
  24. package/dist/_internal/icons/Icon.js +2 -2
  25. package/dist/_internal/icons/paths.generated.js +1 -1
  26. package/dist/{chunk-CLC4VIOF.js → chunk-4PYEDDYV.js} +2 -2
  27. package/dist/{chunk-JWXGZ4VM.js → chunk-6J27G2HT.js} +2 -2
  28. package/dist/{chunk-WGFHZNFR.js → chunk-AEIJSEVV.js} +4 -1
  29. package/dist/{chunk-WGFHZNFR.js.map → chunk-AEIJSEVV.js.map} +1 -1
  30. package/dist/{chunk-C3BRCCHG.js → chunk-BJMNAPKH.js} +3 -3
  31. package/dist/{chunk-6E4XNOAC.js → chunk-CCCILWYZ.js} +4 -4
  32. package/dist/{chunk-Y2HCYT5W.js → chunk-GRRW5NSR.js} +2 -2
  33. package/dist/{chunk-NZZ2BTIK.js → chunk-H7R6UKOE.js} +2 -2
  34. package/dist/{chunk-AL3Z24VG.js → chunk-ILQVNZ5B.js} +2 -2
  35. package/dist/{chunk-5PN5MY2X.js → chunk-INQO5AYV.js} +3 -3
  36. package/dist/{chunk-2DV64INT.js → chunk-KEDZTZCV.js} +2 -2
  37. package/dist/{chunk-44JLXXWQ.js → chunk-PPITQH3C.js} +2 -2
  38. package/dist/{chunk-JC244QQF.js → chunk-SEWUYHSG.js} +2 -2
  39. package/dist/{chunk-XTHDWW4M.js → chunk-VAY6KESM.js} +7 -4
  40. package/dist/chunk-VAY6KESM.js.map +1 -0
  41. package/dist/{chunk-5XZEGI35.js → chunk-X7HCS3HP.js} +3 -3
  42. package/dist/{chunk-6ZLP7BA7.js → chunk-XC7YHO7Z.js} +3 -1
  43. package/dist/{chunk-6ZLP7BA7.js.map → chunk-XC7YHO7Z.js.map} +1 -1
  44. package/dist/{chunk-T2S7NIUG.js → chunk-XE4JVTM6.js} +2 -2
  45. package/dist/{chunk-SIWXMNQT.js → chunk-YDTCM5F6.js} +4 -4
  46. package/dist/{chunk-BQGWY577.js → chunk-ZCUVZ5PR.js} +3 -3
  47. package/dist/data-display/DataViews.js +7 -7
  48. package/dist/data-display/Progress.js +1 -1
  49. package/dist/feedback/Dialog.js +2 -2
  50. package/dist/icons.js +2 -2
  51. package/dist/layout/SettingCard.js +9 -9
  52. package/dist/native/chunks/{chunk-QGTZGL7P.js → chunk-BUFQXX27.js} +2 -2
  53. package/dist/native/chunks/{chunk-EZO2KJF7.js → chunk-JFKH5YHF.js} +3 -1
  54. package/dist/native/chunks/{chunk-EZO2KJF7.js.map → chunk-JFKH5YHF.js.map} +1 -1
  55. package/dist/native/data-display/Alert.js +1 -1
  56. package/dist/native/data-display/Avatar.js +1 -1
  57. package/dist/native/data-display/Badge.js +1 -1
  58. package/dist/native/data-display/Chip.js +1 -1
  59. package/dist/native/data-display/EmptyState.js +2 -2
  60. package/dist/native/data-display/ErrorState.js +1 -1
  61. package/dist/native/data-display/FleetMap.js +2 -2
  62. package/dist/native/data-display/Progress.js +11 -5
  63. package/dist/native/data-display/Progress.js.map +1 -1
  64. package/dist/native/feedback/Dialog.js +2 -1
  65. package/dist/native/feedback/Dialog.js.map +1 -1
  66. package/dist/native/form/Checkbox.js +1 -1
  67. package/dist/native/form/Select.js +1 -1
  68. package/dist/native/icons.js +1 -1
  69. package/dist/navigation/AppHeader.js +3 -3
  70. package/dist/types/components/data-display/Progress/Progress.base.d.ts +8 -0
  71. package/dist/types/components/data-display/Progress/Progress.base.d.ts.map +1 -1
  72. package/dist/types/components/data-display/Progress/Progress.d.ts.map +1 -1
  73. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts +2 -1
  74. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
  75. package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
  76. package/dist/types/icons/paths.generated.d.ts +2 -0
  77. package/dist/types/icons/paths.generated.d.ts.map +1 -1
  78. package/dist/types-native/components/data-display/Progress/Progress.base.d.ts +8 -0
  79. package/dist/types-native/components/data-display/Progress/Progress.base.d.ts.map +1 -1
  80. package/dist/types-native/components/data-display/Progress/Progress.native.d.ts.map +1 -1
  81. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts +2 -1
  82. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
  83. package/dist/types-native/components/feedback/Dialog/Dialog.look.native.d.ts.map +1 -1
  84. package/dist/types-native/icons/paths.generated.d.ts +2 -0
  85. package/dist/types-native/icons/paths.generated.d.ts.map +1 -1
  86. package/package.json +1 -1
  87. package/src/components/data-display/Progress/Progress.base.ts +10 -0
  88. package/src/components/data-display/Progress/Progress.md +23 -0
  89. package/src/components/data-display/Progress/Progress.native.tsx +35 -25
  90. package/src/components/data-display/Progress/Progress.tsx +8 -5
  91. package/src/components/feedback/Dialog/Dialog.base.ts +2 -1
  92. package/src/components/feedback/Dialog/Dialog.look.native.ts +1 -0
  93. package/src/components/feedback/Dialog/Dialog.md +25 -1
  94. package/src/components/feedback/Dialog/Dialog.styles.ts +3 -0
  95. package/src/icons/Icon.md +4 -0
  96. package/src/icons/glyphs.json +2 -0
  97. package/src/icons/paths.generated.ts +2 -0
  98. package/dist/chunk-XTHDWW4M.js.map +0 -1
  99. /package/dist/{chunk-CLC4VIOF.js.map → chunk-4PYEDDYV.js.map} +0 -0
  100. /package/dist/{chunk-JWXGZ4VM.js.map → chunk-6J27G2HT.js.map} +0 -0
  101. /package/dist/{chunk-C3BRCCHG.js.map → chunk-BJMNAPKH.js.map} +0 -0
  102. /package/dist/{chunk-6E4XNOAC.js.map → chunk-CCCILWYZ.js.map} +0 -0
  103. /package/dist/{chunk-Y2HCYT5W.js.map → chunk-GRRW5NSR.js.map} +0 -0
  104. /package/dist/{chunk-NZZ2BTIK.js.map → chunk-H7R6UKOE.js.map} +0 -0
  105. /package/dist/{chunk-AL3Z24VG.js.map → chunk-ILQVNZ5B.js.map} +0 -0
  106. /package/dist/{chunk-5PN5MY2X.js.map → chunk-INQO5AYV.js.map} +0 -0
  107. /package/dist/{chunk-2DV64INT.js.map → chunk-KEDZTZCV.js.map} +0 -0
  108. /package/dist/{chunk-44JLXXWQ.js.map → chunk-PPITQH3C.js.map} +0 -0
  109. /package/dist/{chunk-JC244QQF.js.map → chunk-SEWUYHSG.js.map} +0 -0
  110. /package/dist/{chunk-5XZEGI35.js.map → chunk-X7HCS3HP.js.map} +0 -0
  111. /package/dist/{chunk-T2S7NIUG.js.map → chunk-XE4JVTM6.js.map} +0 -0
  112. /package/dist/{chunk-SIWXMNQT.js.map → chunk-YDTCM5F6.js.map} +0 -0
  113. /package/dist/{chunk-BQGWY577.js.map → chunk-ZCUVZ5PR.js.map} +0 -0
  114. /package/dist/native/chunks/{chunk-QGTZGL7P.js.map → chunk-BUFQXX27.js.map} +0 -0
@@ -9,7 +9,7 @@ import {
9
9
  } from "../chunks/chunk-DN73KYIZ.js";
10
10
  import {
11
11
  Icon
12
- } from "../chunks/chunk-EZO2KJF7.js";
12
+ } from "../chunks/chunk-JFKH5YHF.js";
13
13
  import {
14
14
  muiSize
15
15
  } from "../chunks/chunk-5WLOVHKK.js";
@@ -23,7 +23,7 @@ import {
23
23
  import {
24
24
  ICON_SIZES,
25
25
  Icon
26
- } from "../chunks/chunk-EZO2KJF7.js";
26
+ } from "../chunks/chunk-JFKH5YHF.js";
27
27
  import "../chunks/chunk-5WLOVHKK.js";
28
28
  import {
29
29
  resolveTestId,
@@ -4,7 +4,7 @@ import {
4
4
  ICON_SIZES,
5
5
  Icon,
6
6
  iconSize
7
- } from "./chunks/chunk-EZO2KJF7.js";
7
+ } from "./chunks/chunk-JFKH5YHF.js";
8
8
  import "./chunks/chunk-5WLOVHKK.js";
9
9
  import "./chunks/chunk-AR5O4BEY.js";
10
10
  import "./chunks/chunk-ZYSOBULX.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "../chunk-47VRDPR2.js";
10
10
  import {
11
11
  AppHeaderDetails
12
- } from "../chunk-T2S7NIUG.js";
12
+ } from "../chunk-XE4JVTM6.js";
13
13
  import {
14
14
  AppHeaderBrand
15
15
  } from "../chunk-GWFAINQ7.js";
@@ -25,9 +25,9 @@ import "../chunk-CRN4KKNI.js";
25
25
  import "../chunk-26DSSWTT.js";
26
26
  import "../chunk-BDQCCW4N.js";
27
27
  import "../chunk-IM4DMKH4.js";
28
- import "../chunk-AL3Z24VG.js";
28
+ import "../chunk-ILQVNZ5B.js";
29
29
  import "../chunk-GYXUCS37.js";
30
- import "../chunk-WGFHZNFR.js";
30
+ import "../chunk-AEIJSEVV.js";
31
31
  import "../chunk-AL5E624U.js";
32
32
  import "../chunk-Z2JH5KW5.js";
33
33
  import "../chunk-LV7LSPBF.js";
@@ -1,3 +1,4 @@
1
+ import type { ReactNode } from 'react';
1
2
  import type { ColorValue, SizeValue } from '../../../tokens/vocabulary';
2
3
  /**
3
4
  * THE CONTRACT BOTH RENDERERS HONOUR — and nothing else.
@@ -37,6 +38,13 @@ export interface ProgressBaseProps {
37
38
  * Custom label text
38
39
  */
39
40
  label?: string;
41
+ /**
42
+ * Custom content in the circular dial's center, independent of its value or
43
+ * animation. Replaces the visual label when non-null; ignored by other
44
+ * variants. Compose non-interactive content and name the progressbar with
45
+ * `aria-label` separately. Omit or pass null to keep `showLabel`/`label`.
46
+ */
47
+ centerContent?: ReactNode;
40
48
  /**
41
49
  * Number of segments for segmented variant
42
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Progress.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Progress/Progress.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AACzF,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"Progress.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Progress/Progress.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AACzF,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Progress.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Progress/Progress.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,kBAAkB,CAAC;AA+OrF,eAAO,MAAM,QAAQ,mGA+CpB,CAAC"}
1
+ {"version":3,"file":"Progress.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Progress/Progress.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,kBAAkB,CAAC;AAiPrF,eAAO,MAAM,QAAQ,mGAgDpB,CAAC"}
@@ -11,13 +11,14 @@ import type { SizeValue } from '../../../tokens/vocabulary';
11
11
  * either side: MUI's own `onClose` reason argument is dropped by `Dialog.tsx`
12
12
  * before it reaches the caller, so both renderers pass a bare `() => void`.
13
13
  */
14
- export type DialogVariant = 'default' | 'glass' | 'fullscreen' | 'drawer';
14
+ export type DialogVariant = 'default' | 'glass' | 'fullscreen' | 'drawer' | 'bottom-sheet';
15
15
  export type DialogSize = SizeValue;
16
16
  export type DialogBorderRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl';
17
17
  export type DialogActionsAlignment = 'left' | 'center' | 'right' | 'space-between';
18
18
  export interface DialogBaseProps {
19
19
  open: boolean;
20
20
  children: ReactNode;
21
+ /** `bottom-sheet` keeps the default paper and inset, aligned to the bottom. */
21
22
  variant?: DialogVariant;
22
23
  size?: DialogSize;
23
24
  title?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/Dialog/Dialog.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,eAAe,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"Dialog.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/Dialog/Dialog.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAC3F,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,eAAe,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/Dialog/Dialog.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAGpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAyCnF,oFAAoF;AACpF,UAAU,mBAAmB;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAqFD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,CAsDvF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;;;EAKxD"}
1
+ {"version":3,"file":"Dialog.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/Dialog/Dialog.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAGpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAyCnF,oFAAoF;AACpF,UAAU,mBAAmB;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAqFD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,CAyDvF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;;;EAKxD"}
@@ -44,6 +44,8 @@ export declare const ICON_PATHS: {
44
44
  readonly Settings: readonly ["M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"];
45
45
  readonly Visibility: readonly ["M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"];
46
46
  readonly VisibilityOff: readonly ["M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"];
47
+ readonly VolumeOff: readonly ["M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63m2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71M4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9zM12 4 9.91 6.09 12 8.18z"];
48
+ readonly VolumeUp: readonly ["M3 9v6h4l5 5V4L7 9zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77"];
47
49
  readonly Warning: readonly ["M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"];
48
50
  readonly WarningAmber: readonly ["M12 5.99 19.53 19H4.47zM12 2 1 21h22z", "M13 16h-2v2h2zm0-6h-2v5h2z"];
49
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"paths.generated.d.ts","sourceRoot":"","sources":["../../../src/icons/paths.generated.ts"],"names":[],"mappings":"AAOA,mDAAmD;AACnD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Cb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C,eAAO,MAAM,UAAU,EAA8B,SAAS,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"paths.generated.d.ts","sourceRoot":"","sources":["../../../src/icons/paths.generated.ts"],"names":[],"mappings":"AAOA,mDAAmD;AACnD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C,eAAO,MAAM,UAAU,EAA8B,SAAS,QAAQ,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ReactNode } from 'react';
1
2
  import type { ColorValue, SizeValue } from '../../../tokens/vocabulary';
2
3
  /**
3
4
  * THE CONTRACT BOTH RENDERERS HONOUR — and nothing else.
@@ -37,6 +38,13 @@ export interface ProgressBaseProps {
37
38
  * Custom label text
38
39
  */
39
40
  label?: string;
41
+ /**
42
+ * Custom content in the circular dial's center, independent of its value or
43
+ * animation. Replaces the visual label when non-null; ignored by other
44
+ * variants. Compose non-interactive content and name the progressbar with
45
+ * `aria-label` separately. Omit or pass null to keep `showLabel`/`label`.
46
+ */
47
+ centerContent?: ReactNode;
40
48
  /**
41
49
  * Number of segments for segmented variant
42
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Progress.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Progress/Progress.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AACzF,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"Progress.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Progress/Progress.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AACzF,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Progress.native.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Progress/Progress.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAKL,IAAI,EACJ,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAmTtB;;;GAGG;AACH,eAAO,MAAM,QAAQ;;8BAuDnB,CAAC"}
1
+ {"version":3,"file":"Progress.native.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Progress/Progress.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAKL,IAAI,EACJ,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AA2TtB;;;GAGG;AACH,eAAO,MAAM,QAAQ;;8BAyDnB,CAAC"}
@@ -11,13 +11,14 @@ import type { SizeValue } from '../../../tokens/vocabulary';
11
11
  * either side: MUI's own `onClose` reason argument is dropped by `Dialog.tsx`
12
12
  * before it reaches the caller, so both renderers pass a bare `() => void`.
13
13
  */
14
- export type DialogVariant = 'default' | 'glass' | 'fullscreen' | 'drawer';
14
+ export type DialogVariant = 'default' | 'glass' | 'fullscreen' | 'drawer' | 'bottom-sheet';
15
15
  export type DialogSize = SizeValue;
16
16
  export type DialogBorderRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl';
17
17
  export type DialogActionsAlignment = 'left' | 'center' | 'right' | 'space-between';
18
18
  export interface DialogBaseProps {
19
19
  open: boolean;
20
20
  children: ReactNode;
21
+ /** `bottom-sheet` keeps the default paper and inset, aligned to the bottom. */
21
22
  variant?: DialogVariant;
22
23
  size?: DialogSize;
23
24
  title?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/Dialog/Dialog.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,eAAe,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"Dialog.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/Dialog/Dialog.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAC3F,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,eAAe,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.look.native.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/Dialog/Dialog.look.native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAanF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;;;;;;GAQG;AAEH,oCAAoC;AACpC,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAE/E;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAIxD;AAYD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AA0DD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAI5G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,GAAG,UAAU,CAyBxE"}
1
+ {"version":3,"file":"Dialog.look.native.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/Dialog/Dialog.look.native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAanF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;;;;;;GAQG;AAEH,oCAAoC;AACpC,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAE/E;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAIxD;AAYD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AA2DD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAI5G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,GAAG,UAAU,CAyBxE"}
@@ -44,6 +44,8 @@ export declare const ICON_PATHS: {
44
44
  readonly Settings: readonly ["M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"];
45
45
  readonly Visibility: readonly ["M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"];
46
46
  readonly VisibilityOff: readonly ["M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"];
47
+ readonly VolumeOff: readonly ["M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63m2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71M4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9zM12 4 9.91 6.09 12 8.18z"];
48
+ readonly VolumeUp: readonly ["M3 9v6h4l5 5V4L7 9zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77"];
47
49
  readonly Warning: readonly ["M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"];
48
50
  readonly WarningAmber: readonly ["M12 5.99 19.53 19H4.47zM12 2 1 21h22z", "M13 16h-2v2h2zm0-6h-2v5h2z"];
49
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"paths.generated.d.ts","sourceRoot":"","sources":["../../../src/icons/paths.generated.ts"],"names":[],"mappings":"AAOA,mDAAmD;AACnD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Cb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C,eAAO,MAAM,UAAU,EAA8B,SAAS,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"paths.generated.d.ts","sourceRoot":"","sources":["../../../src/icons/paths.generated.ts"],"names":[],"mappings":"AAOA,mDAAmD;AACnD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C,eAAO,MAAM,UAAU,EAA8B,SAAS,QAAQ,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.56.1",
3
+ "version": "6.57.0",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -1,3 +1,5 @@
1
+ import type { ReactNode } from 'react';
2
+
1
3
  import type { ColorValue, SizeValue } from '../../../tokens/vocabulary';
2
4
 
3
5
  /**
@@ -46,6 +48,14 @@ export interface ProgressBaseProps {
46
48
  */
47
49
  label?: string;
48
50
 
51
+ /**
52
+ * Custom content in the circular dial's center, independent of its value or
53
+ * animation. Replaces the visual label when non-null; ignored by other
54
+ * variants. Compose non-interactive content and name the progressbar with
55
+ * `aria-label` separately. Omit or pass null to keep `showLabel`/`label`.
56
+ */
57
+ centerContent?: ReactNode;
58
+
49
59
  /**
50
60
  * Number of segments for segmented variant
51
61
  */
@@ -98,6 +98,28 @@ Show loading without specific progress value:
98
98
  <Progress variant="circular" />
99
99
  ```
100
100
 
101
+ ## Custom circular center
102
+
103
+ `centerContent` renders non-interactive React content in the center of a circular
104
+ dial, outside its rotating/animated ring. It works for determinate and
105
+ indeterminate progress and does not require `showLabel`. A non-null value
106
+ replaces the visual label; `null`/`undefined` keep the existing `label` and
107
+ `showLabel` behavior. Other variants ignore it.
108
+
109
+ Compose the content with shared typography/layout components. Native also wraps
110
+ raw strings/numbers (including fragments) in its caption Text style. The slot
111
+ does not name the progressbar: continue to supply an `aria-label` describing
112
+ what the value represents. The value/role semantics remain unchanged.
113
+
114
+ ```tsx
115
+ <Progress
116
+ variant="circular"
117
+ value={50}
118
+ aria-label="Task progress"
119
+ centerContent={<Typography variant="caption">Step 2 of 4</Typography>}
120
+ />
121
+ ```
122
+
101
123
  ## Props
102
124
 
103
125
  | Prop | Type | Default | Description |
@@ -109,6 +131,7 @@ Show loading without specific progress value:
109
131
  | `glow` | `boolean` | `false` | Enable glow effect |
110
132
  | `pulse` | `boolean` | `false` | Enable pulse animation |
111
133
  | `showLabel` | `boolean` | `false` | Display progress percentage |
134
+ | `centerContent` | `ReactNode` | - | Circular center content; replaces the visual label when non-null |
112
135
  | `label` | `string` | - | Custom label text |
113
136
  | `segments` | `number` | `8` | Number of segments (segmented variant) |
114
137
  | `thickness` | `number` | - | Circle thickness (circular variant) |
@@ -34,6 +34,7 @@ import {
34
34
  } from './Progress.metrics';
35
35
  import type { ProgressProps, ProgressSize, ProgressVariant } from './Progress.types.native';
36
36
  import { useLoopedProgress } from '../../../platform/animation';
37
+ import { renderTextChildren } from '../../../platform/text-children';
37
38
  import { useUiTheme } from '../../../provider/use-ui-theme.native';
38
39
  import type { ColorValue } from '../../../tokens/vocabulary';
39
40
 
@@ -233,7 +234,8 @@ function CircularView({
233
234
  rest,
234
235
  thickness,
235
236
  circularSize,
236
- }: ViewArgs & { thickness: number; circularSize?: number }): React.JSX.Element {
237
+ centerContent,
238
+ }: ViewArgs & { thickness: number; circularSize?: number; centerContent?: React.ReactNode }): React.JSX.Element {
237
239
  const theme = useUiTheme();
238
240
  const indeterminate = value === undefined;
239
241
  const pulseStyle = usePulseStyle(pulse);
@@ -243,31 +245,37 @@ function CircularView({
243
245
 
244
246
  return (
245
247
  <View ref={containerRef} testID={testID} style={[styles.inline, style]}>
246
- <Animated.View
247
- testID={elementTestID}
248
- role="progressbar"
249
- {...valueAria(value)}
250
- style={[box, glow ? circularGlowStyle(theme, color) : null, pulseStyle]}
251
- {...rest}
252
- >
253
- <Animated.View style={[box, spin]}>
254
- <CircularDial
255
- diameter={diameter}
256
- thickness={thickness}
257
- stroke={progressPalette(theme, color).main}
258
- dashOffset={
259
- indeterminate
260
- ? circularCircumference(thickness) * (1 - CIRCULAR_INDETERMINATE.arc)
261
- : circularDashOffset(displayValue, thickness)
262
- }
263
- />
248
+ <View style={[box, styles.inline]}>
249
+ <Animated.View
250
+ testID={elementTestID}
251
+ role="progressbar"
252
+ {...valueAria(value)}
253
+ style={[box, glow ? circularGlowStyle(theme, color) : null, pulseStyle]}
254
+ {...rest}
255
+ >
256
+ <Animated.View style={[box, spin]}>
257
+ <CircularDial
258
+ diameter={diameter}
259
+ thickness={thickness}
260
+ stroke={progressPalette(theme, color).main}
261
+ dashOffset={
262
+ indeterminate
263
+ ? circularCircumference(thickness) * (1 - CIRCULAR_INDETERMINATE.arc)
264
+ : circularDashOffset(displayValue, thickness)
265
+ }
266
+ />
267
+ </Animated.View>
264
268
  </Animated.View>
265
- </Animated.View>
266
- {showLabel && !indeterminate ? (
267
- <View style={[StyleSheet.absoluteFill, styles.centre]}>
268
- <ProgressLabel size={size} label={displayLabel} testID={`${testID}-label`} muted />
269
- </View>
270
- ) : null}
269
+ {centerContent != null ? (
270
+ <View testID={`${testID}-center`} style={[StyleSheet.absoluteFill, styles.centre]}>
271
+ {renderTextChildren(centerContent, labelStyle(theme, size, true))}
272
+ </View>
273
+ ) : showLabel && !indeterminate ? (
274
+ <View style={[StyleSheet.absoluteFill, styles.centre]}>
275
+ <ProgressLabel size={size} label={displayLabel} testID={`${testID}-label`} muted />
276
+ </View>
277
+ ) : null}
278
+ </View>
271
279
  </View>
272
280
  );
273
281
  }
@@ -328,6 +336,7 @@ export const Progress = React.forwardRef<View, ProgressProps>((rawProps, ref) =>
328
336
  pulse,
329
337
  showLabel,
330
338
  label,
339
+ centerContent,
331
340
  segments,
332
341
  thickness,
333
342
  circularSize,
@@ -365,6 +374,7 @@ export const Progress = React.forwardRef<View, ProgressProps>((rawProps, ref) =>
365
374
  elementTestID={elementId ?? `${base}-circular`}
366
375
  thickness={thickness}
367
376
  circularSize={circularSize}
377
+ centerContent={centerContent}
368
378
  />
369
379
  );
370
380
  }
@@ -137,7 +137,7 @@ const ProgressLabel: React.FC<{ size: ProgressSize; label: string; testId: strin
137
137
 
138
138
  const CircularView = React.forwardRef<
139
139
  HTMLDivElement,
140
- ViewProps & { thickness: number; circularSize?: number }
140
+ ViewProps & { thickness: number; circularSize?: number; centerContent?: React.ReactNode }
141
141
  >(
142
142
  (
143
143
  {
@@ -152,6 +152,7 @@ const CircularView = React.forwardRef<
152
152
  dataTestId,
153
153
  thickness,
154
154
  circularSize,
155
+ centerContent,
155
156
  ...props
156
157
  },
157
158
  ref,
@@ -172,8 +173,9 @@ const CircularView = React.forwardRef<
172
173
  data-testid={`${dataTestId}-circular`}
173
174
  {...props}
174
175
  />
175
- {showLabel && value !== undefined && (
176
+ {(centerContent != null || (showLabel && value !== undefined)) && (
176
177
  <Box
178
+ data-testid={centerContent != null ? `${dataTestId}-center` : undefined}
177
179
  sx={{
178
180
  top: 0,
179
181
  left: 0,
@@ -185,7 +187,7 @@ const CircularView = React.forwardRef<
185
187
  justifyContent: 'center',
186
188
  }}
187
189
  >
188
- <Typography
190
+ {centerContent ?? <Typography
189
191
  variant="caption"
190
192
  component="div"
191
193
  color="text.secondary"
@@ -193,7 +195,7 @@ const CircularView = React.forwardRef<
193
195
  data-testid={`${dataTestId}-label`}
194
196
  >
195
197
  {displayLabel}
196
- </Typography>
198
+ </Typography>}
197
199
  </Box>
198
200
  )}
199
201
  </Box>
@@ -263,6 +265,7 @@ export const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(
263
265
  pulse,
264
266
  showLabel,
265
267
  label,
268
+ centerContent,
266
269
  segments,
267
270
  thickness,
268
271
  circularSize,
@@ -290,7 +293,7 @@ export const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(
290
293
 
291
294
  if (variant === 'circular') {
292
295
  return (
293
- <CircularView ref={ref} {...shared} thickness={thickness} circularSize={circularSize} />
296
+ <CircularView ref={ref} {...shared} thickness={thickness} circularSize={circularSize} centerContent={centerContent} />
294
297
  );
295
298
  }
296
299
 
@@ -13,7 +13,7 @@ import type { SizeValue } from '../../../tokens/vocabulary';
13
13
  * either side: MUI's own `onClose` reason argument is dropped by `Dialog.tsx`
14
14
  * before it reaches the caller, so both renderers pass a bare `() => void`.
15
15
  */
16
- export type DialogVariant = 'default' | 'glass' | 'fullscreen' | 'drawer';
16
+ export type DialogVariant = 'default' | 'glass' | 'fullscreen' | 'drawer' | 'bottom-sheet';
17
17
  export type DialogSize = SizeValue;
18
18
  export type DialogBorderRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl';
19
19
  export type DialogActionsAlignment = 'left' | 'center' | 'right' | 'space-between';
@@ -21,6 +21,7 @@ export type DialogActionsAlignment = 'left' | 'center' | 'right' | 'space-betwee
21
21
  export interface DialogBaseProps {
22
22
  open: boolean;
23
23
  children: ReactNode;
24
+ /** `bottom-sheet` keeps the default paper and inset, aligned to the bottom. */
24
25
  variant?: DialogVariant;
25
26
  size?: DialogSize;
26
27
  title?: ReactNode;
@@ -117,6 +117,7 @@ function variantPaper(theme: UiTheme, a: DialogLookArgs, radius: number): ViewSt
117
117
  function overlayFor(theme: UiTheme, variant: DialogVariant): ViewStyle {
118
118
  if (variant === 'fullscreen') return { flex: 1 };
119
119
  if (variant === 'drawer') return { flex: 1, alignItems: 'flex-end' };
120
+ if (variant === 'bottom-sheet') return { ...centredOverlay(theme), justifyContent: 'flex-end' };
120
121
  return centredOverlay(theme);
121
122
  }
122
123
 
@@ -26,7 +26,7 @@ The Dialog component provides a powerful, flexible modal dialog system with mult
26
26
  |------|------|---------|-------------|
27
27
  | `open` | `boolean` | (required) | Controls dialog visibility |
28
28
  | `onClose` | `() => void` | `undefined` | Callback when dialog is closed |
29
- | `variant` | `'default' \| 'glass' \| 'fullscreen' \| 'drawer'` | `'default'` | Visual style variant of the dialog |
29
+ | `variant` | `'default' \| 'glass' \| 'fullscreen' \| 'drawer' \| 'bottom-sheet'` | `'default'` | Visual style variant of the dialog |
30
30
  | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Dialog size (xs: 400px, sm: 600px, md: 800px, lg: 1000px, xl: 1200px) |
31
31
  | `title` | `ReactNode` | `undefined` | Dialog title content |
32
32
  | `description` | `string` | `undefined` | Dialog subtitle/description text |
@@ -584,3 +584,27 @@ slot behaviour, make it a direct child.
584
584
  - **Modal** - Lower-level modal component
585
585
  - **Popover** - Lightweight overlay for contextual content
586
586
  - **Sheet** - Bottom sheet component for mobile-first experiences
587
+
588
+ ## Bottom-anchored confirmation surface
589
+
590
+ `variant="bottom-sheet"` uses the default dialog paper at the bottom of the
591
+ viewport. Its height follows the content, its width remains capped by `size`,
592
+ and its margins and all four corners continue to use the theme. This is an
593
+ inset modal surface, not a draggable sheet; no swipe-to-dismiss is implied.
594
+ It retains the existing native Modal inset behavior; this variant does not add
595
+ a separate safe-area provider or change platform system-bar settings.
596
+
597
+ It shares the existing modal lifecycle, focus handling, backdrop/Escape or
598
+ native Back dismissal, `persistent`, title, content and action slots. Native
599
+ keyboard overlap lifts the bottom edge by the same amount as other inset
600
+ dialogs, keeping the body scrollable and action slot visible. Put vertically
601
+ stacked full-width actions in shared layout components inside `DialogContent`
602
+ or `DialogActions`; the variant does not reorder or resize caller actions.
603
+
604
+ ```tsx
605
+ <Dialog open={open} variant="bottom-sheet" size="xs" title="End session?"
606
+ showCloseButton={false} onClose={onClose}>
607
+ <DialogContent>Save the completed work before leaving.</DialogContent>
608
+ <DialogActions>{actions}</DialogActions>
609
+ </Dialog>
610
+ ```
@@ -185,6 +185,9 @@ export function variantStylesOf(theme: Theme, opts: VariantStyleOptions): SxProp
185
185
  default:
186
186
  return {
187
187
  ...baseStylesOf(theme, opts),
188
+ // An auto cross-axis margin consumes the space above the paper while
189
+ // preserving the same themed bottom/side inset and modal focus path.
190
+ ...(opts.variant === 'bottom-sheet' ? { marginTop: 'auto' } : {}),
188
191
  ...decorations,
189
192
  ...defaultVariantStyles(theme, opts),
190
193
  ...NO_FOCUS_OUTLINE,
package/src/icons/Icon.md CHANGED
@@ -26,3 +26,7 @@ list in `src/icons/glyphs.json`. Adding a glyph is one line there and
26
26
  Inside the package, a ported component draws its own glyphs through this
27
27
  component rather than importing `@mui/icons-material` directly, so its native
28
28
  twin can draw the same one.
29
+
30
+ The shared glyph catalog includes `VolumeUp` and `VolumeOff` for sound controls,
31
+ using the same generated Material paths on web and native. Name the enclosing
32
+ control with its action; leave the icon decorative when that control owns the label.
@@ -43,6 +43,8 @@
43
43
  "Settings",
44
44
  "Visibility",
45
45
  "VisibilityOff",
46
+ "VolumeOff",
47
+ "VolumeUp",
46
48
  "Warning",
47
49
  "WarningAmber"
48
50
  ]
@@ -51,6 +51,8 @@ export const ICON_PATHS = {
51
51
  Settings: ["M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"],
52
52
  Visibility: ["M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"],
53
53
  VisibilityOff: ["M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"],
54
+ VolumeOff: ["M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63m2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71M4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9zM12 4 9.91 6.09 12 8.18z"],
55
+ VolumeUp: ["M3 9v6h4l5 5V4L7 9zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77"],
54
56
  Warning: ["M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"],
55
57
  WarningAmber: ["M12 5.99 19.53 19H4.47zM12 2 1 21h22z","M13 16h-2v2h2zm0-6h-2v5h2z"],
56
58
  } as const;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Progress/Progress.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport LinearProgress from '@mui/material/LinearProgress/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { progressLabelText, resolveProgressProps } from './Progress.helpers';\nimport {\n barEmphasisStyles,\n barVariantStyles,\n circularEmphasisStyles,\n getColorFromTheme,\n getSizeStyles,\n pulseAnimation,\n} from './Progress.styles';\nimport type { ProgressProps, ProgressSize, ProgressVariant } from './Progress.types';\nimport { rem, rems } from '../../../tokens/relative';\n\nconst StyledLinearProgress = styled(LinearProgress, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'customSize', 'customColor', 'glow', 'pulse'].includes(prop as string),\n})<{\n customVariant?: ProgressVariant;\n customSize?: ProgressSize;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n}>(({ theme, customVariant, customSize, customColor = 'primary', glow, pulse }) => {\n const colorPalette = getColorFromTheme(theme, customColor);\n const sizeStyles = getSizeStyles(customSize);\n\n return {\n height: rem(theme, sizeStyles.heightPx),\n borderRadius: rem(theme, sizeStyles.heightPx / 2),\n backgroundColor: alpha(colorPalette.main, 0.1),\n\n '& .MuiLinearProgress-bar': {\n borderRadius: 'inherit',\n transition: 'all 0.3s ease',\n ...barVariantStyles(theme, customVariant, colorPalette),\n ...barEmphasisStyles(theme, colorPalette, glow, pulse),\n },\n };\n});\n\nconst StyledCircularProgress = styled(CircularProgress, {\n shouldForwardProp: (prop) => !['customColor', 'glow', 'pulse'].includes(prop as string),\n})<{\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n}>(({ theme, customColor = 'primary', glow, pulse }) => {\n const colorPalette = getColorFromTheme(theme, customColor);\n\n return {\n color: colorPalette.main,\n ...circularEmphasisStyles(theme, colorPalette, glow, pulse),\n };\n});\n\nconst SegmentedProgress: React.FC<{\n value?: number;\n segments: number;\n color: string;\n size: ProgressSize;\n glow: boolean;\n pulse: boolean;\n dataTestId?: string;\n}> = ({ value = 0, segments, color, size, glow, pulse, dataTestId }) => {\n const theme = useTheme();\n const colorPalette = getColorFromTheme(theme, color);\n const sizeStyles = getSizeStyles(size);\n const filledSegments = Math.floor((value / 100) * segments);\n\n return (\n <Box sx={{ display: 'flex', gap: 0.5, width: '100%' }} data-testid={`${dataTestId}-segments-container`}>\n {Array.from({ length: segments }, (_, index) => (\n <Box\n key={index}\n data-testid={`${dataTestId}-segment-${index}`}\n sx={{\n flex: 1,\n height: rem(theme, sizeStyles.heightPx),\n // In `sx` a numeric radius is a multiple of `shape.borderRadius` — relative already.\n borderRadius: sizeStyles.heightPx / 2,\n backgroundColor:\n index < filledSegments ? colorPalette.main : alpha(colorPalette.main, 0.1),\n transition: 'all 0.3s ease',\n ...(glow &&\n index < filledSegments && {\n boxShadow: `${rems(theme, 0, 0, 6, 1)} ${alpha(colorPalette.main, 0.4)}`,\n }),\n ...(pulse &&\n index < filledSegments && {\n animation: `${pulseAnimation} 2s infinite`,\n }),\n }}\n />\n ))}\n </Box>\n );\n};\n\ninterface ViewProps {\n size: ProgressSize;\n color: string;\n glow: boolean;\n pulse: boolean;\n showLabel: boolean;\n displayValue: number;\n displayLabel: string;\n /** Absent means indeterminate — the bar animates rather than reporting progress. */\n value?: number;\n dataTestId: string;\n}\n\nconst ProgressLabel: React.FC<{ size: ProgressSize; label: string; testId: string }> = ({\n size,\n label,\n testId,\n}) => (\n <Typography\n variant=\"caption\"\n sx={{\n display: 'block',\n textAlign: 'center',\n mt: 1,\n fontSize: getSizeStyles(size).fontSize,\n fontWeight: 600,\n }}\n data-testid={testId}\n >\n {label}\n </Typography>\n);\n\nconst CircularView = React.forwardRef<\n HTMLDivElement,\n ViewProps & { thickness: number; circularSize?: number }\n>(\n (\n {\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel,\n value,\n dataTestId,\n thickness,\n circularSize,\n ...props\n },\n ref,\n ) => {\n const theme = useTheme();\n const sizeStyles = getSizeStyles(size);\n\n return (\n <Box ref={ref} sx={{ position: 'relative', display: 'inline-flex' }} data-testid={dataTestId}>\n <StyledCircularProgress\n variant={value !== undefined ? 'determinate' : 'indeterminate'}\n value={displayValue}\n size={rem(theme, circularSize || sizeStyles.circularSizePx)}\n thickness={thickness}\n customColor={color}\n glow={glow}\n pulse={pulse}\n data-testid={`${dataTestId}-circular`}\n {...props}\n />\n {showLabel && value !== undefined && (\n <Box\n sx={{\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Typography\n variant=\"caption\"\n component=\"div\"\n color=\"text.secondary\"\n sx={{ fontSize: sizeStyles.fontSize, fontWeight: 600 }}\n data-testid={`${dataTestId}-label`}\n >\n {displayLabel}\n </Typography>\n </Box>\n )}\n </Box>\n );\n },\n);\n\nCircularView.displayName = 'ProgressCircularView';\n\nconst SegmentedView = React.forwardRef<HTMLDivElement, ViewProps & { segments: number }>(\n (\n { size, color, glow, pulse, showLabel, displayValue, displayLabel, dataTestId, segments, value: _value, ...props },\n ref,\n ) => (\n <Box ref={ref} sx={{ width: '100%' }} data-testid={dataTestId} {...props}>\n <SegmentedProgress\n value={displayValue}\n segments={segments}\n color={color}\n size={size}\n glow={glow}\n pulse={pulse}\n dataTestId={dataTestId}\n />\n {showLabel && (\n <ProgressLabel size={size} label={displayLabel} testId={`${dataTestId}-label`} />\n )}\n </Box>\n ),\n);\n\nSegmentedView.displayName = 'ProgressSegmentedView';\n\nconst LinearView = React.forwardRef<HTMLDivElement, ViewProps & { variant: ProgressVariant }>(\n (\n { size, color, glow, pulse, showLabel, displayValue, displayLabel, value, dataTestId, variant, ...props },\n ref,\n ) => (\n <Box ref={ref} sx={{ width: '100%' }} data-testid={dataTestId}>\n <StyledLinearProgress\n variant={value !== undefined ? 'determinate' : 'indeterminate'}\n value={displayValue}\n customVariant={variant}\n customSize={size}\n customColor={color}\n glow={glow}\n pulse={pulse}\n data-testid={`${dataTestId}-linear`}\n {...props}\n />\n {showLabel && (\n <ProgressLabel size={size} label={displayLabel} testId={`${dataTestId}-label`} />\n )}\n </Box>\n ),\n);\n\nLinearView.displayName = 'ProgressLinearView';\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (rawProps, ref) => {\n const {\n variant,\n size,\n color,\n glow,\n pulse,\n showLabel,\n label,\n segments,\n thickness,\n circularSize,\n value,\n dataTestId,\n testID,\n ...props\n } = resolveProgressProps(rawProps);\n const displayValue = value || 0;\n const shared = {\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel: progressLabelText(label, showLabel, displayValue),\n value,\n // `testID` is React Native's spelling of the same id and names the\n // component too; `data-testid` is left in `props`, on its way to the\n // element the caller means to address, where it has always landed.\n dataTestId: testID ?? dataTestId,\n ...props,\n };\n\n if (variant === 'circular') {\n return (\n <CircularView ref={ref} {...shared} thickness={thickness} circularSize={circularSize} />\n );\n }\n\n if (variant === 'segmented') {\n return <SegmentedView ref={ref} {...shared} segments={segments} />;\n }\n\n return <LinearView ref={ref} {...shared} variant={variant} />;\n },\n);\n\nProgress.displayName = 'Progress';\n"],"mappings":"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","names":[]}