@varlet/cli 3.16.0-alpha.1778310023051 → 3.16.0-alpha.1778498431663

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.
@@ -68,6 +68,7 @@ export interface VarletConfigPcIndexPage {
68
68
  features?: {
69
69
  name: Record<string, string>;
70
70
  description: Record<string, string>;
71
+ link?: Record<string, string>;
71
72
  }[];
72
73
  teamMembers?: {
73
74
  label: Record<string, string>;
@@ -43,6 +43,10 @@ export default defineConfig({
43
43
  'zh-CN': '提供 60+ 个高质量通用组件',
44
44
  'en-US': 'Provide 60+ high quality general purpose components',
45
45
  },
46
+ link: {
47
+ 'zh-CN': '/zh-CN/button',
48
+ 'en-US': '/en-US/button',
49
+ },
46
50
  },
47
51
  {
48
52
  name: {
@@ -53,15 +57,23 @@ export default defineConfig({
53
57
  'zh-CN': '每一个组件都可单独引入,并有着良好的 tree-shaking 优化',
54
58
  'en-US': 'Each component can be imported separately and has good tree-shaking optimization',
55
59
  },
60
+ link: {
61
+ 'zh-CN': '/zh-CN/importOnDemand',
62
+ 'en-US': '/en-US/importOnDemand',
63
+ },
56
64
  },
57
65
  {
58
66
  name: {
59
- 'zh-CN': '主题定制',
60
- 'en-US': 'Theme customization',
67
+ 'zh-CN': '多设计系统支持',
68
+ 'en-US': 'Multi-design system support',
61
69
  },
62
70
  description: {
63
- 'zh-CN': '内置亮色和暗色两种主题,支持组件的样式自定义',
64
- 'en-US': 'Built-in light and dark themes, support style customization of components',
71
+ 'zh-CN': '同时支持 MD2 与 MD3 两种设计系统,并覆盖明暗两套主题模式',
72
+ 'en-US': 'Supports both MD2 and MD3 design systems, each with light and dark theme modes',
73
+ },
74
+ link: {
75
+ 'zh-CN': '/zh-CN/themes',
76
+ 'en-US': '/en-US/themes',
65
77
  },
66
78
  },
67
79
  {
@@ -73,11 +85,15 @@ export default defineConfig({
73
85
  'zh-CN': '内置国际化 API,内置中文和英文的语言包',
74
86
  'en-US': 'Built-in i18n API, which supports both Chinese and English languages by default',
75
87
  },
88
+ link: {
89
+ 'zh-CN': '/zh-CN/locale',
90
+ 'en-US': '/en-US/locale',
91
+ },
76
92
  },
77
93
  {
78
94
  name: {
79
- 'zh-CN': '支持 Typescript',
80
- 'en-US': 'Support typescript',
95
+ 'zh-CN': 'Typescript 友好',
96
+ 'en-US': 'Typescript-friendly',
81
97
  },
82
98
  description: {
83
99
  'zh-CN': '使用 Typescript 构建,提供良好的组件类型系统',
@@ -93,15 +109,23 @@ export default defineConfig({
93
109
  'zh-CN': '对服务端渲染支持良好,并对 Nuxt 进行了适配',
94
110
  'en-US': 'Good support for server-side rendering and adaptation to Nuxt',
95
111
  },
112
+ link: {
113
+ 'zh-CN': '/zh-CN/serverSideRendering',
114
+ 'en-US': '/en-US/serverSideRendering',
115
+ },
96
116
  },
97
117
  {
98
118
  name: {
99
- 'zh-CN': '国人开发',
100
- 'en-US': 'Developed by Chinese',
119
+ 'zh-CN': '多端支持',
120
+ 'en-US': 'Cross-platform support',
101
121
  },
102
122
  description: {
103
- 'zh-CN': '由国人开发,完善的中英文文档和后勤保障',
104
- 'en-US': 'Complete Chinese and English documentation and logistics support',
123
+ 'zh-CN': '同时支持移动端与桌面端场景,组件能力覆盖多端界面开发',
124
+ 'en-US': 'Supports both mobile and desktop scenarios, with component coverage for multi-platform UI development',
125
+ },
126
+ link: {
127
+ 'zh-CN': '/zh-CN/browserAdaptation',
128
+ 'en-US': '/en-US/browserAdaptation',
105
129
  },
106
130
  },
107
131
  {
@@ -113,15 +137,9 @@ export default defineConfig({
113
137
  'zh-CN': '支持在 webstorm,vscode 中的组件语法高亮, 并提供 vscode 插件为开发提升效率',
114
138
  'en-US': 'Supports to highlight the component syntax for webstorm and vscode, and provides a separate helper plugin for vscode',
115
139
  },
116
- },
117
- {
118
- name: {
119
- 'zh-CN': '组件库快速成型工具',
120
- 'en-US': 'Component library toolchain',
121
- },
122
- description: {
123
- 'zh-CN': '开源了搭建本组件库的所有工具链,提供快速开发组件库的能力',
124
- 'en-US': 'Open-sourced the toolchain for building this component library, providing the ability to rapidly develop the component library',
140
+ link: {
141
+ 'zh-CN': '/zh-CN/extension',
142
+ 'en-US': '/en-US/extension',
125
143
  },
126
144
  },
127
145
  ],
@@ -545,7 +563,7 @@ export default defineConfig({
545
563
  'color-body': '#fff',
546
564
  'color-index-page-background': '#fff',
547
565
  'color-index-page-get-started-button': '#3a7afe',
548
- 'color-index-page-logo-mask-background': 'linear-gradient(-45deg, #8baff8 50%, #84e0ff 50%)',
566
+ 'color-index-page-logo-mask-background': 'linear-gradient(-45deg, rgba(255, 168, 214, 0.9) 0%, rgba(220, 170, 255, 0.92) 45%, rgba(132, 205, 255, 0.98) 100%)',
549
567
  'color-index-page-second-text-color': 'rgba(60, 60, 60, .7)',
550
568
  'color-index-page-divider-color': '#ddd',
551
569
  'card-border-radius': '12px',
@@ -590,8 +608,9 @@ export default defineConfig({
590
608
  darkTheme: {
591
609
  'color-body': '#121212',
592
610
  'color-index-page-background': '#1e1e1e',
611
+ 'color-index-page-get-started-button': '#4a7afe',
593
612
  'color-index-page-feature-background': '#303030',
594
- 'color-index-page-logo-mask-background': 'linear-gradient(-45deg, #729dfc 50%, #6859f4 50%)',
613
+ 'color-index-page-logo-mask-background': 'linear-gradient(-45deg, rgba(188, 122, 255, 0.44) 0%, rgba(151, 119, 255, 0.47) 46%, rgba(84, 132, 255, 0.58) 100%)',
595
614
  'color-index-page-second-text-color': 'rgba(255, 255, 255, .75)',
596
615
  'color-index-page-divider-color': 'rgba(84, 84, 84, .8)',
597
616
  'card-border-radius': '12px',
@@ -635,9 +654,10 @@ export default defineConfig({
635
654
  },
636
655
  md3LightTheme: {
637
656
  'color-body': '#fff',
638
- 'color-index-page-background': '#fff',
657
+ 'color-index-page-background': '#FEF7FF',
658
+ 'color-index-page-get-started-button': '#6750A4',
639
659
  'color-index-page-feature-background': '#fff',
640
- 'color-index-page-logo-mask-background': 'linear-gradient(-45deg, #8baff8 50%, #84e0ff 50%)',
660
+ 'color-index-page-logo-mask-background': 'linear-gradient(-45deg, rgba(255, 168, 214, 0.9) 0%, rgba(220, 170, 255, 0.92) 45%, rgba(132, 205, 255, 0.98) 100%)',
641
661
  'color-index-page-second-text-color': 'rgba(60, 60, 60, .7)',
642
662
  'color-index-page-divider-color': '#ddd',
643
663
  'card-border-radius': '12px',
@@ -681,9 +701,10 @@ export default defineConfig({
681
701
  },
682
702
  md3DarkTheme: {
683
703
  'color-body': '#050505',
684
- 'color-index-page-background': '#1e1e1e',
685
- 'color-index-page-feature-background': '#303030',
686
- 'color-index-page-logo-mask-background': 'linear-gradient(-45deg, #729dfc 50%, #6859f4 50%)',
704
+ 'color-index-page-background': '#141218',
705
+ 'color-index-page-get-started-button': '#D0BCFF',
706
+ 'color-index-page-feature-background': '#1c1b1d',
707
+ 'color-index-page-logo-mask-background': 'linear-gradient(-45deg, rgba(188, 122, 255, 0.44) 0%, rgba(151, 119, 255, 0.47) 46%, rgba(84, 132, 255, 0.58) 100%)',
687
708
  'color-index-page-second-text-color': 'rgba(255, 255, 255, .75)',
688
709
  'color-index-page-divider-color': 'rgba(84, 84, 84, .8)',
689
710
  'card-border-radius': '12px',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varlet/cli",
3
- "version": "3.16.0-alpha.1778310023051",
3
+ "version": "3.16.0-alpha.1778498431663",
4
4
  "description": "cli of varlet",
5
5
  "keywords": [
6
6
  "cli",
@@ -56,8 +56,8 @@
56
56
  "typescript": "5.6.3",
57
57
  "vite-plus": "0.1.18",
58
58
  "vue": "3.5.21",
59
- "@varlet/shared": "3.16.0-alpha.1778310023051",
60
- "@varlet/vite-plugins": "3.16.0-alpha.1778310023051"
59
+ "@varlet/shared": "3.16.0-alpha.1778498431663",
60
+ "@varlet/vite-plugins": "3.16.0-alpha.1778498431663"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/babel__core": "^7.20.1",
@@ -69,9 +69,9 @@
69
69
  "@types/node": "^20.19.0",
70
70
  "@types/sharp": "0.31.1",
71
71
  "rimraf": "^5.0.1",
72
- "@varlet/icons": "3.16.0-alpha.1778310023051",
73
- "@varlet/touch-emulator": "3.16.0-alpha.1778310023051",
74
- "@varlet/ui": "3.16.0-alpha.1778310023051"
72
+ "@varlet/icons": "3.16.0-alpha.1778498431663",
73
+ "@varlet/touch-emulator": "3.16.0-alpha.1778498431663",
74
+ "@varlet/ui": "3.16.0-alpha.1778498431663"
75
75
  },
76
76
  "peerDependencies": {
77
77
  "@vitest/coverage-istanbul": "4.1.4",
@@ -82,9 +82,9 @@
82
82
  "live-server": "^1.2.1",
83
83
  "vue": "3.5.21",
84
84
  "vue-router": "4.5.1",
85
- "@varlet/icons": "3.16.0-alpha.1778310023051",
86
- "@varlet/touch-emulator": "3.16.0-alpha.1778310023051",
87
- "@varlet/ui": "3.16.0-alpha.1778310023051"
85
+ "@varlet/icons": "3.16.0-alpha.1778498431663",
86
+ "@varlet/touch-emulator": "3.16.0-alpha.1778498431663",
87
+ "@varlet/ui": "3.16.0-alpha.1778498431663"
88
88
  },
89
89
  "engines": {
90
90
  "node": "^14.18.0 || >=16.0.0"
@@ -1,11 +1,17 @@
1
1
  <script setup lang="ts">
2
- import { ref, watch, type Ref } from 'vue'
2
+ import { computed, ref, watch, type Ref } from 'vue'
3
3
  import config from '@config'
4
4
  import { getBrowserTheme, getPCLocationInfo, onThemeChange, setTheme, watchTheme, type Theme } from '@varlet/cli/client'
5
5
  import { useRoute, useRouter } from 'vue-router'
6
6
  import AppAd from '../../components/AppAd.vue'
7
7
  import AppHeader from '../../components/AppHeader.vue'
8
8
 
9
+ type IndexFeature = {
10
+ name?: Record<string, string>
11
+ description?: Record<string, string>
12
+ link?: Record<string, string>
13
+ }
14
+
9
15
  const route = useRoute()
10
16
  const router = useRouter()
11
17
  const currentTheme = ref(getBrowserTheme())
@@ -13,6 +19,11 @@ const github = config?.pc?.header?.github
13
19
  const title: Ref<string> = ref(config?.title)
14
20
  const language: Ref<string> = ref(config?.defaultLanguage)
15
21
  const indexPage: Ref<Record<string, any>> = ref(config?.pc?.indexPage)
22
+ const teamTitle = () => indexPage.value?.teamMembers?.label?.[language.value]
23
+ const contributorsTitle = () => indexPage.value?.contributors?.label?.[language.value]
24
+ const sponsorsTitle = () => indexPage.value?.sponsors?.label?.[language.value]
25
+ const indexCardVariant = computed(() => (currentTheme.value === 'md3DarkTheme' ? 'standard' : 'filled'))
26
+ const indexCardSurface = computed(() => (currentTheme.value === 'md3DarkTheme' ? 'low' : undefined))
16
27
 
17
28
  const getStar = () => {
18
29
  router.push(`/${language.value}/home`)
@@ -38,6 +49,23 @@ const setLocale = () => {
38
49
  document.title = config?.pc.title[lang] as string
39
50
  }
40
51
 
52
+ const getFeatureLink = (feature: IndexFeature) => feature.link?.[language.value]
53
+
54
+ const toFeature = (feature: IndexFeature) => {
55
+ const link = getFeatureLink(feature)
56
+
57
+ if (!link) {
58
+ return
59
+ }
60
+
61
+ if (/^https?:\/\//.test(link)) {
62
+ window.open(link)
63
+ return
64
+ }
65
+
66
+ router.push(link)
67
+ }
68
+
41
69
  const to = (url: string) => {
42
70
  window.open(url)
43
71
  }
@@ -47,10 +75,14 @@ setTheme(currentTheme.value)
47
75
  window.postMessage(getThemeMessage(), '*')
48
76
 
49
77
  watchTheme((theme, from) => {
50
- from === 'mobile' && setCurrentTheme(theme)
78
+ if (from !== 'default') {
79
+ setCurrentTheme(theme)
80
+ }
51
81
  })
52
82
 
53
- onThemeChange()
83
+ onThemeChange((theme) => {
84
+ currentTheme.value = theme
85
+ })
54
86
 
55
87
  watch(
56
88
  () => route.path,
@@ -66,359 +98,535 @@ watch(
66
98
  <div class="varlet-doc-index">
67
99
  <app-ad :language="language" />
68
100
  <app-header :language="language" />
101
+
69
102
  <div class="varlet-doc-index__layout">
70
- <div class="varlet-doc-index__main-container">
71
- <div class="varlet-doc-index__logo-container">
72
- <div class="varlet-doc-index__logo-background-mask"></div>
73
- <img class="varlet-doc-index__logo" :src="config.logo" alt="" />
74
- </div>
75
- <div class="varlet-doc-index__info-container">
76
- <div class="varlet-doc-index__title">{{ title }}</div>
77
- <div class="varlet-doc-index__description">{{ indexPage.description[language] }}</div>
103
+ <section class="varlet-doc-index__hero">
104
+ <div class="varlet-doc-index__hero-content">
105
+ <h1 class="varlet-doc-index__title">{{ title }}</h1>
106
+ <p class="varlet-doc-index__description">{{ indexPage.description[language] }}</p>
78
107
 
79
- <var-space size="large">
80
- <var-button class="varlet-doc-index__link-button" type="primary" style="line-height: 1.2" @click="getStar">
108
+ <div class="varlet-doc-index__actions">
109
+ <var-button class="varlet-doc-index__link-button" type="primary" @click="getStar">
81
110
  {{ indexPage.started[language] }}
82
111
  </var-button>
83
- <var-button class="varlet-doc-index__github-button" style="line-height: 1.2" @click="toGithub">
112
+ <var-button class="varlet-doc-index__github-button" type="primary" text outline @click="toGithub">
84
113
  {{ indexPage.viewOnGithub[language] }}
85
114
  </var-button>
86
- </var-space>
115
+ </div>
87
116
  </div>
88
- </div>
89
117
 
90
- <div class="varlet-doc-index__features" v-if="indexPage.features">
91
- <div class="varlet-doc-index__feature" v-for="feature in indexPage.features">
92
- <div class="varlet-doc-index__feature-name">{{ feature.name[language] }}</div>
93
- <div class="varlet-doc-index__feature-description">{{ feature.description[language] }}</div>
94
- </div>
95
- </div>
96
-
97
- <div class="varlet-doc-index__team-members" v-if="indexPage.teamMembers">
98
- <div class="varlet-doc-index__team-members-title">{{ indexPage.teamMembers.label[language] }}</div>
99
-
100
- <div class="varlet-doc-index__team-members-container">
101
- <div class="varlet-doc-index__team-member" v-for="member in indexPage.teamMembers.members">
102
- <img class="varlet-doc-index__team-member-avatar" :src="member.avatar" />
103
- <div class="varlet-doc-index__team-member-name">{{ member.name[language] }}</div>
104
- <div class="varlet-doc-index__team-member-title">{{ member.title[language] }}</div>
105
- <div class="varlet-doc-index__team-member-description">{{ member.description[language] }}</div>
106
- <div class="varlet-doc-index__team-member-social">
107
- <var-icon
108
- class="varlet-doc-index__team-member-social-icon"
109
- name="github"
110
- :size="24"
111
- @click="to(member.github)"
112
- v-if="member.github"
113
- />
114
- <var-icon
115
- class="varlet-doc-index__team-member-social-icon"
116
- name="twitter"
117
- :size="24"
118
- @click="to(member.twitter)"
119
- v-if="member.twitter"
120
- />
118
+ <div class="varlet-doc-index__hero-side">
119
+ <div class="varlet-doc-index__hero-logo-stage">
120
+ <div class="varlet-doc-index__hero-brand-mark">
121
+ <div class="varlet-doc-index__hero-logo-background-mask"></div>
122
+ <img class="varlet-doc-index__hero-logo" :src="config.logo" alt="" />
121
123
  </div>
122
124
  </div>
123
125
  </div>
124
- </div>
126
+ </section>
127
+
128
+ <section class="varlet-doc-index__section" v-if="indexPage.features?.length">
129
+ <div class="varlet-doc-index__features">
130
+ <var-card
131
+ class="varlet-doc-index__feature"
132
+ :variant="indexCardVariant"
133
+ :surface="indexCardSurface"
134
+ :hoverable="!!getFeatureLink(feature)"
135
+ :elevation="false"
136
+ v-for="feature in indexPage.features"
137
+ @click="toFeature(feature)"
138
+ >
139
+ <div class="varlet-doc-index__feature-name">{{ feature.name[language] }}</div>
140
+ <div class="varlet-doc-index__feature-description">{{ feature.description[language] }}</div>
141
+ </var-card>
142
+ </div>
143
+ </section>
144
+
145
+ <section class="varlet-doc-index__section" v-if="indexPage.teamMembers">
146
+ <div class="varlet-doc-index__section-header">
147
+ <div class="varlet-doc-index__section-divider">
148
+ <span class="varlet-doc-index__section-divider-text">{{ teamTitle() }}</span>
149
+ </div>
150
+ </div>
125
151
 
126
- <div class="varlet-doc-index__contributors" v-if="indexPage.contributors">
127
- <div class="varlet-doc-index__contributors-title">{{ indexPage.contributors.label[language] }}</div>
152
+ <div class="varlet-doc-index__team-members">
153
+ <var-card
154
+ class="varlet-doc-index__team-member"
155
+ :variant="indexCardVariant"
156
+ :surface="indexCardSurface"
157
+ :elevation="false"
158
+ v-for="member in indexPage.teamMembers.members"
159
+ >
160
+ <div class="varlet-doc-index__team-member-main">
161
+ <img class="varlet-doc-index__team-member-avatar" :src="member.avatar" />
162
+
163
+ <div class="varlet-doc-index__team-member-copy">
164
+ <div class="varlet-doc-index__team-member-name">{{ member.name[language] }}</div>
165
+ <div class="varlet-doc-index__team-member-title">{{ member.title[language] }}</div>
166
+ <div class="varlet-doc-index__team-member-description">{{ member.description[language] }}</div>
167
+
168
+ <div class="varlet-doc-index__team-member-social">
169
+ <var-button
170
+ class="varlet-doc-index__team-member-social-button"
171
+ text
172
+ round
173
+ v-if="member.github"
174
+ @click="to(member.github)"
175
+ >
176
+ <var-icon name="github" :size="22" />
177
+ </var-button>
178
+ <var-button
179
+ class="varlet-doc-index__team-member-social-button"
180
+ text
181
+ round
182
+ v-if="member.twitter"
183
+ @click="to(member.twitter)"
184
+ >
185
+ <var-icon name="twitter" :size="22" />
186
+ </var-button>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </var-card>
191
+ </div>
192
+ </section>
128
193
 
129
- <a class="varlet-doc-index__contributors-link" :href="indexPage.contributors.link">
130
- <img class="varlet-doc-index__contributors-image" :src="indexPage.contributors.image" />
194
+ <section class="varlet-doc-index__section" v-if="indexPage.contributors">
195
+ <div class="varlet-doc-index__section-header">
196
+ <div class="varlet-doc-index__section-divider">
197
+ <span class="varlet-doc-index__section-divider-text">{{ contributorsTitle() }}</span>
198
+ </div>
199
+ </div>
200
+
201
+ <a class="varlet-doc-index__image-link" :href="indexPage.contributors.link">
202
+ <var-card class="varlet-doc-index__image-panel" :variant="indexCardVariant" :surface="indexCardSurface" :elevation="false">
203
+ <img class="varlet-doc-index__contributors-image" :src="indexPage.contributors.image" />
204
+ </var-card>
131
205
  </a>
132
- </div>
206
+ </section>
133
207
 
134
- <div class="varlet-doc-index__sponsors" v-if="indexPage.sponsors">
135
- <div class="varlet-doc-index__sponsors-title">{{ indexPage.sponsors.label[language] }}</div>
208
+ <section class="varlet-doc-index__section" v-if="indexPage.sponsors">
209
+ <div class="varlet-doc-index__section-header">
210
+ <div class="varlet-doc-index__section-divider">
211
+ <span class="varlet-doc-index__section-divider-text">{{ sponsorsTitle() }}</span>
212
+ </div>
213
+ </div>
136
214
 
137
- <a class="varlet-doc-index__sponsors-link" :href="indexPage.sponsors.link">
138
- <img class="varlet-doc-index__sponsors-image" :src="indexPage.sponsors.image" />
215
+ <a class="varlet-doc-index__image-link" :href="indexPage.sponsors.link">
216
+ <var-card class="varlet-doc-index__image-panel" :variant="indexCardVariant" :surface="indexCardSurface" :elevation="false">
217
+ <img class="varlet-doc-index__sponsors-image" :src="indexPage.sponsors.image" />
218
+ </var-card>
139
219
  </a>
140
- </div>
220
+ </section>
141
221
 
142
- <div class="varlet-doc-index__footer">
222
+ <div class="varlet-doc-index__footer-divider" aria-hidden="true"></div>
223
+
224
+ <footer class="varlet-doc-index__footer">
143
225
  <div class="varlet-doc-index__license">{{ indexPage.license[language] }}</div>
144
226
  <div class="varlet-doc-index__copyright">{{ indexPage.copyright[language] }}</div>
145
- </div>
227
+ </footer>
146
228
  </div>
147
229
  </div>
148
230
  </template>
149
231
 
150
232
  <style lang="less">
151
- @keyframes logo-wave {
152
- 0% {
153
- transform: translate(8%, 8%);
154
- }
233
+ .varlet-doc-index {
234
+ position: relative;
235
+ display: flex;
236
+ flex-direction: column;
237
+ align-items: center;
238
+ width: 100%;
239
+ min-height: 100vh;
240
+ overflow-x: hidden;
241
+ background: var(--site-config-color-index-page-background);
155
242
 
156
- 20% {
157
- transform: translate(-8%, 8%);
243
+ .varlet-site-header {
244
+ background: var(--site-config-color-index-page-background);
158
245
  }
159
246
 
160
- 40% {
161
- transform: translate(-8%, -8%);
247
+ &__layout {
248
+ width: 100%;
249
+ max-width: 1240px;
250
+ padding: 56px 32px 60px;
251
+ box-sizing: border-box;
162
252
  }
163
253
 
164
- 60% {
165
- transform: translate(-2%, 8%);
254
+ &__hero {
255
+ display: grid;
256
+ grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
257
+ gap: 36px;
258
+ align-items: center;
166
259
  }
167
260
 
168
- 80% {
169
- transform: translate(8%, -8%);
261
+ &__hero-content {
262
+ display: flex;
263
+ flex-direction: column;
264
+ align-items: flex-start;
265
+ padding-top: 8px;
170
266
  }
171
267
 
172
- 100% {
173
- transform: translate(8%, 8%);
268
+ &__title {
269
+ margin: 0;
270
+ max-width: 720px;
271
+ color: var(--site-config-color-index-page-get-started-button);
272
+ font-size: 76px;
273
+ line-height: 0.95;
274
+ font-weight: 780;
275
+ letter-spacing: -0.03em;
174
276
  }
175
- }
176
277
 
177
- .varlet-doc-index {
178
- position: relative;
179
- display: flex;
180
- flex-direction: column;
181
- align-items: center;
182
- min-height: 100vh;
183
- box-sizing: border-box;
184
- background: var(--site-config-color-index-page-background);
185
- padding-bottom: 100px;
186
- min-width: 1200px;
278
+ &__description {
279
+ max-width: 640px;
280
+ margin: 22px 0 0;
281
+ color: var(--site-config-color-index-page-second-text-color);
282
+ font-size: 18px;
283
+ line-height: 1.75;
284
+ }
187
285
 
188
- &__layout {
286
+ &__actions {
189
287
  display: flex;
190
- flex-direction: column;
191
- align-items: center;
192
- padding: 170px 0;
193
- max-width: 1200px;
194
- transition: all 0.2s;
288
+ flex-wrap: wrap;
289
+ gap: 12px;
290
+ margin-top: 30px;
195
291
  }
196
292
 
197
- &__main-container {
198
- display: flex;
293
+ &__link-button,
294
+ &__github-button {
295
+ min-width: 154px !important;
296
+ height: 44px !important;
297
+ padding: 0 22px !important;
298
+ font-size: 16px !important;
199
299
  }
200
300
 
201
- &__info-container {
202
- margin-left: 100px;
301
+ &__link-button {
302
+ background-color: var(--site-config-color-index-page-get-started-button) !important;
203
303
  }
204
304
 
205
- &__logo {
206
- width: 100%;
207
- height: 100%;
208
- flex-shrink: 0;
209
- z-index: 2;
305
+ &__github-button {
306
+ color: var(--site-config-color-index-page-get-started-button) !important;
307
+ border-color: var(--site-config-color-index-page-get-started-button) !important;
308
+ }
309
+
310
+ &__hero-side {
311
+ min-width: 0;
312
+ }
313
+
314
+ &__hero-logo-stage {
315
+ position: relative;
316
+ display: flex;
317
+ align-items: center;
318
+ justify-content: center;
319
+ min-height: 456px;
210
320
  }
211
321
 
212
- &__logo-container {
322
+ &__hero-brand-mark {
213
323
  position: relative;
324
+ z-index: 1;
214
325
  display: flex;
326
+ align-items: center;
215
327
  justify-content: center;
216
- width: 174px;
217
- height: 174px;
218
- margin-top: 8px;
328
+ width: 204px;
329
+ height: 204px;
219
330
  }
220
331
 
221
- &__logo-background-mask {
332
+ &__hero-logo-background-mask {
222
333
  position: absolute;
223
- left: -40px;
224
- top: -40px;
225
- bottom: -40px;
226
- right: -40px;
334
+ inset: -64px;
227
335
  background: var(--site-config-color-index-page-logo-mask-background);
228
- transition: background-color 0.2s;
229
- filter: blur(45px);
336
+ filter: blur(56px);
230
337
  border-radius: 50%;
231
- animation: logo-wave 6s infinite linear;
232
338
  }
233
339
 
234
- &__title {
235
- font-size: 60px;
340
+ &__hero-logo {
341
+ position: relative;
342
+ z-index: 1;
343
+ width: 100%;
344
+ height: auto;
236
345
  }
237
346
 
238
- &__description {
239
- max-width: 700px;
240
- width: 90vw;
241
- font-size: 20px;
242
- line-height: 38px;
243
- margin-top: 14px;
244
- padding-left: 2px;
245
- box-sizing: border-box;
246
- color: var(--site-config-color-index-page-second-text-color);
347
+ &__section {
348
+ margin-top: 56px;
247
349
  }
248
350
 
249
- &__link-button {
250
- width: 170px !important;
251
- height: 48px !important;
252
- font-size: 19px !important;
253
- transition: all 0.2s !important;
254
- margin-top: 38px !important;
351
+ &__section-header {
352
+ margin-bottom: 22px;
255
353
  }
256
354
 
257
- &__github-button {
258
- width: 170px !important;
259
- height: 48px !important;
260
- font-size: 19px !important;
261
- transition: all 0.2s !important;
262
- margin-top: 38px !important;
355
+ &__section-divider {
356
+ position: relative;
357
+ display: flex;
358
+ align-items: center;
359
+ justify-content: center;
360
+ text-align: center;
361
+
362
+ &::before {
363
+ content: '';
364
+ position: absolute;
365
+ inset: 50% 0 auto;
366
+ border-top: 1px solid color-mix(in srgb, var(--site-config-color-border) 72%, transparent);
367
+ transform: translateY(-50%);
368
+ }
369
+ }
370
+
371
+ &__section-divider-text {
372
+ position: relative;
373
+ z-index: 1;
374
+ padding: 0 18px;
375
+ background: var(--site-config-color-index-page-background);
376
+ color: var(--site-config-color-index-page-second-text-color);
377
+ font-size: 15px;
378
+ font-weight: 600;
379
+ letter-spacing: 0.08em;
380
+ text-transform: uppercase;
263
381
  }
264
382
 
265
383
  &__features {
266
- display: flex;
267
- justify-content: center;
268
- flex-wrap: wrap;
269
- margin-top: 90px;
384
+ display: grid;
385
+ grid-template-columns: repeat(4, 1fr);
386
+ gap: 12px;
270
387
  }
271
388
 
272
389
  &__feature {
273
- width: 300px;
274
- margin: 12px;
275
- padding: 20px;
276
- border-radius: 12px;
277
- background: var(--site-config-color-index-page-feature-background);
278
- box-shadow:
279
- 0 3px 1px -2px rgba(0, 0, 0, 0.2),
280
- 0 2px 2px 0 rgba(0, 0, 0, 0.14),
281
- 0 1px 5px 0 rgba(0, 0, 0, 0.12);
390
+ --card-border-radius: 16px;
391
+ --card-padding: 0;
392
+ --card-content-padding: 0;
393
+ --card-content-margin: 0;
394
+ --card-title-padding: 0;
395
+ --card-title-margin: 0;
396
+ --card-description-padding: 0;
397
+ --card-description-margin: 0;
398
+
399
+ display: flex;
400
+ flex-direction: column;
401
+ min-height: 160px;
402
+ }
403
+
404
+ &__feature .var-card__container {
405
+ padding: 18px 18px 16px;
406
+ }
407
+
408
+ &__feature-name {
409
+ font-size: 17px;
410
+ font-weight: 400;
411
+ line-height: 1.45;
412
+ color: var(--site-config-color-text);
282
413
  }
283
414
 
284
415
  &__feature-description {
416
+ margin-top: 6px;
285
417
  color: var(--site-config-color-index-page-second-text-color);
286
418
  font-size: 14px;
287
- margin-top: 10px;
288
419
  line-height: 1.7;
289
420
  }
290
421
 
291
- &__contributors,
292
422
  &__team-members {
293
- width: 100%;
294
- display: flex;
295
- flex-direction: column;
296
- align-items: center;
297
- margin-top: 90px;
423
+ display: grid;
424
+ grid-template-columns: repeat(4, 1fr);
425
+ gap: 12px;
298
426
  }
299
427
 
300
- &__contributors-title,
301
- &__team-members-title {
302
- padding-top: 24px;
303
- line-height: 32px;
304
- font-size: 24px;
305
- border-top: 2px solid var(--site-config-color-index-page-divider-color);
306
- color: var(--site-config-color-index-page-second-text-color);
307
- letter-spacing: 1px;
308
- transition: all 0.2s;
428
+ &__team-member {
429
+ --card-border-radius: 16px;
430
+ --card-padding: 0;
431
+ --card-content-padding: 0;
432
+ --card-content-margin: 0;
433
+ min-height: 120px;
309
434
  }
310
435
 
311
- &__team-members-container {
312
- width: 1098px;
313
- display: flex;
314
- flex-wrap: wrap;
315
- margin-top: 70px;
436
+ &__team-member .var-card__container {
437
+ padding: 18px;
316
438
  }
317
439
 
318
- &__team-member {
440
+ &__team-member-main {
319
441
  display: flex;
320
- flex-direction: column;
321
- align-items: center;
322
- width: 300px;
323
- margin: 12px;
324
- padding: 30px 20px;
325
- border-radius: 12px;
326
- background: var(--site-config-color-index-page-feature-background);
327
- box-shadow:
328
- 0 3px 1px -2px rgba(0, 0, 0, 0.2),
329
- 0 2px 2px 0 rgba(0, 0, 0, 0.14),
330
- 0 1px 5px 0 rgba(0, 0, 0, 0.12);
331
-
332
- &-avatar {
333
- width: 80px;
334
- height: 80px;
335
- border-radius: 50%;
336
- }
337
-
338
- &-name {
339
- font-weight: bold;
340
- font-size: 20px;
341
- margin-top: 20px;
342
- }
343
-
344
- &-title,
345
- &-description {
346
- color: var(--site-config-color-index-page-second-text-color);
347
- font-size: 14px;
348
- margin-top: 10px;
349
- min-height: 40px;
350
- text-align: center;
351
- }
442
+ align-items: flex-start;
443
+ gap: 14px;
444
+ }
352
445
 
353
- &-social {
354
- margin-top: 10px;
446
+ &__team-member-avatar {
447
+ width: 60px;
448
+ height: 60px;
449
+ flex-shrink: 0;
450
+ border-radius: 50%;
451
+ }
355
452
 
356
- &-icon {
357
- margin: 10px 6px 0;
358
- transition: all 0.25s !important;
453
+ &__team-member-copy {
454
+ min-width: 0;
455
+ }
359
456
 
360
- &:hover {
361
- opacity: 0.7;
362
- transform: scale(1.25);
363
- cursor: pointer;
364
- }
365
- }
366
- }
457
+ &__team-member-name {
458
+ font-size: 16px;
459
+ font-weight: 600;
367
460
  }
368
461
 
369
- &__contributors-link {
370
- display: block;
371
- margin-top: 80px;
372
- width: 800px;
462
+ &__team-member-title {
463
+ margin-top: 4px;
464
+ color: var(--site-config-color-index-page-second-text-color);
465
+ font-size: 13px;
466
+ line-height: 1.6;
373
467
  }
374
468
 
375
- &__contributors-image {
376
- display: block;
377
- width: 100%;
469
+ &__team-member-description {
470
+ margin-top: 4px;
471
+ color: var(--site-config-color-index-page-second-text-color);
472
+ font-size: 13px;
473
+ line-height: 1.65;
378
474
  }
379
475
 
380
- &__sponsors {
476
+ &__team-member-social {
381
477
  display: flex;
382
- flex-direction: column;
383
- align-items: center;
384
- margin-top: 90px;
478
+ gap: 6px;
479
+ margin-top: 10px;
480
+ margin-left: -6px;
385
481
  }
386
482
 
387
- &__sponsors-title {
388
- padding-top: 24px;
389
- line-height: 32px;
390
- font-size: 24px;
391
- border-top: 2px solid var(--site-config-color-index-page-divider-color);
392
- color: var(--site-config-color-index-page-second-text-color);
393
- letter-spacing: 1px;
394
- transition: all 0.2s;
483
+ &__team-member-social-button {
484
+ color: var(--site-config-color-text) !important;
395
485
  }
396
486
 
397
- &__sponsors-link {
487
+ &__image-link {
398
488
  display: block;
399
- margin-top: 50px;
400
- width: 1100px;
401
489
  }
402
490
 
491
+ &__image-panel {
492
+ --card-border-radius: 16px;
493
+ --card-padding: 0;
494
+ --card-content-padding: 0;
495
+ --card-content-margin: 0;
496
+ }
497
+
498
+ &__image-panel .var-card__container {
499
+ padding: 20px;
500
+ }
501
+
502
+ &__contributors-image,
403
503
  &__sponsors-image {
404
504
  display: block;
405
505
  width: 100%;
506
+ border-radius: 12px;
406
507
  }
407
508
 
408
- &__footer {
509
+ &__footer-divider {
510
+ position: relative;
511
+ width: 100%;
512
+ height: 8px;
513
+ margin-top: 56px;
514
+ overflow: hidden;
515
+ pointer-events: none;
516
+ }
517
+
518
+ &__footer-divider::before {
519
+ content: '';
409
520
  position: absolute;
410
- bottom: 0;
521
+ top: 0;
522
+ left: 50%;
523
+ width: 100vw;
524
+ height: 8px;
525
+ transform: translateX(-50%);
526
+ background-image: url("data:image/svg+xml,%3Csvg aria-hidden='true' width='100%25' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpattern id='a' width='91' height='8' patternUnits='userSpaceOnUse'%3E%3Cg clip-path='url(%23clip0_2426_11367)'%3E%3Cpath d='M114 4c-5.067 4.667-10.133 4.667-15.2 0S88.667-.667 83.6 4 73.467 8.667 68.4 4 58.267-.667 53.2 4 43.067 8.667 38 4 27.867-.667 22.8 4 12.667 8.667 7.6 4-2.533-.667-7.6 4s-10.133 4.667-15.2 0S-32.933-.667-38 4s-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0-10.133-4.667-15.2 0-10.133 4.667-15.2 0' stroke='%23E1E3E1' stroke-linecap='square'/%3E%3C/g%3E%3C/pattern%3E%3Crect width='100%25' height='100%25' fill='url(%23a)'/%3E%3C/svg%3E");
527
+ background-repeat: repeat-x;
528
+ background-position: center;
529
+ background-size: auto 8px;
530
+ }
531
+
532
+ &__footer {
411
533
  display: flex;
412
534
  flex-direction: column;
413
535
  justify-content: center;
414
- align-items: center;
415
- width: 100%;
416
- height: 100px;
417
- border-top: thin solid var(--site-config-color-border);
536
+ margin-top: 24px;
537
+ min-height: 56px;
538
+ padding-top: 0;
418
539
  color: var(--site-config-color-index-page-second-text-color);
419
540
  font-size: 14px;
420
- line-height: 26px;
421
- transition: all 0.2s;
541
+ line-height: 1.9;
542
+ text-align: center;
543
+ }
544
+
545
+ @media (max-width: 1100px) {
546
+ &__layout {
547
+ padding: 52px 24px 54px;
548
+ }
549
+
550
+ &__hero {
551
+ grid-template-columns: 1fr;
552
+ gap: 28px;
553
+ }
554
+
555
+ &__hero-content {
556
+ align-items: center;
557
+ text-align: center;
558
+ }
559
+
560
+ &__hero-side {
561
+ order: -1;
562
+ }
563
+
564
+ &__hero-logo-stage {
565
+ min-height: 292px;
566
+ }
567
+
568
+ &__hero-brand-mark {
569
+ width: 160px;
570
+ height: 160px;
571
+ }
572
+
573
+ &__features,
574
+ &__team-members {
575
+ grid-template-columns: repeat(2, 1fr);
576
+ }
577
+ }
578
+
579
+ @media (max-width: 767px) {
580
+ &__layout {
581
+ padding: 44px 16px 42px;
582
+ }
583
+
584
+ &__title {
585
+ font-size: 52px;
586
+ }
587
+
588
+ &__description {
589
+ font-size: 16px;
590
+ line-height: 1.72;
591
+ }
592
+
593
+ &__actions {
594
+ width: 100%;
595
+ flex-direction: column;
596
+ }
597
+
598
+ &__link-button,
599
+ &__github-button {
600
+ width: 100% !important;
601
+ }
602
+
603
+ &__hero-brand-mark {
604
+ width: 136px;
605
+ height: 136px;
606
+ }
607
+
608
+ &__hero-logo {
609
+ width: 100%;
610
+ }
611
+
612
+ &__features,
613
+ &__team-members {
614
+ grid-template-columns: 1fr;
615
+ }
616
+
617
+ &__feature {
618
+ min-height: auto;
619
+ }
620
+
621
+ &__feature .var-card__container,
622
+ &__team-member .var-card__container {
623
+ padding: 16px;
624
+ }
625
+
626
+ &__image-panel .var-card__container {
627
+ padding: 18px;
628
+ }
629
+
422
630
  }
423
631
  }
424
632
  </style>
@@ -5,12 +5,11 @@
5
5
  "declaration": true,
6
6
  "skipLibCheck": true,
7
7
  "esModuleInterop": true,
8
- "downlevelIteration": true,
9
8
  "resolveJsonModule": true,
10
9
  "jsx": "preserve",
11
10
  "lib": ["esnext", "dom"],
12
11
  "module": "esnext",
13
- "moduleResolution": "node",
12
+ "moduleResolution": "bundler",
14
13
  "outDir": "./lib"
15
14
  }
16
15
  }