Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: public pages #56

Merged
merged 70 commits into from
Jun 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
6c91115
feat: pricing page
Flosciante Apr 8, 2024
02011de
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 8, 2024
beb864e
feat: update faq title
Flosciante Apr 9, 2024
2211d56
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 9, 2024
dc12135
feat: add hero headline and update cloudflare pricing section
Flosciante Apr 9, 2024
41df0bf
feat: add dm sans font on title
Flosciante Apr 9, 2024
dddbfcf
fix(landing): wrong path on img
Flosciante Apr 9, 2024
6439acd
feat: add dm sans for all <h
Flosciante Apr 9, 2024
3d56da8
feat(landing): add cloudflare card
Flosciante Apr 9, 2024
529d550
fix: typo
Flosciante Apr 9, 2024
ef9273a
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 9, 2024
90867db
feat(header): up
Flosciante Apr 9, 2024
9eaac81
feat(pricing): add neon effect on hero badge
Flosciante Apr 9, 2024
9a5d4cb
feat: other neon animation
Flosciante Apr 10, 2024
45ac8f1
up
Flosciante Apr 10, 2024
e7c1b41
feat(pricing): badge neon animation
Flosciante Apr 10, 2024
68ca949
feat: changelog page
Flosciante Apr 11, 2024
7c7af3c
Merge pull request #67 from nuxt-hub/feat/changelog
Flosciante Apr 11, 2024
63c68e8
feat: changelog
Flosciante Apr 12, 2024
3631a47
feat: blog & templates
Flosciante Apr 15, 2024
fcfb2f4
feat: updates & improvements
Flosciante Apr 16, 2024
3377711
feat: up
Flosciante Apr 16, 2024
12bc5aa
feat: up
Flosciante Apr 16, 2024
a57fc9f
Merge branch 'main' into feat/pricing-page
atinux Apr 16, 2024
ef2e85a
feat: add tailored section and pricing bg
Flosciante Apr 17, 2024
0e0497e
feat: logo improvements
Flosciante Apr 17, 2024
d192888
feat(changelog): remove scroll snap
Flosciante Apr 17, 2024
d7f2e06
feat(changelog): timeline improvements
Flosciante Apr 17, 2024
1c863f5
fix(landing): icons
Flosciante Apr 17, 2024
e69e6e4
feat: improve SEO
Flosciante Apr 17, 2024
b787566
chore: up
atinux Apr 17, 2024
fa8bc7c
fix(changelog): aspect ratio on img
Flosciante Apr 17, 2024
2bcaf3d
feat(pricing): pricing cycle toggle
Flosciante Apr 18, 2024
57f8af0
feat: seo
Flosciante Apr 18, 2024
0676dd3
fix(inputcopy): wrong syntax
Flosciante Apr 18, 2024
0699899
up
atinux Apr 18, 2024
c3bd9b5
feat: improve img seo
Flosciante Apr 18, 2024
a46c1d1
feat: seo
Flosciante Apr 18, 2024
1e90a01
chore: up
atinux Apr 18, 2024
23eba42
feat(pricing): update yearly pricing
Flosciante Apr 18, 2024
f79ad0a
Merge branch 'main' into feat/pricing-page
atinux Apr 26, 2024
5f111b7
chore: update
atinux Apr 27, 2024
1a3338a
chore: update
atinux May 2, 2024
5efa921
docs: up
atinux May 22, 2024
525eabc
docs: update
atinux May 23, 2024
91a50e4
chore: typo
atinux May 23, 2024
a6844e2
chore: pricing
atinux May 23, 2024
3a5eecd
chore: up
atinux May 23, 2024
c5480c7
docs: blog post ready
atinux May 23, 2024
6b95044
chore: up
atinux May 24, 2024
76e5f6e
up
atinux May 24, 2024
7ab025d
chore: add more changelog
atinux May 27, 2024
b5b2e21
chore: og image
atinux May 28, 2024
91fef50
chore: add templates
atinux May 29, 2024
0866f26
ui improvements
atinux May 29, 2024
9c90a82
chore: add 1px
atinux May 29, 2024
c5b9baa
chore: add command links
atinux May 29, 2024
7d48ef1
mobile menu
atinux May 30, 2024
8585fa5
chore: fix docs links
atinux May 30, 2024
102307d
chore: add placeholder
atinux May 30, 2024
213d634
chore: all green
atinux May 30, 2024
c519a69
chore: update changelog
atinux May 30, 2024
81c903d
Update 3.pricing.yml
atinux Jun 3, 2024
8eb4dda
chore: update date
atinux Jun 3, 2024
2d55089
Merge branch 'main' into feat/pricing-page
atinux Jun 3, 2024
e4dcfe8
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 3, 2024
bdf9f9e
chore: update
atinux Jun 3, 2024
764f791
chore: update base
atinux Jun 3, 2024
e46f8fc
Update 1.beta.md
atinux Jun 3, 2024
79f6ef2
chore: remove alpha
atinux Jun 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 4 additions & 27 deletions docs/app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,22 @@ export default defineAppConfig({
ui: {
primary: 'green',
gray: 'slate',
footer: {
bottom: {
left: 'text-sm text-gray-500 dark:text-gray-400',
wrapper: 'border-t border-gray-200 dark:border-gray-800'
}
},
variables: {
dark: {
background: 'var(--color-gray-950)'
}
},
header: {
wrapper: 'lg:mb-0 border-0'
}
},
seo: {
siteName: 'NuxtHub'
},
header: {
links: [{
icon: 'i-simple-icons-github',
to: 'https://github.com/nuxt-hub/core',
target: '_blank',
'aria-label': 'NuxtHub'
}]
},
toc: {
title: 'Table of Contents',
bottom: {
title: 'Community',
edit: 'https://github.com/nuxt-hub/core/edit/main/docs/content',
links: [{
icon: 'i-heroicons-star',
label: 'Star on GitHub',
to: 'https://github.com/nuxt-hub/core',
target: '_blank'
}, {
icon: 'i-simple-icons-nuxtdotjs',
label: 'NuxtHub Admin',
to: 'https://admin.hub.nuxt.com',
target: '_blank'
}]
edit: 'https://github.com/nuxt-hub/core/edit/main/docs/content'
}
}
})
68 changes: 60 additions & 8 deletions docs/app.vue
Original file line number Diff line number Diff line change
@@ -1,9 +1,25 @@
<script setup lang="ts">
import type { ParsedContent } from '@nuxt/content/dist/runtime/types'

const appConfig = useAppConfig()
const route = useRoute()
const { seo } = useAppConfig()
const { isLoading } = useLoadingIndicator()

const { data: navigation } = await useAsyncData('navigation', () => fetchContentNavigation())
const primary = (route.meta?.primary as string) || 'green'
appConfig.ui.primary = primary
watch(() => route.meta?.primary, (primary: string) => {
setTimeout(() => {
appConfig.ui.primary = primary || 'green'
}, 40)
})
const heroBackgroundClass = computed(() => route.meta?.heroBackground || '')

const appear = ref(false)
const appeared = ref(false)
const { data: navigation } = await useAsyncData('navigation', () => fetchContentNavigation(), {
default: () => []
})
const { data: files } = useLazyFetch<ParsedContent[]>('/api/search.json', {
default: () => [],
server: false
Expand All @@ -23,26 +39,62 @@ useHead({

useSeoMeta({
ogSiteName: seo?.siteName,
twitterCard: 'summary_large_image'
twitterCard: 'summary_large_image',
titleTemplate(title) {
return title.includes('NuxtHub') ? title : `${title} · NuxtHub`
}
})

provide('navigation', navigation.value?.[0]?.children || [])
provide('navigation', navigation)

onMounted(() => {
setTimeout(() => {
appear.value = true
setTimeout(() => {
appeared.value = true
}, 1000)
}, 0)
})

const links = [{
label: 'NuxtHub Admin',
to: 'https://admin.hub.nuxt.com',
target: '_blank',
icon: 'i-simple-icons-nuxtdotjs'
}, {
label: 'NuxtHub repository',
to: 'https://github.com/nuxt-hub/core',
target: '_blank',
icon: 'i-simple-icons-github'
}, {
label: 'NuxtHub on X',
to: 'https://x.com/nuxt_hub',
target: '_blank',
icon: 'i-simple-icons-x'
}]
</script>

<template>
<div class="bg-white dark:bg-gray-950">
<Header />

<UMain>
<AppHeader />
<UMain class="relative">
<HeroBackground
class="absolute w-full top-[1px] transition-all text-primary flex-shrink-0"
:class="[
isLoading ? 'animate-pulse' : (appear ? 'opacity-100' : 'opacity-0'),
appeared ? 'duration-[400ms]': 'duration-1000',
heroBackgroundClass
]"
/>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</UMain>

<Footer />
<AppFooter />

<ClientOnly>
<LazyUContentSearch :files="files" :navigation="navigation" />
<LazyUContentSearch :files="files" :navigation="navigation" :links="links" />
</ClientOnly>

<UNotifications />
Expand Down
3 changes: 3 additions & 0 deletions docs/assets/css/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
h1, h2, h3, h4, h5, h6 {
@apply font-title;
}
44 changes: 44 additions & 0 deletions docs/components/AppFooter.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<script setup lang="ts">
const links = [
{
label: 'Nuxt Docs',
to: 'https://nuxt.com'
}, {
label: 'Terms',
to: 'https://admin.hub.nuxt.com/terms',
target: '_blank'
}, {
label: 'Privacy',
to: 'https://admin.hub.nuxt.com/privacy',
target: '_blank'
}
]
</script>

<template>
<UFooter :links="links">
<template #left>
<span class="inline text-sm">© {{ new Date().getFullYear() }} <a href="https://nuxtlabs.com" target="_blank" class="text-gray-900 dark:text-gray-50 hover:underline underline-offset-4">NuxtLabs</a></span>
</template>

<template #right>
<UColorModeButton />
<UButton
icon="i-simple-icons-x"
color="gray"
variant="ghost"
to="https://x.com/nuxt_hub"
target="_blank"
aria-label="Go to NuxtHub X account"
/>
<UButton
icon="i-simple-icons-github"
color="gray"
variant="ghost"
to="https://github.com/nuxt-hub/core"
target="_blank"
aria-label="Go to NuxtHub GitHub repository"
/>
</template>
</UFooter>
</template>
66 changes: 66 additions & 0 deletions docs/components/AppHeader.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<script setup lang="ts">
const { metaSymbol } = useShortcuts()
const navigation = inject('navigation')

const links = [
{
label: 'Docs',
to: '/docs/getting-started'
}, {
label: 'Templates',
to: '/templates',
color: 'cyan'
}, {
label: 'Pricing',
to: '/pricing'
}, {
label: 'Changelog',
to: '/changelog'
}, {
label: 'Blog',
to: '/blog'
}
]
const navLinks = links.map((link) => {
if (link.label === 'Docs') {
return {
...link,
children: mapContentNavigation(navigation.value)
.find(link => link.label === 'Docs')
.children
.map(({ icon, ...link }) => link)
}
}
return {
...link
}
})
</script>

<template>
<UHeader :ui="{}" :links="links">
<template #logo>
<HubLogo class="h-6" />
<UBadge variant="subtle" size="xs" class="-mb-[2px] rounded font-semibold">
beta
</UBadge>
</template>

<template #right>
<UTooltip text="Search" :shortcuts="[metaSymbol, 'K']" :popper="{ strategy: 'absolute' }">
<UContentSearchButton :label="null" />
</UTooltip>
<UButton variant="ghost" label="Log in" to="https://admin.hub.nuxt.com/" color="black" size="md" class="hidden sm:block" external />
<UButton variant="solid" label="Sign up" to="https://admin.hub.nuxt.com/" size="md" class="hidden sm:block" external />
</template>

<template #panel>
<UNavigationTree :links="navLinks" :default-open="1" :multiple="false" :ui="{ accordion: { button: { label: 'font-normal' } } }" />

<div class="flex flex-col gap-y-2 mt-4">
<UButton variant="solid" label="Log in" to="https://admin.hub.nuxt.com/" color="white" size="md" class="flex justify-center sm:hidden" external />
<UButton variant="solid" label="Sign up" to="https://admin.hub.nuxt.com/" size="md" class="flex justify-center text-gray-900 bg-primary sm:hidden" external />
</div>
</template>
</UHeader>
</template>
47 changes: 0 additions & 47 deletions docs/components/Footer.vue

This file was deleted.

65 changes: 0 additions & 65 deletions docs/components/Header.vue

This file was deleted.

20 changes: 20 additions & 0 deletions docs/components/HeroBackground.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<template>
<svg viewBox="0 0 1440 181" fill="none" xmlns="http://www.w3.org/2000/svg" class="pointer-events-none">
<mask id="path-1-inside-1_414_5526" fill="white">
<path d="M0 0H1440V181H0V0Z" />
</mask>
<path d="M0 0H1440V181H0V0Z" fill="url(#paint0_linear_414_5526)" fill-opacity="0.22" />
<path d="M0 2H1440V-2H0V2Z" fill="url(#paint1_linear_414_5526)" mask="url(#path-1-inside-1_414_5526)" />
<defs>
<linearGradient id="paint0_linear_414_5526" x1="720" y1="0" x2="720" y2="181" gradientUnits="userSpaceOnUse">
<stop stop-color="currentColor" />
<stop offset="1" stop-color="currentColor" stop-opacity="0" />
</linearGradient>
<linearGradient id="paint1_linear_414_5526" x1="0" y1="90.5" x2="1440" y2="90.5" gradientUnits="userSpaceOnUse">
<stop stop-color="currentColor" stop-opacity="0" />
<stop offset="0.395" stop-color="currentColor" />
<stop offset="1" stop-color="currentColor" stop-opacity="0" />
</linearGradient>
</defs>
</svg>
</template>
Loading
Loading