zmp-cli 3.15.6 → 3.15.8

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 (225) hide show
  1. package/README.md +37 -0
  2. package/build/index.js +1 -184
  3. package/config/index.js +1 -44
  4. package/create/index.js +1 -230
  5. package/create/utils/generate-app-config.js +1 -34
  6. package/create/utils/generate-npm-scripts.js +1 -26
  7. package/create/utils/get-options.js +1 -204
  8. package/create/utils/npm-scripts.js +1 -62
  9. package/deploy/index.js +1 -149
  10. package/deploy/utils/get-options.js +1 -69
  11. package/deploy/utils/request-upload.js +1 -34
  12. package/deploy/utils/upload-app.js +1 -82
  13. package/index.js +1 -319
  14. package/login/index.js +1 -169
  15. package/login/utils/get-options.js +1 -58
  16. package/login/utils/zalo-login.js +1 -32
  17. package/migrate/icons/update-icon-v3.js +1 -19
  18. package/migrate/index.js +1 -60
  19. package/migrate/utils/get-options.js +1 -46
  20. package/migrate/utils/migrate-react.js +1 -33
  21. package/package.json +13 -40
  22. package/start/frame/index.html +264 -254
  23. package/start/index.js +1 -382
  24. package/sync/index-to-app-config.js +1 -146
  25. package/sync/index.js +1 -55
  26. package/utils/axios.js +1 -15
  27. package/utils/check-update.js +1 -53
  28. package/utils/constants.js +1 -20
  29. package/utils/env.js +1 -39
  30. package/utils/error.js +1 -16
  31. package/utils/find-files-by-ext.js +1 -27
  32. package/utils/find-free-port.js +1 -11
  33. package/utils/fs-extra.js +1 -90
  34. package/utils/generate-pages-map.js +1 -17
  35. package/utils/get-app-info.js +1 -22
  36. package/utils/get-current-project.js +1 -25
  37. package/utils/get-ip.js +1 -19
  38. package/utils/log.js +1 -19
  39. package/utils/node-blob.js +1 -106
  40. package/utils/resumable.d.js +1 -0
  41. package/utils/resumable.js +1 -1204
  42. package/utils/spinner.js +1 -25
  43. package/utils/tunnel.js +1 -36
  44. package/.editorconfig +0 -15
  45. package/.eslintignore +0 -8
  46. package/.eslintrc.js +0 -10
  47. package/.vscode/launch.json +0 -23
  48. package/LICENSE +0 -21
  49. package/README.git.md +0 -37
  50. package/assets/index.js +0 -147
  51. package/build/dist/index.dev.js +0 -217
  52. package/config/dist/index.dev.js +0 -48
  53. package/create/init-zmp-ui.js +0 -216
  54. package/create/templates/app-parameters.js +0 -33
  55. package/create/templates/common/css/icons.css +0 -60
  56. package/create/templates/common/icons/512x512.png +0 -0
  57. package/create/templates/common/icons/apple-touch-icon.png +0 -0
  58. package/create/templates/common/icons/favicon.png +0 -0
  59. package/create/templates/common/postcss.config.js +0 -5
  60. package/create/templates/common/splash-2732x2732.png +0 -0
  61. package/create/templates/common/tailwind/postcss.config.js +0 -5
  62. package/create/templates/common/tailwind/tailwind.config.js +0 -9
  63. package/create/templates/common/tailwind/tailwind.css +0 -3
  64. package/create/templates/common/webpack/build.js +0 -41
  65. package/create/templates/copy-assets.js +0 -158
  66. package/create/templates/core/babel.config.js +0 -11
  67. package/create/templates/core/copy-assets.js +0 -83
  68. package/create/templates/core/generate-home-page.js +0 -143
  69. package/create/templates/core/generate-root.js +0 -283
  70. package/create/templates/core/generate-routes.js +0 -155
  71. package/create/templates/core/generate-scripts.js +0 -94
  72. package/create/templates/core/pages/404.html +0 -20
  73. package/create/templates/core/pages/about.html +0 -26
  74. package/create/templates/core/pages/catalog.html +0 -40
  75. package/create/templates/core/pages/dynamic-route.html +0 -115
  76. package/create/templates/core/pages/form.html +0 -258
  77. package/create/templates/core/pages/left-page-1.html +0 -24
  78. package/create/templates/core/pages/left-page-2.html +0 -23
  79. package/create/templates/core/pages/product.html +0 -36
  80. package/create/templates/core/pages/request-and-load.html +0 -35
  81. package/create/templates/core/pages/settings.html +0 -252
  82. package/create/templates/create-folders.js +0 -30
  83. package/create/templates/dist/generate-styles.dev.js +0 -46
  84. package/create/templates/generate-config-xml.js +0 -18
  85. package/create/templates/generate-index.js +0 -49
  86. package/create/templates/generate-manifest.js +0 -49
  87. package/create/templates/generate-recoil.js +0 -56
  88. package/create/templates/generate-routes.js +0 -16
  89. package/create/templates/generate-scripts.js +0 -16
  90. package/create/templates/generate-service-worker.js +0 -126
  91. package/create/templates/generate-store.js +0 -88
  92. package/create/templates/generate-styles.js +0 -110
  93. package/create/templates/generate-webpack-config.js +0 -335
  94. package/create/templates/generate-zmp-custom.js +0 -81
  95. package/create/templates/react/babel.config.js +0 -12
  96. package/create/templates/react/components/app-items.jsx +0 -44
  97. package/create/templates/react/components/navbar-back.jsx +0 -25
  98. package/create/templates/react/components/user-card.jsx +0 -18
  99. package/create/templates/react/copy-assets.js +0 -85
  100. package/create/templates/react/dist/generate-scripts.dev.js +0 -23
  101. package/create/templates/react/generate-home-page.js +0 -111
  102. package/create/templates/react/generate-root.js +0 -84
  103. package/create/templates/react/generate-routes.js +0 -16
  104. package/create/templates/react/generate-scripts.js +0 -68
  105. package/create/templates/react/pages/404.js +0 -27
  106. package/create/templates/react/pages/about.js +0 -52
  107. package/create/templates/react/pages/catalog.js +0 -112
  108. package/create/templates/react/pages/dynamic-route.js +0 -80
  109. package/create/templates/react/pages/form.js +0 -152
  110. package/create/templates/react/pages/index copy.js +0 -17
  111. package/create/templates/react/pages/index.js +0 -17
  112. package/create/templates/react/pages/settings.js +0 -76
  113. package/create/templates/react/pages/user.js +0 -56
  114. package/create/templates/react/vite.config.js +0 -11
  115. package/create/templates/react-typescript/_tsconfig.json +0 -33
  116. package/create/templates/react-typescript/components/app-items.js +0 -53
  117. package/create/templates/react-typescript/components/index.js +0 -9
  118. package/create/templates/react-typescript/components/navbar-back.js +0 -40
  119. package/create/templates/react-typescript/components/user-card.js +0 -32
  120. package/create/templates/react-typescript/copy-assets.js +0 -94
  121. package/create/templates/react-typescript/dist/generate-scripts.dev.js +0 -23
  122. package/create/templates/react-typescript/generate-home-page.js +0 -113
  123. package/create/templates/react-typescript/generate-root.js +0 -81
  124. package/create/templates/react-typescript/generate-routes.js +0 -12
  125. package/create/templates/react-typescript/generate-scripts.js +0 -67
  126. package/create/templates/react-typescript/pages/404.js +0 -27
  127. package/create/templates/react-typescript/pages/about.js +0 -52
  128. package/create/templates/react-typescript/pages/catalog.js +0 -112
  129. package/create/templates/react-typescript/pages/dynamic-route.js +0 -80
  130. package/create/templates/react-typescript/pages/form.js +0 -152
  131. package/create/templates/react-typescript/pages/index.js +0 -17
  132. package/create/templates/react-typescript/pages/settings.js +0 -76
  133. package/create/templates/react-typescript/pages/user.js +0 -56
  134. package/create/templates/react-typescript/vite.config.js +0 -21
  135. package/create/templates/svelte/babel.config.js +0 -10
  136. package/create/templates/svelte/copy-assets.js +0 -47
  137. package/create/templates/svelte/generate-home-page.js +0 -158
  138. package/create/templates/svelte/generate-root.js +0 -235
  139. package/create/templates/svelte/generate-routes.js +0 -91
  140. package/create/templates/svelte/generate-scripts.js +0 -47
  141. package/create/templates/svelte/pages/404.svelte +0 -10
  142. package/create/templates/svelte/pages/about.svelte +0 -16
  143. package/create/templates/svelte/pages/catalog.svelte +0 -31
  144. package/create/templates/svelte/pages/dynamic-route.svelte +0 -34
  145. package/create/templates/svelte/pages/form.svelte +0 -175
  146. package/create/templates/svelte/pages/left-page-1.svelte +0 -13
  147. package/create/templates/svelte/pages/left-page-2.svelte +0 -12
  148. package/create/templates/svelte/pages/product.svelte +0 -21
  149. package/create/templates/svelte/pages/request-and-load.svelte +0 -21
  150. package/create/templates/svelte/pages/settings.svelte +0 -175
  151. package/create/templates/vue/babel.config.js +0 -10
  152. package/create/templates/vue/components/header.vue +0 -28
  153. package/create/templates/vue/components/sun-and-moon.vue +0 -34
  154. package/create/templates/vue/copy-assets.js +0 -67
  155. package/create/templates/vue/generate-home-page.js +0 -56
  156. package/create/templates/vue/generate-root.js +0 -50
  157. package/create/templates/vue/generate-routes.js +0 -7
  158. package/create/templates/vue/generate-scripts.js +0 -63
  159. package/create/templates/vue/global-components.d.ts +0 -121
  160. package/create/templates/vue/icons/moon.svg +0 -3
  161. package/create/templates/vue/icons/sun.svg +0 -3
  162. package/create/templates/vue/pages/404.vue +0 -12
  163. package/create/templates/vue/pages/about.vue +0 -15
  164. package/create/templates/vue/pages/catalog.vue +0 -39
  165. package/create/templates/vue/pages/dynamic-route.vue +0 -34
  166. package/create/templates/vue/pages/form.vue +0 -162
  167. package/create/templates/vue/pages/left-page-1.vue +0 -14
  168. package/create/templates/vue/pages/left-page-2.vue +0 -11
  169. package/create/templates/vue/pages/product.vue +0 -31
  170. package/create/templates/vue/pages/request-and-load.vue +0 -25
  171. package/create/templates/vue/pages/settings.vue +0 -18
  172. package/create/templates/vue/vite.config.js +0 -11
  173. package/create/templates/zaui/_tsconfig.json +0 -33
  174. package/create/templates/zaui/babel.config.js +0 -12
  175. package/create/templates/zaui/components/user-card.jsx +0 -16
  176. package/create/templates/zaui/copy-assets.js +0 -90
  177. package/create/templates/zaui/generate-home-page.js +0 -117
  178. package/create/templates/zaui/generate-root.js +0 -53
  179. package/create/templates/zaui/generate-routes.js +0 -10
  180. package/create/templates/zaui/generate-scripts.js +0 -39
  181. package/create/templates/zaui/generate-user-card.js +0 -55
  182. package/create/templates/zaui/pages/about.js +0 -129
  183. package/create/templates/zaui/pages/form.js +0 -123
  184. package/create/templates/zaui/pages/index.js +0 -9
  185. package/create/templates/zaui/pages/user.js +0 -109
  186. package/create/templates/zaui/vite.config.js +0 -11
  187. package/create/utils/colors.js +0 -94
  188. package/create/utils/dist/get-options.dev.js +0 -277
  189. package/create/utils/generate-gitignore.js +0 -43
  190. package/create/utils/generate-package-json.js +0 -132
  191. package/create/utils/generate-readme.js +0 -28
  192. package/create/utils/indent.js +0 -31
  193. package/create/utils/string.js +0 -13
  194. package/create/utils/styles-extension.js +0 -9
  195. package/create/utils/template-if.js +0 -9
  196. package/deploy/dist/index.dev.js +0 -227
  197. package/deploy/utils/dist/request-upload.dev.js +0 -62
  198. package/deploy/utils/dist/upload-app.dev.js +0 -113
  199. package/dist/bundle.js +0 -1
  200. package/dist/index.dev.js +0 -352
  201. package/jsconfig.json +0 -8
  202. package/login/dist/index.dev.js +0 -223
  203. package/login/utils/dist/zalo-login.dev.js +0 -41
  204. package/screenshots/wellcome.jpg +0 -0
  205. package/show-qr-app/assets/css/style.css +0 -87
  206. package/show-qr-app/assets/js/qrcode.min.js +0 -1
  207. package/show-qr-app/index.html +0 -57
  208. package/show-qr-app/package.json +0 -14
  209. package/start/dist/index.dev.js +0 -312
  210. package/start/generate-hr-config.js +0 -59
  211. package/ui/server.js +0 -194
  212. package/ui/www/css/app.css +0 -1
  213. package/ui/www/css/app.css.map +0 -1
  214. package/ui/www/fonts/ZMPIcons-Regular.eot +0 -0
  215. package/ui/www/fonts/ZMPIcons-Regular.ttf +0 -0
  216. package/ui/www/fonts/ZMPIcons-Regular.woff +0 -0
  217. package/ui/www/fonts/ZMPIcons-Regular.woff2 +0 -0
  218. package/ui/www/images/logo.png +0 -0
  219. package/ui/www/index.html +0 -1
  220. package/ui/www/js/app.js +0 -3
  221. package/ui/www/js/app.js.LICENSE.txt +0 -20
  222. package/ui/www/js/app.js.map +0 -1
  223. package/ui/www/static/icons/apple-touch-icon.png +0 -0
  224. package/ui/www/static/icons/favicon.png +0 -0
  225. package/utils/dist/get-app-info.dev.js +0 -54
@@ -1,152 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- module.exports = (options) => {
4
- const { template } = options;
5
- const hideNavBar =
6
- template === 'tabs'
7
- ? `onPageBeforeIn={()=>{
8
- //hide navbar
9
- zmp.toolbar.hide('#app-tab-bar')
10
- }}`
11
- : '';
12
-
13
- if (options.stateManagement === 'recoil') {
14
- return indent(
15
- 0,
16
- `
17
- import React from 'react';
18
- import { Button, Card, Input, Page, Box, zmp } from 'zmp-framework/react';
19
- import { useRecoilState } from 'recoil';
20
- import { userState } from '../state';
21
- import NavbarBack from '../components/navbar-back';
22
-
23
- const FormPage = () => {
24
- const [user, setUser] = useRecoilState(userState)
25
-
26
- const [form, setForm] = React.useState({ ...user });
27
- const toast = React.useRef(null)
28
-
29
- const handleChangeInput = (field, value) => {
30
- setForm({ ...form, [field]: value })
31
- }
32
-
33
- const handleSubmit = () => {
34
- if (!toast.current) {
35
- toast.current = zmp.toast.create({
36
- text: 'Saved',
37
- position: 'bottom',
38
- closeTimeout: 2000,
39
- })
40
- }
41
- setUser(form);
42
- toast.current.open()
43
- }
44
-
45
- return (
46
- <Page
47
- name="user-form"
48
- ${hideNavBar}
49
- >
50
- <NavbarBack title="Update user info" />
51
- <Box>
52
- <Card inset>
53
- <Input
54
- id="name"
55
- label="Name"
56
- type="text"
57
- placeholder="Zalo"
58
- value={form?.name}
59
- onChange={(e) => handleChangeInput('name', e.target.value)}
60
- />
61
- <Input
62
- label="Avatar"
63
- type="text"
64
- placeholder="zalo@zalo.me"
65
- value={form?.avatar}
66
- onChange={(e) => handleChangeInput('avatar', e.target.value)}
67
- />
68
- <Box mx="0" mt="4">
69
- <Button responsive typeName="primary" onClick={handleSubmit}>
70
- Submit
71
- </Button>
72
- </Box>
73
- </Card>
74
- </Box>
75
- </Page>
76
- )
77
- }
78
-
79
- export default FormPage;
80
- `
81
- ).trim();
82
- }
83
-
84
- return indent(
85
- 0,
86
- `
87
- import React from 'react';
88
- import { Button, Card, Input, Page, useStore, zmp, Box } from 'zmp-framework/react';
89
- import NavbarBack from '../components/navbar-back';
90
-
91
- import store from '../store'
92
-
93
- const FormPage = () => {
94
- const user = useStore('user')
95
-
96
- const [form, setForm] = React.useState({ ...user });
97
- const toast = React.useRef(null)
98
-
99
- const handleChangeInput = (field, value) => {
100
- setForm({ ...form, [field]: value })
101
- }
102
-
103
- const handleSubmit = () => {
104
- if (!toast.current) {
105
- toast.current = zmp.toast.create({
106
- text: 'Saved',
107
- position: 'bottom',
108
- closeTimeout: 2000,
109
- })
110
- }
111
- store.dispatch('setUser', form)
112
- toast.current.open()
113
- }
114
-
115
- return (
116
- <Page
117
- name="user-form"
118
- ${hideNavBar}
119
- >
120
- <NavbarBack title="Update user info" />
121
- <Box>
122
- <Card inset>
123
- <Input
124
- id="name"
125
- label="Name"
126
- type="text"
127
- placeholder="Zalo"
128
- value={form?.name}
129
- onChange={(e) => handleChangeInput('name', e.target.value)}
130
- />
131
- <Input
132
- label="Avatar"
133
- type="text"
134
- placeholder="zalo@zalo.me"
135
- value={form?.avatar}
136
- onChange={(e) => handleChangeInput('avatar', e.target.value)}
137
- />
138
- <Box mx="0" mt="4">
139
- <Button responsive typeName="primary" onClick={handleSubmit}>
140
- Submit
141
- </Button>
142
- </Box>
143
- </Card>
144
- </Box>
145
- </Page>
146
- )
147
- }
148
-
149
- export default FormPage;
150
- `
151
- ).trim();
152
- };
@@ -1,17 +0,0 @@
1
- const copyUser = require('./user');
2
- const copyForm = require('./form');
3
- const copyDynamicRoute = require('./dynamic-route');
4
- const copyAbout = require('./about');
5
- const copy404 = require('./404');
6
- const copySettings = require('./settings');
7
- const copyCatalog = require('./catalog');
8
-
9
- module.exports = {
10
- copyUser,
11
- copyForm,
12
- copyDynamicRoute,
13
- copyAbout,
14
- copy404,
15
- copySettings,
16
- copyCatalog,
17
- };
@@ -1,17 +0,0 @@
1
- const copyUser = require('./user');
2
- const copyForm = require('./form');
3
- const copyDynamicRoute = require('./dynamic-route');
4
- const copyAbout = require('./about');
5
- const copy404 = require('./404');
6
- const copySettings = require('./settings');
7
- const copyCatalog = require('./catalog');
8
-
9
- module.exports = {
10
- copyUser,
11
- copyForm,
12
- copyDynamicRoute,
13
- copyAbout,
14
- copy404,
15
- copySettings,
16
- copyCatalog,
17
- };
@@ -1,76 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- // eslint-disable-next-line no-unused-vars
4
- module.exports = (options) => {
5
- if (options.stateManagement === 'recoil') {
6
- return indent(
7
- 0,
8
- `
9
- import React from "react";
10
- import { useRecoilValue } from 'recoil';
11
- import {
12
- Page,
13
- List,
14
- ListItem,
15
- Title,
16
- Box
17
- } from "zmp-framework/react";
18
- import UserCard from "../components/user-card";
19
- import { userState } from '../state'
20
-
21
- const SettingsPage = () => {
22
- const user = useRecoilValue(userState);
23
-
24
- return (
25
- <Page name="settings">
26
- <Box m="0" p="4">
27
- <Title>Settings</Title>
28
- <List className="m-0">
29
- <ListItem link="/user/">
30
- <UserCard user={user} />
31
- </ListItem>
32
- </List>
33
- </Box>
34
- </Page>
35
- );
36
- };
37
-
38
- export default SettingsPage;
39
- `
40
- ).trim();
41
- }
42
- return indent(
43
- 0,
44
- `
45
- import React from "react";
46
- import {
47
- Page,
48
- List,
49
- ListItem,
50
- useStore,
51
- Title,
52
- Box
53
- } from "zmp-framework/react";
54
- import UserCard from "../components/user-card";
55
-
56
- const SettingsPage = () => {
57
- const user = useStore("user");
58
-
59
- return (
60
- <Page name="settings">
61
- <Box m="0" p="4">
62
- <Title>Settings</Title>
63
- <List className="m-0">
64
- <ListItem link="/user/">
65
- <UserCard user={user} />
66
- </ListItem>
67
- </List>
68
- </Box>
69
- </Page>
70
- );
71
- };
72
-
73
- export default SettingsPage;
74
- `
75
- ).trim();
76
- };
@@ -1,56 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- module.exports = (options) => {
4
- const { template, stateManagement } = options;
5
- const hideNavBar =
6
- template === 'tabs'
7
- ? `
8
- onPageBeforeIn={()=>{
9
- //hide navbar
10
- zmp.toolbar.hide('#app-tab-bar')
11
- }}`
12
- : '';
13
- const modules = ['Avatar', 'List', 'ListItem', 'Page', 'Title'];
14
- if (stateManagement === 'store') {
15
- modules.push('useStore');
16
- }
17
- if (template === 'tabs') {
18
- modules.push('zmp');
19
- }
20
- return indent(
21
- 0,
22
- `
23
- import React from 'react'
24
- import { ${modules.join(', ')} } from 'zmp-framework/react'
25
- import NavbarBack from '../components/navbar-back'${stateManagement === 'recoil' ? `
26
- import { useRecoilValue } from 'recoil';
27
- import { userState } from '../state';` : ''}
28
-
29
- const UserPage = () => {
30
- ${stateManagement === 'recoil' ? 'const user = useRecoilValue(userState);' : `const user = useStore('user')`}
31
-
32
- return (
33
- <Page
34
- name="user"${hideNavBar}
35
- >
36
- <NavbarBack
37
- title="User info"
38
- linkRight="/form"
39
- labelRight="Edit"
40
- />
41
- <div style={{ textAlign: 'center', marginTop: 32 }}>
42
- <Avatar story online src={user.avatar.startsWith('http') ? user.avatar : null}>{user.avatar}</Avatar>
43
- <Title style={{ marginTop: 8 }}>{user.name}</Title>
44
- </div>
45
- <List>
46
- <ListItem title="Display name" after={user.name} />
47
- <ListItem title="ID" after={user.id} />
48
- </List>
49
- </Page>
50
- )
51
- }
52
-
53
- export default UserPage;
54
- `
55
- ).trim();
56
- };
@@ -1,11 +0,0 @@
1
- import { defineConfig } from 'vite'
2
- import reactRefresh from '@vitejs/plugin-react-refresh'
3
-
4
- // https://vitejs.dev/config/
5
- export default () => {
6
- return defineConfig({
7
- root: './src',
8
- base: '',
9
- plugins: [reactRefresh()],
10
- })
11
- }
@@ -1,33 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "noEmit": true,
4
- "target": "es6",
5
- "module": "esnext",
6
- "noImplicitAny": false,
7
- "preserveConstEnums": true,
8
- "jsx": "react",
9
- "lib": ["dom", "es5", "es6", "es7", "es2017"],
10
- "allowSyntheticDefaultImports": true,
11
- "esModuleInterop": true,
12
- "allowJs": true,
13
- "skipLibCheck": true,
14
- "declaration": false,
15
- "emitDecoratorMetadata": true,
16
- "experimentalDecorators": true,
17
- "forceConsistentCasingInFileNames": true,
18
- "moduleResolution": "node",
19
- "noEmitOnError": true,
20
- "noFallthroughCasesInSwitch": true,
21
- "noImplicitReturns": true,
22
- "noImplicitThis": true,
23
- "noUnusedLocals": false,
24
- "strict": true,
25
- "strictFunctionTypes": false,
26
- "pretty": true,
27
- "removeComments": true,
28
- "sourceMap": true,
29
- "resolveJsonModule": true
30
- },
31
- "exclude": ["node_modules"],
32
- "include": ["src"]
33
- }
@@ -1,53 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- module.exports = (options) => {
4
- return indent(
5
- 0,
6
- `
7
- import React from 'react';
8
- import { Icon, Grid, GridItem, ToastPreloader } from 'zmp-framework/react';
9
-
10
- const AppItems = () => {
11
- const [toastLoading, setToastLoading] = React.useState(false);
12
- const items = [
13
- { icon: 'zi-chat-solid', label: 'Chat' },
14
- { icon: 'zi-photo-solid', label: 'Photo' },
15
- { icon: 'zi-star-solid', label: 'Star' },
16
- { icon: 'zi-more-diamond-solid', label: 'Apps' },
17
- { icon: 'zi-video-solid', label: 'Video' },
18
- { icon: 'zi-shield-solid', label: 'Shield' },
19
- { icon: 'zi-heart-solid', label: 'Heart' },
20
- { icon: 'zi-calendar-solid', label: 'Calendar' },
21
- ]
22
-
23
- const openToastLoading = () => {
24
- setToastLoading(true);
25
- setTimeout(() => {
26
- setToastLoading(false);
27
- }, 2000);
28
- };
29
-
30
- return (
31
- <div>
32
- <ToastPreloader visible={toastLoading} text="Loading..." />
33
- <Grid columns={4}>
34
- {items.map(item => (
35
- <GridItem
36
- label={item.label}
37
- style={{ backgroundColor: 'var(--zmp-color-w300)' }}
38
- key={item.icon}
39
- icon={<Icon zmp={item.icon as any} />}
40
- onClick={openToastLoading}
41
- />
42
- ))}
43
- </Grid>
44
- </div>
45
- )
46
- }
47
-
48
- AppItems.displayName = 'zmp-app-items'
49
-
50
- export default AppItems
51
- `
52
- ).trim();
53
- };
@@ -1,9 +0,0 @@
1
- const copyAppItems = require('./app-items');
2
- const copyNavbarBack = require('./navbar-back');
3
- const copyUserCard = require('./user-card');
4
-
5
- module.exports = {
6
- copyAppItems,
7
- copyNavbarBack,
8
- copyUserCard,
9
- };
@@ -1,40 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- module.exports = (options) => {
4
- return indent(
5
- 0,
6
- `
7
- import React from 'react';
8
- import { Link, Navbar, NavLeft, Icon, NavTitle, NavRight } from 'zmp-framework/react';
9
-
10
- interface NavBarProps {
11
- title?: string,
12
- linkRight?: string,
13
- labelRight?: string
14
- }
15
-
16
- const NavbarBack: React.FunctionComponent<NavBarProps> = ({ title, linkRight, labelRight }) => {
17
- return (
18
- <Navbar>
19
- <NavLeft >
20
- <Link className="no-ripple" noLinkClass back>
21
- <Icon zmp="zi-arrow-left" />
22
- </Link>
23
- </NavLeft>
24
- <NavTitle>{title}</NavTitle>
25
- {linkRight && labelRight && (
26
- <NavRight>
27
- <Link href={linkRight} className="no-ripple" noLinkClass>{labelRight}</Link>
28
- </NavRight>
29
- )}
30
- </Navbar>
31
- )
32
- }
33
-
34
- NavbarBack.displayName = 'zmp-navbar';
35
-
36
-
37
- export default NavbarBack;
38
- `
39
- ).trim();
40
- };
@@ -1,32 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- module.exports = (options) => {
4
- return indent(
5
- 0,
6
- `
7
- import React from 'react';
8
- import { Avatar, Title } from 'zmp-framework/react';
9
- import { userInfo } from 'zmp-sdk';
10
-
11
- interface UserProps {
12
- user: userInfo
13
- }
14
-
15
- const UserCard: React.FunctionComponent<UserProps> = ({ user }) => {
16
- return (
17
- <div style={{ display: 'flex', width: '100%' }}>
18
- <Avatar story online src={user.avatar.startsWith('http') ? user.avatar : null}>{user.avatar}</Avatar>
19
- <div style={{ marginLeft: 16 }}>
20
- <Title style={{ marginBottom: 0 }}>{user.name}</Title>
21
- <div>{user.id}</div>
22
- </div>
23
- </div>
24
- )
25
- };
26
-
27
- UserCard.displayName = 'zmp-user-card'
28
-
29
- export default UserCard;
30
- `
31
- ).trim();
32
- };
@@ -1,94 +0,0 @@
1
- const path = require('path');
2
- const generateHomePage = require('./generate-home-page');
3
- const generateRoot = require('./generate-root');
4
- const generateStore = require('../generate-store');
5
- const generateRecoil = require('../generate-recoil');
6
- const copyComponents = require('./components');
7
- const copyPages = require('./pages');
8
- const copyViteConfig = require('./vite.config');
9
-
10
- module.exports = (options) => {
11
- const cwd = options.cwd || process.cwd();
12
- const { template, stateManagement } = options;
13
- const toCopy = [];
14
-
15
- // Copy Pages
16
- let pages = [];
17
- if (template !== 'blank')
18
- pages.push(
19
- ...[
20
- { fileName: '404', content: 'copy404' },
21
- { fileName: 'about', content: 'copyAbout' },
22
- { fileName: 'dynamic-route', content: 'copyDynamicRoute' },
23
- { fileName: 'user', content: 'copyUser' },
24
- { fileName: 'form', content: 'copyForm' },
25
- ]
26
- );
27
- if (template === 'tabs') {
28
- pages.push(
29
- ...[
30
- { fileName: 'catalog', content: 'copyCatalog' },
31
- { fileName: 'settings', content: 'copySettings' },
32
- ]
33
- );
34
- }
35
-
36
- pages.forEach(({ fileName, content }) => {
37
- const dest = path.resolve(cwd, 'src', 'pages', `${fileName}.tsx`);
38
- toCopy.push({
39
- content: copyPages[content](options),
40
- to: dest,
41
- });
42
- });
43
- toCopy.push({
44
- content: generateHomePage(options),
45
- to: path.resolve(cwd, 'src', 'pages', 'index.tsx'),
46
- });
47
-
48
- // Copy compoents
49
- const components = [
50
- ...(template !== 'blank'
51
- ? [
52
- { fileName: 'app-items', content: 'copyAppItems' },
53
- { fileName: 'navbar-back', content: 'copyNavbarBack' },
54
- { fileName: 'user-card', content: 'copyUserCard' },
55
- ]
56
- : []),
57
- ];
58
- components.forEach(({ fileName, content }) => {
59
- const dest = path.resolve(cwd, 'src', 'components', `${fileName}.tsx`);
60
- toCopy.push({
61
- content: copyComponents[content](options),
62
- to: dest,
63
- });
64
- });
65
-
66
- toCopy.push({
67
- content: generateRoot(options),
68
- to: path.resolve(cwd, 'src', 'components', 'app.tsx'),
69
- });
70
-
71
- if (stateManagement === 'recoil') {
72
- toCopy.push({
73
- content: generateRecoil(options),
74
- to: path.resolve(cwd, 'src', 'state.ts'),
75
- });
76
- } else {
77
- toCopy.push({
78
- content: generateStore(options),
79
- to: path.resolve(cwd, 'src', 'store.ts'),
80
- });
81
- }
82
-
83
- toCopy.push({
84
- content: copyViteConfig(options),
85
- to: path.resolve(cwd, 'vite.config.ts'),
86
- });
87
-
88
- toCopy.push({
89
- from: path.resolve(__dirname, '_tsconfig.json'),
90
- to: path.resolve(cwd, 'tsconfig.json'),
91
- });
92
-
93
- return toCopy;
94
- };
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- var templateIf = require('../../utils/template-if');
4
-
5
- var indent = require('../../utils/indent');
6
-
7
- var stylesExtension = require('../../utils/styles-extension');
8
-
9
- module.exports = function (options) {
10
- var cssPreProcessor = options.cssPreProcessor,
11
- theming = options.theming,
12
- customBuild = options.customBuild,
13
- includeTailwind = options.includeTailwind;
14
- var scripts = '';
15
- scripts += indent(0, "\n // Import React and ReactDOM\n import React from 'react';\n import { createRoot } from 'react-dom/client';\n\n // Import ZMP\n import ZMP from '".concat(customBuild ? './zmp-custom.js' : 'zmp-framework/core/lite-bundle', "';\n\n // Import ZMP-React Plugin\n import ZMPReact from 'zmp-framework/react';").concat(includeTailwind ? "\n\n // Import tailwind styles\n import './css/tailwind.css';\n " : '', "\n\n // Import ZMP Styles\n ").concat(templateIf(customBuild, function () {
16
- return "\n import './css/zmp-custom.less';\n ";
17
- }, function () {
18
- return "\n import 'zmp-framework/".concat(theming.useUiKits ? 'zmp-bundle.min.css' : 'zmp.min.css', "';\n ");
19
- }), "\n\n // Import Icons and App Custom Styles\n ").concat(templateIf(theming.iconFonts, function () {
20
- return "\n import './css/icons.css';\n ";
21
- }), "\n import './css/app.").concat(stylesExtension(cssPreProcessor), "';\n\n // Import App Component\n import App from './components/app';\n import appConfig from '../app-config.json';\n\n if (!(window as any).APP_CONFIG) {\n (window as any).APP_CONFIG = appConfig\n }\n\n // Init ZMP React Plugin\n ZMP.use(ZMPReact)\n\n // Mount React App\n const root = createRoot(document.getElementById('app')!);\n root.render(React.createElement(App));\n "));
22
- return scripts.trim();
23
- };