@12-apps/ui 6.66.1 → 6.66.2

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 (47) hide show
  1. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -2
  2. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +1 -1
  3. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +7 -7
  4. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -7
  5. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +9 -9
  6. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -7
  7. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +8 -8
  8. package/dist/_internal/components/data-display/index.js +2 -2
  9. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -4
  10. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -3
  11. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
  12. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -4
  13. package/dist/_internal/components/feedback/index.js +6 -6
  14. package/dist/_internal/components/index.js +6 -6
  15. package/dist/{chunk-IPCRPGWU.js → chunk-4W6AQFMO.js} +2 -2
  16. package/dist/{chunk-UD4R5HMI.js → chunk-5JRAQ4D5.js} +2 -2
  17. package/dist/{chunk-FTCJPTDA.js → chunk-62BY4ZUQ.js} +2 -2
  18. package/dist/{chunk-J4AHFEEV.js → chunk-6QOJEZDH.js} +2 -2
  19. package/dist/{chunk-FNFDXJWR.js → chunk-6S3S2K7O.js} +2 -2
  20. package/dist/{chunk-IQQX3NDO.js → chunk-BGTG7G54.js} +5 -2
  21. package/dist/chunk-BGTG7G54.js.map +1 -0
  22. package/dist/{chunk-7QRUGEGE.js → chunk-GICG3XJK.js} +2 -2
  23. package/dist/{chunk-LGCZRKED.js → chunk-NJMAFII4.js} +2 -2
  24. package/dist/{chunk-SFZHGDRH.js → chunk-RX2XP7V5.js} +2 -2
  25. package/dist/{chunk-VI6HYB2W.js → chunk-RZCXYKY4.js} +5 -2
  26. package/dist/chunk-RZCXYKY4.js.map +1 -0
  27. package/dist/{chunk-TAUCPCNN.js → chunk-YNIOCELQ.js} +2 -2
  28. package/dist/data-display/AlertDialog.js +2 -2
  29. package/dist/data-display/CardKit.js +8 -8
  30. package/dist/data-display/DataViews.js +9 -9
  31. package/dist/feedback/ConfirmAction.js +6 -6
  32. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  33. package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts.map +1 -1
  34. package/package.json +1 -1
  35. package/src/components/data-display/AlertDialog/AlertDialog.parts.tsx +4 -1
  36. package/src/components/data-display/AlertDialog/AlertDialog.tsx +3 -0
  37. package/dist/chunk-IQQX3NDO.js.map +0 -1
  38. package/dist/chunk-VI6HYB2W.js.map +0 -1
  39. /package/dist/{chunk-IPCRPGWU.js.map → chunk-4W6AQFMO.js.map} +0 -0
  40. /package/dist/{chunk-UD4R5HMI.js.map → chunk-5JRAQ4D5.js.map} +0 -0
  41. /package/dist/{chunk-FTCJPTDA.js.map → chunk-62BY4ZUQ.js.map} +0 -0
  42. /package/dist/{chunk-J4AHFEEV.js.map → chunk-6QOJEZDH.js.map} +0 -0
  43. /package/dist/{chunk-FNFDXJWR.js.map → chunk-6S3S2K7O.js.map} +0 -0
  44. /package/dist/{chunk-7QRUGEGE.js.map → chunk-GICG3XJK.js.map} +0 -0
  45. /package/dist/{chunk-LGCZRKED.js.map → chunk-NJMAFII4.js.map} +0 -0
  46. /package/dist/{chunk-SFZHGDRH.js.map → chunk-RX2XP7V5.js.map} +0 -0
  47. /package/dist/{chunk-TAUCPCNN.js.map → chunk-YNIOCELQ.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AlertDialog
3
- } from "../../../../chunk-VI6HYB2W.js";
4
- import "../../../../chunk-IQQX3NDO.js";
3
+ } from "../../../../chunk-RZCXYKY4.js";
4
+ import "../../../../chunk-BGTG7G54.js";
5
5
  import "../../../../chunk-XJAD6E3V.js";
6
6
  import "../../../../chunk-F5H2ZXST.js";
7
7
  import "../../../../chunk-N3GAFIXG.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AlertDialogFooter
3
- } from "../../../../chunk-IQQX3NDO.js";
3
+ } from "../../../../chunk-BGTG7G54.js";
4
4
  import "../../../../chunk-YKCAJ2TN.js";
5
5
  import "../../../../chunk-PZ5AY32C.js";
6
6
  export {
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import {
3
3
  useRemoveConfirm
4
- } from "../../../../chunk-FTCJPTDA.js";
4
+ } from "../../../../chunk-62BY4ZUQ.js";
5
5
  import "../../../../chunk-N7KWWIF7.js";
6
6
  import "../../../../chunk-XCBQXSTR.js";
7
- import "../../../../chunk-LGCZRKED.js";
8
- import "../../../../chunk-7QRUGEGE.js";
9
- import "../../../../chunk-SFZHGDRH.js";
7
+ import "../../../../chunk-NJMAFII4.js";
8
+ import "../../../../chunk-GICG3XJK.js";
9
+ import "../../../../chunk-RX2XP7V5.js";
10
10
  import "../../../../chunk-EMYESBIT.js";
11
- import "../../../../chunk-UD4R5HMI.js";
11
+ import "../../../../chunk-5JRAQ4D5.js";
12
12
  import "../../../../chunk-NUGT7LMR.js";
13
13
  import "../../../../chunk-DQJFCVXW.js";
14
14
  import "../../../../chunk-JYAXTRNH.js";
15
15
  import "../../../../chunk-L7VH6IMR.js";
16
16
  import "../../../../chunk-2IBFEHIX.js";
17
- import "../../../../chunk-VI6HYB2W.js";
18
- import "../../../../chunk-IQQX3NDO.js";
17
+ import "../../../../chunk-RZCXYKY4.js";
18
+ import "../../../../chunk-BGTG7G54.js";
19
19
  import "../../../../chunk-3LHZCVGM.js";
20
20
  import "../../../../chunk-BA4RHQ3B.js";
21
21
  import "../../../../chunk-364NH2NY.js";
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  import {
3
3
  useRowConfirm
4
- } from "../../../../chunk-J4AHFEEV.js";
4
+ } from "../../../../chunk-6QOJEZDH.js";
5
5
  import "../../../../chunk-XCBQXSTR.js";
6
- import "../../../../chunk-LGCZRKED.js";
7
- import "../../../../chunk-7QRUGEGE.js";
8
- import "../../../../chunk-SFZHGDRH.js";
6
+ import "../../../../chunk-NJMAFII4.js";
7
+ import "../../../../chunk-GICG3XJK.js";
8
+ import "../../../../chunk-RX2XP7V5.js";
9
9
  import "../../../../chunk-EMYESBIT.js";
10
- import "../../../../chunk-UD4R5HMI.js";
10
+ import "../../../../chunk-5JRAQ4D5.js";
11
11
  import "../../../../chunk-2IBFEHIX.js";
12
- import "../../../../chunk-VI6HYB2W.js";
13
- import "../../../../chunk-IQQX3NDO.js";
12
+ import "../../../../chunk-RZCXYKY4.js";
13
+ import "../../../../chunk-BGTG7G54.js";
14
14
  import "../../../../chunk-BA4RHQ3B.js";
15
15
  import "../../../../chunk-364NH2NY.js";
16
16
  import "../../../../chunk-PPEHBI5O.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  DataViewsTableBase
4
- } from "../../../../chunk-FNFDXJWR.js";
4
+ } from "../../../../chunk-6S3S2K7O.js";
5
5
  import "../../../../chunk-ZEVFMQAQ.js";
6
6
  import "../../../../chunk-M6V7Y7CP.js";
7
7
  import "../../../../chunk-ZOLAYP2D.js";
@@ -31,9 +31,9 @@ import "../../../../chunk-VJB63DUM.js";
31
31
  import "../../../../chunk-O5UGAL2V.js";
32
32
  import "../../../../chunk-GCZJH4XL.js";
33
33
  import "../../../../chunk-G6EJLEVV.js";
34
- import "../../../../chunk-TAUCPCNN.js";
34
+ import "../../../../chunk-YNIOCELQ.js";
35
35
  import "../../../../chunk-YKKHNYEW.js";
36
- import "../../../../chunk-IPCRPGWU.js";
36
+ import "../../../../chunk-4W6AQFMO.js";
37
37
  import "../../../../chunk-5M4TYFR3.js";
38
38
  import "../../../../chunk-L6MGAPBX.js";
39
39
  import "../../../../chunk-2VMIHFMX.js";
@@ -119,11 +119,11 @@ import "../../../../chunk-KLJYIS5L.js";
119
119
  import "../../../../chunk-C3UKR3NT.js";
120
120
  import "../../../../chunk-D6KL74KI.js";
121
121
  import "../../../../chunk-XCBQXSTR.js";
122
- import "../../../../chunk-LGCZRKED.js";
123
- import "../../../../chunk-7QRUGEGE.js";
124
- import "../../../../chunk-SFZHGDRH.js";
122
+ import "../../../../chunk-NJMAFII4.js";
123
+ import "../../../../chunk-GICG3XJK.js";
124
+ import "../../../../chunk-RX2XP7V5.js";
125
125
  import "../../../../chunk-EMYESBIT.js";
126
- import "../../../../chunk-UD4R5HMI.js";
126
+ import "../../../../chunk-5JRAQ4D5.js";
127
127
  import "../../../../chunk-KFJKOVDD.js";
128
128
  import "../../../../chunk-GMJBWOIU.js";
129
129
  import "../../../../chunk-GYXUCS37.js";
@@ -149,8 +149,8 @@ import "../../../../chunk-DQJFCVXW.js";
149
149
  import "../../../../chunk-JYAXTRNH.js";
150
150
  import "../../../../chunk-L7VH6IMR.js";
151
151
  import "../../../../chunk-2IBFEHIX.js";
152
- import "../../../../chunk-VI6HYB2W.js";
153
- import "../../../../chunk-IQQX3NDO.js";
152
+ import "../../../../chunk-RZCXYKY4.js";
153
+ import "../../../../chunk-BGTG7G54.js";
154
154
  import "../../../../chunk-3LHZCVGM.js";
155
155
  import "../../../../chunk-6DPAWXZ3.js";
156
156
  import "../../../../chunk-WEBEOBN5.js";
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import {
3
3
  ManageViewsDialog
4
- } from "../../../../chunk-IPCRPGWU.js";
4
+ } from "../../../../chunk-4W6AQFMO.js";
5
5
  import "../../../../chunk-KHG57NAE.js";
6
6
  import "../../../../chunk-XCBQXSTR.js";
7
- import "../../../../chunk-LGCZRKED.js";
8
- import "../../../../chunk-7QRUGEGE.js";
9
- import "../../../../chunk-SFZHGDRH.js";
7
+ import "../../../../chunk-NJMAFII4.js";
8
+ import "../../../../chunk-GICG3XJK.js";
9
+ import "../../../../chunk-RX2XP7V5.js";
10
10
  import "../../../../chunk-EMYESBIT.js";
11
- import "../../../../chunk-UD4R5HMI.js";
11
+ import "../../../../chunk-5JRAQ4D5.js";
12
12
  import "../../../../chunk-KFJKOVDD.js";
13
13
  import "../../../../chunk-GMJBWOIU.js";
14
14
  import "../../../../chunk-GYXUCS37.js";
@@ -17,8 +17,8 @@ import "../../../../chunk-Z2JH5KW5.js";
17
17
  import "../../../../chunk-AL5E624U.js";
18
18
  import "../../../../chunk-LV7LSPBF.js";
19
19
  import "../../../../chunk-2IBFEHIX.js";
20
- import "../../../../chunk-VI6HYB2W.js";
21
- import "../../../../chunk-IQQX3NDO.js";
20
+ import "../../../../chunk-RZCXYKY4.js";
21
+ import "../../../../chunk-BGTG7G54.js";
22
22
  import "../../../../chunk-6DPAWXZ3.js";
23
23
  import "../../../../chunk-WEBEOBN5.js";
24
24
  import "../../../../chunk-VUHLNYAE.js";
@@ -3,9 +3,9 @@ import {
3
3
  ViewDialogs,
4
4
  ViewMutationErrorAlert,
5
5
  ViewsMenuSlot
6
- } from "../../../../chunk-TAUCPCNN.js";
6
+ } from "../../../../chunk-YNIOCELQ.js";
7
7
  import "../../../../chunk-YKKHNYEW.js";
8
- import "../../../../chunk-IPCRPGWU.js";
8
+ import "../../../../chunk-4W6AQFMO.js";
9
9
  import "../../../../chunk-5M4TYFR3.js";
10
10
  import "../../../../chunk-DUVH273U.js";
11
11
  import "../../../../chunk-KHG57NAE.js";
@@ -31,11 +31,11 @@ import "../../../../chunk-SL6454K7.js";
31
31
  import "../../../../chunk-PD7MKJCM.js";
32
32
  import "../../../../chunk-KLJYIS5L.js";
33
33
  import "../../../../chunk-XCBQXSTR.js";
34
- import "../../../../chunk-LGCZRKED.js";
35
- import "../../../../chunk-7QRUGEGE.js";
36
- import "../../../../chunk-SFZHGDRH.js";
34
+ import "../../../../chunk-NJMAFII4.js";
35
+ import "../../../../chunk-GICG3XJK.js";
36
+ import "../../../../chunk-RX2XP7V5.js";
37
37
  import "../../../../chunk-EMYESBIT.js";
38
- import "../../../../chunk-UD4R5HMI.js";
38
+ import "../../../../chunk-5JRAQ4D5.js";
39
39
  import "../../../../chunk-KFJKOVDD.js";
40
40
  import "../../../../chunk-GMJBWOIU.js";
41
41
  import "../../../../chunk-GYXUCS37.js";
@@ -48,8 +48,8 @@ import "../../../../chunk-DQJFCVXW.js";
48
48
  import "../../../../chunk-JYAXTRNH.js";
49
49
  import "../../../../chunk-L7VH6IMR.js";
50
50
  import "../../../../chunk-2IBFEHIX.js";
51
- import "../../../../chunk-VI6HYB2W.js";
52
- import "../../../../chunk-IQQX3NDO.js";
51
+ import "../../../../chunk-RZCXYKY4.js";
52
+ import "../../../../chunk-BGTG7G54.js";
53
53
  import "../../../../chunk-3LHZCVGM.js";
54
54
  import "../../../../chunk-6DPAWXZ3.js";
55
55
  import "../../../../chunk-WEBEOBN5.js";
@@ -197,8 +197,8 @@ import "../../../chunk-L7VH6IMR.js";
197
197
  import "../../../chunk-2IBFEHIX.js";
198
198
  import {
199
199
  AlertDialog
200
- } from "../../../chunk-VI6HYB2W.js";
201
- import "../../../chunk-IQQX3NDO.js";
200
+ } from "../../../chunk-RZCXYKY4.js";
201
+ import "../../../chunk-BGTG7G54.js";
202
202
  import {
203
203
  Badge
204
204
  } from "../../../chunk-N5PVD4J5.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ConfirmAction
3
- } from "../../../../chunk-SFZHGDRH.js";
3
+ } from "../../../../chunk-RX2XP7V5.js";
4
4
  import "../../../../chunk-EMYESBIT.js";
5
- import "../../../../chunk-UD4R5HMI.js";
5
+ import "../../../../chunk-5JRAQ4D5.js";
6
6
  import "../../../../chunk-2IBFEHIX.js";
7
- import "../../../../chunk-VI6HYB2W.js";
8
- import "../../../../chunk-IQQX3NDO.js";
7
+ import "../../../../chunk-RZCXYKY4.js";
8
+ import "../../../../chunk-BGTG7G54.js";
9
9
  import "../../../../chunk-XJAD6E3V.js";
10
10
  import "../../../../chunk-F5H2ZXST.js";
11
11
  import "../../../../chunk-N3GAFIXG.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ConfirmActionDialog
3
- } from "../../../../chunk-UD4R5HMI.js";
3
+ } from "../../../../chunk-5JRAQ4D5.js";
4
4
  import "../../../../chunk-2IBFEHIX.js";
5
- import "../../../../chunk-VI6HYB2W.js";
6
- import "../../../../chunk-IQQX3NDO.js";
5
+ import "../../../../chunk-RZCXYKY4.js";
6
+ import "../../../../chunk-BGTG7G54.js";
7
7
  import "../../../../chunk-XJAD6E3V.js";
8
8
  import "../../../../chunk-F5H2ZXST.js";
9
9
  import "../../../../chunk-N3GAFIXG.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createConfirmButton
3
- } from "../../../../chunk-LGCZRKED.js";
4
- import "../../../../chunk-7QRUGEGE.js";
3
+ } from "../../../../chunk-NJMAFII4.js";
4
+ import "../../../../chunk-GICG3XJK.js";
5
5
  import "../../../../chunk-EMYESBIT.js";
6
- import "../../../../chunk-UD4R5HMI.js";
6
+ import "../../../../chunk-5JRAQ4D5.js";
7
7
  import "../../../../chunk-2IBFEHIX.js";
8
- import "../../../../chunk-VI6HYB2W.js";
9
- import "../../../../chunk-IQQX3NDO.js";
8
+ import "../../../../chunk-RZCXYKY4.js";
9
+ import "../../../../chunk-BGTG7G54.js";
10
10
  import "../../../../chunk-BA4RHQ3B.js";
11
11
  import "../../../../chunk-364NH2NY.js";
12
12
  import "../../../../chunk-PPEHBI5O.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  withConfirmation
3
- } from "../../../../chunk-7QRUGEGE.js";
3
+ } from "../../../../chunk-GICG3XJK.js";
4
4
  import "../../../../chunk-EMYESBIT.js";
5
- import "../../../../chunk-UD4R5HMI.js";
5
+ import "../../../../chunk-5JRAQ4D5.js";
6
6
  import "../../../../chunk-2IBFEHIX.js";
7
- import "../../../../chunk-VI6HYB2W.js";
8
- import "../../../../chunk-IQQX3NDO.js";
7
+ import "../../../../chunk-RZCXYKY4.js";
8
+ import "../../../../chunk-BGTG7G54.js";
9
9
  import "../../../../chunk-XJAD6E3V.js";
10
10
  import "../../../../chunk-F5H2ZXST.js";
11
11
  import "../../../../chunk-N3GAFIXG.js";
@@ -40,19 +40,19 @@ import "../../../chunk-OHXAJUO5.js";
40
40
  import "../../../chunk-XCBQXSTR.js";
41
41
  import {
42
42
  createConfirmButton
43
- } from "../../../chunk-LGCZRKED.js";
43
+ } from "../../../chunk-NJMAFII4.js";
44
44
  import {
45
45
  withConfirmation
46
- } from "../../../chunk-7QRUGEGE.js";
46
+ } from "../../../chunk-GICG3XJK.js";
47
47
  import {
48
48
  ConfirmAction
49
- } from "../../../chunk-SFZHGDRH.js";
49
+ } from "../../../chunk-RX2XP7V5.js";
50
50
  import {
51
51
  useConfirmAction
52
52
  } from "../../../chunk-EMYESBIT.js";
53
53
  import {
54
54
  ConfirmActionDialog
55
- } from "../../../chunk-UD4R5HMI.js";
55
+ } from "../../../chunk-5JRAQ4D5.js";
56
56
  import "../../../chunk-KFJKOVDD.js";
57
57
  import {
58
58
  Dialog,
@@ -83,8 +83,8 @@ import "../../../chunk-DQJFCVXW.js";
83
83
  import "../../../chunk-JYAXTRNH.js";
84
84
  import "../../../chunk-L7VH6IMR.js";
85
85
  import "../../../chunk-2IBFEHIX.js";
86
- import "../../../chunk-VI6HYB2W.js";
87
- import "../../../chunk-IQQX3NDO.js";
86
+ import "../../../chunk-RZCXYKY4.js";
87
+ import "../../../chunk-BGTG7G54.js";
88
88
  import "../../../chunk-3LHZCVGM.js";
89
89
  import "../../../chunk-BA4RHQ3B.js";
90
90
  import "../../../chunk-364NH2NY.js";
@@ -656,19 +656,19 @@ import {
656
656
  import "../../chunk-XCBQXSTR.js";
657
657
  import {
658
658
  createConfirmButton
659
- } from "../../chunk-LGCZRKED.js";
659
+ } from "../../chunk-NJMAFII4.js";
660
660
  import {
661
661
  withConfirmation
662
- } from "../../chunk-7QRUGEGE.js";
662
+ } from "../../chunk-GICG3XJK.js";
663
663
  import {
664
664
  ConfirmAction
665
- } from "../../chunk-SFZHGDRH.js";
665
+ } from "../../chunk-RX2XP7V5.js";
666
666
  import {
667
667
  useConfirmAction
668
668
  } from "../../chunk-EMYESBIT.js";
669
669
  import {
670
670
  ConfirmActionDialog
671
- } from "../../chunk-UD4R5HMI.js";
671
+ } from "../../chunk-5JRAQ4D5.js";
672
672
  import "../../chunk-KFJKOVDD.js";
673
673
  import {
674
674
  Dialog,
@@ -761,8 +761,8 @@ import "../../chunk-L7VH6IMR.js";
761
761
  import "../../chunk-2IBFEHIX.js";
762
762
  import {
763
763
  AlertDialog
764
- } from "../../chunk-VI6HYB2W.js";
765
- import "../../chunk-IQQX3NDO.js";
764
+ } from "../../chunk-RZCXYKY4.js";
765
+ import "../../chunk-BGTG7G54.js";
766
766
  import "../../chunk-5AK2EZG5.js";
767
767
  import {
768
768
  Badge
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KHG57NAE.js";
4
4
  import {
5
5
  createConfirmButton
6
- } from "./chunk-LGCZRKED.js";
6
+ } from "./chunk-NJMAFII4.js";
7
7
  import {
8
8
  Dialog,
9
9
  DialogContent
@@ -128,4 +128,4 @@ function ManageViewsDialog({
128
128
  export {
129
129
  ManageViewsDialog
130
130
  };
131
- //# sourceMappingURL=chunk-IPCRPGWU.js.map
131
+ //# sourceMappingURL=chunk-4W6AQFMO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AlertDialog
3
- } from "./chunk-VI6HYB2W.js";
3
+ } from "./chunk-RZCXYKY4.js";
4
4
 
5
5
  // src/components/feedback/ConfirmAction/ConfirmAction.parts.tsx
6
6
  import Alert from "@mui/material/Alert/index.js";
@@ -104,4 +104,4 @@ function ConfirmActionDialog({
104
104
  export {
105
105
  ConfirmActionDialog
106
106
  };
107
- //# sourceMappingURL=chunk-UD4R5HMI.js.map
107
+ //# sourceMappingURL=chunk-5JRAQ4D5.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-EMYESBIT.js";
7
7
  import {
8
8
  ConfirmActionDialog
9
- } from "./chunk-UD4R5HMI.js";
9
+ } from "./chunk-5JRAQ4D5.js";
10
10
 
11
11
  // src/components/data-display/CardKit/use-remove-confirm.tsx
12
12
  import { jsx } from "react/jsx-runtime";
@@ -50,4 +50,4 @@ function useRemoveConfirm({
50
50
  export {
51
51
  useRemoveConfirm
52
52
  };
53
- //# sourceMappingURL=chunk-FTCJPTDA.js.map
53
+ //# sourceMappingURL=chunk-62BY4ZUQ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-EMYESBIT.js";
4
4
  import {
5
5
  ConfirmActionDialog
6
- } from "./chunk-UD4R5HMI.js";
6
+ } from "./chunk-5JRAQ4D5.js";
7
7
 
8
8
  // src/components/data-display/CardKit/use-row-confirm.tsx
9
9
  import { useState } from "react";
@@ -43,4 +43,4 @@ function useRowConfirm({
43
43
  export {
44
44
  useRowConfirm
45
45
  };
46
- //# sourceMappingURL=chunk-J4AHFEEV.js.map
46
+ //# sourceMappingURL=chunk-6QOJEZDH.js.map
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  ViewDialogs,
16
16
  ViewMutationErrorAlert
17
- } from "./chunk-TAUCPCNN.js";
17
+ } from "./chunk-YNIOCELQ.js";
18
18
  import {
19
19
  useSavedViewsController
20
20
  } from "./chunk-BI7YMVKZ.js";
@@ -166,4 +166,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
166
166
  export {
167
167
  DataViewsTableBase
168
168
  };
169
- //# sourceMappingURL=chunk-FNFDXJWR.js.map
169
+ //# sourceMappingURL=chunk-6S3S2K7O.js.map
@@ -15,7 +15,10 @@ var StyledDialogActions = styled(DialogActions, {
15
15
  flexWrap: "wrap-reverse",
16
16
  columnGap: theme.spacing(2),
17
17
  rowGap: theme.spacing(1),
18
- ...fill && { "& > .MuiButton-root": { flexGrow: 1 } }
18
+ // A 40px tap target, the floor the kit's own Button keeps (FUT-3269): MUI's
19
+ // medium button is 37px, short of it on a phone.
20
+ "& > .MuiButton-root": { minHeight: rem(theme, 40) },
21
+ ...fill && { "& > .MuiButton-root": { flexGrow: 1, minHeight: rem(theme, 40) } }
19
22
  }));
20
23
  var confirmButtonColor = (variant) => variant === "destructive" ? "error" : "primary";
21
24
  var buttonLooks = (emphasis, variant) => emphasis === "cancel" ? {
@@ -93,4 +96,4 @@ function AlertDialogFooter({
93
96
  export {
94
97
  AlertDialogFooter
95
98
  };
96
- //# sourceMappingURL=chunk-IQQX3NDO.js.map
99
+ //# sourceMappingURL=chunk-BGTG7G54.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/AlertDialog/AlertDialog.parts.tsx"],"sourcesContent":["/**\n * The AlertDialog's action row, kept apart from the dialog shell so each stays\n * inside the complexity budget: which button is filled, where each one sits,\n * and how the row wraps.\n */\nimport type { ButtonProps } from '@mui/material/Button/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport DialogActions from '@mui/material/DialogActions/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { rem } from '../../../tokens/relative';\n\nimport type { AlertDialogProps } from './AlertDialog.types';\n\n/**\n * The action row WRAPS WHOLE BUTTONS; it never breaks a label inside one. A pair\n * that did not fit side by side used to squeeze the longer label onto two\n * lines, so one button stood twice as tall as its neighbour. Now the row breaks\n * instead. `wrap-reverse` puts the LAST button — the primary, whichever\n * `emphasis` picks — on top when it stacks, the same slot it holds on the right\n * when the row fits. A pair that fits is laid out exactly as before: natural\n * widths, pushed to the right.\n *\n * `fill` — set only by `emphasis=\"cancel\"` — lets the buttons grow to share the\n * row, and so to take the full width of their line once it stacks. It is not\n * the default because growing also stretches a pair that fits, which would\n * redraw every existing dialog's footer.\n *\n * Rendered with `disableSpacing`: MUI's own spacing is a left margin on every\n * button after the first, which would indent a button that wrapped onto a line\n * of its own. The gaps below replace it, at the same 16px across.\n */\nconst StyledDialogActions = styled(DialogActions, {\n shouldForwardProp: (prop) => prop !== 'fill',\n})<{ fill: boolean }>(({ theme, fill }) => ({\n padding: theme.spacing(2, 3, 3, 3),\n flexWrap: 'wrap-reverse',\n columnGap: theme.spacing(2),\n rowGap: theme.spacing(1),\n // A 40px tap target, the floor the kit's own Button keeps (FUT-3269): MUI's\n // medium button is 37px, short of it on a phone.\n '& > .MuiButton-root': { minHeight: rem(theme, 40) },\n ...(fill && { '& > .MuiButton-root': { flexGrow: 1, minHeight: rem(theme, 40) } }),\n}));\n\nconst confirmButtonColor = (variant: AlertDialogProps['variant']): 'error' | 'primary' =>\n variant === 'destructive' ? 'error' : 'primary';\n\ninterface ButtonLook {\n variant: ButtonProps['variant'];\n color: ButtonProps['color'];\n}\n\n/**\n * How each button is drawn, by `emphasis`: the emphasised one is filled, the\n * other a NEUTRAL outline. Primary / neutral both ways round — a confirm that\n * steps down drops the variant's colour too, so the one filled button is the\n * only coloured thing in the row and the eye has a single place to land.\n */\nconst buttonLooks = (\n emphasis: AlertDialogProps['emphasis'],\n variant: AlertDialogProps['variant'],\n): { cancel: ButtonLook; confirm: ButtonLook } =>\n emphasis === 'cancel'\n ? {\n cancel: { variant: 'contained', color: 'primary' },\n confirm: { variant: 'outlined', color: 'inherit' },\n }\n : {\n cancel: { variant: 'outlined', color: 'inherit' },\n confirm: { variant: 'contained', color: confirmButtonColor(variant) },\n };\n\n/**\n * The emphasis that applies: `cancel` only while the cancel is shown. A hidden\n * cancel with the confirm stepped down would leave a dialog with no primary.\n */\nconst effectiveEmphasis = (\n emphasis: AlertDialogProps['emphasis'],\n showCancel: boolean,\n): NonNullable<AlertDialogProps['emphasis']> =>\n emphasis === 'cancel' && showCancel ? 'cancel' : 'confirm';\n\n/**\n * Whether the cancel owns focus on open: what `initialFocus` says, and when it\n * says nothing, the emphasised button — so Enter on a steered question keeps\n * the work instead of completing the loss.\n */\nconst focusesCancel = (\n initialFocus: AlertDialogProps['initialFocus'],\n emphasis: NonNullable<AlertDialogProps['emphasis']>,\n): boolean => (initialFocus ?? emphasis) === 'cancel';\n\n/** The two buttons in slot order: the emphasised one LAST, the primary slot. */\nconst inSlotOrder = (\n emphasis: AlertDialogProps['emphasis'],\n cancel: React.ReactNode,\n confirm: React.ReactNode,\n): React.ReactNode[] => (emphasis === 'cancel' ? [confirm, cancel] : [cancel, confirm]);\n\n/**\n * Action row: the optional cancel button and the (variant-coloured) confirm,\n * with the emphasised one LAST — the primary slot, on the right or, once the\n * row stacks, on top. DOM order is the tab order, so it follows the same rule.\n */\nexport function AlertDialogFooter({\n variant,\n cancelText = 'Cancel',\n confirmText = 'Confirm',\n showCancel = true,\n loading = false,\n confirmDisabled = false,\n initialFocus,\n emphasis: asked,\n onCancel,\n onConfirm,\n dataTestId,\n}: Pick<\n AlertDialogProps,\n | 'variant'\n | 'cancelText'\n | 'confirmText'\n | 'showCancel'\n | 'loading'\n | 'confirmDisabled'\n | 'initialFocus'\n | 'emphasis'\n> & {\n onCancel: () => void;\n onConfirm: () => void;\n dataTestId: string;\n}): React.ReactElement {\n const theme = useTheme();\n const emphasis = effectiveEmphasis(asked, showCancel);\n const look = buttonLooks(emphasis, variant);\n const cancelFocused = focusesCancel(initialFocus, emphasis);\n const cancel = showCancel && (\n <Button\n key=\"cancel\"\n onClick={onCancel}\n variant={look.cancel.variant}\n color={look.cancel.color}\n disabled={loading}\n autoFocus={cancelFocused}\n data-testid={`${dataTestId}-cancel-button`}\n >\n {cancelText}\n </Button>\n );\n const confirm = (\n <Button\n key=\"confirm\"\n onClick={onConfirm}\n variant={look.confirm.variant}\n color={look.confirm.color}\n disabled={confirmDisabled || loading}\n startIcon={\n loading ? (\n <CircularProgress\n size={rem(theme, 16)}\n color=\"inherit\"\n data-testid={`${dataTestId}-loading-spinner`}\n />\n ) : undefined\n }\n autoFocus={!cancelFocused}\n data-testid={`${dataTestId}-confirm-button`}\n >\n {confirmText}\n </Button>\n );\n return (\n <StyledDialogActions\n disableSpacing\n fill={emphasis === 'cancel'}\n data-testid={`${dataTestId}-actions`}\n >\n {inSlotOrder(emphasis, cancel, confirm)}\n </StyledDialogActions>\n );\n}\n"],"mappings":";;;;;AAMA,OAAO,YAAY;AACnB,OAAO,sBAAsB;AAC7B,OAAO,mBAAmB;AAC1B,SAAS,QAAQ,gBAAgB;AAkI7B;AAzGJ,IAAM,sBAAsB,OAAO,eAAe;AAAA,EAChD,mBAAmB,CAAC,SAAS,SAAS;AACxC,CAAC,EAAqB,CAAC,EAAE,OAAO,KAAK,OAAO;AAAA,EAC1C,SAAS,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC;AAAA,EACjC,UAAU;AAAA,EACV,WAAW,MAAM,QAAQ,CAAC;AAAA,EAC1B,QAAQ,MAAM,QAAQ,CAAC;AAAA;AAAA;AAAA,EAGvB,uBAAuB,EAAE,WAAW,IAAI,OAAO,EAAE,EAAE;AAAA,EACnD,GAAI,QAAQ,EAAE,uBAAuB,EAAE,UAAU,GAAG,WAAW,IAAI,OAAO,EAAE,EAAE,EAAE;AAClF,EAAE;AAEF,IAAM,qBAAqB,CAAC,YAC1B,YAAY,gBAAgB,UAAU;AAaxC,IAAM,cAAc,CAClB,UACA,YAEA,aAAa,WACT;AAAA,EACE,QAAQ,EAAE,SAAS,aAAa,OAAO,UAAU;AAAA,EACjD,SAAS,EAAE,SAAS,YAAY,OAAO,UAAU;AACnD,IACA;AAAA,EACE,QAAQ,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,EAChD,SAAS,EAAE,SAAS,aAAa,OAAO,mBAAmB,OAAO,EAAE;AACtE;AAMN,IAAM,oBAAoB,CACxB,UACA,eAEA,aAAa,YAAY,aAAa,WAAW;AAOnD,IAAM,gBAAgB,CACpB,cACA,cACa,gBAAgB,cAAc;AAG7C,IAAM,cAAc,CAClB,UACA,QACA,YACuB,aAAa,WAAW,CAAC,SAAS,MAAM,IAAI,CAAC,QAAQ,OAAO;AAO9E,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AACF,GAcuB;AACrB,QAAM,QAAQ,SAAS;AACvB,QAAM,WAAW,kBAAkB,OAAO,UAAU;AACpD,QAAM,OAAO,YAAY,UAAU,OAAO;AAC1C,QAAM,gBAAgB,cAAc,cAAc,QAAQ;AAC1D,QAAM,SAAS,cACb;AAAA,IAAC;AAAA;AAAA,MAEC,SAAS;AAAA,MACT,SAAS,KAAK,OAAO;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,MACnB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,eAAa,GAAG,UAAU;AAAA,MAEzB;AAAA;AAAA,IARG;AAAA,EASN;AAEF,QAAM,UACJ;AAAA,IAAC;AAAA;AAAA,MAEC,SAAS;AAAA,MACT,SAAS,KAAK,QAAQ;AAAA,MACtB,OAAO,KAAK,QAAQ;AAAA,MACpB,UAAU,mBAAmB;AAAA,MAC7B,WACE,UACE;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,IAAI,OAAO,EAAE;AAAA,UACnB,OAAM;AAAA,UACN,eAAa,GAAG,UAAU;AAAA;AAAA,MAC5B,IACE;AAAA,MAEN,WAAW,CAAC;AAAA,MACZ,eAAa,GAAG,UAAU;AAAA,MAEzB;AAAA;AAAA,IAjBG;AAAA,EAkBN;AAEF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc;AAAA,MACd,MAAM,aAAa;AAAA,MACnB,eAAa,GAAG,UAAU;AAAA,MAEzB,sBAAY,UAAU,QAAQ,OAAO;AAAA;AAAA,EACxC;AAEJ;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-EMYESBIT.js";
4
4
  import {
5
5
  ConfirmActionDialog
6
- } from "./chunk-UD4R5HMI.js";
6
+ } from "./chunk-5JRAQ4D5.js";
7
7
 
8
8
  // src/components/feedback/ConfirmAction/with-confirmation.tsx
9
9
  import React from "react";
@@ -40,4 +40,4 @@ function withConfirmation(Wrapped, defaults) {
40
40
  export {
41
41
  withConfirmation
42
42
  };
43
- //# sourceMappingURL=chunk-7QRUGEGE.js.map
43
+ //# sourceMappingURL=chunk-GICG3XJK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  withConfirmation
3
- } from "./chunk-7QRUGEGE.js";
3
+ } from "./chunk-GICG3XJK.js";
4
4
  import {
5
5
  Button
6
6
  } from "./chunk-364NH2NY.js";
@@ -18,4 +18,4 @@ function createConfirmButton(copy, errorText) {
18
18
  export {
19
19
  createConfirmButton
20
20
  };
21
- //# sourceMappingURL=chunk-LGCZRKED.js.map
21
+ //# sourceMappingURL=chunk-NJMAFII4.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-EMYESBIT.js";
4
4
  import {
5
5
  ConfirmActionDialog
6
- } from "./chunk-UD4R5HMI.js";
6
+ } from "./chunk-5JRAQ4D5.js";
7
7
 
8
8
  // src/components/feedback/ConfirmAction/ConfirmAction.tsx
9
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -23,4 +23,4 @@ ConfirmAction.displayName = "ConfirmAction";
23
23
  export {
24
24
  ConfirmAction
25
25
  };
26
- //# sourceMappingURL=chunk-SFZHGDRH.js.map
26
+ //# sourceMappingURL=chunk-RX2XP7V5.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AlertDialogFooter
3
- } from "./chunk-IQQX3NDO.js";
3
+ } from "./chunk-BGTG7G54.js";
4
4
  import {
5
5
  neutralTones
6
6
  } from "./chunk-XJAD6E3V.js";
@@ -131,6 +131,9 @@ var CloseButton = styled(IconButton)(({ theme }) => ({
131
131
  position: "absolute",
132
132
  right: theme.spacing(1),
133
133
  top: theme.spacing(1),
134
+ // 40px, not the small IconButton's 34: the floor a phone's tap needs (FUT-3269).
135
+ width: rem(theme, 40),
136
+ height: rem(theme, 40),
134
137
  color: neutralTones(theme).muted
135
138
  }));
136
139
  var variantIcon = (variant, icon) => {
@@ -247,4 +250,4 @@ AlertDialog.displayName = "AlertDialog";
247
250
  export {
248
251
  AlertDialog
249
252
  };
250
- //# sourceMappingURL=chunk-VI6HYB2W.js.map
253
+ //# sourceMappingURL=chunk-RZCXYKY4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/AlertDialog/AlertDialog.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport Error from '@mui/icons-material/Error';\nimport Info from '@mui/icons-material/Info';\nimport Dialog from '@mui/material/Dialog/index.js';\nimport DialogContent from '@mui/material/DialogContent/index.js';\nimport DialogContentText from '@mui/material/DialogContentText/index.js';\nimport DialogTitle from '@mui/material/DialogTitle/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, keyframes, styled } from '@mui/material/styles/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { neutralTones } from '../../../tokens/ink';\n\nimport { AlertDialogFooter } from './AlertDialog.parts';\nimport type { AlertDialogProps } from './AlertDialog.types';\nimport { rem, rems } from '../../../tokens/relative';\n\n// Define pulse animation\nconst pulseAnimation = (theme: Theme) => keyframes`\n 0% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 1;\n }\n 70% {\n box-shadow: 0 0 0 ${rem(theme, 15)} currentColor;\n opacity: 0;\n }\n 100% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 0;\n }\n`;\n\nconst StyledDialog = styled(Dialog, {\n shouldForwardProp: (prop) => \n !['customVariant', 'glow', 'pulse'].includes(prop as string),\n})<{ \n customVariant?: string; \n glow?: boolean; \n pulse?: boolean; \n}>(({ theme, customVariant, glow, pulse }) => ({\n '& .MuiDialog-paper': {\n borderRadius: theme.spacing(2),\n transition: 'all 0.3s ease',\n position: 'relative',\n overflow: 'hidden',\n\n // Variant styles\n ...(customVariant === 'default' && {\n backgroundColor: theme.palette.background.paper,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n }),\n\n // The error tint is LAYERED over the paper, not used as the background\n // itself: `alpha(error, 0.05)` alone leaves the panel 95% transparent, so\n // the page behind it showed straight through the question and its buttons.\n // A confirm nobody can read is the one dialog that must never be hard to\n // read. Same tint, opaque base.\n ...(customVariant === 'destructive' && {\n backgroundColor: theme.palette.background.paper,\n backgroundImage: `linear-gradient(${alpha(theme.palette.error.main, 0.05)}, ${alpha(\n theme.palette.error.main,\n 0.05,\n )})`,\n border: `1px solid ${alpha(theme.palette.error.main, 0.2)}`,\n }),\n\n ...(customVariant === 'glass' && {\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n }),\n\n // Glow effect\n ...(glow && !pulse && {\n boxShadow: `0 0 ${rems(theme, 30, 10)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n }),\n\n // Pulse animation\n ...(pulse && !glow && {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1,\n },\n }),\n\n // Both glow and pulse\n ...(glow && pulse && {\n position: 'relative',\n boxShadow: `0 0 ${rems(theme, 30, 10)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1,\n },\n }),\n },\n}));\n\nconst StyledDialogTitle = styled(DialogTitle)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1.5),\n paddingRight: theme.spacing(6), // Space for close button\n '& .MuiTypography-root': {\n fontWeight: 600,\n fontSize: rem(theme, 20),\n },\n}));\n\nconst StyledDialogContent = styled(DialogContent)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n}));\n\nconst CloseButton = styled(IconButton)(({ theme }) => ({\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n // 40px, not the small IconButton's 34: the floor a phone's tap needs (FUT-3269).\n width: rem(theme, 40),\n height: rem(theme, 40),\n color: neutralTones(theme).muted,\n}));\n\n/**\n * Per-variant lookups, hoisted out of the render function. They depend on\n * nothing but their arguments, so keeping them at module scope means they are\n * not rebuilt on every render — and it keeps the component's own branch count\n * inside the repo's complexity budget.\n */\nconst variantIcon = (\n variant: AlertDialogProps['variant'],\n icon: AlertDialogProps['icon'],\n): React.ReactNode => {\n if (icon) return icon;\n return variant === 'destructive' ? <Error color=\"error\" /> : <Info color=\"primary\" />;\n};\n\n/**\n * Ids for the two elements that give the dialog its accessible name and\n * description. Derived from the test id so they are stable and unique per\n * dialog without a generated id that would change on every render.\n */\nconst titleId = (dataTestId: string): string => `${dataTestId}-title`;\nconst descriptionId = (dataTestId: string): string => `${dataTestId}-description`;\n\n/**\n * `alertdialog`, not `dialog`.\n *\n * This component interrupts what the operator was doing and will not go away\n * until they answer — which is exactly the distinction the two roles draw, and\n * it is what makes a screen reader announce the message itself on open rather\n * than just the dialog's name. MUI hardcodes `role=\"dialog\"` on the paper, so\n * it has to be overridden through the paper slot.\n */\nconst ALERT_ROLE = 'alertdialog';\n\n/**\n * The paper slot's a11y props: the role, plus the name and description wired to\n * the elements that actually carry them, so the announcement is the QUESTION\n * rather than the word \"dialog\".\n *\n * Both references are conditional — pointing `aria-labelledby` at an element\n * that was never rendered leaves a dangling id, which screen readers treat as\n * no name at all, i.e. worse than omitting it.\n */\nfunction ariaSlotProps(\n dataTestId: string,\n title: AlertDialogProps['title'],\n description: AlertDialogProps['description'],\n): { paper: Record<string, string> } {\n return {\n paper: {\n role: ALERT_ROLE,\n ...(title ? { 'aria-labelledby': titleId(dataTestId) } : {}),\n ...(description ? { 'aria-describedby': descriptionId(dataTestId) } : {}),\n },\n };\n}\n\n/** Title row: the variant icon (unless explicitly suppressed with `null`) + the title. */\nfunction AlertDialogHeader({\n title,\n icon,\n variant,\n dataTestId,\n}: {\n title: AlertDialogProps['title'];\n icon: AlertDialogProps['icon'];\n variant: AlertDialogProps['variant'];\n dataTestId: string;\n}): React.ReactElement | null {\n if (!title) return null;\n return (\n <StyledDialogTitle id={titleId(dataTestId)} data-testid={`${dataTestId}-title`}>\n {icon !== null && (\n <span data-testid={`${dataTestId}-icon`}>{variantIcon(variant, icon)}</span>\n )}\n <Typography variant=\"h6\" component=\"span\">\n {title}\n </Typography>\n </StyledDialogTitle>\n );\n}\n\nexport const AlertDialog = React.forwardRef<HTMLDivElement, AlertDialogProps>(\n ({\n variant = 'default',\n glow = false,\n pulse = false,\n title,\n description,\n icon,\n cancelText,\n confirmText,\n onCancel,\n onConfirm,\n showCancel,\n loading,\n confirmDisabled,\n initialFocus,\n emphasis,\n children,\n onClose,\n 'data-testid': dataTestId = 'alert-dialog',\n ...props\n }, ref) => {\n const handleCancel = () => {\n onCancel?.();\n onClose?.({}, 'backdropClick');\n };\n\n return (\n <StyledDialog\n ref={ref}\n customVariant={variant}\n glow={glow}\n pulse={pulse}\n onClose={onClose}\n data-testid={dataTestId}\n slotProps={ariaSlotProps(dataTestId, title, description)}\n {...props}\n >\n <CloseButton\n aria-label=\"close\"\n onClick={handleCancel}\n size=\"small\"\n data-testid={`${dataTestId}-close-button`}\n >\n <Close />\n </CloseButton>\n\n <AlertDialogHeader title={title} icon={icon} variant={variant} dataTestId={dataTestId} />\n\n <StyledDialogContent data-testid={`${dataTestId}-content`}>\n {description && (\n <DialogContentText\n id={descriptionId(dataTestId)}\n data-testid={`${dataTestId}-description`}\n >\n {description}\n </DialogContentText>\n )}\n {children}\n </StyledDialogContent>\n\n <AlertDialogFooter\n variant={variant}\n cancelText={cancelText}\n confirmText={confirmText}\n showCancel={showCancel}\n loading={loading}\n confirmDisabled={confirmDisabled}\n initialFocus={initialFocus}\n emphasis={emphasis}\n onCancel={handleCancel}\n onConfirm={() => onConfirm?.()}\n dataTestId={dataTestId}\n />\n </StyledDialog>\n );\n }\n);\n\nAlertDialog.displayName = 'AlertDialog';"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YKKHNYEW.js";
4
4
  import {
5
5
  ManageViewsDialog
6
- } from "./chunk-IPCRPGWU.js";
6
+ } from "./chunk-4W6AQFMO.js";
7
7
  import {
8
8
  useDataViewsCopy
9
9
  } from "./chunk-KHG57NAE.js";
@@ -121,4 +121,4 @@ export {
121
121
  ViewsMenuSlot,
122
122
  ViewDialogs
123
123
  };
124
- //# sourceMappingURL=chunk-TAUCPCNN.js.map
124
+ //# sourceMappingURL=chunk-YNIOCELQ.js.map
@@ -1,8 +1,8 @@
1
1
  import "../chunk-2IBFEHIX.js";
2
2
  import {
3
3
  AlertDialog
4
- } from "../chunk-VI6HYB2W.js";
5
- import "../chunk-IQQX3NDO.js";
4
+ } from "../chunk-RZCXYKY4.js";
5
+ import "../chunk-BGTG7G54.js";
6
6
  import "../chunk-XJAD6E3V.js";
7
7
  import "../chunk-F5H2ZXST.js";
8
8
  import "../chunk-N3GAFIXG.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useRowConfirm
3
- } from "../chunk-J4AHFEEV.js";
3
+ } from "../chunk-6QOJEZDH.js";
4
4
  import {
5
5
  useRemoveConfirm
6
- } from "../chunk-FTCJPTDA.js";
6
+ } from "../chunk-62BY4ZUQ.js";
7
7
  import {
8
8
  rowActionsToMenuItems
9
9
  } from "../chunk-ZBXG6RVJ.js";
@@ -24,18 +24,18 @@ import {
24
24
  import "../chunk-WVML3ENZ.js";
25
25
  import "../chunk-AY5GKCH7.js";
26
26
  import "../chunk-XCBQXSTR.js";
27
- import "../chunk-LGCZRKED.js";
28
- import "../chunk-7QRUGEGE.js";
29
- import "../chunk-SFZHGDRH.js";
27
+ import "../chunk-NJMAFII4.js";
28
+ import "../chunk-GICG3XJK.js";
29
+ import "../chunk-RX2XP7V5.js";
30
30
  import "../chunk-EMYESBIT.js";
31
- import "../chunk-UD4R5HMI.js";
31
+ import "../chunk-5JRAQ4D5.js";
32
32
  import "../chunk-NUGT7LMR.js";
33
33
  import "../chunk-DQJFCVXW.js";
34
34
  import "../chunk-JYAXTRNH.js";
35
35
  import "../chunk-L7VH6IMR.js";
36
36
  import "../chunk-2IBFEHIX.js";
37
- import "../chunk-VI6HYB2W.js";
38
- import "../chunk-IQQX3NDO.js";
37
+ import "../chunk-RZCXYKY4.js";
38
+ import "../chunk-BGTG7G54.js";
39
39
  import "../chunk-3LHZCVGM.js";
40
40
  import "../chunk-6DPAWXZ3.js";
41
41
  import "../chunk-BA4RHQ3B.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "../chunk-LMIOWP6H.js";
4
4
  import {
5
5
  DataViewsTableBase
6
- } from "../chunk-FNFDXJWR.js";
6
+ } from "../chunk-6S3S2K7O.js";
7
7
  import "../chunk-ZEVFMQAQ.js";
8
8
  import {
9
9
  DataViewsGrid
@@ -51,9 +51,9 @@ import "../chunk-VJB63DUM.js";
51
51
  import "../chunk-O5UGAL2V.js";
52
52
  import "../chunk-GCZJH4XL.js";
53
53
  import "../chunk-G6EJLEVV.js";
54
- import "../chunk-TAUCPCNN.js";
54
+ import "../chunk-YNIOCELQ.js";
55
55
  import "../chunk-YKKHNYEW.js";
56
- import "../chunk-IPCRPGWU.js";
56
+ import "../chunk-4W6AQFMO.js";
57
57
  import "../chunk-5M4TYFR3.js";
58
58
  import "../chunk-L6MGAPBX.js";
59
59
  import "../chunk-2VMIHFMX.js";
@@ -163,11 +163,11 @@ import "../chunk-KLJYIS5L.js";
163
163
  import "../chunk-C3UKR3NT.js";
164
164
  import "../chunk-D6KL74KI.js";
165
165
  import "../chunk-XCBQXSTR.js";
166
- import "../chunk-LGCZRKED.js";
167
- import "../chunk-7QRUGEGE.js";
168
- import "../chunk-SFZHGDRH.js";
166
+ import "../chunk-NJMAFII4.js";
167
+ import "../chunk-GICG3XJK.js";
168
+ import "../chunk-RX2XP7V5.js";
169
169
  import "../chunk-EMYESBIT.js";
170
- import "../chunk-UD4R5HMI.js";
170
+ import "../chunk-5JRAQ4D5.js";
171
171
  import "../chunk-KFJKOVDD.js";
172
172
  import "../chunk-GMJBWOIU.js";
173
173
  import "../chunk-GYXUCS37.js";
@@ -195,8 +195,8 @@ import "../chunk-DQJFCVXW.js";
195
195
  import "../chunk-JYAXTRNH.js";
196
196
  import "../chunk-L7VH6IMR.js";
197
197
  import "../chunk-2IBFEHIX.js";
198
- import "../chunk-VI6HYB2W.js";
199
- import "../chunk-IQQX3NDO.js";
198
+ import "../chunk-RZCXYKY4.js";
199
+ import "../chunk-BGTG7G54.js";
200
200
  import "../chunk-3UIDKLML.js";
201
201
  import "../chunk-PYC4CWCQ.js";
202
202
  import "../chunk-3LHZCVGM.js";
@@ -1,22 +1,22 @@
1
1
  import "../chunk-XCBQXSTR.js";
2
2
  import {
3
3
  createConfirmButton
4
- } from "../chunk-LGCZRKED.js";
4
+ } from "../chunk-NJMAFII4.js";
5
5
  import {
6
6
  withConfirmation
7
- } from "../chunk-7QRUGEGE.js";
7
+ } from "../chunk-GICG3XJK.js";
8
8
  import {
9
9
  ConfirmAction
10
- } from "../chunk-SFZHGDRH.js";
10
+ } from "../chunk-RX2XP7V5.js";
11
11
  import {
12
12
  useConfirmAction
13
13
  } from "../chunk-EMYESBIT.js";
14
14
  import {
15
15
  ConfirmActionDialog
16
- } from "../chunk-UD4R5HMI.js";
16
+ } from "../chunk-5JRAQ4D5.js";
17
17
  import "../chunk-2IBFEHIX.js";
18
- import "../chunk-VI6HYB2W.js";
19
- import "../chunk-IQQX3NDO.js";
18
+ import "../chunk-RZCXYKY4.js";
19
+ import "../chunk-BGTG7G54.js";
20
20
  import "../chunk-BA4RHQ3B.js";
21
21
  import "../chunk-364NH2NY.js";
22
22
  import "../chunk-PPEHBI5O.js";
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAmN5D,eAAO,MAAM,WAAW,sGA6EvB,CAAC"}
1
+ {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAsN5D,eAAO,MAAM,WAAW,sGA6EvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.parts.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/AlertDialog/AlertDialog.parts.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAqF5D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,UAAqB,EACrB,WAAuB,EACvB,UAAiB,EACjB,OAAe,EACf,eAAuB,EACvB,YAAY,EACZ,QAAQ,EAAE,KAAK,EACf,QAAQ,EACR,SAAS,EACT,UAAU,GACX,EAAE,IAAI,CACL,gBAAgB,EACd,SAAS,GACT,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,cAAc,GACd,UAAU,CACb,GAAG;IACF,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,KAAK,CAAC,YAAY,CAiDrB"}
1
+ {"version":3,"file":"AlertDialog.parts.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/AlertDialog/AlertDialog.parts.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAwF5D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,UAAqB,EACrB,WAAuB,EACvB,UAAiB,EACjB,OAAe,EACf,eAAuB,EACvB,YAAY,EACZ,QAAQ,EAAE,KAAK,EACf,QAAQ,EACR,SAAS,EACT,UAAU,GACX,EAAE,IAAI,CACL,gBAAgB,EACd,SAAS,GACT,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,cAAc,GACd,UAAU,CACb,GAAG;IACF,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,KAAK,CAAC,YAAY,CAiDrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.66.1",
3
+ "version": "6.66.2",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -39,7 +39,10 @@ const StyledDialogActions = styled(DialogActions, {
39
39
  flexWrap: 'wrap-reverse',
40
40
  columnGap: theme.spacing(2),
41
41
  rowGap: theme.spacing(1),
42
- ...(fill && { '& > .MuiButton-root': { flexGrow: 1 } }),
42
+ // A 40px tap target, the floor the kit's own Button keeps (FUT-3269): MUI's
43
+ // medium button is 37px, short of it on a phone.
44
+ '& > .MuiButton-root': { minHeight: rem(theme, 40) },
45
+ ...(fill && { '& > .MuiButton-root': { flexGrow: 1, minHeight: rem(theme, 40) } }),
43
46
  }));
44
47
 
45
48
  const confirmButtonColor = (variant: AlertDialogProps['variant']): 'error' | 'primary' =>
@@ -141,6 +141,9 @@ const CloseButton = styled(IconButton)(({ theme }) => ({
141
141
  position: 'absolute',
142
142
  right: theme.spacing(1),
143
143
  top: theme.spacing(1),
144
+ // 40px, not the small IconButton's 34: the floor a phone's tap needs (FUT-3269).
145
+ width: rem(theme, 40),
146
+ height: rem(theme, 40),
144
147
  color: neutralTones(theme).muted,
145
148
  }));
146
149
 
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/AlertDialog/AlertDialog.parts.tsx"],"sourcesContent":["/**\n * The AlertDialog's action row, kept apart from the dialog shell so each stays\n * inside the complexity budget: which button is filled, where each one sits,\n * and how the row wraps.\n */\nimport type { ButtonProps } from '@mui/material/Button/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport DialogActions from '@mui/material/DialogActions/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { rem } from '../../../tokens/relative';\n\nimport type { AlertDialogProps } from './AlertDialog.types';\n\n/**\n * The action row WRAPS WHOLE BUTTONS; it never breaks a label inside one. A pair\n * that did not fit side by side used to squeeze the longer label onto two\n * lines, so one button stood twice as tall as its neighbour. Now the row breaks\n * instead. `wrap-reverse` puts the LAST button — the primary, whichever\n * `emphasis` picks — on top when it stacks, the same slot it holds on the right\n * when the row fits. A pair that fits is laid out exactly as before: natural\n * widths, pushed to the right.\n *\n * `fill` — set only by `emphasis=\"cancel\"` — lets the buttons grow to share the\n * row, and so to take the full width of their line once it stacks. It is not\n * the default because growing also stretches a pair that fits, which would\n * redraw every existing dialog's footer.\n *\n * Rendered with `disableSpacing`: MUI's own spacing is a left margin on every\n * button after the first, which would indent a button that wrapped onto a line\n * of its own. The gaps below replace it, at the same 16px across.\n */\nconst StyledDialogActions = styled(DialogActions, {\n shouldForwardProp: (prop) => prop !== 'fill',\n})<{ fill: boolean }>(({ theme, fill }) => ({\n padding: theme.spacing(2, 3, 3, 3),\n flexWrap: 'wrap-reverse',\n columnGap: theme.spacing(2),\n rowGap: theme.spacing(1),\n ...(fill && { '& > .MuiButton-root': { flexGrow: 1 } }),\n}));\n\nconst confirmButtonColor = (variant: AlertDialogProps['variant']): 'error' | 'primary' =>\n variant === 'destructive' ? 'error' : 'primary';\n\ninterface ButtonLook {\n variant: ButtonProps['variant'];\n color: ButtonProps['color'];\n}\n\n/**\n * How each button is drawn, by `emphasis`: the emphasised one is filled, the\n * other a NEUTRAL outline. Primary / neutral both ways round — a confirm that\n * steps down drops the variant's colour too, so the one filled button is the\n * only coloured thing in the row and the eye has a single place to land.\n */\nconst buttonLooks = (\n emphasis: AlertDialogProps['emphasis'],\n variant: AlertDialogProps['variant'],\n): { cancel: ButtonLook; confirm: ButtonLook } =>\n emphasis === 'cancel'\n ? {\n cancel: { variant: 'contained', color: 'primary' },\n confirm: { variant: 'outlined', color: 'inherit' },\n }\n : {\n cancel: { variant: 'outlined', color: 'inherit' },\n confirm: { variant: 'contained', color: confirmButtonColor(variant) },\n };\n\n/**\n * The emphasis that applies: `cancel` only while the cancel is shown. A hidden\n * cancel with the confirm stepped down would leave a dialog with no primary.\n */\nconst effectiveEmphasis = (\n emphasis: AlertDialogProps['emphasis'],\n showCancel: boolean,\n): NonNullable<AlertDialogProps['emphasis']> =>\n emphasis === 'cancel' && showCancel ? 'cancel' : 'confirm';\n\n/**\n * Whether the cancel owns focus on open: what `initialFocus` says, and when it\n * says nothing, the emphasised button — so Enter on a steered question keeps\n * the work instead of completing the loss.\n */\nconst focusesCancel = (\n initialFocus: AlertDialogProps['initialFocus'],\n emphasis: NonNullable<AlertDialogProps['emphasis']>,\n): boolean => (initialFocus ?? emphasis) === 'cancel';\n\n/** The two buttons in slot order: the emphasised one LAST, the primary slot. */\nconst inSlotOrder = (\n emphasis: AlertDialogProps['emphasis'],\n cancel: React.ReactNode,\n confirm: React.ReactNode,\n): React.ReactNode[] => (emphasis === 'cancel' ? [confirm, cancel] : [cancel, confirm]);\n\n/**\n * Action row: the optional cancel button and the (variant-coloured) confirm,\n * with the emphasised one LAST — the primary slot, on the right or, once the\n * row stacks, on top. DOM order is the tab order, so it follows the same rule.\n */\nexport function AlertDialogFooter({\n variant,\n cancelText = 'Cancel',\n confirmText = 'Confirm',\n showCancel = true,\n loading = false,\n confirmDisabled = false,\n initialFocus,\n emphasis: asked,\n onCancel,\n onConfirm,\n dataTestId,\n}: Pick<\n AlertDialogProps,\n | 'variant'\n | 'cancelText'\n | 'confirmText'\n | 'showCancel'\n | 'loading'\n | 'confirmDisabled'\n | 'initialFocus'\n | 'emphasis'\n> & {\n onCancel: () => void;\n onConfirm: () => void;\n dataTestId: string;\n}): React.ReactElement {\n const theme = useTheme();\n const emphasis = effectiveEmphasis(asked, showCancel);\n const look = buttonLooks(emphasis, variant);\n const cancelFocused = focusesCancel(initialFocus, emphasis);\n const cancel = showCancel && (\n <Button\n key=\"cancel\"\n onClick={onCancel}\n variant={look.cancel.variant}\n color={look.cancel.color}\n disabled={loading}\n autoFocus={cancelFocused}\n data-testid={`${dataTestId}-cancel-button`}\n >\n {cancelText}\n </Button>\n );\n const confirm = (\n <Button\n key=\"confirm\"\n onClick={onConfirm}\n variant={look.confirm.variant}\n color={look.confirm.color}\n disabled={confirmDisabled || loading}\n startIcon={\n loading ? (\n <CircularProgress\n size={rem(theme, 16)}\n color=\"inherit\"\n data-testid={`${dataTestId}-loading-spinner`}\n />\n ) : undefined\n }\n autoFocus={!cancelFocused}\n data-testid={`${dataTestId}-confirm-button`}\n >\n {confirmText}\n </Button>\n );\n return (\n <StyledDialogActions\n disableSpacing\n fill={emphasis === 'cancel'}\n data-testid={`${dataTestId}-actions`}\n >\n {inSlotOrder(emphasis, cancel, confirm)}\n </StyledDialogActions>\n );\n}\n"],"mappings":";;;;;AAMA,OAAO,YAAY;AACnB,OAAO,sBAAsB;AAC7B,OAAO,mBAAmB;AAC1B,SAAS,QAAQ,gBAAgB;AA+H7B;AAtGJ,IAAM,sBAAsB,OAAO,eAAe;AAAA,EAChD,mBAAmB,CAAC,SAAS,SAAS;AACxC,CAAC,EAAqB,CAAC,EAAE,OAAO,KAAK,OAAO;AAAA,EAC1C,SAAS,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC;AAAA,EACjC,UAAU;AAAA,EACV,WAAW,MAAM,QAAQ,CAAC;AAAA,EAC1B,QAAQ,MAAM,QAAQ,CAAC;AAAA,EACvB,GAAI,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,EAAE;AACvD,EAAE;AAEF,IAAM,qBAAqB,CAAC,YAC1B,YAAY,gBAAgB,UAAU;AAaxC,IAAM,cAAc,CAClB,UACA,YAEA,aAAa,WACT;AAAA,EACE,QAAQ,EAAE,SAAS,aAAa,OAAO,UAAU;AAAA,EACjD,SAAS,EAAE,SAAS,YAAY,OAAO,UAAU;AACnD,IACA;AAAA,EACE,QAAQ,EAAE,SAAS,YAAY,OAAO,UAAU;AAAA,EAChD,SAAS,EAAE,SAAS,aAAa,OAAO,mBAAmB,OAAO,EAAE;AACtE;AAMN,IAAM,oBAAoB,CACxB,UACA,eAEA,aAAa,YAAY,aAAa,WAAW;AAOnD,IAAM,gBAAgB,CACpB,cACA,cACa,gBAAgB,cAAc;AAG7C,IAAM,cAAc,CAClB,UACA,QACA,YACuB,aAAa,WAAW,CAAC,SAAS,MAAM,IAAI,CAAC,QAAQ,OAAO;AAO9E,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AACF,GAcuB;AACrB,QAAM,QAAQ,SAAS;AACvB,QAAM,WAAW,kBAAkB,OAAO,UAAU;AACpD,QAAM,OAAO,YAAY,UAAU,OAAO;AAC1C,QAAM,gBAAgB,cAAc,cAAc,QAAQ;AAC1D,QAAM,SAAS,cACb;AAAA,IAAC;AAAA;AAAA,MAEC,SAAS;AAAA,MACT,SAAS,KAAK,OAAO;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,MACnB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,eAAa,GAAG,UAAU;AAAA,MAEzB;AAAA;AAAA,IARG;AAAA,EASN;AAEF,QAAM,UACJ;AAAA,IAAC;AAAA;AAAA,MAEC,SAAS;AAAA,MACT,SAAS,KAAK,QAAQ;AAAA,MACtB,OAAO,KAAK,QAAQ;AAAA,MACpB,UAAU,mBAAmB;AAAA,MAC7B,WACE,UACE;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,IAAI,OAAO,EAAE;AAAA,UACnB,OAAM;AAAA,UACN,eAAa,GAAG,UAAU;AAAA;AAAA,MAC5B,IACE;AAAA,MAEN,WAAW,CAAC;AAAA,MACZ,eAAa,GAAG,UAAU;AAAA,MAEzB;AAAA;AAAA,IAjBG;AAAA,EAkBN;AAEF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc;AAAA,MACd,MAAM,aAAa;AAAA,MACnB,eAAa,GAAG,UAAU;AAAA,MAEzB,sBAAY,UAAU,QAAQ,OAAO;AAAA;AAAA,EACxC;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/AlertDialog/AlertDialog.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport Error from '@mui/icons-material/Error';\nimport Info from '@mui/icons-material/Info';\nimport Dialog from '@mui/material/Dialog/index.js';\nimport DialogContent from '@mui/material/DialogContent/index.js';\nimport DialogContentText from '@mui/material/DialogContentText/index.js';\nimport DialogTitle from '@mui/material/DialogTitle/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, keyframes, styled } from '@mui/material/styles/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { neutralTones } from '../../../tokens/ink';\n\nimport { AlertDialogFooter } from './AlertDialog.parts';\nimport type { AlertDialogProps } from './AlertDialog.types';\nimport { rem, rems } from '../../../tokens/relative';\n\n// Define pulse animation\nconst pulseAnimation = (theme: Theme) => keyframes`\n 0% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 1;\n }\n 70% {\n box-shadow: 0 0 0 ${rem(theme, 15)} currentColor;\n opacity: 0;\n }\n 100% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 0;\n }\n`;\n\nconst StyledDialog = styled(Dialog, {\n shouldForwardProp: (prop) => \n !['customVariant', 'glow', 'pulse'].includes(prop as string),\n})<{ \n customVariant?: string; \n glow?: boolean; \n pulse?: boolean; \n}>(({ theme, customVariant, glow, pulse }) => ({\n '& .MuiDialog-paper': {\n borderRadius: theme.spacing(2),\n transition: 'all 0.3s ease',\n position: 'relative',\n overflow: 'hidden',\n\n // Variant styles\n ...(customVariant === 'default' && {\n backgroundColor: theme.palette.background.paper,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n }),\n\n // The error tint is LAYERED over the paper, not used as the background\n // itself: `alpha(error, 0.05)` alone leaves the panel 95% transparent, so\n // the page behind it showed straight through the question and its buttons.\n // A confirm nobody can read is the one dialog that must never be hard to\n // read. Same tint, opaque base.\n ...(customVariant === 'destructive' && {\n backgroundColor: theme.palette.background.paper,\n backgroundImage: `linear-gradient(${alpha(theme.palette.error.main, 0.05)}, ${alpha(\n theme.palette.error.main,\n 0.05,\n )})`,\n border: `1px solid ${alpha(theme.palette.error.main, 0.2)}`,\n }),\n\n ...(customVariant === 'glass' && {\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n }),\n\n // Glow effect\n ...(glow && !pulse && {\n boxShadow: `0 0 ${rems(theme, 30, 10)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n }),\n\n // Pulse animation\n ...(pulse && !glow && {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1,\n },\n }),\n\n // Both glow and pulse\n ...(glow && pulse && {\n position: 'relative',\n boxShadow: `0 0 ${rems(theme, 30, 10)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1,\n },\n }),\n },\n}));\n\nconst StyledDialogTitle = styled(DialogTitle)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1.5),\n paddingRight: theme.spacing(6), // Space for close button\n '& .MuiTypography-root': {\n fontWeight: 600,\n fontSize: rem(theme, 20),\n },\n}));\n\nconst StyledDialogContent = styled(DialogContent)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n}));\n\nconst CloseButton = styled(IconButton)(({ theme }) => ({\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: neutralTones(theme).muted,\n}));\n\n/**\n * Per-variant lookups, hoisted out of the render function. They depend on\n * nothing but their arguments, so keeping them at module scope means they are\n * not rebuilt on every render — and it keeps the component's own branch count\n * inside the repo's complexity budget.\n */\nconst variantIcon = (\n variant: AlertDialogProps['variant'],\n icon: AlertDialogProps['icon'],\n): React.ReactNode => {\n if (icon) return icon;\n return variant === 'destructive' ? <Error color=\"error\" /> : <Info color=\"primary\" />;\n};\n\n/**\n * Ids for the two elements that give the dialog its accessible name and\n * description. Derived from the test id so they are stable and unique per\n * dialog without a generated id that would change on every render.\n */\nconst titleId = (dataTestId: string): string => `${dataTestId}-title`;\nconst descriptionId = (dataTestId: string): string => `${dataTestId}-description`;\n\n/**\n * `alertdialog`, not `dialog`.\n *\n * This component interrupts what the operator was doing and will not go away\n * until they answer — which is exactly the distinction the two roles draw, and\n * it is what makes a screen reader announce the message itself on open rather\n * than just the dialog's name. MUI hardcodes `role=\"dialog\"` on the paper, so\n * it has to be overridden through the paper slot.\n */\nconst ALERT_ROLE = 'alertdialog';\n\n/**\n * The paper slot's a11y props: the role, plus the name and description wired to\n * the elements that actually carry them, so the announcement is the QUESTION\n * rather than the word \"dialog\".\n *\n * Both references are conditional — pointing `aria-labelledby` at an element\n * that was never rendered leaves a dangling id, which screen readers treat as\n * no name at all, i.e. worse than omitting it.\n */\nfunction ariaSlotProps(\n dataTestId: string,\n title: AlertDialogProps['title'],\n description: AlertDialogProps['description'],\n): { paper: Record<string, string> } {\n return {\n paper: {\n role: ALERT_ROLE,\n ...(title ? { 'aria-labelledby': titleId(dataTestId) } : {}),\n ...(description ? { 'aria-describedby': descriptionId(dataTestId) } : {}),\n },\n };\n}\n\n/** Title row: the variant icon (unless explicitly suppressed with `null`) + the title. */\nfunction AlertDialogHeader({\n title,\n icon,\n variant,\n dataTestId,\n}: {\n title: AlertDialogProps['title'];\n icon: AlertDialogProps['icon'];\n variant: AlertDialogProps['variant'];\n dataTestId: string;\n}): React.ReactElement | null {\n if (!title) return null;\n return (\n <StyledDialogTitle id={titleId(dataTestId)} data-testid={`${dataTestId}-title`}>\n {icon !== null && (\n <span data-testid={`${dataTestId}-icon`}>{variantIcon(variant, icon)}</span>\n )}\n <Typography variant=\"h6\" component=\"span\">\n {title}\n </Typography>\n </StyledDialogTitle>\n );\n}\n\nexport const AlertDialog = React.forwardRef<HTMLDivElement, AlertDialogProps>(\n ({\n variant = 'default',\n glow = false,\n pulse = false,\n title,\n description,\n icon,\n cancelText,\n confirmText,\n onCancel,\n onConfirm,\n showCancel,\n loading,\n confirmDisabled,\n initialFocus,\n emphasis,\n children,\n onClose,\n 'data-testid': dataTestId = 'alert-dialog',\n ...props\n }, ref) => {\n const handleCancel = () => {\n onCancel?.();\n onClose?.({}, 'backdropClick');\n };\n\n return (\n <StyledDialog\n ref={ref}\n customVariant={variant}\n glow={glow}\n pulse={pulse}\n onClose={onClose}\n data-testid={dataTestId}\n slotProps={ariaSlotProps(dataTestId, title, description)}\n {...props}\n >\n <CloseButton\n aria-label=\"close\"\n onClick={handleCancel}\n size=\"small\"\n data-testid={`${dataTestId}-close-button`}\n >\n <Close />\n </CloseButton>\n\n <AlertDialogHeader title={title} icon={icon} variant={variant} dataTestId={dataTestId} />\n\n <StyledDialogContent data-testid={`${dataTestId}-content`}>\n {description && (\n <DialogContentText\n id={descriptionId(dataTestId)}\n data-testid={`${dataTestId}-description`}\n >\n {description}\n </DialogContentText>\n )}\n {children}\n </StyledDialogContent>\n\n <AlertDialogFooter\n variant={variant}\n cancelText={cancelText}\n confirmText={confirmText}\n showCancel={showCancel}\n loading={loading}\n confirmDisabled={confirmDisabled}\n initialFocus={initialFocus}\n emphasis={emphasis}\n onCancel={handleCancel}\n onConfirm={() => onConfirm?.()}\n dataTestId={dataTestId}\n />\n </StyledDialog>\n );\n }\n);\n\nAlertDialog.displayName = 'AlertDialog';"],"mappings":"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","names":[]}