@topthink/common 1.0.29 → 1.0.32

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/scss/menu.scss ADDED
@@ -0,0 +1,400 @@
1
+ @font-face {
2
+ font-family: 'FontAwesome';
3
+ src: url('https://jsdelivr.topthink.com/npm/font-awesome@4.2.0/fonts/fontawesome-webfont.eot');
4
+ src: url('https://jsdelivr.topthink.com/npm/font-awesome@4.2.0/fonts/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
5
+ url('https://jsdelivr.topthink.com/npm/font-awesome@4.2.0/fonts/fontawesome-webfont.woff') format('woff'),
6
+ url('https://jsdelivr.topthink.com/npm/font-awesome@4.2.0/fonts/fontawesome-webfont.ttf') format('truetype'),
7
+ url('https://jsdelivr.topthink.com/npm/font-awesome@4.2.0/fonts/fontawesome-webfont.svg?#fontawesomeregular') format('svg');
8
+ font-weight: normal;
9
+ font-style: normal;
10
+ }
11
+
12
+ .rc-menu {
13
+ outline: none;
14
+ margin-bottom: 0;
15
+ padding-left: 0;
16
+ padding-right: 0;
17
+ list-style: none;
18
+ border: 1px solid #d9d9d9;
19
+ box-shadow: 0 0 4px #d9d9d9;
20
+ border-radius: 3px;
21
+ color: #666;
22
+ }
23
+
24
+ .rc-menu-rtl {
25
+ direction: rtl;
26
+ }
27
+
28
+ .rc-menu-hidden {
29
+ display: none;
30
+ }
31
+
32
+ .rc-menu-collapse {
33
+ overflow: hidden;
34
+ transition: height 0.3s ease-out;
35
+ }
36
+
37
+ .rc-menu-item-group-list {
38
+ margin: 0;
39
+ padding: 0;
40
+ }
41
+
42
+ .rc-menu-item-group-title {
43
+ color: #999;
44
+ line-height: 1.5;
45
+ padding: 8px 10px;
46
+ border-bottom: 1px solid #dedede;
47
+ }
48
+
49
+ .rc-menu-item-active,
50
+ .rc-menu-submenu-active > .rc-menu-submenu-title {
51
+ background-color: #eaf8fe;
52
+ }
53
+
54
+ .rc-menu-item-selected {
55
+ background-color: #eaf8fe;
56
+ transform: translateZ(0);
57
+ }
58
+
59
+ .rc-menu-submenu-selected {
60
+ background-color: #eaf8fe;
61
+ }
62
+
63
+ .rc-menu > li.rc-menu-submenu {
64
+ padding: 0;
65
+ }
66
+
67
+ .rc-menu-horizontal.rc-menu-sub,
68
+ .rc-menu-vertical.rc-menu-sub,
69
+ .rc-menu-vertical-left.rc-menu-sub,
70
+ .rc-menu-vertical-right.rc-menu-sub {
71
+ min-width: 160px;
72
+ margin-top: 0;
73
+ }
74
+
75
+ .rc-menu-item,
76
+ .rc-menu-submenu-title {
77
+ margin: 0;
78
+ position: relative;
79
+ display: block;
80
+ padding: 7px 7px 7px 16px;
81
+ white-space: nowrap;
82
+ }
83
+
84
+ .rc-menu-rtl .rc-menu-item,
85
+ .rc-menu-rtl .rc-menu-submenu-title {
86
+ padding: 7px 16px 7px 7px;
87
+ }
88
+
89
+ .rc-menu-item.rc-menu-item-disabled,
90
+ .rc-menu-submenu-title.rc-menu-item-disabled,
91
+ .rc-menu-item.rc-menu-submenu-disabled,
92
+ .rc-menu-submenu-title.rc-menu-submenu-disabled {
93
+ color: #777 !important;
94
+ }
95
+
96
+ .rc-menu > .rc-menu-item-divider {
97
+ height: 1px;
98
+ margin: 1px 0;
99
+ overflow: hidden;
100
+ padding: 0;
101
+ line-height: 0;
102
+ background-color: #e5e5e5;
103
+ }
104
+
105
+ .rc-menu-submenu-popup {
106
+ position: absolute;
107
+ }
108
+
109
+ .rc-menu-submenu-popup .submenu-title-wrapper {
110
+ padding-right: 20px;
111
+ }
112
+
113
+ .rc-menu-submenu-rtl.rc-menu-submenu-popup .submenu-title-wrapper,
114
+ .rc-menu-submenu-rtl .rc-menu-submenu-popup .submenu-title-wrapper {
115
+ padding-right: 0;
116
+ padding-left: 20px;
117
+ }
118
+
119
+ .rc-menu-submenu > .rc-menu {
120
+ background-color: #fff;
121
+ }
122
+
123
+ .rc-menu .rc-menu-submenu-title .anticon,
124
+ .rc-menu .rc-menu-item .anticon {
125
+ width: 14px;
126
+ height: 14px;
127
+ margin-right: 8px;
128
+ top: -1px;
129
+ }
130
+
131
+ .rc-menu-rtl .rc-menu .rc-menu-submenu-title .anticon,
132
+ .rc-menu-rtl .rc-menu .rc-menu-item .anticon {
133
+ margin-right: 0;
134
+ margin-left: 8px;
135
+ }
136
+
137
+ .rc-menu-horizontal {
138
+ background-color: #f3f5f7;
139
+ border: none;
140
+ border-bottom: 1px solid #d9d9d9;
141
+ box-shadow: none;
142
+ white-space: nowrap;
143
+ overflow: hidden;
144
+ }
145
+
146
+ .rc-menu-horizontal > .rc-menu-item,
147
+ .rc-menu-horizontal > .rc-menu-submenu > .rc-menu-submenu-title {
148
+ padding: 15px 20px;
149
+ }
150
+
151
+ .rc-menu-horizontal > .rc-menu-submenu,
152
+ .rc-menu-horizontal > .rc-menu-item {
153
+ border-bottom: 2px solid transparent;
154
+ display: inline-block;
155
+ vertical-align: bottom;
156
+ }
157
+
158
+ .rc-menu-horizontal > .rc-menu-submenu-active,
159
+ .rc-menu-horizontal > .rc-menu-item-active {
160
+ border-bottom: 2px solid #2db7f5;
161
+ background-color: #f3f5f7;
162
+ color: #2baee9;
163
+ }
164
+
165
+ .rc-menu-horizontal:after {
166
+ content: '\20';
167
+ display: block;
168
+ height: 0;
169
+ clear: both;
170
+ }
171
+
172
+ .rc-menu-vertical,
173
+ .rc-menu-vertical-left,
174
+ .rc-menu-vertical-right,
175
+ .rc-menu-inline {
176
+ padding: 12px 0;
177
+ }
178
+
179
+ .rc-menu-vertical > .rc-menu-item,
180
+ .rc-menu-vertical-left > .rc-menu-item,
181
+ .rc-menu-vertical-right > .rc-menu-item,
182
+ .rc-menu-inline > .rc-menu-item,
183
+ .rc-menu-vertical > .rc-menu-submenu > .rc-menu-submenu-title,
184
+ .rc-menu-vertical-left > .rc-menu-submenu > .rc-menu-submenu-title,
185
+ .rc-menu-vertical-right > .rc-menu-submenu > .rc-menu-submenu-title,
186
+ .rc-menu-inline > .rc-menu-submenu > .rc-menu-submenu-title {
187
+ padding: 12px 8px 12px 24px;
188
+ }
189
+
190
+ .rc-menu-rtl.rc-menu-vertical > .rc-menu-item,
191
+ .rc-menu-rtl.rc-menu-vertical-left > .rc-menu-item,
192
+ .rc-menu-rtl.rc-menu-vertical-right > .rc-menu-item,
193
+ .rc-menu-rtl.rc-menu-inline > .rc-menu-item,
194
+ .rc-menu-rtl.rc-menu-vertical > .rc-menu-submenu > .rc-menu-submenu-title,
195
+ .rc-menu-rtl.rc-menu-vertical-left > .rc-menu-submenu > .rc-menu-submenu-title,
196
+ .rc-menu-rtl.rc-menu-vertical-right > .rc-menu-submenu > .rc-menu-submenu-title,
197
+ .rc-menu-rtl.rc-menu-inline > .rc-menu-submenu > .rc-menu-submenu-title {
198
+ padding: 12px 24px 12px 8px;
199
+ }
200
+
201
+ .rc-menu-vertical .rc-menu-submenu-arrow,
202
+ .rc-menu-vertical-left .rc-menu-submenu-arrow,
203
+ .rc-menu-vertical-right .rc-menu-submenu-arrow,
204
+ .rc-menu-inline .rc-menu-submenu-arrow {
205
+ display: inline-block;
206
+ font: normal normal normal 14px/1 FontAwesome;
207
+ font-size: inherit;
208
+ vertical-align: baseline;
209
+ text-align: center;
210
+ text-transform: none;
211
+ text-rendering: auto;
212
+ position: absolute;
213
+ right: 16px;
214
+ line-height: 1.5em;
215
+ }
216
+
217
+ .rc-menu-vertical .rc-menu-submenu-arrow:before,
218
+ .rc-menu-vertical-left .rc-menu-submenu-arrow:before,
219
+ .rc-menu-vertical-right .rc-menu-submenu-arrow:before,
220
+ .rc-menu-inline .rc-menu-submenu-arrow:before {
221
+ content: '\f0da';
222
+ }
223
+
224
+ .rc-menu-rtl.rc-menu-vertical .rc-menu-submenu-arrow:before,
225
+ .rc-menu-rtl.rc-menu-vertical-left .rc-menu-submenu-arrow:before,
226
+ .rc-menu-rtl.rc-menu-vertical-right .rc-menu-submenu-arrow:before,
227
+ .rc-menu-rtl.rc-menu-inline .rc-menu-submenu-arrow:before,
228
+ .rc-menu-submenu-rtl .rc-menu-vertical .rc-menu-submenu-arrow:before,
229
+ .rc-menu-submenu-rtl .rc-menu-vertical-left .rc-menu-submenu-arrow:before,
230
+ .rc-menu-submenu-rtl .rc-menu-vertical-right .rc-menu-submenu-arrow:before,
231
+ .rc-menu-submenu-rtl .rc-menu-inline .rc-menu-submenu-arrow:before {
232
+ content: '\f0d9';
233
+ }
234
+
235
+ .rc-menu-rtl.rc-menu-vertical .rc-menu-submenu-arrow,
236
+ .rc-menu-rtl.rc-menu-vertical-left .rc-menu-submenu-arrow,
237
+ .rc-menu-rtl.rc-menu-vertical-right .rc-menu-submenu-arrow,
238
+ .rc-menu-rtl.rc-menu-inline .rc-menu-submenu-arrow,
239
+ .rc-menu-submenu-rtl .rc-menu-vertical .rc-menu-submenu-arrow,
240
+ .rc-menu-submenu-rtl .rc-menu-vertical-left .rc-menu-submenu-arrow,
241
+ .rc-menu-submenu-rtl .rc-menu-vertical-right .rc-menu-submenu-arrow,
242
+ .rc-menu-submenu-rtl .rc-menu-inline .rc-menu-submenu-arrow {
243
+ right: auto;
244
+ left: 16px;
245
+ }
246
+
247
+ .rc-menu-inline .rc-menu-submenu-arrow {
248
+ transform: rotate(90deg);
249
+ transition: transform 0.3s;
250
+ }
251
+
252
+ .rc-menu-inline .rc-menu-submenu-open > .rc-menu-submenu-title .rc-menu-submenu-arrow {
253
+ transform: rotate(-90deg);
254
+ }
255
+
256
+ .rc-menu-vertical.rc-menu-sub,
257
+ .rc-menu-vertical-left.rc-menu-sub,
258
+ .rc-menu-vertical-right.rc-menu-sub {
259
+ padding: 0;
260
+ }
261
+
262
+ .rc-menu-submenu-rtl .rc-menu-vertical.rc-menu-sub,
263
+ .rc-menu-submenu-rtl .rc-menu-vertical-left.rc-menu-sub,
264
+ .rc-menu-submenu-rtl .rc-menu-vertical-right.rc-menu-sub {
265
+ direction: rtl;
266
+ }
267
+
268
+ .rc-menu-sub.rc-menu-inline {
269
+ padding: 0;
270
+ border: none;
271
+ border-radius: 0;
272
+ box-shadow: none;
273
+ }
274
+
275
+ .rc-menu-sub.rc-menu-inline > .rc-menu-item,
276
+ .rc-menu-sub.rc-menu-inline > .rc-menu-submenu > .rc-menu-submenu-title {
277
+ padding-top: 8px;
278
+ padding-bottom: 8px;
279
+ padding-right: 0;
280
+ }
281
+
282
+ .rc-menu-rtl .rc-menu-sub.rc-menu-inline > .rc-menu-item,
283
+ .rc-menu-rtl .rc-menu-sub.rc-menu-inline > .rc-menu-submenu > .rc-menu-submenu-title {
284
+ padding-left: 0;
285
+ }
286
+
287
+ .rc-menu-open-slide-up-enter,
288
+ .rc-menu-open-slide-up-appear {
289
+ animation-duration: 0.3s;
290
+ animation-fill-mode: both;
291
+ transform-origin: 0 0;
292
+ opacity: 0;
293
+ animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
294
+ animation-play-state: paused;
295
+ }
296
+
297
+ .rc-menu-open-slide-up-leave {
298
+ animation-duration: 0.3s;
299
+ animation-fill-mode: both;
300
+ transform-origin: 0 0;
301
+ opacity: 1;
302
+ animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
303
+ animation-play-state: paused;
304
+ }
305
+
306
+ .rc-menu-open-slide-up-enter.rc-menu-open-slide-up-enter-active,
307
+ .rc-menu-open-slide-up-appear.rc-menu-open-slide-up-appear-active {
308
+ animation-name: rcMenuOpenSlideUpIn;
309
+ animation-play-state: running;
310
+ }
311
+
312
+ .rc-menu-open-slide-up-leave.rc-menu-open-slide-up-leave-active {
313
+ animation-name: rcMenuOpenSlideUpOut;
314
+ animation-play-state: running;
315
+ }
316
+
317
+ @keyframes rcMenuOpenSlideUpIn {
318
+ 0% {
319
+ opacity: 0;
320
+ transform-origin: 0% 0%;
321
+ transform: scaleY(0);
322
+ }
323
+ 100% {
324
+ opacity: 1;
325
+ transform-origin: 0% 0%;
326
+ transform: scaleY(1);
327
+ }
328
+ }
329
+
330
+ @keyframes rcMenuOpenSlideUpOut {
331
+ 0% {
332
+ opacity: 1;
333
+ transform-origin: 0% 0%;
334
+ transform: scaleY(1);
335
+ }
336
+ 100% {
337
+ opacity: 0;
338
+ transform-origin: 0% 0%;
339
+ transform: scaleY(0);
340
+ }
341
+ }
342
+
343
+ .rc-menu-open-zoom-enter,
344
+ .rc-menu-open-zoom-appear {
345
+ opacity: 0;
346
+ animation-duration: 0.3s;
347
+ animation-fill-mode: both;
348
+ transform-origin: 0 0;
349
+ animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
350
+ animation-play-state: paused;
351
+ }
352
+
353
+ .rc-menu-open-zoom-leave {
354
+ animation-duration: 0.3s;
355
+ animation-fill-mode: both;
356
+ transform-origin: 0 0;
357
+ animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
358
+ animation-play-state: paused;
359
+ }
360
+
361
+ .rc-menu-open-zoom-enter.rc-menu-open-zoom-enter-active,
362
+ .rc-menu-open-zoom-appear.rc-menu-open-zoom-appear-active {
363
+ animation-name: rcMenuOpenZoomIn;
364
+ animation-play-state: running;
365
+ }
366
+
367
+ .rc-menu-open-zoom-leave.rc-menu-open-zoom-leave-active {
368
+ animation-name: rcMenuOpenZoomOut;
369
+ animation-play-state: running;
370
+ }
371
+
372
+ .rc-menu-submenu-rtl.rc-menu-open-zoom-enter,
373
+ .rc-menu-submenu-rtl.rc-menu-open-zoom-appear,
374
+ .rc-menu-submenu-rtl.rc-menu-open-zoom-leave,
375
+ .rc-menu-submenu-rtl .rc-menu-open-zoom-enter,
376
+ .rc-menu-submenu-rtl .rc-menu-open-zoom-appear,
377
+ .rc-menu-submenu-rtl .rc-menu-open-zoom-leave {
378
+ transform-origin: top right !important;
379
+ }
380
+
381
+ @keyframes rcMenuOpenZoomIn {
382
+ 0% {
383
+ opacity: 0;
384
+ transform: scale(0, 0);
385
+ }
386
+ 100% {
387
+ opacity: 1;
388
+ transform: scale(1, 1);
389
+ }
390
+ }
391
+
392
+ @keyframes rcMenuOpenZoomOut {
393
+ 0% {
394
+ transform: scale(1, 1);
395
+ }
396
+ 100% {
397
+ opacity: 0;
398
+ transform: scale(0, 0);
399
+ }
400
+ }
@@ -0,0 +1,92 @@
1
+ .notification {
2
+ position: fixed;
3
+ z-index: 1100;
4
+
5
+ &-notice {
6
+ border-radius: 3px 3px;
7
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
8
+ border: 0 solid rgba(0, 0, 0, 0);;
9
+ background: #fff;
10
+ display: block;
11
+ width: auto;
12
+ line-height: 1.5;
13
+ position: relative;
14
+ margin: 10px 0;
15
+ max-width: 300px;
16
+ white-space: pre-wrap;
17
+
18
+ &-close {
19
+ position: absolute;
20
+ right: 5px;
21
+ top: 3px;
22
+ color: #000;
23
+ cursor: pointer;
24
+ outline: none;
25
+ font-size: 16px;
26
+ font-weight: 700;
27
+ line-height: 1;
28
+ text-shadow: 0 1px 0 #fff;
29
+ filter: alpha(opacity=20);
30
+ opacity: .2;
31
+ text-decoration: none;
32
+
33
+ &-x:after {
34
+ content: '×';
35
+ }
36
+
37
+ &:hover {
38
+ opacity: 1;
39
+ filter: alpha(opacity=100);
40
+ text-decoration: none;
41
+ }
42
+ }
43
+ }
44
+
45
+ @mixin fade-effect {
46
+ animation-duration: 0.3s;
47
+ animation-fill-mode: both;
48
+ animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2);
49
+ }
50
+
51
+ &-fade-appear,
52
+ &-fade-enter {
53
+ opacity: 0;
54
+
55
+ @include fade-effect;
56
+ animation-play-state: paused;
57
+ }
58
+
59
+ &-fade-leave {
60
+ @include fade-effect;
61
+ animation-play-state: paused;
62
+ }
63
+
64
+ &-fade-appear#{&}-fade-appear-active,
65
+ &-fade-enter#{&}-fade-enter-active {
66
+ animation-name: rcNotificationFadeIn;
67
+ animation-play-state: running;
68
+ }
69
+
70
+ &-fade-leave#{&}-fade-leave-active {
71
+ animation-name: rcDialogFadeOut;
72
+ animation-play-state: running;
73
+ }
74
+
75
+ @keyframes rcNotificationFadeIn {
76
+ 0% {
77
+ opacity: 0;
78
+ }
79
+ 100% {
80
+ opacity: 1;
81
+ }
82
+ }
83
+
84
+ @keyframes rcDialogFadeOut {
85
+ 0% {
86
+ opacity: 1;
87
+ }
88
+ 100% {
89
+ opacity: 0;
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,17 @@
1
+ import { Component } from 'react';
2
+ import Unauthorized from '../errors/unauthorized';
3
+ interface Props {
4
+ onUnauthorized?: (error: Unauthorized) => void;
5
+ }
6
+ interface State {
7
+ unauthorized?: Unauthorized;
8
+ }
9
+ export default class ErrorBoundary extends Component<Props, State> {
10
+ constructor(props: Props);
11
+ static getDerivedStateFromError(error: Error): {
12
+ unauthorized: Unauthorized;
13
+ } | undefined;
14
+ componentDidUpdate(): void;
15
+ render(): import("react").ReactNode;
16
+ }
17
+ export {};
@@ -1,6 +1,8 @@
1
1
  import { PropsWithChildren, ReactNode } from 'react';
2
2
  interface Props {
3
3
  menus: ReactNode;
4
+ className?: string;
5
+ logo?: boolean;
4
6
  }
5
- export default function Header({ children, menus }: PropsWithChildren<Props>): JSX.Element;
7
+ export default function Header({ children, menus, className, logo }: PropsWithChildren<Props>): JSX.Element;
6
8
  export {};
@@ -1,2 +1,11 @@
1
1
  import { PropsWithChildren } from 'react';
2
- export default function Root({ children }: PropsWithChildren<any>): JSX.Element;
2
+ import Unauthorized from '../errors/unauthorized';
3
+ interface Props {
4
+ basename?: string;
5
+ onUnauthorized?: (error: Unauthorized) => void;
6
+ authentication?: 'cookie' | 'token';
7
+ onLogout?: () => void | Promise<void>;
8
+ onLogin?: () => (void | string) | Promise<void | string>;
9
+ }
10
+ export default function Root({ children, basename, authentication, onLogout, onLogin }: PropsWithChildren<Props>): JSX.Element;
11
+ export {};
@@ -1,9 +1,6 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
2
  import { User } from '../utils/types';
3
- export declare const UserContext: React.Context<[User | null, (user: User) => void]>;
4
- interface Props {
5
- user: User;
6
- }
7
- declare const UserProvider: ({ children, user }: PropsWithChildren<Props>) => JSX.Element;
8
- export declare function useUser(): [User, ((user: User) => void)];
3
+ export declare const UserContext: React.Context<[User, (user: User) => void] | null>;
4
+ declare const UserProvider: ({ children }: PropsWithChildren<any>) => JSX.Element;
5
+ export declare function useUser(): [User, (user: User) => void];
9
6
  export default UserProvider;
@@ -0,0 +1,4 @@
1
+ export default class Unauthorized extends Error {
2
+ url: string;
3
+ constructor(url: string);
4
+ }
package/types/index.d.ts CHANGED
@@ -2,6 +2,7 @@ declare module 'react-router' {
2
2
  interface RouteObject {
3
3
  meta?: {
4
4
  title?: string;
5
+ icon?: string;
5
6
  hideInMenu?: boolean;
6
7
  hideChildrenInMenu?: boolean;
7
8
  };
@@ -13,7 +14,6 @@ export { default as Result } from './components/result';
13
14
  export { default as Header } from './components/header';
14
15
  export { default as Footer } from './components/footer';
15
16
  export { default as Loader } from './components/loader';
16
- export { default as Root } from './components/root';
17
17
  export { default as Card } from './components/card';
18
18
  export { default as Error } from './components/error';
19
19
  export { default as Access } from './components/access';
@@ -34,4 +34,5 @@ export { default as UserProvider, useUser } from './components/user-provider';
34
34
  export { default as Tooltip } from './components/tooltip';
35
35
  export { default as request, RequestConfig, RequestInstance, isRequestError } from './request';
36
36
  export { PaginationType, User } from './utils/types';
37
+ export { default as createApplication } from './utils/create-application';
37
38
  export { UiSchema as FormUiSchema, Schema as FormSchema, WidgetProps as FormWidgetProps, Widget as FormWidget, IChangeEvent as FormChangeEvent, ISubmitEvent as FormSubmitEvent } from '@topthink/json-form';
@@ -1,5 +1,4 @@
1
1
  /// <reference types="react" />
2
- import 'rc-menu/assets/index.css';
3
2
  import type { RouteObject } from 'react-router';
4
3
  interface Props {
5
4
  title: string;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ interface LoginProps {
3
+ onLogin: () => void | Promise<void>;
4
+ }
5
+ export default function Login({ onLogin }: LoginProps): JSX.Element;
6
+ export {};
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ interface LogoutProps {
3
+ onLogout: () => void | Promise<void>;
4
+ }
5
+ export default function Logout({ onLogout }: LogoutProps): JSX.Element;
6
+ export {};
@@ -1,4 +1,4 @@
1
- import { AxiosRequestConfig, AxiosInstance } from 'axios';
1
+ import { AxiosInstance, AxiosRequestConfig } from 'axios';
2
2
  import { RetryConfig } from 'retry-axios';
3
3
  export declare type Errors = string | {
4
4
  [key: string]: string;
@@ -14,5 +14,12 @@ declare module 'axios' {
14
14
  export declare type RequestConfig = AxiosRequestConfig | string;
15
15
  export declare type RequestInstance = AxiosInstance;
16
16
  export declare const isRequestError: (payload: any) => payload is import("axios").AxiosError<unknown, any>;
17
- declare const request: <T = any>(config: RequestConfig) => Promise<T>;
17
+ declare const request: {
18
+ <T = any>(config: RequestConfig): Promise<T>;
19
+ defaults: import("axios").AxiosDefaults<any>;
20
+ interceptors: {
21
+ request: import("axios").AxiosInterceptorManager<AxiosRequestConfig<any>>;
22
+ response: import("axios").AxiosInterceptorManager<import("axios").AxiosResponse<any, any>>;
23
+ };
24
+ };
18
25
  export default request;
@@ -0,0 +1,18 @@
1
+ import Unauthorized from '../errors/unauthorized';
2
+ import React, { PropsWithChildren } from 'react';
3
+ import { User } from './types';
4
+ declare type UserResolver = () => User | Promise<User>;
5
+ export declare const AppContext: React.Context<{
6
+ userResolver?: UserResolver | undefined;
7
+ onUnauthorized?: ((error: Unauthorized) => void) | undefined;
8
+ }>;
9
+ interface Options {
10
+ baseURL?: string;
11
+ basename?: string;
12
+ authentication?: 'cookie' | 'token';
13
+ onLogout?: () => void | Promise<void>;
14
+ onLogin?: () => (void | string) | Promise<void | string>;
15
+ userResolver?: UserResolver;
16
+ }
17
+ export default function createApplication(options: Options): ({ children }: PropsWithChildren<any>) => JSX.Element;
18
+ export {};
@@ -2,6 +2,7 @@ import type { RouteObject } from 'react-router';
2
2
  export interface MenuData {
3
3
  path: string;
4
4
  title: string;
5
+ icon?: string;
5
6
  children: MenuData[];
6
7
  }
7
8
  export default function getMenuData(routes: RouteObject[], base?: string): MenuData[];
@@ -0,0 +1,6 @@
1
+ import { NoticeContent } from 'rc-notification/lib/Notification';
2
+ declare const types: string[];
3
+ declare let Toast: {
4
+ [index in typeof types[number]]: (content: string, options?: NoticeContent) => void;
5
+ };
6
+ export default Toast;
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export default function BasicLayout(): JSX.Element;