@databiosphere/findable-ui 14.0.0 → 15.0.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 (96) hide show
  1. package/.github/workflows/release-please.yml +3 -6
  2. package/.release-please-manifest.json +3 -0
  3. package/CHANGELOG.md +19 -0
  4. package/lib/common/analytics/entities.d.ts +8 -0
  5. package/lib/common/analytics/entities.js +3 -0
  6. package/lib/components/Export/common/tracking.d.ts +10 -3
  7. package/lib/components/Export/common/tracking.js +17 -3
  8. package/lib/components/Export/components/DownloadCurlCommand/downloadCurlCommand.d.ts +1 -1
  9. package/lib/components/Export/components/DownloadCurlCommand/downloadCurlCommand.js +4 -4
  10. package/lib/components/Export/components/ExportToTerra/exportToTerra.d.ts +1 -1
  11. package/lib/components/Export/components/ExportToTerra/exportToTerra.js +4 -4
  12. package/lib/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/manifestDownloadEntity.d.ts +1 -1
  13. package/lib/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/manifestDownloadEntity.js +2 -2
  14. package/lib/components/Export/components/ManifestDownload/manifestDownload.d.ts +1 -1
  15. package/lib/components/Export/components/ManifestDownload/manifestDownload.js +4 -4
  16. package/lib/components/Filter/components/FilterTag/filterTag.styles.d.ts +1 -1
  17. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.d.ts +4 -1
  18. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.js +3 -1
  19. package/lib/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/constants.d.ts +2 -0
  20. package/lib/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/constants.js +3 -0
  21. package/lib/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/title.d.ts +2 -0
  22. package/lib/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/title.js +27 -0
  23. package/lib/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/utils.d.ts +15 -0
  24. package/lib/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/utils.js +26 -0
  25. package/lib/components/Layout/components/Footer/components/VersionInfo/constants.d.ts +3 -0
  26. package/lib/components/Layout/components/Footer/components/VersionInfo/constants.js +27 -0
  27. package/lib/components/Layout/components/Footer/components/VersionInfo/types.d.ts +12 -0
  28. package/lib/components/Layout/components/Footer/components/VersionInfo/types.js +1 -0
  29. package/lib/components/Layout/components/Footer/components/VersionInfo/utils.d.ts +19 -0
  30. package/lib/components/Layout/components/Footer/components/VersionInfo/utils.js +29 -0
  31. package/lib/components/Layout/components/Footer/components/VersionInfo/versionInfo.d.ts +3 -0
  32. package/lib/components/Layout/components/Footer/components/VersionInfo/versionInfo.js +10 -0
  33. package/lib/components/Layout/components/Footer/components/VersionInfo/versionInfo.styles.d.ts +5 -0
  34. package/lib/components/Layout/components/Footer/components/VersionInfo/versionInfo.styles.js +9 -0
  35. package/lib/components/Layout/components/Footer/footer.d.ts +3 -2
  36. package/lib/components/Layout/components/Footer/footer.js +4 -3
  37. package/lib/components/Layout/components/Outline/components/ContentsTab/contentsTab.styles.d.ts +1 -1
  38. package/lib/components/Layout/components/Outline/outline.styles.d.ts +1 -1
  39. package/lib/components/Support/components/SupportRequest/components/Dialog/dialog.styles.js +5 -0
  40. package/lib/components/Support/components/ViewSupport/viewSupport.styles.js +5 -0
  41. package/lib/components/Table/common/utils.js +0 -1
  42. package/lib/components/common/Tabs/tabs.styles.d.ts +1 -1
  43. package/lib/config/entities.d.ts +1 -0
  44. package/lib/hooks/useFileManifest/common/buildFileManifestRequestURL.d.ts +1 -1
  45. package/lib/hooks/useFileManifest/common/buildFileManifestRequestURL.js +3 -2
  46. package/lib/hooks/useFileManifest/common/entities.d.ts +5 -5
  47. package/lib/hooks/useFileManifest/common/entities.js +7 -6
  48. package/lib/hooks/useFileManifest/useRequestFileManifest.d.ts +3 -1
  49. package/lib/hooks/useFileManifest/useRequestFileManifest.js +4 -1
  50. package/lib/providers/fileManifestState/actions.d.ts +9 -0
  51. package/lib/providers/fileManifestState/actions.js +19 -0
  52. package/lib/providers/fileManifestState/constants.d.ts +4 -0
  53. package/lib/providers/fileManifestState/constants.js +25 -0
  54. package/lib/providers/fileManifestState/utils.d.ts +34 -0
  55. package/lib/providers/fileManifestState/utils.js +80 -0
  56. package/lib/providers/fileManifestState.d.ts +5 -19
  57. package/lib/providers/fileManifestState.js +17 -37
  58. package/lib/styles/common/mui/chip.d.ts +11 -0
  59. package/lib/styles/common/mui/chip.js +25 -0
  60. package/lib/theme/common/components.js +16 -0
  61. package/lib/views/ExportView/exportView.js +1 -1
  62. package/package.json +1 -1
  63. package/release-please-config.json +23 -0
  64. package/src/common/analytics/entities.ts +8 -0
  65. package/src/components/Export/common/tracking.ts +22 -3
  66. package/src/components/Export/components/DownloadCurlCommand/downloadCurlCommand.tsx +4 -2
  67. package/src/components/Export/components/ExportToTerra/exportToTerra.tsx +9 -3
  68. package/src/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/manifestDownloadEntity.tsx +7 -1
  69. package/src/components/Export/components/ManifestDownload/manifestDownload.tsx +4 -2
  70. package/src/components/Index/components/AzulFileDownload/azulFileDownload.tsx +8 -0
  71. package/src/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/constants.ts +5 -0
  72. package/src/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/title.tsx +53 -0
  73. package/src/components/Layout/components/Footer/components/VersionInfo/components/Tooltip/components/Title/utils.ts +31 -0
  74. package/src/components/Layout/components/Footer/components/VersionInfo/constants.ts +30 -0
  75. package/src/components/Layout/components/Footer/components/VersionInfo/types.ts +14 -0
  76. package/src/components/Layout/components/Footer/components/VersionInfo/utils.ts +32 -0
  77. package/src/components/Layout/components/Footer/components/VersionInfo/versionInfo.styles.ts +10 -0
  78. package/src/components/Layout/components/Footer/components/VersionInfo/versionInfo.tsx +31 -0
  79. package/src/components/Layout/components/Footer/footer.tsx +5 -2
  80. package/src/components/Support/components/SupportRequest/components/Dialog/dialog.styles.ts +5 -0
  81. package/src/components/Support/components/ViewSupport/viewSupport.styles.ts +5 -0
  82. package/src/components/Table/common/utils.ts +0 -1
  83. package/src/config/entities.ts +1 -0
  84. package/src/hooks/useFileManifest/common/buildFileManifestRequestURL.ts +3 -4
  85. package/src/hooks/useFileManifest/common/entities.ts +5 -6
  86. package/src/hooks/useFileManifest/useRequestFileManifest.ts +5 -0
  87. package/src/providers/fileManifestState/actions.ts +34 -0
  88. package/src/providers/fileManifestState/constants.ts +31 -0
  89. package/src/providers/fileManifestState/utils.ts +108 -0
  90. package/src/providers/fileManifestState.tsx +30 -58
  91. package/src/styles/common/mui/chip.ts +36 -0
  92. package/src/theme/common/components.ts +16 -0
  93. package/src/views/ExportView/exportView.tsx +1 -1
  94. package/tests/azulFileDownload.test.tsx +11 -6
  95. package/tests/fileManifestRequestFilters.test.ts +160 -0
  96. package/tests/updateFilesFacetsStatus.test.ts +84 -0
@@ -2,6 +2,7 @@ on:
2
2
  push:
3
3
  branches:
4
4
  - main
5
+ workflow_dispatch: # Enable manual triggering
5
6
 
6
7
  permissions:
7
8
  contents: write
@@ -16,12 +17,8 @@ jobs:
16
17
  - uses: googleapis/release-please-action@v4
17
18
  id: release
18
19
  with:
19
- # this assumes that you have created a personal access token
20
- # (PAT) and configured it as a GitHub action secret named
21
- # `MY_RELEASE_PLEASE_TOKEN` (this secret name is not important).
22
- token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
23
- # This is a built-in strategy in release-please, see "Action Inputs" for more options
24
- release-type: node
20
+ config-file: release-please-config.json
21
+ token: ${{ secrets.GITHUB_TOKEN }}
25
22
 
26
23
  # The logic below handles the npm publication:
27
24
  - uses: actions/checkout@v4
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "15.0.0"
3
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [15.0.0](https://github.com/DataBiosphere/findable-ui/compare/v14.0.0...v15.0.0) (2024-11-19)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * added file download tracking ([#260](https://github.com/DataBiosphere/findable-ui/issues/260)) (#263)
9
+
10
+ ### Features
11
+
12
+ * add optional version information to footer ([#258](https://github.com/DataBiosphere/findable-ui/issues/258)) ([#265](https://github.com/DataBiosphere/findable-ui/issues/265)) ([7a245ca](https://github.com/DataBiosphere/findable-ui/commit/7a245caf8f8966da3406f04559ecbf19ad978b6e))
13
+ * added file download tracking ([#260](https://github.com/DataBiosphere/findable-ui/issues/260)) ([#263](https://github.com/DataBiosphere/findable-ui/issues/263)) ([092ad93](https://github.com/DataBiosphere/findable-ui/commit/092ad9390cff425c2bcc4a65e7212bde5acd573f))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * add support for inclusion of orphans in verbatim PFB ([#264](https://github.com/DataBiosphere/findable-ui/issues/264)) ([#269](https://github.com/DataBiosphere/findable-ui/issues/269)) ([5f295e0](https://github.com/DataBiosphere/findable-ui/commit/5f295e0d008fb5db92b82f7ac1aa09dbbac06bbe))
19
+ * remove `console.log` from `getHeadersTableData` ([#256](https://github.com/DataBiosphere/findable-ui/issues/256)) ([#261](https://github.com/DataBiosphere/findable-ui/issues/261)) ([7a87206](https://github.com/DataBiosphere/findable-ui/commit/7a872063aac9bee7ca05c55c6dc007ca83f5df61))
20
+ * simplify release-please config and remove pat ([#267](https://github.com/DataBiosphere/findable-ui/issues/267)) ([#268](https://github.com/DataBiosphere/findable-ui/issues/268)) ([b6d3efa](https://github.com/DataBiosphere/findable-ui/commit/b6d3efab4c10a71b162df5168595e3142454d62e))
21
+
3
22
  ## [14.0.0](https://github.com/DataBiosphere/findable-ui/compare/v13.0.1...v14.0.0) (2024-11-05)
4
23
 
5
24
 
@@ -7,6 +7,7 @@ export declare enum EVENT_NAME {
7
7
  ENTITY_SELECTED = "entity_selected",
8
8
  ENTITY_TABLE_PAGINATED = "entity_table_paginated",
9
9
  ENTITY_TABLE_SORTED = "entity_table_sorted",
10
+ FILE_DOWNLOADED = "file_downloaded",
10
11
  FILTER_SELECTED = "filter_selected",
11
12
  INDEX_ANALYZE_IN_TERRA_REQUESTED = "index_analyze_in_terra_requested",
12
13
  INDEX_FILE_MANIFEST_REQUESTED = "index_file_manifest_requested"
@@ -20,6 +21,8 @@ export declare enum EVENT_PARAM {
20
21
  FILTER_NAME = "filter_name",
21
22
  FILTER_VALUE = "filter_value",
22
23
  PAGINATION_DIRECTION = "pagination_direction",
24
+ RELATED_ENTITY_ID = "related_entity_id",
25
+ RELATED_ENTITY_NAME = "related_entity_name",
23
26
  SORT_DIRECTION = "sort_direction",
24
27
  TOOL_NAME = "tool_name"
25
28
  }
@@ -57,6 +60,11 @@ export type EventParams = {
57
60
  [EVENT_PARAM.COLUMN_NAME]: string;
58
61
  [EVENT_PARAM.SORT_DIRECTION]: SORT_DIRECTION;
59
62
  };
63
+ [EVENT_NAME.FILE_DOWNLOADED]: {
64
+ [EVENT_PARAM.ENTITY_NAME]: string;
65
+ [EVENT_PARAM.RELATED_ENTITY_ID]: string;
66
+ [EVENT_PARAM.RELATED_ENTITY_NAME]: string;
67
+ };
60
68
  [EVENT_NAME.FILTER_SELECTED]: {
61
69
  [EVENT_PARAM.FILTER_NAME]: string;
62
70
  [EVENT_PARAM.FILTER_VALUE]: string;
@@ -7,6 +7,7 @@ export var EVENT_NAME;
7
7
  EVENT_NAME["ENTITY_SELECTED"] = "entity_selected";
8
8
  EVENT_NAME["ENTITY_TABLE_PAGINATED"] = "entity_table_paginated";
9
9
  EVENT_NAME["ENTITY_TABLE_SORTED"] = "entity_table_sorted";
10
+ EVENT_NAME["FILE_DOWNLOADED"] = "file_downloaded";
10
11
  EVENT_NAME["FILTER_SELECTED"] = "filter_selected";
11
12
  EVENT_NAME["INDEX_ANALYZE_IN_TERRA_REQUESTED"] = "index_analyze_in_terra_requested";
12
13
  EVENT_NAME["INDEX_FILE_MANIFEST_REQUESTED"] = "index_file_manifest_requested";
@@ -21,6 +22,8 @@ export var EVENT_PARAM;
21
22
  EVENT_PARAM["FILTER_NAME"] = "filter_name";
22
23
  EVENT_PARAM["FILTER_VALUE"] = "filter_value";
23
24
  EVENT_PARAM["PAGINATION_DIRECTION"] = "pagination_direction";
25
+ EVENT_PARAM["RELATED_ENTITY_ID"] = "related_entity_id";
26
+ EVENT_PARAM["RELATED_ENTITY_NAME"] = "related_entity_name";
24
27
  EVENT_PARAM["SORT_DIRECTION"] = "sort_direction";
25
28
  EVENT_PARAM["TOOL_NAME"] = "tool_name";
26
29
  })(EVENT_PARAM || (EVENT_PARAM = {}));
@@ -3,14 +3,21 @@
3
3
  * @param entity_name - Entity (tab) name.
4
4
  * @param toolName - Tool name.
5
5
  */
6
- export declare function bulkDownloadTracking(entity_name: string, toolName: string): void;
6
+ export declare function trackBulkDownloadRequested(entity_name: string, toolName: string): void;
7
7
  /**
8
8
  * Executes event tracking for the file manifest export.
9
9
  * @param entity_name - Entity (tab) name.
10
10
  */
11
- export declare function fileManifestTracking(entity_name: string): void;
11
+ export declare function trackFileManifestRequested(entity_name: string): void;
12
12
  /**
13
13
  * Executes event tracking for the Terra export.
14
14
  * @param entity_name - Entity (tab) name.
15
15
  */
16
- export declare function exportToTerraTracking(entity_name: string): void;
16
+ export declare function trackExportToTerraRequested(entity_name: string): void;
17
+ /**
18
+ * Executes event tracking for individual file downloads
19
+ * @param entity_name - The name of the file downloaded.
20
+ * @param related_entity_id - The ID of the file's dataset / project
21
+ * @param related_entity_name -The name of the file's dataset / project
22
+ */
23
+ export declare function trackFileDownloaded(entity_name: string, related_entity_id: string, related_entity_name: string): void;
@@ -5,7 +5,7 @@ import { EVENT_NAME, EVENT_PARAM } from "../../../common/analytics/entities";
5
5
  * @param entity_name - Entity (tab) name.
6
6
  * @param toolName - Tool name.
7
7
  */
8
- export function bulkDownloadTracking(entity_name, toolName) {
8
+ export function trackBulkDownloadRequested(entity_name, toolName) {
9
9
  // Track the bulk download requested event.
10
10
  track(EVENT_NAME.BULK_DOWNLOAD_REQUESTED, {
11
11
  [EVENT_PARAM.ENTITY_NAME]: entity_name,
@@ -16,7 +16,7 @@ export function bulkDownloadTracking(entity_name, toolName) {
16
16
  * Executes event tracking for the file manifest export.
17
17
  * @param entity_name - Entity (tab) name.
18
18
  */
19
- export function fileManifestTracking(entity_name) {
19
+ export function trackFileManifestRequested(entity_name) {
20
20
  // Track the file manifest requested event.
21
21
  track(EVENT_NAME.INDEX_FILE_MANIFEST_REQUESTED, {
22
22
  [EVENT_PARAM.ENTITY_NAME]: entity_name,
@@ -26,9 +26,23 @@ export function fileManifestTracking(entity_name) {
26
26
  * Executes event tracking for the Terra export.
27
27
  * @param entity_name - Entity (tab) name.
28
28
  */
29
- export function exportToTerraTracking(entity_name) {
29
+ export function trackExportToTerraRequested(entity_name) {
30
30
  // Track the export to terra event.
31
31
  track(EVENT_NAME.INDEX_ANALYZE_IN_TERRA_REQUESTED, {
32
32
  [EVENT_PARAM.ENTITY_NAME]: entity_name,
33
33
  });
34
34
  }
35
+ /**
36
+ * Executes event tracking for individual file downloads
37
+ * @param entity_name - The name of the file downloaded.
38
+ * @param related_entity_id - The ID of the file's dataset / project
39
+ * @param related_entity_name -The name of the file's dataset / project
40
+ */
41
+ export function trackFileDownloaded(entity_name, related_entity_id, related_entity_name) {
42
+ // Track the file downloaded event.
43
+ track(EVENT_NAME.FILE_DOWNLOADED, {
44
+ [EVENT_PARAM.ENTITY_NAME]: entity_name,
45
+ [EVENT_PARAM.RELATED_ENTITY_ID]: related_entity_id,
46
+ [EVENT_PARAM.RELATED_ENTITY_NAME]: related_entity_name,
47
+ });
48
+ }
@@ -13,5 +13,5 @@ interface DownloadCurlCommandProps {
13
13
  filters: Filters;
14
14
  formFacet: FormFacet;
15
15
  }
16
- export declare const DownloadCurlCommand: ({ DownloadCurlForm, DownloadCurlStart, DownloadCurlSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, }: DownloadCurlCommandProps) => JSX.Element;
16
+ export declare const DownloadCurlCommand: ({ DownloadCurlForm, DownloadCurlStart, DownloadCurlSuccess, fileManifestState, fileManifestType, fileSummaryFacetName, filters, formFacet, }: DownloadCurlCommandProps) => JSX.Element;
17
17
  export {};
@@ -4,18 +4,18 @@ import { useExploreState } from "../../../../hooks/useExploreState";
4
4
  import { useFileManifest } from "../../../../hooks/useFileManifest/useFileManifest";
5
5
  import { useRequestFileManifest } from "../../../../hooks/useFileManifest/useRequestFileManifest";
6
6
  import { BULK_DOWNLOAD_EXECUTION_ENVIRONMENT, } from "../../common/entities";
7
- import { bulkDownloadTracking } from "../../common/tracking";
7
+ import { trackBulkDownloadRequested } from "../../common/tracking";
8
8
  import { DownloadCurlCommandNotStarted } from "./components/DownloadCurlCommandNotStarted/downloadCurlCommandNotStarted";
9
9
  import { DownloadCurlCommandReady } from "./components/DownloadCurlCommandReady/downloadCurlCommandReady";
10
- export const DownloadCurlCommand = ({ DownloadCurlForm, DownloadCurlStart, DownloadCurlSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, }) => {
11
- useRequestFileManifest(MANIFEST_DOWNLOAD_FORMAT.CURL, filters, fileSummaryFacetName);
10
+ export const DownloadCurlCommand = ({ DownloadCurlForm, DownloadCurlStart, DownloadCurlSuccess, fileManifestState, fileManifestType, fileSummaryFacetName, filters, formFacet, }) => {
11
+ useRequestFileManifest(fileManifestType, MANIFEST_DOWNLOAD_FORMAT.CURL, filters, fileSummaryFacetName);
12
12
  const [executionEnvironment, setExecutionEnvironment] = useState(BULK_DOWNLOAD_EXECUTION_ENVIRONMENT.BASH);
13
13
  const { exploreState: { tabValue: entityList }, } = useExploreState();
14
14
  const { data, isLoading, run } = useFileManifest();
15
15
  const curlCommand = getBulkDownloadCurlCommand(data, executionEnvironment);
16
16
  return curlCommand ? (React.createElement(DownloadCurlCommandReady, { curlCommand: curlCommand, DownloadCurlSuccess: DownloadCurlSuccess })) : (React.createElement(DownloadCurlCommandNotStarted, { DownloadCurlForm: DownloadCurlForm, DownloadCurlStart: DownloadCurlStart, executionEnvironment: executionEnvironment, fileManifestState: fileManifestState, formFacet: formFacet, isLoading: isLoading, onRequestManifest: () => {
17
17
  // Execute GTM tracking.
18
- bulkDownloadTracking(entityList, executionEnvironment);
18
+ trackBulkDownloadRequested(entityList, executionEnvironment);
19
19
  // Request manifest.
20
20
  run();
21
21
  }, setExecutionEnvironment: setExecutionEnvironment }));
@@ -15,4 +15,4 @@ export interface ExportToTerraProps {
15
15
  manifestDownloadFormat?: ManifestDownloadFormat;
16
16
  manifestDownloadFormats: ManifestDownloadFormat[];
17
17
  }
18
- export declare const ExportToTerra: ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, manifestDownloadFormat, manifestDownloadFormats, }: ExportToTerraProps) => JSX.Element;
18
+ export declare const ExportToTerra: ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileManifestType, fileSummaryFacetName, filters, formFacet, manifestDownloadFormat, manifestDownloadFormats, }: ExportToTerraProps) => JSX.Element;
@@ -3,18 +3,18 @@ import { useExploreState } from "../../../../hooks/useExploreState";
3
3
  import { useExportToTerraResponseURL } from "../../../../hooks/useExportToTerraResponseURL";
4
4
  import { useFileManifest } from "../../../../hooks/useFileManifest/useFileManifest";
5
5
  import { useRequestFileManifest } from "../../../../hooks/useFileManifest/useRequestFileManifest";
6
- import { exportToTerraTracking } from "../../common/tracking";
6
+ import { trackExportToTerraRequested } from "../../common/tracking";
7
7
  import { ExportToTerraNotStarted } from "./components/ExportToTerraNotStarted/exportToTerraNotStarted";
8
8
  import { ExportToTerraReady } from "./components/ExportToTerraReady/exportToTerraReady";
9
- export const ExportToTerra = ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, manifestDownloadFormat, manifestDownloadFormats, }) => {
9
+ export const ExportToTerra = ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileManifestType, fileSummaryFacetName, filters, formFacet, manifestDownloadFormat, manifestDownloadFormats, }) => {
10
10
  const { exploreState: { tabValue: entityList }, } = useExploreState();
11
- useRequestFileManifest(manifestDownloadFormat, filters, fileSummaryFacetName);
11
+ useRequestFileManifest(fileManifestType, manifestDownloadFormat, filters, fileSummaryFacetName);
12
12
  const { requestParams } = fileManifestState;
13
13
  const { data, isLoading, run } = useFileManifest();
14
14
  const exportURL = useExportToTerraResponseURL(requestParams, data);
15
15
  return exportURL ? (React.createElement(ExportToTerraReady, { ExportToTerraSuccess: ExportToTerraSuccess, exportURL: exportURL })) : (React.createElement(ExportToTerraNotStarted, { ExportTerraForm: ExportForm, ExportToTerraStart: ExportToTerraStart, fileManifestState: fileManifestState, formFacet: formFacet, isLoading: isLoading, manifestDownloadFormats: manifestDownloadFormats, onRequestManifest: () => {
16
16
  // Execute GA tracking
17
- exportToTerraTracking(entityList);
17
+ trackExportToTerraRequested(entityList);
18
18
  // Request manifest
19
19
  run();
20
20
  } }));
@@ -5,4 +5,4 @@ export interface ManifestDownloadEntityProps {
5
5
  filters: Filters;
6
6
  metadataFilters: Filters;
7
7
  }
8
- export declare const ManifestDownloadEntity: ({ filters, metadataFilters, }: ManifestDownloadEntityProps) => JSX.Element;
8
+ export declare const ManifestDownloadEntity: ({ fileManifestType, filters, metadataFilters, }: ManifestDownloadEntityProps) => JSX.Element;
@@ -3,8 +3,8 @@ import { MANIFEST_DOWNLOAD_FORMAT } from "../../../../../../apis/azul/common/ent
3
3
  import { useRequestFileManifest } from "../../../../../../hooks/useFileManifest/useRequestFileManifest";
4
4
  import { FileManifestDownload } from "./components/FileManifestDownload/fileManifestDownload";
5
5
  import { FileManifestSpreadsheet } from "./components/FileManifestSpreadsheet/fileManifestSpreadsheet";
6
- export const ManifestDownloadEntity = ({ filters, metadataFilters, }) => {
7
- useRequestFileManifest(MANIFEST_DOWNLOAD_FORMAT.COMPACT, filters, undefined);
6
+ export const ManifestDownloadEntity = ({ fileManifestType, filters, metadataFilters, }) => {
7
+ useRequestFileManifest(fileManifestType, MANIFEST_DOWNLOAD_FORMAT.COMPACT, filters, undefined);
8
8
  return (React.createElement(React.Fragment, null,
9
9
  React.createElement(FileManifestSpreadsheet, { filters: metadataFilters }),
10
10
  React.createElement(FileManifestDownload, { filters: filters })));
@@ -13,4 +13,4 @@ export interface ManifestDownloadProps {
13
13
  ManifestDownloadStart: ElementType;
14
14
  ManifestDownloadSuccess: ElementType;
15
15
  }
16
- export declare const ManifestDownload: ({ fileManifestState, fileSummaryFacetName, filters, formFacet, ManifestDownloadForm, ManifestDownloadStart, ManifestDownloadSuccess, }: ManifestDownloadProps) => JSX.Element;
16
+ export declare const ManifestDownload: ({ fileManifestState, fileManifestType, fileSummaryFacetName, filters, formFacet, ManifestDownloadForm, ManifestDownloadStart, ManifestDownloadSuccess, }: ManifestDownloadProps) => JSX.Element;
@@ -3,16 +3,16 @@ import { MANIFEST_DOWNLOAD_FORMAT } from "../../../../apis/azul/common/entities"
3
3
  import { useExploreState } from "../../../../hooks/useExploreState";
4
4
  import { useFileManifest } from "../../../../hooks/useFileManifest/useFileManifest";
5
5
  import { useRequestFileManifest } from "../../../../hooks/useFileManifest/useRequestFileManifest";
6
- import { fileManifestTracking } from "../../common/tracking";
6
+ import { trackFileManifestRequested } from "../../common/tracking";
7
7
  import { ManifestDownloadNotStarted } from "./components/ManifestDownloadNotStarted/manifestDownloadNotStarted";
8
8
  import { ManifestDownloadReady } from "./components/ManifestDownloadReady/manifestDownloadReady";
9
- export const ManifestDownload = ({ fileManifestState, fileSummaryFacetName, filters, formFacet, ManifestDownloadForm, ManifestDownloadStart, ManifestDownloadSuccess, }) => {
10
- useRequestFileManifest(MANIFEST_DOWNLOAD_FORMAT.COMPACT, filters, fileSummaryFacetName);
9
+ export const ManifestDownload = ({ fileManifestState, fileManifestType, fileSummaryFacetName, filters, formFacet, ManifestDownloadForm, ManifestDownloadStart, ManifestDownloadSuccess, }) => {
10
+ useRequestFileManifest(fileManifestType, MANIFEST_DOWNLOAD_FORMAT.COMPACT, filters, fileSummaryFacetName);
11
11
  const { exploreState: { tabValue: entityList }, } = useExploreState();
12
12
  const { data, isLoading, run } = useFileManifest();
13
13
  const manifestURL = getManifestDownloadURL(data);
14
14
  return manifestURL ? (React.createElement(ManifestDownloadReady, { ManifestDownloadSuccess: ManifestDownloadSuccess, manifestURL: manifestURL })) : (React.createElement(ManifestDownloadNotStarted, { ManifestDownloadForm: ManifestDownloadForm, ManifestDownloadStart: ManifestDownloadStart, fileManifestState: fileManifestState, formFacet: formFacet, isLoading: isLoading, onRequestManifest: () => {
15
- fileManifestTracking(entityList);
15
+ trackFileManifestRequested(entityList);
16
16
  run();
17
17
  } }));
18
18
  };
@@ -1,5 +1,5 @@
1
1
  export declare const SupersededTag: import("@emotion/styled").StyledComponent<import("@mui/material").ChipOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
2
2
  ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
3
- }, "label" | "style" | "className" | "classes" | "tabIndex" | "color" | "children" | "sx" | "variant" | "disabled" | "size" | "icon" | "avatar" | "clickable" | "deleteIcon" | "onDelete" | "skipFocusWhenDisabled"> & {
3
+ }, "label" | "style" | "className" | "classes" | "tabIndex" | "color" | "children" | "sx" | "variant" | "disabled" | "size" | "avatar" | "clickable" | "deleteIcon" | "icon" | "onDelete" | "skipFocusWhenDisabled"> & {
4
4
  theme?: import("@emotion/react").Theme;
5
5
  }, {}, {}>;
@@ -1,4 +1,7 @@
1
1
  export interface AzulFileDownloadProps {
2
+ entityName: string;
3
+ relatedEntityId: string;
4
+ relatedEntityName: string;
2
5
  url?: string;
3
6
  }
4
- export declare const AzulFileDownload: ({ url, }: AzulFileDownloadProps) => JSX.Element;
7
+ export declare const AzulFileDownload: ({ entityName, relatedEntityId, relatedEntityName, url, }: AzulFileDownloadProps) => JSX.Element;
@@ -4,9 +4,10 @@ import { useFileLocation } from "../../../../hooks/useFileLocation";
4
4
  import { DownloadIcon } from "../../../common/CustomIcon/components/DownloadIcon/downloadIcon";
5
5
  import { LoadingIcon } from "../../../common/CustomIcon/components/LoadingIcon/loadingIcon";
6
6
  import { IconButton } from "../../../common/IconButton/iconButton";
7
+ import { trackFileDownloaded } from "../../../Export/common/tracking";
7
8
  import { StyledIconButton } from "./azulFileDownload.styles";
8
9
  import { AZUL_FILE_DOWNLOAD_TEST_ID, AZUL_FILE_REQUEST_DOWNLOAD_PENDING_TEST_ID, AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID, } from "./common/constants";
9
- export const AzulFileDownload = ({ url, }) => {
10
+ export const AzulFileDownload = ({ entityName, relatedEntityId, relatedEntityName, url, }) => {
10
11
  const { fileUrl, isLoading, run } = useFileLocation(url);
11
12
  const downloadRef = useRef(null);
12
13
  const [isRequestPending, setIsRequestPending] = useState(false);
@@ -24,6 +25,7 @@ export const AzulFileDownload = ({ url, }) => {
24
25
  return (React.createElement(Fragment, null,
25
26
  isRequestPending ? (React.createElement(StyledIconButton, { color: "primary", "data-testid": AZUL_FILE_REQUEST_DOWNLOAD_PENDING_TEST_ID, Icon: LoadingIcon, size: "medium" })) : (React.createElement(IconButton, { color: "primary", "data-testid": AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID, disabled: !url, Icon: isLoading ? LoadingIcon : DownloadIcon, onClick: () => {
26
27
  setIsRequestPending(true);
28
+ trackFileDownloaded(entityName, relatedEntityId, relatedEntityName);
27
29
  run();
28
30
  }, size: "medium" })),
29
31
  React.createElement(Box, { component: "a", "data-testid": AZUL_FILE_DOWNLOAD_TEST_ID, download: true, ref: downloadRef, sx: { display: "none" } })));
@@ -0,0 +1,2 @@
1
+ import { LinkOwnProps } from "@mui/material";
2
+ export declare const LINK_PROPS: Partial<LinkOwnProps>;
@@ -0,0 +1,2 @@
1
+ import { VersionInfoProps } from "../../../../types";
2
+ export declare const Title: ({ versionInfo, }: Pick<VersionInfoProps, "versionInfo">) => JSX.Element | null;
@@ -0,0 +1,27 @@
1
+ import { Typography } from "@mui/material";
2
+ import React from "react";
3
+ import { useConfig } from "../../../../../../../../../../hooks/useConfig";
4
+ import { TEXT_BODY_SMALL_400_2_LINES } from "../../../../../../../../../../theme/common/typography";
5
+ import { Link } from "../../../../../../../../../Links/components/Link/link";
6
+ import { getGitHash, getVersion } from "../../../../utils";
7
+ import { LINK_PROPS } from "./constants";
8
+ import { getCommitUrl, getReleaseUrl } from "./utils";
9
+ export const Title = ({ versionInfo, }) => {
10
+ const { config: { gitHubUrl }, } = useConfig();
11
+ if (!versionInfo)
12
+ return null;
13
+ const { buildDate, catalog, gitHash, version } = versionInfo;
14
+ return (React.createElement(Typography, { component: "div", variant: TEXT_BODY_SMALL_400_2_LINES },
15
+ buildDate && (React.createElement("div", null,
16
+ React.createElement("span", null, "Build Date: "),
17
+ React.createElement("span", null, buildDate))),
18
+ React.createElement("div", null,
19
+ React.createElement("span", null, "Version: "),
20
+ React.createElement(Link, { ...LINK_PROPS, label: getVersion(version), url: getReleaseUrl(gitHubUrl, versionInfo) })),
21
+ gitHash && (React.createElement("div", null,
22
+ React.createElement("span", null, "Git Commit: "),
23
+ React.createElement(Link, { ...LINK_PROPS, label: getGitHash(gitHash), url: getCommitUrl(gitHubUrl, versionInfo) }))),
24
+ catalog && (React.createElement("div", null,
25
+ React.createElement("span", null, "Catalog: "),
26
+ React.createElement("span", null, catalog)))));
27
+ };
@@ -0,0 +1,15 @@
1
+ import { VersionInfo } from "../../../../types";
2
+ /**
3
+ * Returns GitHub commit URL for the given git hash.
4
+ * @param gitHubRepoUrl - GitHub repository URL.
5
+ * @param versionInfo - Version info.
6
+ * @returns GitHub commit URL.
7
+ */
8
+ export declare function getCommitUrl(gitHubRepoUrl?: string, versionInfo?: VersionInfo): string;
9
+ /**
10
+ * Returns GitHub release URL for the given release version.
11
+ * @param gitHubRepoUrl - GitHub repository URL.
12
+ * @param versionInfo - Version info.
13
+ * @returns GitHub release URL.
14
+ */
15
+ export declare function getReleaseUrl(gitHubRepoUrl?: string, versionInfo?: VersionInfo): string;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Returns GitHub commit URL for the given git hash.
3
+ * @param gitHubRepoUrl - GitHub repository URL.
4
+ * @param versionInfo - Version info.
5
+ * @returns GitHub commit URL.
6
+ */
7
+ export function getCommitUrl(gitHubRepoUrl, versionInfo) {
8
+ if (!gitHubRepoUrl || !versionInfo)
9
+ return "";
10
+ if (!versionInfo.gitHash)
11
+ return "";
12
+ return `${gitHubRepoUrl}/commit/${versionInfo.gitHash}`;
13
+ }
14
+ /**
15
+ * Returns GitHub release URL for the given release version.
16
+ * @param gitHubRepoUrl - GitHub repository URL.
17
+ * @param versionInfo - Version info.
18
+ * @returns GitHub release URL.
19
+ */
20
+ export function getReleaseUrl(gitHubRepoUrl, versionInfo) {
21
+ if (!gitHubRepoUrl || !versionInfo)
22
+ return "";
23
+ if (!versionInfo.version)
24
+ return "";
25
+ return `${gitHubRepoUrl}/releases/tag/${versionInfo.version}`;
26
+ }
@@ -0,0 +1,3 @@
1
+ import { ChipProps, TooltipProps } from "@mui/material";
2
+ export declare const CHIP_PROPS: Partial<ChipProps>;
3
+ export declare const TOOLTIP_PROPS: Partial<TooltipProps>;
@@ -0,0 +1,27 @@
1
+ import { CHIP_PROPS as MUI_CHIP_PROPS } from "../../../../../../styles/common/mui/chip";
2
+ export const CHIP_PROPS = {
3
+ color: MUI_CHIP_PROPS.COLOR.DEFAULT,
4
+ size: MUI_CHIP_PROPS.SIZE.SMALL,
5
+ };
6
+ export const TOOLTIP_PROPS = {
7
+ arrow: true,
8
+ slotProps: {
9
+ popper: {
10
+ modifiers: [
11
+ {
12
+ name: "offset",
13
+ options: {
14
+ offset: [0, -4],
15
+ },
16
+ },
17
+ {
18
+ name: "preventOverflow",
19
+ options: { padding: 8 },
20
+ },
21
+ ],
22
+ },
23
+ tooltip: {
24
+ sx: { maxWidth: "none" },
25
+ },
26
+ },
27
+ };
@@ -0,0 +1,12 @@
1
+ import { ChipProps, TooltipProps } from "@mui/material";
2
+ export interface VersionInfo {
3
+ buildDate?: string;
4
+ catalog?: string;
5
+ gitHash?: string;
6
+ version?: string;
7
+ }
8
+ export interface VersionInfoProps {
9
+ chipProps?: Partial<ChipProps>;
10
+ tooltipProps?: Partial<TooltipProps>;
11
+ versionInfo?: VersionInfo;
12
+ }
@@ -0,0 +1,19 @@
1
+ import { VersionInfo } from "./types";
2
+ /**
3
+ * Returns displayable shortened version of Git hash.
4
+ * @param gitHash - Git hash.
5
+ * @returns displayable shortened version of Git hash.
6
+ */
7
+ export declare function getGitHash(gitHash?: string): string | undefined;
8
+ /**
9
+ * Returns Chip label based on version info.
10
+ * @param versionInfo - Version info.
11
+ * @returns Chip label.
12
+ */
13
+ export declare function getLabel(versionInfo?: VersionInfo): string | undefined;
14
+ /**
15
+ * Returns displayable version, or "Unversioned" if version is not provided.
16
+ * @param version - Version info.
17
+ * @returns Version.
18
+ */
19
+ export declare function getVersion(version?: string): string;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Returns displayable shortened version of Git hash.
3
+ * @param gitHash - Git hash.
4
+ * @returns displayable shortened version of Git hash.
5
+ */
6
+ export function getGitHash(gitHash) {
7
+ return gitHash?.substring(0, 7);
8
+ }
9
+ /**
10
+ * Returns Chip label based on version info.
11
+ * @param versionInfo - Version info.
12
+ * @returns Chip label.
13
+ */
14
+ export function getLabel(versionInfo) {
15
+ if (!versionInfo)
16
+ return;
17
+ const { catalog, gitHash, version } = versionInfo;
18
+ return [getVersion(version), getGitHash(gitHash), catalog]
19
+ .filter(Boolean)
20
+ .join("-");
21
+ }
22
+ /**
23
+ * Returns displayable version, or "Unversioned" if version is not provided.
24
+ * @param version - Version info.
25
+ * @returns Version.
26
+ */
27
+ export function getVersion(version) {
28
+ return version || "Unversioned";
29
+ }
@@ -0,0 +1,3 @@
1
+ import { BaseComponentProps } from "../../../../../types";
2
+ import { VersionInfoProps } from "./types";
3
+ export declare const VersionInfo: ({ chipProps, className, tooltipProps, versionInfo, }: BaseComponentProps & VersionInfoProps) => JSX.Element | null;
@@ -0,0 +1,10 @@
1
+ import { Tooltip } from "@mui/material";
2
+ import React from "react";
3
+ import { Title } from "./components/Tooltip/components/Title/title";
4
+ import { CHIP_PROPS, TOOLTIP_PROPS } from "./constants";
5
+ import { getLabel } from "./utils";
6
+ import { StyledChip } from "./versionInfo.styles";
7
+ export const VersionInfo = ({ chipProps, className, tooltipProps, versionInfo, }) => {
8
+ return (React.createElement(Tooltip, { ...TOOLTIP_PROPS, title: React.createElement(Title, { versionInfo: versionInfo }), ...tooltipProps },
9
+ React.createElement(StyledChip, { ...CHIP_PROPS, className: className, label: getLabel(versionInfo), ...chipProps })));
10
+ };
@@ -0,0 +1,5 @@
1
+ export declare const StyledChip: import("@emotion/styled").StyledComponent<import("@mui/material").ChipOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
2
+ ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
3
+ }, "label" | "style" | "className" | "classes" | "tabIndex" | "color" | "children" | "sx" | "variant" | "disabled" | "size" | "avatar" | "clickable" | "deleteIcon" | "icon" | "onDelete" | "skipFocusWhenDisabled"> & {
4
+ theme?: import("@emotion/react").Theme;
5
+ }, {}, {}>;
@@ -0,0 +1,9 @@
1
+ import styled from "@emotion/styled";
2
+ import { Chip } from "@mui/material";
3
+ import { inkLight } from "../../../../../../styles/common/mixins/colors";
4
+ export const StyledChip = styled(Chip) `
5
+ border-radius: 4px;
6
+ .MuiChip-label {
7
+ color: ${inkLight};
8
+ }
9
+ `;
@@ -2,9 +2,10 @@ import { ReactNode } from "react";
2
2
  import { Social } from "../../../common/Socials/socials";
3
3
  import { NavLinkItem } from "../Header/components/Content/components/Navigation/navigation";
4
4
  export interface FooterProps {
5
- Branding: ReactNode;
5
+ Branding?: ReactNode;
6
6
  className?: string;
7
7
  navLinks?: NavLinkItem[];
8
8
  socials?: Social[];
9
+ versionInfo?: ReactNode;
9
10
  }
10
- export declare const Footer: ({ Branding, className, navLinks, socials, }: FooterProps) => JSX.Element;
11
+ export declare const Footer: ({ Branding, className, navLinks, socials, versionInfo, }: FooterProps) => JSX.Element;
@@ -2,12 +2,13 @@ import { Toolbar } from "@mui/material";
2
2
  import React from "react";
3
3
  import { ANCHOR_TARGET } from "../../../Links/common/entities";
4
4
  import { AppBar, Link, Links, Socials } from "./footer.styles";
5
- export const Footer = ({ Branding, className, navLinks, socials, }) => {
5
+ export const Footer = ({ Branding, className, navLinks, socials, versionInfo, }) => {
6
6
  return (React.createElement(AppBar, { className: className, color: "inherit", component: "footer", variant: "footer" },
7
7
  React.createElement(Toolbar, { variant: "dense" },
8
8
  Branding,
9
- (navLinks || socials) && (React.createElement(Links, null,
9
+ (navLinks || socials || versionInfo) && (React.createElement(Links, null,
10
10
  navLinks &&
11
11
  navLinks.map(({ label, target = ANCHOR_TARGET.SELF, url }, i) => (React.createElement(Link, { key: `${url}${i}`, label: label, target: target, url: url }))),
12
- socials && React.createElement(Socials, { buttonSize: "small", socials: socials }))))));
12
+ socials && React.createElement(Socials, { buttonSize: "small", socials: socials }),
13
+ versionInfo)))));
13
14
  };
@@ -1,5 +1,5 @@
1
1
  export declare const Tab: import("@emotion/styled").StyledComponent<import("@mui/material").TabOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
2
2
  ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
3
- }, "label" | "style" | "className" | "classes" | "tabIndex" | "children" | "sx" | "disabled" | "value" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "icon" | "disableFocusRipple" | "wrapped" | "iconPosition"> & {
3
+ }, "label" | "style" | "className" | "classes" | "tabIndex" | "children" | "sx" | "disabled" | "value" | "action" | "icon" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "wrapped" | "iconPosition"> & {
4
4
  theme?: import("@emotion/react").Theme;
5
5
  }, {}, {}>;
@@ -10,7 +10,7 @@ export declare const Tabs: import("@emotion/styled").StyledComponent<import("@mu
10
10
  }, {}, {}>;
11
11
  export declare const Tab: import("@emotion/styled").StyledComponent<import("@mui/material").TabOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
12
12
  ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
13
- }, "label" | "style" | "className" | "classes" | "tabIndex" | "children" | "sx" | "disabled" | "value" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "icon" | "disableFocusRipple" | "wrapped" | "iconPosition"> & {
13
+ }, "label" | "style" | "className" | "classes" | "tabIndex" | "children" | "sx" | "disabled" | "value" | "action" | "icon" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "wrapped" | "iconPosition"> & {
14
14
  theme?: import("@emotion/react").Theme;
15
15
  } & Props, {}, {}>;
16
16
  export {};