ydb-embedded-ui 14.10.0 → 14.12.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 (209) hide show
  1. package/dist/components/EmptyFilter/EmptyFilter.d.ts +1 -0
  2. package/dist/components/EmptyFilter/EmptyFilter.js +14 -4
  3. package/dist/components/EmptyFilter/EmptyFilter.js.map +1 -1
  4. package/dist/components/EmptyState/EmptyState.d.ts +2 -1
  5. package/dist/components/EmptyState/EmptyState.js +2 -2
  6. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  7. package/dist/components/EmptyState/EmptyState.scss +16 -0
  8. package/dist/components/ErrorBoundary/ErrorBoundary.js +3 -2
  9. package/dist/components/ErrorBoundary/ErrorBoundary.js.map +1 -1
  10. package/dist/components/Errors/401/Unauthenticated.d.ts +6 -0
  11. package/dist/components/Errors/401/Unauthenticated.js +10 -0
  12. package/dist/components/Errors/401/Unauthenticated.js.map +1 -0
  13. package/dist/components/Errors/401/index.d.ts +1 -0
  14. package/dist/components/Errors/401/index.js +2 -0
  15. package/dist/components/Errors/401/index.js.map +1 -0
  16. package/dist/components/Errors/403/AccessDenied.js +4 -2
  17. package/dist/components/Errors/403/AccessDenied.js.map +1 -1
  18. package/dist/components/Errors/PageError/PageError.d.ts +6 -2
  19. package/dist/components/Errors/PageError/PageError.js +52 -9
  20. package/dist/components/Errors/PageError/PageError.js.map +1 -1
  21. package/dist/components/Errors/PageError/PageError.scss +5 -1
  22. package/dist/components/Errors/PageError/utils.d.ts +15 -0
  23. package/dist/components/Errors/PageError/utils.js +11 -0
  24. package/dist/components/Errors/PageError/utils.js.map +1 -0
  25. package/dist/components/Errors/ResponseError/ErrorDetails.d.ts +8 -0
  26. package/dist/components/Errors/ResponseError/ErrorDetails.js +33 -0
  27. package/dist/components/Errors/ResponseError/ErrorDetails.js.map +1 -0
  28. package/dist/components/Errors/ResponseError/ErrorDetails.scss +57 -0
  29. package/dist/components/Errors/ResponseError/ResponseError.d.ts +15 -0
  30. package/dist/components/Errors/ResponseError/ResponseError.js +49 -4
  31. package/dist/components/Errors/ResponseError/ResponseError.js.map +1 -1
  32. package/dist/components/Errors/ResponseError/ResponseError.scss +16 -0
  33. package/dist/components/Errors/ResponseError/index.d.ts +1 -1
  34. package/dist/components/Errors/ResponseError/index.js +1 -1
  35. package/dist/components/Errors/ResponseError/index.js.map +1 -1
  36. package/dist/components/Errors/i18n/en.json +20 -2
  37. package/dist/components/Errors/i18n/index.d.ts +1 -1
  38. package/dist/components/Errors/i18n/index.js +1 -2
  39. package/dist/components/Errors/i18n/index.js.map +1 -1
  40. package/dist/components/Errors/shared/ErrorFieldsList.d.ts +10 -0
  41. package/dist/components/Errors/shared/ErrorFieldsList.js +38 -0
  42. package/dist/components/Errors/shared/ErrorFieldsList.js.map +1 -0
  43. package/dist/components/Errors/shared/IssuesSection.d.ts +8 -0
  44. package/dist/components/Errors/shared/IssuesSection.js +9 -0
  45. package/dist/components/Errors/shared/IssuesSection.js.map +1 -0
  46. package/dist/components/Errors/shared/ResponseBodySection.d.ts +6 -0
  47. package/dist/components/Errors/shared/ResponseBodySection.js +21 -0
  48. package/dist/components/Errors/shared/ResponseBodySection.js.map +1 -0
  49. package/dist/components/Errors/shared/ResponseBodySection.scss +38 -0
  50. package/dist/components/PaginatedTable/PaginatedTable.d.ts +2 -1
  51. package/dist/components/PaginatedTable/PaginatedTable.js +2 -2
  52. package/dist/components/PaginatedTable/PaginatedTable.js.map +1 -1
  53. package/dist/components/PaginatedTable/PaginatedTableWithLayout.d.ts +2 -1
  54. package/dist/components/PaginatedTable/PaginatedTableWithLayout.js +8 -2
  55. package/dist/components/PaginatedTable/PaginatedTableWithLayout.js.map +1 -1
  56. package/dist/components/PaginatedTable/TableChunksRenderer.d.ts +2 -1
  57. package/dist/components/PaginatedTable/TableChunksRenderer.js +2 -1
  58. package/dist/components/PaginatedTable/TableChunksRenderer.js.map +1 -1
  59. package/dist/components/PaginatedTable/useScrollBasedChunks.d.ts +1 -1
  60. package/dist/components/PaginatedTable/useScrollBasedChunks.js +12 -2
  61. package/dist/components/PaginatedTable/useScrollBasedChunks.js.map +1 -1
  62. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.d.ts +4 -0
  63. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.js +3 -0
  64. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.js.map +1 -1
  65. package/dist/components/TableWithControlsLayout/TableWithControlsLayout.scss +22 -0
  66. package/dist/containers/App/Content.js +6 -2
  67. package/dist/containers/App/Content.js.map +1 -1
  68. package/dist/containers/AsideNavigation/AsideNavigation.d.ts +1 -0
  69. package/dist/containers/AsideNavigation/AsideNavigation.js +1 -1
  70. package/dist/containers/AsideNavigation/AsideNavigation.js.map +1 -1
  71. package/dist/containers/AsideNavigation/Navigation.d.ts +1 -0
  72. package/dist/containers/AsideNavigation/Navigation.js +39 -8
  73. package/dist/containers/AsideNavigation/Navigation.js.map +1 -1
  74. package/dist/containers/AsideNavigation/Navigation.scss +188 -0
  75. package/dist/containers/GetUserWrapper/GetUserWrapper.js +1 -1
  76. package/dist/containers/GetUserWrapper/GetUserWrapper.js.map +1 -1
  77. package/dist/containers/HomePage/HomePage.js +1 -1
  78. package/dist/containers/HomePage/HomePage.js.map +1 -1
  79. package/dist/containers/Nodes/NodesTable.js +3 -2
  80. package/dist/containers/Nodes/NodesTable.js.map +1 -1
  81. package/dist/containers/Operations/Operations.d.ts +1 -1
  82. package/dist/containers/Operations/Operations.js +14 -4
  83. package/dist/containers/Operations/Operations.js.map +1 -1
  84. package/dist/containers/Tenant/Diagnostics/Network/Nodes/Nodes.js +3 -2
  85. package/dist/containers/Tenant/Diagnostics/Network/Nodes/Nodes.js.map +1 -1
  86. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +1 -2
  87. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js.map +1 -1
  88. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +1 -2
  89. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js.map +1 -1
  90. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +1 -2
  91. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js.map +1 -1
  92. package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js +1 -2
  93. package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js.map +1 -1
  94. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js +1 -2
  95. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js.map +1 -1
  96. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +1 -2
  97. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js.map +1 -1
  98. package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js +70 -135
  99. package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js.map +1 -1
  100. package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.d.ts +1 -2
  101. package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js +3 -3
  102. package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js.map +1 -1
  103. package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.js +140 -3
  104. package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.js.map +1 -1
  105. package/dist/containers/Tenant/Diagnostics/TopicData/getData.d.ts +3 -1
  106. package/dist/containers/Tenant/Diagnostics/TopicData/getData.js +7 -3
  107. package/dist/containers/Tenant/Diagnostics/TopicData/getData.js.map +1 -1
  108. package/dist/containers/Tenant/Diagnostics/TopicData/i18n/en.json +1 -2
  109. package/dist/containers/Tenant/Diagnostics/TopicData/i18n/index.d.ts +1 -1
  110. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPagination.d.ts +15 -0
  111. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPagination.js +45 -0
  112. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPagination.js.map +1 -0
  113. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPartitions.d.ts +21 -0
  114. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPartitions.js +48 -0
  115. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicPartitions.js.map +1 -0
  116. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.d.ts +20 -0
  117. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.js +42 -0
  118. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.js.map +1 -0
  119. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicScroll.d.ts +23 -0
  120. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicScroll.js +105 -0
  121. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicScroll.js.map +1 -0
  122. package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.d.ts +3 -1
  123. package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.js +4 -1
  124. package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.js.map +1 -1
  125. package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.d.ts +1 -0
  126. package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.js.map +1 -1
  127. package/dist/containers/Tenant/GrantAccess/GrantAccess.js +16 -12
  128. package/dist/containers/Tenant/GrantAccess/GrantAccess.js.map +1 -1
  129. package/dist/containers/Tenant/Healthcheck/Healthcheck.js +3 -2
  130. package/dist/containers/Tenant/Healthcheck/Healthcheck.js.map +1 -1
  131. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.js +3 -2
  132. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.js.map +1 -1
  133. package/dist/containers/Tenant/Query/Preview/components/PreviewView.js +2 -2
  134. package/dist/containers/Tenant/Query/Preview/components/PreviewView.js.map +1 -1
  135. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +22 -1
  136. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js.map +1 -1
  137. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.d.ts +2 -1
  138. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +3 -20
  139. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js.map +1 -1
  140. package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js +12 -42
  141. package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js.map +1 -1
  142. package/dist/containers/Tenant/Query/QueryResult/components/PlanSection/PlanSection.d.ts +14 -0
  143. package/dist/containers/Tenant/Query/QueryResult/components/PlanSection/PlanSection.js +48 -0
  144. package/dist/containers/Tenant/Query/QueryResult/components/PlanSection/PlanSection.js.map +1 -0
  145. package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js +6 -7
  146. package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js.map +1 -1
  147. package/dist/containers/Tenant/Query/QueryResult/constants.d.ts +10 -0
  148. package/dist/containers/Tenant/Query/QueryResult/constants.js +9 -0
  149. package/dist/containers/Tenant/Query/QueryResult/constants.js.map +1 -0
  150. package/dist/containers/Tenant/Tenant.js +1 -1
  151. package/dist/containers/Tenant/Tenant.js.map +1 -1
  152. package/dist/containers/Tenant/TenantNavigation/useTenantNavigation.js +4 -5
  153. package/dist/containers/Tenant/TenantNavigation/useTenantNavigation.js.map +1 -1
  154. package/dist/containers/Tenants/TenantsTable.js +3 -2
  155. package/dist/containers/Tenants/TenantsTable.js.map +1 -1
  156. package/dist/lib.d.ts +1 -0
  157. package/dist/lib.js.map +1 -1
  158. package/dist/services/api/index.js +10 -1
  159. package/dist/services/api/index.js.map +1 -1
  160. package/dist/services/api/streaming.js +118 -41
  161. package/dist/services/api/streaming.js.map +1 -1
  162. package/dist/types/api/error.d.ts +1 -1
  163. package/dist/uiFactory/types.d.ts +9 -0
  164. package/dist/utils/__test__/query.test.d.ts +1 -0
  165. package/dist/utils/__test__/query.test.js +55 -0
  166. package/dist/utils/__test__/query.test.js.map +1 -0
  167. package/dist/utils/__test__/response.test.js +70 -1
  168. package/dist/utils/__test__/response.test.js.map +1 -1
  169. package/dist/utils/errors/__test__/extractErrorDetails.test.d.ts +1 -0
  170. package/dist/utils/errors/__test__/extractErrorDetails.test.js +455 -0
  171. package/dist/utils/errors/__test__/extractErrorDetails.test.js.map +1 -0
  172. package/dist/utils/errors/__test__/prepareCommonErrorMessage.test.d.ts +1 -0
  173. package/dist/utils/errors/__test__/prepareCommonErrorMessage.test.js +148 -0
  174. package/dist/utils/errors/__test__/prepareCommonErrorMessage.test.js.map +1 -0
  175. package/dist/utils/errors/extractErrorDetails.d.ts +58 -0
  176. package/dist/utils/errors/extractErrorDetails.js +295 -0
  177. package/dist/utils/errors/extractErrorDetails.js.map +1 -0
  178. package/dist/utils/errors/index.d.ts +2 -0
  179. package/dist/utils/errors/index.js +14 -18
  180. package/dist/utils/errors/index.js.map +1 -1
  181. package/dist/utils/illustrations.d.ts +2 -0
  182. package/dist/utils/illustrations.js +14 -0
  183. package/dist/utils/illustrations.js.map +1 -0
  184. package/dist/utils/networkInfo.d.ts +7 -0
  185. package/dist/utils/networkInfo.js +20 -0
  186. package/dist/utils/networkInfo.js.map +1 -0
  187. package/dist/utils/query.d.ts +0 -1
  188. package/dist/utils/query.js +0 -8
  189. package/dist/utils/query.js.map +1 -1
  190. package/dist/utils/renderPaginatedTableErrorMessage.js +8 -0
  191. package/dist/utils/renderPaginatedTableErrorMessage.js.map +1 -1
  192. package/dist/utils/response.d.ts +2 -0
  193. package/dist/utils/response.js +21 -5
  194. package/dist/utils/response.js.map +1 -1
  195. package/package.json +1 -1
  196. package/dist/assets/illustrations/dark/403.svg +0 -18
  197. package/dist/assets/illustrations/dark/error.svg +0 -32
  198. package/dist/assets/illustrations/dark/thumbsUp.svg +0 -16
  199. package/dist/assets/illustrations/light/403.svg +0 -16
  200. package/dist/assets/illustrations/light/error.svg +0 -32
  201. package/dist/assets/illustrations/light/thumbsUp.svg +0 -16
  202. package/dist/components/Errors/i18n/ru.json +0 -6
  203. package/dist/components/Illustration/Illustration.d.ts +0 -8
  204. package/dist/components/Illustration/Illustration.js +0 -52
  205. package/dist/components/Illustration/Illustration.js.map +0 -1
  206. package/dist/components/Illustration/Illustration.scss +0 -9
  207. package/dist/components/Illustration/index.d.ts +0 -1
  208. package/dist/components/Illustration/index.js +0 -2
  209. package/dist/components/Illustration/index.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  interface EmptyFilterProps {
2
3
  title: string;
3
4
  message?: string;
@@ -1,9 +1,19 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
2
3
  import { Button } from '@gravity-ui/uikit';
4
+ import { getIllustration } from '../../utils/illustrations';
3
5
  import { EmptyState } from '../EmptyState';
4
- import { Illustration } from '../Illustration';
5
6
  import i18n from './i18n';
6
- export const EmptyFilter = ({ title, message = i18n('default_message'), showAll = i18n('default_button_label'), onShowAll, image = _jsx(Illustration, { name: "thumbsUp", width: 200 }), }) => (_jsx(EmptyState, { image: image, position: "left", title: title, description: message, actions: onShowAll && [
7
- _jsx(Button, { onClick: onShowAll, children: showAll }, "show-all"),
8
- ] }));
7
+ export const EmptyFilter = ({ title, message = i18n('default_message'), showAll = i18n('default_button_label'), onShowAll, image, }) => {
8
+ const SuccessImage = getIllustration('SuccessOperation');
9
+ const resolvedImage = React.useMemo(() => {
10
+ if (image !== undefined) {
11
+ return image;
12
+ }
13
+ return _jsx(SuccessImage, { width: 200, height: 200 });
14
+ }, [image, SuccessImage]);
15
+ return (_jsx(EmptyState, { image: resolvedImage, position: "left", title: title, description: message, actions: onShowAll && [
16
+ _jsx(Button, { onClick: onShowAll, children: showAll }, "show-all"),
17
+ ] }));
18
+ };
9
19
  //# sourceMappingURL=EmptyFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyFilter.js","sourceRoot":"","sources":["../../../src/components/EmptyFilter/EmptyFilter.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAU1B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EACxB,KAAK,EACL,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,EACjC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,EACtC,SAAS,EACT,KAAK,GAAG,KAAC,YAAY,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,GAAG,GAAI,GACrC,EAAE,EAAE,CAAC,CACpB,KAAC,UAAU,IACP,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,OAAO,EACpB,OAAO,EACH,SAAS,IAAI;QACT,KAAC,MAAM,IAAgB,OAAO,EAAE,SAAS,YACpC,OAAO,IADA,UAAU,CAEb;KACZ,GAEP,CACL,CAAC"}
1
+ {"version":3,"file":"EmptyFilter.js","sourceRoot":"","sources":["../../../src/components/EmptyFilter/EmptyFilter.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAU1B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EACxB,KAAK,EACL,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,EACjC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,EACtC,SAAS,EACT,KAAK,GACU,EAAE,EAAE;IACnB,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,KAAC,YAAY,IAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAI,CAAC;IACrD,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1B,OAAO,CACH,KAAC,UAAU,IACP,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,OAAO,EACpB,OAAO,EACH,SAAS,IAAI;YACT,KAAC,MAAM,IAAgB,OAAO,EAAE,SAAS,YACpC,OAAO,IADA,UAAU,CAEb;SACZ,GAEP,CACL,CAAC;AACN,CAAC,CAAC"}
@@ -12,10 +12,11 @@ export interface EmptyStateProps {
12
12
  actions?: React.ReactNode[];
13
13
  size?: keyof typeof EMPTY_STATE_SIZES;
14
14
  position?: 'left' | 'center';
15
+ contentPosition?: 'center' | 'top';
15
16
  pageTitle?: string;
16
17
  className?: string;
17
18
  }
18
- export declare const EmptyState: ({ image, title, description, actions, size, position, pageTitle, className, }: EmptyStateProps) => import("react/jsx-runtime").JSX.Element;
19
+ export declare const EmptyState: ({ image, title, description, actions, size, position, contentPosition, pageTitle, className, }: EmptyStateProps) => import("react/jsx-runtime").JSX.Element;
19
20
  interface EmptyStateWrapperProps extends EmptyStateProps {
20
21
  isEmpty?: boolean;
21
22
  children: React.ReactNode;
@@ -10,8 +10,8 @@ export const EMPTY_STATE_SIZES = {
10
10
  m: 230,
11
11
  l: 350,
12
12
  };
13
- export const EmptyState = ({ image, title, description, actions, size = 'm', position = 'center', pageTitle, className, }) => {
14
- return (_jsxs("div", { className: block({ size }, className), children: [pageTitle ? _jsx(Text, { variant: "header-1", children: pageTitle }) : null, _jsxs("div", { className: block('wrapper', { size, position }), children: [_jsx("div", { className: block('image'), children: image ? (image) : (_jsx(Icon, { data: emptyStateIcon, width: EMPTY_STATE_SIZES[size], height: EMPTY_STATE_SIZES[size] })) }), _jsxs(Flex, { gap: 5, className: block('content'), direction: "column", children: [_jsxs(Flex, { gap: 3, direction: "column", children: [_jsx("div", { className: block('title', { size }), children: title }), description ? (_jsx("div", { className: block('description'), children: description })) : null] }), actions ? _jsx(Flex, { gap: 2, children: actions }) : null] })] })] }));
13
+ export const EmptyState = ({ image, title, description, actions, size = 'm', position = 'center', contentPosition = 'center', pageTitle, className, }) => {
14
+ return (_jsxs("div", { className: block({ size }, className), children: [pageTitle ? _jsx(Text, { variant: "header-1", children: pageTitle }) : null, _jsxs("div", { className: block('wrapper', { size, position }), children: [_jsx("div", { className: block('image'), children: image ? (image) : (_jsx(Icon, { data: emptyStateIcon, width: EMPTY_STATE_SIZES[size], height: EMPTY_STATE_SIZES[size] })) }), _jsxs(Flex, { gap: 5, className: block('content', { 'position-top': contentPosition === 'top' }), direction: "column", children: [_jsxs(Flex, { gap: 3, direction: "column", children: [_jsx("div", { className: block('title', { size }), children: title }), description ? (_jsx("div", { className: block('description'), children: description })) : null] }), actions ? _jsx(Flex, { gap: 2, children: actions }) : null] })] })] }));
15
15
  };
16
16
  export function EmptyStateWrapper({ isEmpty, children, className, ...rest }) {
17
17
  if (isEmpty) {
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../../src/components/EmptyState/EmptyState.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAElC,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAE/D,OAAO,mBAAmB,CAAC;AAE3B,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,EAAE,EAAE,GAAG;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACT,CAAC;AAaF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACvB,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAI,GAAG,GAAG,EACV,QAAQ,GAAG,QAAQ,EACnB,SAAS,EACT,SAAS,GACK,EAAE,EAAE;IAClB,OAAO,CACH,eAAK,SAAS,EAAE,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE,SAAS,CAAC,aACnC,SAAS,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,OAAO,EAAC,UAAU,YAAE,SAAS,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC/D,eAAK,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,aAC9C,cAAK,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,YACzB,KAAK,CAAC,CAAC,CAAC,CACL,KAAK,CACR,CAAC,CAAC,CAAC,CACA,KAAC,IAAI,IACD,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAC9B,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,GACjC,CACL,GACC,EACN,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAC,QAAQ,aACzD,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aAC5B,cAAK,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,EAAC,IAAI,EAAC,CAAC,YAAG,KAAK,GAAO,EACpD,WAAW,CAAC,CAAC,CAAC,CACX,cAAK,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,YAAG,WAAW,GAAO,CAC5D,CAAC,CAAC,CAAC,IAAI,IACL,EACN,OAAO,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,GAAG,EAAE,CAAC,YAAG,OAAO,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC7C,IACL,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AAQF,MAAM,UAAU,iBAAiB,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAyB;IAC7F,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CACH,cAAK,SAAS,EAAE,SAAS,YACrB,KAAC,UAAU,OAAK,IAAI,GAAI,GACtB,CACT,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../../src/components/EmptyState/EmptyState.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAElC,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAE/D,OAAO,mBAAmB,CAAC;AAE3B,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,EAAE,EAAE,GAAG;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACT,CAAC;AAcF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACvB,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAI,GAAG,GAAG,EACV,QAAQ,GAAG,QAAQ,EACnB,eAAe,GAAG,QAAQ,EAC1B,SAAS,EACT,SAAS,GACK,EAAE,EAAE;IAClB,OAAO,CACH,eAAK,SAAS,EAAE,KAAK,CAAC,EAAC,IAAI,EAAC,EAAE,SAAS,CAAC,aACnC,SAAS,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,OAAO,EAAC,UAAU,YAAE,SAAS,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC/D,eAAK,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,aAC9C,cAAK,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,YACzB,KAAK,CAAC,CAAC,CAAC,CACL,KAAK,CACR,CAAC,CAAC,CAAC,CACA,KAAC,IAAI,IACD,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAC9B,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,GACjC,CACL,GACC,EACN,MAAC,IAAI,IACD,GAAG,EAAE,CAAC,EACN,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAC,cAAc,EAAE,eAAe,KAAK,KAAK,EAAC,CAAC,EACxE,SAAS,EAAC,QAAQ,aAElB,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aAC5B,cAAK,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,EAAC,IAAI,EAAC,CAAC,YAAG,KAAK,GAAO,EACpD,WAAW,CAAC,CAAC,CAAC,CACX,cAAK,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,YAAG,WAAW,GAAO,CAC5D,CAAC,CAAC,CAAC,IAAI,IACL,EACN,OAAO,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,GAAG,EAAE,CAAC,YAAG,OAAO,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC7C,IACL,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AAQF,MAAM,UAAU,iBAAiB,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAyB;IAC7F,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CACH,cAAK,SAAS,EAAE,SAAS,YACrB,KAAC,UAAU,OAAK,IAAI,GAAI,GACtB,CACT,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -11,6 +11,7 @@
11
11
  &__wrapper {
12
12
  display: grid;
13
13
  grid-template-areas: 'image content';
14
+ grid-template-columns: auto 1fr;
14
15
 
15
16
  &_size_xs {
16
17
  width: 321px;
@@ -29,6 +30,11 @@
29
30
  height: 230px;
30
31
  }
31
32
 
33
+ &_size_l {
34
+ width: 900px;
35
+ min-height: 280px;
36
+ }
37
+
32
38
  &_position_center {
33
39
  position: relative;
34
40
 
@@ -62,6 +68,10 @@
62
68
  &_size_m {
63
69
  @include mixins.header-2-typography();
64
70
  }
71
+
72
+ &_size_l {
73
+ @include mixins.subheader-3-typography();
74
+ }
65
75
  }
66
76
 
67
77
  &__description {
@@ -71,5 +81,11 @@
71
81
  &__content {
72
82
  align-self: center;
73
83
  grid-area: content;
84
+
85
+ &_position-top {
86
+ align-self: start;
87
+
88
+ padding-top: 50px;
89
+ }
74
90
  }
75
91
  }
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
- import { InternalError } from '@gravity-ui/illustrations';
4
3
  import { DefinitionList, Flex, Text } from '@gravity-ui/uikit';
5
4
  import QRCode from 'qrcode';
6
5
  import { ErrorBoundary as ErrorBoundaryBase } from 'react-error-boundary';
7
6
  import { cn } from '../../utils/cn';
7
+ import { getIllustration } from '../../utils/illustrations';
8
8
  import { registerError } from '../../utils/registerError';
9
9
  import { useComponent } from '../ComponentsProvider/ComponentsProvider';
10
10
  import i18n from './i18n';
@@ -30,7 +30,8 @@ export function ErrorBoundaryFallback({ error }) {
30
30
  setDiagnosticsData(data);
31
31
  });
32
32
  }, [error]);
33
- return (_jsxs(Flex, { direction: "column", gap: 4, className: b(null), children: [_jsxs(Flex, { direction: "row", alignItems: "center", gap: 10, children: [_jsx(InternalError, { width: 230, height: 230 }), _jsxs(Flex, { direction: "column", gap: 5, children: [_jsxs(Flex, { direction: "column", gap: 2, children: [_jsx(Text, { variant: "subheader-3", children: i18n('error-title') }), _jsx(Text, { variant: "body-1", color: "complementary", children: i18n('error-description') })] }), _jsx(DiagnosticsDataList, { data: diagnosticsData })] })] }), _jsxs(Flex, { direction: "row", alignItems: "start", gap: 8, children: [_jsx(ErrorStack, { stack: error.stack }), _jsxs(Flex, { direction: "column", gap: 3, children: [_jsx(Text, { variant: "body-1", color: "complementary", className: b('qr-help-text'), children: i18n('send-qr-message') }), _jsx(DiagnosticsDataQR, { data: diagnosticsData })] })] })] }));
33
+ const InternalErrorImage = getIllustration('InternalError');
34
+ return (_jsxs(Flex, { direction: "column", gap: 4, className: b(null), children: [_jsxs(Flex, { direction: "row", alignItems: "center", gap: 10, children: [_jsx(InternalErrorImage, { width: 230, height: 230 }), _jsxs(Flex, { direction: "column", gap: 5, children: [_jsxs(Flex, { direction: "column", gap: 2, children: [_jsx(Text, { variant: "subheader-3", children: i18n('error-title') }), _jsx(Text, { variant: "body-1", color: "complementary", children: i18n('error-description') })] }), _jsx(DiagnosticsDataList, { data: diagnosticsData })] })] }), _jsxs(Flex, { direction: "row", alignItems: "start", gap: 8, children: [_jsx(ErrorStack, { stack: error.stack }), _jsxs(Flex, { direction: "column", gap: 3, children: [_jsx(Text, { variant: "body-1", color: "complementary", className: b('qr-help-text'), children: i18n('send-qr-message') }), _jsx(DiagnosticsDataQR, { data: diagnosticsData })] })] })] }));
34
35
  }
35
36
  function DiagnosticsDataList({ data }) {
36
37
  return (_jsxs(DefinitionList, { nameMaxWidth: 200, children: [(data === null || data === void 0 ? void 0 : data.uiVersion) && typeof data.uiVersion === 'string' && (_jsx(DefinitionList.Item, { name: i18n('ui-version'), children: data.uiVersion })), (data === null || data === void 0 ? void 0 : data.backendVersion) && typeof data.backendVersion === 'string' && (_jsx(DefinitionList.Item, { name: i18n('backend-version'), children: data.backendVersion })), _jsx(DefinitionList.Item, { name: i18n('error'), children: data === null || data === void 0 ? void 0 : data.error.message })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/ErrorBoundary.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/ErrorBoundary.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { EmptyStateProps } from '../../EmptyState';
2
+ interface UnauthenticatedProps extends Omit<EmptyStateProps, 'title'> {
3
+ title?: React.ReactNode;
4
+ }
5
+ export declare const Unauthenticated: ({ title, description, image, size, ...restProps }: UnauthenticatedProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { getIllustration } from '../../../utils/illustrations';
3
+ import { EMPTY_STATE_SIZES, EmptyState } from '../../EmptyState';
4
+ import i18n from '../i18n';
5
+ export const Unauthenticated = ({ title, description, image, size = 'm', ...restProps }) => {
6
+ const UnauthenticatedImage = getIllustration('Unauthenticated');
7
+ const illustrationSize = EMPTY_STATE_SIZES[size];
8
+ return (_jsx(EmptyState, { image: image || _jsx(UnauthenticatedImage, { width: illustrationSize, height: illustrationSize }), title: title || i18n('401.title'), description: description || i18n('401.description'), size: size, ...restProps }));
9
+ };
10
+ //# sourceMappingURL=Unauthenticated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Unauthenticated.js","sourceRoot":"","sources":["../../../../src/components/Errors/401/Unauthenticated.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,IAAI,MAAM,SAAS,CAAC;AAM3B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,KAAK,EACL,IAAI,GAAG,GAAG,EACV,GAAG,SAAS,EACO,EAAE,EAAE;IACvB,MAAM,oBAAoB,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,CACH,KAAC,UAAU,IACP,KAAK,EACD,KAAK,IAAI,KAAC,oBAAoB,IAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAI,EAExF,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,EACjC,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC,EACnD,IAAI,EAAE,IAAI,KACN,SAAS,GACf,CACL,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export { Unauthenticated } from './Unauthenticated';
@@ -0,0 +1,2 @@
1
+ export { Unauthenticated } from './Unauthenticated';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Errors/401/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { getIllustration } from '../../../utils/illustrations';
2
3
  import { EMPTY_STATE_SIZES, EmptyState } from '../../EmptyState';
3
- import { Illustration } from '../../Illustration';
4
4
  import i18n from '../i18n';
5
5
  export const AccessDenied = ({ title, description, image, size = 'm', ...restProps }) => {
6
- return (_jsx(EmptyState, { image: image || _jsx(Illustration, { name: "403", width: EMPTY_STATE_SIZES[size] }), title: title || i18n('403.title'), description: description || i18n('403.description'), ...restProps }));
6
+ const AccessDeniedImage = getIllustration('AccessDenied');
7
+ const illustrationSize = EMPTY_STATE_SIZES[size];
8
+ return (_jsx(EmptyState, { image: image || _jsx(AccessDeniedImage, { width: illustrationSize, height: illustrationSize }), title: title || i18n('403.title'), description: description || i18n('403.description'), size: size, ...restProps }));
7
9
  };
8
10
  //# sourceMappingURL=AccessDenied.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessDenied.js","sourceRoot":"","sources":["../../../../src/components/Errors/403/AccessDenied.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,IAAI,MAAM,SAAS,CAAC;AAM3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EACzB,KAAK,EACL,WAAW,EACX,KAAK,EACL,IAAI,GAAG,GAAG,EACV,GAAG,SAAS,EACI,EAAE,EAAE;IACpB,OAAO,CACH,KAAC,UAAU,IACP,KAAK,EAAE,KAAK,IAAI,KAAC,YAAY,IAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAI,EAC3E,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,EACjC,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAC/C,SAAS,GACf,CACL,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"AccessDenied.js","sourceRoot":"","sources":["../../../../src/components/Errors/403/AccessDenied.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,IAAI,MAAM,SAAS,CAAC;AAM3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EACzB,KAAK,EACL,WAAW,EACX,KAAK,EACL,IAAI,GAAG,GAAG,EACV,GAAG,SAAS,EACI,EAAE,EAAE;IACpB,MAAM,iBAAiB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,CACH,KAAC,UAAU,IACP,KAAK,EACD,KAAK,IAAI,KAAC,iBAAiB,IAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAI,EAErF,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,EACjC,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC,EACnD,IAAI,EAAE,IAAI,KACN,SAAS,GACf,CACL,CAAC;AACN,CAAC,CAAC"}
@@ -1,11 +1,15 @@
1
1
  import React from 'react';
2
2
  import type { EmptyStateProps } from '../../EmptyState';
3
+ import { EMPTY_STATE_SIZES } from '../../EmptyState';
3
4
  import './PageError.scss';
4
- interface PageErrorProps extends Omit<EmptyStateProps, 'image' | 'title'> {
5
+ type PageErrorIllustrationSize = keyof typeof EMPTY_STATE_SIZES;
6
+ interface PageErrorProps extends Omit<EmptyStateProps, 'image' | 'title' | 'contentPosition'> {
5
7
  title?: React.ReactNode;
6
8
  error: unknown;
7
9
  children?: React.ReactNode;
8
10
  errorPageTitle?: string;
11
+ defaultMessage?: string;
12
+ illustrationSize?: PageErrorIllustrationSize;
9
13
  }
10
- export declare function PageError({ title, description, error, children, size, errorPageTitle, ...restProps }: PageErrorProps): import("react/jsx-runtime").JSX.Element | null;
14
+ export declare function PageError({ title, description, error, children, size, illustrationSize, errorPageTitle, defaultMessage, className, pageTitle: callerPageTitle, ...restProps }: PageErrorProps): import("react/jsx-runtime").JSX.Element | null;
11
15
  export {};
@@ -1,25 +1,68 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
+ import { ArrowShapeUpFromLine } from '@gravity-ui/icons';
4
+ import { Button, Icon } from '@gravity-ui/uikit';
5
+ import { uiFactory } from '../../../uiFactory/uiFactory';
3
6
  import { cn } from '../../../utils/cn';
4
- import { isAccessError, isRedirectToAuth } from '../../../utils/response';
7
+ import { getIllustration } from '../../../utils/illustrations';
8
+ import { isForbiddenError, isRedirectToAuth, isUnauthenticatedError } from '../../../utils/response';
5
9
  import { EMPTY_STATE_SIZES, EmptyState } from '../../EmptyState';
6
- import { Illustration } from '../../Illustration';
10
+ import { Unauthenticated } from '../401';
7
11
  import { AccessDenied } from '../403';
8
- import { ResponseError } from '../ResponseError';
12
+ import { ResponseErrorMessage, useErrorInfo } from '../ResponseError';
9
13
  import i18n from '../i18n';
14
+ import { resolvePageErrorSubtitle } from './utils';
10
15
  import './PageError.scss';
11
16
  const b = cn('ydb-page-error');
12
- export function PageError({ title, description, error, children, size = 'm', errorPageTitle, ...restProps }) {
17
+ export function PageError({ title, description, error, children, size = 'm', illustrationSize, errorPageTitle, defaultMessage, className, pageTitle: callerPageTitle, ...restProps }) {
18
+ const resolvedPageTitle = errorPageTitle !== null && errorPageTitle !== void 0 ? errorPageTitle : callerPageTitle;
13
19
  if (isRedirectToAuth(error)) {
14
- // Do not show an error, because we redirect to auth anyway.
15
20
  return null;
16
21
  }
17
- if (isAccessError(error)) {
18
- return (_jsx(AccessDenied, { title: title, description: description, ...restProps, pageTitle: errorPageTitle, className: b() }));
22
+ if (isUnauthenticatedError(error)) {
23
+ return (_jsx(Unauthenticated, { title: title, description: description, ...restProps, pageTitle: resolvedPageTitle, className: b(null, className) }));
24
+ }
25
+ if (isForbiddenError(error)) {
26
+ return (_jsx(AccessDenied, { title: title, description: description, ...restProps, pageTitle: resolvedPageTitle, className: b(null, className) }));
19
27
  }
20
28
  if (error || description) {
21
- return (_jsx(EmptyState, { image: _jsx(Illustration, { name: "error", width: EMPTY_STATE_SIZES[size] }), title: title || i18n('error.title'), description: error ? _jsx(ResponseError, { error: error }) : description, pageTitle: errorPageTitle, className: b(), ...restProps }));
29
+ return (_jsx(PageErrorContent, { title: title, description: description, error: error, size: size, illustrationSize: illustrationSize, errorPageTitle: resolvedPageTitle, defaultMessage: defaultMessage, className: className, ...restProps }));
22
30
  }
23
31
  return _jsx(React.Fragment, { children: children });
24
32
  }
33
+ function PageErrorContent({ title: titleProp, description, error, size = 'm', illustrationSize, errorPageTitle, defaultMessage, className, actions: callerActions, ...restProps }) {
34
+ const { title: errorTitle, subtitle, showSubtitle, details, } = useErrorInfo(error, defaultMessage);
35
+ const resolvedTitle = titleProp || errorTitle || i18n('error.title');
36
+ const { resolvedSubtitle, resolvedShowSubtitle } = resolvePageErrorSubtitle({
37
+ hasTitleOverride: Boolean(titleProp),
38
+ errorTitle,
39
+ resolvedTitleString: typeof resolvedTitle === 'string' ? resolvedTitle : undefined,
40
+ subtitle,
41
+ showSubtitle,
42
+ details,
43
+ });
44
+ const reportProblemUrl = React.useMemo(() => {
45
+ if (!uiFactory.getReportProblemUrl) {
46
+ return undefined;
47
+ }
48
+ return uiFactory.getReportProblemUrl({
49
+ errorTitle: typeof resolvedTitle === 'string' ? resolvedTitle : undefined,
50
+ requestUrl: details === null || details === void 0 ? void 0 : details.requestUrl,
51
+ traceId: details === null || details === void 0 ? void 0 : details.traceId,
52
+ });
53
+ }, [resolvedTitle, details === null || details === void 0 ? void 0 : details.requestUrl, details === null || details === void 0 ? void 0 : details.traceId]);
54
+ const mergedActions = React.useMemo(() => {
55
+ const result = [];
56
+ if (callerActions) {
57
+ result.push(...callerActions);
58
+ }
59
+ if (reportProblemUrl) {
60
+ result.push(_jsxs(Button, { view: "normal", size: "m", href: reportProblemUrl, target: "_blank", children: [_jsx(Icon, { data: ArrowShapeUpFromLine, size: 16 }), i18n('error-details.button_report-problem')] }, "report"));
61
+ }
62
+ return result.length > 0 ? result : undefined;
63
+ }, [callerActions, reportProblemUrl]);
64
+ const resolvedIllustrationSize = EMPTY_STATE_SIZES[illustrationSize !== null && illustrationSize !== void 0 ? illustrationSize : size];
65
+ const InternalErrorImage = getIllustration('InternalError');
66
+ return (_jsx(EmptyState, { image: _jsx(InternalErrorImage, { width: resolvedIllustrationSize, height: resolvedIllustrationSize }), title: resolvedTitle, description: error ? (_jsx(ResponseErrorMessage, { subtitle: resolvedSubtitle, showSubtitle: resolvedShowSubtitle, details: details, renderedTitle: typeof resolvedTitle === 'string' ? resolvedTitle : undefined })) : (description), ...restProps, actions: mergedActions, size: size, contentPosition: "top", pageTitle: errorPageTitle, className: b(null, className) }));
67
+ }
25
68
  //# sourceMappingURL=PageError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageError.js","sourceRoot":"","sources":["../../../../src/components/Errors/PageError/PageError.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,kBAAkB,CAAC;AAE1B,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAS/B,MAAM,UAAU,SAAS,CAAC,EACtB,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,IAAI,GAAG,GAAG,EACV,cAAc,EACd,GAAG,SAAS,EACC;IACb,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,4DAA4D;QAC5D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CACH,KAAC,YAAY,IACT,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,KACpB,SAAS,EACb,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,CAAC,EAAE,GAChB,CACL,CAAC;IACN,CAAC;IAED,IAAI,KAAK,IAAI,WAAW,EAAE,CAAC;QACvB,OAAO,CACH,KAAC,UAAU,IACP,KAAK,EAAE,KAAC,YAAY,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAI,EACpE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,EACnC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,KAAC,aAAa,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,WAAW,EAClE,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,CAAC,EAAE,KACV,SAAS,GACf,CACL,CAAC;IACN,CAAC;IAED,OAAO,KAAC,KAAK,CAAC,QAAQ,cAAE,QAAQ,GAAkB,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"PageError.js","sourceRoot":"","sources":["../../../../src/components/Errors/PageError/PageError.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  .ydb-page-error {
2
2
  display: grid;
3
- align-items: center;
3
+ align-items: start;
4
4
  grid-template-rows: min-content auto;
5
5
 
6
6
  height: 100%;
7
+
8
+ .empty-state__wrapper {
9
+ margin-top: 100px;
10
+ }
7
11
  }
@@ -0,0 +1,15 @@
1
+ import type { ErrorDetails } from '../../../utils/errors/extractErrorDetails';
2
+ interface ResolveSubtitleParams {
3
+ hasTitleOverride: boolean;
4
+ errorTitle?: string;
5
+ resolvedTitleString?: string;
6
+ subtitle?: string;
7
+ showSubtitle: boolean;
8
+ details: ErrorDetails | null;
9
+ }
10
+ interface ResolvedSubtitle {
11
+ resolvedSubtitle?: string;
12
+ resolvedShowSubtitle: boolean;
13
+ }
14
+ export declare function resolvePageErrorSubtitle({ hasTitleOverride, errorTitle, resolvedTitleString, subtitle, showSubtitle, details, }: ResolveSubtitleParams): ResolvedSubtitle;
15
+ export {};
@@ -0,0 +1,11 @@
1
+ export function resolvePageErrorSubtitle({ hasTitleOverride, errorTitle, resolvedTitleString, subtitle, showSubtitle, details, }) {
2
+ const shouldShowHttpSubtitle = hasTitleOverride &&
3
+ (details === null || details === void 0 ? void 0 : details.status) !== undefined &&
4
+ Boolean(errorTitle) &&
5
+ errorTitle !== resolvedTitleString;
6
+ return {
7
+ resolvedSubtitle: shouldShowHttpSubtitle ? errorTitle : subtitle,
8
+ resolvedShowSubtitle: shouldShowHttpSubtitle || showSubtitle,
9
+ };
10
+ }
11
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/Errors/PageError/utils.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,wBAAwB,CAAC,EACrC,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,YAAY,EACZ,OAAO,GACa;IACpB,MAAM,sBAAsB,GACxB,gBAAgB;QAChB,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,SAAS;QAC7B,OAAO,CAAC,UAAU,CAAC;QACnB,UAAU,KAAK,mBAAmB,CAAC;IAEvC,OAAO;QACH,gBAAgB,EAAE,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;QAChE,oBAAoB,EAAE,sBAAsB,IAAI,YAAY;KAC/D,CAAC;AACN,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ErrorDetails as ErrorDetailsData } from '../../../utils/errors/extractErrorDetails';
2
+ import './ErrorDetails.scss';
3
+ interface ErrorDetailsProps {
4
+ details: ErrorDetailsData;
5
+ renderedTitle?: string;
6
+ }
7
+ export declare function ErrorDetailsContent({ details, renderedTitle }: ErrorDetailsProps): import("react/jsx-runtime").JSX.Element | null;
8
+ export {};
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDown, ChevronUp } from '@gravity-ui/icons';
3
+ import { Button, Disclosure, Flex, Icon } from '@gravity-ui/uikit';
4
+ import { cn } from '../../../utils/cn';
5
+ import i18n from '../i18n';
6
+ import { ErrorFieldsList, hasVisibleFields } from '../shared/ErrorFieldsList';
7
+ import { IssuesSection } from '../shared/IssuesSection';
8
+ import { ResponseBodySection } from '../shared/ResponseBodySection';
9
+ import './ErrorDetails.scss';
10
+ const b = cn('ydb-error-details');
11
+ function getExpandableContent(details) {
12
+ var _a;
13
+ const { responseBody, title, dataMessage, hasIssues, issues } = details;
14
+ const issueCount = (_a = issues === null || issues === void 0 ? void 0 : issues.length) !== null && _a !== void 0 ? _a : 0;
15
+ const hasIssueData = Boolean(hasIssues && issues && issueCount > 0);
16
+ const redundantValues = [title, dataMessage].filter(Boolean);
17
+ const isBodyRedundant = Boolean(responseBody) && redundantValues.some((v) => v === responseBody);
18
+ const visibleResponseBody = responseBody && !hasIssueData && !isBodyRedundant ? responseBody : undefined;
19
+ return { visibleResponseBody, hasIssueData };
20
+ }
21
+ export function ErrorDetailsContent({ details, renderedTitle }) {
22
+ const hasFields = hasVisibleFields(details, renderedTitle);
23
+ const { visibleResponseBody, hasIssueData } = getExpandableContent(details);
24
+ const hasExpandableContent = Boolean(visibleResponseBody) || hasIssueData;
25
+ const expandButtonLabel = hasIssueData
26
+ ? i18n('error-details.button_issues')
27
+ : i18n('error-details.button_response');
28
+ if (!hasFields && !hasExpandableContent) {
29
+ return null;
30
+ }
31
+ return (_jsxs(Flex, { direction: "column", gap: 2, className: b(), children: [hasFields && (_jsx(ErrorFieldsList, { details: details, renderedTitle: renderedTitle, className: b('fields'), valueClassName: b('field-value') })), hasExpandableContent && (_jsxs(Disclosure, { children: [_jsx(Disclosure.Summary, { children: (props) => (_jsxs(Button, { view: "outlined", size: "m", onClick: props.onClick, children: [expandButtonLabel, _jsx(Icon, { data: props.expanded ? ChevronUp : ChevronDown, size: 16 })] })) }), _jsxs("div", { className: b('expandable-content'), children: [visibleResponseBody && _jsx(ResponseBodySection, { body: visibleResponseBody }), hasIssueData && details.issues && (_jsx(IssuesSection, { issues: details.issues, triggerClassName: b('details-trigger'), disclosureClassName: b('issues') }))] })] }))] }));
32
+ }
33
+ //# sourceMappingURL=ErrorDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorDetails.js","sourceRoot":"","sources":["../../../../src/components/Errors/ResponseError/ErrorDetails.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ @use '../../../styles/mixins.scss';
2
+
3
+ .ydb-error-details {
4
+ min-width: 0;
5
+ margin-top: var(--g-spacing-3);
6
+
7
+ color: var(--g-color-text-primary);
8
+
9
+ @include mixins.body-1-typography();
10
+
11
+ &__fields {
12
+ min-width: 0;
13
+
14
+ .g-definition-list {
15
+ padding-inline-end: 0;
16
+ }
17
+
18
+ .g-definition-list__copy-button {
19
+ position: static;
20
+
21
+ opacity: 1;
22
+ }
23
+
24
+ .g-definition-list__copy-container {
25
+ align-items: center;
26
+ }
27
+ }
28
+
29
+ &__field-value {
30
+ word-break: break-all;
31
+ }
32
+
33
+ &__details-trigger {
34
+ all: unset;
35
+
36
+ display: inline-flex;
37
+ align-items: center;
38
+
39
+ padding: var(--g-spacing-half) 0;
40
+
41
+ cursor: pointer;
42
+
43
+ color: var(--g-color-text-secondary);
44
+
45
+ &:hover {
46
+ color: var(--g-color-text-primary);
47
+ }
48
+ }
49
+
50
+ &__expandable-content {
51
+ padding-top: var(--g-spacing-2);
52
+ }
53
+
54
+ &__issues {
55
+ margin-top: var(--g-spacing-2);
56
+ }
57
+ }
@@ -1,7 +1,22 @@
1
+ import type { ErrorDetails } from '../../../utils/errors/extractErrorDetails';
2
+ import './ResponseError.scss';
1
3
  interface ResponseErrorProps {
2
4
  error?: unknown;
3
5
  className?: string;
4
6
  defaultMessage?: string;
5
7
  }
8
+ export declare function useErrorInfo(error: unknown, defaultMessage?: string): {
9
+ title: string;
10
+ subtitle: string | undefined;
11
+ showSubtitle: boolean;
12
+ details: ErrorDetails | null;
13
+ };
14
+ interface ResponseErrorMessageProps {
15
+ subtitle?: string;
16
+ showSubtitle: boolean;
17
+ details?: ErrorDetails | null;
18
+ renderedTitle?: string;
19
+ }
20
+ export declare function ResponseErrorMessage({ subtitle, showSubtitle, details, renderedTitle, }: ResponseErrorMessageProps): import("react/jsx-runtime").JSX.Element;
6
21
  export declare const ResponseError: ({ error, className, defaultMessage, }: ResponseErrorProps) => import("react/jsx-runtime").JSX.Element;
7
22
  export {};
@@ -1,8 +1,53 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { prepareErrorMessage } from '../../../utils/prepareErrorMessage';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { Alert, Flex, Text } from '@gravity-ui/uikit';
4
+ import { cn } from '../../../utils/cn';
5
+ import { extractErrorDetails, prepareCommonErrorMessage } from '../../../utils/errors';
6
+ import { getNetworkContext } from '../../../utils/networkInfo';
7
+ import { isNetworkError } from '../../../utils/response';
3
8
  import i18n from '../i18n';
9
+ import { ErrorDetailsContent } from './ErrorDetails';
10
+ import './ResponseError.scss';
11
+ const b = cn('ydb-response-error');
12
+ function enrichWithNetworkContext(details, error) {
13
+ if (!details || details.status) {
14
+ return details;
15
+ }
16
+ const isNetworkErr = details.errorCode === 'ERR_NETWORK' || isNetworkError(error);
17
+ if (!isNetworkErr) {
18
+ return details;
19
+ }
20
+ const networkCtx = getNetworkContext();
21
+ const extra = {};
22
+ if (!networkCtx.online) {
23
+ extra.networkOnline = false;
24
+ }
25
+ if (networkCtx.effectiveType && networkCtx.effectiveType !== '4g') {
26
+ extra.networkEffectiveType = networkCtx.effectiveType;
27
+ }
28
+ return Object.keys(extra).length > 0 ? { ...details, ...extra } : details;
29
+ }
30
+ export function useErrorInfo(error, defaultMessage) {
31
+ const fallback = defaultMessage !== null && defaultMessage !== void 0 ? defaultMessage : i18n('responseError.defaultMessage');
32
+ const fallbackMessage = prepareCommonErrorMessage(error, fallback);
33
+ const baseDetails = React.useMemo(() => extractErrorDetails(error), [error]);
34
+ const details = React.useMemo(() => enrichWithNetworkContext(baseDetails, error), [baseDetails, error]);
35
+ const offlineTitle = (details === null || details === void 0 ? void 0 : details.networkOnline) === false ? i18n('error-details.network_offline') : undefined;
36
+ const title = offlineTitle || (details === null || details === void 0 ? void 0 : details.title) || fallbackMessage;
37
+ const subtitle = (details === null || details === void 0 ? void 0 : details.dataMessage) ||
38
+ ((details === null || details === void 0 ? void 0 : details.title) &&
39
+ fallbackMessage !== details.title &&
40
+ fallbackMessage !== details.statusText
41
+ ? fallbackMessage
42
+ : undefined);
43
+ const showSubtitle = Boolean(subtitle) && subtitle !== title;
44
+ return { title, subtitle, showSubtitle, details };
45
+ }
46
+ export function ResponseErrorMessage({ subtitle, showSubtitle, details, renderedTitle, }) {
47
+ return (_jsxs(Flex, { direction: "column", gap: 2, className: b('message'), children: [showSubtitle && (_jsx(Text, { variant: "body-1", className: b('data-message'), children: subtitle })), details && _jsx(ErrorDetailsContent, { details: details, renderedTitle: renderedTitle })] }));
48
+ }
4
49
  export const ResponseError = ({ error, className, defaultMessage = i18n('responseError.defaultMessage'), }) => {
5
- const message = prepareErrorMessage(error) || defaultMessage;
6
- return _jsx("div", { className: `error ${className}`, children: message });
50
+ const { title, subtitle, showSubtitle, details } = useErrorInfo(error, defaultMessage);
51
+ return (_jsx(Alert, { theme: "danger", title: title, message: _jsx(ResponseErrorMessage, { subtitle: subtitle, showSubtitle: showSubtitle, details: details, renderedTitle: title }), className: b(null, className) }));
7
52
  };
8
53
  //# sourceMappingURL=ResponseError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseError.js","sourceRoot":"","sources":["../../../../src/components/Errors/ResponseError/ResponseError.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,IAAI,MAAM,SAAS,CAAC;AAQ3B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,GACpC,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC;IAE7D,OAAO,cAAK,SAAS,EAAE,SAAS,SAAS,EAAE,YAAG,OAAO,GAAO,CAAC;AACjE,CAAC,CAAC"}
1
+ {"version":3,"file":"ResponseError.js","sourceRoot":"","sources":["../../../../src/components/Errors/ResponseError/ResponseError.tsx"],"names":[],"mappings":"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"}