@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
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  Dialog,
18
18
  DialogContent
19
- } from "./chunk-GAMLBJE6.js";
19
+ } from "./chunk-MQ277OLB.js";
20
20
  import {
21
21
  default as default2
22
22
  } from "./chunk-6DPAWXZ3.js";
@@ -268,4 +268,4 @@ function SaveViewModal({
268
268
  export {
269
269
  SaveViewModal
270
270
  };
271
- //# sourceMappingURL=chunk-SA65SDOY.js.map
271
+ //# sourceMappingURL=chunk-A2TANYNR.js.map
@@ -9,12 +9,12 @@ import {
9
9
  DragHandle,
10
10
  useDragItem
11
11
  } from "./chunk-K4EKTMTC.js";
12
- import {
13
- CARD_ASPECT_RATIOS
14
- } from "./chunk-LHHAYZ55.js";
15
12
  import {
16
13
  useDataViewsCopy
17
14
  } from "./chunk-KHG57NAE.js";
15
+ import {
16
+ CARD_ASPECT_RATIOS
17
+ } from "./chunk-LHHAYZ55.js";
18
18
  import {
19
19
  Checkbox
20
20
  } from "./chunk-4PRZLII7.js";
@@ -268,4 +268,4 @@ function BaseCard(props) {
268
268
  export {
269
269
  BaseCard
270
270
  };
271
- //# sourceMappingURL=chunk-I5T5PQQW.js.map
271
+ //# sourceMappingURL=chunk-BRM3T4LQ.js.map
@@ -182,8 +182,13 @@ var tableStyles = ({
182
182
  }) => {
183
183
  const densityConfig = getDensityConfig(theme, density);
184
184
  return {
185
- borderRadius: theme.spacing(1),
186
- overflow: "hidden",
185
+ // `overflow: hidden` makes the `<table>` a scroll container, which stops
186
+ // a `stickyHeader`'s `<thead>` sticking within it — a sticky element
187
+ // sticks within its nearest ancestor scroll container (FUT-2677). With
188
+ // `stickyHeader`, the rounded clip moves to the `TableContainer` instead
189
+ // (`containerStyle` and `scrollerRadiusStyle` in `Table.helpers.ts`), which already clips a
190
+ // scrolling table.
191
+ ...stickyHeader ? {} : { borderRadius: theme.spacing(1), overflow: "hidden" },
187
192
  transition: "all 0.3s ease",
188
193
  position: "relative",
189
194
  // Density styles
@@ -216,4 +221,4 @@ var tableStyles = ({
216
221
  export {
217
222
  tableStyles
218
223
  };
219
- //# sourceMappingURL=chunk-CCK7FB2V.js.map
224
+ //# sourceMappingURL=chunk-BVHIKXCN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/Table/Table.styles.ts"],"sourcesContent":["import { alpha, keyframes } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport type { TableDensity, TableStripeColor } from './Table.types';\nimport { rem, rems } from '../../../tokens/relative';\n\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, 10)} currentColor;\n opacity: 0;\n }\n 100% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 0;\n }\n`;\n\n// Density configurations. The row height stays design px (`…Px`) and goes\n// through `rem` where the cell is drawn.\nconst getDensityConfig = (theme: Theme, density: TableDensity = 'normal') => {\n const configs = {\n compact: {\n rowHeightPx: 36,\n cellPadding: rems(theme, 6, 12),\n fontSize: rem(theme, 13),\n headerPadding: rems(theme, 8, 12) },\n normal: {\n rowHeightPx: 52,\n cellPadding: rems(theme, 12, 16),\n fontSize: rem(theme, 14),\n headerPadding: rems(theme, 16, 16) },\n comfortable: {\n rowHeightPx: 68,\n cellPadding: rems(theme, 18, 24),\n fontSize: rem(theme, 14),\n headerPadding: rems(theme, 20, 24) } };\n return configs[density];\n};\n\nconst getStripeColorFromTheme = (theme: { palette: { primary: { main: string }; secondary: { main: string }; info: { main: string }; success: { main: string }; warning: { main: string }; error: { main: string }; action: { hover: string } } }, stripeColor: TableStripeColor = 'neutral') => {\n const colorMap: Record<TableStripeColor, string> = {\n primary: theme.palette.primary.main,\n secondary: theme.palette.secondary.main,\n info: theme.palette.info.main,\n success: theme.palette.success.main,\n warning: theme.palette.warning.main,\n danger: theme.palette.error.main,\n neutral: theme.palette.action.hover };\n return colorMap[stripeColor];\n};\n\n/**\n * The zebra stripe for one body row.\n *\n * `neutral` — the default — resolves to `palette.action.hover`, which ALREADY\n * carries its subtlety in its own alpha (`rgba(0,0,0,0.04)` in the light\n * theme). MUI's `alpha()` REPLACES that channel rather than multiplying it, so\n * re-alpha-ing it at 0.5 amplified the tint 12.5× into `rgba(0,0,0,0.5)` —\n * solid #808080 on a white card, which reads as a selected or errored row\n * rather than as a stripe (FUT-755). It is used as-is instead.\n *\n * The named colours are opaque `*.main` values with no alpha of their own, so\n * they still need one.\n */\nconst stripeRowColor = (\n theme: Parameters<typeof getStripeColorFromTheme>[0],\n stripeColor: TableStripeColor = 'neutral',\n): string => {\n const color = getStripeColorFromTheme(theme, stripeColor);\n return stripeColor === 'neutral' ? color : alpha(color, 0.15);\n};\n\n// One variant applies at a time, so a lookup replaces the mutually exclusive\n// spreads.\nconst TABLE_VARIANTS: Record<string, (args: VariantArgs) => CSSObject> = {\n default: ({ theme }) => ({\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableHead-root': {\n backgroundColor: alpha(theme.palette.primary.main, 0.1) } }),\n striped: ({ theme, stripeColor }) => ({\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableBody-root .MuiTableRow-root:nth-of-type(even)': {\n backgroundColor: stripeRowColor(theme, stripeColor) } }),\n glass: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}` }),\n minimal: ({ theme }) => ({\n backgroundColor: 'transparent',\n '& .MuiTableCell-root': {\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.1)}` } }),\n gradient: ({ theme }) => ({\n background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.05)}, ${alpha(theme.palette.secondary.main, 0.05)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n '& .MuiTableHead-root': {\n background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.15)}, ${alpha(theme.palette.secondary.main, 0.15)})` },\n '& .MuiTableCell-root': {\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.15)}` } }) };\n\ntype VariantArgs = {\n theme: Theme;\n densityConfig: ReturnType<typeof getDensityConfig>;\n stripeColor?: TableStripeColor;\n};\n\nconst tableVariantStyles = (args: VariantArgs, customVariant?: string): CSSObject =>\n customVariant ? (TABLE_VARIANTS[customVariant]?.(args) ?? {}) : {};\n\n/**\n * A virtualised table (FUT-2668). Fixed layout takes the column widths from the\n * header — a column's declared `width`, the rest sharing what is left — so they\n * hold still while different rows mount (it ignores a column's `minWidth`). A\n * body cell drops its vertical padding and the density's height: the pitch is\n * `rowHeight`, and the cell's content wrapper is exactly that tall.\n *\n * The checkbox column is MUI's 48 wide, and fixed layout holds it there. The\n * density's side padding would leave its checkbox 16 of that and clip it in the\n * body, so it keeps MUI's own checkbox padding (4 on the left, none on the\n * right), in the header and the body alike. After the sticky header's rule,\n * which it would otherwise lose to.\n */\nconst virtualisedStyles = (theme: Theme): CSSObject => ({\n tableLayout: 'fixed',\n '& .MuiTableBody-root .MuiTableCell-root': {\n paddingTop: 0,\n paddingBottom: 0,\n height: 'auto' },\n '& .MuiTableHead-root .MuiTableCell-paddingCheckbox, & .MuiTableBody-root .MuiTableCell-paddingCheckbox': {\n paddingLeft: rem(theme, 4),\n paddingRight: 0 } });\n\n// Sticky headers and row hover are independent of the variant.\nconst stickyHeaderStyles = (\n theme: Theme,\n densityConfig: ReturnType<typeof getDensityConfig>,\n): CSSObject => ({\n '& .MuiTableHead-root': {\n position: 'sticky',\n top: 0,\n zIndex: 100,\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableCell-root': {\n borderBottom: `${rem(theme, 2)} solid ${theme.palette.divider}`,\n fontWeight: 600,\n padding: densityConfig.headerPadding } } });\n\nconst hoverableRowStyles = (theme: Theme): CSSObject => ({\n '& .MuiTableBody-root .MuiTableRow-root:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.08),\n cursor: 'pointer',\n transition: 'background-color 0.15s ease-in-out' } });\n\n// glow and pulse combine into three distinct looks, spelled out rather than\n// layered — the glow-only shadow differs from the one used when both are on.\nconst emphasisStyles = (theme: Theme, glow?: boolean, pulse?: boolean): CSSObject => {\n if (glow && pulse) return ({\n position: 'relative',\n boxShadow: `${rems(theme, 0, 0, 20, 5)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1 } });\n if (glow) return ({\n boxShadow: `${rems(theme, 0, 0, 20, 5)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)' });\n if (pulse) return ({\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1 } });\n\n return {};\n};\n\n// The table's own styling, lifted out so the styled() callback just forwards\n// its props.\nexport const tableStyles = ({\n theme,\n customVariant,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n stripeColor = 'neutral',\n virtualised }: {\n theme: Theme;\n customVariant?: string;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n stripeColor?: TableStripeColor;\n /** The body is a virtual window, drawn at `rowHeight`. */\n virtualised?: boolean;\n}): CSSObject => {\n const densityConfig = getDensityConfig(theme, density);\n \n return {\n borderRadius: theme.spacing(1),\n overflow: 'hidden',\n transition: 'all 0.3s ease',\n position: 'relative',\n\n // Density styles\n '& .MuiTableCell-root': {\n padding: densityConfig.cellPadding,\n fontSize: densityConfig.fontSize,\n height: rem(theme, densityConfig.rowHeightPx) },\n\n // Sticky header\n ...tableVariantStyles({ theme, densityConfig, stripeColor }, customVariant),\n ...(stickyHeader ? stickyHeaderStyles(theme, densityConfig) : {}),\n ...(hoverable ? hoverableRowStyles(theme) : {}),\n ...emphasisStyles(theme, glow, pulse),\n ...(virtualised ? virtualisedStyles(theme) : {}),\n\n\n // Variant styles\n\n\n\n\n\n\n\n\n\n\n // Hoverable rows\n\n\n // Selection styles\n '& .MuiTableRow-root.selected': {\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.16) } },\n\n // Glow effect\n\n\n // Pulse animation\n\n\n // Both glow and pulse\n\n };\n}\n"],"mappings":";;;;;;AAAA,SAAS,OAAO,iBAAiB;AAMjC,IAAM,iBAAiB,CAAC,UAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMjB,IAAI,OAAO,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWtC,IAAM,mBAAmB,CAAC,OAAc,UAAwB,aAAa;AAC3E,QAAM,UAAU;AAAA,IACd,SAAS;AAAA,MACP,aAAa;AAAA,MACb,aAAa,KAAK,OAAO,GAAG,EAAE;AAAA,MAC9B,UAAU,IAAI,OAAO,EAAE;AAAA,MACvB,eAAe,KAAK,OAAO,GAAG,EAAE;AAAA,IAAE;AAAA,IACpC,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,aAAa,KAAK,OAAO,IAAI,EAAE;AAAA,MAC/B,UAAU,IAAI,OAAO,EAAE;AAAA,MACvB,eAAe,KAAK,OAAO,IAAI,EAAE;AAAA,IAAE;AAAA,IACrC,aAAa;AAAA,MACX,aAAa;AAAA,MACb,aAAa,KAAK,OAAO,IAAI,EAAE;AAAA,MAC/B,UAAU,IAAI,OAAO,EAAE;AAAA,MACvB,eAAe,KAAK,OAAO,IAAI,EAAE;AAAA,IAAE;AAAA,EAAE;AACzC,SAAO,QAAQ,OAAO;AACxB;AAEA,IAAM,0BAA0B,CAAC,OAAkN,cAAgC,cAAc;AAC/R,QAAM,WAA6C;AAAA,IACjD,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,WAAW,MAAM,QAAQ,UAAU;AAAA,IACnC,MAAM,MAAM,QAAQ,KAAK;AAAA,IACzB,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,QAAQ,MAAM,QAAQ,MAAM;AAAA,IAC5B,SAAS,MAAM,QAAQ,OAAO;AAAA,EAAM;AACtC,SAAO,SAAS,WAAW;AAC7B;AAeA,IAAM,iBAAiB,CACrB,OACA,cAAgC,cACrB;AACX,QAAM,QAAQ,wBAAwB,OAAO,WAAW;AACxD,SAAO,gBAAgB,YAAY,QAAQ,MAAM,OAAO,IAAI;AAC9D;AAIA,IAAM,iBAAmE;AAAA,EACvE,SAAS,CAAC,EAAE,MAAM,OAAO;AAAA,IACrB,iBAAiB,MAAM,QAAQ,WAAW;AAAA,IAC1C,wBAAwB;AAAA,MACtB,iBAAiB,MAAM,MAAM,QAAQ,QAAQ,MAAM,GAAG;AAAA,IAAE;AAAA,EAAE;AAAA,EAChE,SAAS,CAAC,EAAE,OAAO,YAAY,OAAO;AAAA,IAClC,iBAAiB,MAAM,QAAQ,WAAW;AAAA,IAC1C,4DAA4D;AAAA,MAC1D,iBAAiB,eAAe,OAAO,WAAW;AAAA,IAAE;AAAA,EAAE;AAAA,EAC5D,OAAO,CAAC,EAAE,MAAM,OAAO;AAAA,IACnB,iBAAiB,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG;AAAA,IAC1D,gBAAgB,QAAQ,IAAI,OAAO,EAAE,CAAC;AAAA,IACtC,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG,CAAC;AAAA,EAAG;AAAA,EAC7D,SAAS,CAAC,EAAE,MAAM,OAAO;AAAA,IACrB,iBAAiB;AAAA,IACjB,wBAAwB;AAAA,MACtB,cAAc,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG,CAAC;AAAA,IAAG;AAAA,EAAE;AAAA,EACvE,UAAU,CAAC,EAAE,MAAM,OAAO;AAAA,IACtB,YAAY,2BAA2B,MAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI,CAAC,KAAK,MAAM,MAAM,QAAQ,UAAU,MAAM,IAAI,CAAC;AAAA,IAC5H,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG,CAAC;AAAA,IACtD,wBAAwB;AAAA,MACtB,YAAY,2BAA2B,MAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI,CAAC,KAAK,MAAM,MAAM,QAAQ,UAAU,MAAM,IAAI,CAAC;AAAA,IAAI;AAAA,IAClI,wBAAwB;AAAA,MACtB,cAAc,aAAa,MAAM,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,IAAG;AAAA,EAAE;AAAG;AAQ7E,IAAM,qBAAqB,CAAC,MAAmB,kBAC7C,gBAAiB,eAAe,aAAa,IAAI,IAAI,KAAK,CAAC,IAAK,CAAC;AAenE,IAAM,oBAAoB,CAAC,WAA6B;AAAA,EACtD,aAAa;AAAA,EACb,2CAA2C;AAAA,IACzC,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,QAAQ;AAAA,EAAO;AAAA,EACjB,0GAA0G;AAAA,IACxG,aAAa,IAAI,OAAO,CAAC;AAAA,IACzB,cAAc;AAAA,EAAE;AAAE;AAGtB,IAAM,qBAAqB,CACzB,OACA,mBACe;AAAA,EACX,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,iBAAiB,MAAM,QAAQ,WAAW;AAAA,IAC1C,wBAAwB;AAAA,MACtB,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,UAAU,MAAM,QAAQ,OAAO;AAAA,MAC7D,YAAY;AAAA,MACZ,SAAS,cAAc;AAAA,IAAc;AAAA,EAAE;AAAE;AAEnD,IAAM,qBAAqB,CAAC,WAA6B;AAAA,EACnD,gDAAgD;AAAA,IAC9C,iBAAiB,MAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,IACvD,QAAQ;AAAA,IACR,YAAY;AAAA,EAAqC;AAAE;AAI3D,IAAM,iBAAiB,CAAC,OAAc,MAAgB,UAA+B;AACnF,MAAI,QAAQ,MAAO,QAAQ;AAAA,IACvB,UAAU;AAAA,IACV,WAAW,GAAG,KAAK,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,MAAM,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAAA,IAChF,QAAQ;AAAA,IACR,YAAY;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,MACvC,SAAS;AAAA,MACT,WAAW,GAAG,eAAe,KAAK,CAAC;AAAA,MACnC,eAAe;AAAA,MACf,QAAQ;AAAA,IAAG;AAAA,EAAE;AACnB,MAAI,KAAM,QAAQ;AAAA,IACd,WAAW,GAAG,KAAK,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,MAAM,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAAA,IAChF,QAAQ;AAAA,EAAmB;AAC/B,MAAI,MAAO,QAAQ;AAAA,IACf,UAAU;AAAA,IACV,YAAY;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,MACvC,SAAS;AAAA,MACT,WAAW,GAAG,eAAe,KAAK,CAAC;AAAA,MACnC,eAAe;AAAA,MACf,QAAQ;AAAA,IAAG;AAAA,EAAE;AAEnB,SAAO,CAAC;AACV;AAIO,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAY,MAWG;AACf,QAAM,gBAAgB,iBAAiB,OAAO,OAAO;AAErD,SAAO;AAAA,IACL,cAAc,MAAM,QAAQ,CAAC;AAAA,IAC7B,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,UAAU;AAAA;AAAA,IAGV,wBAAwB;AAAA,MACtB,SAAS,cAAc;AAAA,MACvB,UAAU,cAAc;AAAA,MACxB,QAAQ,IAAI,OAAO,cAAc,WAAW;AAAA,IAAE;AAAA;AAAA,IAGhD,GAAG,mBAAmB,EAAE,OAAO,eAAe,YAAY,GAAG,aAAa;AAAA,IAC1E,GAAI,eAAe,mBAAmB,OAAO,aAAa,IAAI,CAAC;AAAA,IAC/D,GAAI,YAAY,mBAAmB,KAAK,IAAI,CAAC;AAAA,IAC7C,GAAG,eAAe,OAAO,MAAM,KAAK;AAAA,IACpC,GAAI,cAAc,kBAAkB,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,IAkB9C,gCAAgC;AAAA,MAC9B,iBAAiB,MAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,MACvD,WAAW;AAAA,QACT,iBAAiB,MAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,MAAE;AAAA,IAAE;AAAA;AAAA;AAAA;AAAA,EAUjE;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/components/data-display/Table/Table.styles.ts"],"sourcesContent":["import { alpha, keyframes } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport type { TableDensity, TableStripeColor } from './Table.types';\nimport { rem, rems } from '../../../tokens/relative';\n\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, 10)} currentColor;\n opacity: 0;\n }\n 100% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 0;\n }\n`;\n\n// Density configurations. The row height stays design px (`…Px`) and goes\n// through `rem` where the cell is drawn.\nconst getDensityConfig = (theme: Theme, density: TableDensity = 'normal') => {\n const configs = {\n compact: {\n rowHeightPx: 36,\n cellPadding: rems(theme, 6, 12),\n fontSize: rem(theme, 13),\n headerPadding: rems(theme, 8, 12) },\n normal: {\n rowHeightPx: 52,\n cellPadding: rems(theme, 12, 16),\n fontSize: rem(theme, 14),\n headerPadding: rems(theme, 16, 16) },\n comfortable: {\n rowHeightPx: 68,\n cellPadding: rems(theme, 18, 24),\n fontSize: rem(theme, 14),\n headerPadding: rems(theme, 20, 24) } };\n return configs[density];\n};\n\nconst getStripeColorFromTheme = (theme: { palette: { primary: { main: string }; secondary: { main: string }; info: { main: string }; success: { main: string }; warning: { main: string }; error: { main: string }; action: { hover: string } } }, stripeColor: TableStripeColor = 'neutral') => {\n const colorMap: Record<TableStripeColor, string> = {\n primary: theme.palette.primary.main,\n secondary: theme.palette.secondary.main,\n info: theme.palette.info.main,\n success: theme.palette.success.main,\n warning: theme.palette.warning.main,\n danger: theme.palette.error.main,\n neutral: theme.palette.action.hover };\n return colorMap[stripeColor];\n};\n\n/**\n * The zebra stripe for one body row.\n *\n * `neutral` — the default — resolves to `palette.action.hover`, which ALREADY\n * carries its subtlety in its own alpha (`rgba(0,0,0,0.04)` in the light\n * theme). MUI's `alpha()` REPLACES that channel rather than multiplying it, so\n * re-alpha-ing it at 0.5 amplified the tint 12.5× into `rgba(0,0,0,0.5)` —\n * solid #808080 on a white card, which reads as a selected or errored row\n * rather than as a stripe (FUT-755). It is used as-is instead.\n *\n * The named colours are opaque `*.main` values with no alpha of their own, so\n * they still need one.\n */\nconst stripeRowColor = (\n theme: Parameters<typeof getStripeColorFromTheme>[0],\n stripeColor: TableStripeColor = 'neutral',\n): string => {\n const color = getStripeColorFromTheme(theme, stripeColor);\n return stripeColor === 'neutral' ? color : alpha(color, 0.15);\n};\n\n// One variant applies at a time, so a lookup replaces the mutually exclusive\n// spreads.\nconst TABLE_VARIANTS: Record<string, (args: VariantArgs) => CSSObject> = {\n default: ({ theme }) => ({\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableHead-root': {\n backgroundColor: alpha(theme.palette.primary.main, 0.1) } }),\n striped: ({ theme, stripeColor }) => ({\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableBody-root .MuiTableRow-root:nth-of-type(even)': {\n backgroundColor: stripeRowColor(theme, stripeColor) } }),\n glass: ({ theme }) => ({\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}` }),\n minimal: ({ theme }) => ({\n backgroundColor: 'transparent',\n '& .MuiTableCell-root': {\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.1)}` } }),\n gradient: ({ theme }) => ({\n background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.05)}, ${alpha(theme.palette.secondary.main, 0.05)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n '& .MuiTableHead-root': {\n background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.15)}, ${alpha(theme.palette.secondary.main, 0.15)})` },\n '& .MuiTableCell-root': {\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.15)}` } }) };\n\ntype VariantArgs = {\n theme: Theme;\n densityConfig: ReturnType<typeof getDensityConfig>;\n stripeColor?: TableStripeColor;\n};\n\nconst tableVariantStyles = (args: VariantArgs, customVariant?: string): CSSObject =>\n customVariant ? (TABLE_VARIANTS[customVariant]?.(args) ?? {}) : {};\n\n/**\n * A virtualised table (FUT-2668). Fixed layout takes the column widths from the\n * header — a column's declared `width`, the rest sharing what is left — so they\n * hold still while different rows mount (it ignores a column's `minWidth`). A\n * body cell drops its vertical padding and the density's height: the pitch is\n * `rowHeight`, and the cell's content wrapper is exactly that tall.\n *\n * The checkbox column is MUI's 48 wide, and fixed layout holds it there. The\n * density's side padding would leave its checkbox 16 of that and clip it in the\n * body, so it keeps MUI's own checkbox padding (4 on the left, none on the\n * right), in the header and the body alike. After the sticky header's rule,\n * which it would otherwise lose to.\n */\nconst virtualisedStyles = (theme: Theme): CSSObject => ({\n tableLayout: 'fixed',\n '& .MuiTableBody-root .MuiTableCell-root': {\n paddingTop: 0,\n paddingBottom: 0,\n height: 'auto' },\n '& .MuiTableHead-root .MuiTableCell-paddingCheckbox, & .MuiTableBody-root .MuiTableCell-paddingCheckbox': {\n paddingLeft: rem(theme, 4),\n paddingRight: 0 } });\n\n// Sticky headers and row hover are independent of the variant.\nconst stickyHeaderStyles = (\n theme: Theme,\n densityConfig: ReturnType<typeof getDensityConfig>,\n): CSSObject => ({\n '& .MuiTableHead-root': {\n position: 'sticky',\n top: 0,\n zIndex: 100,\n backgroundColor: theme.palette.background.paper,\n '& .MuiTableCell-root': {\n borderBottom: `${rem(theme, 2)} solid ${theme.palette.divider}`,\n fontWeight: 600,\n padding: densityConfig.headerPadding } } });\n\nconst hoverableRowStyles = (theme: Theme): CSSObject => ({\n '& .MuiTableBody-root .MuiTableRow-root:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.08),\n cursor: 'pointer',\n transition: 'background-color 0.15s ease-in-out' } });\n\n// glow and pulse combine into three distinct looks, spelled out rather than\n// layered — the glow-only shadow differs from the one used when both are on.\nconst emphasisStyles = (theme: Theme, glow?: boolean, pulse?: boolean): CSSObject => {\n if (glow && pulse) return ({\n position: 'relative',\n boxShadow: `${rems(theme, 0, 0, 20, 5)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1 } });\n if (glow) return ({\n boxShadow: `${rems(theme, 0, 0, 20, 5)} ${alpha(theme.palette.primary.main, 0.3)} !important`,\n filter: 'brightness(1.05)' });\n if (pulse) return ({\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: theme.palette.primary.main,\n opacity: 0.1,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n zIndex: -1 } });\n\n return {};\n};\n\n// The table's own styling, lifted out so the styled() callback just forwards\n// its props.\nexport const tableStyles = ({\n theme,\n customVariant,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n stripeColor = 'neutral',\n virtualised }: {\n theme: Theme;\n customVariant?: string;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n stripeColor?: TableStripeColor;\n /** The body is a virtual window, drawn at `rowHeight`. */\n virtualised?: boolean;\n}): CSSObject => {\n const densityConfig = getDensityConfig(theme, density);\n\n return {\n // `overflow: hidden` makes the `<table>` a scroll container, which stops\n // a `stickyHeader`'s `<thead>` sticking within it — a sticky element\n // sticks within its nearest ancestor scroll container (FUT-2677). With\n // `stickyHeader`, the rounded clip moves to the `TableContainer` instead\n // (`containerStyle` and `scrollerRadiusStyle` in `Table.helpers.ts`), which already clips a\n // scrolling table.\n ...(stickyHeader ? {} : { borderRadius: theme.spacing(1), overflow: 'hidden' }),\n transition: 'all 0.3s ease',\n position: 'relative',\n\n // Density styles\n '& .MuiTableCell-root': {\n padding: densityConfig.cellPadding,\n fontSize: densityConfig.fontSize,\n height: rem(theme, densityConfig.rowHeightPx) },\n\n // Sticky header\n ...tableVariantStyles({ theme, densityConfig, stripeColor }, customVariant),\n ...(stickyHeader ? stickyHeaderStyles(theme, densityConfig) : {}),\n ...(hoverable ? hoverableRowStyles(theme) : {}),\n ...emphasisStyles(theme, glow, pulse),\n ...(virtualised ? virtualisedStyles(theme) : {}),\n\n\n // Variant styles\n\n\n\n\n\n\n\n\n\n\n // Hoverable rows\n\n\n // Selection styles\n '& .MuiTableRow-root.selected': {\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.16) } },\n\n // Glow effect\n\n\n // Pulse animation\n\n\n // Both glow and pulse\n\n };\n}\n"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-ZCPSND5Y.js";
4
4
  import {
5
5
  FleetBody
6
- } from "./chunk-WCRGSMLV.js";
6
+ } from "./chunk-SCZABICW.js";
7
7
  import {
8
8
  FLEET_DEFAULT_LAGGING_AFTER_SECONDS,
9
9
  FLEET_DEFAULT_STALE_AFTER_SECONDS,
@@ -117,4 +117,4 @@ export {
117
117
  FleetMap,
118
118
  FleetMap_default
119
119
  };
120
- //# sourceMappingURL=chunk-PG5C2AA4.js.map
120
+ //# sourceMappingURL=chunk-DF4QODJ6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MapPreview
3
- } from "./chunk-IFS3BRRL.js";
3
+ } from "./chunk-MCJRHF7Z.js";
4
4
 
5
5
  // src/components/data-display/FleetMap/FleetCanvas.tsx
6
6
  import Box from "@mui/material/Box/index.js";
@@ -38,4 +38,4 @@ function FleetCanvas({
38
38
  export {
39
39
  FleetCanvas
40
40
  };
41
- //# sourceMappingURL=chunk-ESCF5VMQ.js.map
41
+ //# sourceMappingURL=chunk-DRSY37PB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RAIL_GAP_PX
3
- } from "./chunk-O4AHF45C.js";
3
+ } from "./chunk-VY6L74JQ.js";
4
4
  import {
5
5
  DescriptionItem
6
6
  } from "./chunk-WY5PBZ7Q.js";
@@ -226,4 +226,4 @@ export {
226
226
  ListCardActions,
227
227
  ListCardTail
228
228
  };
229
- //# sourceMappingURL=chunk-DYNJQ3HJ.js.map
229
+ //# sourceMappingURL=chunk-FLDLUAHW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useDataViewsLayout
3
- } from "./chunk-XZJM6EPC.js";
3
+ } from "./chunk-YKEO6UHN.js";
4
4
  import {
5
5
  DataViewsScopeTabs
6
6
  } from "./chunk-PL2AB5HJ.js";
@@ -34,4 +34,4 @@ function ScopeTabsSlot({
34
34
  export {
35
35
  ScopeTabsSlot
36
36
  };
37
- //# sourceMappingURL=chunk-OGB25P3N.js.map
37
+ //# sourceMappingURL=chunk-HQZRI7UX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DataViewsDisplayPanel
3
- } from "./chunk-JGRBHNK6.js";
3
+ } from "./chunk-ME3WYPYK.js";
4
4
  import {
5
5
  DataViewsExportMenu
6
6
  } from "./chunk-S6JHTEV4.js";
@@ -136,4 +136,4 @@ function GridToolbar(props) {
136
136
  export {
137
137
  GridToolbar
138
138
  };
139
- //# sourceMappingURL=chunk-HUPR5JXY.js.map
139
+ //# sourceMappingURL=chunk-HWSS6C7C.js.map
@@ -1,29 +1,29 @@
1
- import {
2
- useDisclosure
3
- } from "./chunk-2JCRNWHE.js";
4
- import {
5
- DiscloseSlot,
6
- DragSlot,
7
- SelectSlot
8
- } from "./chunk-GZT7MLLO.js";
9
1
  import {
10
2
  actionProps,
11
3
  metaShape,
12
4
  rowStyles,
13
5
  useRowShell
14
- } from "./chunk-V2UZQS2K.js";
6
+ } from "./chunk-2622YFM6.js";
7
+ import {
8
+ useDisclosure
9
+ } from "./chunk-2JCRNWHE.js";
15
10
  import {
16
11
  ListCardActions,
17
12
  ListCardCaption,
18
13
  ListCardMeta,
19
14
  ListCardTail
20
- } from "./chunk-DYNJQ3HJ.js";
15
+ } from "./chunk-FLDLUAHW.js";
16
+ import {
17
+ DiscloseSlot,
18
+ DragSlot,
19
+ SelectSlot
20
+ } from "./chunk-GZT7MLLO.js";
21
21
  import {
22
22
  DropIndicator
23
23
  } from "./chunk-K4EKTMTC.js";
24
24
  import {
25
25
  cellRailsTemplate
26
- } from "./chunk-O4AHF45C.js";
26
+ } from "./chunk-VY6L74JQ.js";
27
27
  import {
28
28
  ListCardCells,
29
29
  cellTracks,
@@ -179,4 +179,4 @@ function BaseListCard(props) {
179
179
  export {
180
180
  BaseListCard
181
181
  };
182
- //# sourceMappingURL=chunk-T3DNYPEA.js.map
182
+ //# sourceMappingURL=chunk-I4MRBEWU.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  useViewMutations
3
3
  } from "./chunk-DZEC6RFM.js";
4
+ import {
5
+ useDataViewsCopy
6
+ } from "./chunk-KHG57NAE.js";
4
7
  import {
5
8
  coerceViewState,
6
9
  emptyViewState
7
10
  } from "./chunk-LHHAYZ55.js";
8
- import {
9
- useDataViewsCopy
10
- } from "./chunk-KHG57NAE.js";
11
11
 
12
12
  // src/components/data-display/DataViews/use-saved-views-controller.ts
13
13
  import { useRef, useState } from "react";
@@ -96,4 +96,4 @@ function useSavedViewsController(persistence, router, columnIds, views, initialV
96
96
  export {
97
97
  useSavedViewsController
98
98
  };
99
- //# sourceMappingURL=chunk-HR7YTBR7.js.map
99
+ //# sourceMappingURL=chunk-IASDP44E.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  tableRowHeight
3
- } from "./chunk-XS3REOPN.js";
3
+ } from "./chunk-NHEWST3N.js";
4
4
  import {
5
5
  FIELD_BORDER_WIDTH
6
6
  } from "./chunk-PZBK3F52.js";
@@ -294,4 +294,4 @@ export {
294
294
  TableDataRow,
295
295
  EnhancedTableBody
296
296
  };
297
- //# sourceMappingURL=chunk-PX6TWS5T.js.map
297
+ //# sourceMappingURL=chunk-IBGP3VSR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-AXKLCWFR.js";
3
+ } from "./chunk-KN4ZE2XZ.js";
4
4
  import {
5
5
  useDataViewsState
6
6
  } from "./chunk-J3XFUCCR.js";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-5WT4YWXC.js.map
30
+ //# sourceMappingURL=chunk-IRD45DRW.js.map
@@ -9,14 +9,14 @@ import {
9
9
  } from "./chunk-5FAI25JQ.js";
10
10
  import {
11
11
  ListCardGroup
12
- } from "./chunk-O4AHF45C.js";
12
+ } from "./chunk-VY6L74JQ.js";
13
13
  import {
14
14
  DENSITY_BOARD_SCALE,
15
15
  DENSITY_ROW_PADDING,
16
16
  cardScaleForZoom,
17
17
  cardTargetWidthFor,
18
18
  useDataViewsLayout
19
- } from "./chunk-XZJM6EPC.js";
19
+ } from "./chunk-YKEO6UHN.js";
20
20
  import {
21
21
  cardGridTracks
22
22
  } from "./chunk-VPPIODKX.js";
@@ -273,4 +273,4 @@ function GridMain(props) {
273
273
  export {
274
274
  GridMain
275
275
  };
276
- //# sourceMappingURL=chunk-ENRBXB6L.js.map
276
+ //# sourceMappingURL=chunk-JK5UJM4Y.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ geocode
3
+ } from "./chunk-CB6DTWD5.js";
1
4
  import {
2
5
  CITY_ZOOM,
3
6
  CLICK_JITTER_DEGREES,
@@ -6,9 +9,6 @@ import {
6
9
  MAX_ZOOM,
7
10
  MIN_ZOOM
8
11
  } from "./chunk-H2J2MTRE.js";
9
- import {
10
- geocode
11
- } from "./chunk-CB6DTWD5.js";
12
12
 
13
13
  // src/components/data-display/MapPreview/MapPreview.hooks.ts
14
14
  import { useCallback, useEffect, useRef, useState } from "react";
@@ -186,4 +186,4 @@ export {
186
186
  useMapSearch,
187
187
  useMapClick
188
188
  };
189
- //# sourceMappingURL=chunk-5NT2M2JI.js.map
189
+ //# sourceMappingURL=chunk-JKIKHWD2.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Sheet
3
- } from "./chunk-QXSV7Z57.js";
3
+ } from "./chunk-MXCIUKTQ.js";
4
4
  import {
5
5
  Dialog
6
- } from "./chunk-GAMLBJE6.js";
6
+ } from "./chunk-MQ277OLB.js";
7
7
  import {
8
8
  Button
9
9
  } from "./chunk-HM2JJNUE.js";
@@ -166,4 +166,4 @@ AppHeaderDetails.displayName = "AppHeaderDetails";
166
166
  export {
167
167
  AppHeaderDetails
168
168
  };
169
- //# sourceMappingURL=chunk-WVJGNIJZ.js.map
169
+ //# sourceMappingURL=chunk-JYR6VV4Y.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- bounceKeyframes
3
- } from "./chunk-X6AIKCAV.js";
4
1
  import {
5
2
  getScaleDistance
6
3
  } from "./chunk-CB6DTWD5.js";
4
+ import {
5
+ bounceKeyframes
6
+ } from "./chunk-X6AIKCAV.js";
7
7
  import {
8
8
  shadowInk
9
9
  } from "./chunk-FQ6UW7IY.js";
@@ -171,4 +171,4 @@ export {
171
171
  MapScaleBar,
172
172
  MapCompass
173
173
  };
174
- //# sourceMappingURL=chunk-5ETBB2DG.js.map
174
+ //# sourceMappingURL=chunk-K5V6TCYB.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-YLGY3D52.js";
9
9
  import {
10
10
  useDataViewsLayout
11
- } from "./chunk-XZJM6EPC.js";
11
+ } from "./chunk-YKEO6UHN.js";
12
12
  import {
13
13
  useDataViewsCopy
14
14
  } from "./chunk-KHG57NAE.js";
@@ -246,4 +246,4 @@ export {
246
246
  SortTab,
247
247
  DisplayTab
248
248
  };
249
- //# sourceMappingURL=chunk-3IF3I3FI.js.map
249
+ //# sourceMappingURL=chunk-KHPL2J3B.js.map
@@ -1,13 +1,19 @@
1
+ import {
2
+ DataViewsEmpty
3
+ } from "./chunk-36JKV7CA.js";
4
+ import {
5
+ GridHeaderRow
6
+ } from "./chunk-2K7WPHI3.js";
1
7
  import {
2
8
  GridMain
3
- } from "./chunk-ENRBXB6L.js";
9
+ } from "./chunk-JK5UJM4Y.js";
4
10
  import {
5
11
  FilterDialog,
6
12
  GridFilterPanel
7
13
  } from "./chunk-WZNTZX5N.js";
8
14
  import {
9
- DataViewsEmpty
10
- } from "./chunk-36JKV7CA.js";
15
+ DataViewsPagination
16
+ } from "./chunk-2S752BIJ.js";
11
17
  import {
12
18
  toOverflowFields,
13
19
  useFilterOverflow
@@ -16,24 +22,18 @@ import {
16
22
  InlineFilterControls
17
23
  } from "./chunk-4WF6ZLIW.js";
18
24
  import {
19
- GridHeaderRow
20
- } from "./chunk-2K7WPHI3.js";
21
- import {
22
- DataViewsPagination
23
- } from "./chunk-2S752BIJ.js";
25
+ ScopeTabsSlot
26
+ } from "./chunk-HQZRI7UX.js";
24
27
  import {
25
28
  ShellToolbar
26
- } from "./chunk-LH46NYGR.js";
29
+ } from "./chunk-TEEJ4GNY.js";
27
30
  import {
28
31
  resolveSelectionExtra
29
32
  } from "./chunk-KX75HM5U.js";
30
- import {
31
- ScopeTabsSlot
32
- } from "./chunk-OGB25P3N.js";
33
33
  import {
34
34
  DataViewsLayoutProvider,
35
35
  useDataViewsLayout
36
- } from "./chunk-XZJM6EPC.js";
36
+ } from "./chunk-YKEO6UHN.js";
37
37
  import {
38
38
  togglePillValues
39
39
  } from "./chunk-VPPIODKX.js";
@@ -238,4 +238,4 @@ function GridShell(props) {
238
238
  export {
239
239
  GridShell
240
240
  };
241
- //# sourceMappingURL=chunk-AXKLCWFR.js.map
241
+ //# sourceMappingURL=chunk-KN4ZE2XZ.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ CarouselChrome
3
+ } from "./chunk-WOAXKWAB.js";
1
4
  import {
2
5
  containerStyles,
3
6
  frameBox
@@ -8,9 +11,6 @@ import {
8
11
  import {
9
12
  useCarouselNavigation
10
13
  } from "./chunk-RUIV5TVA.js";
11
- import {
12
- CarouselChrome
13
- } from "./chunk-WOAXKWAB.js";
14
14
  import {
15
15
  withDefaults
16
16
  } from "./chunk-HPK33ACY.js";
@@ -151,4 +151,4 @@ var Carousel = (props) => {
151
151
  export {
152
152
  Carousel
153
153
  };
154
- //# sourceMappingURL=chunk-M3MHYE2M.js.map
154
+ //# sourceMappingURL=chunk-L566FMDD.js.map
@@ -0,0 +1,35 @@
1
+ // src/components/feedback/Dialog/Dialog.focus.ts
2
+ var FOCUSABLE_SELECTOR = [
3
+ 'input:not([disabled]):not([type="hidden"])',
4
+ "select:not([disabled])",
5
+ "textarea:not([disabled])",
6
+ "a[href]",
7
+ "button:not([disabled])",
8
+ '[tabindex]:not([tabindex="-1"])',
9
+ "audio[controls]",
10
+ "video[controls]",
11
+ '[contenteditable]:not([contenteditable="false"])'
12
+ ].join(",");
13
+ function focusFirstTabbable(target) {
14
+ const active = target.ownerDocument.activeElement;
15
+ if (active !== target && target.contains(active)) return;
16
+ const tabbable = Array.from(target.querySelectorAll(FOCUSABLE_SELECTOR)).find(
17
+ (element) => element.tabIndex >= 0
18
+ );
19
+ if (tabbable) {
20
+ tabbable.focus();
21
+ return;
22
+ }
23
+ if (!target.hasAttribute("tabindex")) target.setAttribute("tabindex", "-1");
24
+ target.focus();
25
+ }
26
+ function focusDialogOnEntered(node) {
27
+ const dialog = node.getAttribute("role") === "dialog" ? node : node.querySelector('[role="dialog"]') ?? node;
28
+ focusFirstTabbable(dialog);
29
+ }
30
+
31
+ export {
32
+ focusFirstTabbable,
33
+ focusDialogOnEntered
34
+ };
35
+ //# sourceMappingURL=chunk-LV7LSPBF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/Dialog/Dialog.focus.ts"],"sourcesContent":["/**\n * WHERE INITIAL FOCUS LANDS WHEN A DIALOG OPENS (FUT-2696).\n *\n * MUI's `FocusTrap` focuses ITS OWN root when nothing inside already has\n * focus (`FocusTrap.js`: `if (!rootRef.current.contains(doc.activeElement))\n * … rootRef.current.focus()`). For `MuiDialog` that root is\n * `.MuiDialog-container` — the `role=\"presentation\"` wrapper the Transition\n * clones its ref onto — which sits OUTSIDE the `role=\"dialog\"` paper. A\n * screen reader user landing there hears the page behind the dialog, not the\n * dialog, and the first Tab does not start from the dialog's own controls.\n *\n * The WAI-ARIA APG dialog pattern wants focus INSIDE the dialog on open: the\n * first tabbable descendant of the element carrying `role=\"dialog\"`, or that\n * element itself (given `tabIndex={-1}`, since it is not otherwise reachable\n * by Tab) when it holds nothing focusable.\n *\n * `focusDialogOnEntered` is wired to `TransitionProps.onEntered` /\n * `SlideProps.onEntered` on both renderers rather than to a mount effect,\n * because it needs to run AFTER `FocusTrap`'s own mount effect has already\n * had its turn — `onEntered` fires once the enter transition has finished,\n * well after every mount effect has settled, so there is nothing left to\n * race. A caller's own `autoFocus` on a field inside the dialog already wins\n * against `FocusTrap` for the same reason `FocusTrap` documents: React's\n * `autoFocus` runs synchronously during commit, before `FocusTrap`'s effect\n * even checks whether focus is already inside its root — so by the time this\n * runs, that field is already `contains()`-ed by the dialog and this backs\n * off rather than moving focus away from it.\n */\n\n/**\n * The candidate list `FocusTrap`'s own `defaultGetTabbable` uses\n * (`@mui/material/Unstable_TrapFocus/FocusTrap.js`), so \"first tabbable\n * descendant\" means the same thing here as it does to the trap that then\n * keeps Tab cycling inside it. Like the trap, a match whose resolved\n * `tabIndex` is -1 is skipped: `<button tabIndex={-1}>` is focusable but out\n * of the Tab order, so it is not the first Tab stop.\n */\nconst FOCUSABLE_SELECTOR = [\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'a[href]',\n 'button:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n].join(',');\n\n/**\n * Move focus into `target`: its first tabbable descendant, or `target`\n * itself — given `tabIndex={-1}` if it does not already carry one, exactly as\n * `FocusTrap` gives its own root — when nothing inside is focusable.\n *\n * Backs off when focus already sits on a DESCENDANT of `target` other than\n * `target` itself: that is a caller's `autoFocus` (or an explicit `.focus()`\n * of their own) that arrived before this ran, and it keeps winning. Focus\n * already sitting ON `target` (as `FocusTrap` leaves it on the drawer's\n * paper, which is its own trap root) is not a caller's choice, so it does\n * not block a first-tabbable descendant from taking over.\n */\nexport function focusFirstTabbable(target: HTMLElement): void {\n const active = target.ownerDocument.activeElement;\n if (active !== target && target.contains(active)) return;\n\n const tabbable = Array.from(target.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).find(\n (element) => element.tabIndex >= 0,\n );\n if (tabbable) {\n tabbable.focus();\n return;\n }\n if (!target.hasAttribute('tabindex')) target.setAttribute('tabindex', '-1');\n target.focus();\n}\n\n/**\n * `node` is what the transition hands back: `.MuiDialog-container` for\n * `ModalDialog` (the paper is a descendant, carrying `role=\"dialog\"`), or the\n * drawer's own paper directly for `DrawerDialog` (`Slide` wraps the paper with\n * no intermediate container, and the paper carries no `role` at all — see\n * `Dialog.md`). Either way, focus the `[role=\"dialog\"]` descendant if there is\n * one, else `node` itself.\n */\nexport function focusDialogOnEntered(node: HTMLElement): void {\n const dialog = node.getAttribute('role') === 'dialog'\n ? node\n : (node.querySelector<HTMLElement>('[role=\"dialog\"]') ?? node);\n focusFirstTabbable(dialog);\n}\n"],"mappings":";AAqCA,IAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAcH,SAAS,mBAAmB,QAA2B;AAC5D,QAAM,SAAS,OAAO,cAAc;AACpC,MAAI,WAAW,UAAU,OAAO,SAAS,MAAM,EAAG;AAElD,QAAM,WAAW,MAAM,KAAK,OAAO,iBAA8B,kBAAkB,CAAC,EAAE;AAAA,IACpF,CAAC,YAAY,QAAQ,YAAY;AAAA,EACnC;AACA,MAAI,UAAU;AACZ,aAAS,MAAM;AACf;AAAA,EACF;AACA,MAAI,CAAC,OAAO,aAAa,UAAU,EAAG,QAAO,aAAa,YAAY,IAAI;AAC1E,SAAO,MAAM;AACf;AAUO,SAAS,qBAAqB,MAAyB;AAC5D,QAAM,SAAS,KAAK,aAAa,MAAM,MAAM,WACzC,OACC,KAAK,cAA2B,iBAAiB,KAAK;AAC3D,qBAAmB,MAAM;AAC3B;","names":[]}
@@ -1,9 +1,9 @@
1
- import {
2
- tileBackground
3
- } from "./chunk-X6AIKCAV.js";
4
1
  import {
5
2
  TILE_WORLD_UNITS
6
3
  } from "./chunk-CB6DTWD5.js";
4
+ import {
5
+ tileBackground
6
+ } from "./chunk-X6AIKCAV.js";
7
7
  import {
8
8
  rem
9
9
  } from "./chunk-YKCAJ2TN.js";
@@ -68,4 +68,4 @@ var MapTiles = ({ origin, zoom, mapType, panOffset }) => {
68
68
  export {
69
69
  MapTiles
70
70
  };
71
- //# sourceMappingURL=chunk-HQWJUHR4.js.map
71
+ //# sourceMappingURL=chunk-M4QXG5JP.js.map
@@ -7,14 +7,14 @@ import {
7
7
  } from "./chunk-7D2C4LK2.js";
8
8
  import {
9
9
  StaticMapView
10
- } from "./chunk-RSDYS5B3.js";
10
+ } from "./chunk-4RPFI474.js";
11
11
  import {
12
12
  glassStyles,
13
13
  resolveMapPreviewProps
14
14
  } from "./chunk-4NQXHPQR.js";
15
15
  import {
16
16
  useMapPreview
17
- } from "./chunk-QSRZOXQI.js";
17
+ } from "./chunk-2WVHZIWP.js";
18
18
  import {
19
19
  rem
20
20
  } from "./chunk-YKCAJ2TN.js";
@@ -108,4 +108,4 @@ export {
108
108
  MapPreview,
109
109
  MapPreview_default
110
110
  };
111
- //# sourceMappingURL=chunk-IFS3BRRL.js.map
111
+ //# sourceMappingURL=chunk-MCJRHF7Z.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  DisplayTab,
6
6
  SortTab
7
- } from "./chunk-3IF3I3FI.js";
7
+ } from "./chunk-KHPL2J3B.js";
8
8
  import {
9
9
  ViewActions,
10
10
  ViewFooter,
@@ -265,4 +265,4 @@ function DataViewsDisplayPanel({
265
265
  export {
266
266
  DataViewsDisplayPanel
267
267
  };
268
- //# sourceMappingURL=chunk-JGRBHNK6.js.map
268
+ //# sourceMappingURL=chunk-ME3WYPYK.js.map