@qlover/create-app 0.3.2 → 0.3.3
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/CHANGELOG.md +88 -0
- package/package.json +3 -3
- package/templates/react-app/config/Identifier.I18n.ts +878 -0
- package/templates/react-app/config/app.router.json +7 -7
- package/templates/react-app/config/theme.json +7 -88
- package/templates/react-app/package.json +7 -3
- package/templates/react-app/postcss.config.js +1 -2
- package/templates/react-app/public/locales/en/common.json +118 -1
- package/templates/react-app/public/locales/zh/common.json +118 -1
- package/templates/react-app/src/App.tsx +14 -2
- package/templates/react-app/src/base/cases/RequestLogger.ts +1 -1
- package/templates/react-app/src/base/services/I18nService.ts +31 -3
- package/templates/react-app/src/base/services/ProcesserService.ts +0 -1
- package/templates/react-app/src/core/IOC.ts +12 -7
- package/templates/react-app/src/core/bootstrap.ts +42 -53
- package/templates/react-app/src/core/bootstraps/PrintBootstrap.ts +14 -0
- package/templates/react-app/src/core/bootstraps/index.ts +36 -7
- package/templates/react-app/src/core/registers/RegisterApi.ts +2 -5
- package/templates/react-app/src/core/registers/RegisterCommon.ts +38 -29
- package/templates/react-app/src/core/registers/RegisterControllers.ts +5 -10
- package/templates/react-app/src/core/registers/RegisterGlobals.ts +13 -13
- package/templates/react-app/src/core/registers/index.ts +27 -12
- package/templates/react-app/src/main.tsx +1 -1
- package/templates/react-app/src/pages/404.tsx +1 -1
- package/templates/react-app/src/pages/500.tsx +1 -1
- package/templates/react-app/src/pages/auth/Login.tsx +128 -36
- package/templates/react-app/src/pages/base/About.tsx +5 -2
- package/templates/react-app/src/pages/base/ErrorIdentifier.tsx +38 -19
- package/templates/react-app/src/pages/base/Executor.tsx +447 -29
- package/templates/react-app/src/pages/base/Home.tsx +99 -93
- package/templates/react-app/src/pages/base/JSONStorage.tsx +47 -38
- package/templates/react-app/src/pages/base/Layout.tsx +5 -2
- package/templates/react-app/src/pages/base/Request.tsx +90 -208
- package/templates/react-app/src/pages/base/components/BaseHeader.tsx +13 -5
- package/templates/react-app/src/styles/css/page.css +11 -0
- package/templates/react-app/src/styles/css/tailwind.css +5 -0
- package/templates/react-app/src/styles/css/themes/_default.css +200 -0
- package/templates/react-app/src/styles/css/themes/dark.css +154 -0
- package/templates/react-app/src/styles/css/themes/index.css +3 -0
- package/templates/react-app/src/styles/css/themes/pink.css +160 -0
- package/templates/react-app/src/uikit/components/LanguageSwitcher.tsx +56 -0
- package/templates/react-app/src/uikit/components/Loading.tsx +27 -21
- package/templates/react-app/src/uikit/components/ThemeSwitcher.tsx +63 -13
- package/templates/react-app/src/uikit/contexts/BaseRouteContext.ts +1 -1
- package/templates/react-app/src/uikit/controllers/UserController.ts +1 -1
- package/templates/react-app/tailwind.config.js +1 -15
- package/templates/react-app/vite.config.ts +7 -1
- package/templates/react-app/lib/tailwind/root10px.js +0 -178
- package/templates/react-app/lib/tailwind/theme-generator.js +0 -238
- package/templates/react-app/public/locales/en/about.json +0 -3
- package/templates/react-app/public/locales/en/executor.json +0 -6
- package/templates/react-app/public/locales/en/home.json +0 -10
- package/templates/react-app/public/locales/en/jsonStorage.json +0 -11
- package/templates/react-app/public/locales/en/login.json +0 -7
- package/templates/react-app/public/locales/en/request.json +0 -15
- package/templates/react-app/public/locales/zh/about.json +0 -3
- package/templates/react-app/public/locales/zh/executor.json +0 -6
- package/templates/react-app/public/locales/zh/home.json +0 -10
- package/templates/react-app/public/locales/zh/jsonStorage.json +0 -11
- package/templates/react-app/public/locales/zh/login.json +0 -7
- package/templates/react-app/public/locales/zh/request.json +0 -15
- package/templates/react-app/src/base/port/InversifyIocInterface.ts +0 -9
- package/templates/react-app/src/uikit/styles/css/page.css +0 -3
- package/templates/react-app/src/uikit/styles/css/tailwind.css +0 -3
- /package/templates/react-app/config/{ErrorIdentifier.ts → Identifier.Error.ts} +0 -0
- /package/templates/react-app/src/{uikit/styles → styles}/css/index.css +0 -0
|
@@ -1,106 +1,112 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Button } from 'antd';
|
|
2
2
|
import { useBaseRoutePage } from '@/uikit/contexts/BaseRouteContext';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
href: '/about',
|
|
7
|
-
bgColor: 'bg-blue-50',
|
|
8
|
-
hoverColor: 'hover:bg-blue-100',
|
|
9
|
-
titleColor: 'text-blue-700',
|
|
10
|
-
titleKey: 'about',
|
|
11
|
-
descriptionKey: 'about_description'
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
href: '/jsonstorage',
|
|
15
|
-
bgColor: 'bg-green-50',
|
|
16
|
-
hoverColor: 'hover:bg-green-100',
|
|
17
|
-
titleColor: 'text-green-700',
|
|
18
|
-
titleKey: 'jsonstorage',
|
|
19
|
-
descriptionKey: 'jsonstorage_description'
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
href: '/request',
|
|
23
|
-
bgColor: 'bg-red-50',
|
|
24
|
-
hoverColor: 'hover:bg-red-100',
|
|
25
|
-
titleColor: 'text-red-700',
|
|
26
|
-
titleKey: 'request',
|
|
27
|
-
descriptionKey: 'request_description'
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
href: '/executor',
|
|
31
|
-
bgColor: 'bg-purple-50',
|
|
32
|
-
hoverColor: 'hover:bg-purple-100',
|
|
33
|
-
titleColor: 'text-purple-700',
|
|
34
|
-
titleKey: 'executor',
|
|
35
|
-
descriptionKey: 'executor_description'
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
href: '/errorIdentifier',
|
|
39
|
-
bgColor: 'bg-amber-50',
|
|
40
|
-
hoverColor: 'hover:bg-amber-100',
|
|
41
|
-
titleColor: 'text-amber-700',
|
|
42
|
-
titleKey: 'errorIdentifier',
|
|
43
|
-
descriptionKey: 'errorIdentifier_description'
|
|
44
|
-
}
|
|
45
|
-
];
|
|
3
|
+
import LocaleLink from '@/uikit/components/LocaleLink';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import * as i18nKeys from '@config/Identifier.I18n';
|
|
46
6
|
|
|
47
7
|
export default function Home() {
|
|
48
8
|
const { t } = useBaseRoutePage();
|
|
49
9
|
|
|
10
|
+
const navigationItems = [
|
|
11
|
+
{
|
|
12
|
+
href: '/about',
|
|
13
|
+
bgColor: 'bg-blue-50',
|
|
14
|
+
hoverColor: 'hover:bg-blue-100',
|
|
15
|
+
titleColor: 'text-blue-700',
|
|
16
|
+
titleKey: i18nKeys.PAGE_ABOUT_TITLE,
|
|
17
|
+
descriptionKey: i18nKeys.PAGE_ABOUT_DESCRIPTION
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
href: '/jsonstorage',
|
|
21
|
+
bgColor: 'bg-green-50',
|
|
22
|
+
hoverColor: 'hover:bg-green-100',
|
|
23
|
+
titleColor: 'text-green-700',
|
|
24
|
+
titleKey: i18nKeys.PAGE_JSONSTORAGE_TITLE,
|
|
25
|
+
descriptionKey: i18nKeys.PAGE_JSONSTORAGE_DESCRIPTION
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
href: '/request',
|
|
29
|
+
bgColor: 'bg-red-50',
|
|
30
|
+
hoverColor: 'hover:bg-red-100',
|
|
31
|
+
titleColor: 'text-red-700',
|
|
32
|
+
titleKey: i18nKeys.PAGE_REQUEST_TITLE,
|
|
33
|
+
descriptionKey: i18nKeys.PAGE_REQUEST_DESCRIPTION
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
href: '/executor',
|
|
37
|
+
bgColor: 'bg-purple-50',
|
|
38
|
+
hoverColor: 'hover:bg-purple-100',
|
|
39
|
+
titleColor: 'text-purple-700',
|
|
40
|
+
titleKey: i18nKeys.PAGE_EXECUTOR_TITLE,
|
|
41
|
+
descriptionKey: i18nKeys.PAGE_EXECUTOR_DESCRIPTION
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
href: '/errorIdentifier',
|
|
45
|
+
bgColor: 'bg-amber-50',
|
|
46
|
+
hoverColor: 'hover:bg-amber-100',
|
|
47
|
+
titleColor: 'text-amber-700',
|
|
48
|
+
titleKey: i18nKeys.PAGE_ERROR_IDENTIFIER_TITLE,
|
|
49
|
+
descriptionKey: i18nKeys.PAGE_ERROR_IDENTIFIER_DESCRIPTION
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
|
|
50
53
|
return (
|
|
51
|
-
<div className="min-h-screen bg-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
<div className="min-h-screen bg-primary">
|
|
55
|
+
{/* Hero Section */}
|
|
56
|
+
<section className="py-16 px-4">
|
|
57
|
+
<div className="max-w-4xl mx-auto text-center">
|
|
58
|
+
<h1 className="text-4xl md:text-5xl font-bold mb-6 text-text">
|
|
59
|
+
{t(i18nKeys.HOME_WELCOME)}
|
|
56
60
|
</h1>
|
|
61
|
+
<p className="text-xl text-text-secondary mb-8">
|
|
62
|
+
{t(i18nKeys.HOME_DESCRIPTION)}
|
|
63
|
+
</p>
|
|
64
|
+
</div>
|
|
65
|
+
</section>
|
|
57
66
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
67
|
+
{/* Navigation Grid */}
|
|
68
|
+
<section className="max-w-6xl mx-auto px-4 py-12">
|
|
69
|
+
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
|
|
70
|
+
{navigationItems.map((item) => (
|
|
71
|
+
<LocaleLink
|
|
72
|
+
key={item.href}
|
|
73
|
+
href={item.href}
|
|
74
|
+
className={clsx(
|
|
75
|
+
'block rounded-lg p-6',
|
|
76
|
+
'bg-secondary',
|
|
77
|
+
'border border-border',
|
|
78
|
+
'hover:bg-elevated',
|
|
79
|
+
'transition-colors duration-200'
|
|
80
|
+
)}
|
|
81
|
+
>
|
|
82
|
+
<h3 className={`text-xl font-semibold mb-3 text-text`}>
|
|
83
|
+
{t(item.titleKey)}
|
|
84
|
+
</h3>
|
|
85
|
+
<p className="text-text-secondary mb-4">
|
|
86
|
+
{t(item.descriptionKey)}
|
|
87
|
+
</p>
|
|
88
|
+
<Button type="primary" className="w-full">
|
|
89
|
+
{t(i18nKeys.HOME_EXPLORE)}
|
|
90
|
+
</Button>
|
|
91
|
+
</LocaleLink>
|
|
92
|
+
))}
|
|
93
|
+
</div>
|
|
94
|
+
</section>
|
|
79
95
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
<path
|
|
93
|
-
fillRule="evenodd"
|
|
94
|
-
d="M12 2C6.477 2 2 6.477 2 12c0 4.42 2.865 8.17 6.839 9.49.5.092.682-.217.682-.482 0-.237-.008-.866-.013-1.7-2.782.604-3.369-1.34-3.369-1.34-.454-1.156-1.11-1.464-1.11-1.464-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.743 0 .267.18.578.688.48C19.138 20.167 22 16.418 22 12c0-5.523-4.477-10-10-10z"
|
|
95
|
-
clipRule="evenodd"
|
|
96
|
-
/>
|
|
97
|
-
</svg>
|
|
98
|
-
Visit GitHub
|
|
99
|
-
</LocaleLink>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
96
|
+
{/* Call to Action Section */}
|
|
97
|
+
<section className="py-16 px-4 bg-elevated">
|
|
98
|
+
<div className="max-w-4xl mx-auto text-center">
|
|
99
|
+
<h2 className="text-3xl font-bold mb-4 text-text">
|
|
100
|
+
{t(i18nKeys.HOME_GET_STARTED_TITLE)}
|
|
101
|
+
</h2>
|
|
102
|
+
<p className="text-lg text-text-secondary mb-8">
|
|
103
|
+
{t(i18nKeys.HOME_GET_STARTED_DESCRIPTION)}
|
|
104
|
+
</p>
|
|
105
|
+
<Button type="primary" size="large" className="px-8">
|
|
106
|
+
{t(i18nKeys.HOME_GET_STARTED_BUTTON)}
|
|
107
|
+
</Button>
|
|
102
108
|
</div>
|
|
103
|
-
</
|
|
109
|
+
</section>
|
|
104
110
|
</div>
|
|
105
111
|
);
|
|
106
112
|
}
|
|
@@ -3,29 +3,30 @@ import { useBaseRoutePage } from '@/uikit/contexts/BaseRouteContext';
|
|
|
3
3
|
import template from 'lodash/template';
|
|
4
4
|
import { JSONStorageController } from '@/uikit/controllers/JSONStorageController';
|
|
5
5
|
import { useSliceStore } from '@qlover/slice-store-react';
|
|
6
|
+
import { Button, Input } from 'antd';
|
|
7
|
+
import * as i18nKeys from '@config/Identifier.I18n';
|
|
6
8
|
|
|
7
9
|
export default function JSONStorage() {
|
|
8
10
|
const jsonStorageController = IOC(JSONStorageController);
|
|
9
11
|
const controllerState = useSliceStore(jsonStorageController);
|
|
10
|
-
|
|
11
12
|
const { t } = useBaseRoutePage();
|
|
12
13
|
|
|
13
14
|
return (
|
|
14
|
-
<div className="min-h-screen bg-
|
|
15
|
+
<div className="min-h-screen bg-primary py-6 flex flex-col justify-center sm:py-12">
|
|
15
16
|
<div className="relative py-3 sm:max-w-xl sm:mx-auto">
|
|
16
|
-
<div className="bg-
|
|
17
|
-
<h1 className="text-3xl font-bold text-center text-
|
|
18
|
-
{t(
|
|
17
|
+
<div className="bg-secondary shadow-lg rounded-lg px-8 py-6">
|
|
18
|
+
<h1 className="text-3xl font-bold text-center text-text mb-8">
|
|
19
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_MAIN_TITLE)}
|
|
19
20
|
</h1>
|
|
20
21
|
|
|
21
22
|
<div className="space-y-6">
|
|
22
23
|
{/* 无过期时间的测试 */}
|
|
23
|
-
<div className="p-6 bg-
|
|
24
|
-
<h2 className="text-xl font-semibold text-
|
|
25
|
-
{t(
|
|
24
|
+
<div className="p-6 bg-elevated rounded-lg">
|
|
25
|
+
<h2 className="text-xl font-semibold text-text mb-4">
|
|
26
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_PERMANENT_TITLE)}
|
|
26
27
|
</h2>
|
|
27
|
-
<div className="text-
|
|
28
|
-
{template(t(
|
|
28
|
+
<div className="text-text-secondary mb-4">
|
|
29
|
+
{template(t(i18nKeys.PAGE_JSONSTORAGE_FORMAT_TITLE))({
|
|
29
30
|
key: 'testKey1',
|
|
30
31
|
min: 100,
|
|
31
32
|
max: 9000
|
|
@@ -33,16 +34,18 @@ export default function JSONStorage() {
|
|
|
33
34
|
</div>
|
|
34
35
|
|
|
35
36
|
<div className="flex flex-col items-center space-y-4">
|
|
36
|
-
<
|
|
37
|
+
<Button
|
|
38
|
+
type="primary"
|
|
37
39
|
onClick={jsonStorageController.changeRandomTestKey1}
|
|
38
|
-
className="px-6 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors duration-200"
|
|
39
40
|
>
|
|
40
|
-
{t(
|
|
41
|
-
</
|
|
41
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_SET_RANDOM)}
|
|
42
|
+
</Button>
|
|
42
43
|
|
|
43
|
-
<div className="p-4 bg-
|
|
44
|
-
<span className="text-
|
|
45
|
-
|
|
44
|
+
<div className="p-4 bg-secondary rounded-lg w-full text-center">
|
|
45
|
+
<span className="text-text-secondary">
|
|
46
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_CURRENT_VALUE)}:{' '}
|
|
47
|
+
</span>
|
|
48
|
+
<span className="font-semibold text-text">
|
|
46
49
|
{controllerState.testKey1}
|
|
47
50
|
</span>
|
|
48
51
|
</div>
|
|
@@ -50,12 +53,12 @@ export default function JSONStorage() {
|
|
|
50
53
|
</div>
|
|
51
54
|
|
|
52
55
|
{/* 带过期时间的测试 */}
|
|
53
|
-
<div className="p-6 bg-
|
|
54
|
-
<h2 className="text-xl font-semibold text-
|
|
55
|
-
{t(
|
|
56
|
+
<div className="p-6 bg-elevated rounded-lg">
|
|
57
|
+
<h2 className="text-xl font-semibold text-text mb-4">
|
|
58
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_EXPIRE_TITLE)}
|
|
56
59
|
</h2>
|
|
57
|
-
<div className="text-
|
|
58
|
-
{template(t(
|
|
60
|
+
<div className="text-text-secondary mb-4">
|
|
61
|
+
{template(t(i18nKeys.PAGE_JSONSTORAGE_FORMAT_TITLE))({
|
|
59
62
|
key: 'testKey2',
|
|
60
63
|
min: 100,
|
|
61
64
|
max: 9000
|
|
@@ -64,7 +67,7 @@ export default function JSONStorage() {
|
|
|
64
67
|
|
|
65
68
|
<div className="flex flex-col items-center space-y-4">
|
|
66
69
|
<div className="flex items-center space-x-4">
|
|
67
|
-
<
|
|
70
|
+
<Input
|
|
68
71
|
type="number"
|
|
69
72
|
value={controllerState.expireTime}
|
|
70
73
|
onChange={(e) =>
|
|
@@ -72,23 +75,27 @@ export default function JSONStorage() {
|
|
|
72
75
|
Number(e.target.value)
|
|
73
76
|
)
|
|
74
77
|
}
|
|
75
|
-
className="
|
|
78
|
+
className="w-32"
|
|
76
79
|
min="1000"
|
|
77
80
|
step="1000"
|
|
78
81
|
/>
|
|
79
|
-
<span className="text-
|
|
82
|
+
<span className="text-text-secondary">
|
|
83
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_MS)}
|
|
84
|
+
</span>
|
|
80
85
|
</div>
|
|
81
86
|
|
|
82
|
-
<
|
|
87
|
+
<Button
|
|
88
|
+
type="primary"
|
|
83
89
|
onClick={jsonStorageController.onChangeRandomTestKey2}
|
|
84
|
-
className="px-6 py-2 bg-green-500 text-white rounded-lg hover:bg-green-600 transition-colors duration-200"
|
|
85
90
|
>
|
|
86
|
-
{t(
|
|
87
|
-
</
|
|
91
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_SET_EXPIRE)}
|
|
92
|
+
</Button>
|
|
88
93
|
|
|
89
|
-
<div className="p-4 bg-
|
|
90
|
-
<span className="text-
|
|
91
|
-
|
|
94
|
+
<div className="p-4 bg-secondary rounded-lg w-full text-center">
|
|
95
|
+
<span className="text-text-secondary">
|
|
96
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_CURRENT_VALUE)}:{' '}
|
|
97
|
+
</span>
|
|
98
|
+
<span className="font-semibold text-text">
|
|
92
99
|
{controllerState.testKey2}
|
|
93
100
|
</span>
|
|
94
101
|
</div>
|
|
@@ -96,12 +103,12 @@ export default function JSONStorage() {
|
|
|
96
103
|
</div>
|
|
97
104
|
|
|
98
105
|
{/* 请求超时时间设置 */}
|
|
99
|
-
<div className="p-6 bg-
|
|
100
|
-
<h2 className="text-xl font-semibold text-
|
|
101
|
-
{t(
|
|
106
|
+
<div className="p-6 bg-elevated rounded-lg">
|
|
107
|
+
<h2 className="text-xl font-semibold text-text mb-4">
|
|
108
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_TIMEOUT_TITLE)}
|
|
102
109
|
</h2>
|
|
103
110
|
<div className="flex items-center space-x-4">
|
|
104
|
-
<
|
|
111
|
+
<Input
|
|
105
112
|
type="number"
|
|
106
113
|
value={controllerState.requestTimeout}
|
|
107
114
|
onChange={(e) =>
|
|
@@ -109,11 +116,13 @@ export default function JSONStorage() {
|
|
|
109
116
|
Number(e.target.value)
|
|
110
117
|
)
|
|
111
118
|
}
|
|
112
|
-
className="
|
|
119
|
+
className="w-32"
|
|
113
120
|
min="1000"
|
|
114
121
|
step="1000"
|
|
115
122
|
/>
|
|
116
|
-
<span className="text-
|
|
123
|
+
<span className="text-text-secondary">
|
|
124
|
+
{t(i18nKeys.PAGE_JSONSTORAGE_MS)}
|
|
125
|
+
</span>
|
|
117
126
|
</div>
|
|
118
127
|
</div>
|
|
119
128
|
</div>
|
|
@@ -5,10 +5,13 @@ import { ProcessProvider } from '@/uikit/providers/ProcessProvider';
|
|
|
5
5
|
export default function Layout() {
|
|
6
6
|
return (
|
|
7
7
|
<ProcessProvider>
|
|
8
|
-
<div
|
|
8
|
+
<div
|
|
9
|
+
data-testid="basic-layout"
|
|
10
|
+
className="text-base min-h-screen bg-primary"
|
|
11
|
+
>
|
|
9
12
|
<BaseHeader />
|
|
10
13
|
|
|
11
|
-
<div className="text-
|
|
14
|
+
<div className="text-text bg-primary">
|
|
12
15
|
<Outlet />
|
|
13
16
|
</div>
|
|
14
17
|
</div>
|