@adiba-banking-cloud/backoffice 0.0.106 → 0.2.1
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.
- package/build/index.cjs.js/{heatmap-BJmii0aO.js → heatmap-D-qDlLOI.js} +1 -1
- package/build/index.cjs.js/{index-BLpjQkzt.js → index-CWyl7EKZ.js} +318 -1
- package/build/index.cjs.js/index.js +14 -1
- package/build/index.esm.js/{heatmap-yNnNxsAY.js → heatmap-CtdCSRhG.js} +1 -1
- package/build/index.esm.js/{index-CWjYoFnK.js → index-D7Cza3cb.js} +591 -282
- package/build/index.esm.js/index.js +6 -1
- package/build/typings/index.d.ts +5 -0
- package/build/typings/shared/api/client.d.ts +24 -0
- package/build/typings/shared/api/constants.d.ts +12 -0
- package/build/typings/shared/api/index.d.ts +3 -0
- package/build/typings/shared/api/types.d.ts +26 -0
- package/build/typings/shared/components/ModalContentWrapper.d.ts +9 -0
- package/build/typings/shared/components/index.d.ts +1 -0
- package/build/typings/shared/hocs/index.d.ts +1 -0
- package/build/typings/shared/hocs/withProviders.d.ts +49 -0
- package/build/typings/shared/hooks/index.d.ts +1 -0
- package/build/typings/shared/hooks/useUrlFilters.d.ts +88 -0
- package/build/typings/shared/types/index.d.ts +1 -0
- package/build/typings/shared/types/pagination.d.ts +16 -0
- package/package.json +10 -2
|
@@ -19,6 +19,11 @@ require('@fontsource/poppins/500.css');
|
|
|
19
19
|
require('@fontsource/poppins/600.css');
|
|
20
20
|
require('@fontsource/poppins/700.css');
|
|
21
21
|
require('@fontsource/poppins/800.css');
|
|
22
|
+
var axios = require('axios');
|
|
23
|
+
var dates = require('@mantine/dates');
|
|
24
|
+
require('@mantine/dates/styles.css');
|
|
25
|
+
var reactQuery = require('@tanstack/react-query');
|
|
26
|
+
var reactQueryDevtools = require('@tanstack/react-query-devtools');
|
|
22
27
|
|
|
23
28
|
function _interopNamespaceDefault(e) {
|
|
24
29
|
var n = Object.create(null);
|
|
@@ -52,6 +57,7 @@ function _mergeNamespaces(n, m) {
|
|
|
52
57
|
return Object.freeze(n);
|
|
53
58
|
}
|
|
54
59
|
|
|
60
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
55
61
|
var IconSax__namespace = /*#__PURE__*/_interopNamespaceDefault(IconSax);
|
|
56
62
|
|
|
57
63
|
function getDefaultExportFromCjs (x) {
|
|
@@ -12166,7 +12172,7 @@ const initChart$1 = props => {
|
|
|
12166
12172
|
}
|
|
12167
12173
|
|
|
12168
12174
|
// Fallback: use dynamic import (async, but will work in Vite/Storybook)
|
|
12169
|
-
Promise.resolve().then(function () { return require('./heatmap-
|
|
12175
|
+
Promise.resolve().then(function () { return require('./heatmap-D-qDlLOI.js'); }).then(function (n) { return n.heatmap; }).then(heatmapModule => {
|
|
12170
12176
|
const moduleFn = typeof heatmapModule === "function" ? heatmapModule : heatmapModule?.default || heatmapModule;
|
|
12171
12177
|
if (typeof moduleFn === "function") {
|
|
12172
12178
|
moduleFn(Highcharts);
|
|
@@ -14426,12 +14432,317 @@ const useManagedModals = () => {
|
|
|
14426
14432
|
};
|
|
14427
14433
|
};
|
|
14428
14434
|
|
|
14435
|
+
/**
|
|
14436
|
+
* Default pagination page size
|
|
14437
|
+
*/
|
|
14438
|
+
const DEFAULT_PAGE_SIZE = 10;
|
|
14439
|
+
|
|
14440
|
+
/**
|
|
14441
|
+
* Maximum allowed page size for pagination
|
|
14442
|
+
*/
|
|
14443
|
+
const MAX_PAGE_SIZE = 100;
|
|
14444
|
+
|
|
14445
|
+
/**
|
|
14446
|
+
* Default API request timeout in milliseconds
|
|
14447
|
+
*/
|
|
14448
|
+
const DEFAULT_API_TIMEOUT = 30000;
|
|
14449
|
+
|
|
14450
|
+
/**
|
|
14451
|
+
* Configuration for URL filter hook
|
|
14452
|
+
*/
|
|
14453
|
+
|
|
14454
|
+
/**
|
|
14455
|
+
* Return type for useUrlFilters hook
|
|
14456
|
+
*/
|
|
14457
|
+
|
|
14458
|
+
/**
|
|
14459
|
+
* Generic hook for managing URL-based filters with pagination
|
|
14460
|
+
*
|
|
14461
|
+
* @example
|
|
14462
|
+
* ```tsx
|
|
14463
|
+
* interface MyFilters {
|
|
14464
|
+
* page: number;
|
|
14465
|
+
* limit: number;
|
|
14466
|
+
* name?: string;
|
|
14467
|
+
* status?: string;
|
|
14468
|
+
* }
|
|
14469
|
+
*
|
|
14470
|
+
* const { filters, updateFilters, clearFilters } = useUrlFilters<MyFilters>({
|
|
14471
|
+
* parseFilters: (params) => ({
|
|
14472
|
+
* page: parseInt(params.get('page') || '1', 10),
|
|
14473
|
+
* limit: parseInt(params.get('limit') || '10', 10),
|
|
14474
|
+
* name: params.get('name') || undefined,
|
|
14475
|
+
* status: params.get('status') || undefined,
|
|
14476
|
+
* }),
|
|
14477
|
+
* serializeFilters: (filters, params) => {
|
|
14478
|
+
* if (filters.page) params.set('page', String(filters.page));
|
|
14479
|
+
* if (filters.limit) params.set('limit', String(filters.limit));
|
|
14480
|
+
* if (filters.name) params.set('name', filters.name);
|
|
14481
|
+
* if (filters.status) params.set('status', filters.status);
|
|
14482
|
+
* },
|
|
14483
|
+
* });
|
|
14484
|
+
* ```
|
|
14485
|
+
*/
|
|
14486
|
+
function useUrlFilters(options) {
|
|
14487
|
+
const {
|
|
14488
|
+
defaultPageSize = DEFAULT_PAGE_SIZE,
|
|
14489
|
+
parseFilters,
|
|
14490
|
+
serializeFilters,
|
|
14491
|
+
hasActiveFilters: checkActiveFilters,
|
|
14492
|
+
toApiParams
|
|
14493
|
+
} = options;
|
|
14494
|
+
const [searchParams, setSearchParams] = reactRouterDom.useSearchParams();
|
|
14495
|
+
const filters = React.useMemo(() => {
|
|
14496
|
+
const parsed = parseFilters(searchParams);
|
|
14497
|
+
|
|
14498
|
+
// Ensure page and limit are always present with valid defaults
|
|
14499
|
+
const page = typeof parsed.page === "number" && parsed.page > 0 ? parsed.page : 1;
|
|
14500
|
+
const limit = typeof parsed.limit === "number" && parsed.limit > 0 ? parsed.limit : defaultPageSize;
|
|
14501
|
+
return {
|
|
14502
|
+
...parsed,
|
|
14503
|
+
page,
|
|
14504
|
+
limit
|
|
14505
|
+
};
|
|
14506
|
+
}, [searchParams, parseFilters, defaultPageSize]);
|
|
14507
|
+
const updateFilters = newFilters => {
|
|
14508
|
+
const params = new URLSearchParams(searchParams);
|
|
14509
|
+
|
|
14510
|
+
// Merge new filters with existing filters
|
|
14511
|
+
const mergedFilters = {
|
|
14512
|
+
...filters,
|
|
14513
|
+
...newFilters
|
|
14514
|
+
};
|
|
14515
|
+
|
|
14516
|
+
// Determine if we should reset page to 1
|
|
14517
|
+
// Reset if: page is not explicitly set AND other filters are changing
|
|
14518
|
+
const hasNonPaginationChanges = Object.keys(newFilters).some(key => key !== "page" && key !== "limit");
|
|
14519
|
+
if (newFilters.page === undefined && hasNonPaginationChanges) {
|
|
14520
|
+
mergedFilters.page = 1; // Reset to page 1
|
|
14521
|
+
}
|
|
14522
|
+
|
|
14523
|
+
// Ensure page and limit are numbers
|
|
14524
|
+
if (typeof mergedFilters.page !== "number" || mergedFilters.page < 1) {
|
|
14525
|
+
mergedFilters.page = 1;
|
|
14526
|
+
}
|
|
14527
|
+
if (typeof mergedFilters.limit !== "number" || mergedFilters.limit < 1) {
|
|
14528
|
+
mergedFilters.limit = defaultPageSize;
|
|
14529
|
+
}
|
|
14530
|
+
|
|
14531
|
+
// Serialize all filters
|
|
14532
|
+
serializeFilters(mergedFilters, params);
|
|
14533
|
+
setSearchParams(params, {
|
|
14534
|
+
replace: true
|
|
14535
|
+
});
|
|
14536
|
+
};
|
|
14537
|
+
const clearFilters = () => {
|
|
14538
|
+
const params = new URLSearchParams();
|
|
14539
|
+
params.set("page", "1");
|
|
14540
|
+
params.set("limit", String(defaultPageSize));
|
|
14541
|
+
setSearchParams(params, {
|
|
14542
|
+
replace: true
|
|
14543
|
+
});
|
|
14544
|
+
};
|
|
14545
|
+
const hasActiveFilters = React.useMemo(() => {
|
|
14546
|
+
if (checkActiveFilters) {
|
|
14547
|
+
return checkActiveFilters(filters);
|
|
14548
|
+
}
|
|
14549
|
+
// Default: check if any non-pagination fields have values
|
|
14550
|
+
return Object.keys(filters).some(key => {
|
|
14551
|
+
if (key === "page" || key === "limit") return false;
|
|
14552
|
+
const value = filters[key];
|
|
14553
|
+
return value !== undefined && value !== null && value !== "";
|
|
14554
|
+
});
|
|
14555
|
+
}, [filters, checkActiveFilters]);
|
|
14556
|
+
const apiParams = React.useMemo(() => {
|
|
14557
|
+
if (toApiParams) {
|
|
14558
|
+
return toApiParams(filters);
|
|
14559
|
+
}
|
|
14560
|
+
return undefined;
|
|
14561
|
+
}, [filters, toApiParams]);
|
|
14562
|
+
return {
|
|
14563
|
+
filters,
|
|
14564
|
+
updateFilters,
|
|
14565
|
+
clearFilters,
|
|
14566
|
+
hasActiveFilters,
|
|
14567
|
+
apiParams
|
|
14568
|
+
};
|
|
14569
|
+
}
|
|
14570
|
+
|
|
14571
|
+
class ApiClient {
|
|
14572
|
+
constructor(config) {
|
|
14573
|
+
const {
|
|
14574
|
+
baseURL = "/",
|
|
14575
|
+
timeout = DEFAULT_API_TIMEOUT,
|
|
14576
|
+
headers = {
|
|
14577
|
+
"Content-Type": "application/json"
|
|
14578
|
+
}
|
|
14579
|
+
} = config;
|
|
14580
|
+
this.client = axios.create({
|
|
14581
|
+
baseURL,
|
|
14582
|
+
timeout,
|
|
14583
|
+
headers
|
|
14584
|
+
});
|
|
14585
|
+
this.setupInterceptors();
|
|
14586
|
+
}
|
|
14587
|
+
setupInterceptors() {
|
|
14588
|
+
// Request interceptor
|
|
14589
|
+
this.client.interceptors.request.use(config => {
|
|
14590
|
+
// Add auth token, logging, etc. if needed
|
|
14591
|
+
return config;
|
|
14592
|
+
}, error => Promise.reject(error));
|
|
14593
|
+
|
|
14594
|
+
// Response interceptor
|
|
14595
|
+
this.client.interceptors.response.use(response => {
|
|
14596
|
+
return response;
|
|
14597
|
+
}, error => {
|
|
14598
|
+
// Handle errors globally
|
|
14599
|
+
return Promise.reject(this.handleError(error));
|
|
14600
|
+
});
|
|
14601
|
+
}
|
|
14602
|
+
handleError(error) {
|
|
14603
|
+
if (error && typeof error === "object" && "response" in error) {
|
|
14604
|
+
const axiosError = error;
|
|
14605
|
+
if (axiosError.response) {
|
|
14606
|
+
return {
|
|
14607
|
+
status: "error",
|
|
14608
|
+
code: axiosError.response.status,
|
|
14609
|
+
message: axiosError.response.data?.message || "An error occurred",
|
|
14610
|
+
error: axiosError.response.data?.error || axiosError.message || "An unexpected error occurred"
|
|
14611
|
+
};
|
|
14612
|
+
}
|
|
14613
|
+
}
|
|
14614
|
+
const errorMessage = error instanceof Error ? error.message : "An unexpected error occurred";
|
|
14615
|
+
return {
|
|
14616
|
+
status: "error",
|
|
14617
|
+
code: 500,
|
|
14618
|
+
message: "Network error",
|
|
14619
|
+
error: errorMessage
|
|
14620
|
+
};
|
|
14621
|
+
}
|
|
14622
|
+
async get(url, config) {
|
|
14623
|
+
const response = await this.client.get(url, config);
|
|
14624
|
+
return response.data;
|
|
14625
|
+
}
|
|
14626
|
+
async post(url, data, config) {
|
|
14627
|
+
const response = await this.client.post(url, data, config);
|
|
14628
|
+
return response.data;
|
|
14629
|
+
}
|
|
14630
|
+
async put(url, data, config) {
|
|
14631
|
+
const response = await this.client.put(url, data, config);
|
|
14632
|
+
return response.data;
|
|
14633
|
+
}
|
|
14634
|
+
async delete(url, config) {
|
|
14635
|
+
const response = await this.client.delete(url, config);
|
|
14636
|
+
return response.data;
|
|
14637
|
+
}
|
|
14638
|
+
}
|
|
14639
|
+
|
|
14640
|
+
/**
|
|
14641
|
+
* Factory function to create a configured API client instance
|
|
14642
|
+
* @param config - Configuration options for the API client
|
|
14643
|
+
* @returns Configured ApiClient instance
|
|
14644
|
+
*/
|
|
14645
|
+
function createApiClient() {
|
|
14646
|
+
let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
14647
|
+
return new ApiClient(config);
|
|
14648
|
+
}
|
|
14649
|
+
|
|
14650
|
+
/**
|
|
14651
|
+
* Default API client instance with default configuration
|
|
14652
|
+
* For custom configuration, use createApiClient() instead
|
|
14653
|
+
*/
|
|
14654
|
+
const apiClient = createApiClient();
|
|
14655
|
+
|
|
14656
|
+
/**
|
|
14657
|
+
* Wrapper component for modal content to ensure MantineProvider context is available
|
|
14658
|
+
* This is needed because modals rendered by the appshell may not have access to the pilet's provider
|
|
14659
|
+
*/
|
|
14660
|
+
const ModalContentWrapper = _ref => {
|
|
14661
|
+
let {
|
|
14662
|
+
children
|
|
14663
|
+
} = _ref;
|
|
14664
|
+
return /*#__PURE__*/React__namespace.createElement(core.MantineProvider, {
|
|
14665
|
+
theme: theme
|
|
14666
|
+
}, /*#__PURE__*/React__namespace.createElement(dates.DatesProvider, {
|
|
14667
|
+
settings: {
|
|
14668
|
+
locale: "en",
|
|
14669
|
+
timezone: "UTC"
|
|
14670
|
+
}
|
|
14671
|
+
}, children));
|
|
14672
|
+
};
|
|
14673
|
+
|
|
14674
|
+
/**
|
|
14675
|
+
* Default QueryClient configuration
|
|
14676
|
+
*/
|
|
14677
|
+
const defaultQueryClient = new reactQuery.QueryClient({
|
|
14678
|
+
defaultOptions: {
|
|
14679
|
+
queries: {
|
|
14680
|
+
retry: 1,
|
|
14681
|
+
refetchOnWindowFocus: false,
|
|
14682
|
+
staleTime: 30000,
|
|
14683
|
+
// 30 seconds
|
|
14684
|
+
gcTime: 5 * 60 * 1000 // 5 minutes
|
|
14685
|
+
},
|
|
14686
|
+
mutations: {
|
|
14687
|
+
retry: false
|
|
14688
|
+
}
|
|
14689
|
+
}
|
|
14690
|
+
});
|
|
14691
|
+
/**
|
|
14692
|
+
* Higher-order component that wraps a component with all necessary providers:
|
|
14693
|
+
* - QueryClientProvider (React Query)
|
|
14694
|
+
* - MantineProvider (Mantine UI)
|
|
14695
|
+
* - DatesProvider (Mantine Dates)
|
|
14696
|
+
*
|
|
14697
|
+
* @param Component - Component to wrap
|
|
14698
|
+
* @param options - Optional configuration
|
|
14699
|
+
* @returns Wrapped component with all providers
|
|
14700
|
+
*
|
|
14701
|
+
* @example
|
|
14702
|
+
* ```tsx
|
|
14703
|
+
* // Using default configuration
|
|
14704
|
+
* const WrappedComponent = withProviders(MyComponent);
|
|
14705
|
+
*
|
|
14706
|
+
* // Using custom QueryClient
|
|
14707
|
+
* const customQueryClient = new QueryClient({ ... });
|
|
14708
|
+
* const WrappedComponent = withProviders(MyComponent, {
|
|
14709
|
+
* queryClient: customQueryClient,
|
|
14710
|
+
* });
|
|
14711
|
+
* ```
|
|
14712
|
+
*/
|
|
14713
|
+
function withProviders(Component) {
|
|
14714
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
14715
|
+
const {
|
|
14716
|
+
queryClient = defaultQueryClient,
|
|
14717
|
+
enableDevtools = true,
|
|
14718
|
+
theme: customTheme = theme,
|
|
14719
|
+
datesSettings = {
|
|
14720
|
+
locale: "en",
|
|
14721
|
+
timezone: "UTC"
|
|
14722
|
+
}
|
|
14723
|
+
} = options;
|
|
14724
|
+
const WrappedComponent = props => {
|
|
14725
|
+
const showDevtools = enableDevtools && typeof process !== "undefined" && process.env?.NODE_ENV === "development";
|
|
14726
|
+
return /*#__PURE__*/React__namespace.createElement(reactQuery.QueryClientProvider, {
|
|
14727
|
+
client: queryClient
|
|
14728
|
+
}, /*#__PURE__*/React__namespace.createElement(core.MantineProvider, {
|
|
14729
|
+
theme: customTheme
|
|
14730
|
+
}, /*#__PURE__*/React__namespace.createElement(dates.DatesProvider, {
|
|
14731
|
+
settings: datesSettings
|
|
14732
|
+
}, /*#__PURE__*/React__namespace.createElement(Component, props), showDevtools && /*#__PURE__*/React__namespace.createElement(reactQueryDevtools.ReactQueryDevtools, null))));
|
|
14733
|
+
};
|
|
14734
|
+
WrappedComponent.displayName = `withProviders(${Component.displayName || Component.name || "Component"})`;
|
|
14735
|
+
return WrappedComponent;
|
|
14736
|
+
}
|
|
14737
|
+
|
|
14429
14738
|
exports.ApplicationMenu = ApplicationMenu;
|
|
14430
14739
|
exports.ApplicationPanel = ApplicationPanel;
|
|
14431
14740
|
exports.AvatarLabelPanel = AvatarLabelPanel;
|
|
14432
14741
|
exports.BasicHeatmap = BasicHeatmap;
|
|
14433
14742
|
exports.CalendarHeatmap = CalendarHeatmap;
|
|
14434
14743
|
exports.ConnectionPanel = ConnectionPanel;
|
|
14744
|
+
exports.DEFAULT_API_TIMEOUT = DEFAULT_API_TIMEOUT;
|
|
14745
|
+
exports.DEFAULT_PAGE_SIZE = DEFAULT_PAGE_SIZE;
|
|
14435
14746
|
exports.DonutChart = DonutChart;
|
|
14436
14747
|
exports.Drawer = Drawer;
|
|
14437
14748
|
exports.DynamicLogo = DynamicLogo;
|
|
@@ -14443,7 +14754,9 @@ exports.Icons = Icons;
|
|
|
14443
14754
|
exports.InfoModal = InfoModal;
|
|
14444
14755
|
exports.InterpolatedHeatmap = InterpolatedHeatmap;
|
|
14445
14756
|
exports.LabelPanel = LabelPanel;
|
|
14757
|
+
exports.MAX_PAGE_SIZE = MAX_PAGE_SIZE;
|
|
14446
14758
|
exports.MaskedTilePanel = MaskedTilePanel;
|
|
14759
|
+
exports.ModalContentWrapper = ModalContentWrapper;
|
|
14447
14760
|
exports.MultiAxisArea = MultiAxisArea;
|
|
14448
14761
|
exports.PageTitle = PageTitle;
|
|
14449
14762
|
exports.PaymentMethod = PaymentMethod;
|
|
@@ -14466,7 +14779,11 @@ exports.TitleWithIndex = TitleWithIndex;
|
|
|
14466
14779
|
exports.TitledPanel = TitledPanel;
|
|
14467
14780
|
exports.TwoFactorModal = TwoFactorModal;
|
|
14468
14781
|
exports.UserMenu = UserMenu;
|
|
14782
|
+
exports.apiClient = apiClient;
|
|
14783
|
+
exports.createApiClient = createApiClient;
|
|
14469
14784
|
exports.getDefaultExportFromCjs = getDefaultExportFromCjs;
|
|
14470
14785
|
exports.theme = theme;
|
|
14471
14786
|
exports.useManagedModals = useManagedModals;
|
|
14472
14787
|
exports.useModal = useModal;
|
|
14788
|
+
exports.useUrlFilters = useUrlFilters;
|
|
14789
|
+
exports.withProviders = withProviders;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-CWyl7EKZ.js');
|
|
4
4
|
require('@mantine/modals');
|
|
5
5
|
require('react');
|
|
6
6
|
require('@mantine/core');
|
|
@@ -20,6 +20,11 @@ require('@fontsource/poppins/500.css');
|
|
|
20
20
|
require('@fontsource/poppins/600.css');
|
|
21
21
|
require('@fontsource/poppins/700.css');
|
|
22
22
|
require('@fontsource/poppins/800.css');
|
|
23
|
+
require('axios');
|
|
24
|
+
require('@mantine/dates');
|
|
25
|
+
require('@mantine/dates/styles.css');
|
|
26
|
+
require('@tanstack/react-query');
|
|
27
|
+
require('@tanstack/react-query-devtools');
|
|
23
28
|
|
|
24
29
|
|
|
25
30
|
|
|
@@ -29,6 +34,8 @@ exports.AvatarLabelPanel = index.AvatarLabelPanel;
|
|
|
29
34
|
exports.BasicHeatmap = index.BasicHeatmap;
|
|
30
35
|
exports.CalendarHeatmap = index.CalendarHeatmap;
|
|
31
36
|
exports.ConnectionPanel = index.ConnectionPanel;
|
|
37
|
+
exports.DEFAULT_API_TIMEOUT = index.DEFAULT_API_TIMEOUT;
|
|
38
|
+
exports.DEFAULT_PAGE_SIZE = index.DEFAULT_PAGE_SIZE;
|
|
32
39
|
exports.DonutChart = index.DonutChart;
|
|
33
40
|
exports.Drawer = index.Drawer;
|
|
34
41
|
exports.DynamicLogo = index.DynamicLogo;
|
|
@@ -40,7 +47,9 @@ exports.Icons = index.Icons;
|
|
|
40
47
|
exports.InfoModal = index.InfoModal;
|
|
41
48
|
exports.InterpolatedHeatmap = index.InterpolatedHeatmap;
|
|
42
49
|
exports.LabelPanel = index.LabelPanel;
|
|
50
|
+
exports.MAX_PAGE_SIZE = index.MAX_PAGE_SIZE;
|
|
43
51
|
exports.MaskedTilePanel = index.MaskedTilePanel;
|
|
52
|
+
exports.ModalContentWrapper = index.ModalContentWrapper;
|
|
44
53
|
exports.MultiAxisArea = index.MultiAxisArea;
|
|
45
54
|
exports.PageTitle = index.PageTitle;
|
|
46
55
|
exports.PaymentMethod = index.PaymentMethod;
|
|
@@ -63,6 +72,10 @@ exports.TitleWithIndex = index.TitleWithIndex;
|
|
|
63
72
|
exports.TitledPanel = index.TitledPanel;
|
|
64
73
|
exports.TwoFactorModal = index.TwoFactorModal;
|
|
65
74
|
exports.UserMenu = index.UserMenu;
|
|
75
|
+
exports.apiClient = index.apiClient;
|
|
76
|
+
exports.createApiClient = index.createApiClient;
|
|
66
77
|
exports.theme = index.theme;
|
|
67
78
|
exports.useManagedModals = index.useManagedModals;
|
|
68
79
|
exports.useModal = index.useModal;
|
|
80
|
+
exports.useUrlFilters = index.useUrlFilters;
|
|
81
|
+
exports.withProviders = index.withProviders;
|