diff --git a/pages/modules/index.vue b/pages/modules/index.vue
index 2b3df7f87..466679b39 100644
--- a/pages/modules/index.vue
+++ b/pages/modules/index.vue
@@ -7,21 +7,10 @@ const inputRef = ref()
const route = useRoute()
const { replaceRoute } = useFilters('modules')
-const { fetchList, filteredModules, q, categories, selectedOrder, sorts, selectedSort } = useModules()
+const { fetchList, filteredModules, q, categories, stats, selectedOrder, sorts, selectedSort } = useModules()
const { data: page } = await useAsyncData(route.path, () => queryContent(route.path).findOne())
-const links = [{
- icon: 'i-ph-book-open',
- label: 'Руководство для авторов модулей',
- to: '/docs/guide/going-further/modules'
-}, {
- icon: 'i-ph-plus-circle',
- label: 'Составьте список модулей',
- to: 'https://github.com/nuxt/modules#addupdate-a-module',
- target: '_blank'
-}]
-
const title = page.value.head?.title || page.value.title
const description = page.value.head?.description || page.value.description
useSeoMeta({
@@ -47,75 +36,35 @@ const { copy } = useCopyToClipboard()
-
-
-
-
- Nuxt Image
-
-
-
-
-
- Nuxt Content
-
-
-
-
-
- Nuxt DevTools
-
-
-
-
-
- Nuxt UI
-
-
-
-
-
+
+ {{ page.description }}
+
+
+
+ {{ formatNumber(stats.maintainers) }} Maintainers
+
+
+
+ {{ formatNumber(stats.contributors) }} Contributors
+
+
+
+ {{ formatNumber(stats.modules) }} Modules
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -172,96 +155,71 @@ const { copy } = useCopyToClipboard()
:src="moduleImage(module.icon)"
:icon="moduleIcon(module.category)"
:alt="module.name"
- size="lg"
- :ui="{ rounded: 'rounded-lg' }"
+ size="xs"
+ :ui="{ rounded: 'rounded-md' }"
class="pointer-events-none"
/>
-
-
- {{ module.name }}
-
-
-
-
- Официальный
-
-
-
-
- Спонсор
-
-
-
-
-
-
- {{ module.description }}
+ {{ module.description }}
-
-
-
+ Official
+
+
+
+ Sponsor
+
+
-
+
{{ formatNumber(module.stats.downloads) }}
-
+
{{ formatNumber(module.stats.stars || 0) }}
-
-
-
- {{ module.contributors.length }}
-
+
+
@@ -288,7 +246,6 @@ const { copy } = useCopyToClipboard()
.group:hover .shine {
text-decoration: none;
display: inline-block;
- position: relative;
mask-image: linear-gradient(-75deg, rgba(255,255,255,.8) 30%, #fff 50%, rgba(255,255,255,.8) 70%);
mask-size: 200%;
animation: shine 2s linear infinite;
diff --git a/pages/video-courses.vue b/pages/video-courses.vue
index 1e975edd8..56394cb17 100644
--- a/pages/video-courses.vue
+++ b/pages/video-courses.vue
@@ -26,54 +26,52 @@ defineOgImageComponent('Docs')
-
-
-
-
-
-
-
- {{ course.name }}
-
-
-
-
+
diff --git a/types/modules.ts b/types/modules.ts
index 424bf42b1..9190375e1 100644
--- a/types/modules.ts
+++ b/types/modules.ts
@@ -1,5 +1,11 @@
import type { ParsedContent } from '@nuxt/content'
+export interface Stats {
+ maintainers: number
+ contributors: number
+ modules: number
+}
+
export interface ModuleUser {
name: string
github: string