@refinedev/core 4.46.2 → 4.47.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 (78) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/README.md +4 -4
  3. package/dist/components/canAccess/index.d.ts +3 -0
  4. package/dist/components/canAccess/index.d.ts.map +1 -1
  5. package/dist/components/containers/refine/index.d.ts +4 -4
  6. package/dist/components/containers/refine/index.d.ts.map +1 -1
  7. package/dist/components/pages/config-error/index.d.ts +3 -0
  8. package/dist/components/pages/config-error/index.d.ts.map +1 -0
  9. package/dist/components/pages/config-success/index.d.ts +6 -0
  10. package/dist/components/pages/config-success/index.d.ts.map +1 -0
  11. package/dist/components/pages/welcome/index.d.ts +2 -5
  12. package/dist/components/pages/welcome/index.d.ts.map +1 -1
  13. package/dist/contexts/accessControl/IAccessControlContext.d.ts +3 -0
  14. package/dist/contexts/accessControl/IAccessControlContext.d.ts.map +1 -1
  15. package/dist/contexts/accessControl/index.d.ts.map +1 -1
  16. package/dist/contexts/auth/IAuthContext.d.ts +1 -1
  17. package/dist/contexts/data/index.d.ts +5 -49
  18. package/dist/contexts/data/index.d.ts.map +1 -1
  19. package/dist/contexts/refine/IRefineContext.d.ts +2 -0
  20. package/dist/contexts/refine/IRefineContext.d.ts.map +1 -1
  21. package/dist/contexts/refine/index.d.ts.map +1 -1
  22. package/dist/definitions/helpers/downloadInBrowser/index.d.ts +2 -0
  23. package/dist/definitions/helpers/downloadInBrowser/index.d.ts.map +1 -0
  24. package/dist/definitions/helpers/index.d.ts +1 -0
  25. package/dist/definitions/helpers/index.d.ts.map +1 -1
  26. package/dist/esm/index.js +26 -6
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/hooks/accessControl/useCan/index.d.ts +1 -1
  29. package/dist/hooks/accessControl/useCan/index.d.ts.map +1 -1
  30. package/dist/hooks/auth/useForgotPassword/index.d.ts.map +1 -1
  31. package/dist/hooks/auth/useLogin/index.d.ts.map +1 -1
  32. package/dist/hooks/auth/useLogout/index.d.ts.map +1 -1
  33. package/dist/hooks/auth/useRegister/index.d.ts.map +1 -1
  34. package/dist/hooks/auth/useUpdatePassword/index.d.ts.map +1 -1
  35. package/dist/hooks/data/useDataProvider.d.ts.map +1 -1
  36. package/dist/hooks/export/index.d.ts +27 -4
  37. package/dist/hooks/export/index.d.ts.map +1 -1
  38. package/dist/hooks/refine/useRefineContext.d.ts +1 -0
  39. package/dist/hooks/refine/useRefineContext.d.ts.map +1 -1
  40. package/dist/iife/index.js +26 -6
  41. package/dist/iife/index.js.map +1 -1
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +26 -6
  45. package/dist/index.js.map +1 -1
  46. package/dist/interfaces/bindings/auth.d.ts +7 -1
  47. package/dist/interfaces/bindings/auth.d.ts.map +1 -1
  48. package/dist/interfaces/bindings/index.d.ts +1 -1
  49. package/dist/interfaces/bindings/index.d.ts.map +1 -1
  50. package/dist/interfaces/metaData/graphqlQueryOptions.d.ts +47 -0
  51. package/dist/interfaces/metaData/graphqlQueryOptions.d.ts.map +1 -1
  52. package/package.json +1 -2
  53. package/src/components/canAccess/index.tsx +6 -0
  54. package/src/components/containers/refine/index.tsx +4 -4
  55. package/src/components/pages/config-error/index.tsx +444 -0
  56. package/src/components/pages/config-success/index.tsx +294 -0
  57. package/src/components/pages/welcome/index.tsx +10 -289
  58. package/src/contexts/accessControl/IAccessControlContext.ts +3 -0
  59. package/src/contexts/accessControl/index.tsx +1 -0
  60. package/src/contexts/auth/IAuthContext.ts +1 -1
  61. package/src/contexts/data/index.tsx +9 -24
  62. package/src/contexts/refine/IRefineContext.ts +2 -0
  63. package/src/contexts/refine/index.tsx +1 -0
  64. package/src/definitions/helpers/downloadInBrowser/index.ts +25 -0
  65. package/src/definitions/helpers/index.ts +1 -0
  66. package/src/hooks/accessControl/useCan/index.ts +12 -5
  67. package/src/hooks/auth/useForgotPassword/index.ts +17 -1
  68. package/src/hooks/auth/useLogin/index.ts +22 -1
  69. package/src/hooks/auth/useLogout/index.ts +17 -1
  70. package/src/hooks/auth/useRegister/index.ts +22 -1
  71. package/src/hooks/auth/useUpdatePassword/index.ts +17 -1
  72. package/src/hooks/data/useDataProvider.tsx +3 -2
  73. package/src/hooks/export/index.ts +90 -9
  74. package/src/hooks/refine/useRefineContext.ts +2 -0
  75. package/src/index.tsx +1 -0
  76. package/src/interfaces/bindings/auth.ts +9 -1
  77. package/src/interfaces/bindings/index.ts +1 -0
  78. package/src/interfaces/metaData/graphqlQueryOptions.ts +47 -0
@@ -42,11 +42,16 @@ export declare type OnErrorResponse = {
42
42
  logout?: boolean;
43
43
  error?: RefineError | Error;
44
44
  };
45
+ export declare type SuccessNotificationResponse = {
46
+ message: string;
47
+ description?: string;
48
+ };
45
49
  export declare type AuthActionResponse = {
46
50
  success: boolean;
47
51
  redirectTo?: string;
48
52
  error?: RefineError | Error;
49
53
  [key: string]: unknown;
54
+ successNotification?: SuccessNotificationResponse;
50
55
  };
51
56
  export declare type PermissionResponse = unknown;
52
57
  export declare type IdentityResponse = unknown;
@@ -61,7 +66,8 @@ export declare type AuthBindings = {
61
66
  getPermissions?: (params?: any) => Promise<PermissionResponse>;
62
67
  getIdentity?: (params?: any) => Promise<IdentityResponse>;
63
68
  };
64
- export interface IAuthBindingsContext extends Partial<AuthBindings> {
69
+ export interface IAuthBindingsContext extends Partial<AuthProvider> {
65
70
  isProvided: boolean;
66
71
  }
72
+ export declare type AuthProvider = AuthBindings;
67
73
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/interfaces/bindings/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,oBAAY,aAAa,GAAG;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAC/B,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAC/B,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAC;AAEF,oBAAY,kBAAkB,GAAG,OAAO,CAAC;AAEzC,oBAAY,gBAAgB,GAAG,OAAO,CAAC;AAEvC,oBAAY,YAAY,GAAG;IACvB,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACxD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC7D,CAAC;AAEF,MAAM,WAAW,oBAAqB,SAAQ,OAAO,CAAC,YAAY,CAAC;IAC/D,UAAU,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/interfaces/bindings/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,oBAAY,aAAa,GAAG;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAC/B,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAC/B,CAAC;AAEF,oBAAY,2BAA2B,GAAG;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAA;AAED,oBAAY,kBAAkB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;CACrD,CAAC;AAEF,oBAAY,kBAAkB,GAAG,OAAO,CAAC;AAEzC,oBAAY,gBAAgB,GAAG,OAAO,CAAC;AAEvC,oBAAY,YAAY,GAAG;IACvB,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACxD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC7D,CAAC;AAEF,MAAM,WAAW,oBAAqB,SAAQ,OAAO,CAAC,YAAY,CAAC;IAC/D,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,oBAAY,YAAY,GAAG,YAAY,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { AccessControlBindings } from "./access-control";
2
- export { AuthBindings, IAuthBindingsContext, AuthActionResponse, IdentityResponse, CheckResponse, OnErrorResponse, PermissionResponse, } from "./auth";
2
+ export { AuthBindings, IAuthBindingsContext, AuthActionResponse, IdentityResponse, CheckResponse, OnErrorResponse, PermissionResponse, AuthProvider, } from "./auth";
3
3
  export { DataBindings } from "./data";
4
4
  export { i18nBindings } from "./i18n";
5
5
  export { LiveBindings } from "./live";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/bindings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACH,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,kBAAkB,GACrB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACH,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,aAAa,GAChB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/bindings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACH,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,GACf,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACH,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,aAAa,GAChB,MAAM,UAAU,CAAC"}
@@ -1,6 +1,53 @@
1
1
  import type { DocumentNode } from "graphql";
2
2
  export declare type GraphQLQueryOptions = {
3
+ /**
4
+ * @description GraphQL query to be used by data providers.
5
+ * @optional
6
+ * @example
7
+ * ```tsx
8
+ * import gql from 'graphql-tag'
9
+ * import { useOne } from '@refinedev/core'
10
+ *
11
+ * const PRODUCT_QUERY = gql`
12
+ * query GetProduct($id: ID!) {
13
+ * product(id: $id) {
14
+ * id
15
+ * name
16
+ * }
17
+ * }
18
+ * `
19
+ *
20
+ * useOne({
21
+ * id: 1,
22
+ * meta: { gqlQuery: PRODUCT_QUERY }
23
+ * })
24
+ * ```
25
+ */
3
26
  gqlQuery?: DocumentNode;
27
+ /**
28
+ * @description GraphQL mutation to be used by data providers.
29
+ * @optional
30
+ * @example
31
+ * ```tsx
32
+ * import gql from 'graphql-tag'
33
+ * import { useCreate } from '@refinedev/core'
34
+ *
35
+ * const PRODUCT_CREATE_MUTATION = gql`
36
+ * mutation CreateProduct($input: CreateOneProductInput!) {
37
+ * createProduct(input: $input) {
38
+ * id
39
+ * name
40
+ * }
41
+ * }
42
+ * `
43
+ * const { mutate } = useCreate()
44
+ *
45
+ * mutate({
46
+ * values: { name: "My Product" },
47
+ * meta: { gqlQuery: PRODUCT_QUERY }
48
+ * })
49
+ * ```
50
+ */
4
51
  gqlMutation?: DocumentNode;
5
52
  };
6
53
  //# sourceMappingURL=graphqlQueryOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphqlQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/interfaces/metaData/graphqlQueryOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,oBAAY,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"graphqlQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/interfaces/metaData/graphqlQueryOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,oBAAY,mBAAmB,GAAG;IAC9B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;CAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@refinedev/core",
3
- "version": "4.46.2",
3
+ "version": "4.47.0",
4
4
  "description": "refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -45,7 +45,6 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@refinedev/devtools-internal": "1.1.4",
48
- "export-to-csv-fix-source-map": "^0.2.1",
49
48
  "lodash-es": "^4.17.21",
50
49
  "lodash": "^4.17.21",
51
50
  "papaparse": "^5.3.0",
@@ -2,6 +2,9 @@ import React, { useEffect } from "react";
2
2
 
3
3
  import { useCan, useResource } from "@hooks";
4
4
  import { BaseKey, IResourceItem, ITreeMenu } from "../../interfaces";
5
+ import { UseQueryOptions } from "@tanstack/react-query";
6
+
7
+ import { CanReturnType } from "../../interfaces";
5
8
 
6
9
  type CanParams = {
7
10
  resource?: IResourceItem & { children?: ITreeMenu[] };
@@ -39,6 +42,7 @@ type CanAccessBaseProps = {
39
42
  */
40
43
  onUnauthorized?: (props: OnUnauthorizedProps) => void;
41
44
  children: React.ReactNode;
45
+ queryOptions?: UseQueryOptions<CanReturnType>;
42
46
  };
43
47
 
44
48
  type CanAccessWithoutParamsProps = {
@@ -59,6 +63,7 @@ export const CanAccess: React.FC<CanAccessProps> = ({
59
63
  fallback,
60
64
  onUnauthorized,
61
65
  children,
66
+ queryOptions: componentQueryOptions,
62
67
  ...rest
63
68
  }) => {
64
69
  const {
@@ -90,6 +95,7 @@ export const CanAccess: React.FC<CanAccessProps> = ({
90
95
  resource: resourceName,
91
96
  action,
92
97
  params,
98
+ queryOptions: componentQueryOptions,
93
99
  });
94
100
 
95
101
  useEffect(() => {
@@ -29,7 +29,7 @@ import { useRouterMisuseWarning } from "../../../hooks/router/use-router-misuse-
29
29
  import {
30
30
  AccessControlProvider,
31
31
  AuditLogProvider,
32
- AuthBindings,
32
+ AuthProvider,
33
33
  DashboardPageProps,
34
34
  I18nProvider,
35
35
  IDataContextProvider,
@@ -69,12 +69,12 @@ export interface RefineProps {
69
69
  * A `dataProvider` is the place where a refine app communicates with an API. Data providers also act as adapters for refine, making it possible for it to consume different API's and data services.
70
70
  * @type [`IDataContextProvider` | `IDataMultipleContextProvider`](https://refine.dev/docs/api-reference/core/providers/data-provider/)
71
71
  */
72
- dataProvider: IDataContextProvider | IDataMultipleContextProvider;
72
+ dataProvider?: IDataContextProvider | IDataMultipleContextProvider;
73
73
  /**
74
74
  * `authProvider` handles authentication logic like login, logout flow and checking user credentials. It is an object with methods that refine uses when necessary.
75
- * @type [`AuthBindings`](https://refine.dev/docs/api-reference/core/providers/auth-provider/)
75
+ * @type [`AuthProvider`](https://refine.dev/docs/api-reference/core/providers/auth-provider/)
76
76
  */
77
- authProvider?: AuthBindings;
77
+ authProvider?: AuthProvider;
78
78
  /**
79
79
  * `legacyAuthProvider` handles authentication logic like login, logout flow and checking user credentials. It is an object with methods that refine uses when necessary.
80
80
  * @type [`AuthProvider`](https://refine.dev/docs/api-reference/core/providers/auth-provider/)
@@ -0,0 +1,444 @@
1
+ import React from "react";
2
+
3
+ export const ConfigErrorPage = () => {
4
+ return (
5
+ <div
6
+ style={{
7
+ position: "fixed",
8
+ zIndex: 11,
9
+ inset: 0,
10
+ overflow: "auto",
11
+ width: "100dvw",
12
+ height: "100dvh",
13
+ }}
14
+ >
15
+ <div
16
+ style={{
17
+ width: "100%",
18
+ height: "100%",
19
+ display: "flex",
20
+ justifyContent: "center",
21
+ alignItems: "center",
22
+ padding: "24px",
23
+ background: "#14141FBF",
24
+ backdropFilter: "blur(3px)",
25
+ }}
26
+ >
27
+ <div
28
+ style={{
29
+ maxWidth: "640px",
30
+ width: "100%",
31
+ background: "#1D1E30",
32
+ borderRadius: "16px",
33
+ border: "1px solid #303450",
34
+ boxShadow: "0px 0px 120px -24px #000000",
35
+ }}
36
+ >
37
+ <div
38
+ style={{
39
+ padding: "16px 20px",
40
+ borderBottom: "1px solid #303450",
41
+ display: "flex",
42
+ alignItems: "center",
43
+ gap: "8px",
44
+ position: "relative",
45
+ }}
46
+ >
47
+ <ErrorGradient
48
+ style={{
49
+ position: "absolute",
50
+ left: 0,
51
+ top: 0,
52
+ }}
53
+ />
54
+ <div
55
+ style={{
56
+ lineHeight: "24px",
57
+ fontSize: "16px",
58
+ color: "#FFFFFF",
59
+ display: "flex",
60
+ alignItems: "center",
61
+ gap: "16px",
62
+ }}
63
+ >
64
+ <ErrorIcon />
65
+ <span
66
+ style={{
67
+ fontWeight: 400,
68
+ }}
69
+ >
70
+ Configuration Error
71
+ </span>
72
+ </div>
73
+ </div>
74
+ <div
75
+ style={{
76
+ padding: "20px",
77
+ color: "#A3ADC2",
78
+ lineHeight: "20px",
79
+ fontSize: "14px",
80
+ display: "flex",
81
+ flexDirection: "column",
82
+ gap: "20px",
83
+ }}
84
+ >
85
+ <p
86
+ style={{
87
+ margin: 0,
88
+ padding: 0,
89
+ lineHeight: "28px",
90
+ fontSize: "16px",
91
+ }}
92
+ >
93
+ <code
94
+ style={{
95
+ display: "inline-block",
96
+ background: "#30345080",
97
+ padding: "0 4px",
98
+ lineHeight: "24px",
99
+ fontSize: "16px",
100
+ borderRadius: "4px",
101
+ color: "#FFFFFF",
102
+ }}
103
+ >{`<Refine />`}</code>{" "}
104
+ is not initialized. Please make sure you have it
105
+ mounted in your app and placed your components
106
+ inside it.
107
+ </p>
108
+ <div>
109
+ <ExampleImplementation />
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ );
116
+ };
117
+
118
+ const ExampleImplementation = () => {
119
+ return (
120
+ <pre
121
+ style={{
122
+ display: "block",
123
+ overflowX: "auto",
124
+ borderRadius: "8px",
125
+ fontSize: "14px",
126
+ lineHeight: "24px",
127
+ backgroundColor: "#14141F",
128
+ color: "#E5ECF2",
129
+ padding: "16px",
130
+ margin: "0",
131
+ maxHeight: "400px",
132
+ overflow: "auto",
133
+ }}
134
+ >
135
+ <span style={{ color: "#FF7B72" }}>import</span> {"{"} Refine,
136
+ WelcomePage {"}"} <span style={{ color: "#FF7B72" }}>from</span>{" "}
137
+ <span style={{ color: "#A5D6FF" }}>{'"@refinedev/core"'}</span>;
138
+ {"\n"}
139
+ {"\n"}
140
+ <span style={{ color: "#FF7B72" }}>export</span>{" "}
141
+ <span style={{ color: "#FF7B72" }}>default</span>{" "}
142
+ <span>
143
+ <span style={{ color: "#FF7B72" }}>function</span>{" "}
144
+ <span style={{ color: "#FFA657" }}>App</span>
145
+ (
146
+ <span style={{ color: "rgb(222, 147, 95)" }} />){" "}
147
+ </span>
148
+ {"{"}
149
+ {"\n"}
150
+ {" "}
151
+ <span style={{ color: "#FF7B72" }}>return</span> ({"\n"}
152
+ {" "}
153
+ <span>
154
+ <span style={{ color: "#79C0FF" }}>
155
+ &lt;
156
+ <span style={{ color: "#79C0FF" }}>Refine</span>
157
+ {"\n"}
158
+ {" "}
159
+ <span style={{ color: "#E5ECF2", opacity: 0.6 }}>
160
+ {"// "}
161
+ <span>...</span>
162
+ </span>
163
+ {"\n"}
164
+ {" "}&gt;
165
+ </span>
166
+ {"\n"}
167
+ {" "}
168
+ <span style={{ opacity: 0.6 }}>
169
+ {"{"}
170
+ {"/* ... */"}
171
+ {"}"}
172
+ </span>
173
+ {"\n"}
174
+ {" "}
175
+ <span style={{ color: "#79C0FF" }}>
176
+ &lt;
177
+ <span style={{ color: "#79C0FF" }}>WelcomePage</span> /&gt;
178
+ </span>
179
+ {"\n"}
180
+ {" "}
181
+ <span style={{ opacity: 0.6 }}>
182
+ {"{"}
183
+ {"/* ... */"}
184
+ {"}"}
185
+ </span>
186
+ {"\n"}
187
+ {" "}
188
+ <span style={{ color: "#79C0FF" }}>
189
+ &lt;/
190
+ <span style={{ color: "#79C0FF" }}>Refine</span>
191
+ &gt;
192
+ </span>
193
+ </span>
194
+ {"\n"}
195
+ {" "});{"\n"}
196
+ {"}"}
197
+ </pre>
198
+ );
199
+ };
200
+
201
+ const ErrorGradient = (props: React.SVGProps<SVGSVGElement>) => (
202
+ <svg
203
+ xmlns="http://www.w3.org/2000/svg"
204
+ width={204}
205
+ height={56}
206
+ viewBox="0 0 204 56"
207
+ fill="none"
208
+ {...props}
209
+ >
210
+ <path fill="url(#welcome-page-error-gradient-a)" d="M12 0H0v12L12 0Z" />
211
+ <path
212
+ fill="url(#welcome-page-error-gradient-b)"
213
+ d="M28 0h-8L0 20v8L28 0Z"
214
+ />
215
+ <path
216
+ fill="url(#welcome-page-error-gradient-c)"
217
+ d="M36 0h8L0 44v-8L36 0Z"
218
+ />
219
+ <path
220
+ fill="url(#welcome-page-error-gradient-d)"
221
+ d="M60 0h-8L0 52v4h4L60 0Z"
222
+ />
223
+ <path
224
+ fill="url(#welcome-page-error-gradient-e)"
225
+ d="M68 0h8L20 56h-8L68 0Z"
226
+ />
227
+ <path
228
+ fill="url(#welcome-page-error-gradient-f)"
229
+ d="M92 0h-8L28 56h8L92 0Z"
230
+ />
231
+ <path
232
+ fill="url(#welcome-page-error-gradient-g)"
233
+ d="M100 0h8L52 56h-8l56-56Z"
234
+ />
235
+ <path
236
+ fill="url(#welcome-page-error-gradient-h)"
237
+ d="M124 0h-8L60 56h8l56-56Z"
238
+ />
239
+ <path
240
+ fill="url(#welcome-page-error-gradient-i)"
241
+ d="M140 0h-8L76 56h8l56-56Z"
242
+ />
243
+ <path
244
+ fill="url(#welcome-page-error-gradient-j)"
245
+ d="M132 0h8L84 56h-8l56-56Z"
246
+ />
247
+ <path
248
+ fill="url(#welcome-page-error-gradient-k)"
249
+ d="M156 0h-8L92 56h8l56-56Z"
250
+ />
251
+ <path
252
+ fill="url(#welcome-page-error-gradient-l)"
253
+ d="M164 0h8l-56 56h-8l56-56Z"
254
+ />
255
+ <path
256
+ fill="url(#welcome-page-error-gradient-m)"
257
+ d="M188 0h-8l-56 56h8l56-56Z"
258
+ />
259
+ <path
260
+ fill="url(#welcome-page-error-gradient-n)"
261
+ d="M204 0h-8l-56 56h8l56-56Z"
262
+ />
263
+ <defs>
264
+ <radialGradient
265
+ id="welcome-page-error-gradient-a"
266
+ cx={0}
267
+ cy={0}
268
+ r={1}
269
+ gradientTransform="scale(124)"
270
+ gradientUnits="userSpaceOnUse"
271
+ >
272
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
273
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
274
+ </radialGradient>
275
+ <radialGradient
276
+ id="welcome-page-error-gradient-b"
277
+ cx={0}
278
+ cy={0}
279
+ r={1}
280
+ gradientTransform="scale(124)"
281
+ gradientUnits="userSpaceOnUse"
282
+ >
283
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
284
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
285
+ </radialGradient>
286
+ <radialGradient
287
+ id="welcome-page-error-gradient-c"
288
+ cx={0}
289
+ cy={0}
290
+ r={1}
291
+ gradientTransform="scale(124)"
292
+ gradientUnits="userSpaceOnUse"
293
+ >
294
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
295
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
296
+ </radialGradient>
297
+ <radialGradient
298
+ id="welcome-page-error-gradient-d"
299
+ cx={0}
300
+ cy={0}
301
+ r={1}
302
+ gradientTransform="scale(124)"
303
+ gradientUnits="userSpaceOnUse"
304
+ >
305
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
306
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
307
+ </radialGradient>
308
+ <radialGradient
309
+ id="welcome-page-error-gradient-e"
310
+ cx={0}
311
+ cy={0}
312
+ r={1}
313
+ gradientTransform="scale(124)"
314
+ gradientUnits="userSpaceOnUse"
315
+ >
316
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
317
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
318
+ </radialGradient>
319
+ <radialGradient
320
+ id="welcome-page-error-gradient-f"
321
+ cx={0}
322
+ cy={0}
323
+ r={1}
324
+ gradientTransform="scale(124)"
325
+ gradientUnits="userSpaceOnUse"
326
+ >
327
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
328
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
329
+ </radialGradient>
330
+ <radialGradient
331
+ id="welcome-page-error-gradient-g"
332
+ cx={0}
333
+ cy={0}
334
+ r={1}
335
+ gradientTransform="scale(124)"
336
+ gradientUnits="userSpaceOnUse"
337
+ >
338
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
339
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
340
+ </radialGradient>
341
+ <radialGradient
342
+ id="welcome-page-error-gradient-h"
343
+ cx={0}
344
+ cy={0}
345
+ r={1}
346
+ gradientTransform="scale(124)"
347
+ gradientUnits="userSpaceOnUse"
348
+ >
349
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
350
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
351
+ </radialGradient>
352
+ <radialGradient
353
+ id="welcome-page-error-gradient-i"
354
+ cx={0}
355
+ cy={0}
356
+ r={1}
357
+ gradientTransform="scale(124)"
358
+ gradientUnits="userSpaceOnUse"
359
+ >
360
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
361
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
362
+ </radialGradient>
363
+ <radialGradient
364
+ id="welcome-page-error-gradient-j"
365
+ cx={0}
366
+ cy={0}
367
+ r={1}
368
+ gradientTransform="scale(124)"
369
+ gradientUnits="userSpaceOnUse"
370
+ >
371
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
372
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
373
+ </radialGradient>
374
+ <radialGradient
375
+ id="welcome-page-error-gradient-k"
376
+ cx={0}
377
+ cy={0}
378
+ r={1}
379
+ gradientTransform="scale(124)"
380
+ gradientUnits="userSpaceOnUse"
381
+ >
382
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
383
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
384
+ </radialGradient>
385
+ <radialGradient
386
+ id="welcome-page-error-gradient-l"
387
+ cx={0}
388
+ cy={0}
389
+ r={1}
390
+ gradientTransform="scale(124)"
391
+ gradientUnits="userSpaceOnUse"
392
+ >
393
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
394
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
395
+ </radialGradient>
396
+ <radialGradient
397
+ id="welcome-page-error-gradient-m"
398
+ cx={0}
399
+ cy={0}
400
+ r={1}
401
+ gradientTransform="scale(124)"
402
+ gradientUnits="userSpaceOnUse"
403
+ >
404
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
405
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
406
+ </radialGradient>
407
+ <radialGradient
408
+ id="welcome-page-error-gradient-n"
409
+ cx={0}
410
+ cy={0}
411
+ r={1}
412
+ gradientTransform="scale(124)"
413
+ gradientUnits="userSpaceOnUse"
414
+ >
415
+ <stop stopColor="#FF4C4D" stopOpacity={0.1} />
416
+ <stop offset={1} stopColor="#FF4C4D" stopOpacity={0} />
417
+ </radialGradient>
418
+ </defs>
419
+ </svg>
420
+ );
421
+
422
+ const ErrorIcon = (props: React.SVGProps<SVGSVGElement>) => (
423
+ <svg
424
+ xmlns="http://www.w3.org/2000/svg"
425
+ width={16}
426
+ height={16}
427
+ viewBox="0 0 16 16"
428
+ fill="none"
429
+ {...props}
430
+ >
431
+ <path
432
+ fill="#FF4C4D"
433
+ fillRule="evenodd"
434
+ d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Z"
435
+ clipRule="evenodd"
436
+ />
437
+ <path
438
+ fill="#fff"
439
+ fillRule="evenodd"
440
+ d="M7 8a1 1 0 1 0 2 0V5a1 1 0 1 0-2 0v3Zm0 3a1 1 0 1 1 2 0 1 1 0 0 1-2 0Z"
441
+ clipRule="evenodd"
442
+ />
443
+ </svg>
444
+ );