docs: add marketing pages (#3308)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
@@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import { withoutTrailingSlash } from 'ufo'
|
||||
// import { withoutTrailingSlash } from 'ufo'
|
||||
import colors from 'tailwindcss/colors'
|
||||
// import { debounce } from 'perfect-debounce'
|
||||
|
||||
@@ -22,32 +22,7 @@ const searchTerm = ref('')
|
||||
// useTrackEvent('Search', { props: { query: `${query} - ${searchTerm.value?.commandPaletteRef.results.length} results` } })
|
||||
// }, 500))
|
||||
|
||||
const links = computed(() => [{
|
||||
label: 'Docs',
|
||||
icon: 'i-lucide-square-play',
|
||||
to: '/getting-started',
|
||||
active: route.path.startsWith('/getting-started')
|
||||
}, {
|
||||
label: 'Components',
|
||||
icon: 'i-lucide-square-code',
|
||||
to: '/components',
|
||||
active: route.path.startsWith('/components')
|
||||
}, {
|
||||
label: 'Roadmap',
|
||||
icon: 'i-lucide-map',
|
||||
to: '/roadmap'
|
||||
}, {
|
||||
label: 'Figma',
|
||||
icon: 'i-lucide-figma',
|
||||
to: 'https://www.figma.com/community/file/1288455405058138934',
|
||||
target: '_blank'
|
||||
}, {
|
||||
label: 'Releases',
|
||||
icon: 'i-lucide-rocket',
|
||||
to: 'https://github.com/nuxt/ui/releases',
|
||||
target: '_blank'
|
||||
}].filter(Boolean))
|
||||
|
||||
const links = useLinks()
|
||||
const color = computed(() => colorMode.value === 'dark' ? (colors as any)[appConfig.ui.colors.neutral][900] : 'white')
|
||||
const radius = computed(() => `:root { --ui-radius: ${appConfig.theme.radius}rem; }`)
|
||||
const blackAsPrimary = computed(() => appConfig.theme.blackAsPrimary ? `:root { --ui-primary: black; } .dark { --ui-primary: white; }` : ':root {}')
|
||||
@@ -58,8 +33,8 @@ useHead({
|
||||
{ key: 'theme-color', name: 'theme-color', content: color }
|
||||
],
|
||||
link: [
|
||||
{ rel: 'icon', type: 'image/svg+xml', href: '/icon.svg' },
|
||||
{ rel: 'canonical', href: `https://ui.nuxt.com${withoutTrailingSlash(route.path)}` }
|
||||
{ rel: 'icon', type: 'image/svg+xml', href: '/icon.svg' }
|
||||
// { rel: 'canonical', href: `https://ui.nuxt.com${withoutTrailingSlash(route.path)}` }
|
||||
],
|
||||
style: [
|
||||
{ innerHTML: radius, id: 'nuxt-ui-radius', tagPriority: -2 },
|
||||
@@ -83,7 +58,7 @@ provide('navigation', mappedNavigation)
|
||||
|
||||
<template>
|
||||
<UApp :toaster="appConfig.toaster">
|
||||
<NuxtLoadingIndicator color="#FFF" />
|
||||
<NuxtLoadingIndicator color="var(--ui-primary)" :height="2" />
|
||||
|
||||
<template v-if="!route.path.startsWith('/examples')">
|
||||
<!-- <Banner /> -->
|
||||
@@ -96,7 +71,7 @@ provide('navigation', mappedNavigation)
|
||||
</NuxtLayout>
|
||||
|
||||
<template v-if="!route.path.startsWith('/examples')">
|
||||
<!-- <Footer /> -->
|
||||
<Footer />
|
||||
|
||||
<ClientOnly>
|
||||
<LazyUContentSearch
|
||||
|
||||
@@ -1,21 +1,18 @@
|
||||
<script setup lang="ts">
|
||||
const route = useRoute()
|
||||
|
||||
// const items = [{
|
||||
// label: 'Figma Kit',
|
||||
// to: 'https://www.figma.com/community/file/1288455405058138934',
|
||||
// target: '_blank'
|
||||
// }, {
|
||||
// label: 'Playground',
|
||||
// to: 'https://stackblitz.com/edit/nuxt-ui',
|
||||
// target: '_blank'
|
||||
// }, {
|
||||
// label: 'Roadmap',
|
||||
// to: '/roadmap'
|
||||
// }, {
|
||||
// label: 'Releases',
|
||||
// to: '/releases'
|
||||
// }]
|
||||
const links = [{
|
||||
label: 'Figma',
|
||||
to: '/figma'
|
||||
}, {
|
||||
label: 'Roadmap',
|
||||
to: '/roadmap'
|
||||
}, {
|
||||
label: 'Terms',
|
||||
to: '/pro/terms'
|
||||
}, {
|
||||
label: 'Releases',
|
||||
to: 'https://github.com/nuxt/ui/releases',
|
||||
target: '_blank'
|
||||
}]
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -23,15 +20,12 @@ const route = useRoute()
|
||||
|
||||
<UFooter>
|
||||
<template #left>
|
||||
<NuxtLink v-if="route.path.startsWith('/pro')" to="https://ui.nuxt.com/pro/purchase" target="_blank" class="text-sm text-(--ui-text-muted)">
|
||||
Purchase <span class="text-(--ui-text-highlighted)">Nuxt UI Pro</span>
|
||||
</NuxtLink>
|
||||
<NuxtLink v-else to="https://github.com/nuxt/ui" target="_blank" class="text-sm text-(--ui-text-muted)">
|
||||
<NuxtLink to="https://github.com/nuxt/ui" target="_blank" class="text-sm text-(--ui-text-muted)">
|
||||
Published under <span class="text-(--ui-text-highlighted)">MIT License</span>
|
||||
</NuxtLink>
|
||||
</template>
|
||||
|
||||
<!-- <UNavigationMenu :items="items" variant="link" color="neutral" /> -->
|
||||
<UNavigationMenu :items="links" variant="link" color="neutral" />
|
||||
|
||||
<template #right>
|
||||
<UButton
|
||||
@@ -41,6 +35,7 @@ const route = useRoute()
|
||||
target="_blank"
|
||||
color="neutral"
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
/>
|
||||
<UButton
|
||||
aria-label="Nuxt UI on Discord"
|
||||
@@ -49,6 +44,7 @@ const route = useRoute()
|
||||
target="_blank"
|
||||
color="neutral"
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
/>
|
||||
<UButton
|
||||
aria-label="Nuxt on X"
|
||||
@@ -57,6 +53,16 @@ const route = useRoute()
|
||||
target="_blank"
|
||||
color="neutral"
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
/>
|
||||
<UButton
|
||||
aria-label="Nuxt on BlueSky"
|
||||
icon="i-simple-icons-bluesky"
|
||||
to="https://bsky.app/profile/nuxt.com"
|
||||
target="_blank"
|
||||
color="neutral"
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
/>
|
||||
<UButton
|
||||
aria-label="Nuxt UI on GitHub"
|
||||
@@ -65,6 +71,7 @@ const route = useRoute()
|
||||
target="_blank"
|
||||
color="neutral"
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
/>
|
||||
</template>
|
||||
</UFooter>
|
||||
|
||||
28
docs/app/components/PromotionalVideo.vue
Normal file
@@ -0,0 +1,28 @@
|
||||
<template>
|
||||
<div class="relative">
|
||||
<UPageCard
|
||||
variant="subtle"
|
||||
class="rounded-[calc(var(--ui-radius)*6)]"
|
||||
>
|
||||
<video
|
||||
class="rounded-[calc(var(--ui-radius)*2)]"
|
||||
preload="none"
|
||||
poster="https://res.cloudinary.com/nuxt/video/upload/so_3.3/v1708511800/ui-pro/video-nuxt-ui-pro_kwfbdh.jpg"
|
||||
:controls="true"
|
||||
>
|
||||
<source
|
||||
src="https://res.cloudinary.com/nuxt/video/upload/v1708511800/ui-pro/video-nuxt-ui-pro_kwfbdh.webm"
|
||||
type="video/webm"
|
||||
>
|
||||
<source
|
||||
src="https://res.cloudinary.com/nuxt/video/upload/v1708511800/ui-pro/video-nuxt-ui-pro_kwfbdh.mp4"
|
||||
type="video/mp4"
|
||||
>
|
||||
<source
|
||||
src="https://res.cloudinary.com/nuxt/video/upload/v1708511800/ui-pro/video-nuxt-ui-pro_kwfbdh.ogg"
|
||||
type="video/ogg"
|
||||
>
|
||||
</video>
|
||||
</UPageCard>
|
||||
</div>
|
||||
</template>
|
||||
52
docs/app/components/StarsBg.vue
Normal file
@@ -42,7 +42,8 @@ const radius = computed({
|
||||
|
||||
const modes = [
|
||||
{ label: 'light', icon: appConfig.ui.icons.light },
|
||||
{ label: 'dark', icon: appConfig.ui.icons.dark }
|
||||
{ label: 'dark', icon: appConfig.ui.icons.dark },
|
||||
{ label: 'system', icon: appConfig.ui.icons.system }
|
||||
]
|
||||
const mode = computed({
|
||||
get() {
|
||||
@@ -144,7 +145,7 @@ function setBlackAsPrimary(value: boolean) {
|
||||
v-for="m in modes"
|
||||
:key="m.label"
|
||||
v-bind="m"
|
||||
:selected="mode === m.label"
|
||||
:selected="colorMode.preference === m.label"
|
||||
@click="mode = m.label"
|
||||
/>
|
||||
</div>
|
||||
|
||||
56
docs/app/composables/useLinks.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
export function useLinks() {
|
||||
const route = useRoute()
|
||||
|
||||
return computed(() => [{
|
||||
label: 'Docs',
|
||||
icon: 'i-lucide-square-play',
|
||||
to: '/getting-started',
|
||||
active: route.path.startsWith('/getting-started')
|
||||
}, {
|
||||
label: 'Components',
|
||||
icon: 'i-lucide-square-code',
|
||||
to: '/components',
|
||||
active: route.path.startsWith('/components')
|
||||
}, {
|
||||
label: 'Pro',
|
||||
icon: 'i-lucide-panels-top-left',
|
||||
to: '/pro',
|
||||
active: route.path.startsWith('/pro'),
|
||||
orientation: 'vertical',
|
||||
children: [{
|
||||
icon: 'i-lucide-sparkles',
|
||||
label: 'Features',
|
||||
description: 'A collection of premium Vue components.',
|
||||
to: '/pro'
|
||||
}, {
|
||||
icon: 'i-lucide-credit-card',
|
||||
label: 'Pricing',
|
||||
description: 'Free in development, buy when ready to launch.',
|
||||
to: '/pro/pricing',
|
||||
active: route.path.startsWith('/pro/pricing')
|
||||
}, {
|
||||
icon: 'i-lucide-panels-top-left',
|
||||
label: 'Templates',
|
||||
description: 'Official templates made with Nuxt UI Pro.',
|
||||
to: '/pro/templates'
|
||||
}, {
|
||||
icon: 'i-lucide-circle-check',
|
||||
label: 'Activate',
|
||||
description: 'Enable Nuxt UI Pro in your production projects.',
|
||||
to: '/pro/activate'
|
||||
}]
|
||||
}, {
|
||||
label: 'Figma',
|
||||
icon: 'i-lucide-figma',
|
||||
to: '/figma'
|
||||
}, {
|
||||
label: 'Roadmap',
|
||||
icon: 'i-lucide-map',
|
||||
to: '/roadmap'
|
||||
}, {
|
||||
label: 'Releases',
|
||||
icon: 'i-lucide-rocket',
|
||||
to: 'https://github.com/nuxt/ui/releases',
|
||||
target: '_blank'
|
||||
}].filter(Boolean))
|
||||
}
|
||||
@@ -7,7 +7,6 @@ const props = defineProps<{
|
||||
error: NuxtError
|
||||
}>()
|
||||
|
||||
const route = useRoute()
|
||||
const appConfig = useAppConfig()
|
||||
const colorMode = useColorMode()
|
||||
|
||||
@@ -26,32 +25,7 @@ const searchTerm = ref('')
|
||||
// useTrackEvent('Search', { props: { query: `${query} - ${searchTerm.value?.commandPaletteRef.results.length} results` } })
|
||||
// }, 500))
|
||||
|
||||
const links = computed(() => [{
|
||||
label: 'Docs',
|
||||
icon: 'i-lucide-square-play',
|
||||
to: '/getting-started',
|
||||
active: route.path.startsWith('/getting-started')
|
||||
}, {
|
||||
label: 'Components',
|
||||
icon: 'i-lucide-square-code',
|
||||
to: '/components',
|
||||
active: route.path.startsWith('/components')
|
||||
}, {
|
||||
label: 'Roadmap',
|
||||
icon: 'i-lucide-map',
|
||||
to: '/roadmap'
|
||||
}, {
|
||||
label: 'Figma',
|
||||
icon: 'i-lucide-figma',
|
||||
to: 'https://www.figma.com/community/file/1288455405058138934',
|
||||
target: '_blank'
|
||||
}, {
|
||||
label: 'Releases',
|
||||
icon: 'i-lucide-rocket',
|
||||
to: 'https://github.com/nuxt/ui/releases',
|
||||
target: '_blank'
|
||||
}].filter(Boolean))
|
||||
|
||||
const links = useLinks()
|
||||
const color = computed(() => colorMode.value === 'dark' ? (colors as any)[appConfig.ui.colors.neutral][900] : 'white')
|
||||
const radius = computed(() => `:root { --ui-radius: ${appConfig.theme.radius}rem; }`)
|
||||
const blackAsPrimary = computed(() => appConfig.theme.blackAsPrimary ? `:root { --ui-primary: black; } .dark { --ui-primary: white; }` : ':root {}')
|
||||
|
||||
292
docs/app/pages/figma/.figma.yml
Normal file
@@ -0,0 +1,292 @@
|
||||
title: Nuxt UI Figma Design Kits
|
||||
description: Bridge the gap between designers and developers using professional-grade components. The official Nuxt UI & Nuxt UI Pro design kits for Figma mirrors the development library for perfect consistency.
|
||||
headline: Used and loved by 2,000 designers and teams.
|
||||
hero:
|
||||
title: From [Figma]{#figma} to [Nuxt]{#nuxt}, faster.
|
||||
description: From wireframe to production in no time with the official Nuxt UI & Nuxt UI Pro design kits for Figma. Start free with the Nuxt UI Kit, or upgrade to Nuxt UI Pro for premium components, layouts, and enhanced design-to-code efficiency.
|
||||
image: /figma/hero.png
|
||||
links:
|
||||
- label: Purchase Pro Kit
|
||||
to: 'https://nuxt.lemonsqueezy.com/buy/17213c49-621b-4c2c-9478-3a50a099003d'
|
||||
trailing-icon: i-lucide-arrow-right
|
||||
target: _blank
|
||||
- label: Free Figma Kit
|
||||
to: 'https://go.nuxt.com/figma'
|
||||
icon: i-logos-figma
|
||||
color: neutral
|
||||
variant: outline
|
||||
target: _blank
|
||||
features1:
|
||||
features:
|
||||
- title: Advanced Figma Features
|
||||
description: Components, Local Variables, Auto Layout, Variants and more.
|
||||
icon: i-logos-figma
|
||||
- title: Instant Theming
|
||||
description: Customize your design system instantly using local variables and tokens.
|
||||
icon: i-lucide-swatch-book
|
||||
- title: Two Powerful Design Kits
|
||||
description: Start with essential components, or unlock Pro for complete blocks and templates.
|
||||
icon: i-lucide-files
|
||||
cta1:
|
||||
title: Everything you need in a [single file]{class="text-(--ui-primary)"}.
|
||||
description: Design and development in perfect sync with our [Free](https://www.figma.com/community/file/1288455405058138934/nuxt-ui-v3-official-design-kit-free) and Pro files. Developers can implement designs faster, while designers work with production-ready components.
|
||||
section1:
|
||||
title: Customize in a few clicks to fit your needs
|
||||
description: Control your entire design system with Figma Variables. Update primitive tokens once and watch your changes spread across the entire system.
|
||||
reverse: true
|
||||
features:
|
||||
- title: Style with color variables powered by Tailwind CSS colors
|
||||
icon: i-simple-icons-tailwindcss
|
||||
- title: Apply over 500+ local variables across your entire file
|
||||
icon: i-lucide-layers-2
|
||||
- title: Build with unified tokens for consistency
|
||||
icon: i-lucide-bolt
|
||||
tabs:
|
||||
- label: Define your tokens
|
||||
src: /pro/figma/local-variables.png
|
||||
width: 656
|
||||
height: 342
|
||||
alt: Define local variables in the Nuxt UI Figma design kit
|
||||
- label: Use them in your design
|
||||
src: /pro/figma/local-variables-result.png
|
||||
width: 656
|
||||
height: 342
|
||||
alt: Use color variables in the Nuxt UI Figma design kit
|
||||
links:
|
||||
- label: Preview UI Pro Design Kit
|
||||
to: 'https://go.nuxt.com/figma-pro'
|
||||
target: _blank
|
||||
icon: i-logos-figma
|
||||
color: neutral
|
||||
variant: outline
|
||||
section2:
|
||||
title: One component, endless possibilities
|
||||
description: Create unlimited variations through nested components and swappable instances. Every element is fully themeable with props and slots, giving you complete control.
|
||||
features:
|
||||
- title: Choose between 17K+ components and variants
|
||||
icon: i-lucide-component
|
||||
- title: Customize designs with swap instance
|
||||
icon: i-lucide-square-dashed-mouse-pointer
|
||||
- title: Switch between light and dark modes in one click
|
||||
icon: i-lucide-moon
|
||||
image:
|
||||
src: /pro/figma/component.png
|
||||
width: 656
|
||||
height: 374
|
||||
alt: A component in the Nuxt UI Figma design kit
|
||||
links:
|
||||
- label: Preview UI Pro Design Kit
|
||||
to: 'https://go.nuxt.com/figma-pro'
|
||||
target: _blank
|
||||
icon: i-logos-figma
|
||||
color: neutral
|
||||
variant: outline
|
||||
section3:
|
||||
title: Perfect match with development
|
||||
description: Our Figma kit perfectly matches Nuxt UI Pro components, ensuring complete alignment between design and development.
|
||||
reverse: true
|
||||
features:
|
||||
- title: Match development standards using the same props and tokens
|
||||
icon: i-lucide-square-code
|
||||
- title: Access Nuxt UI components through direct links
|
||||
icon: i-lucide-link
|
||||
- title: Work together as design and dev teams share one component language
|
||||
icon: i-lucide-handshake
|
||||
image:
|
||||
src: /pro/figma/nuxt-ui-figma-to-code.png
|
||||
width: 656
|
||||
height: 370
|
||||
alt: A screenshot of Nuxt UI Code & Figma Kit
|
||||
links:
|
||||
- label: Preview UI Pro Design Kit
|
||||
to: 'https://go.nuxt.com/figma-pro'
|
||||
icon: i-logos-figma
|
||||
color: neutral
|
||||
variant: outline
|
||||
target: _blank
|
||||
features2:
|
||||
features:
|
||||
- title: Ready-to-use Templates
|
||||
description: Production-ready templates for marketing sites, documentation, and more included.
|
||||
icon: i-lucide-panels-top-left
|
||||
- title: Well-Documented System
|
||||
description: Complete guides for designers and developers to master your design system.
|
||||
icon: i-lucide-book-open-text
|
||||
- title: Icons Pack
|
||||
description: Complete Lucide icon library included - 1500+ ready components.
|
||||
icon: i-lucide-smile
|
||||
section4:
|
||||
title: Start designing now.
|
||||
description: '**From download to deployment in simple steps.** :br Get instant access to production-ready components and start creating.'
|
||||
links:
|
||||
- label: Get access now
|
||||
to: 'https://nuxt.lemonsqueezy.com/buy/17213c49-621b-4c2c-9478-3a50a099003d'
|
||||
trailing-icon: i-lucide-arrow-right
|
||||
- label: Preview UI Pro Design Kit
|
||||
to: 'https://go.nuxt.com/figma-pro'
|
||||
icon: i-logos-figma
|
||||
color: neutral
|
||||
variant: outline
|
||||
target: _blank
|
||||
steps:
|
||||
- title: Download & Import
|
||||
description: After purchasing, just extract the ZIP file and drag & drop it directly into Figma.
|
||||
image:
|
||||
src: /pro/figma/step-1.png
|
||||
alt: Import the Nuxt UI Pro Figma design kit
|
||||
width: 314
|
||||
height: 230
|
||||
- title: Customize to your brand
|
||||
description: Set your colors, typography, and styles to match your brand identity in minutes.
|
||||
image:
|
||||
src: /pro/figma/step-2.png
|
||||
alt: Customize the Nuxt UI Pro Figma design kit
|
||||
width: 314
|
||||
height: 230
|
||||
- title: Design your website
|
||||
description: Design beautiful interfaces with production-ready components. Drag, drop, and customize.
|
||||
image:
|
||||
src: /pro/figma/step-3.png
|
||||
alt: Design your website with the Nuxt UI Pro Figma design kit
|
||||
width: 314
|
||||
height: 230
|
||||
- title: Share it with your developers
|
||||
description: Perfect development handoff with components that match Nuxt UI's structure exactly.
|
||||
image:
|
||||
src: /pro/figma/step-4.png
|
||||
alt: Share it with your developers with the Nuxt UI Pro Figma design kit
|
||||
width: 314
|
||||
height: 230
|
||||
pricing:
|
||||
title: Pricing plan that scale with you.
|
||||
description: Start for free with Nuxt UI components, or unlock the complete Nuxt UI Pro design kit with a one-time purchase.
|
||||
plans:
|
||||
- title: Free Design Kit
|
||||
description: Start with all Nuxt UI components and tokens.
|
||||
price: FREE
|
||||
features:
|
||||
- '**Nuxt UI only components**'
|
||||
- 40+ fully customizable components
|
||||
- Figma Local Variables for colors, typography, and effects
|
||||
- Light and Dark mode ready
|
||||
- Lucide icons (1500+ icons) integration
|
||||
- Regular updates
|
||||
button:
|
||||
label: Open in Figma
|
||||
icon: i-logos-figma
|
||||
to: https://go.nuxt.com/figma
|
||||
color: neutral
|
||||
terms: Used by 17,000+ designers.
|
||||
- title: Solo License
|
||||
description: Design faster with all Nuxt UI Pro components.
|
||||
price: $149
|
||||
billing_period: one-time payment
|
||||
billing_cycle: plus local taxes
|
||||
class: bg-(--ui-bg-elevated)/50
|
||||
features:
|
||||
- '**1 Designer**'
|
||||
- Nuxt UI & Nuxt UI Pro Components
|
||||
- 'Templates: Landing, Documentation, etc'
|
||||
- Quick Start with Step-by-step Guides
|
||||
- Use on Unlimited Projects
|
||||
- Lifetime Free Updates
|
||||
button:
|
||||
label: Buy now
|
||||
to: https://nuxt.lemonsqueezy.com/buy/17213c49-621b-4c2c-9478-3a50a099003d
|
||||
extraButton:
|
||||
label: Preview in Figma
|
||||
to: 'https://go.nuxt.com/figma-pro'
|
||||
target: _blank
|
||||
icon: i-logos-figma
|
||||
- title: Team License
|
||||
description: Everything you need to deliver faster as a team.
|
||||
price: $349
|
||||
billing_period: one-time payment
|
||||
billing_cycle: plus local taxes
|
||||
class: bg-(--ui-bg-elevated)/50
|
||||
features:
|
||||
- '**Up to 20 Designers**'
|
||||
- Nuxt UI & Nuxt UI Pro Components
|
||||
- 'Templates: Landing, Documentation, etc'
|
||||
- Step-by-step guides to help you start
|
||||
- Use on unlimited projects
|
||||
- Lifetime free updates
|
||||
button:
|
||||
label: Buy now
|
||||
to: https://nuxt.lemonsqueezy.com/buy/2979099c-b7a0-4ba1-90e0-a0d60509b92d
|
||||
extraButton:
|
||||
label: Preview in Figma
|
||||
to: 'https://go.nuxt.com/figma-pro'
|
||||
target: _blank
|
||||
icon: i-logos-figma
|
||||
customers:
|
||||
title: Used by 2,000+ developers & designers around the world.
|
||||
items:
|
||||
- src: /pro/logos/springfieldclinic.svg
|
||||
alt: Springfield Clinic
|
||||
- src: /pro/logos/churnkey.svg
|
||||
alt: Churnkey
|
||||
- src: /pro/logos/bosch.svg
|
||||
alt: BOSCH
|
||||
- src: /pro/logos/blizzard.svg
|
||||
alt: Blizzard
|
||||
- src: /pro/logos/bodet.svg
|
||||
alt: Bodet
|
||||
- src: /pro/logos/win.svg
|
||||
alt: WinReality
|
||||
- src: /pro/logos/tower.svg
|
||||
alt: Tower Research
|
||||
- src: /pro/logos/liegeairport.svg
|
||||
alt: Liege Airport
|
||||
- src: /pro/logos/wuniversity.svg
|
||||
alt: University of Washington
|
||||
- src: /pro/logos/funda.svg
|
||||
alt: Funda
|
||||
- src: /pro/logos/exxonmobil.svg
|
||||
alt: ExxonMobil
|
||||
- src: /pro/logos/mainpost.svg
|
||||
alt: Main Post
|
||||
- src: /pro/logos/insep.svg
|
||||
alt: INSEP
|
||||
- src: /pro/logos/applause.svg
|
||||
alt: Applause
|
||||
- src: /pro/logos/instadapp.svg
|
||||
alt: Instadapp
|
||||
faq:
|
||||
title: Frequently Asked Questions
|
||||
description: If you can't find what you're looking for, email our support team and if you're lucky someone will get back to you.
|
||||
items:
|
||||
- label: Can I use the UI kit on a free Figma account?
|
||||
content: Yes. You don't need Figma's paid plan to use our UI kits.
|
||||
defaultOpen: true
|
||||
- label: Do you have a free trial?
|
||||
content: We don't offer a free trial for the Pro Figma Kit, you can [preview it](https://go.nuxt.com/figma-pro).
|
||||
- label: How do I access the files after purchasing?
|
||||
content: After purchasing, just extract the ZIP file and drag & drop it directly into Figma.
|
||||
- label: Can I upgrade my Solo license to the Team license?
|
||||
content: Yes! Email us at design@nuxt.com with your details and we'll send you a discount code.
|
||||
- label: Can I use the UI Kit license for commercial projects?
|
||||
content: Yes, the license allows you to sell your designs that utilize the UI Kit implementations.
|
||||
- label: Can I create multiple projects for multiple clients?
|
||||
content: Yes, you can create multiple projects for multiple clients with the same license, there is no limit to the number of projects you can create.
|
||||
- label: Can I include UI Kit in an open source project?
|
||||
content: No, the license does not allow you to include the UI Kit in an open source project where the design files are publicly accessible.
|
||||
- label: How do I contact you?
|
||||
content: Email us at design@nuxt.com with your details and we'll help you out.
|
||||
- label: What is your refund policy?
|
||||
content: As the Figma Pro Kit is a digital product packaged as a zip file, we cannot offer refunds once the purchase is made.
|
||||
- label: Do you have a Figma to Code plugin?
|
||||
content: >
|
||||
We recommend the open source [TeamPad Dev](https://github.com/ecomfe/tempad-dev) inspect panel with the [TeamPad Dev Nuxt UI Plugin](https://github.com/Justineo/tempad-dev-plugin-nuxt-ui):
|
||||
|
||||
1. Install the [TeamPad Dev Chrome Extension](https://chromewebstore.google.com/detail/tempad-dev/lgoeakbaikpkihoiphamaeopmliaimpc)
|
||||
|
||||
2. Open your Figma file with Nuxt UI components (reload the page if you don't see the TeamPad Dev panel)
|
||||
|
||||
3. Install the `@nuxt` in TeamPad Dev's plugins section
|
||||
|
||||
4. Select any Nuxt UI component and inspect the code it generates
|
||||
|
||||
{.w-full .rounded .mb-2 .max-w-[636px]}
|
||||
|
||||
*Right now, only Nuxt UI components are supported, but the code of the plugin is [open source](https://github.com/Justineo/tempad-dev-plugin-nuxt-ui) and anyone can contribute to it.*
|
||||
288
docs/app/pages/figma/index.vue
Normal file
@@ -0,0 +1,288 @@
|
||||
<script setup lang="ts">
|
||||
// @ts-expect-error yaml is not typed
|
||||
import page from '.figma.yml'
|
||||
import { animate } from 'motion'
|
||||
import { joinURL } from 'ufo'
|
||||
|
||||
const { url } = useSiteConfig()
|
||||
useSeoMeta({
|
||||
title: page.title,
|
||||
description: page.description,
|
||||
ogTitle: page.title,
|
||||
ogDescription: page.description,
|
||||
ogImage: joinURL(url, '/pro/figma/og-image.png')
|
||||
})
|
||||
|
||||
const video = ref<HTMLVideoElement | null>(null)
|
||||
const played = ref(false)
|
||||
|
||||
onMounted(async () => {
|
||||
// Animate cursors
|
||||
await new Promise(resolve => setTimeout(resolve, 1000))
|
||||
const figmaWordPosition = document.querySelector('#figma')?.getBoundingClientRect()
|
||||
const nuxtWordPosition = document.querySelector('#nuxt')?.getBoundingClientRect()
|
||||
const initialScrollX = window.scrollX
|
||||
const initialScrollY = window.scrollY
|
||||
if (figmaWordPosition && nuxtWordPosition) {
|
||||
animate('#cursor1', { left: Math.round(Math.random() * window.outerWidth), top: Math.round(Math.random() * window.outerHeight) }, { duration: 0.1 })
|
||||
.then(() => animate('#cursor1', { opacity: 1 }, { duration: 0.3 }))
|
||||
.then(() => {
|
||||
return animate('#cursor1', {
|
||||
left: Math.round(figmaWordPosition.left + initialScrollX + figmaWordPosition.width / 2),
|
||||
top: Math.round(figmaWordPosition.top + initialScrollY - figmaWordPosition.height / 4)
|
||||
}, { duration: 1.5, delay: 0.2, ease: 'easeInOut' })
|
||||
})
|
||||
.then(() => animate('#cursor1', { scale: 0.8 }, { duration: 0.1, ease: 'easeOut' }))
|
||||
.then(() => animate('#cursor1', { scale: 1 }, { duration: 0.1, ease: 'easeOut' }))
|
||||
.then(() => animate('#figma', { color: 'var(--ui-info)' }, { duration: 0.3, ease: 'easeOut' }))
|
||||
.then(() => animate('#cursor1', { left: Math.round(figmaWordPosition.left + initialScrollX + figmaWordPosition.width), top: Math.round(figmaWordPosition.top + initialScrollY) }, { duration: 0.6, ease: 'easeInOut' }))
|
||||
|
||||
animate('#cursor2', { left: Math.round(Math.random() * window.outerWidth), top: Math.round(Math.random() * window.outerHeight) }, { duration: 0.1, delay: 0.6 })
|
||||
.then(() => animate('#cursor2', { opacity: 1 }, { duration: 0.3 }))
|
||||
.then(() => {
|
||||
return animate('#cursor2', {
|
||||
left: Math.round(nuxtWordPosition.left + initialScrollX + nuxtWordPosition.width / 2),
|
||||
top: Math.round(nuxtWordPosition.top + initialScrollY - nuxtWordPosition.height / 4)
|
||||
}, { duration: 1.5, delay: 0.2, ease: 'easeInOut' })
|
||||
})
|
||||
.then(() => animate('#cursor2', { scale: 0.8 }, { duration: 0.1, ease: 'easeOut' }))
|
||||
.then(() => animate('#cursor2', { scale: 1 }, { duration: 0.1, ease: 'easeOut' }))
|
||||
.then(() => animate('#nuxt', { color: 'var(--ui-success)' }, { duration: 0.3, ease: 'easeOut' }))
|
||||
.then(() => animate('#cursor2', { left: Math.round(nuxtWordPosition.left + initialScrollX + nuxtWordPosition.width), top: Math.round(nuxtWordPosition.top + initialScrollY) }, { duration: 0.6, ease: 'easeInOut' }))
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="relative">
|
||||
<div id="cursor1" class="absolute z-10 pointer-events-none" :style="{ opacity: 0 }">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 24 24" class="absolute top-0 left-0 drop-shadow-[0_1px_2px_rgb(0,0,0,0.25)] text-white dark:text-(--ui-bg)">
|
||||
<path
|
||||
fill="var(--ui-info)"
|
||||
stroke="currentColor"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="1.5"
|
||||
d="M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z"
|
||||
/>
|
||||
</svg>
|
||||
<UBadge color="info" class="absolute top-[18px] left-[18px] py-1 px-1 rounded-sm font-semibold leading-none">
|
||||
Sarah
|
||||
</UBadge>
|
||||
</div>
|
||||
<div id="cursor2" class="absolute z-10 pointer-events-none" :style="{ opacity: 0 }">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 24 24" class="absolute top-0 left-0 drop-shadow-[0_1px_2px_rgb(0,0,0,0.25)] text-white dark:text-(--ui-bg)">
|
||||
<path
|
||||
fill="var(--ui-success)"
|
||||
stroke="currentColor"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="1.5"
|
||||
d="M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z"
|
||||
/>
|
||||
</svg>
|
||||
<UBadge color="success" class="absolute top-[18px] left-[18px] py-1 px-1 rounded-sm font-semibold leading-none">
|
||||
Sebastien
|
||||
</UBadge>
|
||||
</div>
|
||||
<UPageHero
|
||||
:links="page.hero.links"
|
||||
class="relative"
|
||||
:ui="{
|
||||
container: 'relative !pb-0'
|
||||
}"
|
||||
>
|
||||
<template #title>
|
||||
<MDC :value="page.hero.title" unwrap="p" />
|
||||
</template>
|
||||
<template #description>
|
||||
<MDC :value="page.hero.description" unwrap="p" />
|
||||
</template>
|
||||
<!-- <img src="/pro/figma/nuxt-ui-figma.png" alt="Screnshot of the Nuxt UI Figma design kit" class="w-full h-auto border border-(--ui-border) border-b-0"> -->
|
||||
<div class="relative">
|
||||
<video
|
||||
ref="video"
|
||||
:controls="played"
|
||||
playsinline
|
||||
src="https://res.cloudinary.com/nuxt/video/upload/v1739267662/ui-pro/video4_aobki0.mp4"
|
||||
poster="https://res.cloudinary.com/nuxt/video/upload/so_0/v1739267662/ui-pro/video4_aobki0.jpg"
|
||||
:class="{ grayscale: !played }"
|
||||
/>
|
||||
<div v-if="!played" class="group cursor-pointer absolute inset-0 flex items-center justify-center backdrop-blur-xs" @click="video?.play(); played = true">
|
||||
<UButton
|
||||
icon="i-heroicons-play-20-solid"
|
||||
size="xl"
|
||||
color="neutral"
|
||||
variant="solid"
|
||||
class="group-hover:scale-105 transition-transform cursor-pointer drop-shadow-xl"
|
||||
aria-label="Play video"
|
||||
:ui="{
|
||||
base: 'p-4'
|
||||
}"
|
||||
>
|
||||
Watch 1 min demo
|
||||
</UButton>
|
||||
</div>
|
||||
</div>
|
||||
<div aria-hidden="true" class="absolute z-[-1] border-x border-(--ui-border) inset-0 mx-4 sm:mx-6 lg:mx-8" />
|
||||
</UPageHero>
|
||||
<UPageSection v-bind="page.features1" :ui="{ container: 'py-16 sm:py-16 lg:py-16', features: 'mt-0' }" class="border-y border-(--ui-border)" />
|
||||
<UPageCTA
|
||||
v-if="page.cta1"
|
||||
variant="naked"
|
||||
:ui="{
|
||||
container: 'lg:grid-cols-0 !gap-0 px-4 sm:px-6 lg:px-8',
|
||||
wrapper: 'grid grid-cols-1 lg:grid-cols-2',
|
||||
description: 'lg:mt-0' }"
|
||||
orientation="horizontal"
|
||||
class="rounded-none bg-gradient-to-b from-(--ui-bg-muted) to-(--ui-bg)"
|
||||
>
|
||||
<template #title>
|
||||
<MDC :value="page.cta1.title" unwrap="p" />
|
||||
</template>
|
||||
<template #description>
|
||||
<MDC :value="page.cta1.description" unwrap="p" />
|
||||
</template>
|
||||
</UPageCTA>
|
||||
<UPageSection v-bind="page.section1" orientation="horizontal" :ui="{ container: 'py-16 sm:py-16 lg:py-16' }">
|
||||
<UTabs :items="(page.section1.tabs as any[])" size="sm" color="neutral" :unmount-on-hide="false">
|
||||
<template #content="{ item }">
|
||||
<NuxtImg
|
||||
:width="item.width"
|
||||
:height="item.height"
|
||||
:src="item.src"
|
||||
:alt="item.alt"
|
||||
class="w-full h-auto rounded-[calc(var(--ui-radius)*2)]"
|
||||
lazy
|
||||
/>
|
||||
</template>
|
||||
</UTabs>
|
||||
</UPageSection>
|
||||
<UPageSection v-bind="page.section2" orientation="horizontal" :ui="{ container: 'py-16 sm:py-16 lg:py-16' }">
|
||||
<NuxtImg
|
||||
v-if="page.section2.image"
|
||||
v-bind="page.section2.image"
|
||||
class="w-full h-auto rounded-[calc(var(--ui-radius)*2)]"
|
||||
lazy
|
||||
/>
|
||||
</UPageSection>
|
||||
<UPageSection v-bind="page.section3" orientation="horizontal" :ui="{ container: 'py-16 sm:pt-16 lg:pt-16' }">
|
||||
<NuxtImg
|
||||
v-if="page.section3.image"
|
||||
v-bind="page.section3.image"
|
||||
class="w-full h-auto rounded-[calc(var(--ui-radius)*2)]"
|
||||
lazy
|
||||
/>
|
||||
</UPageSection>
|
||||
<USeparator />
|
||||
<UPageSection
|
||||
v-bind="page.section4"
|
||||
orientation="vertical"
|
||||
:ui="{
|
||||
title: 'sm:text-left',
|
||||
description: 'sm:text-left',
|
||||
links: 'sm:justify-start',
|
||||
container: 'relative !pb-0',
|
||||
wrapper: 'sm:pl-8'
|
||||
}"
|
||||
>
|
||||
<template #description>
|
||||
<MDC :value="page.section4.description" unwrap="p" />
|
||||
</template>
|
||||
<div aria-hidden="true" class="absolute z-[-1] border-x border-(--ui-border) inset-0 mx-4 sm:mx-6 lg:mx-8" />
|
||||
<ul class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 items-start justify-center border border-(--ui-border) border-b-0 sm:divide-x divide-y lg:divide-y-0 divide-(--ui-border)">
|
||||
<li v-for="(step, index) in page?.section4.steps" :key="step.title" class="flex flex-col gap-y-4 justify-start group h-full p-4">
|
||||
<NuxtImg
|
||||
v-if="step.image"
|
||||
v-bind="step.image"
|
||||
class="rounded-(--ui-radius)"
|
||||
lazy
|
||||
/>
|
||||
<div>
|
||||
<h2 class="font-semibold inline-flex items-center gap-x-1">
|
||||
<UBadge :label="index + 1" size="sm" color="neutral" variant="subtle" class="rounded-full tabular-nums" /> {{ step.title }}
|
||||
</h2>
|
||||
<p class="text-(--ui-text-muted) text-sm">
|
||||
{{ step.description }}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</UPageSection>
|
||||
<UPageSection v-bind="page.features2" :ui="{ container: 'py-16 sm:py-16 lg:py-16', features: 'mt-0' }" class="border-y border-(--ui-border)" />
|
||||
<UPageSection
|
||||
v-if="page.pricing"
|
||||
:title="page.pricing.title"
|
||||
:description="page.pricing.description"
|
||||
orientation="vertical"
|
||||
:ui="{
|
||||
title: 'sm:text-left',
|
||||
description: 'sm:text-left',
|
||||
links: 'sm:justify-start',
|
||||
container: 'relative !pb-0',
|
||||
wrapper: 'sm:pl-8'
|
||||
}"
|
||||
>
|
||||
<div aria-hidden="true" class="absolute z-[-1] border-x border-(--ui-border) inset-0 mx-4 sm:mx-6 lg:mx-8" />
|
||||
<UPricingPlans compact class="-space-x-px">
|
||||
<UPricingPlan
|
||||
v-for="(plan, index) in page.pricing.plans"
|
||||
:key="index"
|
||||
:title="plan.title"
|
||||
:description="plan.description"
|
||||
:price="plan.price"
|
||||
:billing-period="plan.billing_period"
|
||||
:billing-cycle="plan.billing_cycle"
|
||||
:highlight="plan.highlight"
|
||||
:features="plan.features"
|
||||
:button="plan.button"
|
||||
:terms="plan.terms"
|
||||
class="rounded-none"
|
||||
:class="plan.class"
|
||||
>
|
||||
<template #features>
|
||||
<li v-for="(feature, i) in plan.features" :key="i" class="flex items-center gap-2 min-w-0">
|
||||
<UIcon name="i-lucide-circle-check" class="size-5 shrink-0 text-(--ui-primary)" />
|
||||
<MDC :value="feature" unwrap="p" tag="span" class="text-sm truncate text-(--ui-text-accented)" />
|
||||
</li>
|
||||
</template>
|
||||
<template #button>
|
||||
<div class="flex flex-col w-full items-center gap-2">
|
||||
<UButton v-bind="plan.button" block size="lg" />
|
||||
<UButton
|
||||
v-if="plan.extraButton"
|
||||
v-bind="plan.extraButton"
|
||||
block
|
||||
size="lg"
|
||||
variant="outline"
|
||||
color="neutral"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</UPricingPlan>
|
||||
</UPricingPlans>
|
||||
</UPageSection>
|
||||
<UPageCTA v-if="page.customers" :title="page.customers.title" :ui="{ title: '!text-base font-medium', container: 'sm:py-12 sm:gap-8' }" variant="outline" class="rounded-none">
|
||||
<UPageMarquee pause-on-hover :ui="{ root: '[--duration:40s]' }">
|
||||
<img
|
||||
v-for="(logo, index) in page.customers.items"
|
||||
:key="index"
|
||||
v-bind="logo"
|
||||
class="h-6 shrink-0 max-w-[140px] filter invert dark:invert-0"
|
||||
>
|
||||
</UPageMarquee>
|
||||
</UPageCTA>
|
||||
<UPageSection v-bind="page.faq" :ui="{ container: 'relative' }">
|
||||
<div aria-hidden="true" class="hidden lg:block absolute z-[-1] border-x border-(--ui-border) inset-0 mx-4 sm:mx-6 lg:mx-8" />
|
||||
<UPageAccordion
|
||||
multiple
|
||||
:items="(page.faq.items as any[])"
|
||||
class="max-w-4xl mx-auto"
|
||||
>
|
||||
<template #body="{ item }">
|
||||
<MDC :value="item.content" unwrap="p" />
|
||||
</template>
|
||||
</UPageAccordion>
|
||||
</UPageSection>
|
||||
</div>
|
||||
</template>
|
||||
217
docs/app/pages/pro/.content/pricing.yml
Normal file
@@ -0,0 +1,217 @@
|
||||
title: Nuxt UI Pro Pricing
|
||||
description: Start for free in development mode, then upgrade to a paid plan to unlock the full features of Nuxt UI Pro when you are ready to launch.
|
||||
pricing:
|
||||
headline: Pricing
|
||||
title: Upgrade to Nuxt UI [Pro]{class="text-(--ui-primary)"}.
|
||||
description: On top of 40+ open source components from Nuxt UI, Pro gives you access to 50+ premium Vue components to create beautiful & responsive Nuxt applications in minutes. It includes all primitives to build landing pages, documentations, blogs, dashboards or entire SaaS products.
|
||||
freePlan:
|
||||
title: Free in development
|
||||
description: Try Nuxt UI Pro for free in development, no credit card required. Upgrade when ready to deploy.
|
||||
variant: soft
|
||||
orientation: horizontal
|
||||
button:
|
||||
label: Get started for Free
|
||||
to: '/getting-started/installation/pro/nuxt'
|
||||
color: 'neutral'
|
||||
variant: 'outline'
|
||||
figma:
|
||||
title: Figma Kit Pro
|
||||
description: Get all Nuxt UI Pro components in a Figma kit to design your next application before coding. Everything you need, from wire-framing to high-fidelity web integration.
|
||||
variant: soft
|
||||
orientation: horizontal
|
||||
price: $149 - $349
|
||||
terms: Solo & Team licenses available.
|
||||
features:
|
||||
- 1700+ components & variants from Nuxt UI & UI Pro
|
||||
- 'Variables: primary, neutral, fonts, rounded, shadows, etc.'
|
||||
- Light & dark mode support
|
||||
- 'Templates: Starter, Landing, Docs, SaaS and Dashboard'
|
||||
- Auto-layout & responsive ready
|
||||
- Tailwind CSS assets & icons included
|
||||
- Free [preview available](https://www.figma.com/design/mxXR9binOSLU3rYKZZRPXs/PREVIEW---NuxtUIPro-V3-BETA?m=auto&t=c4598Wr0rZwKPs5M-1)
|
||||
- Includes Nuxt UI [Figma Kit](https://www.figma.com/community/file/1288455405058138934)
|
||||
button:
|
||||
label: Explore Figma Kit Pricing
|
||||
to: 'https://nuxt.lemonsqueezy.com/buy/17213c49-621b-4c2c-9478-3a50a099003d'
|
||||
color: 'neutral'
|
||||
plans:
|
||||
- title: Solo
|
||||
description: Tailored for indie hackers, freelancers and solo founders.
|
||||
price: $249
|
||||
billing_period: one-time payment
|
||||
billing_cycle: plus local taxes
|
||||
features:
|
||||
- One developer
|
||||
- Unlimited projects
|
||||
- Access to the GitHub repository
|
||||
- Unlimited minor & patch updates
|
||||
- Lifetime access
|
||||
button:
|
||||
label: Buy now
|
||||
to: https://nuxt.lemonsqueezy.com/buy/057dacb2-87ba-4dc1-9256-59ee5b3bd394
|
||||
- title: Startup
|
||||
description: Best suited for small teams, startups and agencies.
|
||||
price: $499
|
||||
billing_period: one-time payment
|
||||
billing_cycle: plus local taxes
|
||||
features:
|
||||
- Up to 5 developers
|
||||
- Unlimited projects
|
||||
- Access to the GitHub repository
|
||||
- Unlimited minor & patch updates
|
||||
- Lifetime access
|
||||
button:
|
||||
label: Buy now
|
||||
to: https://nuxt.lemonsqueezy.com/buy/2e042a33-7e76-4dda-bd68-e353c182e571
|
||||
highlight: true
|
||||
- title: Organization
|
||||
description: Ideal for larger teams and organizations.
|
||||
price: $999
|
||||
billing_period: one-time payment
|
||||
billing_cycle: plus local taxes
|
||||
features:
|
||||
- Up to 20 developers
|
||||
- Unlimited projects
|
||||
- Everything in Startup
|
||||
- Prioritized feature requests
|
||||
- Unlimited minor & patch updates
|
||||
- Lifetime access
|
||||
button:
|
||||
label: Buy now
|
||||
to: https://nuxt.lemonsqueezy.com/buy/2979099c-b7a0-4ba1-90e0-a0d60509b92d
|
||||
logos:
|
||||
- src: /pro/logos/springfieldclinic.svg
|
||||
alt: Springfield Clinic
|
||||
- src: /pro/logos/churnkey.svg
|
||||
alt: Churnkey
|
||||
- src: /pro/logos/bosch.svg
|
||||
alt: BOSCH
|
||||
- src: /pro/logos/blizzard.svg
|
||||
alt: Blizzard
|
||||
- src: /pro/logos/bodet.svg
|
||||
alt: Bodet
|
||||
- src: /pro/logos/win.svg
|
||||
alt: WinReality
|
||||
- src: /pro/logos/tower.svg
|
||||
alt: Tower Research
|
||||
- src: /pro/logos/liegeairport.svg
|
||||
alt: Liege Airport
|
||||
- src: /pro/logos/wuniversity.svg
|
||||
alt: University of Washington
|
||||
- src: /pro/logos/funda.svg
|
||||
alt: Funda
|
||||
- src: /pro/logos/exxonmobil.svg
|
||||
alt: ExxonMobil
|
||||
- src: /pro/logos/mainpost.svg
|
||||
alt: Main Post
|
||||
- src: /pro/logos/insep.svg
|
||||
alt: INSEP
|
||||
- src: /pro/logos/applause.svg
|
||||
alt: Applause
|
||||
- src: /pro/logos/instadapp.svg
|
||||
alt: Instadapp
|
||||
testimonials:
|
||||
title: What people are saying
|
||||
description: Nuxt UI Pro is already trusted by 2,000+ users and teams around the world.
|
||||
items:
|
||||
- quote: "We were using a SaaS service for the docs site, but were left unfulfilled. We put in the effort to do it in house, with UI Pro and not only did we get complimented by a prospect on our site, but they wanted to know our platform."
|
||||
user:
|
||||
name: 'Anthony Bettini'
|
||||
description: 'CEO and founder of VulnCheck'
|
||||
to: 'https://www.linkedin.com/in/anthonybettini/'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://media.licdn.com/dms/image/v2/C4E03AQEY3pmXsH8hDg/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1519741249602?e=1743638400&v=beta&t=lw2K6vS0OOCZWGtHY1buJVkRItQCa4OQw0vzAhhpJk8'
|
||||
- quote: "Wow, Nuxt UI Pro is a total game-changer! I'm seriously impressed with the quality, attention to detail, and the insane variety of components you get. It's like hitting the jackpot for any developer. I've saved countless hours that I would've spent stressing over making my apps look good, with amazing accessible UX, and instead, I've been able to focus on the real deal – building the app itself. It's an instant buy for me, every single time. No second thoughts!"
|
||||
user:
|
||||
name: 'Yaz Jallad'
|
||||
description: 'Founder Ninjaparade Digital'
|
||||
to: 'https://twitter.com/ninjaparade/'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://pbs.twimg.com/profile_images/1824690890222485504/lQ7v1AGt_400x400.jpg'
|
||||
- quote: "Nuxt UI Pro saves 100s of hours of dev and design time while delivering a clean professional look on any device."
|
||||
user:
|
||||
name: 'Kevin Olson'
|
||||
description: 'Founder of Fume.app'
|
||||
to: 'https://github.com/acidjazz'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://ipx.nuxt.com/f_auto,s_40x40/gh_avatar/acidjazz'
|
||||
srcset: 'https://ipx.nuxt.com/f_auto,s_80x80/gh_avatar/acidjazz 2x'
|
||||
- quote: "I decided to replace my custom-built components with a component library and chose Nuxt UI Pro. It only took me a few hours, and the new UI looks more professional. Integrating the library is easy; the components are well-documented and highly customizable. I can only recommend it; this library is my new choice for new SaaS products."
|
||||
user:
|
||||
name: 'Michael Hoffmann'
|
||||
description: 'Senior Frontend Developer'
|
||||
to: 'https://mokkapps.de/'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://ipx.nuxt.com/f_auto,s_40x40/gh_avatar/mokkapps'
|
||||
srcset: 'https://ipx.nuxt.com/f_auto,s_80x80/gh_avatar/mokkapps 2x'
|
||||
- quote: "Nuxt UI Pro is my go to component library. Out-of-the-box it handles all of the UI demands I throw at it while looking great. The customisation is really worth thought out, allowing you to override components in a breeze. Always amazed at the improvements dropped in each update as well, the team is doing an amazing job."
|
||||
user:
|
||||
name: 'Harlan Wilton'
|
||||
description: 'Nuxt core team member'
|
||||
to: 'https://github.com/harlan-zw'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://ipx.nuxt.com/f_auto,s_40x40/gh_avatar/harlan-zw'
|
||||
srcset: 'https://ipx.nuxt.com/f_auto,s_80x80/gh_avatar/harlan-zw 2x'
|
||||
- quote: "I jumped at the chance to buy the Nuxt team's new UI kit as soon as I saw it. While I'm already a fan of Nuxt UI, the pro version takes it to a whole new level and lets me paste entire blocks into all my projects, saving me a ton of time."
|
||||
user:
|
||||
name: 'Thomas Sanlis'
|
||||
description: 'Freelance developer and designer'
|
||||
to: 'https://twitter.com/T_Zahil'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://pbs.twimg.com/profile_images/1374040164180299791/ACw4G3nZ_400x400.jpg'
|
||||
- quote: "Nuxt UI has allowed me to develop my SaaS without any prior mockups. The design quality of their components and the intelligence of the DX meant that I was able to try many different layouts for my application until I found the perfect UX for my users. Nuxt UI is the ui-kit I would have dreamed of building myself, and Nuxt UI Pro makes things even easier when you want to go further with your SaaS. Kudos to the team."
|
||||
user:
|
||||
name: 'Benjamin Code'
|
||||
description: 'YouTuber and SaaS builder'
|
||||
to: 'https://twitter.com/benjamincode'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://pbs.twimg.com/profile_images/1607353032420769793/I8qQSUfQ_400x400.jpg'
|
||||
- quote: "Nuxt UI Pro is my preferred choice for everything, from a POC to a web platform. It's ready to use out-of-the-box and assists me in crafting pixel-perfect UIs. It saves me a significant amount of time while remaining highly customizable. Give it a try, and you won't be let down."
|
||||
user:
|
||||
name: 'Estéban Soubiran'
|
||||
description: 'Web developer and UnJS member'
|
||||
to: 'https://twitter.com/soubiran_'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://pbs.twimg.com/profile_images/1801649350319218689/aS_X_iTm_400x400.jpg'
|
||||
- quote: "As someone who builds a lot of projects, Nuxt UI Pro has been a game-changer. It's not just about saving time – it's about having components that are thoughtfully designed and just work. The developer experience is exceptional, and I can focus on building features instead of tweaking UI components."
|
||||
user:
|
||||
name: 'Hugo Richard'
|
||||
description: 'Frontend Engineer at NuxtLabs'
|
||||
to: 'https://twitter.com/hugorcd__'
|
||||
target: _blank
|
||||
avatar:
|
||||
src: 'https://ipx.nuxt.com/f_auto,s_40x40/gh_avatar/hugorcd'
|
||||
srcset: 'https://ipx.nuxt.com/f_auto,s_80x80/gh_avatar/hugorcd 2x'
|
||||
faq:
|
||||
title: Frequently Asked Questions
|
||||
description: If you can't find what you're looking for, email our support team and if you're lucky someone will get back to you.
|
||||
items:
|
||||
- label: What is the difference between Nuxt UI Pro and Nuxt UI?
|
||||
content: Nuxt UI Pro is a collection of premium Vue components, composables and utils built on top of Nuxt UI. It includes advanced responsive components ([Header](/components/header), [PageHero](/components/page-hero), [PricingPlan](/components/pricing-plan), [BlogPost](/components/blog-post), etc.) designed ot help you build web applications faster.
|
||||
defaultOpen: true
|
||||
- label: Do you have a free trial?
|
||||
content: We have much better than a free trial, you can use Nuxt UI Pro for free in development mode. Once you are ready to deploy your application, you can purchase a license.
|
||||
- label: What do I get with my license?
|
||||
content: Once you purchase a license, you will receive a license key to [activate](/pro/activate) by inviting the team members to our private GitHub repository. On top of having access to the source code and private roadmap, the license key will allow you to [build your project to production](/getting-started/license#build) with the `nuxt build` command.
|
||||
- label: Can I use Nuxt UI Pro for Open Source projects?
|
||||
content: Yes, you can use Nuxt UI Pro for your open source projects as well as your commercial projects as long as you don't sell Nuxt UI Pro as a product and that you don't share your license key.
|
||||
- label: What does “Unlimited minor & patch updates” include?
|
||||
content: We add new components and improvements to Nuxt UI Pro as we get new ideas and feedback, you will receive these updates for the major version you purchased. :br **Your license key will work forever for the major version.** We may release a major version including more advanced components and features in the future, you will be able to upgrade to this version with a generous discount.
|
||||
- label: I purchased Nuxt UI Pro previous versions, do I need to purchase the version 3?
|
||||
content: '**The version 3 is a free upgrade**, so the license you bought on previous versions will be valid for v3.'
|
||||
- label: What does “lifetime access” means?
|
||||
content: Nuxt UI Pro is a one-time purchase, with no recurring subscription. You will have access to all assets of Nuxt UI Pro forever.
|
||||
- label: Do you have discounts for students or non-profits?
|
||||
content: Yes, we offer a 50% discount for students using Nuxt UI Pro purely for educational purposes. Contact us at ui-pro@nuxt.com with your details and we'll send you a discount code.
|
||||
- label: Do you offer technical support?
|
||||
content: Once you sign up you get access to our private GitHub repository, where you can ask questions, report bugs or feature requests and get help from other customers. If you require more specialised support or consultancy, contact us at ui-pro@nuxt.com.
|
||||
- label: What is your refund policy?
|
||||
content: If you are not satisfied with Nuxt UI Pro, let us know within 14 days of your purchase at ui-pro@nuxt.com and we'll refund your money.
|
||||
174
docs/app/pages/pro/.content/pro.yml
Normal file
@@ -0,0 +1,174 @@
|
||||
title: Build faster with Nuxt UI Pro.
|
||||
description: A collection of premium Vue components, composables and utils built on top of Nuxt UI, oriented on structure and layout and designed to be used as building blocks for your application.
|
||||
hero:
|
||||
title: Build faster with Nuxt UI [Pro]{class="text-(--ui-primary)"}.
|
||||
description: A collection of premium Vue components, composables and utils built on top of Nuxt UI. :br Focused on structure and layout, these **responsive components** are designed to be the perfect **building blocks for your next idea**.
|
||||
links:
|
||||
- label: Get started
|
||||
icon: i-lucide-arrow-right
|
||||
trailing: true
|
||||
to: /getting-started/installation/pro/nuxt
|
||||
size: xl
|
||||
- label: Purchase a license
|
||||
size: xl
|
||||
color: neutral
|
||||
variant: outline
|
||||
to: /pro/pricing
|
||||
features:
|
||||
title: Create stunning Vue applications faster.
|
||||
description: Nuxt UI Pro comes packed with powerful features to help you build modern, performant, accessible and responsive Nuxt applications at record speed. From pre-built UI sections to Figma design kits, every detail is crafted to speed up your development and deliver a polished user experience.
|
||||
features:
|
||||
- title: 40+ Ready-to-use Sections
|
||||
description: Pre-built UI components for landing pages, documentation, blogs, dashboards, and more—ready to use out of the box.
|
||||
icon: i-lucide-layout-grid
|
||||
- title: Auto Dark Mode
|
||||
description: Seamlessly adapts to user preferences with a built-in dark mode switch—no extra configuration needed.
|
||||
icon: i-lucide-moon
|
||||
- title: Blazing-fast Performance
|
||||
description: Optimized for Nuxt 3 with minimal bundle size, lightning-fast rendering, and best practices in performance.
|
||||
icon: i-lucide-zap
|
||||
- title: SEO & Accessibility Ready
|
||||
description: Built with proper semantic HTML, structured data, and accessibility in mind for better rankings and usability.
|
||||
icon: i-lucide-search-check
|
||||
- title: Fully Customizable UI
|
||||
description: Modify colors, fonts, spacing, and layouts with Tailwind CSS and Nuxt UI’s design tokens to match your brand identity.
|
||||
icon: i-lucide-settings-2
|
||||
- title: Nuxt Content Support
|
||||
description: Write content with Markdown and MDC, making it easy to build documentation, blogs, and knowledge bases.
|
||||
icon: i-simple-icons-markdown
|
||||
- title: Vue-only mode
|
||||
description: Enjoy the benefits of Nuxt UI Pro without Nuxt. Integrate it seamlessly into your Vue 3 + Vite projects and build modern UIs with ease.
|
||||
icon: i-simple-icons-vuedotjs
|
||||
- title: Built-in Internationalization (i18n)
|
||||
description: Easily localize your site with built-in support for multiple languages and right-to-left (RTL) layouts.
|
||||
icon: i-lucide-globe
|
||||
- title: Figma Design Kits
|
||||
description: Match your development workflow with Nuxt UI & UI Pro Figma UI kits, ensuring a fast transition from design to code.
|
||||
icon: i-simple-icons-figma
|
||||
authorQuote:
|
||||
quote: Nuxt UI, born from a desire to improve Vue component development, is the go-to library for building modern web interfaces. We aim to provide you with a comprehensive set of tools to create and customize your next UI while maintaining the best developer experience.
|
||||
user:
|
||||
name: Benjamin Canac
|
||||
description: Author of Nuxt UI
|
||||
to: https://github.com/benjamincanac
|
||||
avatar:
|
||||
src: https://github.com/benjamincanac.png
|
||||
sections:
|
||||
- title: The freedom to build anything
|
||||
description: Nuxt UI Pro ships with an extensive set of advanced components that cover a wide range of use-cases. Carefully crafted to reduce boilerplate code without sacrificing flexibility.
|
||||
id: features
|
||||
features:
|
||||
- name: Fully customizable
|
||||
description: Like Nuxt UI, change the style of any component from your App Config or customize them specifically through the ui prop.
|
||||
icon: i-lucide-pencil-ruler
|
||||
- name: Slots for everything
|
||||
description: Each component leverages the power of Vue's slots to give you the flexibility to build anything.
|
||||
icon: i-lucide-code
|
||||
- name: Responsive by design
|
||||
description: Nuxt UI Pro components aims to structure your content, they are responsive by design and will adapt to any screen size.
|
||||
icon: i-lucide-layout
|
||||
links:
|
||||
- label: Explore components
|
||||
to: /components
|
||||
trailingIcon: i-lucide-arrow-right
|
||||
code: |
|
||||
```vue [app.vue]
|
||||
<script setup lang="ts">
|
||||
const links = [
|
||||
{ to: '/', label: 'Home' },
|
||||
{ to: '/about', label: 'About' },
|
||||
{ to: '/contact', label: 'Contact' }
|
||||
]
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<UApp>
|
||||
<UHeader :links="links" />
|
||||
|
||||
<UPageHero title="Hello World" />
|
||||
|
||||
<UPageSection title="Features">
|
||||
<UPageGrid>
|
||||
<UPageCard title="First Card" />
|
||||
<UPageCard title="Second Card" />
|
||||
<UPageCard title="Third Card" />
|
||||
</UPageGrid>
|
||||
</UPageSection>
|
||||
|
||||
<UFooter />
|
||||
</UApp>
|
||||
</template>
|
||||
```
|
||||
- title: The flexibility to control your data
|
||||
description: Although you can use any data source you want, Nuxt UI Pro is fully integrated with Nuxt Content and provides additional features when the module is detected.
|
||||
reverse: true
|
||||
features:
|
||||
- name: 'Write Markdown with ease'
|
||||
description: Nuxt UI Pro overrides Nuxt Content prose components to make them awesome but also adds new ones like Callout, CodeGroup, Field, etc.
|
||||
icon: i-simple-icons-markdown
|
||||
- name: Full-Text Search out of the box
|
||||
description: 'Nuxt UI Pro ships with a ready to use command palette component. No need to setup Algolia DocSearch anymore.'
|
||||
icon: i-lucide-search
|
||||
links:
|
||||
- label: Nuxt Content integration
|
||||
to: /getting-started/content
|
||||
icon: i-lucide-arrow-right
|
||||
trailing: true
|
||||
code: |
|
||||
```vue [pages/\[...slug\\].vue]
|
||||
<script setup lang="ts">
|
||||
const route = useRoute()
|
||||
|
||||
const { data: page } = await useAsyncData(route.path, () => queryCollection('content').path(route.path).first())
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<UPage>
|
||||
<UPageHeader :title="page.title" :description="page.description" :links="page.links" />
|
||||
|
||||
<UPageBody>
|
||||
<ContentRenderer v-if="page.body" :value="page" />
|
||||
</UPageBody>
|
||||
|
||||
<template #right>
|
||||
<UContentToc :links="page.body.toc.links" />
|
||||
</template>
|
||||
</UPage>
|
||||
</template>
|
||||
```
|
||||
templates:
|
||||
headline: Templates
|
||||
title: Kickstart with Nuxt UI Pro in seconds
|
||||
description: Choose from a variety of templates to get started with Nuxt UI Pro in seconds. Each template is designed to help you build beautiful and responsive Nuxt applications in minutes.
|
||||
items:
|
||||
- title: Landing
|
||||
description: A template for building a landing page with Nuxt UI Pro.
|
||||
icon: i-lucide-layout
|
||||
to: 'https://landing-template.nuxt.dev/'
|
||||
image: '/pro/templates/landing.png'
|
||||
- title: Saas
|
||||
description: A template for building a SaaS application with Nuxt UI Pro.
|
||||
icon: i-lucide-cloud
|
||||
to: 'https://saas-template.nuxt.dev/'
|
||||
image: '/pro/templates/saas.png'
|
||||
- title: Docs
|
||||
description: A template for building a documentation site with Nuxt UI Pro.
|
||||
icon: i-lucide-book
|
||||
to: 'https://docs-template.nuxt.dev/'
|
||||
image: '/pro/templates/docs.png'
|
||||
- title: Dashboard
|
||||
description: A template for building a dashboard with Nuxt UI Pro.
|
||||
icon: i-lucide-chart-bar
|
||||
to: 'https://dashboard-template.nuxt.dev/'
|
||||
image: '/pro/templates/dashboard.png'
|
||||
cta:
|
||||
title: Start with Nuxt UI Pro today!
|
||||
description: Nuxt UI Pro is free in development, but you need a license to use it in production.
|
||||
links:
|
||||
- label: Purchase a license
|
||||
to: '/pro/pricing'
|
||||
icon: i-lucide-shopping-cart
|
||||
- label: License
|
||||
to: '/getting-started/license'
|
||||
trailingIcon: i-lucide-circle-help
|
||||
variant: subtle
|
||||
111
docs/app/pages/pro/.content/templates.yml
Normal file
@@ -0,0 +1,111 @@
|
||||
title: Official Nuxt UI [Pro]{.text-(--ui-primary)} Templates
|
||||
description: 'Ready to use templates powered by our premium Vue components and Nuxt Content.<br class="hidden lg:block"> The templates are responsive, accessible and easy to customize so you can get started in no time.'
|
||||
head.title: Templates
|
||||
head.description: 'Ready to use templates powered by our premium Vue components and Nuxt Content. The templates are responsive, accessible and easy to customize so you can get started in no time.'
|
||||
navigation: false
|
||||
links:
|
||||
- label: Get started
|
||||
to: /getting-started/installation/pro/nuxt#use-an-official-template
|
||||
color: neutral
|
||||
size: xl
|
||||
trailingIcon: i-lucide-arrow-right
|
||||
- label: Purchase a license
|
||||
size: xl
|
||||
color: neutral
|
||||
variant: outline
|
||||
to: /pro/pricing
|
||||
templates:
|
||||
- title: 'Landing'
|
||||
description: "A landing page template you can use as a starting point for your next idea. You can change the content easily in [`content/index.yml`](https://github.com/nuxt-ui-pro/landing/blob/v3/content/index.yml)."
|
||||
thumbnail:
|
||||
dark: https://assets.hub.nuxt.com/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2xhbmRpbmctdGVtcGxhdGUubnV4dC5kZXYiLCJpYXQiOjE3Mzk0NjMzNzV9.ja2nUDVOoIFvyaMmg9Jn51uNMoYYt4WA1KWUQBWwUPo.jpg?theme=dark
|
||||
light: https://assets.hub.nuxt.com/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2xhbmRpbmctdGVtcGxhdGUubnV4dC5kZXYiLCJpYXQiOjE3Mzk0NjMzNzV9.ja2nUDVOoIFvyaMmg9Jn51uNMoYYt4WA1KWUQBWwUPo.jpg?theme=light
|
||||
features:
|
||||
- title: Full responsive
|
||||
icon: i-lucide-smartphone
|
||||
- title: Features, Pricing, Testimonials and FAQ sections
|
||||
icon: i-lucide-rows-3
|
||||
- title: Write content in YAML
|
||||
icon: i-simple-icons-yaml
|
||||
links:
|
||||
- label: Live preview
|
||||
to: https://v3.landing-template.nuxt.dev
|
||||
target: _blank
|
||||
trailingIcon: i-lucide-arrow-up-right
|
||||
color: neutral
|
||||
- label: Use this template
|
||||
to: https://github.com/nuxt-ui-pro/landing/tree/v3
|
||||
target: _blank
|
||||
icon: i-simple-icons-github
|
||||
color: neutral
|
||||
variant: outline
|
||||
- title: 'Docs'
|
||||
description: "A ready-to-use documentation template integrated with [Nuxt Content](https://content.nuxt.com). You can start writing your docs right away inside the [`content/`](https://github.com/nuxt-ui-pro/docs/tree/v3/content) directory."
|
||||
thumbnail:
|
||||
dark: https://assets.hub.nuxt.com/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RvY3MtdGVtcGxhdGUubnV4dC5kZXYiLCJpYXQiOjE3Mzk0NjM0MTd9.ltVAqPgKG38O01X1zl6MXfrJc55nf9OewXNFjpZ_2JY.jpg?theme=dark
|
||||
light: https://assets.hub.nuxt.com/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1cmwiOiJodHRwczovL2RvY3MtdGVtcGxhdGUubnV4dC5kZXYiLCJpYXQiOjE3Mzk0NjM0MTd9.ltVAqPgKG38O01X1zl6MXfrJc55nf9OewXNFjpZ_2JY.jpg?theme=light
|
||||
features:
|
||||
- title: Write pages in Markdown
|
||||
icon: i-simple-icons-markdown
|
||||
- title: Generated navigation & table of contents
|
||||
icon: i-lucide-text
|
||||
- title: Full-text search out of the box
|
||||
icon: i-lucide-search
|
||||
links:
|
||||
- label: Live preview
|
||||
to: https://v3.docs-template.nuxt.dev/
|
||||
target: _blank
|
||||
trailingIcon: i-lucide-arrow-up-right
|
||||
color: neutral
|
||||
- label: Use this template
|
||||
to: https://github.com/nuxt-ui-pro/docs/tree/v3
|
||||
target: _blank
|
||||
variant: outline
|
||||
icon: i-simple-icons-github
|
||||
color: neutral
|
||||
- title: 'SaaS'
|
||||
description: "A fully built SaaS application to launch your next project. It includes a landing page, a pricing page, a documentation and a blog which can customized easily from the `content/` directory."
|
||||
features:
|
||||
- title: Includes Landing & Docs sections
|
||||
icon: i-lucide-grid-2x2-plus
|
||||
- title: Customizable command palette
|
||||
icon: i-lucide-command
|
||||
- title: Authentication pages (login, register)
|
||||
icon: i-lucide-user-round-check
|
||||
links:
|
||||
- label: Live preview (soon)
|
||||
to: https://v3.saas-template.nuxt.dev
|
||||
target: _blank
|
||||
trailingIcon: i-lucide-arrow-up-right
|
||||
color: neutral
|
||||
disabled: true
|
||||
- label: Use this template (soon)
|
||||
to: https://github.com/nuxt-ui-pro/saas/tree/v3
|
||||
target: _blank
|
||||
variant: outline
|
||||
icon: i-simple-icons-github
|
||||
color: neutral
|
||||
disabled: true
|
||||
- title: 'Dashboard'
|
||||
description: "A template to illustrate how to build your own dashboard with the 15+ latest Nuxt UI Pro components, designed specifically to create a consistent look and feel."
|
||||
features:
|
||||
- title: Mix with SaaS template for a complete solution
|
||||
icon: i-lucide-puzzle
|
||||
- title: Includes custom components for charts, date pickers, etc.
|
||||
icon: i-lucide-bar-chart-big
|
||||
- title: Resizable multi-column layout
|
||||
icon: i-lucide-columns-3
|
||||
links:
|
||||
- label: Live preview (soon)
|
||||
to: https://v3.dashboard-template.nuxt.dev
|
||||
target: _blank
|
||||
trailingIcon: i-lucide-arrow-up-right
|
||||
color: neutral
|
||||
disabled: true
|
||||
- label: Use this template (soon)
|
||||
to: https://github.com/nuxt-ui-pro/dashboard/tree/v3
|
||||
target: _blank
|
||||
icon: i-simple-icons-github
|
||||
color: neutral
|
||||
variant: outline
|
||||
disabled: true
|
||||
115
docs/app/pages/pro/activate.vue
Normal file
@@ -0,0 +1,115 @@
|
||||
<script setup lang="ts">
|
||||
import { z } from 'zod'
|
||||
import type { FormSubmitEvent } from '@nuxt/ui'
|
||||
|
||||
const title = 'Activate your Nuxt UI Pro License'
|
||||
const description = 'Enable Nuxt UI Pro in your production projects by activating your license key received by email and get invited to the GitHub private repository.'
|
||||
|
||||
const route = useRoute()
|
||||
|
||||
useSeoMeta({
|
||||
title,
|
||||
description,
|
||||
ogTitle: `${title} - Nuxt UI Pro`,
|
||||
ogDescription: description
|
||||
})
|
||||
|
||||
defineOgImageComponent('Docs', {
|
||||
headline: 'Pro'
|
||||
})
|
||||
|
||||
const schema = z.object({
|
||||
license: z.string().length(36, 'Invalid license key'),
|
||||
username: z.string().min(1, 'Required')
|
||||
})
|
||||
|
||||
type Schema = z.output<typeof schema>
|
||||
|
||||
const state = reactive<Partial<Schema>>({
|
||||
license: '',
|
||||
username: ''
|
||||
})
|
||||
|
||||
const activating = ref(false)
|
||||
const successMessage = ref()
|
||||
const errorMessage = ref('')
|
||||
|
||||
async function submit(event: FormSubmitEvent<any>) {
|
||||
activating.value = true
|
||||
errorMessage.value = ''
|
||||
successMessage.value = ''
|
||||
|
||||
try {
|
||||
const res: { activationsLeft: number, activationsTotal: number } = await $fetch<{ activationsLeft: number, activationsTotal: number }>('https://api.nuxtlabs.com/ui-pro/activate', {
|
||||
method: 'POST',
|
||||
body: {
|
||||
key: event.data.license,
|
||||
username: event.data.username
|
||||
}
|
||||
})
|
||||
|
||||
successMessage.value = 'License activated!'
|
||||
if (res.activationsTotal > 1) {
|
||||
successMessage.value += ` ${res.activationsLeft} activation${res.activationsLeft > 1 ? 's' : ''} left.`
|
||||
}
|
||||
|
||||
state.username = ''
|
||||
} catch (err) {
|
||||
// @ts-expect-error this is not properly typed
|
||||
errorMessage.value = err.data?.message || err.message
|
||||
}
|
||||
|
||||
activating.value = false
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
if (route.query.license_key && !state.license) {
|
||||
state.license = route.query.license_key as string
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<UPageHero headline="License Activation" :title="title" :description="description">
|
||||
<template #top>
|
||||
<div class="absolute z-[-1] rounded-full bg-[var(--ui-primary)] blur-[300px] size-60 sm:size-80 transform -translate-x-1/2 left-1/2 -translate-y-80" />
|
||||
<StarsBg />
|
||||
</template>
|
||||
<div>
|
||||
<UCard class="lg:w-1/2 m-auto backdrop-blur-sm">
|
||||
<UForm
|
||||
:schema="schema"
|
||||
:validate-on="['blur']"
|
||||
:state="state"
|
||||
class="space-y-4"
|
||||
@submit="submit"
|
||||
>
|
||||
<UFormField label="License Key" name="license">
|
||||
<UInput v-model="state.license" autocomplete="off" :ui="{ root: 'flex' }" />
|
||||
</UFormField>
|
||||
<UFormField label="GitHub Username" name="username">
|
||||
<UInput v-model="state.username" autocomplete="off" :ui="{ root: 'flex' }" />
|
||||
</UFormField>
|
||||
<UButton type="submit" :loading="activating" :disabled="state.license.length !== 36 || !state.username">
|
||||
Activate the license
|
||||
</UButton>
|
||||
<UAlert v-if="successMessage" color="success" variant="subtle" :title="successMessage">
|
||||
<template #description>
|
||||
The GitHub invitation to <NuxtLink to="https://github.com/nuxt/ui-pro/invitations" external target="_blank" class="font-bold text-primary hover:underline">
|
||||
Nuxt UI Pro repository
|
||||
</NuxtLink> has been sent and
|
||||
you can now use your license key in your projects, checkout the
|
||||
<NuxtLink class="font-bold underline" to="/pro/getting-started/installation">
|
||||
installation guide
|
||||
</NuxtLink>
|
||||
</template>
|
||||
</UAlert>
|
||||
<UAlert v-else-if="errorMessage" color="error" variant="subtle" :title="errorMessage" />
|
||||
</UForm>
|
||||
</UCard>
|
||||
<p class="text-sm text-center text-neutral-500 dark:text-neutral-400 my-4">
|
||||
If you purchased a license with multiple seats, activate the license key for each of your team members.
|
||||
</p>
|
||||
</div>
|
||||
</UPageHero>
|
||||
</template>
|
||||
111
docs/app/pages/pro/index.vue
Normal file
@@ -0,0 +1,111 @@
|
||||
<script setup lang="ts">
|
||||
// @ts-expect-error yaml is not typed
|
||||
import page from '.content/pro.yml'
|
||||
|
||||
useSeoMeta({
|
||||
title: page.title,
|
||||
ogTitle: page.title,
|
||||
description: page.description,
|
||||
ogDescription: page.description
|
||||
})
|
||||
defineOgImageComponent('Docs', {
|
||||
headline: 'Pro'
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="relative">
|
||||
<UPageHero
|
||||
:links="page.hero.links"
|
||||
class="relative"
|
||||
orientation="horizontal"
|
||||
>
|
||||
<template #title>
|
||||
<MDC :value="page.hero.title" unwrap="p" />
|
||||
</template>
|
||||
<template #description>
|
||||
<MDC :value="page.hero.description" unwrap="p" />
|
||||
</template>
|
||||
<template #top>
|
||||
<div class="absolute z-[-1] rounded-full bg-[var(--ui-primary)] blur-[300px] size-60 sm:size-80 transform -translate-x-1/2 left-1/2 -translate-y-80" />
|
||||
<StarsBg />
|
||||
</template>
|
||||
|
||||
<PromotionalVideo />
|
||||
</UPageHero>
|
||||
|
||||
<UPageSection
|
||||
v-bind="page.features"
|
||||
:ui="{ title: 'text-left', description: 'text-left' }"
|
||||
/>
|
||||
|
||||
<UPageCTA
|
||||
:description="page.authorQuote.quote"
|
||||
variant="soft"
|
||||
class="rounded-none"
|
||||
:ui="{ container: 'sm:py-12 lg:py-12 sm:gap-8', description: 'before:content-[open-quote] after:content-[close-quote]' }"
|
||||
>
|
||||
<UUser
|
||||
v-bind="page.authorQuote.user"
|
||||
size="xl"
|
||||
class="justify-center"
|
||||
/>
|
||||
</UPageCTA>
|
||||
|
||||
<UPageSection
|
||||
v-for="(section, index) in page.sections"
|
||||
:key="index"
|
||||
v-bind="section"
|
||||
orientation="horizontal"
|
||||
>
|
||||
<MDC :value="section.code" />
|
||||
</UPageSection>
|
||||
|
||||
<UPageSection
|
||||
id="templates"
|
||||
v-bind="page.templates"
|
||||
class="overflow-hidden"
|
||||
>
|
||||
<UCarousel
|
||||
v-slot="{ item }"
|
||||
loop
|
||||
arrows
|
||||
dots
|
||||
:autoplay="{ delay: 3000 }"
|
||||
:items="(page.templates.items as any[])"
|
||||
:ui="{ item: 'basis-1/2', container: 'py-2' }"
|
||||
>
|
||||
<UPageCard
|
||||
:to="item.to"
|
||||
:description="item.description"
|
||||
class="group"
|
||||
:ui="{ container: 'p-4 sm:p-4', title: 'flex items-center gap-1' }"
|
||||
>
|
||||
<template #title>
|
||||
<UIcon :name="item.icon" />
|
||||
<span>
|
||||
{{ item.title }}
|
||||
</span>
|
||||
</template>
|
||||
<img
|
||||
:src="item.image"
|
||||
:alt="item.title"
|
||||
class="rounded-lg grayscale group-hover:grayscale-0 transition-all duration-200 ease-in-out"
|
||||
>
|
||||
</UPageCard>
|
||||
</UCarousel>
|
||||
</UPageSection>
|
||||
|
||||
<USeparator />
|
||||
|
||||
<UPageCTA
|
||||
v-bind="page.cta"
|
||||
variant="naked"
|
||||
class="overflow-hidden"
|
||||
>
|
||||
<div class="absolute rounded-full dark:bg-[var(--ui-primary)] blur-[250px] size-40 sm:size-50 transform -translate-x-1/2 left-1/2 -translate-y-80" />
|
||||
|
||||
<StarsBg />
|
||||
</UPageCTA>
|
||||
</div>
|
||||
</template>
|
||||
114
docs/app/pages/pro/pricing.vue
Normal file
@@ -0,0 +1,114 @@
|
||||
<script setup lang="ts">
|
||||
// @ts-expect-error yaml is not typed
|
||||
import page from '.content/pricing.yml'
|
||||
|
||||
useSeoMeta({
|
||||
title: page.title,
|
||||
ogTitle: page.title,
|
||||
description: page.description,
|
||||
ogDescription: page.description
|
||||
})
|
||||
defineOgImageComponent('Docs', {
|
||||
headline: 'Pro'
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="relative">
|
||||
<UPageHero
|
||||
class="relative"
|
||||
:description="page.pricing.description"
|
||||
>
|
||||
<template #title>
|
||||
<MDC :value="page.pricing.title" unwrap="p" />
|
||||
</template>
|
||||
<template #top>
|
||||
<div class="absolute z-[-1] rounded-full bg-[var(--ui-primary)] blur-[300px] size-60 sm:size-80 transform -translate-x-1/2 left-1/2 -translate-y-80" />
|
||||
<StarsBg />
|
||||
</template>
|
||||
<UContainer>
|
||||
<UPricingPlan
|
||||
v-bind="page.pricing.freePlan"
|
||||
class="mb-16"
|
||||
/>
|
||||
<UPricingPlans
|
||||
class="mb-16"
|
||||
scale
|
||||
>
|
||||
<UPricingPlan
|
||||
v-for="(plan, index) in page.pricing.plans"
|
||||
:key="index"
|
||||
:title="plan.title"
|
||||
:description="plan.description"
|
||||
:price="plan.price"
|
||||
:billing-period="plan.billing_period"
|
||||
:billing-cycle="plan.billing_cycle"
|
||||
:highlight="plan.highlight"
|
||||
:scale="plan.highlight"
|
||||
variant="soft"
|
||||
:features="plan.features"
|
||||
:button="plan.button"
|
||||
/>
|
||||
</UPricingPlans>
|
||||
<UPricingPlan
|
||||
v-bind="page.pricing.figma"
|
||||
>
|
||||
<template #features>
|
||||
<li v-for="(feature, index) in page.pricing.figma.features" :key="index" class="flex items-center gap-2 min-w-0">
|
||||
<UIcon name="i-lucide-circle-check" class="size-5 text-(--ui-primary) shrink-0" />
|
||||
<MDC :value="feature" unwrap="p" class="text-sm truncate text-(--ui-text-toned)" />
|
||||
</li>
|
||||
</template>
|
||||
</UPricingPlan>
|
||||
</UContainer>
|
||||
</UPageHero>
|
||||
|
||||
<UPageSection
|
||||
id="testimonials"
|
||||
v-bind="page.testimonials"
|
||||
>
|
||||
<UPageMarquee pause-on-hover :ui="{ root: '[--duration:40s]' }">
|
||||
<img
|
||||
v-for="(logo, index) in page.logos"
|
||||
:key="index"
|
||||
v-bind="logo"
|
||||
class="h-6 shrink-0 max-w-[140px] filter invert dark:invert-0"
|
||||
>
|
||||
</UPageMarquee>
|
||||
<UContainer>
|
||||
<UPageColumns class="xl:columns-4">
|
||||
<UPageCard
|
||||
v-for="(testimonial, index) in page.testimonials.items"
|
||||
:key="index"
|
||||
variant="subtle"
|
||||
:description="testimonial.quote"
|
||||
:ui="{ description: 'before:content-[open-quote] after:content-[close-quote]' }"
|
||||
>
|
||||
<template #footer>
|
||||
<UUser
|
||||
v-bind="testimonial.user"
|
||||
size="xl"
|
||||
/>
|
||||
</template>
|
||||
</UPageCard>
|
||||
</UPageColumns>
|
||||
</UContainer>
|
||||
</UPageSection>
|
||||
|
||||
<UPageSection
|
||||
id="faq"
|
||||
v-bind="page.faq"
|
||||
class="scroll-mt-[var(--header-height)]"
|
||||
>
|
||||
<UPageAccordion
|
||||
multiple
|
||||
:items="(page.faq.items as any[])"
|
||||
class="max-w-4xl mx-auto"
|
||||
>
|
||||
<template #body="{ item }">
|
||||
<MDC :value="item.content" unwrap="p" />
|
||||
</template>
|
||||
</UPageAccordion>
|
||||
</UPageSection>
|
||||
</div>
|
||||
</template>
|
||||
69
docs/app/pages/pro/templates.vue
Normal file
@@ -0,0 +1,69 @@
|
||||
<script setup lang="ts">
|
||||
// @ts-expect-error yaml is not typed
|
||||
import page from '.content/templates.yml'
|
||||
|
||||
const title = page.head?.title || page.title
|
||||
const description = page.head?.description || page.description
|
||||
useSeoMeta({
|
||||
title,
|
||||
description,
|
||||
ogTitle: `${title} - Nuxt UI Pro`,
|
||||
ogDescription: description
|
||||
})
|
||||
defineOgImageComponent('Docs', {
|
||||
headline: 'Pro'
|
||||
})
|
||||
</script>
|
||||
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<template>
|
||||
<div class="relative">
|
||||
<UPageHero :links="page.links">
|
||||
<template #top>
|
||||
<div class="absolute z-[-1] rounded-full bg-[var(--ui-primary)] blur-[300px] size-60 sm:size-80 transform -translate-x-1/2 left-1/2 -translate-y-80" />
|
||||
<StarsBg />
|
||||
</template>
|
||||
|
||||
<template #title>
|
||||
<MDC :value="page.title" unwrap="p" />
|
||||
</template>
|
||||
|
||||
<template #description>
|
||||
<MDC :value="page.description" unwrap="p" />
|
||||
</template>
|
||||
</UPageHero>
|
||||
|
||||
<UPageSection
|
||||
v-for="(template, index) in page.templates"
|
||||
:key="index"
|
||||
:title="template.title"
|
||||
:links="template.links"
|
||||
:features="template.features"
|
||||
orientation="horizontal"
|
||||
reverse
|
||||
class="*:!pt-0"
|
||||
:ui="{ title: 'lg:text-4xl' }"
|
||||
>
|
||||
<template #description>
|
||||
<MDC :value="template.description" unwrap="p" />
|
||||
</template>
|
||||
|
||||
<UColorModeImage
|
||||
v-if="template.thumbnail"
|
||||
v-bind="template.thumbnail"
|
||||
class="w-full h-auto rounded-(--ui-radius) border border-(--ui-border)"
|
||||
width="656"
|
||||
height="369"
|
||||
/>
|
||||
<UCarousel
|
||||
v-else-if="template.images"
|
||||
v-slot="{ item }"
|
||||
:items="(template.images as any[])"
|
||||
dots
|
||||
>
|
||||
<NuxtImg v-bind="item" class="w-full h-full object-cover" width="576" height="360" />
|
||||
</UCarousel>
|
||||
<Placeholder v-else class="w-full h-full aspect-video" />
|
||||
</UPageSection>
|
||||
</div>
|
||||
</template>
|
||||
31
docs/app/pages/pro/terms.vue
Normal file
@@ -0,0 +1,31 @@
|
||||
<script setup lang="ts">
|
||||
const { data: page } = await useAsyncData('terms', () => queryCollection('content').path('/pro/terms').first())
|
||||
if (!page.value) {
|
||||
throw createError({ statusCode: 404, statusMessage: 'Page not found', fatal: true })
|
||||
}
|
||||
|
||||
const title = page.value.title
|
||||
const description = page.value.description
|
||||
useSeoMeta({
|
||||
title,
|
||||
description,
|
||||
ogTitle: `${title} - Nuxt UI Pro`,
|
||||
ogDescription: description
|
||||
})
|
||||
|
||||
defineOgImageComponent('Docs', {
|
||||
headline: 'Pro'
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<UContainer>
|
||||
<UPage v-if="page">
|
||||
<UPageHeader :title="page.title" :description="page.description" />
|
||||
|
||||
<UPageBody prose>
|
||||
<ContentRenderer v-if="page.body" :value="page" />
|
||||
</UPageBody>
|
||||
</UPage>
|
||||
</UContainer>
|
||||
</template>
|
||||
@@ -112,7 +112,7 @@ Key points to consider:
|
||||
::
|
||||
|
||||
::accordion-item{label="What about Nuxt UI Pro?"}
|
||||
We've also rebuilt Nuxt UI Pro from scratch and released a `v3.0.0-alpha.x` package but it only contains the components to build this documentation yet. This will be a free update, so the license you buy now will be valid for v3. We're actively working to finish the rewrite of all Nuxt UI Pro components.
|
||||
We've also rebuilt Nuxt UI Pro from scratch and released a `v3.0.0-alpha.x` package with almost all components ready. This is a free update, so the license you buy now is valid for all UI Pro versions. We're actively working to finish the rewrite of all Nuxt UI Pro components.
|
||||
::
|
||||
|
||||
::accordion-item{label="Will Nuxt UI v3 work with other CSS frameworks like UnoCSS?"}
|
||||
|
||||
53
docs/content/pro/terms.md
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: 'Conditions Générales de Vente de Nuxt UI Pro'
|
||||
head.title: 'Conditions Générales de Vente'
|
||||
description: 'Dernière mise à jour : 20 août 2024'
|
||||
navigation: false
|
||||
---
|
||||
|
||||
## 1. Introduction
|
||||
|
||||
Les présentes conditions générales de vente (ci-après "CGV") régissent les relations contractuelles entre NuxtLabs (ci-après "nous" ou "l'Entreprise") et toute personne physique ou morale (ci-après "Client") souhaitant acquérir une licence pour le produit Nuxt UI Pro (ci-après "Produit").
|
||||
|
||||
## 2. Acceptation des Conditions Générales de Vente
|
||||
|
||||
En achetant une licence pour Nuxt UI Pro, le Client accepte sans réserve les présentes CGV. Toute condition contraire posée par le Client sera, sauf acceptation formelle et écrite de notre part, inopposable.
|
||||
|
||||
## 3. Description du Produit
|
||||
|
||||
Nuxt UI Pro est un ensemble d'outils et de composants pour le développement d'interfaces utilisateur avec le framework Nuxt. Le produit est accessible via un paiement unique, tel que décrit sur notre [page de tarification](/pro/pricing).
|
||||
|
||||
## 4. Modalités de paiement
|
||||
|
||||
Le paiement pour l'acquisition d'une licence Nuxt UI Pro est unique et doit être effectué en totalité au moment de l'achat. Les tarifs sont indiqués en dollars américains (USD) et n'incluent pas les taxes applicables. Le Client est responsable du paiement de toutes les taxes, droits ou autres charges imposés par les autorités fiscales compétentes.
|
||||
|
||||
## 5. Droit de rétractation et remboursement
|
||||
|
||||
Le Client dispose d'un droit de rétractation de 14 jours à compter de la date d'achat. Passé ce délai, aucun remboursement ne sera effectué.
|
||||
|
||||
## 6. Propriété intellectuelle
|
||||
|
||||
NuxtLabs reste propriétaire exclusif de tous les droits de propriété intellectuelle relatifs au Produit. La licence concédée au Client est non exclusive, non transférable, et strictement limitée à l'utilisation personnelle ou professionnelle du Produit.
|
||||
|
||||
## 7. Responsabilité
|
||||
|
||||
NuxtLabs s'engage à fournir un service de qualité, mais ne saurait être tenu responsable des dommages directs ou indirects résultant de l'utilisation du Produit. La responsabilité de NuxtLabs, en tout état de cause, sera limitée au montant payé par le Client pour l'achat du Produit.
|
||||
|
||||
## 8. Support technique
|
||||
|
||||
Un support technique est fourni aux Clients selon les modalités spécifiées sur notre site web. Pour toute assistance, le Client peut envoyer un email à l'adresse suivante : ui-pro@nuxt.com.
|
||||
|
||||
## 9. Modifications des CGV
|
||||
|
||||
NuxtLabs se réserve le droit de modifier les présentes CGV à tout moment. Les modifications entreront en vigueur dès leur publication sur notre site web.
|
||||
|
||||
## 10. Mentions Légales
|
||||
|
||||
- Nom de l'Entreprise : NuxtLabs
|
||||
- Adresse : 10 rue Rolland 33000 Bordeaux
|
||||
- Numéro d'Identification Fiscale : FR92828193722
|
||||
- Contact : Vous pouvez nous contacter par email à l'adresse suivante : legal@nuxtlabs.com.
|
||||
|
||||
## 11. Loi applicable et juridiction compétente
|
||||
|
||||
Les présentes CGV sont soumises au droit français. En cas de litige, les parties s'efforceront de résoudre le différend à l'amiable. À défaut, les tribunaux compétents seront ceux du ressort de la Cour d'appel de Paris.
|
||||
@@ -1,5 +1,6 @@
|
||||
import { createResolver } from '@nuxt/kit'
|
||||
import pkg from '../package.json'
|
||||
import yaml from '@rollup/plugin-yaml'
|
||||
|
||||
const { resolve } = createResolver(import.meta.url)
|
||||
|
||||
@@ -111,6 +112,12 @@ export default defineNuxtConfig({
|
||||
}
|
||||
},
|
||||
|
||||
vite: {
|
||||
plugins: [
|
||||
yaml()
|
||||
]
|
||||
},
|
||||
|
||||
componentMeta: {
|
||||
exclude: [
|
||||
'@nuxt/content',
|
||||
|
||||
@@ -14,8 +14,10 @@
|
||||
"@nuxthub/core": "^0.8.17",
|
||||
"@nuxtjs/plausible": "^1.2.0",
|
||||
"@octokit/rest": "^21.1.0",
|
||||
"@rollup/plugin-yaml": "^4.1.2",
|
||||
"@vueuse/nuxt": "^12.6.1",
|
||||
"joi": "^17.13.3",
|
||||
"motion": "^12.4.2",
|
||||
"nuxt": "^3.15.4",
|
||||
"nuxt-component-meta": "^0.10.0",
|
||||
"nuxt-og-image": "^4.1.2",
|
||||
|
||||
BIN
docs/public/pro/figma/component.png
Normal file
|
After Width: | Height: | Size: 163 KiB |
BIN
docs/public/pro/figma/local-variables-result.png
Normal file
|
After Width: | Height: | Size: 216 KiB |
BIN
docs/public/pro/figma/local-variables.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
docs/public/pro/figma/nuxt-ui-figma-to-code.png
Normal file
|
After Width: | Height: | Size: 224 KiB |
BIN
docs/public/pro/figma/nuxt-ui-figma.png
Normal file
|
After Width: | Height: | Size: 570 KiB |
BIN
docs/public/pro/figma/og-image.png
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
docs/public/pro/figma/step-1.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/public/pro/figma/step-2.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
docs/public/pro/figma/step-3.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
docs/public/pro/figma/step-4.png
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
docs/public/pro/figma/teampad-dev-nuxt-ui-plugin.gif
Normal file
|
After Width: | Height: | Size: 150 KiB |
1
docs/public/pro/logos/applause.svg
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
1
docs/public/pro/logos/blizzard.svg
Normal file
|
After Width: | Height: | Size: 25 KiB |
1
docs/public/pro/logos/bodet.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 67 22"><g clip-path="url(#a)"><path fill="#fff" fill-rule="evenodd" d="M66.7284 19.9751c0 1.0484-.886 1.9301-2.0064 1.9301H2.90773c-1.05305 0-1.989761-.8817-1.989761-1.9301V2.02325c0-1.064491.936711-1.9295 1.989761-1.9295H64.722c1.1204 0 2.0064.865009 2.0064 1.9295V19.9751Z" clip-rule="evenodd"/><path stroke="#000" stroke-width=".0608555" d="M66.7284 19.9751c0 1.0484-.886 1.9301-2.0064 1.9301H2.90773c-1.05305 0-1.989761-.8817-1.989761-1.9301V2.02325c0-1.064491.936711-1.9295 1.989761-1.9295H64.722c1.1204 0 2.0064.865009 2.0064 1.9295V19.9751Z"/><path fill="#000" fill-rule="evenodd" d="M19.1755 8.49598c.3848-.33247.5853-.84837.5853-1.34766 0-1.14817-.9702-2.07968-2.2076-2.07968h-4.8655L9.84591 14.868c-.13423.4162-.51847.7154-.98681.7154-.5519 0-.97013-.4328-.97013-.9814L10.899 4.10391c.167-.46604.602-.81573 1.1539-.81573l6.1023-.0333c2.0399 0 3.6956 1.68071 3.6956 3.7604 0 1.56376-1.4546 3.04442-2.2905 3.54372.8019.6323 1.3037 1.6469 1.3037 2.7452 0 .7985-.4678 1.7638-.6355 2.063h-.0334c-.9863 1.5306-2.7589 2.4959-5.0159 2.4959l-9.0289-.0338c-.51847 0-.98624-.3824-.98624-.8983 0-.5491.46777-.9647.98624-.9647l9.2962.0333c1.6055 0 2.7928-.7985 3.2104-1.8137l.0835-.2161c.0501-.1663.1003-.2998.1003-.5492 0-1.0478-.9362-1.9467-2.1235-1.9467h-2.8083c-.5018 0-.9368-.4654-.9368-.9481 0-.54915.435-.98192.9368-.98192h3.0929c.9027-.0832 1.6551-.44886 2.1234-.96477l.0503-.08313ZM29.7128 15.749c0 .1329-.1336.266-.2673.266h-5.8022l1.4212-4.5583c0-.133.1342-.266.2678-.266h5.7683l-1.3878 4.5583Zm1.7726-6.38865H25.466c-.9862 0-1.8227.56579-2.09 1.36425l-1.6885 5.3735v.2161c0 .7991.6683 1.4646 1.5548 1.5477h6.2533c1.0196 0 1.8561-.6156 2.1234-1.4141l1.6049-5.5403c0-.8816-.7522-1.54715-1.7385-1.54715ZM41.2748 15.6995c0 .1835-.1336.266-.2679.266h-5.7682l1.3878-4.5084c0-.1329.1342-.266.2678-.266h5.7516l-1.3711 4.5084Zm3.9963-9.83257c-.5352-.13292-1.0197.08319-1.1539.53253l-.8526 2.87819v.08319h-6.2372c-.9862 0-1.8222.5658-2.0895 1.36426l-1.6383 5.3408c-.034.0832-.034.1663-.034.2161 0 .7985.6527 1.4474 1.5387 1.5472h6.2534c1.0197 0 1.8561-.5818 2.1234-1.4136l1.605-5.5076.5185-1.76324.6354-2.21268c.1169-.4494-.1839-.93215-.6689-1.06515ZM48.5175 11.4723c0-.1329.1336-.2659.2506-.2659h5.7688l-.4349 1.5471-5.986-.0499.4015-1.2313Zm7.0898 2.8616 1.0196-3.4606c0-.8484-.7529-1.54713-1.7391-1.54713h-6.0195c-.9862 0-1.8221.56576-2.1234 1.36423l-1.6551 5.3242v.2161c0 .7985.6689 1.464 1.522 1.5472h6.2863c1.0202 0 1.8561-.6157 2.1234-1.4142l.1003-.3491h-8.0755l.4511-1.6308 8.1099-.0499ZM61.4124 17.83c.5185 0 .92-.399.92-.8816 0-.4993-.4015-.8817-.92-.8817h-2.8089l1.4211-4.8254h1.8228c.5345 0 .9361-.4156.9361-.9481 0-.53256-.4016-.93154-.9361-.93154h-1.2375l.0335-.18343.6354-2.19606c.1336-.44883-.1837-.93148-.7189-1.06446-.4851-.13292-1.0197.08319-1.1038.53253l-.8526 2.86156-2.0733 7.104c-.0836.7986.6187 1.4142 1.3711 1.4142h3.5111Z" clip-rule="evenodd"/></g><defs><clipPath id="a"><path fill="#fff" d="M.816406 0h66v22h-66z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
1
docs/public/pro/logos/bosch.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 61 14"><g fill="#fff" clip-path="url(#a)"><path fill-rule="evenodd" d="M25.789 6.77516c.363-.14045.6744-.38842.8926-.71073.2182-.3223.3327-.70356.3282-1.09274 0-1.62312-1.1514-2.42774-2.7329-2.42774h-4.148v8.82585h4.5087c1.3873 0 2.7468-.9711 2.7468-2.45545 0-1.76462-1.5954-2.12254-1.5954-2.13919Zm-3.4959-2.4h1.6092c.1031-.00639.2064.00761.304.04119.0976.03358.1877.08608.265.15451.0773.06842.1404.15142.1856.24424.0452.09282.0716.19365.0778.29671v.09572c-.0044.21698-.0943.42343-.2502.5744-.1559.15097-.3652.23422-.5822.23161h-1.6231l.0139-1.63838Zm1.6231 5.14682h-1.6093v-1.7341h1.5677c.7907 0 1.1653.34682 1.1653.86011 0 .64093-.4717.87399-1.1237.87399ZM32.1563 2.32129c-2.5526 0-4.0508 2.03931-4.0508 4.61965 0 2.58035 1.4982 4.61966 4.0508 4.61966s4.0509-2.02544 4.0509-4.61966c0-2.59422-1.4844-4.61965-4.0509-4.61965Zm0 7.13064c-1.2485 0-1.8728-1.1237-1.8728-2.51099 0-1.38728.6243-2.49711 1.8728-2.49711 1.2486 0 1.8867 1.1237 1.8867 2.49711 0 1.40116-.6381 2.51099-1.8867 2.51099ZM40.9121 6.01166l-.3052-.06936c-.7491-.1526-1.3457-.34682-1.3457-.88786 0-.58266.5688-.8185 1.0682-.8185.3408.00508.6768.08038.9871.22122.3103.14083.5883.34416.8164.59728l1.3734-1.35954c-.6243-.70751-1.637-1.38728-3.2185-1.38728-1.8589 0-3.274 1.04046-3.274 2.77456 0 1.58151 1.1376 2.35839 2.5249 2.64971l.3052.06937c1.1514.23584 1.5815.41618 1.5815.9711 0 .52717-.4717.87399-1.1931.87399-.8601 0-1.637-.37457-2.2335-1.13758l-1.4011 1.38729c.7768.92944 1.7618 1.65084 3.6624 1.65084 1.6509 0 3.4127-.9433 3.4127-2.87165.0277-2.01156-1.4983-2.4-2.7607-2.66359ZM48.6115 9.45172c-.9711 0-1.9838-.80462-1.9838-2.56647 0-1.56763.9433-2.44162 1.9283-2.44162.7769 0 1.2347.36069 1.5954.98497l1.7757-1.17919c-.8879-1.34566-1.9422-1.91445-3.3989-1.91445-2.6635 0-4.1063 2.06705-4.1063 4.56416 0 2.62197 1.5953 4.67518 4.0786 4.67518 1.748 0 2.5803-.6104 3.4821-1.91448L50.193 8.45565c-.3607.57989-.7492.99607-1.5815.99607ZM57.8497 2.54395v3.24624h-2.6775V2.54395h-2.3167v8.82315h2.3167V7.88499h2.6775v3.48211h2.3168V2.54395h-2.3168Z" clip-rule="evenodd"/><path d="M6.78436.295898c-1.3225 0-2.61531.392169-3.71493 1.126912-1.09962.73475-1.95667 1.77907-2.462776 3.0009-.506101 1.22184-.6385196 2.56631-.380512 3.8634C.48415 9.58421 1.121 10.7757 2.05615 11.7108c.93515.9352 2.12661 1.572 3.4237 1.83 1.2971.258 2.64157.1256 3.86341-.3805 1.22184-.5061 2.26614-1.3631 3.00094-2.4628.7347-1.09959 1.1269-2.39239 1.1269-3.7149 0-1.77342-.7045-3.47421-1.9585-4.72821S8.55779.295898 6.78436.295898Zm0 12.749102c-1.19903 0-2.37114-.3555-3.3681-1.0217-.99696-.6661-1.774-1.6129-2.23285-2.72071C.724561 8.19483.604504 6.97588.838425 5.79988c.233915-1.17599.811305-2.25621 1.659155-3.10406.84785-.84785 1.92807-1.42524 3.10406-1.65916 1.176-.233916 2.39495-.11386 3.50271.34499 1.10775.45885 2.05455 1.23589 2.72075 2.23285.6661.99696 1.0217 2.16907 1.0217 3.3681-.0004 1.60775-.6392 3.1495-1.7761 4.2864-1.1368 1.1368-2.67859 1.7757-4.28634 1.776Z"/><path d="M9.5465 2.80664h-.4578v2.28902H4.49679V2.80664h-.47168c-.69085.45577-1.25783 1.07582-1.65012 1.80459-.3923.72877-.59765 1.54349-.59765 2.37113 0 .82765.20535 1.64237.59765 2.37114.39229.7288.95927 1.3488 1.65012 1.8046h.47168V8.87184H9.0887v2.28906h.4578c.6912-.4556 1.2584-1.0756 1.6509-1.80436.3925-.7288.598-1.54363.598-2.3714 0-.82778-.2055-1.64261-.598-2.37141-.3925-.7288-.9597-1.34877-1.6509-1.80432v-.00277ZM3.85864 10.2591c-.43025-.38226-.78098-.84556-1.03217-1.3634-.25118-.51784-.39791-1.08009-.43179-1.65465-.03388-.57455.04575-1.15015.23433-1.69392.18859-.54378.48244-1.04508.86477-1.47529.1146-.128.23642-.24936.36486-.36347v6.55073ZM9.0887 8.23369H4.49679V5.71994H9.0887v2.51375Zm.62427 2.01161V3.70837c.42923.3854.77823.85159 1.02723 1.37193.2489.52034.3929 1.08464.4237 1.66065.0308.57601-.0522 1.15244-.2443 1.69636-.192.54391-.4894 1.04466-.8751 1.47361-.10487.11598-.21553.22668-.33153.33158v.0028Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M.09375.271484h60.0694v13.4566H.09375z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
1
docs/public/pro/logos/churnkey.svg
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
1
docs/public/pro/logos/exxonmobil.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 115 22"><g clip-path="url(#a)"><mask id="b" width="115" height="22" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M.902344 0H114.514v21.272H.902344V0Z"/></mask><g mask="url(#b)"><path fill="#fff" fill-rule="evenodd" d="M58.8727 0h5.4856l2.5897 11.2237h.1165L69.7189 0h5.3296v15.3768H71.785V3.7662h-.1484l-2.8748 11.6106h-3.6665l-2.809-11.6106h-.1485v11.6106h-3.2651V0ZM.898438 0H11.1014v2.86506H4.36901v3.18755h6.42949v2.78122H4.36901v3.67327h6.73239v2.8697H.898438V0ZM15.7632 15.3768l3.4953-4.4596 2.181 2.19-4.9896 6.2011h3.904l3.1946-4.1087 6.0127 6.0724h4.7115l-8.641-8.6235 6.8048-8.53422H28.532l-5.0297 6.40822-2.1772-2.17007 5.5945-6.99446h-3.8955l-3.8196 4.87985-2.0754-2.12354h-4.6469l4.681 4.69035-5.29 6.57217h3.89Zm78.4697 0 .0351-.8666c.2344.1757 1.2733 1.1243 3.4495 1.1243 2.8605 0 5.5155-2.5438 5.5155-5.88751 0-3.35025-2.492-5.89403-5.4776-5.89403-2.2824 0-3.3271 1.0384-3.4874 1.1542V0h-3.2254v15.3768h3.1903Zm5.5936-5.63788c0 1.58798-1.2269 2.82198-2.8338 2.82198-1.6245 0-2.8446-1.2298-2.8446-2.81391 0-1.60348 1.2364-2.82039 2.8483-2.82039 1.62 0 2.8301 1.22791 2.8301 2.81232ZM111.147 0h3.363V15.3768h-3.363V0Zm-5.956 2.86541h3.362V0h-3.362v2.86541Zm0 1.24887h3.362V15.3768h-3.362V4.11428ZM31.4311 9.74665c0 3.24875 2.6226 5.88735 6.0544 5.88735 3.4325 0 6.0544-2.6386 6.0544-5.88735 0-3.24854-2.6219-5.89335-6.0544-5.89335-3.4318 0-6.0544 2.64481-6.0544 5.89335Zm3.2748-.00017c0-1.55727 1.1717-2.83603 2.8007-2.83603 1.6296 0 2.8016 1.27876 2.8016 2.83603 0 1.55672-1.172 2.83622-2.8016 2.83622-1.629 0-2.8007-1.2795-2.8007-2.83622Zm42.2854-.00104c0 3.24886 2.6226 5.88716 6.0542 5.88716 3.4327 0 6.0548-2.6386 6.0548-5.88716 0-3.24853-2.6221-5.89334-6.0548-5.89334-3.4316 0-6.0542 2.64481-6.0542 5.89334Zm3.2747-.00034c0-1.55744 1.1717-2.83586 2.8008-2.83586 1.6296 0 2.8018 1.27842 2.8018 2.83586 0 1.5568-1.1722 2.8362-2.8018 2.8362-1.6291 0-2.8008-1.2794-2.8008-2.8362ZM45.3924 4.11428h3.1413v1.06503c.3374-.29224 1.4261-1.32738 3.4375-1.32738 2.3666 0 4.2461 1.73543 4.2461 4.45858v7.06629h-3.3186V9.18535c0-1.51775-.7445-2.41802-2.0945-2.41802-1.3088 0-2.0953.84839-2.0953 2.41802v6.19145h-3.3165V4.11428Z" clip-rule="evenodd"/></g></g><defs><clipPath id="a"><path fill="#fff" d="M.867188 0h113.612v22H.867188z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
1
docs/public/pro/logos/funda.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 61 22"><g clip-path="url(#a)"><path fill="#A5A5A5" d="M46.0848 22H.445312L4.14409 8.15803C5.42918 3.34574 9.78264 0 14.7566 0h45.6395l-3.6987 13.842c-1.2851 4.8112-5.6386 8.1569-10.6137 8.1569l.0011.0011Z"/><path fill="#3C3C3C" d="M6.37849 8.76943 3.47656 19.631H46.1337c3.9038 0 7.3193-2.6264 8.3278-6.4013l2.9019-10.86154H14.7062c-3.9037 0-7.31928 2.62628-8.32771 6.40127Z"/><path fill="#fff" fill-rule="evenodd" d="M43.0072 15.9698c.4562.4028 1.0922.6036 1.9044.6036.5842 0 1.1143-.1192 1.5893-.3564.4684-.2307.8354-.5297 1.0977-.8971.0078-.0111.0254-.0056.0254.0077v1.067c0 .0155.0121.0276.0275.0276h1.7678c.0155 0 .0276-.0121.0276-.0276v-4.5275c0-.9424-.2964-1.6784-.8905-2.20919-.5941-.53081-1.4394-.79561-2.5349-.79561-.831 0-1.5309.15999-2.0963.47997-.2524.14129-.486.30128-.702.48003-.0122.00996-.0133.02762-.0033.03862l1.0492 1.24578c.0099.0122.0275.0133.0397.0034.3174-.2781.6326-.447.9257-.5452.2249-.0827.4828-.1246.7737-.1246.539 0 .9413.1235 1.2058.3707.2645.2472.3979.5716.3979.9744v.0684c0 .0155-.0121.0276-.0276.0276h-1.9188c-1.0327 0-1.845.2196-2.439.6588-.5941.4392-.8906 1.0472-.8906 1.8251 0 .6588.2237 1.194.6713 1.6056v-.0011Zm3.1245-1.056c-.2194.064-.4431.096-.6712.096-.7671 0-1.1506-.2693-1.1506-.81 0-.2924.119-.5208.3559-.6864.2469-.1644.6536-.2471 1.2201-.2471h1.7061c.0177 0 .0309.0165.0265.033-.0596.2693-.1466.5728-.3439.8431-.13.1777-.3339.3763-.5257.4955-.1918.1191-.3979.2107-.6172.2748v.0011ZM35.4275 16.3101c.4331.1755.8795.2626 1.3391.2626.4882 0 .9291-.1015 1.3258-.3046.3924-.2052.7197-.4844.9832-.8364.0076-.011.0253-.0055.0253.0078v.9534c0 .0154.0121.0275.0276.0275h1.8229c.0154 0 .0275-.0121.0275-.0275V5.54126c0-.01545-.0121-.02759-.0275-.02759h-1.8229c-.0155 0-.0276.01214-.0276.02759v4.32676c0 .0132-.0166.01876-.0253.0088-.2535-.33434-.5721-.5948-.9556-.78235-.3868-.19311-.8288-.29021-1.3259-.29021-.4971 0-.939.09264-1.3809.27695-.4332.17545-.8145.43365-1.1463.77465-.3317.34094-.5984.75144-.8013 1.23034-.1928.4789-.2898 1.0141-.2898 1.6034 0 .5892.1014 1.1388.3042 1.6176.2028.4702.4695.8751.8012 1.2161.3318.341.7131.6036 1.1463.7879v-.0011Zm1.7182-1.5316c1.1638 0 2.1073-.9446 2.1073-2.1099 0-1.1653-.9435-2.1109-2.1073-2.1109-1.1639 0-2.1073.9445-2.1073 2.1109 0 1.1664.9434 2.1099 2.1073 2.1099Z" clip-rule="evenodd"/><path fill="#fff" d="M24.9336 8.98454c0-.01546.0121-.02756.0276-.02756h1.8504c.0155 0 .0276.0121.0276.02756v.86845c0 .01326.0177.01876.0254.0077.2358-.32438.5301-.57934.8861-.76579.3769-.19311.8012-.29021 1.2707-.29021.884 0 1.5838.27695 2.0985.82983.5247.54398.7869 1.30428.7869 2.28088v4.479c0 .0154-.0121.0276-.0275.0276h-1.8869c-.0154 0-.0275-.0122-.0275-.0276v-4.3322c0-.8608-.6966-1.5581-1.5562-1.5581-.8597 0-1.5563.6973-1.5563 1.5581v4.3322c0 .0154-.0121.0276-.0275.0276h-1.8626c-.0155 0-.0276-.0122-.0276-.0276V8.98454h-.0011ZM18.308 8.98418c0-.01546-.0121-.02762-.0275-.02762h-1.8858c-.0154 0-.0275.01216-.0275.02762v4.45142c0 .9865.2535 1.7556.7593 2.3084.5059.5529 1.2201.8299 2.1404.8299.4607 0 .874-.0971 1.2421-.2902.3549-.1866.6503-.4425.8861-.7658.0078-.0111.0254-.0056.0254.0077v.8684c0 .0155.0121.0276.0275.0276l1.8506-.0133c.0153 0 .0275-.0121.0275-.0275V8.97092c0-.01546-.0122-.02756-.0275-.02756l-1.877.0132c-.0154 0-.0276.01216-.0276.02762v4.36092c0 .853-.691 1.5449-1.5429 1.5449-.852 0-1.5431-.6919-1.5431-1.5449V8.98418ZM15.5105 5.56155c.0044-.01766-.0089-.03421-.0265-.03421h-.9093c-.6072 0-1.1186.05076-1.533.15228-.4045.10152-.7318.27697-.9798.52526-.2392.23943-.4145.56167-.5246.96775-.1015.40499-.1521.91257-.1521 1.52057v.23503c0 .01546-.0122.02762-.0276.02762h-1.1738c-.0154 0-.0276.0121-.0276.02757V10.642c0 .0154.0122.0275.0276.0275h1.1738c.0154 0 .0276.0122.0276.0277v5.6961c0 .0154.0121.0276.0275.0276h1.8362c.0154 0 .0275-.0122.0275-.0276v-5.6961c0-.0155.0121-.0277.0276-.0277h1.7403c.0154 0 .0275-.0121.0275-.0275V8.98342c0-.01547-.0121-.02757-.0275-.02757H13.304c-.0155 0-.0276-.01216-.0276-.02762v-.33214c0-.28575.0132-.51199.0419-.67754.0276-.17545.0915-.30897.1929-.40052.1102-.10156.2623-.16555.4552-.19311.1928-.03642.4552-.05518.7869-.05518h.2965c.0121 0 .0231-.00886.0264-.02096l.4332-1.68613.0011-.0011Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M.441406 0h60.4267v22H.441406z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
1
docs/public/pro/logos/insep.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 33 22"><g fill="#fff" clip-path="url(#a)"><path d="M19.0615 14.2199c-.6678-.1744-1.3059-.3414-1.9403-.5083-.167-.0445-.3339-.0853-.5009-.1336-.204-.0593-.2857-.1632-.2894-.3747-.0037-.3635 0-.7308 0-1.0944 0-.2597-.0964-.3525-.3598-.3599-.5862-.0148-.6196.0186-.6196.601v1.5211c0 .3265.0482.3896.3673.4749.7457.1966 1.4914.4007 2.2371.5899.4378.1113.7531.3673.8755.7939.1113.3933.1967.8088.2115 1.2169.0297.9015.0186 1.803.0074 2.7082-.0037.2709-.0445.5417-.1001.8088-.1744.8681-.6864 1.343-1.5731 1.458-.2485.0334-.5045.0519-.7568.0519-.9349.0075-1.8661.0038-2.801.0038-.7383 0-1.202-.4675-1.202-1.2058v-4.0179c.1335.0334.2448.0594.3561.0891.6752.1781 1.3505.3524 2.022.5305.2819.0742.3524.1632.3524.4563v1.4098c0 .282.1002.3821.3747.3859.575.0074.6047-.0223.6047-.6011v-1.9848c0-.2597-.0593-.3376-.3116-.4044-.7568-.204-1.5137-.4118-2.2742-.601-.5046-.1261-.8236-.4378-.9386-.92-.1002-.4193-.167-.8496-.1781-1.28-.0186-.7976 0-1.5953.026-2.3892.0074-.2448.063-.4897.1261-.7271.2152-.80881.7902-1.18722 1.5842-1.28739.2263-.02968.4563-.04081.6826-.04081.9571-.00371 1.918-.00371 2.8752 0 .6455 0 1.1389.48971 1.1389 1.1352v3.5059c.0038.0483.0038.1039.0038.1893ZM11.7828 10.1172v11.8533h-.2078c-.7679 0-1.5322-.0037-2.30016.0037-.15952 0-.23743-.0445-.3005-.1929-.35987-.8533-.73457-1.6992-1.10186-2.5488-.02226-.0556-.04823-.1113-.1113-.1595v2.8863H5.01953v-9.0708c0-.5416.25599-.8829.77538-1.0351.52681-.1558 1.05363-.3042 1.60641-.4637.54165 1.7066 1.08331 3.4094 1.62125 5.1086h.04081v-.204c0-1.7326 0-3.4614-.00371-5.194 0-.141.0371-.204.17807-.2448.84216-.2412 1.68066-.486 2.54506-.7383ZM22.6333 13.4041v2.137h2.3187v2.4077h-2.315v1.5916h2.4411v2.4189h-5.1679V9.89453c.1298.03339.2559.06307.3784.10017 1.3504.3895 2.7008.7828 4.0549 1.1723.5231.1522.7495.4527.7495 1.0017v1.944c-.8348-.2411-1.6398-.4748-2.4597-.7086ZM25.9453 11.627c.2003.0556.3933.1113.5899.1669 1.4803.4341 2.9605.8644 4.4408 1.3022.141.0408.2782.1039.4155.1595.6381.2523.9498.7346.9572 1.4061.0148 1.2317.0222 2.4597.0148 3.6914-.0037.4637-.2485.8162-.6826.9646-.3858.1298-.7976.2189-1.2057.256-.5269.0482-1.0611.0296-1.5916.0371h-.2226v2.3447h-2.712c-.0037-3.4355-.0037-6.8709-.0037-10.3285Zm2.7194 5.9915c.2411 0 .4563.0074.6715-.0037.1929-.0074.3005-.1261.3042-.3265.0037-.8347.0074-1.6694-.0074-2.5042 0-.0964-.0816-.2485-.1595-.2819-.2523-.1039-.5231-.1633-.8088-.2486v3.3649ZM4.18058 21.9623h-2.7231v-.2412c0-2.1184-.01113-4.2404.00742-6.3588.00371-.5899-.21889-1.0388-.638112-1.4172-.185497-.1707-.396963-.3117-.61585-.4823 1.324452-.3821 2.637772-.7606 3.969642-1.1464v9.6459ZM13.6641 6.82521c1.9254 0 3.35-2.02934 2.4485-3.94738.9053-.19663 2.2.7828 2.5302 1.91433.4007 1.37268-.3376 2.8344-1.6806 3.31299-1.4172.50455-2.8047-.24857-3.2981-1.27994Z"/><path d="M14.0813.0292969c.5936.3301851 1.1761.6900501 1.8402.8755481-.0112-.233727-.0223-.456324-.0371-.73457.1892.181788.3227.333895.4823.452614.2522.185497.5045.385831.7865.515681.7939.35616 1.1426.99427 1.2428 1.81417.0223.17436.0334.34873.0594.58246-.4675-.51939-1.0054-.83103-1.6139-.99427-.5045-.13356-1.0239-.2263-1.5433-.27824-1.3133-.12985-2.315-.71602-2.9568-1.888368-.0371-.066779-.0668-.140978-.1187-.255987.7382.356156 1.4394.652952 2.2296.690051-.1409-.252276-.2782-.497133-.4155-.7419896.0149-.0111299.0297-.0259697.0445-.0370995ZM10.9141 5.89824c.486-.58246 1.0387-1.07217 1.8104-1.23541.4452-.09275.8719-.02226 1.2688.20034.4007.22259.7198.53794 1.0017.92006-.2745.31535-.6307.46746-1.0314.51569-.1892.02226-.3858.02226-.5713 0-.7346-.08904-1.2651.23372-1.6769.80135-.1187.16323-.1966.35244-.2857.51939-.23-.7086.0705-1.56189.6975-1.88095-.4415-.10758-.8347-.05564-1.2131.15953Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M.171875 0h32.2024v22H.171875z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
1
docs/public/pro/logos/instadapp.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 45 8"><g clip-path="url(#a)"><path fill="#fff" d="M.808594 1.65017H2.15411V6.4266H.808594V1.65017Zm6.828436 0V6.4266H6.52939l-2.0998-2.5452v2.5452h-1.3183V1.65017h1.10764l2.0998 2.545v-2.5449l1.3183-.0001Zm2.62077 4.87204c-.3851 0-.75888-.0478-1.12133-.14329-.36249-.09559-.6569-.22294-.88331-.38215l.44161-.99629c.21298.14107.4599.25482.74074.34121.2808.08652.55716.12967.82899.12967.5166 0 .7746-.12975.7746-.38899 0-.13642-.0746-.23654-.2241-.30017-.145-.06826-.3806-.13885-.7067-.21152-.35786-.07736-.65693-.15933-.89701-.24573-.23838-.08974-.45085-.23742-.61844-.42983-.1721-.19562-.25816-.45948-.25816-.79161 0-.29109.07924-.55264.23779-.78464.15864-.23655.39411-.42308.70667-.5595.31719-.13653.70451-.20468 1.16205-.20468.3126 0 .6207.03629.9242.10909.3035.06827.5708.17061.8018.30702l-.4145 1.00315c-.453-.24573-.8924-.36853-1.3183-.36853-.2673 0-.46206.04094-.58441.1228-.12232.07734-.18345.17968-.18345.30703 0 .12745.07248.22293.21748.28665.14498.06373.37828.12967.69988.19793.3625.07734.6615.16143.8969.25247.2401.0864.4464.22738.6186.42308.1766.19095.2649.45262.2649.78465 0 .28653-.0793.54589-.2379.77789-.1586.232-.3963.41854-.7135.5595-.3171.13651-.7021.20479-1.1551.20479Zm3.6741-3.80074h-1.461v-1.0713h4.2607v1.0713h-1.4542V6.4266h-1.3455V2.72147Zm6.2491 2.77712h-2.0114l-.3737.92801h-1.3726l2.0996-4.77643h1.3252l2.1065 4.77643h-1.3999l-.3737-.92801Zm-.394-.9962-.6117-1.52844-.6116 1.52844h1.2233Z"/><path fill="#9E9E9E" d="M25.422 6.74324c0 .17483.1416.31822.3147.30037 1.5349-.15814 2.7323-1.46038 2.7323-3.04349 0-1.58312-1.1974-2.88537-2.7323-3.043524-.1731-.017936-.3147.125554-.3147.300374v.84405c0 .17482.1425.31324.3132.34773.7203.14592 1.2628.78497 1.2628 1.55137 0 .76636-.5425 1.40544-1.2628 1.55134-.1707.0345-.3132.17302-.3132.34774v.84404Zm-.9456-5.21639c0-.21523-.2099-.36695-.402-.27167-1.0069.49935-1.6994 1.5409-1.6994 2.74494 0 1.20402.6925 2.24557 1.6994 2.74493.1921.09525.402-.05646.402-.27169V1.52685Z"/><path fill="#fff" d="M32.6562 5.49881h-2.0115l-.3736.92801h-1.3727l2.0997-4.77643h1.3252l2.1066 4.77643h-1.3998l-.3739-.92801Zm-.394-.99617-.6116-1.52857-.6116 1.52857h1.2232Zm4.7235-2.85225c.4305 0 .8043.0728 1.1215.2184.317.14095.5615.34564.7338.61404.1722.26377.2582.57543.2582.93478 0 .35945-.086.67102-.2582.93477-.1723.26398-.4168.46865-.7338.61426-.3172.14096-.691.21152-1.1215.21152h-.8289v1.24866h-1.3456V1.65039h2.1745Zm-.0815 2.46323c.2763 0 .4847-.05907.6252-.17735.1406-.12282.2108-.29573.2108-.51866 0-.22283-.0702-.39565-.2108-.51856-.1405-.12281-.3489-.18421-.6252-.18421h-.7474v1.39878h.7474Zm5.0256-2.46323c.4305 0 .804.0728 1.1212.2184.3169.14095.5618.34564.7338.61404.1722.26377.2582.57543.2582.93478 0 .35945-.086.67102-.2582.93477-.172.26398-.4169.46865-.7338.61426-.3172.14096-.6907.21152-1.1212.21152h-.8292v1.24866h-1.3453V1.65039h2.1745Zm-.0815 2.46323c.2763 0 .4847-.05907.6252-.17735.1402-.12282.2105-.29573.2105-.51866 0-.22283-.0703-.39565-.2105-.51856-.1405-.12281-.3489-.18421-.6252-.18421h-.7477v1.39878h.7477Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M.808594.740234h43.2832v6.52023H.808594z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
1
docs/public/pro/logos/liegeairport.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 59 24"><path fill="#fff" d="M40.6103 10.5482c-.0002-1.92769.7645-3.77636 2.1254-5.13944 1.361-1.36307 3.2069-2.12891 5.1318-2.12902V.279297c-2.7195 0-5.3277 1.081893-7.2508 3.007663-1.9231 1.92577-3.0034 4.53768-3.0034 7.26124h2.997ZM47.8633 17.8165c.9531.0001 1.897-.1878 2.7778-.553.8806-.3653 1.6807-.9006 2.3548-1.5757.6741-.6749 1.2087-1.4762 1.5734-2.3582.3647-.882.5524-1.8271.5522-2.7817h2.9968c0 1.3485-.2653 2.684-.7807 3.9298-.5154 1.246-1.2708 2.3779-2.2231 3.3315-.9522.9535-2.0828 1.7099-3.3269 2.2258-1.2441.516-2.5777.7815-3.9243.7814v-2.9999Z"/><path fill="#fff" d="M52.341 0s-1.6126 12.3107-9.5186 12.968c0 0-1.0157.0896-1.0157-.508 0-.5975 1.2244-1.1652 3.0442-1.1652 1.8199 0 3.9686 1.2772 6.5056 1.2772 2.5349 0 2.8637-1.0982 2.8637-1.0982-.6247.2581-1.2939.3901-1.9696.3883-3.1036 0-5.2824-1.6132-7.7587-1.6132s-3.7888 1.3446-3.7888 2.301c0 .9565 1.6714 1.4043 2.508 1.4043 2.566 0 9.0695-2.9286 9.1299-13.9542ZM7.11578 15.4452v1.2187H1.26172v-6.1493h2.14777v4.9306h3.70629ZM9.60871 10.5146H7.46094v6.1489h2.14777v-6.1489ZM12.2022 11.707v1.246h3.4925v1.1561h-3.4925v1.3626h4.4316v1.1922h-6.5791v-6.1493h6.5791v1.1923l-4.4316.0001ZM20.6434 14.5214v-1.1466h3.7871v3.2891h-.98l-.3095-.7081c-.685.5561-1.4365.7977-2.5102.7977-2.7 0-3.8144-1.4967-3.8144-3.11 0-1.6669 1.2223-3.2187 4.002-3.2187 1.9859 0 3.3303.8075 3.6116 2.1069l-2.0401.1882c-.0943-.6189-.5905-1.1386-1.6246-1.1386-1.5175 0-1.7452 1.3175-1.7452 2.0798 0 .7978.3362 1.9274 1.8388 1.9274.9409 0 1.5851-.4397 1.5314-1.0673l-1.7469.0002ZM27.5041 11.707v1.246h3.4909v1.1561h-3.4909v1.3626h4.431v1.1922h-6.5796v-6.1493h6.5796v1.1923l-4.431.0001ZM4.99494 21.6171l-.87866-2.0742-.87839 2.0742h1.75705Zm3.0307 2.2975H5.9445l-.50486-1.2133H2.76869l-.51726 1.2133H.554688L3.2021 18.0107h2.23754l2.586 5.9039ZM10.3041 18.0107H8.37891v5.9037h1.92519v-5.9037ZM13.0549 20.5671h1.0583c.3969 0 .8301.0252 1.1799-.1205.1365-.0534.2546-.1453.3399-.2646.0854-.1191.1344-.2607.141-.4073 0-.2319-.1927-.4819-.4693-.6024-.3249-.1464-.8784-.1116-1.2391-.1116h-1.0107v1.5064Zm0 3.3472h-1.926v-5.9036h3.4773c.7337 0 1.4797.0086 2.1173.3007.6738.319 1.0469.8954 1.0469 1.4723 0 .6709-.5411 1.291-1.4319 1.5238l1.5282 2.6071H15.725l-1.2632-2.3317h-1.4069v2.3314ZM21.3121 20.6526c.4568 0 .8425 0 1.1787-.258.0811-.0615.1472-.1408.193-.2319.0457-.091.0701-.1914.0712-.2933-.004-.1293-.043-.2552-.1126-.3642-.0698-.109-.1677-.1971-.2835-.2547-.3006-.1639-.6982-.1639-1.0583-.1639h-1.0708v1.566h1.0823Zm-1.0823 3.262h-1.9251v-5.9039h3.1035c.8061 0 1.5401 0 2.226.3358.6975.3532 1.0707.8603 1.0707 1.4722-.003.3062-.087.6061-.2435.8692-.1564.263-.3799.4799-.6473.6283-.7094.4209-1.468.4136-2.3457.4136h-1.2391l.0005 2.1848ZM27.2908 19.722c-.1816.3844-.2724.8056-.2651 1.2308 0 .7401.156 1.919 1.5145 1.919.6619 0 1.0236-.2315 1.2391-.6709.1786-.3882.2653-.8124.2532-1.2395 0-.4305-.0599-.9376-.3008-1.3341-.241-.3966-.5894-.5759-1.1912-.5759-.6617 0-1.0224.2404-1.2499.6706m-1.4208 3.3482c-.2762-.2787-.4948-.609-.6435-.9723-.1486-.3633-.2242-.7524-.2224-1.1451 0-1.5657 1.0951-3.029 3.5367-3.029 1.0948 0 1.9614.2577 2.6229.9034.5508.5482.8694 1.2879.8895 2.0654.0201.7774-.2598 1.5326-.7816 2.1086-.637.6716-1.6118.9984-2.7308.9984s-2.0206-.2758-2.6709-.9296M34.9014 20.5671h1.0584c.3972 0 .8306.0252 1.1786-.1205.1367-.0531.2551-.1449.3406-.2642.0857-.1192.1347-.261.1413-.4077 0-.2319-.1928-.4819-.4699-.6024-.324-.1464-.8771-.1116-1.238-.1116h-1.0108l-.0002 1.5064Zm0 3.3472h-1.9248v-5.9036h3.4765c.7336 0 1.4796.0086 2.1172.3007.6746.319 1.047.8954 1.047 1.4723 0 .6709-.5416 1.291-1.4318 1.5238l1.5282 2.6068h-2.1421l-1.262-2.3316h-1.4082v2.3316ZM45.7777 19.1805h-2.0683v4.7338h-1.9253v-4.7338h-2.0927v-1.1698h6.0866l-.0003 1.1698Z"/></svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
1
docs/public/pro/logos/mainpost.svg
Normal file
|
After Width: | Height: | Size: 34 KiB |
1
docs/public/pro/logos/springfieldclinic.svg
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
1
docs/public/pro/logos/tower.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 64 22"><g fill="#fff" clip-path="url(#a)"><path d="M35.3631 11.1831c.0078.5451-.0999 1.0857-.3162 1.5863-.1997.4578-.4937.8685-.8629 1.2055-.3695.3334-.7989.5939-1.2655.7679-.9911.3637-2.0794.3637-3.0705 0-.4677-.1717-.8975-.4325-1.2655-.7679-.3656-.3385-.657-.749-.8558-1.2055-.2164-.5006-.3241-1.0412-.3161-1.5863-.0084-.5429.0993-1.0813.3161-1.57923.199-.45238.4905-.85828.8558-1.19166.3679-.33035.7981-.58412 1.2655-.74646.9944-.3447 2.0761-.3447 3.0705 0 .4663.1646.8961.41812 1.2655.74646.3688.33183.663.73799.8629 1.19166.2167.49793.3245 1.03633.3162 1.57923Zm-2.2722 0c0-.2297-.0389-.4578-.1151-.6745-.0726-.2129-.1849-.4102-.3309-.58155-.1481-.17052-.329-.3096-.532-.40898-.2304-.10409-.4805-.15793-.7335-.15793-.2529 0-.503.05384-.7335.15793-.2018.09807-.3808.23741-.5253.40898-.1414.17205-.2486.36945-.3161.58155-.1437.4384-.1437.911 0 1.3494.0701.2169.1799.4189.3238.5959.1446.1777.3261.3221.532.4232.2304.1042.4805.1581.7335.1581.2529 0 .503-.0539.7335-.1581.2058-.1011.3873-.2455.5319-.4232.1437-.177.2534-.379.3233-.5959.0717-.2177.1081-.4453.108-.6745M46.2644 14.7867h-2.3729l-1.4092-4.4497h-.0286l-1.3806 4.4497h-2.3729l-2.4736-7.14998h2.5452l1.2369 4.52168h.0429l1.2798-4.52168h2.3758l1.3233 4.52168h.0286l1.2512-4.52168h2.4445l-2.4904 7.14998ZM57.0588 11.299v.286c.0002.0911-.0046.1821-.0143.2727h-5.1913c.0165.1932.078.3799.1795.5453.1019.164.2335.3076.3883.4232.3296.2474.7308.3812 1.1432.3814.3286.0103.6547-.0612.9489-.2078.2485-.1299.4648-.3138.6327-.5382l1.6394 1.0334c-.3349.4873-.7942.8764-1.3304 1.1268-.6021.2739-1.2583.4088-1.9197.3947-.5187.003-1.0341-.082-1.5243-.2512-.464-.1583-.8917-.4072-1.2583-.7321-.3655-.3287-.6551-.7327-.8486-1.1841-.2142-.5086-.3196-1.0562-.3095-1.6078-.0078-.5437.0949-1.0833.3018-1.58631.1876-.45356.4666-.86386.8195-1.20548.3522-.3346.7678-.59567 1.2225-.76791.4871-.18481 1.0046-.27712 1.5257-.27217.4967-.00562.9898.08453 1.4522.2655.4304.16996.8182.43209 1.1361.76791.3271.35251.579.76765.7406 1.22026.1852.5254.2753 1.079.266 1.6359Zm-2.1713-.9052c.0073-.3533-.1185-.6966-.3525-.96188-.1357-.14036-.3008-.24913-.4835-.31858-.1826-.06945-.3784-.09787-.5733-.08325-.2157-.00247-.43.03403-.6327.10772-.1841.06718-.3545.1668-.5033.29411-.1422.12233-.2595.27091-.3453.43757-.0848.16251-.1336.34131-.1432.52431h3.0338ZM63.4653 9.57517c-.1013-.02785-.2048-.04698-.3094-.0572-.1006-.00953-.1988-.0143-.2947-.0143-.276-.00892-.55.05001-.7979.1716-.1993.1014-.3756.24273-.5177.41513-.1265.157-.2217.3368-.2803.5296-.0528.162-.0819.3307-.0864.501v3.6636h-2.3586V7.64563h2.2702v1.03341h.0287c.1771-.36053.4446-.66923.7765-.89613.3427-.23349.7498-.35476 1.1647-.34701.0936-.00004.1872.00473.2803.0143.0756.00659.1503.02097.223.0429l-.0984 2.08207ZM8.20204 17.705l-3.20237-1.4648-4.702795 2.1636 7.903255 3.5974H8.203l7.8865-3.5898-4.7028-2.1635-3.18466 1.4571ZM12.6886 4.82035 9.94805 3.55957l-1.54961.7088 2.73196 1.26078 1.5582-.7088ZM5.24426 5.5189l2.73678-1.25888-1.5095-.69068-2.74107 1.26078 1.51379.68878ZM14.1192 10.7007l-3.5696-1.64211-2.13554.97721 3.56384 1.6397 2.1413-.9748ZM4.43478 11.6767l3.56386-1.6397-2.15608-.98622-3.56912 1.64212 2.16134.9838ZM8.20288 2.50293h-.00366v.00366h.00366v-.00366Z"/><path d="m6.17306 3.43199 2.02619-.92664 2.02665.92664L12.9751 4.688V2.17312L8.20116 0 3.42578 2.17264V4.688l2.74728-1.25601Z"/><path d="m12.423 6.37752-1.5759-.715-2.64127-1.20549-2.64174 1.20263-3.57581 1.62733v3.27521l3.58154-1.63786 2.6384-1.20692 2.63838 1.20692 3.5816 1.63786V7.28699l-.5683-.25644-.0034.00762-1.4335-.66065Z"/><path d="m4.72541 16.1139 3.476-1.5902 3.47599 1.5902 4.7171 2.1579v-4.3162l-4.7152-2.145-3.47598-1.5821-3.47934 1.5816L.0078125 13.956v4.3158L4.72541 16.1139ZM13.855 7.03854l.0033-.00763-1.4364-.65493 1.4331.66256ZM24.9996 6.71842v8.06708h-2.4593V6.71842h-2.8762V4.62109h8.2136v2.09733h-2.8781Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h63.5556v22H0z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
1
docs/public/pro/logos/win.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 62 24"><g fill="#fff" clip-path="url(#a)"><path d="M.898109 8.49277 3.31764 12.3611c.19782.3172.65965.3172.85828 0l2.41951-3.86833c.21089-.33675-.03186-.77402-.42913-.77402H1.32725c-.397262 0-.640032.43727-.429141.77402ZM11.1593 14.2067l2.1947 3.5087c.1978.3171.6596.3171.8583 0l5.7684-9.22263c.2109-.33675-.0318-.77402-.4291-.77402h-4.3903c-.1741 0-.3368.08993-.4291.23784l-3.5729 5.71391c-.103.1642-.103.3727 0 .5362ZM4.47568 14.2028l2.19557 3.5104c.19781.3172.65965.3172.85826 0l5.99979-9.59367c.103-.16428.103-.37271 0-.53619l-2.1947-3.50956c-.1978-.31712-.6597-.31712-.8583 0L4.47568 13.6667c-.10299.1643-.10299.3727 0 .5361ZM41.4328 8.15356l-2.816 7.81434c-.0457.1275-.1667.2125-.3024.2125h-4.6527c-.1406 0-.2649-.0915-.3066-.2255l-1.3928-4.4503c-.0188-.0597-.1022-.0597-.121 0l-1.3928 4.4503c-.0417.134-.166.2255-.3065.2255h-4.6527c-.1358 0-.2567-.085-.3025-.2125l-2.816-7.81434c-.0752-.20922.0793-.42993.3024-.42993h3.0057c.1398 0 .2632.08993.3057.22316l1.7901 5.56181c.0188.058.1014.0589.1202.0008l1.8784-5.56755c.0441-.13073.1667-.21822.304-.21822h3.6457c.1381 0 .2599.08829.3041.21822l1.8784 5.56755c.0196.0581.1022.0572.1201-.0008l1.7902-5.56181c.0425-.13243.1659-.22316.3057-.22316h3.0056c.2223 0 .3776.22071.3024.42993h.0033ZM45.6751 7.72363h-2.807c-.1774 0-.3212.14381-.3212.32118v7.81439c0 .1774.1438.3212.3212.3212h2.807c.1774 0 .3212-.1438.3212-.3212V8.04481c0-.17737-.1438-.32118-.3212-.32118ZM61.5516 8.04481v7.81439c0 .1774-.1436.3212-.321.3212h-5.0245c-.0852 0-.1671-.0335-.2273-.094l-4.7968-4.7878c-.04-.0401-.1078-.0115-.1078.0449v4.5157c0 .1774-.144.3212-.321.3212h-2.9085c-.1774 0-.3213-.1438-.3213-.3212V8.04481c0-.17737.1439-.32118.3213-.32118h4.007c.0843 0 .1657.03351.2255.09313l5.923 5.85614c.04.0392.1077.0114.1077-.045V8.04566c0-.17737.144-.32123.3215-.32123h2.8026c.1775 0 .3215.14386.3215.32123l-.0019-.00085Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M.816406 0h61.1831v24H.816406z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
1
docs/public/pro/logos/wuniversity.svg
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
docs/public/pro/templates/dashboard.png
Normal file
|
After Width: | Height: | Size: 452 KiB |
BIN
docs/public/pro/templates/docs.png
Normal file
|
After Width: | Height: | Size: 599 KiB |
BIN
docs/public/pro/templates/landing.png
Normal file
|
After Width: | Height: | Size: 370 KiB |
BIN
docs/public/pro/templates/saas.png
Normal file
|
After Width: | Height: | Size: 384 KiB |
80
pnpm-lock.yaml
generated
@@ -279,12 +279,18 @@ importers:
|
||||
'@octokit/rest':
|
||||
specifier: ^21.1.0
|
||||
version: 21.1.0
|
||||
'@rollup/plugin-yaml':
|
||||
specifier: ^4.1.2
|
||||
version: 4.1.2(rollup@4.34.1)
|
||||
'@vueuse/nuxt':
|
||||
specifier: ^12.6.1
|
||||
version: 12.6.1(magicast@0.3.5)(nuxt@3.15.4(@libsql/client@0.14.0)(@parcel/watcher@2.5.1)(@types/node@22.13.0)(better-sqlite3@11.8.1)(db0@0.2.3(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(eslint@9.20.1(jiti@2.4.2))(ioredis@5.4.2)(lightningcss@1.29.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.34.1)(terser@5.37.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3))(yaml@2.7.0))(rollup@4.34.1)(typescript@5.6.3)
|
||||
joi:
|
||||
specifier: ^17.13.3
|
||||
version: 17.13.3
|
||||
motion:
|
||||
specifier: ^12.4.2
|
||||
version: 12.4.2
|
||||
nuxt:
|
||||
specifier: ^3.15.4
|
||||
version: 3.15.4(@libsql/client@0.14.0)(@parcel/watcher@2.5.1)(@types/node@22.13.0)(better-sqlite3@11.8.1)(db0@0.2.3(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(eslint@9.20.1(jiti@2.4.2))(ioredis@5.4.2)(lightningcss@1.29.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.34.1)(terser@5.37.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3))(yaml@2.7.0)
|
||||
@@ -2013,6 +2019,15 @@ packages:
|
||||
rollup:
|
||||
optional: true
|
||||
|
||||
'@rollup/plugin-yaml@4.1.2':
|
||||
resolution: {integrity: sha512-RpupciIeZMUqhgFE97ba0s98mOFS7CWzN3EJNhJkqSv9XLlWYtwVdtE6cDw6ASOF/sZVFS7kRJXftaqM2Vakdw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
rollup: ^4.24.0
|
||||
peerDependenciesMeta:
|
||||
rollup:
|
||||
optional: true
|
||||
|
||||
'@rollup/pluginutils@5.1.4':
|
||||
resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
@@ -3924,6 +3939,20 @@ packages:
|
||||
fraction.js@4.3.7:
|
||||
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
|
||||
|
||||
framer-motion@12.4.2:
|
||||
resolution: {integrity: sha512-pW307cQKjDqEuO1flEoIFf6TkuJRfKr+c7qsHAJhDo4368N/5U8/7WU8J+xhd9+gjmOgJfgp+46evxRRFM39dA==}
|
||||
peerDependencies:
|
||||
'@emotion/is-prop-valid': '*'
|
||||
react: ^18.0.0 || ^19.0.0
|
||||
react-dom: ^18.0.0 || ^19.0.0
|
||||
peerDependenciesMeta:
|
||||
'@emotion/is-prop-valid':
|
||||
optional: true
|
||||
react:
|
||||
optional: true
|
||||
react-dom:
|
||||
optional: true
|
||||
|
||||
fresh@0.5.2:
|
||||
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
|
||||
engines: {node: '>= 0.6'}
|
||||
@@ -5009,6 +5038,26 @@ packages:
|
||||
mlly@1.7.4:
|
||||
resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
|
||||
|
||||
motion-dom@12.0.0:
|
||||
resolution: {integrity: sha512-CvYd15OeIR6kHgMdonCc1ihsaUG4MYh/wrkz8gZ3hBX/uamyZCXN9S9qJoYF03GqfTt7thTV/dxnHYX4+55vDg==}
|
||||
|
||||
motion-utils@12.0.0:
|
||||
resolution: {integrity: sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==}
|
||||
|
||||
motion@12.4.2:
|
||||
resolution: {integrity: sha512-NGocC1zic2hGDEasxS76W5/7JIJ5loKIxawkFoEqk7yTu8yXI+6l6IlEj9u8aPp6tM04DwvuiQcobpw9i0hhiw==}
|
||||
peerDependencies:
|
||||
'@emotion/is-prop-valid': '*'
|
||||
react: ^18.0.0 || ^19.0.0
|
||||
react-dom: ^18.0.0 || ^19.0.0
|
||||
peerDependenciesMeta:
|
||||
'@emotion/is-prop-valid':
|
||||
optional: true
|
||||
react:
|
||||
optional: true
|
||||
react-dom:
|
||||
optional: true
|
||||
|
||||
mrmime@2.0.0:
|
||||
resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -6364,6 +6413,10 @@ packages:
|
||||
toposort@2.0.2:
|
||||
resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==}
|
||||
|
||||
tosource@2.0.0-alpha.3:
|
||||
resolution: {integrity: sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
totalist@3.0.1:
|
||||
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -9072,6 +9125,14 @@ snapshots:
|
||||
optionalDependencies:
|
||||
rollup: 4.34.1
|
||||
|
||||
'@rollup/plugin-yaml@4.1.2(rollup@4.34.1)':
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.1.4(rollup@4.34.1)
|
||||
js-yaml: 4.1.0
|
||||
tosource: 2.0.0-alpha.3
|
||||
optionalDependencies:
|
||||
rollup: 4.34.1
|
||||
|
||||
'@rollup/pluginutils@5.1.4(rollup@4.34.1)':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.6
|
||||
@@ -11212,6 +11273,12 @@ snapshots:
|
||||
|
||||
fraction.js@4.3.7: {}
|
||||
|
||||
framer-motion@12.4.2:
|
||||
dependencies:
|
||||
motion-dom: 12.0.0
|
||||
motion-utils: 12.0.0
|
||||
tslib: 2.8.1
|
||||
|
||||
fresh@0.5.2: {}
|
||||
|
||||
fs-constants@1.0.0: {}
|
||||
@@ -12566,6 +12633,17 @@ snapshots:
|
||||
pkg-types: 1.3.1
|
||||
ufo: 1.5.4
|
||||
|
||||
motion-dom@12.0.0:
|
||||
dependencies:
|
||||
motion-utils: 12.0.0
|
||||
|
||||
motion-utils@12.0.0: {}
|
||||
|
||||
motion@12.4.2:
|
||||
dependencies:
|
||||
framer-motion: 12.4.2
|
||||
tslib: 2.8.1
|
||||
|
||||
mrmime@2.0.0: {}
|
||||
|
||||
ms@2.1.3: {}
|
||||
@@ -14429,6 +14507,8 @@ snapshots:
|
||||
|
||||
toposort@2.0.2: {}
|
||||
|
||||
tosource@2.0.0-alpha.3: {}
|
||||
|
||||
totalist@3.0.1: {}
|
||||
|
||||
tr46@0.0.3: {}
|
||||
|
||||