@varlet/cli 1.27.20 → 2.0.0-alpha.1663499244572

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 (232) hide show
  1. package/LICENCE +21 -21
  2. package/README.en-US.md +401 -401
  3. package/README.md +396 -396
  4. package/lib/commands/build.d.ts +1 -1
  5. package/lib/commands/build.js +18 -67
  6. package/lib/commands/changelog.d.ts +6 -6
  7. package/lib/commands/changelog.js +26 -27
  8. package/lib/commands/commitLint.d.ts +1 -1
  9. package/lib/commands/commitLint.js +50 -21
  10. package/lib/commands/compile.d.ts +7 -5
  11. package/lib/commands/compile.js +43 -119
  12. package/lib/commands/create.d.ts +8 -3
  13. package/lib/commands/create.js +90 -132
  14. package/lib/commands/dev.d.ts +5 -3
  15. package/lib/commands/dev.js +44 -123
  16. package/lib/commands/gen.d.ts +8 -1
  17. package/lib/commands/gen.js +85 -112
  18. package/lib/commands/lint.d.ts +1 -1
  19. package/lib/commands/lint.js +48 -123
  20. package/lib/commands/preview.d.ts +1 -1
  21. package/lib/commands/preview.js +23 -74
  22. package/lib/commands/release.d.ts +5 -3
  23. package/lib/commands/release.js +132 -270
  24. package/lib/commands/test.d.ts +7 -0
  25. package/lib/commands/test.js +26 -0
  26. package/lib/commands/vite.d.ts +3 -0
  27. package/lib/commands/vite.js +20 -0
  28. package/lib/compiler/compileModule.d.ts +5 -5
  29. package/lib/compiler/compileModule.js +79 -186
  30. package/lib/compiler/compileSFC.d.ts +2 -2
  31. package/lib/compiler/compileSFC.js +86 -132
  32. package/lib/compiler/compileScript.d.ts +17 -17
  33. package/lib/compiler/compileScript.js +152 -202
  34. package/lib/compiler/compileSiteEntry.d.ts +13 -13
  35. package/lib/compiler/compileSiteEntry.js +140 -237
  36. package/lib/compiler/compileStyle.d.ts +11 -11
  37. package/lib/compiler/compileStyle.js +43 -101
  38. package/lib/compiler/compileTemplateHighlight.d.ts +10 -10
  39. package/lib/compiler/compileTemplateHighlight.js +145 -193
  40. package/lib/compiler/compileTypes.d.ts +2 -2
  41. package/lib/compiler/compileTypes.js +49 -88
  42. package/lib/config/babel.config.d.ts +2 -2
  43. package/lib/config/babel.config.js +30 -31
  44. package/lib/config/babel.sfc.transform.d.ts +1 -1
  45. package/lib/config/babel.sfc.transform.js +18 -18
  46. package/lib/config/varlet.config.d.ts +1 -1
  47. package/lib/config/varlet.config.js +23 -24
  48. package/lib/config/vite.config.d.ts +5 -5
  49. package/lib/config/vite.config.js +157 -162
  50. package/lib/config/vitest.config.d.ts +2 -0
  51. package/lib/config/vitest.config.js +28 -0
  52. package/lib/index.d.ts +2 -2
  53. package/lib/index.js +84 -83
  54. package/lib/shared/constant.d.ts +44 -43
  55. package/lib/shared/constant.js +51 -50
  56. package/lib/shared/fsUtils.d.ts +12 -12
  57. package/lib/shared/fsUtils.js +61 -108
  58. package/lib/shared/logger.d.ts +8 -7
  59. package/lib/shared/logger.js +23 -20
  60. package/package.json +20 -17
  61. package/preset.js +3 -3
  62. package/site/components/button/Button.vue +106 -84
  63. package/site/components/button/button.less +183 -183
  64. package/site/components/button/index.ts +10 -10
  65. package/site/components/button/props.ts +78 -70
  66. package/site/components/cell/Cell.vue +54 -42
  67. package/site/components/cell/cell.less +78 -74
  68. package/site/components/cell/index.ts +10 -10
  69. package/site/components/cell/props.ts +27 -27
  70. package/site/components/code-example/CodeExample.vue +137 -143
  71. package/site/components/code-example/codeExample.less +41 -41
  72. package/site/components/code-example/index.ts +10 -10
  73. package/site/components/context/index.ts +21 -17
  74. package/site/components/context/lock.ts +92 -103
  75. package/site/components/context/zIndex.ts +20 -20
  76. package/site/components/icon/Icon.vue +75 -68
  77. package/site/components/icon/icon.less +26 -26
  78. package/site/components/icon/index.ts +10 -10
  79. package/site/components/icon/props.ts +24 -24
  80. package/site/components/loading/Loading.vue +84 -55
  81. package/site/components/loading/index.ts +10 -10
  82. package/site/components/loading/loading.less +505 -420
  83. package/site/components/loading/props.ts +42 -37
  84. package/site/components/popup/Popup.tsx +102 -0
  85. package/site/components/popup/index.ts +10 -0
  86. package/site/components/popup/popup.less +125 -0
  87. package/site/components/popup/props.ts +63 -0
  88. package/site/components/progress/Progress.vue +112 -108
  89. package/site/components/progress/index.ts +10 -10
  90. package/site/components/progress/progress.less +101 -98
  91. package/site/components/progress/props.ts +55 -55
  92. package/site/components/ripple/index.ts +188 -167
  93. package/site/components/ripple/ripple.less +20 -17
  94. package/site/components/snackbar/Snackbar.vue +41 -38
  95. package/site/components/snackbar/core.vue +132 -117
  96. package/site/components/snackbar/index.tsx +270 -270
  97. package/site/components/snackbar/props.ts +97 -94
  98. package/site/components/snackbar/snackbar.less +135 -135
  99. package/site/components/styles/common.less +64 -64
  100. package/site/components/styles/elevation.less +126 -126
  101. package/site/components/styles/var.less +27 -27
  102. package/site/components/utils/components.ts +117 -69
  103. package/site/components/utils/elements.ts +102 -85
  104. package/site/index.html +49 -49
  105. package/site/mobile/App.vue +291 -291
  106. package/site/mobile/components/AppHome.vue +134 -134
  107. package/site/mobile/components/AppType.vue +22 -22
  108. package/site/mobile/components/app-bar/AppBar.vue +65 -69
  109. package/site/mobile/components/app-bar/appBar.less +57 -56
  110. package/site/mobile/components/app-bar/index.ts +10 -10
  111. package/site/mobile/components/app-bar/props.ts +25 -25
  112. package/site/mobile/main.ts +78 -74
  113. package/site/mobile.html +41 -41
  114. package/site/module.d.ts +5 -5
  115. package/site/pc/App.vue +43 -43
  116. package/site/pc/Layout.vue +423 -397
  117. package/site/pc/components/AnimationBox.vue +33 -45
  118. package/site/pc/components/AppHeader.vue +368 -355
  119. package/site/pc/components/AppMobile.vue +60 -54
  120. package/site/pc/components/AppSidebar.vue +143 -134
  121. package/site/pc/components/LogoAnimation.vue +117 -119
  122. package/site/pc/floating.ts +9 -9
  123. package/site/pc/main.ts +100 -94
  124. package/site/pc/pages/index/index.less +176 -231
  125. package/site/pc/pages/index/index.vue +130 -145
  126. package/site/pc/pages/index/locale/en-US.ts +1 -5
  127. package/site/pc/pages/index/locale/zh-CN.ts +1 -5
  128. package/site/tsconfig.json +11 -11
  129. package/site/useProgress.ts +72 -75
  130. package/site/utils.ts +167 -153
  131. package/template/create/__tests__/index.spec.ejs +8 -0
  132. package/{lib/config/jest.media.mock.d.ts → template/create/docs/en-US.md} +0 -0
  133. package/{lib/config/jest.style.mock.d.ts → template/create/docs/zh-CN.md} +0 -0
  134. package/template/create/example/index.ejs +15 -0
  135. package/template/create/example/locale/en-US.ts +3 -0
  136. package/{generators/config/i18n/tsx/src/button → template/create}/example/locale/index.ts +23 -23
  137. package/template/create/example/locale/zh-CN.ts +3 -0
  138. package/template/create/index.ejs +12 -0
  139. package/template/create/less.ejs +3 -0
  140. package/template/create/props.ts +1 -0
  141. package/template/create/tsx.ejs +13 -0
  142. package/template/create/vue.ejs +17 -0
  143. package/{generators → template/generators}/base/.prettierignore +9 -9
  144. package/{generators → template/generators}/base/.prettierrc +5 -5
  145. package/{generators → template/generators}/base/README.md +82 -82
  146. package/{generators → template/generators}/base/babel.config.js +10 -10
  147. package/{generators → template/generators}/base/public/highlight.css +1 -1
  148. package/{generators → template/generators}/base/public/logo.svg +1 -1
  149. package/{generators → template/generators}/base/shims/shims-md.d.ts +4 -4
  150. package/{generators → template/generators}/base/shims/shims-vue.d.ts +6 -6
  151. package/{generators → template/generators}/base/tsconfig.json +13 -13
  152. package/{generators → template/generators}/config/default/base/docs/home.zh-CN.md +10 -10
  153. package/{generators → template/generators}/config/default/base/package.json +105 -105
  154. package/{generators/config/i18n → template/generators/config/default}/base/types/basicComponent.d.ts +7 -7
  155. package/{generators/config/i18n → template/generators/config/default}/base/types/button.d.ts +12 -12
  156. package/{generators → template/generators}/config/default/base/types/index.d.ts +6 -6
  157. package/{generators → template/generators}/config/default/base/varlet.config.js +110 -110
  158. package/{generators → template/generators}/config/default/sfc/src/button/Button.vue +30 -30
  159. package/{generators/config/default/tsx → template/generators/config/default/sfc}/src/button/__tests__/index.spec.js +7 -7
  160. package/{generators/config/default/tsx → template/generators/config/default/sfc}/src/button/button.less +14 -14
  161. package/{generators/config/default/tsx → template/generators/config/default/sfc}/src/button/docs/zh-CN.md +47 -47
  162. package/{generators → template/generators}/config/default/sfc/src/button/example/BasicUse.vue +7 -7
  163. package/{generators → template/generators}/config/default/sfc/src/button/example/ModifyColor.vue +7 -7
  164. package/{generators/config/default/tsx → template/generators/config/default/sfc}/src/button/example/index.vue +13 -13
  165. package/{generators → template/generators}/config/default/sfc/src/button/index.ts +10 -10
  166. package/{generators → template/generators}/config/default/tsx/src/button/Button.tsx +29 -31
  167. package/{generators/config/default/sfc → template/generators/config/default/tsx}/src/button/__tests__/index.spec.js +7 -7
  168. package/{generators/config/i18n → template/generators/config/default}/tsx/src/button/button.less +14 -14
  169. package/{generators/config/default/sfc → template/generators/config/default/tsx}/src/button/docs/zh-CN.md +47 -47
  170. package/{generators → template/generators}/config/default/tsx/src/button/example/BasicUse.vue +7 -7
  171. package/{generators → template/generators}/config/default/tsx/src/button/example/ModifyColor.vue +7 -7
  172. package/{generators/config/default/sfc → template/generators/config/default/tsx}/src/button/example/index.vue +13 -13
  173. package/{generators → template/generators}/config/default/tsx/src/button/index.ts +10 -10
  174. package/{generators → template/generators}/config/i18n/base/docs/home.en-US.md +11 -11
  175. package/{generators → template/generators}/config/i18n/base/docs/home.zh-CN.md +10 -10
  176. package/{generators → template/generators}/config/i18n/base/package.json +105 -105
  177. package/{generators/config/default → template/generators/config/i18n}/base/types/basicComponent.d.ts +7 -7
  178. package/{generators/config/default → template/generators/config/i18n}/base/types/button.d.ts +12 -12
  179. package/{generators → template/generators}/config/i18n/base/types/index.d.ts +7 -7
  180. package/{generators → template/generators}/config/i18n/base/types/locale.d.ts +24 -24
  181. package/{generators → template/generators}/config/i18n/base/varlet.config.js +122 -122
  182. package/{generators → template/generators}/config/i18n/sfc/src/button/Button.vue +36 -36
  183. package/{generators → template/generators}/config/i18n/sfc/src/button/__tests__/index.spec.js +7 -7
  184. package/{generators → template/generators}/config/i18n/sfc/src/button/button.less +14 -14
  185. package/{generators → template/generators}/config/i18n/sfc/src/button/docs/en-US.md +34 -34
  186. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/button/docs/zh-CN.md +34 -34
  187. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/button/example/BasicUse.vue +11 -11
  188. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/button/example/ModifyColor.vue +11 -11
  189. package/{generators → template/generators}/config/i18n/sfc/src/button/example/index.vue +13 -13
  190. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/button/example/locale/en-US.ts +5 -5
  191. package/{generators → template/generators}/config/i18n/sfc/src/button/example/locale/index.ts +23 -23
  192. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/button/example/locale/zh-CN.ts +5 -5
  193. package/{generators → template/generators}/config/i18n/sfc/src/button/index.ts +10 -10
  194. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/locale/__tests__/index.spec.js +51 -51
  195. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/locale/docs/en-US.md +26 -26
  196. package/{generators → template/generators}/config/i18n/sfc/src/locale/docs/zh-CN.md +25 -25
  197. package/{generators → template/generators}/config/i18n/sfc/src/locale/en-US.d.ts +5 -5
  198. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/locale/en-US.ts +7 -7
  199. package/{generators → template/generators}/config/i18n/sfc/src/locale/index.ts +67 -67
  200. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/locale/zh-CN.d.ts +5 -5
  201. package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/locale/zh-CN.ts +7 -7
  202. package/{generators → template/generators}/config/i18n/tsx/src/button/Button.tsx +33 -35
  203. package/{generators → template/generators}/config/i18n/tsx/src/button/__tests__/index.spec.js +7 -7
  204. package/{generators/config/default/sfc → template/generators/config/i18n/tsx}/src/button/button.less +14 -14
  205. package/{generators → template/generators}/config/i18n/tsx/src/button/docs/en-US.md +34 -34
  206. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/button/docs/zh-CN.md +34 -34
  207. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/button/example/BasicUse.vue +11 -11
  208. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/button/example/ModifyColor.vue +11 -11
  209. package/{generators → template/generators}/config/i18n/tsx/src/button/example/index.vue +13 -13
  210. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/button/example/locale/en-US.ts +5 -5
  211. package/template/generators/config/i18n/tsx/src/button/example/locale/index.ts +23 -0
  212. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/button/example/locale/zh-CN.ts +5 -5
  213. package/{generators → template/generators}/config/i18n/tsx/src/button/index.ts +10 -10
  214. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/locale/__tests__/index.spec.js +51 -51
  215. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/locale/docs/en-US.md +26 -26
  216. package/{generators → template/generators}/config/i18n/tsx/src/locale/docs/zh-CN.md +25 -25
  217. package/{generators → template/generators}/config/i18n/tsx/src/locale/en-US.d.ts +5 -5
  218. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/locale/en-US.ts +7 -7
  219. package/{generators → template/generators}/config/i18n/tsx/src/locale/index.ts +67 -67
  220. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/locale/zh-CN.d.ts +5 -5
  221. package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/locale/zh-CN.ts +7 -7
  222. package/tsconfig.json +15 -14
  223. package/varlet.default.config.js +137 -15
  224. package/lib/commands/jest.d.ts +0 -8
  225. package/lib/commands/jest.js +0 -81
  226. package/lib/config/jest.config.d.ts +0 -1
  227. package/lib/config/jest.config.js +0 -36
  228. package/lib/config/jest.media.mock.js +0 -2
  229. package/lib/config/jest.style.mock.js +0 -2
  230. package/site/mobile/components/styles/common.less +0 -64
  231. package/site/mobile/components/styles/elevation.less +0 -126
  232. package/site/mobile/components/styles/var.less +0 -27
@@ -1,145 +1,130 @@
1
- <script setup lang="ts">
2
- import AnimationBox from '../../components/AnimationBox.vue'
3
- import config from '@config'
4
- import VarSiteButton from '../../../components/button'
5
- import VarSiteIcon from '../../../components/icon'
6
- import { get } from 'lodash-es'
7
- import { ref, watch, computed } from 'vue'
8
- import { useRoute, useRouter } from 'vue-router'
9
- import { getBrowserThemes, setThemes } from '../../../utils'
10
- import { getPCLocationInfo, watchThemes } from '@varlet/cli/site/utils'
11
- import en_US from './locale/en-US'
12
- import zh_CN from './locale/zh-CN'
13
- import type { Ref, ComputedRef } from 'vue'
14
-
15
- const route = useRoute()
16
- const router = useRouter()
17
- const packs = {
18
- 'zh-CN': zh_CN,
19
- 'en-US': en_US,
20
- } as any
21
-
22
- const github = get(config, 'pc.header.github')
23
- const themesKey = get(config, 'themesKey')
24
- const currentThemes = ref(getBrowserThemes(themesKey))
25
- const darkMode: Ref<boolean> = ref(get(config, 'pc.header.darkMode'))
26
- const title: Ref<string> = ref(get(config, 'title'))
27
- const language: Ref<string> = ref(get(config, 'defaultLanguage'))
28
- const languages: Ref<Record<string, string>> = ref(get(config, 'pc.header.i18n'))
29
- const pack: Ref<Record<string, string>> = ref({})
30
-
31
- const description: ComputedRef<string> = computed(() => {
32
- const { indexPage = {} } = get(config, 'pc')
33
-
34
- return indexPage?.description?.[language.value] || pack.value.description
35
- })
36
-
37
- const started: ComputedRef<string> = computed(() => {
38
- const { indexPage = {} } = get(config, 'pc')
39
-
40
- return indexPage?.started?.[language.value] || pack.value.started
41
- })
42
-
43
- const goGithub = () => {
44
- window.open(github)
45
- }
46
-
47
- const getStar = () => {
48
- router.push(`/${language.value}/home`)
49
- }
50
-
51
- const getThemesMessage = () => ({ action: 'themesChange', from: 'pc', data: currentThemes.value })
52
-
53
- const setCurrentThemes = (themes: 'themes' | 'darkThemes') => {
54
- currentThemes.value = themes
55
- setThemes(config, currentThemes.value)
56
- window.localStorage.setItem(themesKey, currentThemes.value)
57
- }
58
-
59
- const toggleTheme = () => {
60
- setCurrentThemes(currentThemes.value === 'darkThemes' ? 'themes' : 'darkThemes')
61
- window.postMessage(getThemesMessage(), '*')
62
- ; (document.getElementById('mobile') as HTMLIFrameElement)?.contentWindow!.postMessage(getThemesMessage(), '*')
63
- }
64
-
65
- const setLocale = () => {
66
- const { language: lang } = getPCLocationInfo()
67
- if (!lang) return
68
-
69
- language.value = lang
70
- pack.value = packs[lang]
71
- document.title = get(config, 'pc.title')[lang] as string
72
- }
73
-
74
- const toggleLanguages = () => {
75
- const { language: lang } = getPCLocationInfo()
76
-
77
- const { menuName } = getPCLocationInfo()
78
- const replaceStr = `/${lang === 'zh-CN' ? 'en-US' : 'zh-CN'}/${menuName}`
79
-
80
- language.value = lang
81
- router.replace(replaceStr)
82
- }
83
-
84
- setThemes(config, currentThemes.value)
85
-
86
- window.postMessage(getThemesMessage(), '*')
87
-
88
- watchThemes((themes, from) => {
89
- from === 'mobile' && setCurrentThemes(themes)
90
- })
91
-
92
- watch(() => route.path, setLocale, { immediate: true })
93
- </script>
94
-
95
- <template>
96
- <div class="home-page">
97
- <div class="slash-box box-1"></div>
98
- <div class="slash-box box-2"></div>
99
- <div class="slash-box box-3"></div>
100
- <div class="slash-box box-4"></div>
101
- <div class="slash-box box-5"></div>
102
- <div class="profile-container">
103
- <div class="container-box">
104
- <div class="description-container">
105
- <animation-box class="logo-box" />
106
- <div class="base-title">{{ title }}</div>
107
- </div>
108
- <div class="base-description">{{ description }}</div>
109
-
110
- <div class="button-group">
111
- <var-site-button class="common-button github-button" block @click="goGithub">
112
- <div class="block-button-content">
113
- <span>GITHUB</span>
114
- <var-site-icon style="margin-left: 10px" name="github" size="24px" />
115
- </div>
116
- </var-site-button>
117
- <var-site-button class="common-button extra-button margin-left" text v-if="darkMode" @click="toggleTheme">
118
- <var-site-icon size="24px" :name="currentThemes === 'themes' ? 'white-balance-sunny' : 'weather-night'" />
119
- </var-site-button>
120
- </div>
121
-
122
- <div class="button-group">
123
- <var-site-button type="primary" class="common-button primary-button" block @click="getStar">
124
- <div class="block-button-content">
125
- <span>{{ started }}</span>
126
- <var-site-icon style="margin-left: 10px; transform: rotate(-90deg)" name="arrow-down" size="24px" />
127
- </div>
128
- </var-site-button>
129
- <var-site-button
130
- class="common-button extra-button margin-left"
131
- text
132
- v-if="languages"
133
- @click="toggleLanguages"
134
- >
135
- <var-site-icon name="translate" size="24px" />
136
- </var-site-button>
137
- </div>
138
- </div>
139
- </div>
140
- </div>
141
- </template>
142
-
143
- <style lang="less" scoped>
144
- @import './index';
145
- </style>
1
+ <script setup lang="ts">
2
+ import AnimationBox from '../../components/AnimationBox.vue'
3
+ import config from '@config'
4
+ import { get } from 'lodash-es'
5
+ import { ref, watch } from 'vue'
6
+ import { useRoute, useRouter } from 'vue-router'
7
+ import { getBrowserTheme, setTheme, Theme } from "../../../utils";
8
+ import { getPCLocationInfo, watchTheme } from '@varlet/cli/site/utils'
9
+ import type { Ref } from 'vue'
10
+
11
+ const route = useRoute()
12
+ const router = useRouter()
13
+
14
+ const github = get(config, 'pc.header.github')
15
+ const currentTheme = ref(getBrowserTheme())
16
+ const darkMode: Ref<boolean> = ref(get(config, 'pc.header.darkMode'))
17
+ const title: Ref<string> = ref(get(config, 'title'))
18
+ const language: Ref<string> = ref(get(config, 'defaultLanguage'))
19
+ const languages: Ref<Record<string, string>> = ref(get(config, 'pc.header.i18n'))
20
+ const indexPage: Ref<Record<string, any>> = get(config, 'pc.indexPage')
21
+
22
+ const goGithub = () => {
23
+ window.open(github)
24
+ }
25
+
26
+ const getStar = () => {
27
+ router.push(`/${language.value}/home`)
28
+ }
29
+
30
+ const getThemeMessage = () => ({ action: 'theme-change', from: 'pc', data: currentTheme.value })
31
+
32
+ const setCurrentTheme = (theme: Theme) => {
33
+ currentTheme.value = theme
34
+ setTheme(config, currentTheme.value)
35
+ window.localStorage.setItem(get(config, 'themeKey'), currentTheme.value)
36
+ }
37
+
38
+ const toggleTheme = () => {
39
+ setCurrentTheme(currentTheme.value === 'darkTheme' ? 'lightTheme' : 'darkTheme')
40
+ window.postMessage(getThemeMessage(), '*')
41
+ ;(document.getElementById('mobile') as HTMLIFrameElement)?.contentWindow!.postMessage(getThemeMessage(), '*')
42
+ }
43
+
44
+ const setLocale = () => {
45
+ const { language: lang } = getPCLocationInfo()
46
+ if (!lang) return
47
+
48
+ language.value = lang
49
+ document.title = get(config, 'pc.title')[lang] as string
50
+ }
51
+
52
+ const toggleLanguages = () => {
53
+ const { language: lang } = getPCLocationInfo()
54
+
55
+ const { menuName } = getPCLocationInfo()
56
+ const replaceStr = `/${lang === 'zh-CN' ? 'en-US' : 'zh-CN'}/${menuName}`
57
+
58
+ language.value = lang
59
+ router.replace(replaceStr)
60
+ }
61
+
62
+ setTheme(config, currentTheme.value)
63
+
64
+ window.postMessage(getThemeMessage(), '*')
65
+
66
+ watchTheme((theme, from) => {
67
+ from === 'mobile' && setCurrentTheme(theme)
68
+ })
69
+
70
+ watch(() => route.path, setLocale, { immediate: true })
71
+ </script>
72
+
73
+ <template>
74
+ <div class="varlet-doc-index">
75
+ <div class="varlet-doc-index__layout">
76
+ <div class="varlet-doc-index__logo-container">
77
+ <div class="varlet-doc-index__logo-background-mask"></div>
78
+ <animation-box class="varlet-doc-index__logo" />
79
+ </div>
80
+
81
+ <div class="varlet-doc-index__title">{{ title }}</div>
82
+ <div class="varlet-doc-index__description">{{ indexPage.description[language] }}</div>
83
+ <div class="varlet-doc-index__link-button-group">
84
+ <var-button class="varlet-doc-index__link-button" text outline @click="goGithub">
85
+ <var-icon name="github" size="24px" />
86
+ </var-button>
87
+ <var-button class="varlet-doc-index__link-button" text outline v-if="darkMode" @click="toggleTheme">
88
+ <var-icon size="24px" :name="currentTheme === 'lightTheme' ? 'white-balance-sunny' : 'weather-night'" />
89
+ </var-button>
90
+ <var-button
91
+ class="varlet-doc-index__link-button"
92
+ text
93
+ outline
94
+ v-if="languages"
95
+ @click="toggleLanguages"
96
+ >
97
+ <var-icon name="translate" size="24px" />
98
+ </var-button>
99
+ <var-button class="varlet-doc-index__link-button" type="primary" style="line-height: 1.2" @click="getStar">
100
+ <span class="varlet-doc-index__link-button-text">{{ indexPage.started[language] }}</span>
101
+ <var-icon style="transform: rotate(-90deg)" name="arrow-down" size="24px" />
102
+ </var-button>
103
+ </div>
104
+
105
+ <div class="varlet-doc-index__features" v-if="indexPage.features">
106
+ <div class="varlet-doc-index__feature" v-for="feature in indexPage.features">
107
+ <div class="varlet-doc-index__feature-name">{{ feature.name[language] }}</div>
108
+ <div class="varlet-doc-index__feature-description">{{ feature.description[language] }}</div>
109
+ </div>
110
+ </div>
111
+
112
+ <div class="varlet-doc-index__contributors" v-if="indexPage.contributors">
113
+ <div class="varlet-doc-index__contributors-title">{{ indexPage.contributors.label[language] }}</div>
114
+
115
+ <a class="varlet-doc-index__contributors-link" :href="indexPage.contributors.link">
116
+ <img class="varlet-doc-index__contributors-image" :src="indexPage.contributors.image">
117
+ </a>
118
+ </div>
119
+
120
+ <div class="varlet-doc-index__footer">
121
+ <div class="varlet-doc-index__license">{{ indexPage.license[language] }}</div>
122
+ <div class="varlet-doc-index__copyright">{{ indexPage.copyright[language] }}</div>
123
+ </div>
124
+ </div>
125
+ </div>
126
+ </template>
127
+
128
+ <style lang="less" scoped>
129
+ @import './index';
130
+ </style>
@@ -1,5 +1 @@
1
- export default {
2
- started: 'GET STARTED',
3
- description: 'Varlet is a Material design mobile component library developed based on Vue3, developed and maintained by partners in the community. ' +
4
- 'Support Typescript, import on demand, dark mode, theme customization, internationalization, and provide VSCode plugin to ensure a good development experience',
5
- }
1
+ // this file used to generate route path ('/en-US/index')
@@ -1,5 +1 @@
1
- export default {
2
- started: '起步',
3
- description: 'Varlet 是一个基于 Vue3 开发的 Material 风格移动端组件库,' +
4
- '全面拥抱 Vue3 生态,由社区团队维护。支持 Typescript、按需引入、暗黑模式、主题定制、国际化,并提供 VSCode 插件保障良好的开发体验',
5
- }
1
+ // this file used to generate route path ('/zh-CN/index')
@@ -1,11 +1,11 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es5",
4
- "strict": true,
5
- "downlevelIteration": true,
6
- "skipLibCheck": true,
7
- "esModuleInterop": true,
8
- "jsx": "preserve",
9
- "lib": ["esnext", "dom"]
10
- }
11
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es5",
4
+ "strict": true,
5
+ "downlevelIteration": true,
6
+ "skipLibCheck": true,
7
+ "esModuleInterop": true,
8
+ "jsx": "preserve",
9
+ "lib": ["esnext", "dom"]
10
+ }
11
+ }
@@ -1,75 +1,72 @@
1
- import Progress from './components/progress'
2
- import { reactive } from 'vue'
3
- import config from '@config'
4
- import { getBrowserThemes, mountInstance, watchThemes } from './utils'
5
- import { get } from 'lodash-es'
6
-
7
- function getColor(themes?: 'themes' | 'darkThemes') {
8
- const themesKey = get(config, 'themesKey')
9
-
10
- return get(config, `${themes ?? getBrowserThemes(themesKey)}.color-progress`)
11
- }
12
-
13
- function getTrackColor(themes?: 'themes' | 'darkThemes') {
14
- const themesKey = get(config, 'themesKey')
15
-
16
- return get(config, `${themes ?? getBrowserThemes(themesKey)}.color-progress-track`)
17
- }
18
-
19
- export function useProgress() {
20
- let timer: number
21
- let currentThemes: 'themes' | 'darkThemes'
22
- const trackColor = getTrackColor()
23
- const color = getColor()
24
-
25
- const props = reactive({
26
- style: {
27
- position: 'fixed',
28
- width: '100%',
29
- left: 0,
30
- top: 0,
31
- zIndex: 10086,
32
- },
33
- trackColor,
34
- color,
35
- lineWidth: 3,
36
- value: 0,
37
- })
38
-
39
- watchThemes((themes) => {
40
- currentThemes = themes
41
- props.trackColor = getTrackColor(themes)
42
- props.color = props.value === 100 ? getTrackColor(themes) : getColor(themes)
43
- }, false)
44
-
45
- const changeValue = () => {
46
- timer = window.setTimeout(() => {
47
- if (props.value >= 95) return
48
- let num = Math.random()
49
-
50
- if (props.value < 70) num = Math.round(5 * Math.random())
51
-
52
- props.value += num
53
- changeValue()
54
- }, 200)
55
- }
56
-
57
- const start = () => {
58
- props.value = 0
59
- setTimeout(() => (props.color = getColor(currentThemes)), 200)
60
- changeValue()
61
- }
62
-
63
- const end = () => {
64
- props.value = 100
65
- setTimeout(() => (props.color = getTrackColor(currentThemes)), 300)
66
- window.clearTimeout(timer)
67
- }
68
-
69
- mountInstance(Progress, props)
70
-
71
- return {
72
- start,
73
- end,
74
- }
75
- }
1
+ import Progress from './components/progress'
2
+ import config from '@config'
3
+ import { reactive } from 'vue'
4
+ import { getBrowserTheme, mountInstance, Theme, watchTheme } from "./utils";
5
+ import { get } from 'lodash-es'
6
+
7
+ function getColor(theme?: Theme) {
8
+ return get(config, `${theme ?? getBrowserTheme()}.color-progress`)
9
+ }
10
+
11
+ function getTrackColor(theme?: Theme) {
12
+ return get(config, `${theme ?? getBrowserTheme()}.color-progress-track`)
13
+ }
14
+
15
+ export function useProgress() {
16
+ let timer: number
17
+ let currentTheme: Theme
18
+
19
+ const trackColor = getTrackColor()
20
+ const color = getColor()
21
+
22
+ const props = reactive({
23
+ style: {
24
+ position: 'fixed',
25
+ width: '100%',
26
+ left: 0,
27
+ top: 0,
28
+ zIndex: 10086,
29
+ },
30
+ trackColor,
31
+ color,
32
+ lineWidth: 3,
33
+ value: 0,
34
+ })
35
+
36
+ watchTheme((theme) => {
37
+ currentTheme = theme
38
+ props.trackColor = getTrackColor(theme)
39
+ props.color = props.value === 100 ? getTrackColor(theme) : getColor(theme)
40
+ }, false)
41
+
42
+ const changeValue = () => {
43
+ timer = window.setTimeout(() => {
44
+ if (props.value >= 95) return
45
+ let num = Math.random()
46
+
47
+ if (props.value < 70) num = Math.round(5 * Math.random())
48
+
49
+ props.value += num
50
+ changeValue()
51
+ }, 200)
52
+ }
53
+
54
+ const start = () => {
55
+ props.value = 0
56
+ setTimeout(() => (props.color = getColor(currentTheme)), 200)
57
+ changeValue()
58
+ }
59
+
60
+ const end = () => {
61
+ props.value = 100
62
+ setTimeout(() => (props.color = getTrackColor(currentTheme)), 300)
63
+ window.clearTimeout(timer)
64
+ }
65
+
66
+ mountInstance(Progress, props)
67
+
68
+ return {
69
+ start,
70
+ end,
71
+ }
72
+ }