-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathapp.vue
More file actions
97 lines (89 loc) · 2.34 KB
/
app.vue
File metadata and controls
97 lines (89 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!-- app.vue -->
<script setup lang="ts">
defineOgImage({
url: '/img/storacha-og-card.png',
width: 1200,
height: 630,
alt: 'Storacha - Decentralized Hot Storage Layer on Filecoin'
})
// Get header links from app config
const { headerLinks } = useAppConfig().actions
// Create navigation items for schema, handling dropdowns
const navItems = headerLinks.flatMap(link => {
if (link.href) {
return {
'@type': 'WebPage',
'name': link.text,
'url': link.href.startsWith('http')
? link.href
: `https://storacha.network${link.href}`
}
}
if (link.dropdown) {
// Include main category and dropdown items
return [
{
'@type': 'WebPage',
'name': link.text,
'url': 'https://storacha.network/' // Main category URL
},
...link.dropdown.map(item => ({
'@type': 'WebPage',
'name': item.text,
'url': item.href.startsWith('http')
? item.href
: `https://storacha.network${item.href}`
}))
]
}
return []
}).filter(Boolean)
// Add structured data for site navigation
useHead({
script: [{
type: 'application/ld+json',
innerHTML: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'WebSite',
'url': 'https://storacha.network/',
'name': 'Storacha Network',
'description': 'Decentralized hot storage network for data at scale, offering user-owned data with decentralized permissioning and leveraging Filecoin and IPFS.',
'potentialAction': {
'@type': 'SearchAction',
'target': 'https://storacha.network/search?q={search_term_string}',
'query-input': 'required name=search_term_string'
},
'mainEntity': {
'@type': 'SiteNavigationElement',
'@id': '#main-navigation',
'name': 'Main Navigation',
'url': 'https://storacha.network/',
'hasPart': navItems
}
})
}]
})
</script>
<template>
<NuxtLoadingIndicator color="#BDE0FF" style="opacity: 1;" />
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
<DevOnly>
<Debug />
</DevOnly>
</template>
<style lang="postcss">
html {
@apply antialiased bg-brand-4;
}
p a {
@apply transform decoration-1 decoration-gray/50 underline underline-offset-3;
}
p a:hover {
@apply decoration-gray decoration-2;
}
footer a:hover {
@apply underline;
}
</style>