@12-apps/ui 6.92.1 → 6.93.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 (152) hide show
  1. package/components-catalog.md +1 -1
  2. package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
  3. package/dist/_internal/components/data-display/Avatar/Avatar.js +3 -3
  4. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
  5. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +3 -3
  6. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
  7. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +1 -1
  8. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  9. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  10. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +9 -9
  11. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +16 -16
  12. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +1 -1
  13. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +1 -1
  14. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +1 -1
  15. package/dist/_internal/components/data-display/DataViews/base-list-card.js +1 -1
  16. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +6 -6
  17. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +5 -5
  18. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +10 -4
  19. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +3 -3
  20. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +4 -4
  21. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
  22. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +6 -6
  23. package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +2 -2
  24. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +2 -2
  25. package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +2 -2
  26. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +1 -1
  27. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +5 -5
  28. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
  29. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
  30. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
  31. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +2 -2
  32. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +1 -1
  33. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
  34. package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
  35. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  36. package/dist/_internal/components/data-display/index.js +35 -35
  37. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +3 -3
  38. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js +48 -0
  39. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js.map +1 -0
  40. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +6 -5
  41. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +4 -4
  42. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +3 -3
  43. package/dist/_internal/components/feedback/index.js +10 -9
  44. package/dist/_internal/components/index.js +44 -43
  45. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
  46. package/dist/_internal/components/navigation/index.js +4 -4
  47. package/dist/_internal/user-avatar/user-avatar.js +4 -4
  48. package/dist/charts.js +6 -6
  49. package/dist/{chunk-DBPFKGXX.js → chunk-3YFDGFEK.js} +2 -2
  50. package/dist/{chunk-Y3F2F36I.js → chunk-4QGKR65P.js} +4 -4
  51. package/dist/{chunk-YE7M7URT.js → chunk-6D5AMANO.js} +2 -2
  52. package/dist/{chunk-UDBOGSFO.js → chunk-6HPVCDVU.js} +4 -4
  53. package/dist/{chunk-EOQ6EKTS.js → chunk-7XSCEHGA.js} +7 -7
  54. package/dist/{chunk-B5STMM3R.js → chunk-ALMGYCHY.js} +2 -2
  55. package/dist/{chunk-64UNVW6D.js → chunk-BP3ZKIPE.js} +4 -4
  56. package/dist/{chunk-OCT5VCLP.js → chunk-BQBEN44R.js} +2 -2
  57. package/dist/chunk-CPQJFHNZ.js +63 -0
  58. package/dist/chunk-CPQJFHNZ.js.map +1 -0
  59. package/dist/{chunk-Q3SILZTQ.js → chunk-E2UOEI7N.js} +2 -2
  60. package/dist/{chunk-RZWU2KYP.js → chunk-F5H3WDG7.js} +4 -3
  61. package/dist/chunk-F5H3WDG7.js.map +1 -0
  62. package/dist/{chunk-JVOEVTCZ.js → chunk-HQCZT6TO.js} +5 -5
  63. package/dist/{chunk-ZVHHFLYY.js → chunk-HSVSU7I2.js} +6 -6
  64. package/dist/{chunk-4QR7LM5F.js → chunk-JIEVKHOH.js} +2 -2
  65. package/dist/{chunk-FWTVIRZZ.js → chunk-JVQ56E3U.js} +6 -6
  66. package/dist/{chunk-YOLLISEY.js → chunk-JXK53XJW.js} +9 -9
  67. package/dist/{chunk-PCQ5JWLF.js → chunk-KPUUHAK6.js} +7 -7
  68. package/dist/{chunk-56JF5PZK.js → chunk-LYVTJLCF.js} +4 -4
  69. package/dist/{chunk-NXQ6PXLJ.js → chunk-LZ5PGB7U.js} +2 -2
  70. package/dist/{chunk-EKSJES5E.js → chunk-MAYAJXO6.js} +4 -4
  71. package/dist/{chunk-OCGPOACB.js → chunk-MFX4ASX5.js} +3 -3
  72. package/dist/{chunk-5I75WRXT.js → chunk-N3GLX64O.js} +4 -4
  73. package/dist/{chunk-PEAUGQKU.js → chunk-NQCTANF3.js} +7 -7
  74. package/dist/{chunk-IEUVP6UV.js → chunk-OM6ZT64U.js} +5 -5
  75. package/dist/{chunk-W676GY42.js → chunk-P772HCHI.js} +4 -4
  76. package/dist/{chunk-VWRXSBT2.js → chunk-R52N5UCS.js} +2 -2
  77. package/dist/{chunk-FQNDJITD.js → chunk-RCTHCXS6.js} +2 -2
  78. package/dist/{chunk-WLLUARTC.js → chunk-T2G4LDU5.js} +2 -2
  79. package/dist/{chunk-VCJ72ODU.js → chunk-VJIJCLUX.js} +68 -18
  80. package/dist/chunk-VJIJCLUX.js.map +1 -0
  81. package/dist/{chunk-66VKX6JE.js → chunk-WJMSND5Q.js} +2 -2
  82. package/dist/{chunk-ZCNR4DN5.js → chunk-XBWW3QSI.js} +4 -4
  83. package/dist/{chunk-BXZMV6QC.js → chunk-XFZDO2KB.js} +2 -2
  84. package/dist/{chunk-BOADHYTA.js → chunk-YNZUYZ2O.js} +2 -2
  85. package/dist/{chunk-XRV4QFEQ.js → chunk-ZBUMGMWP.js} +83 -65
  86. package/dist/chunk-ZBUMGMWP.js.map +1 -0
  87. package/dist/data-display/Alert.js +2 -2
  88. package/dist/data-display/Avatar.js +3 -3
  89. package/dist/data-display/CardKit.js +10 -10
  90. package/dist/data-display/Chart.js +6 -6
  91. package/dist/data-display/DataViews.js +21 -21
  92. package/dist/data-display/DayRuler.js +6 -6
  93. package/dist/data-display/HoverCard.js +1 -1
  94. package/dist/data-display/Lightbox.js +5 -5
  95. package/dist/data-display/RegionMap.js +2 -2
  96. package/dist/data-display/ScheduleGrid.js +5 -5
  97. package/dist/data-display/Sheet.js +3 -3
  98. package/dist/data-display/Table.js +3 -3
  99. package/dist/feedback/ConfirmAction.js +3 -3
  100. package/dist/feedback/NotificationStatusNotice.js +3 -3
  101. package/dist/feedback/SequenceResolver.js +6 -5
  102. package/dist/navigation/AppHeader.js +4 -4
  103. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts +80 -0
  104. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
  105. package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts.map +1 -1
  106. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts +55 -2
  107. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts.map +1 -1
  108. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.frame.d.ts +16 -0
  109. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.frame.d.ts.map +1 -0
  110. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts +10 -4
  111. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts.map +1 -1
  112. package/dist/user-avatar.js +4 -4
  113. package/package.json +1 -1
  114. package/src/components/data-display/DataViews/data-views-more-fields.tsx +90 -14
  115. package/src/components/data-display/DataViews/data-views-more-filters.tsx +2 -2
  116. package/src/components/feedback/SequenceResolver/SequenceResolver.frame.tsx +71 -0
  117. package/src/components/feedback/SequenceResolver/SequenceResolver.md +2 -2
  118. package/src/components/feedback/SequenceResolver/SequenceResolver.tsx +122 -61
  119. package/src/components/feedback/SequenceResolver/SequenceResolver.types.ts +10 -4
  120. package/dist/chunk-RZWU2KYP.js.map +0 -1
  121. package/dist/chunk-VCJ72ODU.js.map +0 -1
  122. package/dist/chunk-XRV4QFEQ.js.map +0 -1
  123. /package/dist/{chunk-DBPFKGXX.js.map → chunk-3YFDGFEK.js.map} +0 -0
  124. /package/dist/{chunk-Y3F2F36I.js.map → chunk-4QGKR65P.js.map} +0 -0
  125. /package/dist/{chunk-YE7M7URT.js.map → chunk-6D5AMANO.js.map} +0 -0
  126. /package/dist/{chunk-UDBOGSFO.js.map → chunk-6HPVCDVU.js.map} +0 -0
  127. /package/dist/{chunk-EOQ6EKTS.js.map → chunk-7XSCEHGA.js.map} +0 -0
  128. /package/dist/{chunk-B5STMM3R.js.map → chunk-ALMGYCHY.js.map} +0 -0
  129. /package/dist/{chunk-64UNVW6D.js.map → chunk-BP3ZKIPE.js.map} +0 -0
  130. /package/dist/{chunk-OCT5VCLP.js.map → chunk-BQBEN44R.js.map} +0 -0
  131. /package/dist/{chunk-Q3SILZTQ.js.map → chunk-E2UOEI7N.js.map} +0 -0
  132. /package/dist/{chunk-JVOEVTCZ.js.map → chunk-HQCZT6TO.js.map} +0 -0
  133. /package/dist/{chunk-ZVHHFLYY.js.map → chunk-HSVSU7I2.js.map} +0 -0
  134. /package/dist/{chunk-4QR7LM5F.js.map → chunk-JIEVKHOH.js.map} +0 -0
  135. /package/dist/{chunk-FWTVIRZZ.js.map → chunk-JVQ56E3U.js.map} +0 -0
  136. /package/dist/{chunk-YOLLISEY.js.map → chunk-JXK53XJW.js.map} +0 -0
  137. /package/dist/{chunk-PCQ5JWLF.js.map → chunk-KPUUHAK6.js.map} +0 -0
  138. /package/dist/{chunk-56JF5PZK.js.map → chunk-LYVTJLCF.js.map} +0 -0
  139. /package/dist/{chunk-NXQ6PXLJ.js.map → chunk-LZ5PGB7U.js.map} +0 -0
  140. /package/dist/{chunk-EKSJES5E.js.map → chunk-MAYAJXO6.js.map} +0 -0
  141. /package/dist/{chunk-OCGPOACB.js.map → chunk-MFX4ASX5.js.map} +0 -0
  142. /package/dist/{chunk-5I75WRXT.js.map → chunk-N3GLX64O.js.map} +0 -0
  143. /package/dist/{chunk-PEAUGQKU.js.map → chunk-NQCTANF3.js.map} +0 -0
  144. /package/dist/{chunk-IEUVP6UV.js.map → chunk-OM6ZT64U.js.map} +0 -0
  145. /package/dist/{chunk-W676GY42.js.map → chunk-P772HCHI.js.map} +0 -0
  146. /package/dist/{chunk-VWRXSBT2.js.map → chunk-R52N5UCS.js.map} +0 -0
  147. /package/dist/{chunk-FQNDJITD.js.map → chunk-RCTHCXS6.js.map} +0 -0
  148. /package/dist/{chunk-WLLUARTC.js.map → chunk-T2G4LDU5.js.map} +0 -0
  149. /package/dist/{chunk-66VKX6JE.js.map → chunk-WJMSND5Q.js.map} +0 -0
  150. /package/dist/{chunk-ZCNR4DN5.js.map → chunk-XBWW3QSI.js.map} +0 -0
  151. /package/dist/{chunk-BXZMV6QC.js.map → chunk-XFZDO2KB.js.map} +0 -0
  152. /package/dist/{chunk-BOADHYTA.js.map → chunk-YNZUYZ2O.js.map} +0 -0
@@ -1,16 +1,16 @@
1
1
  import "../chunk-JQRKXMSH.js";
2
2
  import {
3
3
  NotificationStatusNotice
4
- } from "../chunk-BOADHYTA.js";
4
+ } from "../chunk-YNZUYZ2O.js";
5
5
  import "../chunk-55FFONIV.js";
6
6
  import {
7
7
  detectNotificationBrowser,
8
8
  notificationUnblockSteps
9
9
  } from "../chunk-L7BRU4UF.js";
10
- import "../chunk-PEAUGQKU.js";
10
+ import "../chunk-NQCTANF3.js";
11
+ import "../chunk-L5RS6QAT.js";
11
12
  import "../chunk-QXUXO22M.js";
12
13
  import "../chunk-7HZ36QDH.js";
13
- import "../chunk-L5RS6QAT.js";
14
14
  import "../chunk-L7VH6IMR.js";
15
15
  import "../chunk-5ZY3IIIG.js";
16
16
  import "../chunk-YOXYSAUI.js";
@@ -1,9 +1,10 @@
1
1
  import "../chunk-TWAKMV5B.js";
2
2
  import {
3
3
  SequenceResolver
4
- } from "../chunk-XRV4QFEQ.js";
5
- import "../chunk-YE7M7URT.js";
6
- import "../chunk-OCT5VCLP.js";
4
+ } from "../chunk-ZBUMGMWP.js";
5
+ import "../chunk-6D5AMANO.js";
6
+ import "../chunk-BQBEN44R.js";
7
+ import "../chunk-CPQJFHNZ.js";
7
8
  import "../chunk-JO6D7YGN.js";
8
9
  import "../chunk-2ORD2FMN.js";
9
10
  import "../chunk-2SRWPNQ7.js";
@@ -23,10 +24,10 @@ import "../chunk-AL5E624U.js";
23
24
  import "../chunk-GYXUCS37.js";
24
25
  import "../chunk-LV7LSPBF.js";
25
26
  import "../chunk-NUGT7LMR.js";
26
- import "../chunk-PEAUGQKU.js";
27
+ import "../chunk-NQCTANF3.js";
28
+ import "../chunk-L5RS6QAT.js";
27
29
  import "../chunk-QXUXO22M.js";
28
30
  import "../chunk-7HZ36QDH.js";
29
- import "../chunk-L5RS6QAT.js";
30
31
  import "../chunk-L7VH6IMR.js";
31
32
  import "../chunk-5ZY3IIIG.js";
32
33
  import "../chunk-BA4RHQ3B.js";
@@ -17,14 +17,14 @@ import {
17
17
  } from "../chunk-IQU4HKND.js";
18
18
  import {
19
19
  AppHeaderDetails
20
- } from "../chunk-B5STMM3R.js";
21
- import "../chunk-NXQ6PXLJ.js";
20
+ } from "../chunk-ALMGYCHY.js";
21
+ import "../chunk-LZ5PGB7U.js";
22
22
  import "../chunk-E5OBAS3U.js";
23
23
  import "../chunk-3ROCD7XF.js";
24
24
  import "../chunk-NASLJO2R.js";
25
- import "../chunk-56JF5PZK.js";
26
- import "../chunk-IM4DMKH4.js";
25
+ import "../chunk-LYVTJLCF.js";
27
26
  import "../chunk-CRN4KKNI.js";
27
+ import "../chunk-IM4DMKH4.js";
28
28
  import "../chunk-TJUWSQYQ.js";
29
29
  import "../chunk-DAFFZED3.js";
30
30
  import "../chunk-5UX5QAFJ.js";
@@ -1,3 +1,4 @@
1
+ import type { Theme } from "@mui/material/styles/index.js";
1
2
  import type { OverflowField } from "./data-views-overflow";
2
3
  import type { QuickFilterConfig, RangeValue } from "./data-views-types";
3
4
  /** What each field's control needs, minus the panel's own chrome. */
@@ -28,6 +29,85 @@ export declare function fieldClearing<T extends Record<string, unknown>>({ field
28
29
  export declare function MoreQuick({ quick, pills, onToggleQuick, testIdPrefix, }: {
29
30
  quick: QuickFilterConfig;
30
31
  } & Pick<MoreFieldProps, "pills" | "onToggleQuick" | "testIdPrefix">): React.JSX.Element;
32
+ /**
33
+ * The "Mais" panel's vertical rhythm, in the theme's spacing units: the unit
34
+ * the header "Limpar"'s phone target reaches into (FUT-4144). The target is
35
+ * the button's 18px of text plus `reachUp` and `reachDown`, 40px at the
36
+ * default type scale, and it may never reach further than the gap that is
37
+ * there: under the group or quick chip above it (or the scroller's own top
38
+ * inset, for the first group) and under its own header. Sideways it reaches
39
+ * into the header row's empty gap and the scroller's padding, so a 37px
40
+ * "Limpar" is 41px wide.
41
+ */
42
+ export declare const MORE_SPACING: {
43
+ /** Under a group. */
44
+ readonly underGroup: 1.5;
45
+ /** Under a shed quick chip, below `sm` (8px from `sm` up, as before). */
46
+ readonly underQuick: 1.5;
47
+ /**
48
+ * The scroller's top inset (`data-views-more-filters.tsx`), at every width:
49
+ * the first group's overlay reaches into it. Not part of a responsive `p`,
50
+ * whose `xs` value is emitted as a media query and would win over it.
51
+ */
52
+ readonly aboveFirst: 1.5;
53
+ /** Under a group's header, below `sm`, applied or not, so nothing moves on apply. */
54
+ readonly underHeader: 1.25;
55
+ /** Under a group's header from `sm` up, as it always was. */
56
+ readonly underHeaderFromSm: 0.5;
57
+ readonly reachUp: 1.5;
58
+ readonly reachDown: 1.25;
59
+ readonly reachSide: 0.25;
60
+ };
61
+ /** A group's header row: the field's name, and "Limpar" while it is applied. */
62
+ export declare const moreHeaderSx: (theme: Theme) => {
63
+ [x: string]: string | number | {
64
+ mb: 0.5;
65
+ };
66
+ display: string;
67
+ alignItems: string;
68
+ gap: number;
69
+ mb: 1.25;
70
+ };
71
+ /**
72
+ * "Limpar" is 12px text, a 37×18 button: on a phone that was the whole target
73
+ * (FUT-4144, measured in the admin at 320–900). Below `sm` an overlay makes it
74
+ * at least 40×40 without moving the text, reaching only into gaps
75
+ * {@link MORE_SPACING} guarantees, in the same unit, so it grows and shrinks
76
+ * with them and covers nothing else. From `sm` up there is no overlay and the
77
+ * button is exactly as it was.
78
+ */
79
+ export declare const clearTargetSx: (theme: Theme) => {
80
+ [x: string]: "relative" | {
81
+ position: "static";
82
+ content?: undefined;
83
+ top?: undefined;
84
+ bottom?: undefined;
85
+ left?: undefined;
86
+ right?: undefined;
87
+ } | {
88
+ [x: string]: string | {
89
+ display: string;
90
+ };
91
+ content: string;
92
+ position: "absolute";
93
+ top: string;
94
+ bottom: string;
95
+ left: string;
96
+ right: string;
97
+ };
98
+ position: "relative";
99
+ "&::before": {
100
+ [x: string]: string | {
101
+ display: string;
102
+ };
103
+ content: string;
104
+ position: "absolute";
105
+ top: string;
106
+ bottom: string;
107
+ left: string;
108
+ right: string;
109
+ };
110
+ };
31
111
  /** One labelled group in the panel: the field's name, then its control. */
32
112
  export declare function MoreGroup<T extends Record<string, unknown>>({ field, pills, ranges, onTogglePill, onChangeRange, testIdPrefix, }: {
33
113
  field: OverflowField<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"data-views-more-fields.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-more-fields.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AASxE,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5D,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAuJD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/D,KAAK,EACL,KAAK,EACL,MAAM,EACN,YAAY,EACZ,aAAa,GACd,EAAE;IACD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,CAAC,GAAG;IAChF,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAkBA;AAGD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,aAAa,EACb,YAAY,GACb,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;CAC1B,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,eAAe,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWvF;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3D,KAAK,EACL,KAAK,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,YAAY,GACb,EAAE;IACD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwDrC"}
1
+ {"version":3,"file":"data-views-more-fields.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-more-fields.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAM3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AASxE,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5D,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAuJD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/D,KAAK,EACL,KAAK,EACL,MAAM,EACN,YAAY,EACZ,aAAa,GACd,EAAE;IACD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,CAAC,GAAG;IAChF,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAkBA;AAcD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,aAAa,EACb,YAAY,GACb,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;CAC1B,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,eAAe,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWvF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;IACvB,qBAAqB;;IAErB,yEAAyE;;IAEzE;;;;OAIG;;IAEH,qFAAqF;;IAErF,6DAA6D;;;;;CAKrD,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK;;;;;;;;CAMvC,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYxC,CAAC;AAEH,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3D,KAAK,EACL,KAAK,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,YAAY,GACb,EAAE;IACD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2DrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-views-more-filters.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-more-filters.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;;;;;;;GAUG;AAEH,UAAU,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,cAAc;IAClF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;CAC5B;AAmND,oCAAoC;AACpC,UAAU,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC5F,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gFAAgF;IAChF,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC7D,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,OAAe,EACf,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAuDrD"}
1
+ {"version":3,"file":"data-views-more-filters.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-more-filters.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAqD,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAElH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;;;;;;;GAUG;AAEH,UAAU,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,cAAc;IAClF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;CAC5B;AAmND,oCAAoC;AACpC,UAAU,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC5F,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gFAAgF;IAChF,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC7D,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,OAAe,EACf,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAuDrD"}
@@ -1,9 +1,61 @@
1
1
  import React from 'react';
2
- import type { SequenceItem, SequenceResolverProps } from './SequenceResolver.types';
2
+ import type { SequenceItem, SequenceOverviewCategory, SequenceResolverProps } from './SequenceResolver.types';
3
+ import { type SequenceRun } from './useSequenceRun';
4
+ interface OverviewState {
5
+ /** The overview is on screen instead of the step. */
6
+ shown: boolean;
7
+ /** The header's "Ver todos (N)", while there is a step and more than one problem. */
8
+ button?: {
9
+ label: string;
10
+ onClick: () => void;
11
+ disabled: boolean;
12
+ };
13
+ canPick: (category: SequenceOverviewCategory) => boolean;
14
+ pick: (category: SequenceOverviewCategory) => void;
15
+ hide: () => void;
16
+ /** The overview's title (in the header row): focus goes to it when it opens. */
17
+ titleRef: React.RefObject<HTMLHeadingElement | null>;
18
+ }
19
+ interface HeaderInputs<I extends SequenceItem, R> {
20
+ props: SequenceResolverProps<I, R>;
21
+ state: SequenceRun<I, R>;
22
+ current: I | undefined;
23
+ overview: OverviewState;
24
+ titleId: string;
25
+ }
26
+ /** The header's back, "Ver todos" and label — or, over the overview, its title and close alone. */
27
+ declare function headerOf<I extends SequenceItem, R>(inputs: HeaderInputs<I, R>): {
28
+ title: {
29
+ id: string;
30
+ text: string;
31
+ ref: React.RefObject<HTMLHeadingElement | null>;
32
+ };
33
+ label: string;
34
+ progress: number;
35
+ } | {
36
+ back: {
37
+ label: string;
38
+ accessible: string | undefined;
39
+ onClick: () => void;
40
+ disabled: boolean;
41
+ } | undefined;
42
+ seeAll: {
43
+ label: string;
44
+ onClick: () => void;
45
+ disabled: boolean;
46
+ } | undefined;
47
+ label: string;
48
+ progress: number;
49
+ };
50
+ export interface Screen {
51
+ header: ReturnType<typeof headerOf>;
52
+ body: React.JSX.Element;
53
+ }
3
54
  /**
4
55
  * Resolve a queue of problems one at a time, in ONE dialog whose body is
5
56
  * replaced step by step: a header with "‹ Back", the step's label and close,
6
- * a progress bar, the host's step, and an end screen (FUT-3671).
57
+ * a progress bar, the host's step, and an end screen (FUT-3671) — or none,
58
+ * with `done: null`: the run's end closes it (FUT-3833).
7
59
  *
8
60
  * A centred `Dialog` from the `sm` breakpoint up; the `Dialog` inset
9
61
  * bottom-sheet variant below it, never taller than 95% of the viewport. Either
@@ -14,4 +66,5 @@ import type { SequenceItem, SequenceResolverProps } from './SequenceResolver.typ
14
66
  * body, every word and every server call is the host's.
15
67
  */
16
68
  export declare function SequenceResolver<I extends SequenceItem, R = unknown>(props: SequenceResolverProps<I, R>): React.JSX.Element;
69
+ export {};
17
70
  //# sourceMappingURL=SequenceResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SequenceResolver.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAapE,OAAO,KAAK,EACV,YAAY,EAEZ,qBAAqB,EAGtB,MAAM,0BAA0B,CAAC;AAyLlC;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,GAAG,OAAO,EAClE,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,KAAK,CAAC,GAAG,CAAC,OAAO,CAuEnB"}
1
+ {"version":3,"file":"SequenceResolver.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA0D,MAAM,OAAO,CAAC;AAW/E,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EACxB,qBAAqB,EAGtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqBpE,UAAU,aAAa;IACrB,qDAAqD;IACrD,KAAK,EAAE,OAAO,CAAC;IACf,qFAAqF;IACrF,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE,OAAO,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,OAAO,CAAC;IACzD,IAAI,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACnD,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,gFAAgF;IAChF,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;CACtD;AAmDD,UAAU,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC;IAC9C,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mGAAmG;AACnG,iBAAS,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;eAlEnD,MAAM;iBAAW,MAAM,IAAI;kBAAY,OAAO;;;;EA0EjE;AAsGD,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;IACpC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;CACzB;AAoDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,GAAG,OAAO,EAClE,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,KAAK,CAAC,GAAG,CAAC,OAAO,CA8DnB"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import type { SequenceResolverLabels } from './SequenceResolver.types';
3
+ import type { Screen } from './SequenceResolver';
4
+ export interface ResolverFrameProps {
5
+ shown: boolean;
6
+ /** The kept last step is playing its exit: a picture, nothing on it acts. */
7
+ exiting: boolean;
8
+ touch: boolean;
9
+ titleId: string;
10
+ testId: string;
11
+ labels: SequenceResolverLabels;
12
+ screen: Screen;
13
+ close: () => void;
14
+ }
15
+ export declare function ResolverFrame(props: ResolverFrameProps): React.JSX.Element;
16
+ //# sourceMappingURL=SequenceResolver.frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SequenceResolver.frame.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.frame.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAejD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAOD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+B1E"}
@@ -183,8 +183,9 @@ export interface SequenceResolverLabels {
183
183
  export interface SequenceResolverProps<I extends SequenceItem = SequenceItem, R = unknown> {
184
184
  open: boolean;
185
185
  /**
186
- * The close button, Esc, and the end screen's button. Gets where the run
187
- * stood, for the host's "N resolved · Undo" toast.
186
+ * The close button, Esc, and the end screen's button — or, with `done:
187
+ * null`, the queue running out. Gets where the run stood, for the host's
188
+ * "N resolved · Undo" toast.
188
189
  */
189
190
  onClose: (summary: SequenceSummary) => void;
190
191
  /**
@@ -215,8 +216,13 @@ export interface SequenceResolverProps<I extends SequenceItem = SequenceItem, R
215
216
  overview?: SequenceOverview;
216
217
  /** Open the run at this problem (a click on its block); the ones before it follow it. */
217
218
  initialKey?: string;
218
- /** The end screen's words, from the run's summary. */
219
- done: SequenceDone | ((summary: SequenceSummary) => SequenceDone);
219
+ /**
220
+ * The end screen's words, from the run's summary. `null` drops the end
221
+ * screen: when the queue runs out — the last step answered or passed over —
222
+ * the resolver calls `onClose(summary)` at once, and the host's toast is the
223
+ * run's last word (FUT-3833).
224
+ */
225
+ done: SequenceDone | ((summary: SequenceSummary) => SequenceDone) | null;
220
226
  labels: SequenceResolverLabels;
221
227
  /**
222
228
  * Base test id (default `sequence-resolver`). Parts get `${id}-back`,
@@ -1 +1 @@
1
- {"version":3,"file":"SequenceResolver.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,iDAAiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,2FAA2F;IAC3F,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC;;;;;OAKG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAChF,8CAA8C;IAC9C,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;;;OAIG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,iGAAiG;IACjG,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,UAAU,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,CAAC,CAAC,CAAC;QACb,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;KACrC,CAAC;CACH;AAED,wFAAwF;AACxF,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,mGAAmG;IACnG,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,iEAAiE;AACjE,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,wBAAwB,EAAE,CAAC;IACvC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kHAAkH;IAClH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,KAAK,MAAM,CAAC;IACtE,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,GAAG,OAAO;IACvF,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5C;;;OAGG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,gDAAgD;IAChD,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;IAC/D;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,gGAAgG;IAChG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC,OAAO,EAAE,eAAe,KAAK,YAAY,CAAC,CAAC;IAClE,MAAM,EAAE,sBAAsB,CAAC;IAC/B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"SequenceResolver.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.types.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  UserAvatar,
3
3
  UserMenu
4
- } from "./chunk-Q3SILZTQ.js";
4
+ } from "./chunk-E2UOEI7N.js";
5
5
  import "./chunk-DQ22UKMZ.js";
6
6
  import "./chunk-UDQSIRAP.js";
7
- import "./chunk-4QR7LM5F.js";
8
- import "./chunk-EOQ6EKTS.js";
7
+ import "./chunk-JIEVKHOH.js";
8
+ import "./chunk-7XSCEHGA.js";
9
+ import "./chunk-MTEQEPNY.js";
9
10
  import "./chunk-6ZZGK5DT.js";
10
11
  import "./chunk-3ZVUNSFF.js";
11
- import "./chunk-MTEQEPNY.js";
12
12
  import "./chunk-VUHLNYAE.js";
13
13
  import "./chunk-2GSIEDGN.js";
14
14
  import "./chunk-4XBAEKQQ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.92.1",
3
+ "version": "6.93.0",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -13,6 +13,7 @@
13
13
  * a search — it is the bar's own {@link PillControl}; see `sharesBarControl`.
14
14
  */
15
15
  import Checkbox from "@mui/material/Checkbox/index.js";
16
+ import type { Theme } from "@mui/material/styles/index.js";
16
17
 
17
18
  import { Box } from "../../../mui/Box";
18
19
  import { Text } from "../../typography/Text";
@@ -227,6 +228,17 @@ export function fieldClearing<T extends Record<string, unknown>>({
227
228
  }
228
229
 
229
230
 
231
+ /**
232
+ * Under a shed quick chip: 12px below `sm`, the gap a following group's
233
+ * "Limpar" target reaches into (its 8px let the target cover the chip's
234
+ * label); 8px from `sm` up, as before.
235
+ */
236
+ const quickSx = (theme: Theme) => ({
237
+ mb: MORE_SPACING.underQuick,
238
+ [theme.breakpoints.up("sm")]: { mb: 1 },
239
+ "&:last-of-type": { mb: 0 },
240
+ });
241
+
230
242
  /**
231
243
  * A quick chip shed into the panel: its own line, because label and count are
232
244
  * already the whole control — no heading above it, no "Limpar" beside it.
@@ -240,7 +252,7 @@ export function MoreQuick({
240
252
  quick: QuickFilterConfig;
241
253
  } & Pick<MoreFieldProps, "pills" | "onToggleQuick" | "testIdPrefix">): React.JSX.Element {
242
254
  return (
243
- <Box sx={{ mb: 1, "&:last-of-type": { mb: 0 } }}>
255
+ <Box sx={quickSx}>
244
256
  <QuickRow
245
257
  quick={quick}
246
258
  active={isQuickActive(quick, pills)}
@@ -251,6 +263,67 @@ export function MoreQuick({
251
263
  );
252
264
  }
253
265
 
266
+ /**
267
+ * The "Mais" panel's vertical rhythm, in the theme's spacing units: the unit
268
+ * the header "Limpar"'s phone target reaches into (FUT-4144). The target is
269
+ * the button's 18px of text plus `reachUp` and `reachDown`, 40px at the
270
+ * default type scale, and it may never reach further than the gap that is
271
+ * there: under the group or quick chip above it (or the scroller's own top
272
+ * inset, for the first group) and under its own header. Sideways it reaches
273
+ * into the header row's empty gap and the scroller's padding, so a 37px
274
+ * "Limpar" is 41px wide.
275
+ */
276
+ export const MORE_SPACING = {
277
+ /** Under a group. */
278
+ underGroup: 1.5,
279
+ /** Under a shed quick chip, below `sm` (8px from `sm` up, as before). */
280
+ underQuick: 1.5,
281
+ /**
282
+ * The scroller's top inset (`data-views-more-filters.tsx`), at every width:
283
+ * the first group's overlay reaches into it. Not part of a responsive `p`,
284
+ * whose `xs` value is emitted as a media query and would win over it.
285
+ */
286
+ aboveFirst: 1.5,
287
+ /** Under a group's header, below `sm`, applied or not, so nothing moves on apply. */
288
+ underHeader: 1.25,
289
+ /** Under a group's header from `sm` up, as it always was. */
290
+ underHeaderFromSm: 0.5,
291
+ reachUp: 1.5,
292
+ reachDown: 1.25,
293
+ reachSide: 0.25,
294
+ } as const;
295
+
296
+ /** A group's header row: the field's name, and "Limpar" while it is applied. */
297
+ export const moreHeaderSx = (theme: Theme) => ({
298
+ display: "flex",
299
+ alignItems: "center",
300
+ gap: 1,
301
+ mb: MORE_SPACING.underHeader,
302
+ [theme.breakpoints.up("sm")]: { mb: MORE_SPACING.underHeaderFromSm },
303
+ });
304
+
305
+ /**
306
+ * "Limpar" is 12px text, a 37×18 button: on a phone that was the whole target
307
+ * (FUT-4144, measured in the admin at 320–900). Below `sm` an overlay makes it
308
+ * at least 40×40 without moving the text, reaching only into gaps
309
+ * {@link MORE_SPACING} guarantees, in the same unit, so it grows and shrinks
310
+ * with them and covers nothing else. From `sm` up there is no overlay and the
311
+ * button is exactly as it was.
312
+ */
313
+ export const clearTargetSx = (theme: Theme) => ({
314
+ position: "relative" as const,
315
+ [theme.breakpoints.up("sm")]: { position: "static" as const },
316
+ "&::before": {
317
+ content: '""',
318
+ position: "absolute" as const,
319
+ top: `-${theme.spacing(MORE_SPACING.reachUp)}`,
320
+ bottom: `-${theme.spacing(MORE_SPACING.reachDown)}`,
321
+ left: `-${theme.spacing(MORE_SPACING.reachSide)}`,
322
+ right: `-${theme.spacing(MORE_SPACING.reachSide)}`,
323
+ [theme.breakpoints.up("sm")]: { display: "none" },
324
+ },
325
+ });
326
+
254
327
  /** One labelled group in the panel: the field's name, then its control. */
255
328
  export function MoreGroup<T extends Record<string, unknown>>({
256
329
  field,
@@ -265,8 +338,8 @@ export function MoreGroup<T extends Record<string, unknown>>({
265
338
  const copy = useDataViewsCopy();
266
339
  const { applied, clear } = fieldClearing({ field, pills, ranges, onTogglePill, onChangeRange });
267
340
  return (
268
- <Box sx={{ mb: 1.5, "&:last-of-type": { mb: 0 } }}>
269
- <Box sx={{ display: "flex", alignItems: "center", gap: 1, mb: 0.5 }}>
341
+ <Box sx={{ mb: MORE_SPACING.underGroup, "&:last-of-type": { mb: 0 } }}>
342
+ <Box sx={moreHeaderSx}>
270
343
  <Text variant="caption" as="span">
271
344
  <Box component="span" sx={{ color: "text.secondary" }}>
272
345
  {field.label}
@@ -283,17 +356,20 @@ export function MoreGroup<T extends Record<string, unknown>>({
283
356
  type="button"
284
357
  onClick={clear}
285
358
  data-testid={`${testIdPrefix}-more-${field.id}-clear`}
286
- sx={{
287
- ml: "auto",
288
- border: 0,
289
- p: 0,
290
- bgcolor: "transparent",
291
- cursor: "pointer",
292
- font: "inherit",
293
- fontSize: sxRem(12),
294
- color: "primary.main",
295
- "&:hover": { textDecoration: "underline" },
296
- }}
359
+ sx={[
360
+ {
361
+ ml: "auto",
362
+ border: 0,
363
+ p: 0,
364
+ bgcolor: "transparent",
365
+ cursor: "pointer",
366
+ font: "inherit",
367
+ fontSize: sxRem(12),
368
+ color: "primary.main",
369
+ "&:hover": { textDecoration: "underline" },
370
+ },
371
+ clearTargetSx,
372
+ ]}
297
373
  >
298
374
  {copy.filters.clear}
299
375
  </Box>
@@ -17,7 +17,7 @@ import { Button } from "../../form/Button";
17
17
  import { Box } from "../../../mui/Box";
18
18
  import { Text } from "../../typography/Text";
19
19
 
20
- import { fieldClearing, MoreGroup, MoreQuick, type MoreFieldProps } from "./data-views-more-fields";
20
+ import { fieldClearing, MORE_SPACING, MoreGroup, MoreQuick, type MoreFieldProps } from "./data-views-more-fields";
21
21
  import { useStillAnchor } from "./data-views-still-anchor";
22
22
  import type { OverflowField } from "./data-views-overflow";
23
23
  import { rem, remPx, sxRem } from "../../../tokens/relative";
@@ -322,7 +322,7 @@ export function MoreFilters<T extends Record<string, unknown>>({
322
322
  contents are told to shrink into it. A horizontal scrollbar here
323
323
  means something refused to, which is a bug to fix rather than a
324
324
  scrollbar to live with. */}
325
- <Box sx={{ flex: "1 1 auto", minHeight: 0, overflowY: "auto", overflowX: "hidden", p: { xs: 1, sm: 1.5 }, minWidth: 0 }}>
325
+ <Box sx={{ flex: "1 1 auto", minHeight: 0, overflowY: "auto", overflowX: "hidden", px: { xs: 1, sm: 1.5 }, pb: { xs: 1, sm: 1.5 }, pt: MORE_SPACING.aboveFirst, minWidth: 0 }}>
326
326
  <MoreFields key={clearKey} fields={fields} {...rest} />
327
327
  </Box>
328
328
  {(anyApplied || holdsDayRange) && (
@@ -0,0 +1,71 @@
1
+ import Box from '@mui/material/Box/index.js';
2
+ import React from 'react';
3
+
4
+ import { Dialog } from '../Dialog';
5
+ import { SequenceHeader } from './SequenceResolver.header';
6
+ import { chromeSx, columnSx, paperSx, scrollBodySx } from './SequenceResolver.styles';
7
+ import type { SequenceResolverLabels } from './SequenceResolver.types';
8
+ import type { Screen } from './SequenceResolver';
9
+
10
+ /**
11
+ * Esc closes. `persistent` turns MUI's own Esc off together with the veil's
12
+ * click (the prototype's veil does nothing), so Esc is put back here; a popup
13
+ * inside a step that handles its own Esc stops it before it gets here.
14
+ */
15
+ function escapeCloses(close: () => void) {
16
+ return (event: React.KeyboardEvent): void => {
17
+ if (event.key !== 'Escape' || event.defaultPrevented) return;
18
+ event.stopPropagation();
19
+ close();
20
+ };
21
+ }
22
+
23
+ export interface ResolverFrameProps {
24
+ shown: boolean;
25
+ /** The kept last step is playing its exit: a picture, nothing on it acts. */
26
+ exiting: boolean;
27
+ touch: boolean;
28
+ titleId: string;
29
+ testId: string;
30
+ labels: SequenceResolverLabels;
31
+ screen: Screen;
32
+ close: () => void;
33
+ }
34
+
35
+ function swallowClick(event: React.SyntheticEvent): void {
36
+ event.preventDefault();
37
+ event.stopPropagation();
38
+ }
39
+
40
+ export function ResolverFrame(props: ResolverFrameProps): React.JSX.Element {
41
+ const { shown, exiting, touch, titleId, testId, labels, screen, close } = props;
42
+ return (
43
+ <Dialog
44
+ open={shown}
45
+ onClose={close}
46
+ persistent
47
+ variant={touch ? 'bottom-sheet' : 'default'}
48
+ size="sm"
49
+ aria-labelledby={titleId}
50
+ onKeyDown={escapeCloses(close)}
51
+ slotProps={{ paper: { sx: paperSx(touch) } }}
52
+ dataTestId={testId}
53
+ >
54
+ <Box sx={columnSx} inert={exiting} aria-hidden={exiting || undefined} onClickCapture={exiting ? swallowClick : undefined}>
55
+ <Box sx={chromeSx}>
56
+ <SequenceHeader
57
+ touch={touch}
58
+ {...screen.header}
59
+ closeLabel={labels.close}
60
+ onClose={close}
61
+ progressLabel={labels.progress}
62
+ testId={testId}
63
+ />
64
+ </Box>
65
+ <Box sx={scrollBodySx} data-testid={`${testId}-body`}>
66
+ {screen.body}
67
+ </Box>
68
+ </Box>
69
+ </Dialog>
70
+ );
71
+ }
@@ -47,7 +47,7 @@ data-sized and shrinks while you go.
47
47
  | Prop | Type | Description |
48
48
  |---|---|---|
49
49
  | `open` | `boolean` | Shows the resolver. Every opening — with an intro or without — starts a fresh run. |
50
- | `onClose` | `(summary) => void` | Close button, Esc and the end screen's button. Gets `{ resolved, skipped, total, alsoResolved }`; a close toast counts `resolved + alsoResolved` (and shows only when that is above 0). Clicking the veil does nothing (as approved). |
50
+ | `onClose` | `(summary) => void` | Close button, Esc and the end screen's button — or, with `done: null`, the queue running out. Gets `{ resolved, skipped, total, alsoResolved }`; a close toast counts `resolved + alsoResolved` (and shows only when that is above 0). Clicking the veil does nothing (as approved). |
51
51
  | `intro` | `SequenceIntro?` | While given, the intro shows instead of the run: `title`, `description`, `categories` (`label`, `description`, `count`, `onPick`), `startAllLabel`, `onStartAll`. The host drops it and sets `queue` in the same update as a pick. |
52
52
  | `queue` | `readonly I[]` (`I extends { key; kindLabel }`) | The problems, in order. Live data: it may shrink (siblings answered together) or grow mid-run. |
53
53
  | `renderStep` | `(item, api) => SequenceStep` | The current step: `content`, `primary?`, `secondary?` (default: skip with `labels.skip`; `false` removes it), `tertiary?`, `footer?` (`'end'` default — right-aligned over a hairline; `'split'` — two equal columns, no hairline; on a phone the actions always share the row without a hairline), `canGoBack?` (`false`: this answer has no inverse — once it is answered, Back is not offered from the next step). |
@@ -55,7 +55,7 @@ data-sized and shrinks while you go.
55
55
  | `canGoBack` | `boolean` (default `true`) | Offer Back at all. It shows only once a previous step exists — on steps and on the end screen, never on the intro. |
56
56
  | `overview` | `SequenceOverview?` | "Ver todos (N)" inside the run (FUT-3825): `label(total)`, `title`, `categories` (`label`, `description?`, `count?` — the host's bookkeeping, not drawn: the `label` says the number, "Atrasado · 1" — `keys`, `onPick?`), `pickLabel`, `continueLabel`. See "Ver todos". |
57
57
  | `initialKey` | `string?` | Open the run at this problem (a click on its block). The ones before it follow it; nothing is passed over. |
58
- | `done` | `SequenceDone \| (summary) => SequenceDone` | The end screen: `title`, `description?`, `confirmLabel`. |
58
+ | `done` | `SequenceDone \| ((summary) => SequenceDone) \| null` | The end screen: `title`, `description?`, `confirmLabel`. **`null` drops it** (FUT-3833): when the queue runs out — the last step answered or passed over, or the host's queue emptied under the run — the resolver calls `onClose(summary)` once (StrictMode included) and starts closing, its exit playing over the last step as it was; the host's toast is the run's last word. A pending last write keeps the step until it returns; a refused one keeps it with its message and does not close. Never fires from the intro. |
59
59
  | `labels` | `SequenceResolverLabels` | Every chrome word: `back`, `backAccessible?`, `close`, `skip`, `step(position, total, item)`, `introStep`, `doneStep`, `progress`, `failed`. **Required — the package ships no copy.** |
60
60
  | `dataTestId` | `string` (default `sequence-resolver`) | Parts: `-back`, `-close`, `-step-label`, `-progress`, `-handle`, `-category-<n>`, `-start-all`, `-primary`, `-secondary`, `-tertiary`, `-footer`, `-error`, `-done`, `-done-confirm`, `-see-all`, `-overview`, `-overview-pick-<n>`, `-continue`. |
61
61