@12-apps/ui 6.41.2 → 6.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/_internal/components/data-display/DataGrid/DataGrid.body.js +2 -2
  2. package/dist/_internal/components/data-display/DataGrid/DataGrid.cells.js +1 -1
  3. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +3 -3
  4. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +6 -6
  5. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +7 -7
  6. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
  7. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +5 -5
  8. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +1 -1
  9. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +7 -7
  10. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
  11. package/dist/_internal/components/data-display/Lightbox/LightboxCurrentMedia.js +3 -2
  12. package/dist/_internal/components/data-display/Lightbox/LightboxMedia.js +2 -1
  13. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
  14. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -1
  15. package/dist/_internal/components/data-display/TimingDiagram/TimingDiagram.js +2 -2
  16. package/dist/_internal/components/data-display/TimingDiagram/TimingDiagram.views.js +1 -1
  17. package/dist/_internal/components/data-display/index.js +12 -12
  18. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  19. package/dist/_internal/components/feedback/TutorialOverlay/TutorialStepBody.js +1 -1
  20. package/dist/_internal/components/feedback/index.js +2 -2
  21. package/dist/_internal/components/index.js +16 -16
  22. package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
  23. package/dist/_internal/components/layout/Dashboard/DashboardParts.js +1 -1
  24. package/dist/_internal/components/layout/index.js +2 -2
  25. package/dist/_internal/en-US.data-display.js +3 -1
  26. package/dist/_internal/en-US.feedback.js +1 -1
  27. package/dist/_internal/pt-BR.data-display.js +3 -1
  28. package/dist/_internal/pt-BR.feedback.js +1 -1
  29. package/dist/{chunk-K4L42FF6.js → chunk-24JOJJ2J.js} +3 -3
  30. package/dist/chunk-24JOJJ2J.js.map +1 -0
  31. package/dist/{chunk-LODMNSLR.js → chunk-3GYPZ5MI.js} +4 -3
  32. package/dist/chunk-3GYPZ5MI.js.map +1 -0
  33. package/dist/{chunk-HFVYWHJT.js → chunk-AP4LSXRK.js} +2 -2
  34. package/dist/{chunk-MEBQKYH4.js → chunk-BX7QWHKC.js} +2 -2
  35. package/dist/{chunk-UFNIS7KC.js → chunk-GGBFDHXE.js} +11 -8
  36. package/dist/chunk-GGBFDHXE.js.map +1 -0
  37. package/dist/{chunk-2XHIF3M3.js → chunk-GXQDWHPN.js} +25 -3
  38. package/dist/chunk-GXQDWHPN.js.map +1 -0
  39. package/dist/{chunk-F7JTIHV5.js → chunk-ICDAYOJ6.js} +6 -5
  40. package/dist/chunk-ICDAYOJ6.js.map +1 -0
  41. package/dist/{chunk-ASCUWG55.js → chunk-IOCY5G43.js} +8 -3
  42. package/dist/chunk-IOCY5G43.js.map +1 -0
  43. package/dist/{chunk-3MEIGSDK.js → chunk-LTTYUSJ2.js} +5 -2
  44. package/dist/chunk-LTTYUSJ2.js.map +1 -0
  45. package/dist/{chunk-3AQD2EA6.js → chunk-M42ZOCO7.js} +10 -9
  46. package/dist/chunk-M42ZOCO7.js.map +1 -0
  47. package/dist/{chunk-GJFAI3J5.js → chunk-OOB3YWPX.js} +17 -10
  48. package/dist/chunk-OOB3YWPX.js.map +1 -0
  49. package/dist/{chunk-TZASFX6G.js → chunk-P53KRCKW.js} +4 -4
  50. package/dist/{chunk-2DWBJJK6.js → chunk-RBGUS7WO.js} +2 -2
  51. package/dist/{chunk-ZEYUSS3W.js → chunk-SQNQQTP7.js} +4 -3
  52. package/dist/chunk-SQNQQTP7.js.map +1 -0
  53. package/dist/chunk-SV4FYSDL.js +92 -0
  54. package/dist/chunk-SV4FYSDL.js.map +1 -0
  55. package/dist/{chunk-ASHXIAJO.js → chunk-UGH2DDST.js} +5 -2
  56. package/dist/chunk-UGH2DDST.js.map +1 -0
  57. package/dist/{chunk-WFAJTO2B.js → chunk-UVFZQCC7.js} +5 -9
  58. package/dist/chunk-UVFZQCC7.js.map +1 -0
  59. package/dist/{chunk-U5SH3VRJ.js → chunk-V5ZLUJV7.js} +25 -3
  60. package/dist/chunk-V5ZLUJV7.js.map +1 -0
  61. package/dist/{chunk-VCBV5JM7.js → chunk-VNOXUWK7.js} +2 -2
  62. package/dist/{chunk-IVJKILIX.js → chunk-VZ4VAQX3.js} +2 -2
  63. package/dist/{chunk-5QAJ3Y5F.js → chunk-XQWUVQ2F.js} +2 -2
  64. package/dist/{chunk-H5ZTIELC.js → chunk-ZFXTRPQO.js} +5 -4
  65. package/dist/chunk-ZFXTRPQO.js.map +1 -0
  66. package/dist/{chunk-UT73NGRS.js → chunk-ZSTUKSTJ.js} +2 -2
  67. package/dist/data-display/DataGrid.js +3 -3
  68. package/dist/data-display/DataViews.js +7 -7
  69. package/dist/data-display/Lightbox.js +7 -7
  70. package/dist/data-display/TimingDiagram.js +2 -2
  71. package/dist/en-US.js +4 -2
  72. package/dist/feedback/TutorialOverlay.js +2 -2
  73. package/dist/layout/Dashboard.js +2 -2
  74. package/dist/locales.js +8 -4
  75. package/dist/locales.js.map +1 -1
  76. package/dist/pt-BR.js +4 -2
  77. package/dist/types/components/data-display/DataGrid/DataGrid.body.d.ts.map +1 -1
  78. package/dist/types/components/data-display/DataGrid/DataGrid.cells.d.ts +3 -1
  79. package/dist/types/components/data-display/DataGrid/DataGrid.cells.d.ts.map +1 -1
  80. package/dist/types/components/data-display/DataGrid/DataGrid.d.ts +1 -1
  81. package/dist/types/components/data-display/DataGrid/DataGrid.d.ts.map +1 -1
  82. package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts +12 -2
  83. package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts.map +1 -1
  84. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +8 -2
  85. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  86. package/dist/types/components/data-display/DataViews/data-views-grid-bodies.d.ts.map +1 -1
  87. package/dist/types/components/data-display/Lightbox/Lightbox.d.ts.map +1 -1
  88. package/dist/types/components/data-display/Lightbox/LightboxMedia.d.ts.map +1 -1
  89. package/dist/types/components/data-display/Lightbox/LightboxThumbnails.d.ts.map +1 -1
  90. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.d.ts.map +1 -1
  91. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.views.d.ts +2 -0
  92. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.views.d.ts.map +1 -1
  93. package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
  94. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts +22 -12
  95. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts.map +1 -1
  96. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts +1 -1
  97. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts.map +1 -1
  98. package/dist/types/copy/data-display.d.ts +40 -1
  99. package/dist/types/copy/data-display.d.ts.map +1 -1
  100. package/dist/types/copy/feedback.d.ts +7 -1
  101. package/dist/types/copy/feedback.d.ts.map +1 -1
  102. package/dist/types/en-US.data-display.d.ts +2 -1
  103. package/dist/types/en-US.data-display.d.ts.map +1 -1
  104. package/dist/types/en-US.feedback.d.ts.map +1 -1
  105. package/dist/types/locales.d.ts +2 -1
  106. package/dist/types/locales.d.ts.map +1 -1
  107. package/dist/types/pt-BR.data-display.d.ts +2 -1
  108. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  109. package/dist/types/pt-BR.feedback.d.ts.map +1 -1
  110. package/package.json +1 -1
  111. package/src/components/data-display/DataGrid/DataGrid.body.tsx +2 -1
  112. package/src/components/data-display/DataGrid/DataGrid.cells.tsx +7 -4
  113. package/src/components/data-display/DataGrid/DataGrid.tsx +2 -1
  114. package/src/components/data-display/DataGrid/DataGrid.types.ts +13 -2
  115. package/src/components/data-display/DataViews/data-views-copy.ts +8 -2
  116. package/src/components/data-display/DataViews/data-views-grid-bodies.tsx +1 -0
  117. package/src/components/data-display/Lightbox/Lightbox.tsx +8 -2
  118. package/src/components/data-display/Lightbox/LightboxMedia.tsx +5 -2
  119. package/src/components/data-display/Lightbox/LightboxThumbnails.tsx +7 -3
  120. package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +10 -7
  121. package/src/components/data-display/TimingDiagram/TimingDiagram.views.tsx +6 -2
  122. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +2 -2
  123. package/src/components/layout/Dashboard/Dashboard.types.ts +22 -12
  124. package/src/components/layout/Dashboard/DashboardParts.tsx +10 -7
  125. package/src/copy/data-display.ts +41 -1
  126. package/src/copy/feedback.ts +7 -1
  127. package/src/en-US.data-display.ts +23 -0
  128. package/src/en-US.feedback.ts +3 -0
  129. package/src/locales.ts +2 -0
  130. package/src/pt-BR.data-display.ts +23 -0
  131. package/src/pt-BR.feedback.ts +3 -0
  132. package/dist/chunk-2XHIF3M3.js.map +0 -1
  133. package/dist/chunk-3AQD2EA6.js.map +0 -1
  134. package/dist/chunk-3MEIGSDK.js.map +0 -1
  135. package/dist/chunk-ASCUWG55.js.map +0 -1
  136. package/dist/chunk-ASHXIAJO.js.map +0 -1
  137. package/dist/chunk-BAFDSAWY.js +0 -86
  138. package/dist/chunk-BAFDSAWY.js.map +0 -1
  139. package/dist/chunk-F7JTIHV5.js.map +0 -1
  140. package/dist/chunk-GJFAI3J5.js.map +0 -1
  141. package/dist/chunk-H5ZTIELC.js.map +0 -1
  142. package/dist/chunk-K4L42FF6.js.map +0 -1
  143. package/dist/chunk-LODMNSLR.js.map +0 -1
  144. package/dist/chunk-U5SH3VRJ.js.map +0 -1
  145. package/dist/chunk-UFNIS7KC.js.map +0 -1
  146. package/dist/chunk-WFAJTO2B.js.map +0 -1
  147. package/dist/chunk-ZEYUSS3W.js.map +0 -1
  148. /package/dist/{chunk-HFVYWHJT.js.map → chunk-AP4LSXRK.js.map} +0 -0
  149. /package/dist/{chunk-MEBQKYH4.js.map → chunk-BX7QWHKC.js.map} +0 -0
  150. /package/dist/{chunk-TZASFX6G.js.map → chunk-P53KRCKW.js.map} +0 -0
  151. /package/dist/{chunk-2DWBJJK6.js.map → chunk-RBGUS7WO.js.map} +0 -0
  152. /package/dist/{chunk-VCBV5JM7.js.map → chunk-VNOXUWK7.js.map} +0 -0
  153. /package/dist/{chunk-IVJKILIX.js.map → chunk-VZ4VAQX3.js.map} +0 -0
  154. /package/dist/{chunk-5QAJ3Y5F.js.map → chunk-XQWUVQ2F.js.map} +0 -0
  155. /package/dist/{chunk-UT73NGRS.js.map → chunk-ZSTUKSTJ.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  GridBody,
3
3
  GridHeader
4
- } from "./chunk-H5ZTIELC.js";
4
+ } from "./chunk-ZFXTRPQO.js";
5
5
  import {
6
6
  DataGridEmpty,
7
7
  DataGridError,
@@ -30,7 +30,7 @@ function resolveChrome(props) {
30
30
  },
31
31
  placeholder: {
32
32
  dataTestId,
33
- ariaLabel: props.ariaLabel ?? "Data grid",
33
+ ariaLabel: props.ariaLabel ?? props.copy.gridLabel,
34
34
  className,
35
35
  style,
36
36
  // Only the DOM-safe leftovers reach the element: every grid-specific prop
@@ -80,6 +80,7 @@ var DataGrid = (props) => {
80
80
  );
81
81
  };
82
82
  var GRID_ONLY_PROPS = [
83
+ "copy",
83
84
  "rows",
84
85
  "columns",
85
86
  "getRowId",
@@ -117,4 +118,4 @@ export {
117
118
  DataGrid,
118
119
  GRID_ONLY_PROPS
119
120
  };
120
- //# sourceMappingURL=chunk-ZEYUSS3W.js.map
121
+ //# sourceMappingURL=chunk-SQNQQTP7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataGrid/DataGrid.tsx"],"sourcesContent":["/**\n * `DataGrid` — the shell.\n *\n * Everything that is not \"which of the four renders is this, and what wraps the\n * table\" lives beside it: the state in `DataGrid.model.ts`, the client-mode row\n * pipeline in `DataGrid.rows.ts`, the cells and rows in `DataGrid.cells.tsx`,\n * the head/body in `DataGrid.body.tsx`, and the loading/error/empty renders in\n * `DataGrid.states.tsx`.\n *\n * All FOUR renders carry the caller's `data-testid`. It used to be applied only\n * on the populated one, so a grid whose first paint had no rows could not be\n * found by a test at all — see `DataGrid.states.tsx` for the full story.\n */\nimport Paper from '@mui/material/Paper/index.js';\nimport Table from '@mui/material/Table/index.js';\nimport TableContainer from '@mui/material/TableContainer/index.js';\nimport type React from 'react';\n\nimport { GridBody, GridHeader } from './DataGrid.body';\nimport { useDataGridModel } from './DataGrid.model';\nimport { DataGridEmpty, DataGridError, DataGridLoading } from './DataGrid.states';\nimport type { DataGridProps } from './DataGrid.types';\n\n/**\n * The chrome every render needs, with the defaults resolved ONCE.\n *\n * Extracted from the component body because a dozen destructuring defaults are\n * a dozen branches: the gate counted them, correctly, as complexity the render\n * did not need to carry.\n */\nfunction resolveChrome<T extends Record<string, unknown>>(props: DataGridProps<T>): {\n dataAttrs: Record<string, unknown>;\n placeholder: {\n dataTestId?: string;\n ariaLabel: string;\n className?: string;\n style?: React.CSSProperties;\n htmlProps: React.HTMLAttributes<HTMLElement>;\n };\n} {\n const { className, style, 'data-testid': dataTestId, ...rest } = props;\n const stickyHeader = props.stickyHeader ?? true;\n return {\n dataAttrs: {\n 'data-ui': 'datagrid',\n 'data-density': props.density ?? 'comfortable',\n 'data-size-mode': props.sizeMode ?? 'auto',\n 'data-virtual-rows': props.virtualizeRows ?? true,\n 'data-virtual-cols': props.virtualizeColumns ?? false,\n 'data-sticky-header': stickyHeader,\n },\n placeholder: {\n dataTestId,\n ariaLabel: props.ariaLabel ?? props.copy.gridLabel,\n className,\n style,\n // Only the DOM-safe leftovers reach the element: every grid-specific prop\n // is named in `GRID_ONLY_PROPS`, so this cannot smuggle `rows` onto a div.\n htmlProps: omitGridProps(rest as Record<string, unknown>),\n },\n };\n}\n\nexport const DataGrid = <T extends Record<string, unknown> = Record<string, unknown>>(\n props: DataGridProps<T>,\n): React.JSX.Element => {\n const model = useDataGridModel(props);\n const { dataAttrs, placeholder } = resolveChrome(props);\n\n if (props.loading) return <DataGridLoading {...placeholder} />;\n if (props.error) return <DataGridError {...placeholder} error={props.error} />;\n if (model.processedRows.length === 0) {\n return <DataGridEmpty {...placeholder} emptyState={props.emptyState} emptyText={props.emptyText} />;\n }\n\n const leadingColumns = (props.selection?.mode ?? 'none') !== 'none' ? 1 : 0;\n const totalColumns =\n model.visibleColumns.length + leadingColumns + (props.expansion ? 1 : 0);\n const section = { model, props, totalColumns };\n\n return (\n <Paper\n ref={model.containerRef}\n {...dataAttrs}\n data-testid={placeholder.dataTestId}\n className={placeholder.className}\n style={placeholder.style}\n role=\"grid\"\n aria-label={placeholder.ariaLabel}\n aria-description={props.ariaDescription}\n aria-rowcount={model.processedRows.length + 1} // +1 for the header row\n aria-colcount={totalColumns}\n sx={{ height: '100%', overflow: 'hidden', display: 'flex', flexDirection: 'column' }}\n {...placeholder.htmlProps}\n >\n <TableContainer\n sx={{ flex: 1, overflow: 'auto', position: 'relative' }}\n onScroll={model.onScroll}\n >\n <Table stickyHeader={props.stickyHeader ?? true}>\n <GridHeader {...section} />\n <GridBody {...section} />\n </Table>\n </TableContainer>\n </Paper>\n );\n};\n\n/**\n * The grid props that are NOT HTML attributes.\n *\n * `DataGridProps` extends `HTMLAttributes`, so the rest-spread carries the\n * grid's own configuration too. React would warn (or worse, serialize an array\n * of rows into an attribute) if any of it reached the DOM.\n *\n * Exported so a test can render a grid carrying every name on it and assert\n * none reaches the DOM — the check that would have caught `emptyText` missing.\n */\nexport const GRID_ONLY_PROPS = [\n 'copy',\n 'rows',\n 'columns',\n 'getRowId',\n 'sizeMode',\n 'density',\n 'rowHeight',\n 'headerHeight',\n 'footerHeight',\n 'selection',\n 'pagination',\n 'sorting',\n 'filtering',\n 'expansion',\n 'editing',\n 'virtualizeRows',\n 'virtualizeColumns',\n 'stickyHeader',\n 'stickyFooter',\n 'loading',\n 'error',\n 'emptyState',\n 'emptyText',\n 'onRequestData',\n 'ariaLabel',\n 'ariaDescription',\n] as const;\n\nfunction omitGridProps(rest: Record<string, unknown>): React.HTMLAttributes<HTMLElement> {\n const html: Record<string, unknown> = { ...rest };\n for (const key of GRID_ONLY_PROPS) delete html[key];\n return html as React.HTMLAttributes<HTMLElement>;\n}\n\nDataGrid.displayName = 'DataGrid';\n"],"mappings":";;;;;;;;;;;;;;AAaA,OAAO,WAAW;AAClB,OAAO,WAAW;AAClB,OAAO,oBAAoB;AAsDC,cA8BpB,YA9BoB;AAvC5B,SAAS,cAAiD,OASxD;AACA,QAAM,EAAE,WAAW,OAAO,eAAe,YAAY,GAAG,KAAK,IAAI;AACjE,QAAM,eAAe,MAAM,gBAAgB;AAC3C,SAAO;AAAA,IACL,WAAW;AAAA,MACT,WAAW;AAAA,MACX,gBAAgB,MAAM,WAAW;AAAA,MACjC,kBAAkB,MAAM,YAAY;AAAA,MACpC,qBAAqB,MAAM,kBAAkB;AAAA,MAC7C,qBAAqB,MAAM,qBAAqB;AAAA,MAChD,sBAAsB;AAAA,IACxB;AAAA,IACA,aAAa;AAAA,MACX;AAAA,MACA,WAAW,MAAM,aAAa,MAAM,KAAK;AAAA,MACzC;AAAA,MACA;AAAA;AAAA;AAAA,MAGA,WAAW,cAAc,IAA+B;AAAA,IAC1D;AAAA,EACF;AACF;AAEO,IAAM,WAAW,CACtB,UACsB;AACtB,QAAM,QAAQ,iBAAiB,KAAK;AACpC,QAAM,EAAE,WAAW,YAAY,IAAI,cAAc,KAAK;AAEtD,MAAI,MAAM,QAAS,QAAO,oBAAC,mBAAiB,GAAG,aAAa;AAC5D,MAAI,MAAM,MAAO,QAAO,oBAAC,iBAAe,GAAG,aAAa,OAAO,MAAM,OAAO;AAC5E,MAAI,MAAM,cAAc,WAAW,GAAG;AACpC,WAAO,oBAAC,iBAAe,GAAG,aAAa,YAAY,MAAM,YAAY,WAAW,MAAM,WAAW;AAAA,EACnG;AAEA,QAAM,kBAAkB,MAAM,WAAW,QAAQ,YAAY,SAAS,IAAI;AAC1E,QAAM,eACJ,MAAM,eAAe,SAAS,kBAAkB,MAAM,YAAY,IAAI;AACxE,QAAM,UAAU,EAAE,OAAO,OAAO,aAAa;AAE7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,MAAM;AAAA,MACV,GAAG;AAAA,MACJ,eAAa,YAAY;AAAA,MACzB,WAAW,YAAY;AAAA,MACvB,OAAO,YAAY;AAAA,MACnB,MAAK;AAAA,MACL,cAAY,YAAY;AAAA,MACxB,oBAAkB,MAAM;AAAA,MACxB,iBAAe,MAAM,cAAc,SAAS;AAAA,MAC5C,iBAAe;AAAA,MACf,IAAI,EAAE,QAAQ,QAAQ,UAAU,UAAU,SAAS,QAAQ,eAAe,SAAS;AAAA,MAClF,GAAG,YAAY;AAAA,MAEhB;AAAA,QAAC;AAAA;AAAA,UACC,IAAI,EAAE,MAAM,GAAG,UAAU,QAAQ,UAAU,WAAW;AAAA,UACtD,UAAU,MAAM;AAAA,UAEhB,+BAAC,SAAM,cAAc,MAAM,gBAAgB,MACzC;AAAA,gCAAC,cAAY,GAAG,SAAS;AAAA,YACzB,oBAAC,YAAU,GAAG,SAAS;AAAA,aACzB;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAYO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,cAAc,MAAkE;AACvF,QAAM,OAAgC,EAAE,GAAG,KAAK;AAChD,aAAW,OAAO,gBAAiB,QAAO,KAAK,GAAG;AAClD,SAAO;AACT;AAEA,SAAS,cAAc;","names":[]}
@@ -0,0 +1,92 @@
1
+ import {
2
+ thumbnailStripSx
3
+ } from "./chunk-3KA6MYIR.js";
4
+ import {
5
+ useLightboxCopy
6
+ } from "./chunk-TEQYTEM2.js";
7
+ import {
8
+ onMedia,
9
+ sheen
10
+ } from "./chunk-FQ6UW7IY.js";
11
+ import {
12
+ rem,
13
+ sxRem
14
+ } from "./chunk-YKCAJ2TN.js";
15
+
16
+ // src/components/data-display/Lightbox/LightboxThumbnails.tsx
17
+ import PlayIcon from "@mui/icons-material/PlayArrow";
18
+ import Box from "@mui/material/Box/index.js";
19
+ import { jsx } from "react/jsx-runtime";
20
+ var THUMB = { widthPx: 60, heightPx: 40 };
21
+ var frame = (theme, color) => `${rem(theme, 2)} solid ${color}`;
22
+ var VideoThumbnail = () => /* @__PURE__ */ jsx(
23
+ Box,
24
+ {
25
+ sx: {
26
+ width: "100%",
27
+ height: "100%",
28
+ background: (theme) => sheen(theme, 0.1),
29
+ display: "flex",
30
+ alignItems: "center",
31
+ justifyContent: "center"
32
+ },
33
+ children: /* @__PURE__ */ jsx(PlayIcon, { sx: { color: onMedia, fontSize: sxRem(16) } })
34
+ }
35
+ );
36
+ var LightboxThumbnails = ({
37
+ items,
38
+ currentIndex,
39
+ testId,
40
+ onSelect
41
+ }) => {
42
+ const copy = useLightboxCopy();
43
+ return /* @__PURE__ */ jsx(
44
+ Box,
45
+ {
46
+ sx: {
47
+ ...thumbnailStripSx,
48
+ position: "absolute",
49
+ bottom: sxRem(16),
50
+ left: "50%",
51
+ transform: "translateX(-50%)",
52
+ display: "flex",
53
+ gap: 1,
54
+ maxWidth: "90vw",
55
+ overflowX: "auto",
56
+ padding: 1
57
+ },
58
+ "data-testid": testId("thumbnails"),
59
+ children: items.map((item, index) => /* @__PURE__ */ jsx(
60
+ Box,
61
+ {
62
+ onClick: () => onSelect(index),
63
+ sx: {
64
+ width: sxRem(THUMB.widthPx),
65
+ height: sxRem(THUMB.heightPx),
66
+ cursor: "pointer",
67
+ border: (theme) => frame(theme, currentIndex === index ? onMedia(theme) : "transparent"),
68
+ borderRadius: 0.5,
69
+ overflow: "hidden",
70
+ flexShrink: 0,
71
+ "&:hover": { border: (theme) => frame(theme, sheen(theme, 0.7)) }
72
+ },
73
+ "data-testid": testId(`thumbnail-${index}`),
74
+ children: item.type === "video" ? /* @__PURE__ */ jsx(VideoThumbnail, {}) : /* @__PURE__ */ jsx(
75
+ "img",
76
+ {
77
+ src: item.src,
78
+ alt: item.alt || copy.thumbnailFallback(index + 1),
79
+ style: { width: "100%", height: "100%", objectFit: "cover" }
80
+ }
81
+ )
82
+ },
83
+ `${item.src}-${index}`
84
+ ))
85
+ }
86
+ );
87
+ };
88
+
89
+ export {
90
+ LightboxThumbnails
91
+ };
92
+ //# sourceMappingURL=chunk-SV4FYSDL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Lightbox/LightboxThumbnails.tsx"],"sourcesContent":["import PlayIcon from '@mui/icons-material/PlayArrow';\nimport Box from '@mui/material/Box/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { thumbnailStripSx } from './Lightbox.constants';\nimport { useLightboxCopy } from './lightbox-copy-context';\nimport type { LightboxItem } from './Lightbox.types';\nimport { onMedia, sheen } from '../../../tokens/ink';\nimport { rem, sxRem } from '../../../tokens/relative';\n\n/** One filmstrip frame, in design px. */\nconst THUMB = { widthPx: 60, heightPx: 40 } as const;\n\nconst frame = (theme: Theme, color: string): string => `${rem(theme, 2)} solid ${color}`;\n\nconst VideoThumbnail: FC = () => (\n <Box\n sx={{\n width: '100%',\n height: '100%',\n background: (theme: Theme) => sheen(theme, 0.1),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <PlayIcon sx={{ color: onMedia, fontSize: sxRem(16) }} />\n </Box>\n);\n\nexport interface LightboxThumbnailsProps {\n items: LightboxItem[];\n currentIndex: number;\n testId: (suffix: string) => string;\n onSelect: (index: number) => void;\n}\n\nexport const LightboxThumbnails: FC<LightboxThumbnailsProps> = ({\n items,\n currentIndex,\n testId,\n onSelect,\n}) => {\n const copy = useLightboxCopy();\n return (\n <Box\n sx={{\n ...thumbnailStripSx,\n position: 'absolute',\n bottom: sxRem(16),\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n gap: 1,\n maxWidth: '90vw',\n overflowX: 'auto',\n padding: 1,\n }}\n data-testid={testId('thumbnails')}\n >\n {items.map((item, index) => (\n <Box\n key={`${item.src}-${index}`}\n onClick={() => onSelect(index)}\n sx={{\n width: sxRem(THUMB.widthPx),\n height: sxRem(THUMB.heightPx),\n cursor: 'pointer',\n border: (theme: Theme) => frame(theme, currentIndex === index ? onMedia(theme) : 'transparent'),\n borderRadius: 0.5,\n overflow: 'hidden',\n flexShrink: 0,\n '&:hover': { border: (theme: Theme) => frame(theme, sheen(theme, 0.7)) },\n }}\n data-testid={testId(`thumbnail-${index}`)}\n >\n {item.type === 'video' ? (\n <VideoThumbnail />\n ) : (\n <img\n src={item.src}\n alt={item.alt || copy.thumbnailFallback(index + 1)}\n style={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n )}\n </Box>\n ))}\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,cAAc;AACrB,OAAO,SAAS;AA2BZ;AAfJ,IAAM,QAAQ,EAAE,SAAS,IAAI,UAAU,GAAG;AAE1C,IAAM,QAAQ,CAAC,OAAc,UAA0B,GAAG,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK;AAEtF,IAAM,iBAAqB,MACzB;AAAA,EAAC;AAAA;AAAA,IACC,IAAI;AAAA,MACF,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY,CAAC,UAAiB,MAAM,OAAO,GAAG;AAAA,MAC9C,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,IAClB;AAAA,IAEA,8BAAC,YAAS,IAAI,EAAE,OAAO,SAAS,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA;AACzD;AAUK,IAAM,qBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,OAAO,gBAAgB;AAC7B,SACA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,QACF,GAAG;AAAA,QACH,UAAU;AAAA,QACV,QAAQ,MAAM,EAAE;AAAA,QAChB,MAAM;AAAA,QACN,WAAW;AAAA,QACX,SAAS;AAAA,QACT,KAAK;AAAA,QACL,UAAU;AAAA,QACV,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,MACA,eAAa,OAAO,YAAY;AAAA,MAE/B,gBAAM,IAAI,CAAC,MAAM,UAChB;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,SAAS,KAAK;AAAA,UAC7B,IAAI;AAAA,YACF,OAAO,MAAM,MAAM,OAAO;AAAA,YAC1B,QAAQ,MAAM,MAAM,QAAQ;AAAA,YAC5B,QAAQ;AAAA,YACR,QAAQ,CAAC,UAAiB,MAAM,OAAO,iBAAiB,QAAQ,QAAQ,KAAK,IAAI,aAAa;AAAA,YAC9F,cAAc;AAAA,YACd,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,WAAW,EAAE,QAAQ,CAAC,UAAiB,MAAM,OAAO,MAAM,OAAO,GAAG,CAAC,EAAE;AAAA,UACzE;AAAA,UACA,eAAa,OAAO,aAAa,KAAK,EAAE;AAAA,UAEvC,eAAK,SAAS,UACb,oBAAC,kBAAe,IAEhB;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,KAAK;AAAA,cACV,KAAK,KAAK,OAAO,KAAK,kBAAkB,QAAQ,CAAC;AAAA,cACjD,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,WAAW,QAAQ;AAAA;AAAA,UAC7D;AAAA;AAAA,QArBG,GAAG,KAAK,GAAG,IAAI,KAAK;AAAA,MAuB3B,CACD;AAAA;AAAA,EACH;AAEF;","names":[]}
@@ -3,7 +3,10 @@ var EN_US_TUTORIAL_COPY = {
3
3
  skip: "Skip",
4
4
  previous: "Back",
5
5
  next: "Next",
6
- restart: "Start over"
6
+ restart: "Start over",
7
+ complete: "Complete",
8
+ finish: "Finish",
9
+ requiresAction: "Complete the required action first"
7
10
  };
8
11
  var EN_US_CHROME_COPY = {
9
12
  dismissToast: "Dismiss",
@@ -85,4 +88,4 @@ export {
85
88
  EN_US_CHROME_COPY,
86
89
  EN_US_NOTIFICATION_UNBLOCK_COPY
87
90
  };
88
- //# sourceMappingURL=chunk-ASHXIAJO.js.map
91
+ //# sourceMappingURL=chunk-UGH2DDST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/en-US.feedback.ts"],"sourcesContent":["/**\n * The en-US pack for the feedback family. Split the same way\n * `pt-BR.feedback.ts` is — see `en-US.ts` for why.\n */\nimport type {\n ChromeCopy,\n NotificationUnblockCopy,\n TutorialCopy,\n} from './copy';\n\nexport const EN_US_TUTORIAL_COPY: TutorialCopy = {\n skip: \"Skip\",\n previous: \"Back\",\n next: \"Next\",\n restart: \"Start over\",\n complete: \"Complete\",\n finish: \"Finish\",\n requiresAction: \"Complete the required action first\",\n};\n\nexport const EN_US_CHROME_COPY: ChromeCopy = {\n dismissToast: \"Dismiss\",\n goBack: \"Back\",\n closePanel: \"Close\",\n closeTab: \"Close tab\",\n scrollRegion: \"Scrollable content\",\n scrollToTop: \"Back to top\",\n share: \"Share\",\n};\n\nconst EN_US_CHROMIUM_DESKTOP = [\n \"Click the icon to the left of the site's address.\",\n \"Open \\\"Site settings\\\".\",\n \"Under \\\"Notifications\\\", choose \\\"Allow\\\".\",\n \"Come back to this page and reload it.\",\n] as const;\n\nconst EN_US_CHROMIUM_ANDROID = [\n \"Tap the icon to the left of the site's address.\",\n \"Tap \\\"Permissions\\\".\",\n \"Tap \\\"Notifications\\\" and choose \\\"Allow\\\".\",\n \"Come back to this page and reload it.\",\n] as const;\n\nexport const EN_US_NOTIFICATION_UNBLOCK_COPY: NotificationUnblockCopy = {\n ios: [\n \"Open the iPhone's Settings.\",\n \"Tap \\\"Notifications\\\".\",\n \"Find this app in the list and turn on \\\"Allow Notifications\\\".\",\n ],\n chrome: { desktop: EN_US_CHROMIUM_DESKTOP, android: EN_US_CHROMIUM_ANDROID },\n edge: {\n desktop: [\n \"Click the lock to the left of the site's address.\",\n \"Open \\\"Permissions for this site\\\".\",\n \"Under \\\"Notifications\\\", choose \\\"Allow\\\".\",\n \"Come back to this page and reload it.\",\n ],\n android: EN_US_CHROMIUM_ANDROID,\n },\n firefox: {\n desktop: [\n \"Click the permissions icon to the left of the site's address.\",\n \"Next to \\\"Send notifications\\\", click the X to clear the block.\",\n \"Reload the page and turn notifications on again.\",\n ],\n android: [\n \"Open the browser menu and tap \\\"Settings\\\".\",\n \"Tap \\\"Site permissions\\\", then \\\"Notifications\\\".\",\n \"Find this site and choose \\\"Allow\\\".\",\n \"Come back to this page and reload it.\",\n ],\n },\n opera: { desktop: EN_US_CHROMIUM_DESKTOP, android: EN_US_CHROMIUM_ANDROID },\n safari: {\n desktop: [\n \"In the Safari menu, open \\\"Settings\\\".\",\n \"Go to the \\\"Websites\\\" tab and pick \\\"Notifications\\\" in the sidebar.\",\n \"Find this site and choose \\\"Allow\\\".\",\n \"Come back to this page and reload it.\",\n ],\n },\n samsung: {\n android: [\n \"Open the browser menu and tap \\\"Settings\\\".\",\n \"Tap \\\"Sites and downloads\\\", then \\\"Notifications\\\".\",\n \"Find this site and allow notifications.\",\n \"Come back to this page and reload it.\",\n ],\n },\n other: [\n \"Open the browser's settings.\",\n \"Look for site permissions, then \\\"Notifications\\\".\",\n \"Allow notifications for this site.\",\n \"Come back to this page and reload it.\",\n ],\n};\n"],"mappings":";AAUO,IAAM,sBAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,gBAAgB;AAClB;AAEO,IAAM,oBAAgC;AAAA,EAC3C,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,cAAc;AAAA,EACd,aAAa;AAAA,EACb,OAAO;AACT;AAEA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,kCAA2D;AAAA,EACtE,KAAK;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ,EAAE,SAAS,wBAAwB,SAAS,uBAAuB;AAAA,EAC3E,MAAM;AAAA,IACJ,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,EAAE,SAAS,wBAAwB,SAAS,uBAAuB;AAAA,EAC1E,QAAQ;AAAA,IACN,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -179,6 +179,7 @@ var StackedView = ({
179
179
  phases,
180
180
  percentages,
181
181
  data,
182
+ copy,
182
183
  animated,
183
184
  showLabels,
184
185
  showTooltips
@@ -205,10 +206,7 @@ var StackedView = ({
205
206
  }) }),
206
207
  /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", justifyContent: "space-between", mt: 1 }, children: [
207
208
  /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "text.secondary", children: "0ms" }),
208
- /* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "text.secondary", fontWeight: "bold", children: [
209
- "Total: ",
210
- formatTime(data.total)
211
- ] })
209
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "text.secondary", fontWeight: "bold", children: copy.total(formatTime(data.total)) })
212
210
  ] })
213
211
  ] });
214
212
  };
@@ -267,6 +265,7 @@ var HorizontalView = ({
267
265
  phases,
268
266
  percentages,
269
267
  data,
268
+ copy,
270
269
  animated
271
270
  }) => {
272
271
  const theme = useTheme();
@@ -287,10 +286,7 @@ var HorizontalView = ({
287
286
  },
288
287
  phase.key
289
288
  )),
290
- /* @__PURE__ */ jsx(Box, { sx: { mt: 2, pt: 2, borderTop: `1px solid ${alpha(theme.palette.divider, 0.2)}` }, children: /* @__PURE__ */ jsxs(Typography, { variant: "body2", fontWeight: "bold", color: "primary", children: [
291
- "Total Time: ",
292
- formatTime(data.total)
293
- ] }) })
289
+ /* @__PURE__ */ jsx(Box, { sx: { mt: 2, pt: 2, borderTop: `1px solid ${alpha(theme.palette.divider, 0.2)}` }, children: /* @__PURE__ */ jsx(Typography, { variant: "body2", fontWeight: "bold", color: "primary", children: copy.totalTime(formatTime(data.total)) }) })
294
290
  ] });
295
291
  };
296
292
 
@@ -301,4 +297,4 @@ export {
301
297
  StackedView,
302
298
  HorizontalView
303
299
  };
304
- //# sourceMappingURL=chunk-WFAJTO2B.js.map
300
+ //# sourceMappingURL=chunk-UVFZQCC7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/TimingDiagram/TimingDiagram.views.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Tooltip from '@mui/material/Tooltip/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport type { FC, ReactElement } from 'react';\nimport React from 'react';\n\nimport type { TimingData } from './TimingDiagram.types';\nimport type { TimingDiagramCopy } from '../../../copy';\nimport { onMedia, sheen, uiInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\nexport type PhaseKey = 'dns' | 'connect' | 'ssl' | 'request' | 'response';\n\n// Each phase's colour, from the theme's named timing set (`uiInk`).\nexport const phaseColors = (theme: Theme): Record<PhaseKey, string> => {\n const phases = uiInk(theme).timingPhases;\n return {\n dns: phases.dns,\n connect: phases.connect,\n ssl: phases.tls,\n request: phases.request,\n response: phases.response,\n };\n};\n\nexport interface Phase {\n key: string;\n label: string;\n value?: number;\n}\n\nexport interface TimingViewProps {\n phases: Phase[];\n percentages: Record<string, number>;\n data: TimingData;\n copy: TimingDiagramCopy;\n animated: boolean;\n showLabels: boolean;\n showTooltips: boolean;\n /** The waterfall's plot height in design px — drawn through `rem`. */\n plotHeightPx: number;\n}\n\nexport const formatTime = (ms: number): string => {\n if (ms < 1000) return `${ms}ms`;\n return `${(ms / 1000).toFixed(2)}s`;\n};\n\nconst colorOf = (theme: Theme, phase: Phase): string => phaseColors(theme)[phase.key as PhaseKey];\nconst widthOf = (percentages: Record<string, number>, phase: Phase): number =>\n percentages[phase.key] ?? 0;\n\n// Waterfall and stacked both offer the same hover explanation of a segment; only\n// whether tooltips are on at all varies.\nconst withTooltip = (\n phase: Phase,\n enabled: boolean,\n element: ReactElement,\n): ReactElement =>\n enabled ? (\n <Tooltip\n key={phase.key}\n title={`${phase.label}: ${formatTime(phase.value!)}`}\n placement=\"top\"\n role=\"tooltip\"\n aria-describedby={`tooltip-${phase.key}`}\n >\n {element}\n </Tooltip>\n ) : (\n element\n );\n\nconst WaterfallContainer = styled(Box)(({ theme }) => ({\n position: 'relative',\n width: '100%',\n marginTop: theme.spacing(2),\n}));\n\nconst WaterfallBar = styled(Box, {\n shouldForwardProp: (prop) =>\n !['phaseColor', 'offset', 'widthPct', 'animated'].includes(prop as string),\n})<{\n phaseColor: string;\n offset: number;\n widthPct: number;\n animated: boolean;\n}>(({ theme, phaseColor, offset, widthPct, animated }) => ({\n position: 'absolute',\n height: rem(theme, 32),\n left: `${offset}%`,\n width: `${widthPct}%`,\n background: `linear-gradient(90deg, ${phaseColor} 0%, ${alpha(phaseColor, 0.8)} 100%)`,\n borderRadius: theme.shape.borderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.palette.getContrastText(phaseColor),\n fontSize: rem(theme, 12),\n fontWeight: 500,\n boxShadow: `${rems(theme, 0, 2, 8)} ${alpha(phaseColor, 0.3)}`,\n transition: animated ? 'all 0.5s ease' : 'none',\n animation: animated ? 'slideIn 0.5s ease' : 'none',\n '@keyframes slideIn': {\n from: {\n transform: `translateX(${rem(theme, -20)})`,\n opacity: 0,\n },\n to: {\n transform: 'translateX(0)',\n opacity: 1,\n },\n },\n '&:hover': {\n transform: `translateY(${rem(theme, -2)})`,\n boxShadow: `${rems(theme, 0, 4, 12)} ${alpha(phaseColor, 0.5)}`,\n zIndex: 10,\n },\n}));\n\nconst TimelineAxis = styled(Box)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'space-between',\n marginTop: theme.spacing(1),\n paddingTop: theme.spacing(1),\n borderTop: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n}));\n\nconst TimeLabel = styled(Typography)(({ theme }) => ({\n fontSize: rem(theme, 11.2),\n color: theme.palette.text.secondary,\n fontWeight: 500,\n}));\n\nexport const WaterfallView: FC<TimingViewProps> = ({\n phases,\n percentages,\n data,\n animated,\n showLabels,\n showTooltips,\n plotHeightPx,\n}) => {\n const theme = useTheme();\n // Each bar starts where the previous one ended, so the row reads as a timeline.\n let offset = 0;\n\n return (\n <WaterfallContainer style={{ height: rem(theme, plotHeightPx + 40) }} data-variant=\"waterfall\">\n {phases.map((phase, index) => {\n const width = widthOf(percentages, phase);\n const currentOffset = offset;\n offset += width;\n\n return withTooltip(\n phase,\n showTooltips,\n <WaterfallBar\n key={phase.key}\n data-testid={`timing-segment-${phase.key}`}\n phaseColor={colorOf(theme, phase)}\n offset={currentOffset}\n widthPct={width}\n animated={animated}\n data-animated={animated.toString()}\n style={{\n top: rem(theme, index * 8),\n width: `${width}%`,\n left: `${currentOffset}%`,\n }}\n >\n {showLabels && width > 10 && (\n <span data-testid=\"timing-label\">{formatTime(phase.value!)}</span>\n )}\n </WaterfallBar>,\n );\n })}\n <TimelineAxis style={{ marginTop: rem(theme, plotHeightPx) }}>\n <TimeLabel>0ms</TimeLabel>\n <TimeLabel>{formatTime(data.total / 2)}</TimeLabel>\n <TimeLabel>{formatTime(data.total)}</TimeLabel>\n </TimelineAxis>\n </WaterfallContainer>\n );\n};\n\nconst StackedBar = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'animated',\n})<{ animated: boolean }>(({ theme, animated }) => ({\n display: 'flex',\n width: '100%',\n height: rem(theme, 40),\n borderRadius: theme.shape.borderRadius,\n overflow: 'hidden',\n boxShadow: theme.shadows[2],\n ...(animated && {\n '& > div': {\n animation: 'expandWidth 0.8s ease',\n },\n '@keyframes expandWidth': {\n from: { width: 0 },\n to: { width: '100%' },\n },\n }),\n}));\n\nconst StackedSegment = styled(Box, {\n shouldForwardProp: (prop) => !['phaseColor', 'widthPct'].includes(prop as string),\n})<{ phaseColor: string; widthPct: number }>(({ theme, phaseColor, widthPct }) => ({\n width: `${widthPct}%`,\n background: `linear-gradient(135deg, ${phaseColor} 0%, ${alpha(phaseColor, 0.85)} 100%)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: onMedia(theme),\n fontSize: rem(theme, 11.2),\n fontWeight: 600,\n position: 'relative',\n transition: 'all 0.3s ease',\n '&:hover': {\n filter: 'brightness(1.1)',\n zIndex: 1,\n },\n}));\n\nexport const StackedView: FC<TimingViewProps> = ({\n phases,\n percentages,\n data,\n copy,\n animated,\n showLabels,\n showTooltips,\n}) => {\n const theme = useTheme();\n return (\n <Box data-variant=\"stacked\">\n <StackedBar animated={animated} data-animated={animated.toString()}>\n {phases.map((phase) => {\n const width = widthOf(percentages, phase);\n\n return withTooltip(\n phase,\n showTooltips,\n <StackedSegment\n key={phase.key}\n data-testid={`timing-segment-${phase.key}`}\n phaseColor={colorOf(theme, phase)}\n widthPct={width}\n style={{ width: `${width}%` }}\n >\n {showLabels && width > 10 && (\n <span data-testid=\"timing-label\">{formatTime(phase.value!)}</span>\n )}\n </StackedSegment>,\n );\n })}\n </StackedBar>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', mt: 1 }}>\n <Typography variant=\"caption\" color=\"text.secondary\">\n 0ms\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\" fontWeight=\"bold\">\n {copy.total(formatTime(data.total))}\n </Typography>\n </Box>\n </Box>\n );\n};\n\nconst HorizontalBar = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n marginTop: theme.spacing(2),\n}));\n\nconst HorizontalSegment = styled(Box, {\n shouldForwardProp: (prop) => !['phaseColor', 'widthPct', 'animated'].includes(prop as string),\n})<{\n phaseColor: string;\n widthPct: number;\n animated: boolean;\n}>(({ theme, phaseColor, animated }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(2),\n '& .label': {\n minWidth: rem(theme, 80),\n fontSize: rem(theme, 13.6),\n fontWeight: 500,\n color: theme.palette.text.secondary,\n },\n '& .bar': {\n flex: 1,\n height: rem(theme, 24),\n borderRadius: theme.shape.borderRadius,\n background: `linear-gradient(90deg, ${phaseColor} 0%, ${alpha(phaseColor, 0.7)} 100%)`,\n position: 'relative',\n overflow: 'hidden',\n boxShadow: `${rems(theme, 0, 2, 6)} ${alpha(phaseColor, 0.25)}`,\n ...(animated && {\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: `linear-gradient(90deg, transparent 0%, ${sheen(theme, 0.3)} 50%, transparent 100%)`,\n animation: 'shimmer 2s infinite',\n },\n '@keyframes shimmer': {\n from: { transform: 'translateX(-100%)' },\n to: { transform: 'translateX(100%)' },\n },\n }),\n },\n '& .value': {\n minWidth: rem(theme, 60),\n textAlign: 'right',\n fontSize: rem(theme, 13.6),\n fontWeight: 600,\n color: phaseColor,\n },\n}));\n\nexport const HorizontalView: FC<TimingViewProps> = ({\n phases,\n percentages,\n data,\n copy,\n animated,\n}) => {\n const theme = useTheme();\n\n return (\n <HorizontalBar data-variant=\"horizontal\">\n {phases.map((phase) => (\n <HorizontalSegment\n key={phase.key}\n data-testid={`timing-segment-${phase.key}`}\n phaseColor={colorOf(theme, phase)}\n widthPct={widthOf(percentages, phase)}\n animated={animated}\n data-animated={animated.toString()}\n >\n <Typography className=\"label\">{phase.label}</Typography>\n <Box className=\"bar\" style={{ width: `${percentages[phase.key]}%` }} />\n <Typography className=\"value\" data-testid=\"timing-label\">\n {formatTime(phase.value!)}\n </Typography>\n </HorizontalSegment>\n ))}\n <Box sx={{ mt: 2, pt: 2, borderTop: `1px solid ${alpha(theme.palette.divider, 0.2)}` }}>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"primary\">\n {copy.totalTime(formatTime(data.total))}\n </Typography>\n </Box>\n </HorizontalBar>\n );\n};\n"],"mappings":"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","names":[]}
@@ -16,7 +16,20 @@ var PT_BR_LIGHTBOX_COPY = {
16
16
  zoomOut: "Afastar",
17
17
  resetZoom: "Restaurar o zoom",
18
18
  play: "Iniciar a apresenta\xE7\xE3o",
19
- pause: "Pausar a apresenta\xE7\xE3o"
19
+ pause: "Pausar a apresenta\xE7\xE3o",
20
+ dialogLabel: "Galeria de imagens",
21
+ itemPosition: (index, total) => `Item ${index} de ${total}`,
22
+ videoFallback: (index, total) => `V\xEDdeo ${index} de ${total}`,
23
+ imageFallback: (index, total) => `Imagem ${index} de ${total}`,
24
+ thumbnailFallback: (index) => `Miniatura ${index}`
25
+ };
26
+ var PT_BR_DATA_GRID_COPY = {
27
+ sortBy: (header) => `Ordenar por ${header}`,
28
+ selectRow: (rowNumber) => `Selecionar linha ${rowNumber}`,
29
+ selectAllRows: "Selecionar todas as linhas",
30
+ expandRow: "Expandir linha",
31
+ collapseRow: "Recolher linha",
32
+ gridLabel: "Grade de dados"
20
33
  };
21
34
  var PT_BR_MAP_PREVIEW_COPY = {
22
35
  zoomIn: "Aproximar",
@@ -32,7 +45,14 @@ var PT_BR_CAROUSEL_COPY = {
32
45
  };
33
46
  var PT_BR_TIMING_DIAGRAM_COPY = {
34
47
  regionLabel: "Diagrama de tempos",
35
- heading: "Tempo da requisi\xE7\xE3o"
48
+ heading: "Tempo da requisi\xE7\xE3o",
49
+ dns: "Busca de DNS",
50
+ connect: "Conex\xE3o",
51
+ ssl: "SSL/TLS",
52
+ request: "Requisi\xE7\xE3o",
53
+ response: "Resposta",
54
+ total: (formatted) => `Total: ${formatted}`,
55
+ totalTime: (formatted) => `Tempo total: ${formatted}`
36
56
  };
37
57
  var PT_BR_DATA_STATE_COPY = {
38
58
  empty: "Nenhum dado por aqui",
@@ -141,6 +161,7 @@ var PT_BR_DATA_VIEWS_COPY = {
141
161
  },
142
162
  tableFilter: PT_BR_TABLE_FILTER_COPY,
143
163
  grid: {
164
+ ...PT_BR_DATA_GRID_COPY,
144
165
  rowActions: "A\xE7\xF5es",
145
166
  bulkActions: (selectedCount) => `A\xE7\xF5es (${selectedCount}) \u25BE`,
146
167
  emptyFilteredTitle: "Nenhum resultado para esses filtros",
@@ -219,10 +240,11 @@ var PT_BR_DATA_VIEWS_COPY = {
219
240
 
220
241
  export {
221
242
  PT_BR_LIGHTBOX_COPY,
243
+ PT_BR_DATA_GRID_COPY,
222
244
  PT_BR_MAP_PREVIEW_COPY,
223
245
  PT_BR_CAROUSEL_COPY,
224
246
  PT_BR_TIMING_DIAGRAM_COPY,
225
247
  PT_BR_DATA_STATE_COPY,
226
248
  PT_BR_DATA_VIEWS_COPY
227
249
  };
228
- //# sourceMappingURL=chunk-U5SH3VRJ.js.map
250
+ //# sourceMappingURL=chunk-V5ZLUJV7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pt-BR.data-display.ts"],"sourcesContent":["/**\n * The pt-BR pack for the data-display family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type { DataViewsCopy } from \"./components/data-display/DataViews/data-views-copy\";\nimport type {\n CarouselCopy,\n DataGridCopy,\n DataStateCopy,\n LightboxCopy,\n MapPreviewCopy,\n TimingDiagramCopy,\n} from './copy';\nimport { PT_BR_TABLE_FILTER_COPY } from './pt-BR.layout';\nimport {\n PT_BR_CATEGORY_SELECT_COPY,\n PT_BR_CONFIRM_ACTION_COPY,\n PT_BR_SAVED_VIEWS_LABELS,\n} from './pt-BR.shared';\n\nexport const PT_BR_LIGHTBOX_COPY: LightboxCopy = {\n close: \"Fechar\",\n previous: \"Anterior\",\n next: \"Próximo\",\n zoomIn: \"Aproximar\",\n zoomOut: \"Afastar\",\n resetZoom: \"Restaurar o zoom\",\n play: \"Iniciar a apresentação\",\n pause: \"Pausar a apresentação\",\n dialogLabel: \"Galeria de imagens\",\n itemPosition: (index, total) => `Item ${index} de ${total}`,\n videoFallback: (index, total) => `Vídeo ${index} de ${total}`,\n imageFallback: (index, total) => `Imagem ${index} de ${total}`,\n thumbnailFallback: (index) => `Miniatura ${index}`,\n};\n\nexport const PT_BR_DATA_GRID_COPY: DataGridCopy = {\n sortBy: (header) => `Ordenar por ${header}`,\n selectRow: (rowNumber) => `Selecionar linha ${rowNumber}`,\n selectAllRows: \"Selecionar todas as linhas\",\n expandRow: \"Expandir linha\",\n collapseRow: \"Recolher linha\",\n gridLabel: \"Grade de dados\",\n};\n\nexport const PT_BR_MAP_PREVIEW_COPY: MapPreviewCopy = {\n zoomIn: \"Aproximar\",\n zoomOut: \"Afastar\",\n center: \"Centralizar o mapa\",\n mapType: \"Trocar o tipo de mapa\",\n fullscreen: \"Tela cheia\",\n search: \"Buscar endereço\",\n};\n\nexport const PT_BR_CAROUSEL_COPY: CarouselCopy = {\n previous: \"Anterior\",\n next: \"Próximo\",\n};\n\nexport const PT_BR_TIMING_DIAGRAM_COPY: TimingDiagramCopy = {\n regionLabel: \"Diagrama de tempos\",\n heading: \"Tempo da requisição\",\n dns: \"Busca de DNS\",\n connect: \"Conexão\",\n ssl: \"SSL/TLS\",\n request: \"Requisição\",\n response: \"Resposta\",\n total: (formatted) => `Total: ${formatted}`,\n totalTime: (formatted) => `Tempo total: ${formatted}`,\n};\n\nexport const PT_BR_DATA_STATE_COPY: DataStateCopy = {\n empty: \"Nenhum dado por aqui\",\n loading: \"Carregando…\",\n endOfList: \"Não há mais itens para carregar\",\n dismissAlert: \"Fechar o aviso\",\n dismissBanner: \"Fechar a faixa\",\n};\n\nexport const PT_BR_DATA_VIEWS_COPY: DataViewsCopy = {\n savedViewsMenu: PT_BR_SAVED_VIEWS_LABELS,\n confirmAction: PT_BR_CONFIRM_ACTION_COPY,\n categorySelect: PT_BR_CATEGORY_SELECT_COPY,\n board: {\n countOnPage: (label, count) => `${label}: ${count} nesta página`,\n onThisPage: (count) => `${count} nesta página`,\n pageSum: (sum) => `Soma desta página: ${sum}`,\n emptyColumn: \"Nada nesta etapa\",\n pageScopeNote:\n \"As contagens e somas abaixo referem-se apenas aos itens desta página.\",\n },\n deleteView: {\n title: \"Excluir visão\",\n target: (viewName) => `Excluir \"${viewName}\"?`,\n sharedWarning: \"Esta visão está compartilhada — a equipe perderá o acesso a ela.\",\n rowsUnaffected: (entityLabel) =>\n `${entityLabel} não são afetados; apenas o recorte salvo é removido.`,\n confirm: \"Excluir visão\",\n cancel: \"Cancelar\",\n },\n manageViews: {\n title: \"Gerenciar visões\",\n empty: \"Nenhuma visão salva.\",\n edit: \"Editar\",\n defaultTag: \"Padrão\",\n otherUserTag: \"De outro usuário\",\n deleteTitle: \"Excluir a visão salva?\",\n deleteBody: \"Os filtros e colunas guardados nela são perdidos. Não é possível restaurar.\",\n deleteConfirm: \"Excluir\",\n },\n saveView: {\n sharedDescription: \"Qualquer pessoa da loja poderá abrir e usar esta visão.\",\n setDefaultTitle: \"Definir como padrão\",\n setDefaultDescription: \"Esta tela abre nesta visão em vez da Visão principal.\",\n previewHeading: \"O que esta visão guarda\",\n previewUnchanged: \"Nada foi alterado — esta visão ficará igual à Visão principal.\",\n sortRowLabel: \"Ordenação\",\n saveFailed: \"Não foi possível salvar a visão.\",\n titleEditing: \"Editar visão\",\n titleCreating: \"Salvar visão\",\n descriptionLabel: \"Descrição — opcional\",\n descriptionPlaceholder: \"Para que serve esta visão\",\n submitEditing: \"Salvar alterações\",\n submitCreating: \"Salvar visão\",\n nameLabel: \"Nome\",\n cancel: \"Cancelar\",\n pinnedTitle: \"Fixar na barra lateral\",\n pinnedDescription: \"Aparece como atalho no menu, abaixo desta tela.\",\n sharedTitle: \"Compartilhar com a equipe\",\n namePlaceholder: \"Ex.: Recusados no PIX desta semana\",\n previewFilters: \"Filtros\",\n previewHiddenColumns: \"Colunas ocultas\",\n },\n columns: {\n visibleCount: (visible, total) => `${visible} de ${total} visíveis`,\n reset: \"Padrão\",\n showAll: \"Mostrar todas\",\n dragHint: \"Arraste para reordenar as colunas.\",\n moveUp: (columnLabel) => `Mover ${columnLabel} para cima`,\n moveDown: (columnLabel) => `Mover ${columnLabel} para baixo`,\n },\n display: {\n sortTab: \"Ordenar\",\n columnsTab: \"Colunas\",\n panelTab: \"Exibição\",\n direction: \"Direção\",\n layoutHints: {\n table: \"Colunas comparáveis, boa para varrer números.\",\n list: \"Uma linha por item, com os dados principais.\",\n cards: \"Blocos maiores, bom para poucos itens.\",\n board: \"Colunas por etapa, para acompanhar o que está onde.\",\n },\n densityHeadings: {\n table: \"Altura das linhas\",\n list: \"Altura das linhas\",\n cards: \"Cards por linha\",\n board: \"Largura das colunas\",\n },\n densityLabels: {\n table: { compact: \"Baixa\", cozy: \"Média\", comfortable: \"Alta\" },\n list: { compact: \"Baixa\", cozy: \"Média\", comfortable: \"Alta\" },\n cards: { compact: \"Muitos\", cozy: \"Médio\", comfortable: \"Poucos\" },\n board: { compact: \"Estreita\", cozy: \"Média\", comfortable: \"Larga\" },\n },\n boardUnavailable: \"Esta tela não declara etapas, então não oferece quadro.\",\n densityUnavailableNarrow:\n \"Um card por linha nesta largura — a densidade volta em telas maiores.\",\n trigger: \"Exibir\",\n fieldHeading: \"Campo\",\n formatHeading: \"Formato\",\n cardZoom: \"Tamanho dos cards\",\n },\n export: {\n formats: {\n json: { label: \"JSON (.json)\", hint: \"Para integrações\" },\n },\n visibleColumns: (columnCount) => `${columnCount} colunas visíveis, na ordem atual`,\n trigger: \"Exportar\",\n triggerLabel: \"Exportar\",\n },\n tableFilter: PT_BR_TABLE_FILTER_COPY,\n grid: {\n ...PT_BR_DATA_GRID_COPY,\n rowActions: \"Ações\",\n bulkActions: (selectedCount) => `Ações (${selectedCount}) ▾`,\n emptyFilteredTitle: \"Nenhum resultado para esses filtros\",\n emptyFilteredHint: \"Ajuste ou remova os filtros.\",\n emptyFilteredAction: \"Limpar filtros\",\n },\n filters: {\n moreFilters: (count) => `Mais filtros: ${count} sem espaço na barra`,\n moreFiltersApplied: (count, appliedCount) =>\n `Mais filtros: ${count} sem espaço na barra, ${appliedCount} aplicado(s)`,\n moreTriggerLabel: \"Mais\",\n moreHeading: \"Mais filtros\",\n overflowNote: \"sem espaço na barra\",\n rangeEnd: \"Até\",\n rangeInvalid: \"O início precisa ser menor que o fim.\",\n rangeInclusiveNote: \"Ambas as datas entram no resultado.\",\n rangeStart: \"De\",\n dayMask: \"dd/mm/aaaa\",\n clearAllFilters: \"Limpar todos os filtros\",\n rangePresets: {\n hoje: \"Hoje\",\n ontem: \"Ontem\",\n semana: \"Esta semana\",\n mes: \"Este mês\",\n ano: \"Este ano\",\n },\n scopesLabel: \"Situação\",\n panelTitle: \"Filtros\",\n clear: \"Limpar\",\n clearAll: \"Limpar filtros\",\n clearRange: (label) => `Limpar ${label}`,\n allOption: \"Todas\",\n optionSearchPlaceholder: \"Buscar…\",\n optionsEmpty: \"Nenhum resultado\",\n optionsHeading: \"Opções\",\n },\n selection: {\n selectAllOnPage: \"Selecionar todos nesta página\",\n clearSelection: \"Limpar seleção\",\n selectAll: \"Selecionar tudo\",\n onThisPage: (count) => `${count} nesta página`,\n selectRow: \"Selecionar\",\n expandRow: \"Expandir detalhes\",\n collapseRow: \"Recolher detalhes\",\n },\n nav: {\n mainView: \"Visão principal\",\n defaultTag: \"Padrão\",\n viewOptions: (viewName) => `Opções de ${viewName}`,\n emptyHint: \"Nenhuma visão salva. Ajuste filtros, colunas ou ordenação e salve abaixo.\",\n setDefault: \"Definir como padrão\",\n deleteView: \"Excluir visão\",\n unsavedChanges: \"Alterações não salvas\",\n label: \"Visão\",\n update: \"Atualizar visão\",\n save: \"Salvar visão\",\n saveAs: \"Salvar como nova\",\n reset: \"Redefinir\",\n updateFailed: \"Não foi possível atualizar a visão\",\n dismissError: \"Fechar o aviso\",\n goBack: \"Voltar\",\n pageSize: \"Mostrar:\",\n saveFailed: \"Não foi possível salvar a alteração da visão.\",\n editView: \"Renomear e editar\",\n pinToSidebar: \"Fixar na barra lateral\",\n shareWithTeam: \"Compartilhar com a equipe\",\n },\n search: {\n placeholder: \"Buscar…\",\n allColumnsLabel: \"Buscar em todas as colunas\",\n keywordPlaceholder: \"Pressione Enter para filtrar\",\n open: \"Buscar\",\n close: \"Fechar busca\",\n clear: \"Limpar busca\",\n },\n};\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TutorialStepBody
3
- } from "./chunk-K4L42FF6.js";
3
+ } from "./chunk-24JOJJ2J.js";
4
4
  import {
5
5
  useTutorialOverlay
6
6
  } from "./chunk-34643ATX.js";
@@ -286,4 +286,4 @@ export {
286
286
  TutorialOverlay,
287
287
  TutorialOverlay_default
288
288
  };
289
- //# sourceMappingURL=chunk-VCBV5JM7.js.map
289
+ //# sourceMappingURL=chunk-VNOXUWK7.js.map
@@ -3,7 +3,7 @@ import {
3
3
  LightboxCloseButton,
4
4
  LightboxNavButtons,
5
5
  LightboxZoomControls
6
- } from "./chunk-TZASFX6G.js";
6
+ } from "./chunk-P53KRCKW.js";
7
7
 
8
8
  // src/components/data-display/Lightbox/LightboxOverlay.tsx
9
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -60,4 +60,4 @@ var LightboxOverlay = ({
60
60
  export {
61
61
  LightboxOverlay
62
62
  };
63
- //# sourceMappingURL=chunk-IVJKILIX.js.map
63
+ //# sourceMappingURL=chunk-VZ4VAQX3.js.map
@@ -6,7 +6,7 @@ import {
6
6
  DashboardInfo,
7
7
  DashboardSettings,
8
8
  DashboardSpacer
9
- } from "./chunk-UFNIS7KC.js";
9
+ } from "./chunk-GGBFDHXE.js";
10
10
  import {
11
11
  DashboardContext,
12
12
  useDashboardContext
@@ -210,4 +210,4 @@ export {
210
210
  markDashboardSlot,
211
211
  Dashboard
212
212
  };
213
- //# sourceMappingURL=chunk-5QAJ3Y5F.js.map
213
+ //# sourceMappingURL=chunk-XQWUVQ2F.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  GridRow,
3
3
  HeaderCell
4
- } from "./chunk-F7JTIHV5.js";
4
+ } from "./chunk-ICDAYOJ6.js";
5
5
  import {
6
6
  rem
7
7
  } from "./chunk-YKCAJ2TN.js";
@@ -37,7 +37,7 @@ function HeaderControls({
37
37
  onChange: (event) => model.setSelectedRowIds(
38
38
  event.target.checked ? model.processedRows.map((row, index) => rowIdOf(props, row, index)) : []
39
39
  ),
40
- inputProps: { "aria-label": "Select all rows" }
40
+ inputProps: { "aria-label": props.copy.selectAllRows }
41
41
  }
42
42
  ) }),
43
43
  expansion && /* @__PURE__ */ jsx(TableCell, { padding: "checkbox", sx: sticky })
@@ -64,7 +64,8 @@ function GridHeader(section) {
64
64
  sortable: column.enableSort !== false && sortable,
65
65
  stickyHeader,
66
66
  headerHeight,
67
- onSort: model.onSort
67
+ onSort: model.onSort,
68
+ copy: props.copy
68
69
  },
69
70
  column.id
70
71
  ))
@@ -117,4 +118,4 @@ export {
117
118
  GridHeader,
118
119
  GridBody
119
120
  };
120
- //# sourceMappingURL=chunk-H5ZTIELC.js.map
121
+ //# sourceMappingURL=chunk-ZFXTRPQO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataGrid/DataGrid.body.tsx"],"sourcesContent":["/**\n * The DataGrid's `<thead>` and `<tbody>`.\n *\n * Split from the shell so each stays inside the size budget and so the\n * virtualization spacers — which are pure layout, not data — sit next to the\n * rows they pad rather than in the middle of the component that owns the paper.\n */\nimport Checkbox from '@mui/material/Checkbox/index.js';\nimport TableBody from '@mui/material/TableBody/index.js';\nimport TableCell from '@mui/material/TableCell/index.js';\nimport TableHead from '@mui/material/TableHead/index.js';\nimport TableRow from '@mui/material/TableRow/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport type React from 'react';\n\nimport { rem } from '../../../tokens/relative';\n\nimport { GridRow, HeaderCell } from './DataGrid.cells';\nimport type { DataGridModel } from './DataGrid.model';\nimport type { DataGridProps } from './DataGrid.types';\n\nexport interface GridSectionProps<T extends Record<string, unknown>> {\n model: DataGridModel<T>;\n props: DataGridProps<T>;\n totalColumns: number;\n}\n\n/** The leading header cells for the selection / expansion columns. */\nfunction HeaderControls<T extends Record<string, unknown>>({\n model,\n props,\n}: GridSectionProps<T>): React.JSX.Element {\n const theme = useTheme();\n const { selection = { mode: 'none' }, expansion, stickyHeader = true } = props;\n const sticky = {\n position: stickyHeader ? ('sticky' as const) : ('static' as const),\n top: 0,\n zIndex: 1,\n backgroundColor: theme.palette.background.paper,\n };\n const total = model.processedRows.length;\n const picked = model.selectedRowIds.length;\n return (\n <>\n {selection.mode !== 'none' && (\n <TableCell padding=\"checkbox\" sx={sticky}>\n {selection.mode === 'multi' && (\n <Checkbox\n indeterminate={picked > 0 && picked < total}\n checked={total > 0 && picked === total}\n onChange={(event) =>\n model.setSelectedRowIds(\n event.target.checked\n ? model.processedRows.map((row, index) => rowIdOf(props, row, index))\n : [],\n )\n }\n inputProps={{ 'aria-label': props.copy.selectAllRows }}\n />\n )}\n </TableCell>\n )}\n {expansion && <TableCell padding=\"checkbox\" sx={sticky} />}\n </>\n );\n}\n\n/** The caller's `getRowId`, or the row's own `id`, or its index. */\nexport function rowIdOf<T extends Record<string, unknown>>(\n props: DataGridProps<T>,\n row: T,\n index: number,\n): string | number {\n if (props.getRowId) return props.getRowId(row, index);\n const candidate = (row as { id?: string | number }).id;\n return candidate ?? index;\n}\n\nexport function GridHeader<T extends Record<string, unknown>>(\n section: GridSectionProps<T>,\n): React.JSX.Element {\n const { model, props } = section;\n const theme = useTheme();\n const { sorting = {}, stickyHeader = true } = props;\n // 56 design px unless the caller says, drawn through the type scale.\n const headerHeight = rem(theme, props.headerHeight ?? 56);\n const sortable = sorting.mode === 'client' || sorting.mode === 'server';\n return (\n <TableHead data-slot=\"header\">\n <TableRow data-slot=\"header-row\" role=\"row\">\n <HeaderControls {...section} />\n {model.visibleColumns.map((column) => (\n <HeaderCell\n key={column.id}\n column={column}\n sort={model.sortBy.find((entry) => entry.id === column.id)}\n sortable={column.enableSort !== false && sortable}\n stickyHeader={stickyHeader}\n headerHeight={headerHeight}\n onSort={model.onSort}\n copy={props.copy}\n />\n ))}\n </TableRow>\n </TableHead>\n );\n}\n\n/**\n * An invisible row standing in for `rows` rows the window is not rendering —\n * that many times the row's own CSS height, so the spacer and the rows it\n * replaces are the same length by construction.\n */\nfunction Spacer({\n rows,\n rowHeight,\n colSpan,\n}: {\n rows: number;\n rowHeight: string;\n colSpan: number;\n}): React.JSX.Element | null {\n if (rows <= 0) return null;\n return (\n <TableRow>\n <TableCell\n colSpan={colSpan}\n sx={{ height: `calc(${rows} * ${rowHeight})`, border: 'none', p: 0 }}\n />\n </TableRow>\n );\n}\n\nexport function GridBody<T extends Record<string, unknown>>(\n section: GridSectionProps<T>,\n): React.JSX.Element {\n const { model, props, totalColumns } = section;\n const { start, end } = model.visibleRange;\n const trailing = model.virtualized ? model.processedRows.length - end : 0;\n return (\n <TableBody data-slot=\"body\">\n {model.virtualized ? (\n <Spacer rows={start} rowHeight={model.rowHeight} colSpan={totalColumns} />\n ) : null}\n {model.visibleRows.map((row, offset) => {\n const index = model.virtualized ? start + offset : offset;\n const rowId = rowIdOf(props, row, index);\n return (\n <GridRow\n key={rowId}\n row={row}\n index={index}\n rowId={rowId}\n isSelected={model.selectedRowIdsSet.has(rowId)}\n isExpanded={model.expandedRowIdsSet.has(rowId)}\n totalColumns={totalColumns}\n model={model}\n props={props}\n />\n );\n })}\n {model.virtualized ? (\n <Spacer rows={trailing} rowHeight={model.rowHeight} colSpan={totalColumns} />\n ) : null}\n </TableBody>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-HFVYWHJT.js";
3
+ } from "./chunk-AP4LSXRK.js";
4
4
  import {
5
5
  useDataViewsState
6
6
  } from "./chunk-HKBJZX3C.js";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-UT73NGRS.js.map
30
+ //# sourceMappingURL=chunk-ZSTUKSTJ.js.map
@@ -1,9 +1,9 @@
1
1
  import "../chunk-L5CPOEDP.js";
2
2
  import {
3
3
  DataGrid
4
- } from "../chunk-ZEYUSS3W.js";
5
- import "../chunk-H5ZTIELC.js";
6
- import "../chunk-F7JTIHV5.js";
4
+ } from "../chunk-SQNQQTP7.js";
5
+ import "../chunk-ZFXTRPQO.js";
6
+ import "../chunk-ICDAYOJ6.js";
7
7
  import "../chunk-EARWC6PD.js";
8
8
  import "../chunk-DGMDQHMI.js";
9
9
  import "../chunk-G3E66C6J.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  DataViewsTableBase
3
- } from "../chunk-MEBQKYH4.js";
3
+ } from "../chunk-BX7QWHKC.js";
4
4
  import {
5
5
  DataViewsGrid
6
- } from "../chunk-UT73NGRS.js";
6
+ } from "../chunk-ZSTUKSTJ.js";
7
7
  import {
8
8
  BaseCard
9
9
  } from "../chunk-4S2LWZ7L.js";
@@ -22,13 +22,13 @@ import {
22
22
  useDragItem
23
23
  } from "../chunk-K4EKTMTC.js";
24
24
  import "../chunk-ZOLAYP2D.js";
25
- import "../chunk-HFVYWHJT.js";
25
+ import "../chunk-AP4LSXRK.js";
26
26
  import "../chunk-BKZERHNC.js";
27
27
  import "../chunk-3UEZ6NUI.js";
28
28
  import "../chunk-DH77PLFF.js";
29
29
  import "../chunk-BM4KKGL7.js";
30
30
  import "../chunk-KW3H5FUS.js";
31
- import "../chunk-LODMNSLR.js";
31
+ import "../chunk-3GYPZ5MI.js";
32
32
  import {
33
33
  DataViewsBoard
34
34
  } from "../chunk-4XHVGUOM.js";
@@ -177,9 +177,9 @@ import "../chunk-77JL5XVD.js";
177
177
  import "../chunk-G3QKH23Y.js";
178
178
  import "../chunk-JZRSHDNY.js";
179
179
  import "../chunk-L5CPOEDP.js";
180
- import "../chunk-ZEYUSS3W.js";
181
- import "../chunk-H5ZTIELC.js";
182
- import "../chunk-F7JTIHV5.js";
180
+ import "../chunk-SQNQQTP7.js";
181
+ import "../chunk-ZFXTRPQO.js";
182
+ import "../chunk-ICDAYOJ6.js";
183
183
  import "../chunk-EARWC6PD.js";
184
184
  import "../chunk-DGMDQHMI.js";
185
185
  import "../chunk-G3E66C6J.js";
@@ -1,18 +1,18 @@
1
1
  import "../chunk-UM35GGCS.js";
2
2
  import {
3
3
  Lightbox_default
4
- } from "../chunk-GJFAI3J5.js";
4
+ } from "../chunk-OOB3YWPX.js";
5
5
  import "../chunk-UOS7DEQZ.js";
6
6
  import "../chunk-N2GEKC4J.js";
7
- import "../chunk-IVJKILIX.js";
8
- import "../chunk-2DWBJJK6.js";
9
- import "../chunk-ASCUWG55.js";
10
- import "../chunk-TZASFX6G.js";
7
+ import "../chunk-VZ4VAQX3.js";
8
+ import "../chunk-RBGUS7WO.js";
9
+ import "../chunk-IOCY5G43.js";
10
+ import "../chunk-P53KRCKW.js";
11
11
  import "../chunk-HJPPNVCF.js";
12
12
  import "../chunk-M6PWPEAV.js";
13
- import "../chunk-TEQYTEM2.js";
14
- import "../chunk-BAFDSAWY.js";
13
+ import "../chunk-SV4FYSDL.js";
15
14
  import "../chunk-3KA6MYIR.js";
15
+ import "../chunk-TEQYTEM2.js";
16
16
  import "../chunk-FQ6UW7IY.js";
17
17
  import "../chunk-6JAIFIPW.js";
18
18
  import "../chunk-N3GAFIXG.js";
@@ -1,8 +1,8 @@
1
1
  import "../chunk-ZR3EJVR7.js";
2
2
  import {
3
3
  TimingDiagram
4
- } from "../chunk-3AQD2EA6.js";
5
- import "../chunk-WFAJTO2B.js";
4
+ } from "../chunk-M42ZOCO7.js";
5
+ import "../chunk-UVFZQCC7.js";
6
6
  import "../chunk-FQ6UW7IY.js";
7
7
  import "../chunk-6JAIFIPW.js";
8
8
  import "../chunk-N3GAFIXG.js";
package/dist/en-US.js CHANGED
@@ -7,15 +7,16 @@ import {
7
7
  EN_US_CHROME_COPY,
8
8
  EN_US_NOTIFICATION_UNBLOCK_COPY,
9
9
  EN_US_TUTORIAL_COPY
10
- } from "./chunk-ASHXIAJO.js";
10
+ } from "./chunk-UGH2DDST.js";
11
11
  import {
12
12
  EN_US_CAROUSEL_COPY,
13
+ EN_US_DATA_GRID_COPY,
13
14
  EN_US_DATA_STATE_COPY,
14
15
  EN_US_DATA_VIEWS_COPY,
15
16
  EN_US_LIGHTBOX_COPY,
16
17
  EN_US_MAP_PREVIEW_COPY,
17
18
  EN_US_TIMING_DIAGRAM_COPY
18
- } from "./chunk-2XHIF3M3.js";
19
+ } from "./chunk-GXQDWHPN.js";
19
20
  import {
20
21
  EN_US_CATEGORY_SELECT_COPY,
21
22
  EN_US_CEP_FIELD_COPY,
@@ -54,6 +55,7 @@ export {
54
55
  EN_US_CODE_EDITOR_COPY,
55
56
  EN_US_COMMAND_PALETTE_COPY,
56
57
  EN_US_CONFIRM_ACTION_COPY,
58
+ EN_US_DATA_GRID_COPY,
57
59
  EN_US_DATA_STATE_COPY,
58
60
  EN_US_DATA_VIEWS_COPY,
59
61
  EN_US_INSTALL_PROMPT_COPY,
@@ -1,8 +1,8 @@
1
1
  import "../chunk-QJCZ3IQP.js";
2
2
  import {
3
3
  TutorialOverlay
4
- } from "../chunk-VCBV5JM7.js";
5
- import "../chunk-K4L42FF6.js";
4
+ } from "../chunk-VNOXUWK7.js";
5
+ import "../chunk-24JOJJ2J.js";
6
6
  import "../chunk-34643ATX.js";
7
7
  import "../chunk-RXJQA3FQ.js";
8
8
  import "../chunk-FQ6UW7IY.js";
@@ -2,8 +2,8 @@ import "../chunk-LVDRVPGD.js";
2
2
  import {
3
3
  Dashboard,
4
4
  markDashboardSlot
5
- } from "../chunk-5QAJ3Y5F.js";
6
- import "../chunk-UFNIS7KC.js";
5
+ } from "../chunk-XQWUVQ2F.js";
6
+ import "../chunk-GGBFDHXE.js";
7
7
  import {
8
8
  DashboardContext,
9
9
  useDashboardContext