@12-apps/ui 6.39.15 → 6.39.17

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 (189) hide show
  1. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  2. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  3. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  4. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +14 -14
  5. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +26 -25
  6. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +5 -4
  7. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +5 -4
  8. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +5 -4
  9. package/dist/_internal/components/data-display/DataViews/base-card.js +2 -2
  10. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +5 -5
  11. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +4 -4
  12. package/dist/_internal/components/data-display/DataViews/base-list-card.js +7 -7
  13. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +4 -4
  14. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +3 -3
  15. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
  16. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +13 -13
  17. package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +2 -2
  18. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +3 -3
  19. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +6 -6
  20. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +7 -6
  21. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +5 -5
  22. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +3 -3
  23. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +1 -1
  24. package/dist/_internal/components/data-display/DataViews/use-saved-views-controller.js +2 -2
  25. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +11 -11
  26. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +8 -8
  27. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
  28. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +2 -2
  29. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +1 -1
  30. package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +2 -2
  31. package/dist/_internal/components/data-display/MapPreview/MapPreview.hooks.js +2 -2
  32. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +7 -7
  33. package/dist/_internal/components/data-display/MapPreview/MapTiles.js +2 -2
  34. package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +4 -4
  35. package/dist/_internal/components/data-display/MapPreview/useMapPreview.js +3 -3
  36. package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
  37. package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
  38. package/dist/_internal/components/data-display/Table/Table.helpers.js +7 -1
  39. package/dist/_internal/components/data-display/Table/Table.hooks.js +1 -1
  40. package/dist/_internal/components/data-display/Table/Table.js +5 -5
  41. package/dist/_internal/components/data-display/Table/Table.styles.js +1 -1
  42. package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
  43. package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
  44. package/dist/_internal/components/data-display/index.js +39 -39
  45. package/dist/_internal/components/feedback/Dialog/Dialog.focus.js +10 -0
  46. package/dist/_internal/components/feedback/Dialog/Dialog.focus.js.map +1 -0
  47. package/dist/_internal/components/feedback/Dialog/Dialog.js +4 -3
  48. package/dist/_internal/components/feedback/Dialog/Dialog.slots.js +5 -3
  49. package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +1 -1
  50. package/dist/_internal/components/feedback/index.js +4 -3
  51. package/dist/_internal/components/index.js +44 -43
  52. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -7
  53. package/dist/_internal/components/navigation/index.js +8 -7
  54. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  55. package/dist/charts.js +11 -11
  56. package/dist/{chunk-V2UZQS2K.js → chunk-2622YFM6.js} +4 -4
  57. package/dist/{chunk-5QD6YGZ2.js → chunk-2OWKL4CC.js} +37 -30
  58. package/dist/chunk-2OWKL4CC.js.map +1 -0
  59. package/dist/{chunk-QSRZOXQI.js → chunk-2WVHZIWP.js} +2 -2
  60. package/dist/{chunk-P22W4N5K.js → chunk-37USSARD.js} +2 -2
  61. package/dist/{chunk-RSDYS5B3.js → chunk-4RPFI474.js} +6 -6
  62. package/dist/{chunk-SAOCDKNK.js → chunk-5JCGBCFJ.js} +4 -4
  63. package/dist/{chunk-3BNQDOHC.js → chunk-5OBGW3FG.js} +5 -5
  64. package/dist/{chunk-EMEXXAQI.js → chunk-66O55OZI.js} +6 -6
  65. package/dist/{chunk-SA65SDOY.js → chunk-A2TANYNR.js} +2 -2
  66. package/dist/{chunk-I5T5PQQW.js → chunk-BRM3T4LQ.js} +4 -4
  67. package/dist/{chunk-CCK7FB2V.js → chunk-BVHIKXCN.js} +8 -3
  68. package/dist/{chunk-CCK7FB2V.js.map → chunk-BVHIKXCN.js.map} +1 -1
  69. package/dist/{chunk-PG5C2AA4.js → chunk-DF4QODJ6.js} +2 -2
  70. package/dist/{chunk-ESCF5VMQ.js → chunk-DRSY37PB.js} +2 -2
  71. package/dist/{chunk-DYNJQ3HJ.js → chunk-FLDLUAHW.js} +2 -2
  72. package/dist/{chunk-OGB25P3N.js → chunk-HQZRI7UX.js} +2 -2
  73. package/dist/{chunk-HUPR5JXY.js → chunk-HWSS6C7C.js} +2 -2
  74. package/dist/{chunk-T3DNYPEA.js → chunk-I4MRBEWU.js} +12 -12
  75. package/dist/{chunk-HR7YTBR7.js → chunk-IASDP44E.js} +4 -4
  76. package/dist/{chunk-PX6TWS5T.js → chunk-IBGP3VSR.js} +2 -2
  77. package/dist/{chunk-5WT4YWXC.js → chunk-IRD45DRW.js} +2 -2
  78. package/dist/{chunk-ENRBXB6L.js → chunk-JK5UJM4Y.js} +3 -3
  79. package/dist/{chunk-5NT2M2JI.js → chunk-JKIKHWD2.js} +4 -4
  80. package/dist/{chunk-WVJGNIJZ.js → chunk-JYR6VV4Y.js} +3 -3
  81. package/dist/{chunk-5ETBB2DG.js → chunk-K5V6TCYB.js} +4 -4
  82. package/dist/{chunk-3IF3I3FI.js → chunk-KHPL2J3B.js} +2 -2
  83. package/dist/{chunk-AXKLCWFR.js → chunk-KN4ZE2XZ.js} +14 -14
  84. package/dist/{chunk-M3MHYE2M.js → chunk-L566FMDD.js} +4 -4
  85. package/dist/chunk-LV7LSPBF.js +35 -0
  86. package/dist/chunk-LV7LSPBF.js.map +1 -0
  87. package/dist/{chunk-HQWJUHR4.js → chunk-M4QXG5JP.js} +4 -4
  88. package/dist/{chunk-IFS3BRRL.js → chunk-MCJRHF7Z.js} +3 -3
  89. package/dist/{chunk-JGRBHNK6.js → chunk-ME3WYPYK.js} +2 -2
  90. package/dist/{chunk-GAMLBJE6.js → chunk-MQ277OLB.js} +14 -8
  91. package/dist/chunk-MQ277OLB.js.map +1 -0
  92. package/dist/{chunk-QXSV7Z57.js → chunk-MXCIUKTQ.js} +5 -5
  93. package/dist/{chunk-XS3REOPN.js → chunk-NHEWST3N.js} +12 -2
  94. package/dist/chunk-NHEWST3N.js.map +1 -0
  95. package/dist/{chunk-UBEAJFMW.js → chunk-O25SH2MA.js} +5 -5
  96. package/dist/{chunk-ARDLCGBK.js → chunk-O2DLEAUP.js} +3 -3
  97. package/dist/{chunk-LH7KMYHC.js → chunk-RZSMRBOX.js} +19 -2
  98. package/dist/chunk-RZSMRBOX.js.map +1 -0
  99. package/dist/{chunk-WCRGSMLV.js → chunk-SCZABICW.js} +3 -3
  100. package/dist/{chunk-2WU52FLP.js → chunk-ST7B54JN.js} +9 -4
  101. package/dist/chunk-ST7B54JN.js.map +1 -0
  102. package/dist/{chunk-LH46NYGR.js → chunk-TEEJ4GNY.js} +2 -2
  103. package/dist/{chunk-O4AHF45C.js → chunk-VY6L74JQ.js} +2 -2
  104. package/dist/{chunk-XZJM6EPC.js → chunk-YKEO6UHN.js} +4 -4
  105. package/dist/{chunk-WWGD5YVW.js → chunk-YTY7TD7S.js} +2 -2
  106. package/dist/{chunk-5HW37NSW.js → chunk-Z2JH5KW5.js} +16 -2
  107. package/dist/{chunk-5HW37NSW.js.map → chunk-Z2JH5KW5.js.map} +1 -1
  108. package/dist/{chunk-HMAPQV4C.js → chunk-ZWCYSAI5.js} +2 -2
  109. package/dist/data-display/Avatar.js +2 -2
  110. package/dist/data-display/Carousel.js +3 -3
  111. package/dist/data-display/Chart.js +11 -11
  112. package/dist/data-display/DataViews.js +34 -33
  113. package/dist/data-display/FleetMap.js +12 -12
  114. package/dist/data-display/Lightbox.js +1 -1
  115. package/dist/data-display/MapPreview.js +7 -7
  116. package/dist/data-display/Progress.js +2 -2
  117. package/dist/data-display/Sheet.js +3 -3
  118. package/dist/data-display/Table.js +5 -5
  119. package/dist/feedback/Dialog.js +4 -3
  120. package/dist/navigation/AppHeader.js +8 -7
  121. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  122. package/dist/types/components/data-display/Table/Table.helpers.d.ts +21 -3
  123. package/dist/types/components/data-display/Table/Table.helpers.d.ts.map +1 -1
  124. package/dist/types/components/data-display/Table/Table.hooks.d.ts +7 -3
  125. package/dist/types/components/data-display/Table/Table.hooks.d.ts.map +1 -1
  126. package/dist/types/components/data-display/Table/Table.styles.d.ts.map +1 -1
  127. package/dist/types/components/data-display/Table/Table.types.d.ts +5 -2
  128. package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
  129. package/dist/types/components/feedback/Dialog/Dialog.d.ts.map +1 -1
  130. package/dist/types/components/feedback/Dialog/Dialog.focus.d.ts +51 -0
  131. package/dist/types/components/feedback/Dialog/Dialog.focus.d.ts.map +1 -0
  132. package/dist/types/components/feedback/Dialog/Dialog.slots.d.ts +14 -0
  133. package/dist/types/components/feedback/Dialog/Dialog.slots.d.ts.map +1 -1
  134. package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
  135. package/dist/user-avatar.js +3 -3
  136. package/package.json +1 -1
  137. package/src/components/data-display/Table/Table.helpers.ts +38 -4
  138. package/src/components/data-display/Table/Table.hooks.ts +40 -5
  139. package/src/components/data-display/Table/Table.md +9 -3
  140. package/src/components/data-display/Table/Table.styles.ts +8 -3
  141. package/src/components/data-display/Table/Table.tsx +9 -4
  142. package/src/components/data-display/Table/Table.types.ts +5 -2
  143. package/src/components/feedback/Dialog/Dialog.focus.ts +90 -0
  144. package/src/components/feedback/Dialog/Dialog.md +23 -3
  145. package/src/components/feedback/Dialog/Dialog.slots.ts +32 -0
  146. package/src/components/feedback/Dialog/Dialog.styles.ts +15 -0
  147. package/src/components/feedback/Dialog/Dialog.tsx +11 -3
  148. package/dist/chunk-2WU52FLP.js.map +0 -1
  149. package/dist/chunk-5QD6YGZ2.js.map +0 -1
  150. package/dist/chunk-GAMLBJE6.js.map +0 -1
  151. package/dist/chunk-LH7KMYHC.js.map +0 -1
  152. package/dist/chunk-XS3REOPN.js.map +0 -1
  153. /package/dist/{chunk-V2UZQS2K.js.map → chunk-2622YFM6.js.map} +0 -0
  154. /package/dist/{chunk-QSRZOXQI.js.map → chunk-2WVHZIWP.js.map} +0 -0
  155. /package/dist/{chunk-P22W4N5K.js.map → chunk-37USSARD.js.map} +0 -0
  156. /package/dist/{chunk-RSDYS5B3.js.map → chunk-4RPFI474.js.map} +0 -0
  157. /package/dist/{chunk-SAOCDKNK.js.map → chunk-5JCGBCFJ.js.map} +0 -0
  158. /package/dist/{chunk-3BNQDOHC.js.map → chunk-5OBGW3FG.js.map} +0 -0
  159. /package/dist/{chunk-EMEXXAQI.js.map → chunk-66O55OZI.js.map} +0 -0
  160. /package/dist/{chunk-SA65SDOY.js.map → chunk-A2TANYNR.js.map} +0 -0
  161. /package/dist/{chunk-I5T5PQQW.js.map → chunk-BRM3T4LQ.js.map} +0 -0
  162. /package/dist/{chunk-PG5C2AA4.js.map → chunk-DF4QODJ6.js.map} +0 -0
  163. /package/dist/{chunk-ESCF5VMQ.js.map → chunk-DRSY37PB.js.map} +0 -0
  164. /package/dist/{chunk-DYNJQ3HJ.js.map → chunk-FLDLUAHW.js.map} +0 -0
  165. /package/dist/{chunk-OGB25P3N.js.map → chunk-HQZRI7UX.js.map} +0 -0
  166. /package/dist/{chunk-HUPR5JXY.js.map → chunk-HWSS6C7C.js.map} +0 -0
  167. /package/dist/{chunk-T3DNYPEA.js.map → chunk-I4MRBEWU.js.map} +0 -0
  168. /package/dist/{chunk-HR7YTBR7.js.map → chunk-IASDP44E.js.map} +0 -0
  169. /package/dist/{chunk-PX6TWS5T.js.map → chunk-IBGP3VSR.js.map} +0 -0
  170. /package/dist/{chunk-5WT4YWXC.js.map → chunk-IRD45DRW.js.map} +0 -0
  171. /package/dist/{chunk-ENRBXB6L.js.map → chunk-JK5UJM4Y.js.map} +0 -0
  172. /package/dist/{chunk-5NT2M2JI.js.map → chunk-JKIKHWD2.js.map} +0 -0
  173. /package/dist/{chunk-WVJGNIJZ.js.map → chunk-JYR6VV4Y.js.map} +0 -0
  174. /package/dist/{chunk-5ETBB2DG.js.map → chunk-K5V6TCYB.js.map} +0 -0
  175. /package/dist/{chunk-3IF3I3FI.js.map → chunk-KHPL2J3B.js.map} +0 -0
  176. /package/dist/{chunk-AXKLCWFR.js.map → chunk-KN4ZE2XZ.js.map} +0 -0
  177. /package/dist/{chunk-M3MHYE2M.js.map → chunk-L566FMDD.js.map} +0 -0
  178. /package/dist/{chunk-HQWJUHR4.js.map → chunk-M4QXG5JP.js.map} +0 -0
  179. /package/dist/{chunk-IFS3BRRL.js.map → chunk-MCJRHF7Z.js.map} +0 -0
  180. /package/dist/{chunk-JGRBHNK6.js.map → chunk-ME3WYPYK.js.map} +0 -0
  181. /package/dist/{chunk-QXSV7Z57.js.map → chunk-MXCIUKTQ.js.map} +0 -0
  182. /package/dist/{chunk-UBEAJFMW.js.map → chunk-O25SH2MA.js.map} +0 -0
  183. /package/dist/{chunk-ARDLCGBK.js.map → chunk-O2DLEAUP.js.map} +0 -0
  184. /package/dist/{chunk-WCRGSMLV.js.map → chunk-SCZABICW.js.map} +0 -0
  185. /package/dist/{chunk-LH46NYGR.js.map → chunk-TEEJ4GNY.js.map} +0 -0
  186. /package/dist/{chunk-O4AHF45C.js.map → chunk-VY6L74JQ.js.map} +0 -0
  187. /package/dist/{chunk-XZJM6EPC.js.map → chunk-YKEO6UHN.js.map} +0 -0
  188. /package/dist/{chunk-WWGD5YVW.js.map → chunk-YTY7TD7S.js.map} +0 -0
  189. /package/dist/{chunk-HMAPQV4C.js.map → chunk-ZWCYSAI5.js.map} +0 -0
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  backdropSxOf,
3
3
  variantStylesOf
4
- } from "./chunk-2WU52FLP.js";
4
+ } from "./chunk-ST7B54JN.js";
5
5
  import {
6
6
  mergedBackdropSlot,
7
- mergedPaperSlot
8
- } from "./chunk-5HW37NSW.js";
7
+ mergedPaperSlot,
8
+ mergedTransitionSlot
9
+ } from "./chunk-Z2JH5KW5.js";
9
10
  import {
10
11
  DIALOG_ACTIONS,
11
12
  DIALOG_BODY_PADDING_UNITS,
@@ -18,6 +19,9 @@ import {
18
19
  hasSpacingSlot,
19
20
  withDialogDefaults
20
21
  } from "./chunk-GYXUCS37.js";
22
+ import {
23
+ focusDialogOnEntered
24
+ } from "./chunk-LV7LSPBF.js";
21
25
  import {
22
26
  childTestId,
23
27
  resolveTestId,
@@ -65,7 +69,7 @@ function ModalDialog({
65
69
  dialogProps,
66
70
  children
67
71
  }) {
68
- const { PaperProps: callerPaper, BackdropProps: callerBackdrop, slotProps, ...rest } = dialogProps;
72
+ const { PaperProps: callerPaper, BackdropProps: callerBackdrop, TransitionProps: callerTransition, slotProps, ...rest } = dialogProps;
69
73
  return /* @__PURE__ */ jsx(
70
74
  MuiDialog,
71
75
  {
@@ -73,7 +77,8 @@ function ModalDialog({
73
77
  slotProps: {
74
78
  ...slotProps,
75
79
  paper: mergedPaperSlot(paperSx, testId, callerPaper, slotProps?.paper),
76
- backdrop: mergedBackdropSlot(backdropSx, callerBackdrop, slotProps?.backdrop)
80
+ backdrop: mergedBackdropSlot(backdropSx, callerBackdrop, slotProps?.backdrop),
81
+ transition: mergedTransitionSlot(focusDialogOnEntered, callerTransition, slotProps?.transition)
77
82
  },
78
83
  children
79
84
  }
@@ -86,7 +91,7 @@ function DrawerDialog({
86
91
  drawerProps,
87
92
  children
88
93
  }) {
89
- const { PaperProps: callerPaper, BackdropProps: callerBackdrop, slotProps, ...rest } = drawerProps;
94
+ const { PaperProps: callerPaper, BackdropProps: callerBackdrop, SlideProps: callerTransition, slotProps, ...rest } = drawerProps;
90
95
  return /* @__PURE__ */ jsx(
91
96
  Drawer,
92
97
  {
@@ -96,7 +101,8 @@ function DrawerDialog({
96
101
  slotProps: {
97
102
  ...slotProps,
98
103
  paper: mergedPaperSlot(paperSx, void 0, callerPaper, slotProps?.paper),
99
- backdrop: mergedBackdropSlot(backdropSx, callerBackdrop, slotProps?.backdrop)
104
+ backdrop: mergedBackdropSlot(backdropSx, callerBackdrop, slotProps?.backdrop),
105
+ transition: mergedTransitionSlot(focusDialogOnEntered, callerTransition, slotProps?.transition)
100
106
  },
101
107
  children
102
108
  }
@@ -297,4 +303,4 @@ export {
297
303
  DialogContent,
298
304
  DialogActions
299
305
  };
300
- //# sourceMappingURL=chunk-GAMLBJE6.js.map
306
+ //# sourceMappingURL=chunk-MQ277OLB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/Dialog/Dialog.tsx"],"sourcesContent":["import CloseIcon from '@mui/icons-material/Close';\nimport Backdrop from '@mui/material/Backdrop/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport MuiDialog, { type DialogProps as MuiDialogProps } from '@mui/material/Dialog/index.js';\nimport MuiDialogActions from '@mui/material/DialogActions/index.js';\nimport MuiDialogContent from '@mui/material/DialogContent/index.js';\nimport MuiDialogTitle from '@mui/material/DialogTitle/index.js';\nimport Drawer, { type DrawerProps } from '@mui/material/Drawer/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { focusDialogOnEntered } from './Dialog.focus';\nimport { hasSpacingSlot, withDialogDefaults } from './Dialog.helpers';\nimport {\n DIALOG_ACTIONS,\n DIALOG_BODY_PADDING_UNITS,\n DIALOG_CONTENT_PADDING_UNITS,\n DIALOG_HEADER_CHILDREN_PADDING_UNITS,\n DIALOG_TITLE,\n DIALOG_TITLED_BODY_PADDING_TOP_UNITS,\n} from './Dialog.metrics';\nimport { mergedBackdropSlot, mergedPaperSlot, mergedTransitionSlot } from './Dialog.slots';\nimport { backdropSxOf, variantStylesOf } from './Dialog.styles';\nimport { childTestId, resolveTestId, slotTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport type {\n DialogActionsProps,\n DialogContentProps,\n DialogHeaderProps,\n DialogProps,\n} from './Dialog.types';\n\n/**\n * The padding a dialog gives children that are not managing their own — and the\n * rule that takes it back when it turns out they are.\n *\n * `:has()` is doing what {@link hasSpacingSlot} cannot. A slot passed through a\n * COMPONENT (`<Body />` rendering a `DialogContent`) is invisible to any check\n * on element type: React does not know what a component renders until it has\n * rendered it, and by then the wrapper is already in the tree. The selector\n * asks the question one step later, of the DOM, where the answer exists.\n *\n * `display: contents` rather than `padding: 0`, because the padding is only\n * half of what a wrapper does. The other half is standing between the paper and\n * its children: MUI's `scroll=\"paper\"` makes the paper a flex column with\n * `overflow-y: auto`, so a `DialogContent` that is no longer its direct child\n * cannot be the thing that scrolls — the whole dialog scrolls instead and\n * carries the `DialogActions` off the bottom with it. An element with\n * `display: contents` generates no box at all: its children become the paper's\n * flex items, and its padding is never applied. Both halves, one declaration.\n *\n * A browser without `:has()` falls back to the padded box — the layout this\n * had before, not a broken one.\n */\nconst BODY_SX = {\n px: DIALOG_BODY_PADDING_UNITS.horizontal,\n pb: DIALOG_BODY_PADDING_UNITS.bottom,\n '&:has(> .MuiDialogContent-root), &:has(> .MuiDialogActions-root)': {\n display: 'contents',\n },\n} as const;\n\n/**\n * The dialog body. Consumers that pass raw children (no <DialogContent>) used\n * to render them flush against the paper edges — give them comfortable default\n * padding; <DialogContent>/<DialogActions> users keep managing their own\n * spacing.\n */\nfunction bodyOf(children: React.ReactNode, hasTitle: boolean): React.ReactNode {\n // Read lazily: both slots are declared below this function.\n if (hasSpacingSlot(children, [DialogContent, DialogActions])) return children;\n const pt = hasTitle\n ? DIALOG_BODY_PADDING_UNITS.topUnderTitle\n : DIALOG_BODY_PADDING_UNITS.top;\n return <Box sx={{ ...BODY_SX, pt }}>{children}</Box>;\n}\n\n/**\n * MUI's `onClose` for either renderer: a `persistent` dialog swallows the\n * backdrop press and Escape, and the caller's `onClose` is called with no\n * arguments, as `Dialog.base.ts` promises. The drawer used to get the caller's\n * raw `onClose` — so it closed when `persistent` said it must not, and was\n * handed MUI's `(event, reason)` (FUT-2673).\n */\nfunction closeHandlerOf(persistent: boolean, onClose: (() => void) | undefined) {\n return (_event: object, reason: 'backdropClick' | 'escapeKeyDown') => {\n if (persistent && (reason === 'backdropClick' || reason === 'escapeKeyDown')) {\n return;\n }\n onClose?.();\n };\n}\n\n/** The looks the Dialog lays under a caller's paper and backdrop props. */\ninterface DialogLooks {\n paperSx: SxProps<Theme>;\n backdropSx: SxProps<Theme>;\n testId: string | undefined;\n}\n\n/** What either renderer below takes: the looks, and the dialog's own children. */\ntype RendererProps = DialogLooks & { children: React.ReactNode };\n\n/**\n * Every variant but the drawer: MUI's `Dialog`. The scrim reaches MUI through\n * `slotProps.backdrop`, not the deprecated `BackdropProps`, and a caller's\n * backdrop props from either spelling merge over it rather than replacing it\n * (FUT-2672) — as their paper props merge over the variant's look (FUT-2613).\n * `slotProps.transition` gives initial focus to the paper (FUT-2696, see\n * `Dialog.focus.ts` and `Dialog.md`) ahead of a caller's own `onEntered`.\n */\nfunction ModalDialog({\n paperSx,\n backdropSx,\n testId,\n dialogProps,\n children,\n}: RendererProps & { dialogProps: MuiDialogProps }) {\n const { PaperProps: callerPaper, BackdropProps: callerBackdrop, TransitionProps: callerTransition, slotProps, ...rest } = dialogProps;\n return (\n <MuiDialog\n {...rest}\n slotProps={{\n ...slotProps,\n paper: mergedPaperSlot(paperSx, testId, callerPaper, slotProps?.paper),\n backdrop: mergedBackdropSlot(backdropSx, callerBackdrop, slotProps?.backdrop),\n transition: mergedTransitionSlot(focusDialogOnEntered, callerTransition, slotProps?.transition),\n }}\n >\n {children}\n </MuiDialog>\n );\n}\n\n/**\n * The drawer variant: MUI's `Drawer`, with the variant's look on the Drawer's\n * OWN paper — on an inner Box it left the paper 0px wide and clipped the panel —\n * and a caller's paper props merged over it rather than replacing it. The\n * test id stays on the Drawer root, so the paper carries none of its own.\n *\n * The scrim rides the drawer's backdrop exactly as it rides the dialog's, so\n * `glass` blurs it here too; the paper does not frost (FUT-2673). MUI's\n * `Drawer` does not merge `BackdropProps` into `slotProps.backdrop` — it takes\n * one or the other — so both are folded into the one slot here.\n * `slotProps.transition` gives initial focus the same way `ModalDialog` does\n * (FUT-2696, see `Dialog.focus.ts` and `Dialog.md` for why the drawer's paper\n * differs from the modal's paper here and needed the fix less).\n */\nfunction DrawerDialog({\n paperSx,\n backdropSx,\n testId,\n drawerProps,\n children,\n}: RendererProps & { drawerProps: DrawerProps }) {\n const { PaperProps: callerPaper, BackdropProps: callerBackdrop, SlideProps: callerTransition, slotProps, ...rest } = drawerProps;\n return (\n <Drawer\n anchor=\"right\"\n data-testid={testId}\n {...rest}\n slotProps={{\n ...slotProps,\n paper: mergedPaperSlot(paperSx, undefined, callerPaper, slotProps?.paper),\n backdrop: mergedBackdropSlot(backdropSx, callerBackdrop, slotProps?.backdrop),\n transition: mergedTransitionSlot(focusDialogOnEntered, callerTransition, slotProps?.transition),\n }}\n >\n {children}\n </Drawer>\n );\n}\n\nexport const Dialog: React.FC<DialogProps> = (rawProps) => {\n const {\n children,\n variant,\n size,\n title,\n description,\n showCloseButton,\n backdrop,\n persistent,\n glass,\n gradient,\n glow,\n pulse,\n borderRadius,\n onClose,\n open,\n ...others\n } = withDialogDefaults(rawProps);\n const theme = useTheme();\n // Every spelling of the test id the shared contract allows, mapped to the one\n // the DOM reads, and stripped from what is spread — `testID` is React\n // Native's name for it and is not a DOM attribute. The native `Dialog` does\n // the same in reverse.\n const testId = resolveTestId(others, 'dialog');\n const props = withoutTestIdProps(others);\n const looks: DialogLooks = {\n paperSx: variantStylesOf(theme, { variant, size, borderRadius, glass, gradient, glow, pulse }),\n backdropSx: backdropSxOf(theme, glass),\n testId,\n };\n const handleClose = closeHandlerOf(persistent, onClose);\n\n const header = title ? (\n <DialogHeader\n title={title}\n subtitle={description}\n showCloseButton={showCloseButton}\n onClose={onClose}\n dataTestId={testId}\n />\n ) : null;\n const body = bodyOf(children, Boolean(title));\n\n if (variant === 'drawer') {\n return (\n <DrawerDialog {...looks} drawerProps={{ ...props, open, onClose: handleClose }}>\n {header}\n {body}\n </DrawerDialog>\n );\n }\n\n return (\n <ModalDialog\n {...looks}\n dialogProps={{\n open,\n onClose: handleClose,\n fullScreen: variant === 'fullscreen',\n BackdropComponent: backdrop ? Backdrop : undefined,\n ...props,\n }}\n >\n {header}\n {body}\n </ModalDialog>\n );\n};\n\nexport const DialogHeader: React.FC<DialogHeaderProps> = ({\n children,\n title,\n subtitle,\n showCloseButton = true,\n onClose,\n ...others\n}) => {\n const props = withoutTestIdProps(others);\n\n if (children) {\n return (\n <Box\n data-testid={slotTestId(others, 'header', 'dialog')}\n sx={{\n p: DIALOG_HEADER_CHILDREN_PADDING_UNITS,\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n {children}\n </Box>\n );\n }\n\n return (\n <MuiDialogTitle\n data-testid={slotTestId(others, 'title', 'dialog')}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n pb: subtitle\n ? DIALOG_TITLE.paddingBottomUnits.withSubtitle\n : DIALOG_TITLE.paddingBottomUnits.plain,\n }}\n {...props}\n >\n <Box>\n <Typography variant=\"h6\" component=\"div\">\n {title}\n </Typography>\n {subtitle && (\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n sx={{ mt: DIALOG_TITLE.subtitleGapUnits }}\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n {showCloseButton && onClose && (\n <IconButton\n aria-label=\"close\"\n onClick={onClose}\n data-testid={childTestId(others, 'close', 'dialog')}\n sx={{\n color: 'text.secondary',\n '&:hover': {\n backgroundColor: 'action.hover',\n },\n }}\n >\n <CloseIcon />\n </IconButton>\n )}\n </MuiDialogTitle>\n );\n};\n\n/**\n * Top padding for a body that sits directly under the title.\n *\n * MUI zeroes it there (`.MuiDialogTitle-root + &` on a non-`dividers` content),\n * assuming the title's own bottom padding is the whole gap. That assumption\n * breaks for a body opening with an outlined field: a filled field floats its\n * label ABOVE the input's border box, and `DialogContent` is `overflow-y: auto`\n * — a clipping box — so the label gets sliced in half (FUT-544: \"Tipo\" in the\n * \"Novo insumo\" dialog).\n *\n * Reserve the overhang rather than restore the full 24px: the title already\n * contributes its bottom padding, so a shrunk label's `translate(…, -9px)` is\n * all that is missing. 12px clears it and leaves the gap visually tight.\n */\nconst TITLED_BODY_PADDING_TOP = DIALOG_TITLED_BODY_PADDING_TOP_UNITS;\n\n/**\n * `.MuiDialogTitle-root + &` is `(0,2,0)`-specific and a plain `sx` entry is\n * `(0,1,0)`, so the padding above only survives the cascade by naming the class\n * again — `(0,3,0)`. Scoped to the title-following case so an untitled dialog\n * keeps MUI's roomier default.\n */\nconst TITLED_BODY_SELECTOR = '.MuiDialogTitle-root + &.MuiDialogContent-root';\n\nexport const DialogContent: React.FC<DialogContentProps> = ({\n children,\n dividers = false,\n dense = false,\n ...others\n}) => (\n <MuiDialogContent\n data-testid={slotTestId(others, 'content', 'dialog')}\n dividers={dividers}\n sx={{\n padding: dense ? DIALOG_CONTENT_PADDING_UNITS.dense : DIALOG_CONTENT_PADDING_UNITS.normal,\n [TITLED_BODY_SELECTOR]: { paddingTop: TITLED_BODY_PADDING_TOP },\n '&.MuiDialogContent-dividers': {\n borderTop: dividers ? '1px solid' : 'none',\n borderBottom: dividers ? '1px solid' : 'none',\n borderColor: 'divider',\n },\n }}\n {...withoutTestIdProps(others)}\n >\n {children}\n </MuiDialogContent>\n );\n\nexport const DialogActions: React.FC<DialogActionsProps> = ({\n children,\n alignment = 'right',\n spacing = DIALOG_ACTIONS.defaultSpacingUnits,\n ...others\n}) => {\n const getJustifyContent = () => {\n switch (alignment) {\n case 'left': return 'flex-start';\n case 'center': return 'center';\n case 'right': return 'flex-end';\n case 'space-between': return 'space-between';\n default: return 'flex-end';\n }\n };\n\n return (\n <MuiDialogActions\n data-testid={slotTestId(others, 'actions', 'dialog')}\n sx={{\n justifyContent: getJustifyContent(),\n gap: spacing,\n p: DIALOG_ACTIONS.paddingUnits,\n }}\n {...withoutTestIdProps(others)}\n >\n {children}\n </MuiDialogActions>\n );\n};"],"mappings":"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","names":[]}
@@ -1,3 +1,7 @@
1
+ import {
2
+ useSheetDrag,
3
+ useSheetOpen
4
+ } from "./chunk-LYVTJLCF.js";
1
5
  import {
2
6
  SheetBody
3
7
  } from "./chunk-3U3H3BZM.js";
@@ -7,10 +11,6 @@ import {
7
11
  import {
8
12
  SheetOverlay
9
13
  } from "./chunk-FPVYD7BO.js";
10
- import {
11
- useSheetDrag,
12
- useSheetOpen
13
- } from "./chunk-LYVTJLCF.js";
14
14
  import {
15
15
  DEFAULT_DRAG_RESISTANCE,
16
16
  DEFAULT_VELOCITY_THRESHOLD,
@@ -124,4 +124,4 @@ var Sheet = (props) => {
124
124
  export {
125
125
  Sheet
126
126
  };
127
- //# sourceMappingURL=chunk-QXSV7Z57.js.map
127
+ //# sourceMappingURL=chunk-MXCIUKTQ.js.map
@@ -8,7 +8,14 @@ var scrollHeight = (theme, containerHeight) => {
8
8
  const box = containerHeight || 400;
9
9
  return typeof box === "number" ? rem(theme, box) : box;
10
10
  };
11
- var scrollerStyle = (theme, p) => p.virtualScrolling ? { height: scrollHeight(theme, p.containerHeight), overflow: "auto" } : void 0;
11
+ var scrollerStyle = (theme, p) => p.virtualScrolling || p.containerHeight ? { height: scrollHeight(theme, p.containerHeight), overflow: "auto" } : void 0;
12
+ var scrollerRadiusStyle = (theme, stickyHeader) => stickyHeader ? { borderRadius: theme.spacing(1) } : void 0;
13
+ var containerStyle = (theme, p) => {
14
+ const scroller = scrollerStyle(theme, p);
15
+ const radius = scrollerRadiusStyle(theme, p.stickyHeader);
16
+ return scroller || radius ? { ...scroller, ...radius } : void 0;
17
+ };
18
+ var headerRefFor = (windowHeight, headRef) => windowHeight ? headRef : void 0;
12
19
  var virtualHeight = (p) => p.virtualScrolling && typeof p.containerHeight === "number" && p.containerHeight > 0 && tableRowHeight(p.rowHeight) > 0 ? p.containerHeight : void 0;
13
20
  var TABLE_DEFAULTS = {
14
21
  variant: "default",
@@ -78,9 +85,12 @@ var tableDomProps = (props) => Object.fromEntries(Object.entries(props).filter((
78
85
  export {
79
86
  tableRowHeight,
80
87
  scrollerStyle,
88
+ scrollerRadiusStyle,
89
+ containerStyle,
90
+ headerRefFor,
81
91
  virtualHeight,
82
92
  TABLE_DEFAULTS,
83
93
  definedProps,
84
94
  tableDomProps
85
95
  };
86
- //# sourceMappingURL=chunk-XS3REOPN.js.map
96
+ //# sourceMappingURL=chunk-NHEWST3N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Table/Table.helpers.ts"],"sourcesContent":["import type { TableProps as MuiTableProps } from '@mui/material/Table/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport type React from 'react';\n\nimport { rem } from '../../../tokens/relative';\n\nimport type { TableProps } from './Table.types';\n\n/**\n * A virtualised row's height in design px: the caller's `rowHeight`, else 52.\n * Resolved here rather than in {@link TABLE_DEFAULTS} so the one number is read\n * where it is drawn (`rem`) and where the window is positioned with it (`remPx`).\n */\nexport const tableRowHeight = (rowHeight: number | undefined): number => rowHeight ?? 52;\n\n/** The scroll box's height: a number is design px, 400 unless the caller says otherwise. */\nconst scrollHeight = (theme: Theme, containerHeight: number | string | undefined): string => {\n const box = containerHeight || 400;\n return typeof box === 'number' ? rem(theme, box) : box;\n};\n\n/**\n * The table's one scroll container (FUT-2658): `containerHeight` tall\n * whenever it is set, or 400 when `virtualScrolling` is on and it is not,\n * holding the header and the body. `containerHeight` sizes the scroller with\n * or without `virtualScrolling` (FUT-2677) — no consumer relies on the old\n * virtual-only gate, and `stickyHeader` needs this box to stick inside.\n * Inline, so the height it was given reads back off the element. A\n * `containerHeight` of 0 counts as unset: a zero-height scroller shows nothing.\n */\nexport const scrollerStyle = (theme: Theme, p: TableProps): React.CSSProperties | undefined =>\n p.virtualScrolling || p.containerHeight\n ? { height: scrollHeight(theme, p.containerHeight), overflow: 'auto' }\n : undefined;\n\n/**\n * With `stickyHeader`, the scroller takes over the rounded clip the `<table>`\n * gives up (`tableStyles`, FUT-2677) — the caller's container owns it on the\n * basic (children) path, and the loading/empty shells get it too, so their\n * corners do not change between states.\n */\nexport const scrollerRadiusStyle = (\n theme: Theme,\n stickyHeader: boolean | undefined,\n): React.CSSProperties | undefined => (stickyHeader ? { borderRadius: theme.spacing(1) } : undefined);\n\n/** `scrollerStyle` and, with `stickyHeader`, the rounded clip it takes over. */\nexport const containerStyle = (theme: Theme, p: TableProps): React.CSSProperties | undefined => {\n const scroller = scrollerStyle(theme, p);\n const radius = scrollerRadiusStyle(theme, p.stickyHeader);\n return scroller || radius ? { ...scroller, ...radius } : undefined;\n};\n\n/**\n * Only a virtualised table needs its header measured — a plain one never\n * reads `scroll.headerPx`, so it gets no `ResizeObserver` either (FUT-2678).\n */\nexport const headerRefFor = (\n windowHeight: number | undefined,\n headRef: React.RefObject<globalThis.HTMLTableSectionElement | null>,\n): React.RefObject<globalThis.HTMLTableSectionElement | null> | undefined =>\n windowHeight ? headRef : undefined;\n\n/**\n * The window's height in design px when the body is virtualised — only a\n * numeric `containerHeight` virtualises; a string sizes the scroller alone.\n */\nexport const virtualHeight = (p: TableProps): number | undefined =>\n p.virtualScrolling && typeof p.containerHeight === 'number' && p.containerHeight > 0 &&\n tableRowHeight(p.rowHeight) > 0\n ? p.containerHeight\n : undefined;\n\nexport const TABLE_DEFAULTS: Partial<TableProps> = {\n variant: 'default',\n stripeColor: 'neutral',\n glow: false,\n pulse: false,\n hoverable: false,\n loading: false,\n density: 'normal',\n stickyHeader: false,\n selectable: false,\n selectedRows: [],\n sortable: false,\n virtualScrolling: false,\n overscan: 5,\n responsive: false,\n showColumnToggle: true,\n};\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}` still\n// falls back to the default as a destructuring default would. Eighteen separate\n// destructuring defaults were most of this component's branch count.\nexport const definedProps = (props: TableProps): Partial<TableProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<TableProps>;\n\n// The container + styled table + optional header, shared by the loading, empty\n// and populated renders.\n\n/** A key `Table` declares on top of MUI's own `TableProps`. */\ntype TableOwnKey = Exclude<keyof TableProps, keyof MuiTableProps>;\n\n/**\n * Every key {@link TableOwnKey} names. None is an HTML attribute: each is read\n * by the table and drawn by its parts, so none may reach the `<table>`\n * (FUT-2658). A `Record` over the key union makes the list exhaustive — a prop\n * added to `Table.types.ts` does not compile until it is named here.\n */\nconst TABLE_OWN_KEYS: Record<TableOwnKey, true> = {\n emptyText: true,\n variant: true,\n stripeColor: true,\n glow: true,\n pulse: true,\n hoverable: true,\n loading: true,\n onRowClick: true,\n onRowFocus: true,\n onRowBlur: true,\n density: true,\n selectable: true,\n selectedRows: true,\n onSelectionChange: true,\n rowKeyExtractor: true,\n sortable: true,\n sortConfig: true,\n onSortChange: true,\n filterable: true,\n filterConfig: true,\n onFilterChange: true,\n columns: true,\n data: true,\n virtualScrolling: true,\n rowHeight: true,\n overscan: true,\n responsive: true,\n columnPriorities: true,\n responsiveBreakpoints: true,\n showColumnToggle: true,\n containerHeight: true,\n loadingComponent: true,\n emptyStateComponent: true,\n keyboardNavigation: true,\n renderRow: true,\n renderCell: true,\n draggableRows: true,\n onRowsReorder: true,\n fixedColumns: true,\n rowStyleConfig: true,\n};\n\nconst NOT_FORWARDED = new Set<string>([...Object.keys(TABLE_OWN_KEYS), 'children']);\n\n/**\n * What the caller passed that is MUI's or the DOM's — `className`, `id`,\n * `style`, `aria-*`, `data-*`, DOM handlers, `sx`, `size`, `padding`,\n * `component` — for `MuiTable` to spread onto the `<table>`. `children` is\n * placed by the table itself.\n */\nexport const tableDomProps = (props: TableProps): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => !NOT_FORWARDED.has(key)));\n"],"mappings":";;;;;AAaO,IAAM,iBAAiB,CAAC,cAA0C,aAAa;AAGtF,IAAM,eAAe,CAAC,OAAc,oBAAyD;AAC3F,QAAM,MAAM,mBAAmB;AAC/B,SAAO,OAAO,QAAQ,WAAW,IAAI,OAAO,GAAG,IAAI;AACrD;AAWO,IAAM,gBAAgB,CAAC,OAAc,MAC1C,EAAE,oBAAoB,EAAE,kBACpB,EAAE,QAAQ,aAAa,OAAO,EAAE,eAAe,GAAG,UAAU,OAAO,IACnE;AAQC,IAAM,sBAAsB,CACjC,OACA,iBACqC,eAAe,EAAE,cAAc,MAAM,QAAQ,CAAC,EAAE,IAAI;AAGpF,IAAM,iBAAiB,CAAC,OAAc,MAAmD;AAC9F,QAAM,WAAW,cAAc,OAAO,CAAC;AACvC,QAAM,SAAS,oBAAoB,OAAO,EAAE,YAAY;AACxD,SAAO,YAAY,SAAS,EAAE,GAAG,UAAU,GAAG,OAAO,IAAI;AAC3D;AAMO,IAAM,eAAe,CAC1B,cACA,YAEA,eAAe,UAAU;AAMpB,IAAM,gBAAgB,CAAC,MAC5B,EAAE,oBAAoB,OAAO,EAAE,oBAAoB,YAAY,EAAE,kBAAkB,KACnF,eAAe,EAAE,SAAS,IAAI,IAC1B,EAAE,kBACF;AAEC,IAAM,iBAAsC;AAAA,EACjD,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc,CAAC;AAAA,EACf,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,kBAAkB;AACpB;AAKO,IAAM,eAAe,CAAC,UAC3B,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAcF,IAAM,iBAA4C;AAAA,EAChD,WAAW;AAAA,EACX,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAClB;AAEA,IAAM,gBAAgB,oBAAI,IAAY,CAAC,GAAG,OAAO,KAAK,cAAc,GAAG,UAAU,CAAC;AAQ3E,IAAM,gBAAgB,CAAC,UAC5B,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC;","names":[]}
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  DeleteViewDialog
3
- } from "./chunk-P22W4N5K.js";
3
+ } from "./chunk-37USSARD.js";
4
4
  import {
5
5
  DataViewsGrid
6
- } from "./chunk-5WT4YWXC.js";
6
+ } from "./chunk-IRD45DRW.js";
7
7
  import {
8
8
  viewStateKey
9
9
  } from "./chunk-ZOLAYP2D.js";
10
10
  import {
11
11
  ViewDialogs,
12
12
  ViewMutationErrorAlert
13
- } from "./chunk-ARDLCGBK.js";
13
+ } from "./chunk-O2DLEAUP.js";
14
14
  import {
15
15
  useSavedViewsController
16
- } from "./chunk-HR7YTBR7.js";
16
+ } from "./chunk-IASDP44E.js";
17
17
 
18
18
  // src/components/data-display/DataViews/DataViewsTableBase.tsx
19
19
  import { useEffect, useMemo, useRef, useState } from "react";
@@ -178,4 +178,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
178
178
  export {
179
179
  DataViewsTableBase
180
180
  };
181
- //# sourceMappingURL=chunk-UBEAJFMW.js.map
181
+ //# sourceMappingURL=chunk-O25SH2MA.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  SaveViewModal
3
- } from "./chunk-SA65SDOY.js";
3
+ } from "./chunk-A2TANYNR.js";
4
4
  import {
5
5
  ManageViewsDialog
6
- } from "./chunk-WWGD5YVW.js";
6
+ } from "./chunk-YTY7TD7S.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-ARDLCGBK.js.map
124
+ //# sourceMappingURL=chunk-O2DLEAUP.js.map
@@ -5,10 +5,27 @@ import {
5
5
  // src/components/data-display/Table/Table.hooks.ts
6
6
  import { useTheme } from "@mui/material/styles/index.js";
7
7
  import useMediaQuery from "@mui/material/useMediaQuery/index.js";
8
- import { useCallback, useEffect, useMemo, useState } from "react";
8
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useState } from "react";
9
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
9
10
  var useVirtualScrolling = (data, rowHeight, containerHeight, overscan = 5, headerRef) => {
10
11
  const theme = useTheme();
11
12
  const [scroll, setScroll] = useState({ scrollTop: 0, headerPx: 0 });
13
+ const measureHeader = useCallback(() => {
14
+ setScroll((prev) => {
15
+ const headerPx = headerRef?.current?.offsetHeight ?? 0;
16
+ return headerPx === prev.headerPx ? prev : { ...prev, headerPx };
17
+ });
18
+ }, [headerRef]);
19
+ useIsomorphicLayoutEffect(() => {
20
+ measureHeader();
21
+ }, [measureHeader]);
22
+ useEffect(() => {
23
+ const header = headerRef?.current;
24
+ if (!header || typeof ResizeObserver === "undefined") return void 0;
25
+ const observer = new ResizeObserver(() => measureHeader());
26
+ observer.observe(header);
27
+ return () => observer.disconnect();
28
+ }, [headerRef, measureHeader]);
12
29
  const visibleItems = useMemo(() => {
13
30
  const pitch = remPx(theme, rowHeight);
14
31
  const bodyScrollTop = Math.max(0, scroll.scrollTop - scroll.headerPx);
@@ -118,4 +135,4 @@ export {
118
135
  useVirtualScrolling,
119
136
  useTableSelection
120
137
  };
121
- //# sourceMappingURL=chunk-LH7KMYHC.js.map
138
+ //# sourceMappingURL=chunk-RZSMRBOX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Table/Table.hooks.ts"],"sourcesContent":["import { useTheme } from '@mui/material/styles/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';\n\n// A server render has no layout to measure, and React warns about\n// `useLayoutEffect` there; the effect below only measures, so on the server\n// it can be a plain (never-run) effect.\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nimport { remPx } from '../../../tokens/relative';\n\nimport type { ColumnConfig, TableProps, VirtualWindow } from './Table.types';\n\n/**\n * The virtual window. `rowHeight` and `containerHeight` are design px: the\n * window is computed in the px `scrollTop` is measured in (`remPx`), and what it\n * hands back to draw with stays in design px (`offsetY`, `trailingPx` — the\n * spacer rows either side of the window), so the rows and the window share one\n * pitch at any type scale.\n *\n * The scroller holds the header as well as the body, so the `<tbody>` starts\n * the header's height into it. That height is measured once after mount, and\n * again from a `ResizeObserver` on `headerRef` whenever it changes —\n * `handleScroll` also measures it on every scroll, so a scroll still carries\n * the latest height, but nothing depends on that any more (FUT-2678: a\n * resize with no scroll event used to leave the window off until the next\n * one). The window subtracts the measured height before dividing by the pitch\n * (FUT-2658).\n */\nexport const useVirtualScrolling = (\n data: Record<string, unknown>[],\n rowHeight: number,\n containerHeight: number,\n overscan: number = 5,\n headerRef?: React.RefObject<HTMLElement | null>,\n) => {\n const theme = useTheme();\n // Both live px, as the browser measures them.\n const [scroll, setScroll] = useState({ scrollTop: 0, headerPx: 0 });\n\n const measureHeader = useCallback(() => {\n setScroll((prev) => {\n const headerPx = headerRef?.current?.offsetHeight ?? 0;\n return headerPx === prev.headerPx ? prev : { ...prev, headerPx };\n });\n }, [headerRef]);\n\n // Once after mount, so a header measured before any scroll or resize is\n // still right the first time the window is drawn.\n useIsomorphicLayoutEffect(() => {\n measureHeader();\n }, [measureHeader]);\n\n // Then on every change the header makes on its own: a responsive column\n // hidden or shown, a label wrapping at a new width, a web font loading, a\n // `density` change. Where `ResizeObserver` is undefined, only the mount\n // measurement above and `handleScroll` below still apply.\n useEffect(() => {\n const header = headerRef?.current;\n if (!header || typeof ResizeObserver === 'undefined') return undefined;\n\n const observer = new ResizeObserver(() => measureHeader());\n observer.observe(header);\n return () => observer.disconnect();\n }, [headerRef, measureHeader]);\n\n const visibleItems = useMemo((): VirtualWindow => {\n const pitch = remPx(theme, rowHeight);\n const bodyScrollTop = Math.max(0, scroll.scrollTop - scroll.headerPx);\n const startIndex = Math.floor(bodyScrollTop / pitch);\n const endIndex = Math.min(\n data.length,\n Math.ceil((bodyScrollTop + remPx(theme, containerHeight)) / pitch)\n );\n \n const start = Math.max(0, startIndex - overscan);\n const end = Math.min(data.length, endIndex + overscan);\n \n return {\n startIndex: start,\n endIndex: end,\n items: data.slice(start, end),\n offsetY: start * rowHeight,\n trailingPx: (data.length - end) * rowHeight,\n };\n }, [data, rowHeight, containerHeight, scroll, overscan, theme]);\n\n const handleScroll = useCallback((e: React.UIEvent<HTMLDivElement>) => {\n setScroll({\n scrollTop: e.currentTarget.scrollTop,\n headerPx: headerRef?.current?.offsetHeight ?? 0,\n });\n }, [headerRef]);\n\n return { visibleItems, handleScroll };\n};\n\n// Responsive Hook\n\nconst useResponsive = (\n columns: ColumnConfig[],\n columnPriorities?: number[]\n) => {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const isTablet = useMediaQuery(theme.breakpoints.down('lg'));\n \n const [hiddenColumns, setHiddenColumns] = useState<number[]>([]);\n const [columnMenuAnchor, setColumnMenuAnchor] = useState<null | HTMLElement>(null);\n\n useEffect(() => {\n if (!columnPriorities) return;\n \n let columnsToHide: number[] = [];\n \n if (isMobile) {\n // Hide lowest priority columns on mobile\n columnsToHide = columnPriorities\n .map((priority, index) => ({ priority, index }))\n .sort((a, b) => b.priority - a.priority)\n .slice(0, Math.floor(columns.length / 2))\n .map(item => item.index);\n } else if (isTablet) {\n // Hide some columns on tablet\n columnsToHide = columnPriorities\n .map((priority, index) => ({ priority, index }))\n .sort((a, b) => b.priority - a.priority)\n .slice(0, Math.floor(columns.length / 3))\n .map(item => item.index);\n }\n \n setHiddenColumns(columnsToHide);\n }, [isMobile, isTablet, columnPriorities, columns.length]);\n\n const visibleColumns = columns.filter((_, index) => !hiddenColumns.includes(index));\n\n return {\n visibleColumns,\n hiddenColumns,\n isMobile,\n columnMenuAnchor,\n setColumnMenuAnchor,\n setHiddenColumns,\n };\n};\n\n// Enhanced Table Header Component\n// Visible/hidden column split for responsive mode, plus row selection.\nexport const useTableSelection = ({\n columns,\n data,\n responsive,\n columnPriorities,\n selectedRows,\n rowKeyExtractor,\n onSelectionChange,\n}: {\n columns?: ColumnConfig[];\n data: TableProps['data'];\n responsive?: boolean;\n columnPriorities?: number[];\n selectedRows: (string | number)[];\n rowKeyExtractor?: (row: Record<string, unknown>, index: number) => string | number;\n onSelectionChange?: TableProps['onSelectionChange'];\n}) => {\n \n // Use responsive hook if responsive mode is enabled\n const {\n visibleColumns,\n hiddenColumns,\n isMobile,\n columnMenuAnchor,\n setColumnMenuAnchor,\n setHiddenColumns,\n } = useResponsive(\n columns || [],\n responsive ? columnPriorities : undefined\n );\n\n // Handle selection changes\n const handleSelectionChange = useCallback((rowKey: string | number, selected: boolean) => {\n if (!onSelectionChange) return;\n \n let newSelection: (string | number)[];\n if (selected) {\n newSelection = [...selectedRows, rowKey];\n } else {\n newSelection = selectedRows.filter(key => key !== rowKey);\n }\n onSelectionChange(newSelection);\n }, [selectedRows, onSelectionChange]);\n\n const handleSelectAll = useCallback((selected: boolean) => {\n if (!onSelectionChange || !data) return;\n \n if (selected) {\n const allKeys = data.map((rowData, index) => \n rowKeyExtractor ? rowKeyExtractor(rowData, index) : (rowData.id as string | number) || index\n );\n onSelectionChange(allKeys);\n } else {\n onSelectionChange([]);\n }\n }, [data, onSelectionChange, rowKeyExtractor]);\n\n // Loading state\n\n return {\n visibleColumns,\n hiddenColumns,\n isMobile,\n columnMenuAnchor,\n setColumnMenuAnchor,\n setHiddenColumns,\n handleSelectionChange,\n handleSelectAll,\n };\n};\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  FleetCanvas
3
- } from "./chunk-ESCF5VMQ.js";
3
+ } from "./chunk-DRSY37PB.js";
4
4
  import {
5
5
  FleetRoster
6
- } from "./chunk-SAOCDKNK.js";
6
+ } from "./chunk-5JCGBCFJ.js";
7
7
  import {
8
8
  rem
9
9
  } from "./chunk-YKCAJ2TN.js";
@@ -79,4 +79,4 @@ function FleetBody({
79
79
  export {
80
80
  FleetBody
81
81
  };
82
- //# sourceMappingURL=chunk-WCRGSMLV.js.map
82
+ //# sourceMappingURL=chunk-SCZABICW.js.map
@@ -94,6 +94,7 @@ function defaultVariantStyles(theme, opts) {
94
94
  border: opts.glass ? `${DIALOG_BORDER_WIDTH}px solid ${alpha(theme.palette.primary.main, DIALOG_GLASS.borderAlpha)}` : "none"
95
95
  };
96
96
  }
97
+ var NO_FOCUS_OUTLINE = { outline: 0 };
97
98
  function variantStylesOf(theme, opts) {
98
99
  const decorations = {
99
100
  ...glowStylesOf(theme, opts.glow),
@@ -104,6 +105,7 @@ function variantStylesOf(theme, opts) {
104
105
  return {
105
106
  ...baseStylesOf(theme, opts),
106
107
  ...decorations,
108
+ ...NO_FOCUS_OUTLINE,
107
109
  backgroundColor: alpha(theme.palette.background.paper, DIALOG_GLASS.backgroundAlpha),
108
110
  backdropFilter: `blur(${rem(theme, DIALOG_GLASS.blurPx)})`,
109
111
  border: `${DIALOG_BORDER_WIDTH}px solid ${alpha(theme.palette.primary.main, DIALOG_GLASS.borderAlpha)}`,
@@ -118,7 +120,8 @@ function variantStylesOf(theme, opts) {
118
120
  ...dynamicViewportHeight("height"),
119
121
  maxWidth: "none",
120
122
  maxHeight: "none",
121
- ...decorations
123
+ ...decorations,
124
+ ...NO_FOCUS_OUTLINE
122
125
  };
123
126
  case "drawer": {
124
127
  const radius = borderRadiusOf(theme, opts.borderRadius);
@@ -134,14 +137,16 @@ function variantStylesOf(theme, opts) {
134
137
  maxWidth: "100%",
135
138
  ...dynamicViewportHeight("height"),
136
139
  maxHeight: "none",
137
- ...decorations
140
+ ...decorations,
141
+ ...NO_FOCUS_OUTLINE
138
142
  };
139
143
  }
140
144
  default:
141
145
  return {
142
146
  ...baseStylesOf(theme, opts),
143
147
  ...decorations,
144
- ...defaultVariantStyles(theme, opts)
148
+ ...defaultVariantStyles(theme, opts),
149
+ ...NO_FOCUS_OUTLINE
145
150
  };
146
151
  }
147
152
  }
@@ -156,4 +161,4 @@ export {
156
161
  variantStylesOf,
157
162
  backdropSxOf
158
163
  };
159
- //# sourceMappingURL=chunk-2WU52FLP.js.map
164
+ //# sourceMappingURL=chunk-ST7B54JN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/Dialog/Dialog.styles.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport { alpha, keyframes } from '@mui/material/styles/index.js';\n\nimport type { DialogBorderRadius, DialogSize, DialogVariant } from './Dialog.base';\nimport {\n DIALOG_BACKDROP,\n DIALOG_BORDER_WIDTH,\n DIALOG_GLASS,\n DIALOG_GLOW,\n DIALOG_GRADIENT,\n DIALOG_MARGIN_UNITS,\n DIALOG_MAX_WIDTH,\n DIALOG_PULSE,\n DIALOG_RADIUS_UNITS,\n DIALOG_WIDTH_PERCENT,\n} from './Dialog.metrics';\nimport { scrim, shadowInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\nimport { dynamicViewportHeight } from '../../../utils/viewport';\n\n/**\n * Paper/backdrop styling for the Dialog component (FUT-181 gate cleanup):\n * pure helpers so `Dialog.tsx` stays within the size/complexity budget.\n *\n * Every number comes from `Dialog.metrics.ts`, which the native renderer reads\n * too — so a paper cannot be 800px wide on one side and 780 on the other.\n */\n\n// Define pulse animation — a function of the theme so the ring's spread follows the type scale.\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, DIALOG_PULSE.spread)} currentColor;\n opacity: 0;\n }\n 100% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 0;\n }\n`;\n\n/** Style toggles that shape the dialog paper (extracted so each fn stays small). */\ninterface VariantStyleOptions {\n variant: DialogVariant;\n size: DialogSize;\n borderRadius: DialogBorderRadius;\n glass: boolean;\n gradient: boolean;\n glow: boolean;\n pulse: boolean;\n}\n\nfunction borderRadiusOf(theme: Theme, borderRadius: VariantStyleOptions['borderRadius']) {\n const units = DIALOG_RADIUS_UNITS[borderRadius] ?? DIALOG_RADIUS_UNITS.lg;\n // `none` is a bare 0 rather than `spacing(0)`, as this has always written it.\n return units === 0 ? '0' : theme.spacing(units);\n}\n\nfunction maxWidthOf(theme: Theme, size: VariantStyleOptions['size']): string {\n return rem(theme, DIALOG_MAX_WIDTH[size] ?? DIALOG_MAX_WIDTH.md);\n}\n\nfunction baseStylesOf(theme: Theme, opts: VariantStyleOptions) {\n return {\n borderRadius: borderRadiusOf(theme, opts.borderRadius),\n maxWidth: maxWidthOf(theme, opts.size),\n width: `${DIALOG_WIDTH_PERCENT}vw`,\n margin: theme.spacing(DIALOG_MARGIN_UNITS),\n transition: theme.transitions.create(\n ['box-shadow', 'background-color', 'backdrop-filter'],\n { duration: theme.transitions.duration.standard },\n ),\n };\n}\n\nfunction glowStylesOf(theme: Theme, glow: boolean) {\n return glow\n ? {\n boxShadow: `${rems(theme, 0, 0, DIALOG_GLOW.blurRadius)} ${alpha(theme.palette.primary.main, DIALOG_GLOW.alpha)}`,\n }\n : {};\n}\n\nfunction pulseStylesOf(theme: Theme, pulse: boolean) {\n if (!pulse) return {};\n return {\n position: 'relative' as const,\n '&::after': {\n content: '\"\"',\n position: 'absolute' as const,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: DIALOG_PULSE.alpha,\n animation: `${pulseAnimation(theme)} ${DIALOG_PULSE.durationMs / 1000}s infinite`,\n pointerEvents: 'none' as const,\n zIndex: DIALOG_PULSE.zIndex,\n },\n };\n}\n\n/** The default variant's paper: optional gradient/glass over the base styles. */\nfunction defaultVariantStyles(theme: Theme, opts: VariantStyleOptions) {\n const gradientStyles = opts.gradient\n ? {\n background: `linear-gradient(${DIALOG_GRADIENT.angleDeg}deg, ${alpha(theme.palette.primary.main, DIALOG_GRADIENT.stopAlpha)}, ${alpha(theme.palette.secondary.main, DIALOG_GRADIENT.stopAlpha)})`,\n backdropFilter: `blur(${rem(theme, DIALOG_GRADIENT.blurPx)})`,\n }\n : {};\n return {\n ...gradientStyles,\n backgroundColor: opts.glass\n ? alpha(theme.palette.background.paper, DIALOG_GLASS.backgroundAlpha)\n : theme.palette.background.paper,\n backdropFilter: opts.glass ? `blur(${rem(theme, DIALOG_GLASS.blurPx)})` : 'none',\n border: opts.glass\n ? `${DIALOG_BORDER_WIDTH}px solid ${alpha(theme.palette.primary.main, DIALOG_GLASS.borderAlpha)}`\n : 'none',\n };\n}\n\n/**\n * The paper never grows an outline of its own — same as `.MuiDialog-container`\n * (`outline: 0`, unconditionally, in MUI's own `Dialog.js`). It matters once\n * `focusDialogOnEntered` (FUT-2696) falls back to focusing the paper itself: a\n * browser's default `:focus`/`:focus-visible` ring is drawn OUTSIDE the box\n * model — it never resizes a box or shifts a sibling — but this keeps the\n * paper visually identical whether or not that fallback ever fires, rather\n * than relying on that guarantee.\n */\nconst NO_FOCUS_OUTLINE = { outline: 0 } as const;\n\nexport function variantStylesOf(theme: Theme, opts: VariantStyleOptions): SxProps<Theme> {\n const decorations = {\n ...glowStylesOf(theme, opts.glow),\n ...pulseStylesOf(theme, opts.pulse),\n };\n switch (opts.variant) {\n case 'glass':\n return {\n ...baseStylesOf(theme, opts),\n ...decorations,\n ...NO_FOCUS_OUTLINE,\n backgroundColor: alpha(theme.palette.background.paper, DIALOG_GLASS.backgroundAlpha),\n backdropFilter: `blur(${rem(theme, DIALOG_GLASS.blurPx)})`,\n border: `${DIALOG_BORDER_WIDTH}px solid ${alpha(theme.palette.primary.main, DIALOG_GLASS.borderAlpha)}`,\n boxShadow: `${rems(theme, 0, DIALOG_GLASS.shadow.offsetY, DIALOG_GLASS.shadow.blurRadius)} ${shadowInk(theme, DIALOG_GLASS.shadow.alpha)}`,\n };\n case 'fullscreen':\n return {\n borderRadius: 0,\n margin: 0,\n width: '100vw',\n // `100dvh`, not `100vh` — see `dynamicViewportHeight`.\n ...dynamicViewportHeight('height'),\n maxWidth: 'none',\n maxHeight: 'none',\n ...decorations,\n ...NO_FOCUS_OUTLINE,\n };\n case 'drawer': {\n const radius = borderRadiusOf(theme, opts.borderRadius);\n return {\n // `radius` is already a length (`theme.spacing(n)` → '16px', or 0): gluing\n // another `px` on wrote '16pxpx', which the browser dropped, leaving the\n // panel's leading corners square.\n borderRadius: `${radius} 0 0 ${radius}`,\n margin: 0,\n width: maxWidthOf(theme, opts.size),\n // Never wider than the screen: a 600px panel on a 375px phone put its\n // title and the start of every line off the left edge.\n maxWidth: '100%',\n ...dynamicViewportHeight('height'),\n maxHeight: 'none',\n ...decorations,\n ...NO_FOCUS_OUTLINE,\n };\n }\n default:\n return {\n ...baseStylesOf(theme, opts),\n ...decorations,\n ...defaultVariantStyles(theme, opts),\n ...NO_FOCUS_OUTLINE,\n };\n }\n}\n\nexport function backdropSxOf(theme: Theme, glass: boolean) {\n return {\n backgroundColor: scrim(theme, glass ? DIALOG_BACKDROP.alpha.glass : DIALOG_BACKDROP.alpha.plain),\n backdropFilter: glass ? `blur(${rem(theme, DIALOG_BACKDROP.blurPx)})` : 'none',\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridToolbar
3
- } from "./chunk-HUPR5JXY.js";
3
+ } from "./chunk-HWSS6C7C.js";
4
4
 
5
5
  // src/components/data-display/DataViews/data-views-shell-toolbar.tsx
6
6
  import { jsx } from "react/jsx-runtime";
@@ -64,4 +64,4 @@ function ShellToolbar({
64
64
  export {
65
65
  ShellToolbar
66
66
  };
67
- //# sourceMappingURL=chunk-LH46NYGR.js.map
67
+ //# sourceMappingURL=chunk-TEEJ4GNY.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-COYGTEN5.js";
5
5
  import {
6
6
  DENSITY_ROW_PADDING
7
- } from "./chunk-XZJM6EPC.js";
7
+ } from "./chunk-YKEO6UHN.js";
8
8
  import {
9
9
  default as default2
10
10
  } from "./chunk-6DPAWXZ3.js";
@@ -129,4 +129,4 @@ export {
129
129
  cellRailCount,
130
130
  ListCardGroup
131
131
  };
132
- //# sourceMappingURL=chunk-O4AHF45C.js.map
132
+ //# sourceMappingURL=chunk-VY6L74JQ.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- DATA_VIEWS_LAYOUTS
3
- } from "./chunk-LHHAYZ55.js";
4
1
  import {
5
2
  useDataViewsCopy
6
3
  } from "./chunk-KHG57NAE.js";
4
+ import {
5
+ DATA_VIEWS_LAYOUTS
6
+ } from "./chunk-LHHAYZ55.js";
7
7
  import {
8
8
  Slider
9
9
  } from "./chunk-MNHIK2OR.js";
@@ -186,4 +186,4 @@ export {
186
186
  useDataViewsLayout,
187
187
  DataViewsZoomSlider
188
188
  };
189
- //# sourceMappingURL=chunk-XZJM6EPC.js.map
189
+ //# sourceMappingURL=chunk-YKEO6UHN.js.map
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  Dialog,
9
9
  DialogContent
10
- } from "./chunk-GAMLBJE6.js";
10
+ } from "./chunk-MQ277OLB.js";
11
11
  import {
12
12
  default as default2
13
13
  } from "./chunk-6DPAWXZ3.js";
@@ -128,4 +128,4 @@ function ManageViewsDialog({
128
128
  export {
129
129
  ManageViewsDialog
130
130
  };
131
- //# sourceMappingURL=chunk-WWGD5YVW.js.map
131
+ //# sourceMappingURL=chunk-YTY7TD7S.js.map
@@ -26,9 +26,23 @@ function mergedPaperSlot(look, testId, legacy, slot) {
26
26
  function mergedBackdropSlot(look, legacy, slot) {
27
27
  return mergedSlot(look, legacy, slot);
28
28
  }
29
+ function mergedTransitionSlot(onFocusEntered, legacy, slot) {
30
+ const compose = (merged) => ({
31
+ ...merged,
32
+ onEntered: (node, isAppearing) => {
33
+ onFocusEntered(node, isAppearing);
34
+ merged.onEntered?.(node, isAppearing);
35
+ }
36
+ });
37
+ if (typeof slot === "function") {
38
+ return (ownerState) => compose({ ...legacy, ...slot(ownerState) });
39
+ }
40
+ return compose({ ...legacy, ...slot });
41
+ }
29
42
 
30
43
  export {
31
44
  mergedPaperSlot,
32
- mergedBackdropSlot
45
+ mergedBackdropSlot,
46
+ mergedTransitionSlot
33
47
  };
34
- //# sourceMappingURL=chunk-5HW37NSW.js.map
48
+ //# sourceMappingURL=chunk-Z2JH5KW5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/feedback/Dialog/Dialog.slots.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\n\n/**\n * A caller's slot props, MERGED over the Dialog's own rather than replacing\n * them — for the paper (FUT-2613) and the backdrop (FUT-2672).\n *\n * MUI reaches each slot through two props, and both used to replace ours\n * whole: the deprecated `PaperProps`/`BackdropProps` (spread after ours) and\n * `slotProps.paper`/`slotProps.backdrop` (which MUI itself puts over the\n * deprecated one). A caller asking for one class, or one `sx` tweak, lost the\n * variant's radius, width, background and the paper's test id with it — or,\n * on the backdrop, the scrim and the `glass` blur.\n *\n * Only the keys the merge reads are typed here; every other key the caller\n * passed rides the spread through untouched.\n */\ninterface SlotValue {\n sx?: SxProps<Theme>;\n className?: string;\n}\n\ninterface PaperSlotValue extends SlotValue {\n 'data-testid'?: string;\n}\n\n/** A slot as MUI takes it: an object, or a function of the owner state. */\ntype Slot<V, O> = V | ((ownerState: O) => V);\n\n/** Our look first, then whatever `sx` the caller adds — so the caller's escape hatch still wins. */\nfunction sxList(caller: SxProps<Theme> | undefined): readonly unknown[] {\n if (caller === undefined) return [];\n return Array.isArray(caller) ? caller : [caller];\n}\n\nfunction mergeOver<V extends SlotValue>(\n look: SxProps<Theme>,\n legacy: V | undefined,\n slot: V | undefined,\n): V {\n // MUI's own order: `slotProps.<slot>` over the deprecated `<Slot>Props`.\n return {\n ...legacy,\n ...slot,\n sx: [look, ...sxList(legacy?.sx), ...sxList(slot?.sx)] as SxProps<Theme>,\n } as V;\n}\n\n/**\n * The one slot to hand MUI: the Dialog's `look`, then the deprecated prop,\n * then `slotProps.<slot>`, each value passed through `finish`. A function slot\n * stays a function, so MUI still calls it with its owner state and its result\n * merges the same way.\n */\nfunction mergedSlot<V extends SlotValue, O>(\n look: SxProps<Theme>,\n legacy: V | undefined,\n slot: Slot<V, O> | undefined,\n finish: (merged: V) => V = (merged) => merged,\n): Slot<V, O> {\n if (typeof slot === 'function') {\n return (ownerState: O) => finish(mergeOver(look, legacy, slot(ownerState)));\n }\n return finish(mergeOver(look, legacy, slot));\n}\n\n/**\n * The paper slot: the variant's `look`, then `PaperProps`, then\n * `slotProps.paper`.\n *\n * `testId` names the paper unless the caller's props name it; the drawer passes\n * none, because its id already sits on the Drawer root.\n */\nexport function mergedPaperSlot<O>(\n look: SxProps<Theme>,\n testId: string | undefined,\n legacy: PaperSlotValue | undefined,\n slot: Slot<PaperSlotValue, O> | undefined,\n): Slot<PaperSlotValue, O> {\n return mergedSlot(look, legacy, slot, (merged) => ({\n ...merged,\n // A key the caller set to `undefined` does not erase the dialog's id.\n 'data-testid': merged['data-testid'] ?? testId,\n }));\n}\n\n/**\n * The backdrop slot: the scrim (`backdropSxOf`), then `BackdropProps`, then\n * `slotProps.backdrop`. Both renderers need it: MUI's `Dialog` would replace\n * our backdrop props with a caller's, and MUI's `Drawer` takes\n * `slotProps.backdrop` INSTEAD of `BackdropProps` whenever it is given — so\n * once the scrim rides `slotProps.backdrop`, a caller's `BackdropProps` would\n * silently drop unless it is folded in here.\n */\nexport function mergedBackdropSlot<O>(\n look: SxProps<Theme>,\n legacy: SlotValue | undefined,\n slot: Slot<SlotValue, O> | undefined,\n): Slot<SlotValue, O> {\n return mergedSlot(look, legacy, slot);\n}\n"],"mappings":";AA6BA,SAAS,OAAO,QAAwD;AACtE,MAAI,WAAW,OAAW,QAAO,CAAC;AAClC,SAAO,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;AACjD;AAEA,SAAS,UACP,MACA,QACA,MACG;AAEH,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI,CAAC,MAAM,GAAG,OAAO,QAAQ,EAAE,GAAG,GAAG,OAAO,MAAM,EAAE,CAAC;AAAA,EACvD;AACF;AAQA,SAAS,WACP,MACA,QACA,MACA,SAA2B,CAAC,WAAW,QAC3B;AACZ,MAAI,OAAO,SAAS,YAAY;AAC9B,WAAO,CAAC,eAAkB,OAAO,UAAU,MAAM,QAAQ,KAAK,UAAU,CAAC,CAAC;AAAA,EAC5E;AACA,SAAO,OAAO,UAAU,MAAM,QAAQ,IAAI,CAAC;AAC7C;AASO,SAAS,gBACd,MACA,QACA,QACA,MACyB;AACzB,SAAO,WAAW,MAAM,QAAQ,MAAM,CAAC,YAAY;AAAA,IACjD,GAAG;AAAA;AAAA,IAEH,eAAe,OAAO,aAAa,KAAK;AAAA,EAC1C,EAAE;AACJ;AAUO,SAAS,mBACd,MACA,QACA,MACoB;AACpB,SAAO,WAAW,MAAM,QAAQ,IAAI;AACtC;","names":[]}
1
+ {"version":3,"sources":["../src/components/feedback/Dialog/Dialog.slots.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\n\n/**\n * A caller's slot props, MERGED over the Dialog's own rather than replacing\n * them — for the paper (FUT-2613) and the backdrop (FUT-2672).\n *\n * MUI reaches each slot through two props, and both used to replace ours\n * whole: the deprecated `PaperProps`/`BackdropProps` (spread after ours) and\n * `slotProps.paper`/`slotProps.backdrop` (which MUI itself puts over the\n * deprecated one). A caller asking for one class, or one `sx` tweak, lost the\n * variant's radius, width, background and the paper's test id with it — or,\n * on the backdrop, the scrim and the `glass` blur.\n *\n * Only the keys the merge reads are typed here; every other key the caller\n * passed rides the spread through untouched.\n */\ninterface SlotValue {\n sx?: SxProps<Theme>;\n className?: string;\n}\n\ninterface PaperSlotValue extends SlotValue {\n 'data-testid'?: string;\n}\n\n/** A slot as MUI takes it: an object, or a function of the owner state. */\ntype Slot<V, O> = V | ((ownerState: O) => V);\n\n/** Our look first, then whatever `sx` the caller adds — so the caller's escape hatch still wins. */\nfunction sxList(caller: SxProps<Theme> | undefined): readonly unknown[] {\n if (caller === undefined) return [];\n return Array.isArray(caller) ? caller : [caller];\n}\n\nfunction mergeOver<V extends SlotValue>(\n look: SxProps<Theme>,\n legacy: V | undefined,\n slot: V | undefined,\n): V {\n // MUI's own order: `slotProps.<slot>` over the deprecated `<Slot>Props`.\n return {\n ...legacy,\n ...slot,\n sx: [look, ...sxList(legacy?.sx), ...sxList(slot?.sx)] as SxProps<Theme>,\n } as V;\n}\n\n/**\n * The one slot to hand MUI: the Dialog's `look`, then the deprecated prop,\n * then `slotProps.<slot>`, each value passed through `finish`. A function slot\n * stays a function, so MUI still calls it with its owner state and its result\n * merges the same way.\n */\nfunction mergedSlot<V extends SlotValue, O>(\n look: SxProps<Theme>,\n legacy: V | undefined,\n slot: Slot<V, O> | undefined,\n finish: (merged: V) => V = (merged) => merged,\n): Slot<V, O> {\n if (typeof slot === 'function') {\n return (ownerState: O) => finish(mergeOver(look, legacy, slot(ownerState)));\n }\n return finish(mergeOver(look, legacy, slot));\n}\n\n/**\n * The paper slot: the variant's `look`, then `PaperProps`, then\n * `slotProps.paper`.\n *\n * `testId` names the paper unless the caller's props name it; the drawer passes\n * none, because its id already sits on the Drawer root.\n */\nexport function mergedPaperSlot<O>(\n look: SxProps<Theme>,\n testId: string | undefined,\n legacy: PaperSlotValue | undefined,\n slot: Slot<PaperSlotValue, O> | undefined,\n): Slot<PaperSlotValue, O> {\n return mergedSlot(look, legacy, slot, (merged) => ({\n ...merged,\n // A key the caller set to `undefined` does not erase the dialog's id.\n 'data-testid': merged['data-testid'] ?? testId,\n }));\n}\n\n/**\n * The backdrop slot: the scrim (`backdropSxOf`), then `BackdropProps`, then\n * `slotProps.backdrop`. Both renderers need it: MUI's `Dialog` would replace\n * our backdrop props with a caller's, and MUI's `Drawer` takes\n * `slotProps.backdrop` INSTEAD of `BackdropProps` whenever it is given — so\n * once the scrim rides `slotProps.backdrop`, a caller's `BackdropProps` would\n * silently drop unless it is folded in here.\n */\nexport function mergedBackdropSlot<O>(\n look: SxProps<Theme>,\n legacy: SlotValue | undefined,\n slot: Slot<SlotValue, O> | undefined,\n): Slot<SlotValue, O> {\n return mergedSlot(look, legacy, slot);\n}\n\n/** What the transition slot's `onEntered` looks like on either renderer. */\ninterface TransitionSlotValue {\n onEntered?: (node: HTMLElement, isAppearing: boolean) => void;\n}\n\n/**\n * The transition slot: `onFocusEntered` (initial-focus, FUT-2696) runs\n * first, then the deprecated `TransitionProps`/`SlideProps`, then\n * `slotProps.transition` — so a caller's own `onEntered` still runs, and\n * still runs last, meaning it can move focus again if it wants to.\n *\n * No `sx`/`look` here: unlike the paper and the backdrop, the transition slot\n * carries no visual look of the Dialog's own to merge under a caller's.\n */\nexport function mergedTransitionSlot<O>(\n onFocusEntered: (node: HTMLElement, isAppearing: boolean) => void,\n legacy: TransitionSlotValue | undefined,\n slot: Slot<TransitionSlotValue, O> | undefined,\n): Slot<TransitionSlotValue, O> {\n const compose = (merged: TransitionSlotValue): TransitionSlotValue => ({\n ...merged,\n onEntered: (node: HTMLElement, isAppearing: boolean) => {\n onFocusEntered(node, isAppearing);\n merged.onEntered?.(node, isAppearing);\n },\n });\n if (typeof slot === 'function') {\n return (ownerState: O) => compose({ ...legacy, ...slot(ownerState) });\n }\n return compose({ ...legacy, ...slot });\n}\n"],"mappings":";AA6BA,SAAS,OAAO,QAAwD;AACtE,MAAI,WAAW,OAAW,QAAO,CAAC;AAClC,SAAO,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;AACjD;AAEA,SAAS,UACP,MACA,QACA,MACG;AAEH,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI,CAAC,MAAM,GAAG,OAAO,QAAQ,EAAE,GAAG,GAAG,OAAO,MAAM,EAAE,CAAC;AAAA,EACvD;AACF;AAQA,SAAS,WACP,MACA,QACA,MACA,SAA2B,CAAC,WAAW,QAC3B;AACZ,MAAI,OAAO,SAAS,YAAY;AAC9B,WAAO,CAAC,eAAkB,OAAO,UAAU,MAAM,QAAQ,KAAK,UAAU,CAAC,CAAC;AAAA,EAC5E;AACA,SAAO,OAAO,UAAU,MAAM,QAAQ,IAAI,CAAC;AAC7C;AASO,SAAS,gBACd,MACA,QACA,QACA,MACyB;AACzB,SAAO,WAAW,MAAM,QAAQ,MAAM,CAAC,YAAY;AAAA,IACjD,GAAG;AAAA;AAAA,IAEH,eAAe,OAAO,aAAa,KAAK;AAAA,EAC1C,EAAE;AACJ;AAUO,SAAS,mBACd,MACA,QACA,MACoB;AACpB,SAAO,WAAW,MAAM,QAAQ,IAAI;AACtC;AAgBO,SAAS,qBACd,gBACA,QACA,MAC8B;AAC9B,QAAM,UAAU,CAAC,YAAsD;AAAA,IACrE,GAAG;AAAA,IACH,WAAW,CAAC,MAAmB,gBAAyB;AACtD,qBAAe,MAAM,WAAW;AAChC,aAAO,YAAY,MAAM,WAAW;AAAA,IACtC;AAAA,EACF;AACA,MAAI,OAAO,SAAS,YAAY;AAC9B,WAAO,CAAC,eAAkB,QAAQ,EAAE,GAAG,QAAQ,GAAG,KAAK,UAAU,EAAE,CAAC;AAAA,EACtE;AACA,SAAO,QAAQ,EAAE,GAAG,QAAQ,GAAG,KAAK,CAAC;AACvC;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Avatar
3
- } from "./chunk-EMEXXAQI.js";
3
+ } from "./chunk-66O55OZI.js";
4
4
  import {
5
5
  Card
6
6
  } from "./chunk-WN5PNP6F.js";
@@ -74,4 +74,4 @@ export {
74
74
  UserAvatar,
75
75
  UserMenu
76
76
  };
77
- //# sourceMappingURL=chunk-HMAPQV4C.js.map
77
+ //# sourceMappingURL=chunk-ZWCYSAI5.js.map
@@ -2,11 +2,11 @@ import "../chunk-UDQSIRAP.js";
2
2
  import {
3
3
  Avatar,
4
4
  AvatarGroup
5
- } from "../chunk-EMEXXAQI.js";
5
+ } from "../chunk-66O55OZI.js";
6
+ import "../chunk-3ZVUNSFF.js";
6
7
  import "../chunk-Y6C4MYZE.js";
7
8
  import "../chunk-MTEQEPNY.js";
8
9
  import "../chunk-6ZZGK5DT.js";
9
- import "../chunk-3ZVUNSFF.js";
10
10
  import "../chunk-FQ6UW7IY.js";
11
11
  import "../chunk-6JAIFIPW.js";
12
12
  import "../chunk-N3GAFIXG.js";
@@ -1,16 +1,16 @@
1
1
  import "../chunk-62FET2BM.js";
2
2
  import {
3
3
  Carousel
4
- } from "../chunk-M3MHYE2M.js";
4
+ } from "../chunk-L566FMDD.js";
5
+ import "../chunk-WOAXKWAB.js";
5
6
  import "../chunk-OHZU4IT3.js";
6
7
  import "../chunk-TRHWA74K.js";
7
- import "../chunk-RUIV5TVA.js";
8
- import "../chunk-WOAXKWAB.js";
9
8
  import {
10
9
  CarouselArrows,
11
10
  CarouselIndicators,
12
11
  CarouselThumbnails
13
12
  } from "../chunk-JJJM75XF.js";
13
+ import "../chunk-RUIV5TVA.js";
14
14
  import "../chunk-HPK33ACY.js";
15
15
  import "../chunk-TCAQOUIB.js";
16
16
  import "../chunk-7ZPUN7TV.js";
@@ -5,6 +5,17 @@ import {
5
5
  import {
6
6
  Chart
7
7
  } from "../chunk-TZBOWSAM.js";
8
+ import "../chunk-VJ2BNJ5M.js";
9
+ import "../chunk-IQJCLFF4.js";
10
+ import "../chunk-EA2UNEL6.js";
11
+ import "../chunk-SOHQPPYJ.js";
12
+ import {
13
+ ChartContainer,
14
+ ChartLegend,
15
+ ChartLegendContent,
16
+ ChartTooltip,
17
+ ChartTooltipContent
18
+ } from "../chunk-RIRTW5EU.js";
8
19
  import {
9
20
  CHART_SEMANTIC_COLORS,
10
21
  ChartSpecError,
@@ -20,17 +31,6 @@ import {
20
31
  getRegisteredChartSpecTypes,
21
32
  registerChartSpecRenderer
22
33
  } from "../chunk-WKUA6P3W.js";
23
- import "../chunk-VJ2BNJ5M.js";
24
- import "../chunk-IQJCLFF4.js";
25
- import "../chunk-EA2UNEL6.js";
26
- import "../chunk-SOHQPPYJ.js";
27
- import {
28
- ChartContainer,
29
- ChartLegend,
30
- ChartLegendContent,
31
- ChartTooltip,
32
- ChartTooltipContent
33
- } from "../chunk-RIRTW5EU.js";
34
34
  import "../chunk-TCAQOUIB.js";
35
35
  import "../chunk-7ZPUN7TV.js";
36
36
  import "../chunk-PT6TCWIW.js";