docs: integrate @nuxt/ui-pro (#739)

Co-authored-by: Pooya Parsa <pooya@pi0.io>
Co-authored-by: Florent Delerue <florentdelerue@hotmail.com>
Co-authored-by: Sébastien Chopin <seb@nuxt.com>
This commit is contained in:
Benjamin Canac
2023-11-02 16:44:44 +01:00
committed by GitHub
parent ed4b5e0077
commit 844b3185e9
42 changed files with 610 additions and 501 deletions

View File

@@ -21,6 +21,9 @@ jobs:
os: [ubuntu-latest] # macos-latest, windows-latest os: [ubuntu-latest] # macos-latest, windows-latest
node: [18] node: [18]
env:
NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }}
steps: steps:
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:

View File

@@ -14,6 +14,9 @@ jobs:
os: [ubuntu-latest] # macos-latest, windows-latest os: [ubuntu-latest] # macos-latest, windows-latest
node: [18] node: [18]
env:
NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }}
steps: steps:
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"prettier.enable": false
}

View File

@@ -1,6 +1,8 @@
# To link Nuxt UI Pro in development # Specify the path of @nuxt/ui-pro locally
NUXT_UI_PRO_PATH= NUXT_UI_PRO_PATH=
# To use Nuxt UI Pro in production # Production token for @nuxt/ui-pro, purchase on https://ui.nuxt.com/pro/purchase
NUXT_UI_PRO_TOKEN= NUXT_UI_PRO_LICENSE=
# Used when pre-rendering the docs for dynamic OG images # Used when pre-rendering the docs for dynamic OG images
NUXT_PUBLIC_SITE_URL= NUXT_PUBLIC_SITE_URL=
# Used to fetch `nuxt/ui-pro` docs content
NUXT_GITHUB_TOKEN=

View File

@@ -1,16 +1,16 @@
<!-- eslint-disable vue/no-v-html --> <!-- eslint-disable vue/no-v-html -->
<template> <template>
<div> <div>
<Header /> <Header v-if="!$route.path.startsWith('/examples')" :links="links" />
<NuxtLayout> <NuxtLayout>
<NuxtPage /> <NuxtPage />
</NuxtLayout> </NuxtLayout>
<Footer /> <Footer v-if="!$route.path.startsWith('/examples')" />
<ClientOnly> <ClientOnly>
<LazyUDocsSearch ref="searchRef" :files="files" :navigation="navigation" :groups="groups" /> <LazyUDocsSearch ref="searchRef" :files="files" :navigation="navigation" :groups="groups" :links="links" />
</ClientOnly> </ClientOnly>
<UNotifications> <UNotifications>
@@ -42,10 +42,17 @@ const { data: files } = useLazyFetch<ParsedContent[]>('/api/search.json', { defa
// Computed // Computed
const navigation = computed(() => { const navigation = computed(() => {
const main = nav.value.filter(item => item._path !== '/dev') if (branch.value?.name === 'dev') {
const dev = nav.value.find(item => item._path === '/dev')?.children const dev = nav.value.find(item => item._path === '/dev')?.children
const pro = nav.value.find(item => item._path === '/pro')
return branch.value?.name === 'dev' ? dev : main return [
pro,
...dev
]
}
return nav.value.filter(item => item._path !== '/dev')
}) })
const groups = computed(() => { const groups = computed(() => {
@@ -58,6 +65,54 @@ const groups = computed(() => {
const color = computed(() => colorMode.value === 'dark' ? '#18181b' : 'white') const color = computed(() => colorMode.value === 'dark' ? '#18181b' : 'white')
const links = computed(() => {
return [{
label: 'Documentation',
icon: 'i-heroicons-book-open',
to: `${branch.value?.name === 'dev' ? '/dev' : ''}/getting-started`
}, {
label: 'Playground',
icon: 'i-simple-icons-stackblitz',
to: '/playground'
}, {
label: 'Roadmap',
icon: 'i-heroicons-academic-cap',
to: '/roadmap'
}, {
label: 'Pro',
icon: 'i-heroicons-square-3-stack-3d',
to: '/pro',
children: [{
label: 'Features',
to: '/pro#features',
exactHash: true,
icon: 'i-heroicons-beaker',
description: 'Discover all the features of Nuxt UI Pro.'
}, {
label: 'Pricing',
to: '/pro#pricing',
exactHash: true,
icon: 'i-heroicons-credit-card',
description: 'A simple pricing, for solo developers or teams.'
}, {
label: 'Guide',
to: '/pro/guide',
icon: 'i-heroicons-book-open',
description: 'Learn how to use Nuxt UI Pro in your app.'
}, {
label: 'Components',
to: '/pro/components',
icon: 'i-heroicons-cube-transparent',
description: 'Discover all the components available in Nuxt UI Pro.'
}]
}, {
label: 'Releases',
icon: 'i-heroicons-rocket-launch',
to: 'https://github.com/nuxt/ui/releases',
target: '_blank'
}]
})
// Watch // Watch
watch(() => searchRef.value?.commandPaletteRef?.query, debounce((query: string) => { watch(() => searchRef.value?.commandPaletteRef?.query, debounce((query: string) => {

View File

@@ -1,22 +1,16 @@
<template> <template>
<div v-if="$route.path !== '/playground'" class="w-full h-px bg-gray-200 dark:bg-gray-800 flex items-center justify-center"> <div class="w-full h-px bg-gray-200 dark:bg-gray-800 flex items-center justify-center">
<div class="bg-white dark:bg-gray-900 px-4"> <div v-if="!['/playground', '/roadmap'].includes($route.path)" class="bg-white dark:bg-gray-900 px-4">
<LogoOnly class="w-5 h-5" /> <LogoOnly class="w-5 h-5" />
</div> </div>
</div> </div>
<UFooter :links="[]" :ui="{ bottom: { container: 'lg:py-4' } }"> <UFooter>
<template #left> <template #left>
<div class="text-sm text-gray-500 dark:text-gray-400"> <a v-if="$route.path.startsWith('/pro')" class="text-sm text-gray-500 dark:text-gray-400 hover:underline" href="https://ui.nuxt.com/pro/purchase" target="_blank">
Made by Purchase Nuxt UI Pro
<NuxtLink to="https://nuxtlabs.com" aria-label="NuxtLabs" class="inline-block"> </a>
<LogoLabs class="text-gray-900 dark:text-white h-4 w-auto" /> <span v-else class="text-sm text-gray-500 dark:text-gray-400">
</NuxtLink>
</div>
</template>
<template #center>
<span class="text-sm text-gray-500 dark:text-gray-400">
Published under <NuxtLink to="https://github.com/nuxt/ui" target="_blank" class="text-gray-900 dark:text-white"> Published under <NuxtLink to="https://github.com/nuxt/ui" target="_blank" class="text-gray-900 dark:text-white">
MIT License MIT License
</NuxtLink> </NuxtLink>

View File

@@ -31,42 +31,35 @@
</template> </template>
<template #panel> <template #panel>
<BranchSelect /> <UAsideLinks :links="links" />
<UNavigationTree :links="mapContentNavigation(navigation)" /> <UDivider type="dashed" class="mt-4 mb-3" />
<BranchSelect v-if="!route.path.startsWith('/pro')" />
<UNavigationTree :links="mapContentNavigation(navigation)" :multiple="false" default-open />
</template> </template>
</UHeader> </UHeader>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import type { NavItem } from '@nuxt/content/dist/runtime/types' import type { NavItem } from '@nuxt/content/dist/runtime/types'
import type { Link } from '#ui-pro/types'
defineProps<{
links: Link[]
}>()
const route = useRoute()
const { metaSymbol } = useShortcuts() const { metaSymbol } = useShortcuts()
const navigation = inject<Ref<NavItem[]>>('navigation') const nav = inject<Ref<NavItem[]>>('navigation')
const links = computed(() => { const navigation = computed(() => {
return [{ if (route.path.startsWith('/pro')) {
label: 'Documentation', return nav.value.find(item => item._path === '/pro')?.children
icon: 'i-heroicons-book-open-solid', }
to: '/getting-started'
}, { return nav.value.filter(item => !item._path.startsWith('/pro'))
label: 'Examples',
icon: 'i-heroicons-square-3-stack-3d',
to: '/getting-started/examples'
}, {
label: 'Playground',
icon: 'i-simple-icons-stackblitz',
to: '/playground'
}, {
label: 'Pro',
icon: 'i-heroicons-square-3-stack-3d',
to: '/pro'
}, {
label: 'Releases',
icon: 'i-heroicons-rocket-launch-solid',
to: 'https://github.com/nuxt/ui/releases',
target: '_blank'
}]
}) })
</script> </script>

View File

@@ -36,8 +36,8 @@
</div> </div>
</div> </div>
<div class="flex border border-b-0 border-gray-200 dark:border-gray-700 relative not-prose" :class="[{ 'p-4': padding }, propsToSelect.length ? 'border-t-0' : 'rounded-t-md', backgroundClass, overflowClass]"> <div class="flex border border-b-0 border-gray-200 dark:border-gray-700 relative not-prose" :class="[{ 'p-4': padding }, propsToSelect.length ? 'border-t-0' : 'rounded-t-md', backgroundClass, extraClass]">
<component :is="name" v-model="vModel" v-bind="fullProps"> <component :is="name" v-model="vModel" v-bind="fullProps" :class="componentClass">
<ContentSlot v-if="$slots.default" :use="$slots.default" /> <ContentSlot v-if="$slots.default" :use="$slots.default" />
<template v-for="slot in Object.keys(slots || {})" :key="slot" #[slot]> <template v-for="slot in Object.keys(slots || {})" :key="slot" #[slot]>
@@ -99,13 +99,17 @@ const props = defineProps({
type: String, type: String,
default: 'bg-white dark:bg-gray-900' default: 'bg-white dark:bg-gray-900'
}, },
overflowClass: { extraClass: {
type: String, type: String,
default: '' default: ''
}, },
previewOnly: { previewOnly: {
type: Boolean, type: Boolean,
default: false default: false
},
componentClass: {
type: String,
default: ''
} }
}) })
@@ -116,10 +120,16 @@ const componentProps = reactive({ ...props.props })
const { $prettier } = useNuxtApp() const { $prettier } = useNuxtApp()
const appConfig = useAppConfig() const appConfig = useAppConfig()
const route = useRoute() const route = useRoute()
// eslint-disable-next-line vue/no-dupe-keys
const slug = props.slug || route.params.slug[route.params.slug.length - 1] let name = props.slug || `U${upperFirst(camelCase(route.params.slug[route.params.slug.length - 1]))}`
const camelName = camelCase(slug)
const name = `U${upperFirst(camelName)}` // TODO: Remove once merged on `main` branch
if (['AvatarGroup', 'ButtonGroup', 'MeterGroup'].includes(name)) {
name = `U${name}`
}
if (['avatar-group', 'button-group', 'radio'].includes(name)) {
name = `U${upperFirst(camelCase(name))}`
}
const meta = await fetchComponentMeta(name) const meta = await fetchComponentMeta(name)

View File

@@ -1,10 +1,14 @@
<template> <template>
<div class="[&>div>pre]:!rounded-t-none [&>div>pre]:!mt-0"> <div class="[&>div>pre]:!rounded-t-none [&>div>pre]:!mt-0">
<div <div
class="flex border border-gray-200 dark:border-gray-700 relative not-prose rounded-t-md" class="flex border border-gray-200 dark:border-gray-700 relative rounded-t-md"
:class="[{ 'p-4': padding, 'rounded-b-md': !hasCode, 'border-b-0': hasCode }, backgroundClass, overflowClass]" :class="[{ 'p-4': padding, 'rounded-b-md': !hasCode, 'border-b-0': hasCode, 'not-prose': !prose }, backgroundClass, extraClass]"
> >
<component :is="camelName" v-if="component" v-bind="componentProps" /> <template v-if="component">
<iframe v-if="iframe" :src="`/examples/${component}`" v-bind="iframeProps" :class="backgroundClass" class="w-full" />
<component :is="camelName" v-else v-bind="componentProps" :class="componentClass" />
</template>
<ContentSlot v-if="$slots.default" :use="$slots.default" /> <ContentSlot v-if="$slots.default" :use="$slots.default" />
</div> </div>
<template v-if="hasCode"> <template v-if="hasCode">
@@ -43,18 +47,36 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: true default: true
}, },
prose: {
type: Boolean,
default: false
},
iframe: {
type: Boolean,
default: false
},
iframeProps: {
type: Object,
default: () => ({})
},
backgroundClass: { backgroundClass: {
type: String, type: String,
default: 'bg-white dark:bg-gray-900' default: 'bg-white dark:bg-gray-900'
}, },
overflowClass: { extraClass: {
type: String, type: String,
default: '' default: ''
} }
}) })
let component = props.component
// TODO: Remove once merged on `main` branch
if (['command-palette-theme-algolia', 'command-palette-theme-raycast', 'vertical-navigation-theme-tailwind', 'pagination-theme-rounded'].includes(component)) {
component = component.replace('-theme', '-example-theme')
}
const instance = getCurrentInstance() const instance = getCurrentInstance()
const camelName = camelCase(props.component) const camelName = camelCase(component)
const data = await fetchContentExampleCode(camelName) const data = await fetchContentExampleCode(camelName)
const hasCode = computed(() => !props.hiddenCode && (data?.code || instance.slots.code)) const hasCode = computed(() => !props.hiddenCode && (data?.code || instance.slots.code))

View File

@@ -17,10 +17,16 @@ const props = defineProps({
}) })
const route = useRoute() const route = useRoute()
// eslint-disable-next-line vue/no-dupe-keys
const slug = props.slug || route.params.slug[route.params.slug.length - 1] let name = props.slug || `U${upperFirst(camelCase(route.params.slug[route.params.slug.length - 1]))}`
const camelName = camelCase(slug)
const name = `U${upperFirst(camelName)}` // TODO: Remove once merged on `main` branch
if (['AvatarGroup', 'ButtonGroup', 'MeterGroup'].includes(name)) {
name = `U${name}`
}
if (['avatar-group', 'button-group', 'radio'].includes(name)) {
name = `U${upperFirst(camelCase(name))}`
}
const meta = await fetchComponentMeta(name) const meta = await fetchComponentMeta(name)
</script> </script>

View File

@@ -1,21 +1,24 @@
<template> <template>
<Field v-bind="prop"> <Field v-bind="prop">
<code v-if="prop.default">{{ prop.default }}</code> <code v-if="prop.default">{{ prop.default }}</code>
<p v-if="prop.description">
{{ prop.description }}
</p>
<Collapsible v-if="prop.schema?.kind === 'array' && prop.schema?.schema?.filter(schema => schema.kind === 'object').length"> <Collapsible v-if="prop.schema?.kind === 'array' && prop.schema?.schema?.filter(schema => schema.kind === 'object').length">
<FieldGroup v-for="schema in prop.schema.schema" :key="schema.name" class="!mt-0"> <FieldGroup v-for="schema in prop.schema.schema" :key="schema.name">
<ComponentPropsField v-for="subProp in Object.values(schema.schema)" :key="(subProp as any).name" :prop="subProp" /> <ComponentPropsField v-for="subProp in Object.values(schema.schema)" :key="(subProp as any).name" :prop="subProp" />
</FieldGroup> </FieldGroup>
</Collapsible> </Collapsible>
<Collapsible v-else-if="prop.schema?.kind === 'array' && prop.schema?.schema?.filter(schema => schema.kind === 'array').length"> <Collapsible v-else-if="prop.schema?.kind === 'array' && prop.schema?.schema?.filter(schema => schema.kind === 'array').length">
<FieldGroup v-for="schema in prop.schema.schema" :key="schema.name" class="!mt-0"> <FieldGroup v-for="schema in prop.schema.schema" :key="schema.name">
<template v-for="subSchema in schema.schema" :key="subSchema.name"> <template v-for="subSchema in schema.schema" :key="subSchema.name">
<ComponentPropsField v-for="subProp in Object.values(subSchema.schema)" :key="(subProp as any).name" :prop="subProp" /> <ComponentPropsField v-for="subProp in Object.values(subSchema.schema)" :key="(subProp as any).name" :prop="subProp" />
</template> </template>
</FieldGroup> </FieldGroup>
</Collapsible> </Collapsible>
<Collapsible v-else-if="prop.schema?.kind === 'object' && prop.schema.type !== 'Function' && Object.values(prop.schema.schema)?.length"> <Collapsible v-else-if="prop.schema?.kind === 'object' && prop.schema.type !== 'Function' && Object.values(prop.schema.schema)?.length">
<FieldGroup class="!mt-0"> <FieldGroup>
<ComponentPropsField v-for="subProp in Object.values(prop.schema.schema)" :key="(subProp as any).name" :prop="subProp" /> <ComponentPropsField v-for="subProp in Object.values(prop.schema.schema)" :key="(subProp as any).name" :prop="subProp" />
</FieldGroup> </FieldGroup>
</Collapsible> </Collapsible>

View File

@@ -1,19 +1,8 @@
<template> <template>
<div> <div>
<table> <FieldGroup>
<thead> <Field v-for="slot in meta?.meta.slots" :key="slot.name" v-bind="slot" />
<tr> </FieldGroup>
<th>Slot</th>
</tr>
</thead>
<tbody>
<tr v-for="slot in (meta.meta.slots as any[])" :key="slot.name">
<td class="whitespace-nowrap">
<code>{{ slot.name }}</code>
</td>
</tr>
</tbody>
</table>
</div> </div>
</template> </template>
@@ -28,10 +17,8 @@ const props = defineProps({
}) })
const route = useRoute() const route = useRoute()
// eslint-disable-next-line vue/no-dupe-keys
const slug = props.slug || route.params.slug[route.params.slug.length - 1] const name = props.slug || `U${upperFirst(camelCase(route.params.slug[route.params.slug.length - 1]))}`
const camelName = camelCase(slug)
const name = `U${upperFirst(camelName)}`
const meta = await fetchComponentMeta(name) const meta = await fetchComponentMeta(name)
</script> </script>

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="relative overflow-hidden rounded border border-dashed border-gray-400 dark:border-gray-500 opacity-75"> <div class="relative overflow-hidden rounded border border-dashed border-gray-400 dark:border-gray-500 opacity-75 px-4 flex items-center justify-center">
<svg class="absolute inset-0 h-full w-full stroke-gray-900/10 dark:stroke-white/10" fill="none"> <svg class="absolute inset-0 h-full w-full stroke-gray-900/10 dark:stroke-white/10" fill="none">
<defs> <defs>
<pattern <pattern

View File

@@ -1,17 +0,0 @@
<template>
<iframe :src="src" class="w-full min-h-[calc(100vh/1.5)] border border-gray-200 dark:border-gray-800 rounded-md" />
</template>
<script setup lang="ts">
const props = defineProps({
token: {
type: String,
required: true
}
})
const appConfig = useAppConfig()
const colorMode = useColorMode()
const src = computed(() => `https://volta.net/embed/${props.token}?theme=${colorMode.value}&gray=${appConfig.ui.gray}&primary=${appConfig.ui.primary}`)
</script>

View File

@@ -84,11 +84,11 @@ const pageFrom = computed(() => (page.value - 1) * pageCount.value + 1)
const pageTo = computed(() => Math.min(page.value * pageCount.value, pageTotal.value)) const pageTo = computed(() => Math.min(page.value * pageCount.value, pageTotal.value))
// Data // Data
const { data: todos, pending } = await useLazyAsyncData('todos', () => $fetch<{ const { data: todos, pending } = await useLazyAsyncData<{
id: number id: number
title: string title: string
completed: string completed: string
}[]>(`https://jsonplaceholder.typicode.com/todos${searchStatus.value}`, { }[]>('todos', () => ($fetch as any)(`https://jsonplaceholder.typicode.com/todos${searchStatus.value}`, {
query: { query: {
q: search.value, q: search.value,
'_page': page.value, '_page': page.value,

View File

@@ -150,4 +150,13 @@ Update your `package.json` to the following:
} }
``` ```
```diff [package.json]
{
"devDependencies": {
- "@nuxt/ui": "^2.9.0"
+ "@nuxt/ui": "npm:@nuxt/ui-edge@latest"
}
}
```
Then run `pnpm install`, `yarn install` or `npm install`. Then run `pnpm install`, `yarn install` or `npm install`.

View File

@@ -134,14 +134,14 @@ Here is some examples of what you can do with the [CommandPalette](/navigation/c
::component-example ::component-example
--- ---
padding: false padding: false
component: 'command-palette-theme-algolia' component: 'command-palette-example-theme-algolia'
componentProps: componentProps:
class: 'max-h-[480px] rounded-md' class: 'max-h-[480px] rounded-md'
hiddenCode: true hiddenCode: true
--- ---
:: ::
::callout{icon="i-simple-icons-github" to="https://github.com/nuxt/ui/blob/dev/docs/components/content/themes/CommandPaletteThemeAlgolia.vue#L23" target="_blank"} ::callout{icon="i-simple-icons-github" to="https://github.com/nuxt/ui/blob/dev/docs/components/content/examples/CommandPaletteExampleThemeAlgolia.vue#L23" target="_blank"}
Take a look at the component! Take a look at the component!
:: ::
@@ -150,24 +150,24 @@ Take a look at the component!
::component-example ::component-example
--- ---
padding: false padding: false
component: 'command-palette-theme-raycast' component: 'command-palette-example-theme-raycast'
componentProps: componentProps:
class: 'max-h-[480px] rounded-md' class: 'max-h-[480px] rounded-md'
hiddenCode: true hiddenCode: true
--- ---
:: ::
::callout{icon="i-simple-icons-github" to="https://github.com/nuxt/ui/blob/dev/docs/components/content/themes/CommandPaletteThemeRaycast.vue#L30" target="_blank"} ::callout{icon="i-simple-icons-github" to="https://github.com/nuxt/ui/blob/dev/docs/components/content/examples/CommandPaletteExampleThemeRaycast.vue#L30" target="_blank"}
Take a look at the component! Take a look at the component!
:: ::
### VerticalNavigation ### VerticalNavigation
:component-example{component="vertical-navigation-theme-tailwind"} :component-example{component="vertical-navigation-example-theme-tailwind"}
### Pagination ### Pagination
:component-example{component="pagination-theme-rounded"} :component-example{component="pagination-example-theme-rounded"}
## RTL Support ## RTL Support

View File

@@ -1,7 +0,0 @@
---
title: Roadmap
description: Discover our Volta board for @nuxt/ui development status.
toc: false
---
:volta-embed{token="eyJ2aWV3IjoiYm9hcmQiLCJib2FyZFN0YXR1c2VzIjpbInRyaWFnZSIsImJhY2tsb2ciLCJ0b2RvIiwiaW5fcHJvZ3Jlc3MiLCJpbl9yZXZpZXciLCJkb25lIiwicmVsZWFzZWQiLCJjYW5jZWxsZWQiXSwiYm9hcmRMaW5rZWRQcnMiOnRydWUsImxpc3RHcm91cCI6InN0YXR1cyIsImxpc3RPcmRlciI6ImNyZWF0ZWRfYXQiLCJ0aW1lbGluZVpvb20iOiJtb250aCIsInRpbWVsaW5lT3JkZXIiOiJzdGF0ZSIsInRpbWVsaW5lRGlzcGxheSI6ImFsbF9taWxlc3RvbmVzIiwiZmlsdGVycyI6e30sIm93bmVyIjoibnV4dCIsIm5hbWUiOiJ1aSJ9"}

View File

@@ -117,7 +117,7 @@ To group multiple meters into a group, adding all values, use the `MeterGroup` c
- To show a label for each meter, use the `label` prop on each meter. - To show a label for each meter, use the `label` prop on each meter.
- To change the icon for each meter, use the `icon` prop. - To change the icon for each meter, use the `icon` prop.
::component-card{slug="MeterGroup"} ::component-card{slug="UMeterGroup"}
--- ---
baseProps: baseProps:
icon: i-heroicons-minus icon: i-heroicons-minus
@@ -169,7 +169,7 @@ The `label` slot can be used to change how the label below the meter bar is show
:u-divider{label="MeterGroup" type="dashed" class="my-12"} :u-divider{label="MeterGroup" type="dashed" class="my-12"}
:component-props{slug="MeterGroup"} :component-props{slug="UMeterGroup"}
## Config ## Config

View File

@@ -90,7 +90,7 @@ To stack avatars as a group, use the `AvatarGroup` component.
- To size all the avatars equally, pass the `size` prop - To size all the avatars equally, pass the `size` prop
- To adjust the spacing or the ring between avatars, customize with `ui.avatarGroup.margin` or `ui.avatarGroup.ring` - To adjust the spacing or the ring between avatars, customize with `ui.avatarGroup.margin` or `ui.avatarGroup.ring`
::component-card{slug="AvatarGroup"} ::component-card{slug="UAvatarGroup"}
--- ---
props: props:
size: 'sm' size: 'sm'
@@ -113,10 +113,10 @@ code: |
:u-divider{label="AvatarGroup" type="dashed" class="my-12"} :u-divider{label="AvatarGroup" type="dashed" class="my-12"}
:component-props{slug="avatar-group"} :component-props{slug="UAvatarGroup"}
## Config ## Config
:component-preset :component-preset
:component-preset{slug="avatar-group"} :component-preset{slug="AvatarGroup"}

View File

@@ -295,7 +295,7 @@ To stack buttons as a group, use the `ButtonGroup` component.
- To change the orientation of the buttons, set the `orientation` prop to `vertical` - To change the orientation of the buttons, set the `orientation` prop to `vertical`
- To adjust the rounded or the shadow around buttons, customize with `ui.buttonGroup.rounded` or `ui.buttonGroup.shadow` - To adjust the rounded or the shadow around buttons, customize with `ui.buttonGroup.rounded` or `ui.buttonGroup.shadow`
::component-card{slug="ButtonGroup"} ::component-card{slug="UButtonGroup"}
--- ---
props: props:
size: 'sm' size: 'sm'
@@ -312,7 +312,7 @@ code: |
This can also work with an [Input](/forms/input) component for example: This can also work with an [Input](/forms/input) component for example:
::component-card{slug="ButtonGroup"} ::component-card{slug="UButtonGroup"}
--- ---
props: props:
size: 'sm' size: 'sm'
@@ -375,7 +375,7 @@ excludedProps:
:u-divider{label="ButtonGroup" type="dashed" class="my-12"} :u-divider{label="ButtonGroup" type="dashed" class="my-12"}
:component-props{slug="ButtonGroup"} :component-props{slug="UButtonGroup"}
## Config ## Config

View File

@@ -75,7 +75,7 @@ This prop also work on the Radio component.
Use the `label` prop to display a label on the right of the Radio. Use the `label` prop to display a label on the right of the Radio.
::component-card{slug="radio"} ::component-card{slug="URadio"}
--- ---
props: props:
label: 'Label' label: 'Label'
@@ -86,7 +86,7 @@ props:
Use the `required` prop to display a red star next to the label of the Radio. Use the `required` prop to display a red star next to the label of the Radio.
::component-card{slug="radio"} ::component-card{slug="URadio"}
--- ---
props: props:
label: 'Label' label: 'Label'
@@ -98,7 +98,7 @@ props:
Use the `help` prop to display some text under the Radio. Use the `help` prop to display some text under the Radio.
::component-card{slug="radio"} ::component-card{slug="URadio"}
--- ---
props: props:
label: 'Label' label: 'Label'
@@ -116,7 +116,7 @@ Use the `#label` slot to override the label of each option.
Alternatively, you can do the same with individual Radio: Alternatively, you can do the same with individual Radio:
::component-card{slug="radio"} ::component-card{slug="URadio"}
--- ---
slots: slots:
label: <span class="italic">Label</span> label: <span class="italic">Label</span>
@@ -149,10 +149,10 @@ slots:
:u-divider{label="Radio" type="dashed" class="my-12"} :u-divider{label="Radio" type="dashed" class="my-12"}
:component-props{slug="radio"} :component-props{slug="URadio"}
## Config ## Config
:component-preset :component-preset
:component-preset{slug="radio"} :component-preset{slug="Radio"}

View File

@@ -13,7 +13,6 @@ Use the `rows` prop to set the data to display in the table. By default, the tab
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-basic' component: 'table-example-basic'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -33,7 +32,6 @@ Use the `columns` prop to configure which columns to display. It's an array of o
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-columns' component: 'table-example-columns'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -45,7 +43,6 @@ You can easily use the [SelectMenu](/forms/select-menu) component to change the
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-columns-selectable' component: 'table-example-columns-selectable'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -59,7 +56,6 @@ You can make the columns sortable by setting the `sortable` property to `true` i
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-columns-sortable' component: 'table-example-columns-sortable'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -82,7 +78,6 @@ Use the `sort-button` prop to customize the sort button in the header. You can p
::component-card{class="grid"} ::component-card{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
baseProps: baseProps:
class: 'w-full' class: 'w-full'
columns: columns:
@@ -187,7 +182,6 @@ The initial value of `sort` will be respected as the initial sort column and dir
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-reactive-sorting' component: 'table-example-reactive-sorting'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -201,7 +195,6 @@ Use a `v-model` to make the table selectable. The `v-model` will be an array of
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-selectable' component: 'table-example-selectable'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -219,7 +212,6 @@ You can use this to navigate to a page, open a modal or even to select the row m
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-clickable' component: 'table-example-clickable'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -233,7 +225,6 @@ You can easily use the [Input](/forms/input) component to filter the rows.
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-searchable' component: 'table-example-searchable'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -247,7 +238,6 @@ You can easily use the [Pagination](/navigation/pagination) component to paginat
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-paginable' component: 'table-example-paginable'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -265,7 +255,6 @@ You can also set it to `null` to hide the loading state.
::component-card ::component-card
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
baseProps: baseProps:
class: 'w-full' class: 'w-full'
columns: columns:
@@ -314,7 +303,6 @@ You can also set it to `null` to hide the empty state.
::component-card ::component-card
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
baseProps: baseProps:
class: 'w-full' class: 'w-full'
columns: columns:
@@ -380,7 +368,6 @@ You can for example create an extra column for actions with a [Dropdown](/elemen
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-slots' component: 'table-example-slots'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -394,7 +381,6 @@ Use the `#loading-state` slot to customize the loading state.
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-loading-slot' component: 'table-example-loading-slot'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'
@@ -408,7 +394,6 @@ Use the `#empty-state` slot to customize the empty state.
::component-example{class="grid"} ::component-example{class="grid"}
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'table-example-empty-slot' component: 'table-example-empty-slot'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'

View File

@@ -225,7 +225,6 @@ Use the `#empty-state` slot to customize the empty state.
::component-example ::component-example
--- ---
padding: false padding: false
overflowClass: 'overflow-x-auto'
component: 'command-palette-example-empty-slot' component: 'command-palette-example-empty-slot'
componentProps: componentProps:
class: 'flex-1' class: 'flex-1'

View File

@@ -1,5 +1,5 @@
navigation: false navigation: false
title: 'Nuxt UI: Fully styled and customizable components for Nuxt' title: 'Nuxt UI: A UI Library for Modern Web Apps'
description: 'It provides everything related to UI when building your Nuxt app. This includes components, icons, colors, dark mode but also keyboard shortcuts. Built with Headless UI and Tailwind CSS, published under MIT License.' description: 'It provides everything related to UI when building your Nuxt app. This includes components, icons, colors, dark mode but also keyboard shortcuts. Built with Headless UI and Tailwind CSS, published under MIT License.'
hero: hero:
title: 'A <span class="text-primary">UI Library</span> for<br class="hidden lg:block"> Modern Web Apps' title: 'A <span class="text-primary">UI Library</span> for<br class="hidden lg:block"> Modern Web Apps'

View File

@@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<Header /> <Header :links="links" />
<UContainer> <UContainer>
<UMain> <UMain>
@@ -11,7 +11,7 @@
</UContainer> </UContainer>
<ClientOnly> <ClientOnly>
<LazyUDocsSearch :files="files" :navigation="navigation" /> <LazyUDocsSearch :files="files" :navigation="navigation" :links="links" />
</ClientOnly> </ClientOnly>
<UNotifications /> <UNotifications />
@@ -45,6 +45,54 @@ const navigation = computed(() => {
return branch.value?.name === 'dev' ? dev : main return branch.value?.name === 'dev' ? dev : main
}) })
const links = computed(() => {
return [{
label: 'Documentation',
icon: 'i-heroicons-book-open',
to: `${branch.value?.name === 'dev' ? '/dev' : ''}/getting-started`
}, {
label: 'Playground',
icon: 'i-simple-icons-stackblitz',
to: '/playground'
}, {
label: 'Roadmap',
icon: 'i-heroicons-academic-cap',
to: '/roadmap'
}, {
label: 'Pro',
icon: 'i-heroicons-square-3-stack-3d',
to: '/pro',
children: [{
label: 'Features',
to: '/pro#features',
exactHash: true,
icon: 'i-heroicons-beaker',
description: 'Discover all the features of Nuxt UI Pro.'
}, {
label: 'Pricing',
to: '/pro#pricing',
exactHash: true,
icon: 'i-heroicons-credit-card',
description: 'A simple pricing, for solo developers or teams.'
}, {
label: 'Guide',
to: '/pro/guide',
icon: 'i-heroicons-book-open',
description: 'Learn how to use Nuxt UI Pro in your app.'
}, {
label: 'Components',
to: '/pro/components',
icon: 'i-heroicons-cube-transparent',
description: 'Discover all the components available in Nuxt UI Pro.'
}]
}, {
label: 'Releases',
icon: 'i-heroicons-rocket-launch',
to: 'https://github.com/nuxt/ui/releases',
target: '_blank'
}]
})
// Provide // Provide
provide('navigation', navigation) provide('navigation', navigation)

View File

@@ -19,5 +19,7 @@
<script setup lang="ts"> <script setup lang="ts">
import type { NavItem } from '@nuxt/content/dist/runtime/types' import type { NavItem } from '@nuxt/content/dist/runtime/types'
const navigation = inject<NavItem[]>('navigation') const nav = inject<Ref<NavItem[]>>('navigation')
const navigation = computed(() => nav.value.filter(item => !item._path.startsWith('/pro')))
</script> </script>

View File

@@ -74,11 +74,7 @@ export default defineNuxtModule({
nuxt.hook('components:extend', async (_components) => { nuxt.hook('components:extend', async (_components) => {
components = _components components = _components
.filter( .filter((v) => v.shortPath.includes('components/content/examples/'))
(v) =>
v.shortPath.startsWith('components/content/examples/') ||
v.shortPath.startsWith('components/content/themes/')
)
.reduce((acc, component) => { .reduce((acc, component) => {
acc[component.pascalName] = component acc[component.pascalName] = component
return acc return acc

View File

@@ -8,7 +8,13 @@ const { resolve } = createResolver(import.meta.url)
export default defineNuxtConfig({ export default defineNuxtConfig({
// @ts-ignore // @ts-ignore
extends: process.env.NUXT_UI_PRO_PATH || '@nuxt/ui-pro', extends: process.env.NUXT_UI_PRO_PATH ? [
process.env.NUXT_UI_PRO_PATH,
resolve(process.env.NUXT_UI_PRO_PATH, '.docs')
] : [
'@nuxt/ui-pro',
process.env.NUXT_GITHUB_TOKEN && ['github:nuxt/ui-pro/.docs#dev', { giget: { auth: process.env.NUXT_GITHUB_TOKEN } }]
].filter(Boolean),
modules: [ modules: [
'@nuxt/content', '@nuxt/content',
'nuxt-og-image', 'nuxt-og-image',
@@ -30,7 +36,7 @@ export default defineNuxtConfig({
}, },
ui: { ui: {
global: true, global: true,
icons: ['heroicons', 'simple-icons'], icons: ['heroicons', 'logos', 'simple-icons'],
safelistColors: excludeColors(colors) safelistColors: excludeColors(colors)
}, },
content: { content: {
@@ -46,7 +52,19 @@ export default defineNuxtConfig({
repo: 'nuxt/ui', repo: 'nuxt/ui',
branch: 'main', branch: 'main',
dir: 'docs/content' dir: 'docs/content'
} },
pro: process.env.NUXT_UI_PRO_PATH ? {
prefix: '/pro',
driver: 'fs',
base: resolve(process.env.NUXT_UI_PRO_PATH, '.docs/content/pro')
} : process.env.NUXT_GITHUB_TOKEN ? {
prefix: '/pro',
driver: 'github',
repo: 'nuxt/ui-pro',
branch: 'dev',
dir: '.docs/content/pro',
token: process.env.NUXT_GITHUB_TOKEN || ''
} : undefined
} }
}, },
fontMetrics: { fontMetrics: {
@@ -70,11 +88,20 @@ export default defineNuxtConfig({
} }
}, },
componentMeta: { componentMeta: {
globalsOnly: true, exclude: [
exclude: ['@nuxtjs/mdc', resolve('./components'), resolve('@nuxt/ui-pro/components')], '@nuxt/content',
'@nuxt/ui-templates',
'@nuxtjs/color-mode',
'@nuxtjs/mdc',
'nuxt/dist',
'nuxt-og-image',
'nuxt-site-config',
resolve('./components'),
process.env.NUXT_UI_PRO_PATH ? resolve(process.env.NUXT_UI_PRO_PATH, '.docs', 'components') : '.c12'
],
metaFields: { metaFields: {
props: true, props: true,
slots: false, slots: true,
events: false, events: false,
exposed: false exposed: false
} }
@@ -87,7 +114,9 @@ export default defineNuxtConfig({
// Related to https://github.com/nuxt/nuxt/pull/22558 // Related to https://github.com/nuxt/nuxt/pull/22558
'components:extend': (components) => { 'components:extend': (components) => {
components.forEach((component) => { components.forEach((component) => {
if (component.global) { if (component.shortPath.includes(process.env.NUXT_UI_PRO_PATH || '@nuxt/ui-pro')) {
component.global = true
} else if (component.global) {
component.global = 'sync' component.global = 'sync'
} }
}) })

View File

@@ -6,22 +6,24 @@
}, },
"devDependencies": { "devDependencies": {
"@iconify-json/heroicons": "^1.1.13", "@iconify-json/heroicons": "^1.1.13",
"@iconify-json/logos": "^1.1.37",
"@iconify-json/simple-icons": "^1.1.76", "@iconify-json/simple-icons": "^1.1.76",
"@nuxt/content": "^2.8.5", "@nuxt/content": "^2.9.0",
"@nuxt/devtools": "^1.0.0", "@nuxt/devtools": "^1.0.0",
"@nuxt/eslint-config": "^0.2.0", "@nuxt/eslint-config": "^0.2.0",
"@nuxt/ui-pro": "npm:@nuxt/ui-pro-edge@0.3.1-28304178.1b14f22", "@nuxt/ui-pro": "^0.4.1",
"@nuxthq/studio": "^1.0.2", "@nuxthq/studio": "^1.0.3",
"@nuxtjs/fontaine": "^0.4.1", "@nuxtjs/fontaine": "^0.4.1",
"@nuxtjs/google-fonts": "^3.0.2", "@nuxtjs/google-fonts": "^3.0.2",
"@nuxtjs/mdc": "^0.2.6",
"@nuxtjs/plausible": "^0.2.3", "@nuxtjs/plausible": "^0.2.3",
"@vueuse/nuxt": "^10.5.0", "@vueuse/nuxt": "^10.5.0",
"eslint": "^8.52.0", "eslint": "^8.52.0",
"joi": "^17.11.0", "joi": "^17.11.0",
"nuxt": "^3.8.0", "nuxt": "^3.8.0",
"nuxt-cloudflare-analytics": "^1.0.8", "nuxt-cloudflare-analytics": "^1.0.8",
"nuxt-component-meta": "^0.5.4", "nuxt-component-meta": "npm:nuxt-component-meta-edge@0.5.5-28315603.0a285c7",
"nuxt-og-image": "^2.1.3", "nuxt-og-image": "^2.2.3",
"prettier": "^3.0.3", "prettier": "^3.0.3",
"typescript": "^5.2.2", "typescript": "^5.2.2",
"ufo": "^1.3.1", "ufo": "^1.3.1",

View File

@@ -7,7 +7,7 @@
<hr v-if="surround?.length"> <hr v-if="surround?.length">
<UDocsSurround :surround="(surround as ParsedContent[])" /> <UDocsSurround :surround="surround" />
</UPageBody> </UPageBody>
<template v-if="page.body?.toc?.links?.length" #right> <template v-if="page.body?.toc?.links?.length" #right>
@@ -26,7 +26,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { withoutTrailingSlash } from 'ufo' import { withoutTrailingSlash } from 'ufo'
import type { ParsedContent } from '@nuxt/content/dist/runtime/types'
const route = useRoute() const route = useRoute()
const { branch } = useContentSource() const { branch } = useContentSource()

View File

@@ -0,0 +1,11 @@
<template>
<div class="p-4 flex flex-col justify-center h-screen overflow-auto">
<component :is="name" />
</div>
</template>
<script setup lang="ts">
const route = useRoute()
const name = route.params.slug[0]
</script>

View File

@@ -1,7 +1,19 @@
<!-- eslint-disable vue/no-v-html --> <!-- eslint-disable vue/no-v-html -->
<template> <template>
<div> <div>
<ULandingHero v-bind="page.hero" :ui="{ base: 'relative z-[1]', container: 'max-w-3xl' }" class="mb-[calc(var(--header-height)*2)]"> <ULandingHero :ui="{ base: 'relative z-[1]', container: 'max-w-4xl' }" class="mb-[calc(var(--header-height)*2)]">
<template #headline>
<UBadge variant="subtle" size="md" class="hover:bg-primary-100 dark:bg-primary-950/100 dark:hover:bg-primary-900 transition-color relative font-medium rounded-full shadow-none">
<NuxtLink :to="`https://github.com/nuxt/ui/releases/tag/v${config.version}`" target="_blank" class="focus:outline-none" tabindex="-1">
<span class="absolute inset-0" aria-hidden="true" />
</NuxtLink>
<span class="flex items-center gap-1">
Nuxt UI {{ config.version.split('.').slice(0, -1).join('.') }} is out!
</span>
</UBadge>
</template>
<template #title> <template #title>
<span v-html="page.hero?.title" /> <span v-html="page.hero?.title" />
</template> </template>
@@ -72,16 +84,14 @@
}" }"
class="flex flex-col" class="flex flex-col"
> >
<div v-if="card.image"> <UColorModeImage
<UColorModeImage :light="`${card.image.path}-light.svg`"
:light="`${card.image.path}-light.svg`" :dark="`${card.image.path}-dark.svg`"
:dark="`${card.image.path}-dark.svg`" :width="card.image.width"
:width="card.image.width" :height="card.image.height"
:height="card.image.height" :alt="card.title"
:alt="card.title" class="object-cover w-full"
class="object-cover w-full" />
/>
</div>
</ULandingCard> </ULandingCard>
</ULandingGrid> </ULandingGrid>
</template> </template>
@@ -199,6 +209,7 @@ const { data: module } = await useFetch<{
const source = ref('npm i @nuxt/ui') const source = ref('npm i @nuxt/ui')
const config = useRuntimeConfig().public
const { copy, copied } = useClipboard({ source }) const { copy, copied } = useClipboard({ source })
const breakpoints = useBreakpoints(breakpointsTailwind) const breakpoints = useBreakpoints(breakpointsTailwind)

View File

@@ -16,7 +16,7 @@ defineOgImage({
</script> </script>
<template> <template>
<div class="h-[calc(100vh-var(--header-height))]"> <div class="h-[calc(100vh-var(--header-height)-var(--header-height)-1px)]">
<ClientOnly> <ClientOnly>
<iframe :src="`https://stackblitz.com/edit/nuxt-ui?embed=1&file=app.config.ts,app.vue&theme=${$colorMode.preference}`" width="100%" height="100%" /> <iframe :src="`https://stackblitz.com/edit/nuxt-ui?embed=1&file=app.config.ts,app.vue&theme=${$colorMode.preference}`" width="100%" height="100%" />
</ClientOnly> </ClientOnly>

View File

@@ -1,91 +0,0 @@
<template>
<UMain>
<ULandingHero>
<template #top>
<svg class="hidden dark:block absolute inset-0 -z-10 h-full w-full stroke-white/5 [mask-image:radial-gradient(100%_100%_at_top,white,transparent)]" aria-hidden="true">
<defs>
<pattern
id="983e3e4c-de6d-4c3f-8d64-b9761d1534cc"
width="200"
height="200"
x="50%"
y="-1"
patternUnits="userSpaceOnUse"
>
<path d="M.5 200V.5H200" fill="none" />
</pattern>
</defs>
<svg x="50%" y="-1" class="overflow-visible fill-gray-800/20">
<path d="M-200 0h201v201h-201Z M600 0h201v201h-201Z M-400 600h201v201h-201Z M200 800h201v201h-201Z" stroke-width="0" />
</svg>
<rect width="100%" height="100%" stroke-width="0" fill="url(#983e3e4c-de6d-4c3f-8d64-b9761d1534cc)" />
</svg>
<svg class="dark:hidden absolute inset-0 -z-10 h-full w-full stroke-gray-200 [mask-image:radial-gradient(100%_100%_at_top,white,transparent)]" aria-hidden="true">
<defs>
<pattern
id="0787a7c5-978c-4f66-83c7-11c213f99cb7"
width="200"
height="200"
x="50%"
y="-1"
patternUnits="userSpaceOnUse"
>
<path d="M.5 200V.5H200" fill="none" />
</pattern>
</defs>
<rect width="100%" height="100%" stroke-width="0" fill="url(#0787a7c5-978c-4f66-83c7-11c213f99cb7)" />
</svg>
<div class="absolute left-[calc(50%-4rem)] top-10 -z-10 transform-gpu blur-3xl sm:left-[calc(50%-18rem)] lg:left-48 lg:top-[calc(50%-30rem)] xl:left-[calc(50%-24rem)] right-0" aria-hidden="true">
<div class="aspect-[1108/632] w-full bg-gradient-to-r from-[rgb(var(--color-primary-DEFAULT))] to-white/20 opacity-20" style="clip-path: polygon(73.6% 51.7%, 91.7% 11.8%, 100% 46.4%, 97.4% 82.2%, 92.5% 84.9%, 75.7% 64%, 55.3% 47.5%, 46.5% 49.4%, 45% 62.9%, 50.3% 87.2%, 21.3% 64.1%, 0.1% 100%, 5.4% 51.1%, 21.4% 63.9%, 58.9% 0.2%, 73.6% 51.7%)" />
</div>
</template>
<template #badges>
<UBadge color="primary" size="lg" variant="subtle">
Coming Soon 🚀
</UBadge>
</template>
<template #links>
<UButton
trailing-icon="i-heroicons-arrow-right"
color="gray"
size="md"
variant="solid"
to="https://ui.nuxt.com/pro/purchase"
>
Early access
</UButton>
</template>
<template #title>
The <span class="text-primary">Building Blocks</span> for<br>Modern Web Apps
</template>
<template #description>
Nuxt UI Pro is a collection of premium components built on top of Nuxt UI to create beautiful & responsive Nuxt applications in minutes.<br>It includes all primitives to build landing pages, documentation, blogs, changelog, dashboards or entire SaaS products.
</template>
<MDC
:value="pro.code"
tag="pre"
class="prose prose-primary dark:prose-invert max-w-none -mt-6"
/>
</ULandingHero>
</UMain>
</template>
<script setup>
const title = 'Nuxt UI Pro: The Building Blocks for Modern Web Apps'
const description = 'Nuxt UI Pro is a collection of premium components built on top of Nuxt UI to create beautiful & responsive Nuxt applications in minutes. It includes all primitives to build landing pages, marketing pages, blogs, documentations or entire SaaS products.'
useSeoMeta({
titleTemplate: '',
title: title,
ogTitle: `${title} - Nuxt UI`,
description: description,
ogDescription: description
})
</script>

31
docs/pages/roadmap.vue Normal file
View File

@@ -0,0 +1,31 @@
<script setup>
const title = 'Roadmap'
const description = 'Discover our Volta board for @nuxt/ui development status.'
useSeoMeta({
title,
ogTitle: 'Nuxt UI Roadmap',
description
})
defineOgImage({
component: 'Docs',
title,
description
})
const appConfig = useAppConfig()
const colorMode = useColorMode()
const token = 'eyJ2aWV3IjoiYm9hcmQiLCJib2FyZFN0YXR1c2VzIjpbInRyaWFnZSIsImJhY2tsb2ciLCJ0b2RvIiwiaW5fcHJvZ3Jlc3MiLCJpbl9yZXZpZXciLCJkb25lIiwicmVsZWFzZWQiXSwiYm9hcmRMaW5rZWRQcnMiOmZhbHNlLCJsaXN0R3JvdXAiOiJzdGF0ZSIsImxpc3RPcmRlciI6ImNyZWF0ZWRfYXQiLCJ0aW1lbGluZVpvb20iOiJtb250aCIsInRpbWVsaW5lT3JkZXIiOiJzdGF0ZSIsInRpbWVsaW5lRGlzcGxheSI6ImFsbF9taWxlc3RvbmVzIiwiZmlsdGVycyI6e30sIm93bmVyIjoibnV4dCIsIm5hbWUiOiJ1aSJ9'
const src = computed(() => `https://volta.net/embed/${token}?theme=${colorMode.value}&gray=${appConfig.ui.gray}&primary=${appConfig.ui.primary}`)
</script>
<template>
<div class="h-[calc(100vh-var(--header-height)-var(--header-height)-1px)]">
<ClientOnly>
<iframe :src="src" width="100%" height="100%" />
</ClientOnly>
</div>
</template>

View File

@@ -1,31 +0,0 @@
export const pro = {
code: `
\`\`\`vue [app.vue]
<script setup lang="ts">
const links = [
{ to: '/', label: 'Home' },
{ to: '/about', label: 'About' },
{ to: '/contact', label: 'Contact' }
]
</script>
<template>
<UHeader :links="links" />
<UMain>
<ULandingHero title="Hello World" />
<ULandingSection title="Features">
<UPageGrid>
<ULandingCard title="First Card" />
<ULandingCard title="Second Card" />
<ULandingCard title="Third Card" />
</UPageGrid>
</ULandingSection>
</UMain>
<UFooter />
</template>
\`\`\`
`
}

444
pnpm-lock.yaml generated
View File

@@ -127,12 +127,15 @@ importers:
'@iconify-json/heroicons': '@iconify-json/heroicons':
specifier: ^1.1.13 specifier: ^1.1.13
version: 1.1.13 version: 1.1.13
'@iconify-json/logos':
specifier: ^1.1.37
version: 1.1.37
'@iconify-json/simple-icons': '@iconify-json/simple-icons':
specifier: ^1.1.76 specifier: ^1.1.76
version: 1.1.76 version: 1.1.76
'@nuxt/content': '@nuxt/content':
specifier: ^2.8.5 specifier: ^2.9.0
version: 2.8.5(rollup@3.29.1)(vue@3.3.4) version: 2.9.0(nuxt@3.8.0)(rollup@3.29.1)(vue@3.3.4)
'@nuxt/devtools': '@nuxt/devtools':
specifier: ^1.0.0 specifier: ^1.0.0
version: 1.0.0(nuxt@3.8.0)(rollup@3.29.1)(vite@4.5.0) version: 1.0.0(nuxt@3.8.0)(rollup@3.29.1)(vite@4.5.0)
@@ -140,17 +143,20 @@ importers:
specifier: ^0.2.0 specifier: ^0.2.0
version: 0.2.0(eslint@8.52.0) version: 0.2.0(eslint@8.52.0)
'@nuxt/ui-pro': '@nuxt/ui-pro':
specifier: npm:@nuxt/ui-pro-edge@0.3.1-28304178.1b14f22 specifier: ^0.4.1
version: /@nuxt/ui-pro-edge@0.3.1-28304178.1b14f22(rollup@3.29.1)(vue@3.3.4)(webpack@5.88.2) version: 0.4.1(rollup@3.29.1)(vue@3.3.4)(webpack@5.88.2)
'@nuxthq/studio': '@nuxthq/studio':
specifier: ^1.0.2 specifier: ^1.0.3
version: 1.0.2(rollup@3.29.1) version: 1.0.3(rollup@3.29.1)
'@nuxtjs/fontaine': '@nuxtjs/fontaine':
specifier: ^0.4.1 specifier: ^0.4.1
version: 0.4.1(rollup@3.29.1) version: 0.4.1(rollup@3.29.1)
'@nuxtjs/google-fonts': '@nuxtjs/google-fonts':
specifier: ^3.0.2 specifier: ^3.0.2
version: 3.0.2(rollup@3.29.1) version: 3.0.2(rollup@3.29.1)
'@nuxtjs/mdc':
specifier: ^0.2.6
version: 0.2.6(rollup@3.29.1)
'@nuxtjs/plausible': '@nuxtjs/plausible':
specifier: ^0.2.3 specifier: ^0.2.3
version: 0.2.3(rollup@3.29.1) version: 0.2.3(rollup@3.29.1)
@@ -170,11 +176,11 @@ importers:
specifier: ^1.0.8 specifier: ^1.0.8
version: 1.0.8(rollup@3.29.1) version: 1.0.8(rollup@3.29.1)
nuxt-component-meta: nuxt-component-meta:
specifier: ^0.5.4 specifier: npm:nuxt-component-meta-edge@0.5.5-28315603.0a285c7
version: 0.5.4(rollup@3.29.1) version: /nuxt-component-meta-edge@0.5.5-28315603.0a285c7(rollup@3.29.1)
nuxt-og-image: nuxt-og-image:
specifier: ^2.1.3 specifier: ^2.2.3
version: 2.1.3(rollup@3.29.1)(vue@3.3.4) version: 2.2.3(rollup@3.29.1)(vue@3.3.4)
prettier: prettier:
specifier: ^3.0.3 specifier: ^3.0.3
version: 3.0.3 version: 3.0.3
@@ -1295,6 +1301,12 @@ packages:
dependencies: dependencies:
'@iconify/types': 2.0.0 '@iconify/types': 2.0.0
/@iconify-json/logos@1.1.37:
resolution: {integrity: sha512-H2S8frTEznk6paX2kMzeUGn4KSiykghvO0b8UvEDd1fFFzt0WxCXpP1tBv67XaWK99e6JgA34hhv4lRGAm1hJg==}
dependencies:
'@iconify/types': 2.0.0
dev: true
/@iconify-json/simple-icons@1.1.76: /@iconify-json/simple-icons@1.1.76:
resolution: {integrity: sha512-jZEMvkMfD5tTadFJIOIxKE4cTVXslrktWEiMJV6HaABi9qw02zS7bzrllR1YtGPxzniKkq2UVg/dKS6lliIxVA==} resolution: {integrity: sha512-jZEMvkMfD5tTadFJIOIxKE4cTVXslrktWEiMJV6HaABi9qw02zS7bzrllR1YtGPxzniKkq2UVg/dKS6lliIxVA==}
dependencies: dependencies:
@@ -1538,15 +1550,17 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@nuxt/content@2.8.5(rollup@3.29.1)(vue@3.3.4): /@nuxt/content@2.9.0(nuxt@3.8.0)(rollup@3.29.1)(vue@3.3.4):
resolution: {integrity: sha512-sWVGoZJOjwEd8v6XYTrHYtQ7c11HR6yK9dcqruf+7WM2WJmwTSeY8B1ir6+9mE1FPQAFnqg26qSkxwafpS9o+g==} resolution: {integrity: sha512-//mt++/AgOmjT6TpanugNJpJfx6q8g7wV8/vnk7vSSrrgki8tG6jpupuJmxHHB8DcqqTJfuBWFIdaLhv/Z9Gzg==}
dependencies: dependencies:
'@nuxt/kit': 3.7.4(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
'@nuxtjs/mdc': 0.2.1(rollup@3.29.1) '@nuxtjs/mdc': 0.2.6(rollup@3.29.1)
'@vueuse/core': 10.5.0(vue@3.3.4)
'@vueuse/head': 2.0.0(vue@3.3.4) '@vueuse/head': 2.0.0(vue@3.3.4)
'@vueuse/nuxt': 10.5.0(nuxt@3.8.0)(rollup@3.29.1)(vue@3.3.4)
consola: 3.2.3 consola: 3.2.3
defu: 6.1.2 defu: 6.1.3
destr: 2.0.1 destr: 2.0.2
json5: 2.2.3 json5: 2.2.3
knitwork: 1.0.0 knitwork: 1.0.0
listhen: 1.5.5 listhen: 1.5.5
@@ -1555,6 +1569,7 @@ packages:
micromark: 4.0.0 micromark: 4.0.0
micromark-util-sanitize-uri: 2.0.0 micromark-util-sanitize-uri: 2.0.0
micromark-util-types: 2.0.0 micromark-util-types: 2.0.0
minisearch: 6.2.0
ohash: 1.1.3 ohash: 1.1.3
pathe: 1.1.1 pathe: 1.1.1
scule: 1.0.0 scule: 1.0.0
@@ -1576,8 +1591,10 @@ packages:
- '@planetscale/database' - '@planetscale/database'
- '@upstash/redis' - '@upstash/redis'
- '@vercel/kv' - '@vercel/kv'
- '@vue/composition-api'
- bufferutil - bufferutil
- idb-keyval - idb-keyval
- nuxt
- rollup - rollup
- supports-color - supports-color
- utf-8-validate - utf-8-validate
@@ -1633,7 +1650,7 @@ packages:
'@nuxt/kit': 3.8.0(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
birpc: 0.2.14 birpc: 0.2.14
consola: 3.2.3 consola: 3.2.3
destr: 2.0.1 destr: 2.0.2
error-stack-parser-es: 0.1.1 error-stack-parser-es: 0.1.1
execa: 7.2.0 execa: 7.2.0
fast-glob: 3.3.1 fast-glob: 3.3.1
@@ -1838,7 +1855,7 @@ packages:
consola: 3.2.3 consola: 3.2.3
create-require: 1.1.1 create-require: 1.1.1
defu: 6.1.3 defu: 6.1.3
destr: 2.0.2 destr: 2.0.1
dotenv: 16.3.1 dotenv: 16.3.1
git-url-parse: 13.1.0 git-url-parse: 13.1.0
is-docker: 3.0.0 is-docker: 3.0.0
@@ -1855,8 +1872,41 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@nuxt/ui-edge@2.9.0-28303819.ace8fc1(rollup@3.29.1)(vue@3.3.4)(webpack@5.88.2): /@nuxt/ui-pro@0.4.1(rollup@3.29.1)(vue@3.3.4)(webpack@5.88.2):
resolution: {integrity: sha512-GrN0ZKCtm838flgZMVg5QiN+5W2L9pCKyTtPlPiGbSYrLqxwQWvkqMlPP2+9RsvVhCAUyUu6ikl6nRh1f2O6QQ==} resolution: {integrity: sha512-Ue82QTXo0oh5gM/nn3PkCFgiZvtAi40plxs3hiIkHpOijfXU1sLv9As/r2m3d3c6vRLbvBOpb82YuVkt7mi/bw==}
dependencies:
'@nuxt/ui': 2.10.0(rollup@3.29.1)(vue@3.3.4)(webpack@5.88.2)
'@vueuse/core': 10.5.0(vue@3.3.4)
defu: 6.1.3
nuxt-icon: 0.6.1(rollup@3.29.1)(vue@3.3.4)
ofetch: 1.3.3
pathe: 1.1.1
tailwind-merge: 1.14.0
transitivePeerDependencies:
- '@vue/composition-api'
- async-validator
- axios
- change-case
- drauu
- focus-trap
- idb-keyval
- jwt-decode
- nprogress
- qrcode
- rollup
- sortablejs
- supports-color
- ts-node
- universal-cookie
- vue
- webpack
dev: true
/@nuxt/ui-templates@1.3.1:
resolution: {integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==}
/@nuxt/ui@2.10.0(rollup@3.29.1)(vue@3.3.4)(webpack@5.88.2):
resolution: {integrity: sha512-pMv0BWWkeUOAJ+YkXr6xirbg2iHXKerIk9hYS7blp0aBehBTBq1gxHdtl+iA2hq9+LFahO6WyA7SJnw3h0thvQ==}
engines: {node: '>=v16.20.2'} engines: {node: '>=v16.20.2'}
dependencies: dependencies:
'@egoist/tailwindcss-icons': 1.4.0(tailwindcss@3.3.5) '@egoist/tailwindcss-icons': 1.4.0(tailwindcss@3.3.5)
@@ -1901,39 +1951,6 @@ packages:
- webpack - webpack
dev: true dev: true
/@nuxt/ui-pro-edge@0.3.1-28304178.1b14f22(rollup@3.29.1)(vue@3.3.4)(webpack@5.88.2):
resolution: {integrity: sha512-J2zc5H3UVoIeZQH7j5KSAB4PMXUiYkZ1OaV03dylRZvWkgeUtq9oc2QsC+Wz8QKZh0tLMxbFLrN7TIsJz9tBig==}
dependencies:
'@nuxt/ui': /@nuxt/ui-edge@2.9.0-28303819.ace8fc1(rollup@3.29.1)(vue@3.3.4)(webpack@5.88.2)
'@vueuse/core': 10.5.0(vue@3.3.4)
defu: 6.1.3
nuxt-icon: 0.6.0(rollup@3.29.1)(vue@3.3.4)
ofetch: 1.3.3
pathe: 1.1.1
tailwind-merge: 1.14.0
transitivePeerDependencies:
- '@vue/composition-api'
- async-validator
- axios
- change-case
- drauu
- focus-trap
- idb-keyval
- jwt-decode
- nprogress
- qrcode
- rollup
- sortablejs
- supports-color
- ts-node
- universal-cookie
- vue
- webpack
dev: true
/@nuxt/ui-templates@1.3.1:
resolution: {integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==}
/@nuxt/vite-builder@3.8.0(eslint@8.52.0)(rollup@3.29.1)(typescript@5.2.2)(vue-tsc@1.8.21)(vue@3.3.4): /@nuxt/vite-builder@3.8.0(eslint@8.52.0)(rollup@3.29.1)(typescript@5.2.2)(vue-tsc@1.8.21)(vue@3.3.4):
resolution: {integrity: sha512-F9BfH+c/Idp6sBGVHR4QJSuoO42evtE4D0OelD45NgkqVvmBmOawlj0Oz5fDKoV64LDPI2+yE+xnBdQtsNv/VA==} resolution: {integrity: sha512-F9BfH+c/Idp6sBGVHR4QJSuoO42evtE4D0OelD45NgkqVvmBmOawlj0Oz5fDKoV64LDPI2+yE+xnBdQtsNv/VA==}
engines: {node: ^14.18.0 || >=16.10.0} engines: {node: ^14.18.0 || >=16.10.0}
@@ -1996,11 +2013,11 @@ packages:
- vue-tsc - vue-tsc
dev: true dev: true
/@nuxthq/studio@1.0.2(rollup@3.29.1): /@nuxthq/studio@1.0.3(rollup@3.29.1):
resolution: {integrity: sha512-QoF6oYigr6IcHgNeQqAUBmCrSqnuPffoF9Tbg8cToF3oYU7WHkKgYCe+diICFdWuiH/SHTEfSm9kaone/Bp2gw==} resolution: {integrity: sha512-4jHEz53xVj9WDoJdfu8iX/IGcBKm0Z797aDWoZdrTvwg/FSSj+CTnJmlML77574WQoGPoUkQ6pMSM5X/3NOVSg==}
dependencies: dependencies:
'@nuxt/kit': 3.8.0(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
defu: 6.1.2 defu: 6.1.3
nuxt-component-meta: 0.5.4(rollup@3.29.1) nuxt-component-meta: 0.5.4(rollup@3.29.1)
nuxt-config-schema: 0.4.6(rollup@3.29.1) nuxt-config-schema: 0.4.6(rollup@3.29.1)
socket.io-client: 4.7.2 socket.io-client: 4.7.2
@@ -2047,16 +2064,16 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@nuxtjs/mdc@0.2.1(rollup@3.29.1): /@nuxtjs/mdc@0.2.6(rollup@3.29.1):
resolution: {integrity: sha512-14TPZ4p2UcG3IWqdPArx03hsUmWYQBlEYXkfm2Eq5sXu7hAg8UI9wEqZNNadMdnEi/WZvcMNf0xsbBhcRnxqew==} resolution: {integrity: sha512-FDjJXfvFsNgtt3lm7mxjPymv5lovdOMS5bHxnAS/Vcoqd8qC4nkiSnKpZD2eLf4UGQKKNOMSn1mlC2viQHu2sg==}
dependencies: dependencies:
'@nuxt/kit': 3.8.0(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
'@types/hast': 3.0.1 '@types/hast': 3.0.2
'@types/mdast': 4.0.1 '@types/mdast': 4.0.2
'@vue/compiler-core': 3.3.4 '@vue/compiler-core': 3.3.7
consola: 3.2.3 consola: 3.2.3
defu: 6.1.3 defu: 6.1.3
destr: 2.0.1 destr: 2.0.2
detab: 3.0.2 detab: 3.0.2
github-slugger: 2.0.0 github-slugger: 2.0.0
hast-util-to-string: 3.0.0 hast-util-to-string: 3.0.0
@@ -2071,11 +2088,11 @@ packages:
rehype-sort-attributes: 5.0.0 rehype-sort-attributes: 5.0.0
remark-emoji: 4.0.0 remark-emoji: 4.0.0
remark-gfm: 3.0.1 remark-gfm: 3.0.1
remark-mdc: 2.0.0 remark-mdc: 2.1.0
remark-parse: 10.0.2 remark-parse: 10.0.2
remark-rehype: 10.1.0 remark-rehype: 10.1.0
scule: 1.0.0 scule: 1.0.0
shikiji: 0.6.8 shikiji: 0.6.10
ufo: 1.3.1 ufo: 1.3.1
unified: 11.0.3 unified: 11.0.3
unist-builder: 4.0.0 unist-builder: 4.0.0
@@ -2441,8 +2458,8 @@ packages:
semver: 7.5.4 semver: 7.5.4
dev: true dev: true
/@resvg/resvg-js-android-arm-eabi@2.4.1: /@resvg/resvg-js-android-arm-eabi@2.6.0:
resolution: {integrity: sha512-AA6f7hS0FAPpvQMhBCf6f1oD1LdlqNXKCxAAPpKh6tR11kqV0YIB9zOlIYgITM14mq2YooLFl6XIbbvmY+jwUw==} resolution: {integrity: sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
@@ -2450,8 +2467,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-android-arm64@2.4.1: /@resvg/resvg-js-android-arm64@2.6.0:
resolution: {integrity: sha512-/QleoRdPfsEuH9jUjilYcDtKK/BkmWcK+1LXM8L2nsnf/CI8EnFyv7ZzCj4xAIvZGAy9dTYr/5NZBcTwxG2HQg==} resolution: {integrity: sha512-N527f529bjMwYWShZYfBD60dXA4Fux+D695QsHQ93BDYZSHUoOh1CUGUyICevnTxs7VgEl98XpArmUWBZQVMfQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@@ -2459,8 +2476,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-darwin-arm64@2.4.1: /@resvg/resvg-js-darwin-arm64@2.6.0:
resolution: {integrity: sha512-U1oMNhea+kAXgiEXgzo7EbFGCD1Edq5aSlQoe6LMly6UjHzgx2W3N5kEXCwU/CgN5FiQhZr7PlSJSlcr7mdhfg==} resolution: {integrity: sha512-MabUKLVayEwlPo0mIqAmMt+qESN8LltCvv5+GLgVga1avpUrkxj/fkU1TKm8kQegutUjbP/B0QuMuUr0uhF8ew==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@@ -2468,8 +2485,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-darwin-x64@2.4.1: /@resvg/resvg-js-darwin-x64@2.6.0:
resolution: {integrity: sha512-avyVh6DpebBfHHtTQTZYSr6NG1Ur6TEilk1+H0n7V+g4F7x7WPOo8zL00ZhQCeRQ5H4f8WXNWIEKL8fwqcOkYw==} resolution: {integrity: sha512-zrFetdnSw/suXjmyxSjfDV7i61hahv6DDG6kM7BYN2yJ3Es5+BZtqYZTcIWogPJedYKmzN1YTMWGd/3f0ubFiA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@@ -2477,8 +2494,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-linux-arm-gnueabihf@2.4.1: /@resvg/resvg-js-linux-arm-gnueabihf@2.6.0:
resolution: {integrity: sha512-isY/mdKoBWH4VB5v621co+8l101jxxYjuTkwOLsbW+5RK9EbLciPlCB02M99ThAHzI2MYxIUjXNmNgOW8btXvw==} resolution: {integrity: sha512-sH4gxXt7v7dGwjGyzLwn7SFGvwZG6DQqLaZ11MmzbCwd9Zosy1TnmrMJfn6TJ7RHezmQMgBPi18bl55FZ1AT4A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@@ -2486,8 +2503,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-linux-arm64-gnu@2.4.1: /@resvg/resvg-js-linux-arm64-gnu@2.6.0:
resolution: {integrity: sha512-uY5voSCrFI8TH95vIYBm5blpkOtltLxLRODyhKJhGfskOI7XkRw5/t1u0sWAGYD8rRSNX+CA+np86otKjubrNg==} resolution: {integrity: sha512-fCyMncqCJtrlANADIduYF4IfnWQ295UKib7DAxFXQhBsM9PLDTpizr0qemZcCNadcwSVHnAIzL4tliZhCM8P6A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@@ -2495,8 +2512,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-linux-arm64-musl@2.4.1: /@resvg/resvg-js-linux-arm64-musl@2.6.0:
resolution: {integrity: sha512-6mT0+JBCsermKMdi/O2mMk3m7SqOjwi9TKAwSngRZ/nQoL3Z0Z5zV+572ztgbWr0GODB422uD8e9R9zzz38dRQ==} resolution: {integrity: sha512-ouLjTgBQHQyxLht4FdMPTvuY8xzJigM9EM2Tlu0llWkN1mKyTQrvYWi6TA6XnKdzDJHy7ZLpWpjZi7F5+Pg+Vg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@@ -2504,8 +2521,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-linux-x64-gnu@2.4.1: /@resvg/resvg-js-linux-x64-gnu@2.6.0:
resolution: {integrity: sha512-60KnrscLj6VGhkYOJEmmzPlqqfcw1keDh6U+vMcNDjPhV3B5vRSkpP/D/a8sfokyeh4VEacPSYkWGezvzS2/mg==} resolution: {integrity: sha512-n3zC8DWsvxC1AwxpKFclIPapDFibs5XdIRoV/mcIlxlh0vseW1F49b97F33BtJQRmlntsqqN6GMMqx8byB7B+Q==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@@ -2513,8 +2530,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-linux-x64-musl@2.4.1: /@resvg/resvg-js-linux-x64-musl@2.6.0:
resolution: {integrity: sha512-0AMyZSICC1D7ge115cOZQW8Pcad6PjWuZkBFF3FJuSxC6Dgok0MQnLTs2MfMdKBlAcwO9dXsf3bv9tJZj8pATA==} resolution: {integrity: sha512-n4tasK1HOlAxdTEROgYA1aCfsEKk0UOFDNd/AQTTZlTmCbHKXPq+O8npaaKlwXquxlVK8vrkcWbksbiGqbCAcw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@@ -2522,8 +2539,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-win32-arm64-msvc@2.4.1: /@resvg/resvg-js-win32-arm64-msvc@2.6.0:
resolution: {integrity: sha512-76XDFOFSa3d0QotmcNyChh2xHwk+JTFiEQBVxMlHpHMeq7hNrQJ1IpE1zcHSQvrckvkdfLboKRrlGB86B10Qjw==} resolution: {integrity: sha512-X2+EoBJFwDI5LDVb51Sk7ldnVLitMGr9WwU/i21i3fAeAXZb3hM16k67DeTy16OYkT2dk/RfU1tP1wG+rWbz2Q==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@@ -2531,8 +2548,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-win32-ia32-msvc@2.4.1: /@resvg/resvg-js-win32-ia32-msvc@2.6.0:
resolution: {integrity: sha512-odyVFGrEWZIzzJ89KdaFtiYWaIJh9hJRW/frcEcG3agJ464VXkN/2oEVF5ulD+5mpGlug9qJg7htzHcKxDN8sg==} resolution: {integrity: sha512-L7oevWjQoUgK5W1fCKn0euSVemhDXVhrjtwqpc7MwBKKimYeiOshO1Li1pa8bBt5PESahenhWgdB6lav9O0fEg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@@ -2540,8 +2557,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js-win32-x64-msvc@2.4.1: /@resvg/resvg-js-win32-x64-msvc@2.6.0:
resolution: {integrity: sha512-vY4kTLH2S3bP+puU5x7hlAxHv+ulFgcK6Zn3efKSr0M0KnZ9A3qeAjZteIpkowEFfUeMPNg2dvvoFRJA9zqxSw==} resolution: {integrity: sha512-8lJlghb+Unki5AyKgsnFbRJwkEj9r1NpwyuBG8yEJiG1W9eEGl03R3I7bsVa3haof/3J1NlWf0rzSa1G++A2iw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -2549,26 +2566,26 @@ packages:
dev: true dev: true
optional: true optional: true
/@resvg/resvg-js@2.4.1: /@resvg/resvg-js@2.6.0:
resolution: {integrity: sha512-wTOf1zerZX8qYcMmLZw3czR4paI4hXqPjShNwJRh5DeHxvgffUS5KM7XwxtbIheUW6LVYT5fhT2AJiP6mU7U4A==} resolution: {integrity: sha512-Tf3YpbBKcQn991KKcw/vg7vZf98v01seSv6CVxZBbRkL/xyjnoYB6KgrFL6zskT1A4dWC/vg77KyNOW+ePaNlA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
optionalDependencies: optionalDependencies:
'@resvg/resvg-js-android-arm-eabi': 2.4.1 '@resvg/resvg-js-android-arm-eabi': 2.6.0
'@resvg/resvg-js-android-arm64': 2.4.1 '@resvg/resvg-js-android-arm64': 2.6.0
'@resvg/resvg-js-darwin-arm64': 2.4.1 '@resvg/resvg-js-darwin-arm64': 2.6.0
'@resvg/resvg-js-darwin-x64': 2.4.1 '@resvg/resvg-js-darwin-x64': 2.6.0
'@resvg/resvg-js-linux-arm-gnueabihf': 2.4.1 '@resvg/resvg-js-linux-arm-gnueabihf': 2.6.0
'@resvg/resvg-js-linux-arm64-gnu': 2.4.1 '@resvg/resvg-js-linux-arm64-gnu': 2.6.0
'@resvg/resvg-js-linux-arm64-musl': 2.4.1 '@resvg/resvg-js-linux-arm64-musl': 2.6.0
'@resvg/resvg-js-linux-x64-gnu': 2.4.1 '@resvg/resvg-js-linux-x64-gnu': 2.6.0
'@resvg/resvg-js-linux-x64-musl': 2.4.1 '@resvg/resvg-js-linux-x64-musl': 2.6.0
'@resvg/resvg-js-win32-arm64-msvc': 2.4.1 '@resvg/resvg-js-win32-arm64-msvc': 2.6.0
'@resvg/resvg-js-win32-ia32-msvc': 2.4.1 '@resvg/resvg-js-win32-ia32-msvc': 2.6.0
'@resvg/resvg-js-win32-x64-msvc': 2.4.1 '@resvg/resvg-js-win32-x64-msvc': 2.6.0
dev: true dev: true
/@resvg/resvg-wasm@2.4.1: /@resvg/resvg-wasm@2.6.0:
resolution: {integrity: sha512-yi6R0HyHtsoWTRA06Col4WoDs7SvlXU3DLMNP2bdAgs7HK18dTEVl1weXgxRzi8gwLteGUbIg29zulxIB3GSdg==} resolution: {integrity: sha512-iDkBM6Ivex8nULtBu8cX670/lfsGxq8U1cuqE+qS9xFpPQP1enPdVm/33Kq3+B+bAldA+AHNZnCgpmlHo/fZrQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
dev: true dev: true
@@ -2607,7 +2624,7 @@ packages:
rollup: rollup:
optional: true optional: true
dependencies: dependencies:
'@rollup/pluginutils': 5.0.5(rollup@3.29.1) '@rollup/pluginutils': 5.0.4(rollup@3.29.1)
commondir: 1.0.1 commondir: 1.0.1
estree-walker: 2.0.2 estree-walker: 2.0.2
glob: 8.1.0 glob: 8.1.0
@@ -2658,7 +2675,7 @@ packages:
rollup: rollup:
optional: true optional: true
dependencies: dependencies:
'@rollup/pluginutils': 5.0.5(rollup@3.29.1) '@rollup/pluginutils': 5.0.4(rollup@3.29.1)
rollup: 3.29.1 rollup: 3.29.1
dev: true dev: true
@@ -2684,7 +2701,7 @@ packages:
rollup: rollup:
optional: true optional: true
dependencies: dependencies:
'@rollup/pluginutils': 5.0.5(rollup@3.29.1) '@rollup/pluginutils': 5.0.4(rollup@3.29.1)
'@types/resolve': 1.20.2 '@types/resolve': 1.20.2
deepmerge: 4.3.1 deepmerge: 4.3.1
is-builtin-module: 3.2.1 is-builtin-module: 3.2.1
@@ -2720,7 +2737,7 @@ packages:
rollup: rollup:
optional: true optional: true
dependencies: dependencies:
'@rollup/pluginutils': 5.0.5(rollup@3.29.1) '@rollup/pluginutils': 5.0.4(rollup@3.29.1)
magic-string: 0.27.0 magic-string: 0.27.0
rollup: 3.29.1 rollup: 3.29.1
dev: true dev: true
@@ -3004,6 +3021,15 @@ packages:
minimatch: 9.0.3 minimatch: 9.0.3
dev: true dev: true
/@twemoji/api@14.1.2:
resolution: {integrity: sha512-JLuszRq7t+NWJTaNwBD+Hbhf67gzn6jAqhNIDTPndEGT55kHiZTJAYRGCHZB/eA58OGVSp7mIvsJs+F/ZDJanA==}
dependencies:
fs-extra: 8.1.0
jsonfile: 5.0.0
twemoji-parser: 14.0.0
universalify: 0.1.2
dev: true
/@types/chai-subset@1.3.4: /@types/chai-subset@1.3.4:
resolution: {integrity: sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==} resolution: {integrity: sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==}
dependencies: dependencies:
@@ -3035,8 +3061,8 @@ packages:
/@types/estree@1.0.1: /@types/estree@1.0.1:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
/@types/fs-extra@11.0.2: /@types/fs-extra@11.0.3:
resolution: {integrity: sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==} resolution: {integrity: sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==}
dependencies: dependencies:
'@types/jsonfile': 6.1.1 '@types/jsonfile': 6.1.1
'@types/node': 20.6.3 '@types/node': 20.6.3
@@ -3048,8 +3074,8 @@ packages:
'@types/unist': 2.0.8 '@types/unist': 2.0.8
dev: true dev: true
/@types/hast@3.0.1: /@types/hast@3.0.2:
resolution: {integrity: sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==} resolution: {integrity: sha512-B5hZHgHsXvfCoO3xgNJvBnX7N8p86TqQeGKXcokW4XXi+qY4vxxPSFYofytvVmpFxzPv7oxDQzjg5Un5m2/xiw==}
dependencies: dependencies:
'@types/unist': 3.0.0 '@types/unist': 3.0.0
dev: true dev: true
@@ -3089,6 +3115,12 @@ packages:
'@types/unist': 3.0.0 '@types/unist': 3.0.0
dev: true dev: true
/@types/mdast@4.0.2:
resolution: {integrity: sha512-tYR83EignvhYO9iU3kDg8V28M0jqyh9zzp5GV+EO+AYnyUl3P5ltkTeJuTiFZQFz670FSb3EwT/6LQdX+UdKfw==}
dependencies:
'@types/unist': 3.0.0
dev: true
/@types/ms@0.7.31: /@types/ms@0.7.31:
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
dev: true dev: true
@@ -3390,36 +3422,18 @@ packages:
pretty-format: 29.7.0 pretty-format: 29.7.0
dev: true dev: true
/@volar/language-core@1.10.1:
resolution: {integrity: sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==}
dependencies:
'@volar/source-map': 1.10.1
dev: true
/@volar/language-core@1.10.5: /@volar/language-core@1.10.5:
resolution: {integrity: sha512-xD71j4Ee0Ycq8WsiAE6H/aCThGdTobiZZeD+jFD+bvmbopa1Az296pqJysr3Ck8c7n5+GGF+xlKCS3WxRFYgSQ==} resolution: {integrity: sha512-xD71j4Ee0Ycq8WsiAE6H/aCThGdTobiZZeD+jFD+bvmbopa1Az296pqJysr3Ck8c7n5+GGF+xlKCS3WxRFYgSQ==}
dependencies: dependencies:
'@volar/source-map': 1.10.5 '@volar/source-map': 1.10.5
dev: true dev: true
/@volar/source-map@1.10.1:
resolution: {integrity: sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==}
dependencies:
muggle-string: 0.3.1
dev: true
/@volar/source-map@1.10.5: /@volar/source-map@1.10.5:
resolution: {integrity: sha512-s4kgo66SA1kMzYvF9HFE6Vc1rxtXLUmcLrT2WKnchPDvLne+97Kw+xoR2NxJFmsvHoL18vmu/YGXYcN+Q5re1g==} resolution: {integrity: sha512-s4kgo66SA1kMzYvF9HFE6Vc1rxtXLUmcLrT2WKnchPDvLne+97Kw+xoR2NxJFmsvHoL18vmu/YGXYcN+Q5re1g==}
dependencies: dependencies:
muggle-string: 0.3.1 muggle-string: 0.3.1
dev: true dev: true
/@volar/typescript@1.10.1:
resolution: {integrity: sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==}
dependencies:
'@volar/language-core': 1.10.1
dev: true
/@volar/typescript@1.10.5: /@volar/typescript@1.10.5:
resolution: {integrity: sha512-kfDehpeLJku9i1BgsFOYIczPmFFH4herl+GZrLGdvX5urTqeCKsKYlF36iNmFaADzjMb9WlENcUZzPjK8MxNrQ==} resolution: {integrity: sha512-kfDehpeLJku9i1BgsFOYIczPmFFH4herl+GZrLGdvX5urTqeCKsKYlF36iNmFaADzjMb9WlENcUZzPjK8MxNrQ==}
dependencies: dependencies:
@@ -3436,7 +3450,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@babel/types': 7.23.0 '@babel/types': 7.23.0
'@rollup/pluginutils': 5.0.5(rollup@3.29.1) '@rollup/pluginutils': 5.0.4(rollup@3.29.1)
'@vue/compiler-sfc': 3.3.4 '@vue/compiler-sfc': 3.3.4
ast-kit: 0.11.2(rollup@3.29.1) ast-kit: 0.11.2(rollup@3.29.1)
local-pkg: 0.4.3 local-pkg: 0.4.3
@@ -3477,6 +3491,15 @@ packages:
estree-walker: 2.0.2 estree-walker: 2.0.2
source-map-js: 1.0.2 source-map-js: 1.0.2
/@vue/compiler-core@3.3.7:
resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==}
dependencies:
'@babel/parser': 7.23.0
'@vue/shared': 3.3.7
estree-walker: 2.0.2
source-map-js: 1.0.2
dev: true
/@vue/compiler-dom@3.3.4: /@vue/compiler-dom@3.3.4:
resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==}
dependencies: dependencies:
@@ -3494,7 +3517,7 @@ packages:
'@vue/shared': 3.3.4 '@vue/shared': 3.3.4
estree-walker: 2.0.2 estree-walker: 2.0.2
magic-string: 0.30.5 magic-string: 0.30.5
postcss: 8.4.31 postcss: 8.4.30
source-map-js: 1.0.2 source-map-js: 1.0.2
/@vue/compiler-ssr@3.3.4: /@vue/compiler-ssr@3.3.4:
@@ -3526,19 +3549,19 @@ packages:
vue-template-compiler: 2.7.14 vue-template-compiler: 2.7.14
dev: true dev: true
/@vue/language-core@1.8.8(typescript@5.2.2): /@vue/language-core@1.8.22(typescript@5.2.2):
resolution: {integrity: sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==} resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@volar/language-core': 1.10.1 '@volar/language-core': 1.10.5
'@volar/source-map': 1.10.1 '@volar/source-map': 1.10.5
'@vue/compiler-dom': 3.3.4 '@vue/compiler-dom': 3.3.4
'@vue/reactivity': 3.3.4 '@vue/shared': 3.3.7
'@vue/shared': 3.3.4 computeds: 0.0.1
minimatch: 9.0.3 minimatch: 9.0.3
muggle-string: 0.3.1 muggle-string: 0.3.1
typescript: 5.2.2 typescript: 5.2.2
@@ -3584,6 +3607,10 @@ packages:
/@vue/shared@3.3.4: /@vue/shared@3.3.4:
resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==}
/@vue/shared@3.3.7:
resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==}
dev: true
/@vueuse/core@10.5.0(vue@3.3.4): /@vueuse/core@10.5.0(vue@3.3.4):
resolution: {integrity: sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==} resolution: {integrity: sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==}
dependencies: dependencies:
@@ -4049,7 +4076,7 @@ packages:
engines: {node: '>=16.14.0'} engines: {node: '>=16.14.0'}
dependencies: dependencies:
'@babel/parser': 7.23.0 '@babel/parser': 7.23.0
'@rollup/pluginutils': 5.0.5(rollup@3.29.1) '@rollup/pluginutils': 5.0.4(rollup@3.29.1)
pathe: 1.1.1 pathe: 1.1.1
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
@@ -4060,7 +4087,7 @@ packages:
engines: {node: '>=16.14.0'} engines: {node: '>=16.14.0'}
dependencies: dependencies:
'@babel/parser': 7.23.0 '@babel/parser': 7.23.0
'@rollup/pluginutils': 5.0.5(rollup@3.29.1) '@rollup/pluginutils': 5.0.4(rollup@3.29.1)
pathe: 1.1.1 pathe: 1.1.1
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
@@ -6629,7 +6656,7 @@ packages:
/hast-util-from-parse5@8.0.1: /hast-util-from-parse5@8.0.1:
resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
'@types/unist': 3.0.0 '@types/unist': 3.0.0
devlop: 1.1.0 devlop: 1.1.0
hastscript: 8.0.0 hastscript: 8.0.0
@@ -6642,13 +6669,13 @@ packages:
/hast-util-heading-rank@3.0.0: /hast-util-heading-rank@3.0.0:
resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
dev: true dev: true
/hast-util-is-element@3.0.0: /hast-util-is-element@3.0.0:
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
dev: true dev: true
/hast-util-parse-selector@3.1.1: /hast-util-parse-selector@3.1.1:
@@ -6660,7 +6687,7 @@ packages:
/hast-util-parse-selector@4.0.0: /hast-util-parse-selector@4.0.0:
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
dev: true dev: true
/hast-util-raw@7.2.3: /hast-util-raw@7.2.3:
@@ -6682,7 +6709,7 @@ packages:
/hast-util-raw@9.0.1: /hast-util-raw@9.0.1:
resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
'@types/unist': 3.0.0 '@types/unist': 3.0.0
'@ungap/structured-clone': 1.2.0 '@ungap/structured-clone': 1.2.0
hast-util-from-parse5: 8.0.1 hast-util-from-parse5: 8.0.1
@@ -6700,7 +6727,7 @@ packages:
/hast-util-to-html@9.0.0: /hast-util-to-html@9.0.0:
resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
'@types/unist': 3.0.0 '@types/unist': 3.0.0
ccount: 2.0.1 ccount: 2.0.1
comma-separated-tokens: 2.0.3 comma-separated-tokens: 2.0.3
@@ -6728,7 +6755,7 @@ packages:
/hast-util-to-parse5@8.0.0: /hast-util-to-parse5@8.0.0:
resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
comma-separated-tokens: 2.0.3 comma-separated-tokens: 2.0.3
devlop: 1.1.0 devlop: 1.1.0
property-information: 6.3.0 property-information: 6.3.0
@@ -6740,13 +6767,13 @@ packages:
/hast-util-to-string@3.0.0: /hast-util-to-string@3.0.0:
resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
dev: true dev: true
/hast-util-whitespace@3.0.0: /hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
dev: true dev: true
/hastscript@7.2.0: /hastscript@7.2.0:
@@ -6762,7 +6789,7 @@ packages:
/hastscript@8.0.0: /hastscript@8.0.0:
resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
comma-separated-tokens: 2.0.3 comma-separated-tokens: 2.0.3
hast-util-parse-selector: 4.0.0 hast-util-parse-selector: 4.0.0
property-information: 6.3.0 property-information: 6.3.0
@@ -7872,7 +7899,7 @@ packages:
resolution: {integrity: sha512-C9m5/JqFV1/CMrMFDf1PqmvMc8ohrssmlF5bdgea7nUqqn6D9xzKVTa6DIm0LReCqvEPS35o1UElmb7PmoSfHQ==} resolution: {integrity: sha512-C9m5/JqFV1/CMrMFDf1PqmvMc8ohrssmlF5bdgea7nUqqn6D9xzKVTa6DIm0LReCqvEPS35o1UElmb7PmoSfHQ==}
dependencies: dependencies:
estree-walker: 3.0.3 estree-walker: 3.0.3
magic-string: 0.30.5 magic-string: 0.30.3
mlly: 1.4.2 mlly: 1.4.2
type-level-regexp: 0.1.17 type-level-regexp: 0.1.17
ufo: 1.3.1 ufo: 1.3.1
@@ -7991,7 +8018,7 @@ packages:
/mdast-util-find-and-replace@3.0.1: /mdast-util-find-and-replace@3.0.1:
resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==}
dependencies: dependencies:
'@types/mdast': 4.0.1 '@types/mdast': 4.0.2
escape-string-regexp: 5.0.0 escape-string-regexp: 5.0.0
unist-util-is: 6.0.0 unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1 unist-util-visit-parents: 6.0.1
@@ -8019,7 +8046,7 @@ packages:
/mdast-util-from-markdown@2.0.0: /mdast-util-from-markdown@2.0.0:
resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==}
dependencies: dependencies:
'@types/mdast': 4.0.1 '@types/mdast': 4.0.2
'@types/unist': 3.0.0 '@types/unist': 3.0.0
decode-named-character-reference: 1.0.2 decode-named-character-reference: 1.0.2
devlop: 1.1.0 devlop: 1.1.0
@@ -8101,7 +8128,7 @@ packages:
/mdast-util-phrasing@4.0.0: /mdast-util-phrasing@4.0.0:
resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==}
dependencies: dependencies:
'@types/mdast': 4.0.1 '@types/mdast': 4.0.2
unist-util-is: 6.0.0 unist-util-is: 6.0.0
dev: true dev: true
@@ -8121,8 +8148,8 @@ packages:
/mdast-util-to-hast@13.0.2: /mdast-util-to-hast@13.0.2:
resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
'@types/mdast': 4.0.1 '@types/mdast': 4.0.2
'@ungap/structured-clone': 1.2.0 '@ungap/structured-clone': 1.2.0
devlop: 1.1.0 devlop: 1.1.0
micromark-util-sanitize-uri: 2.0.0 micromark-util-sanitize-uri: 2.0.0
@@ -8147,7 +8174,7 @@ packages:
/mdast-util-to-markdown@2.1.0: /mdast-util-to-markdown@2.1.0:
resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
dependencies: dependencies:
'@types/mdast': 4.0.1 '@types/mdast': 4.0.2
'@types/unist': 3.0.0 '@types/unist': 3.0.0
longest-streak: 3.1.0 longest-streak: 3.1.0
mdast-util-phrasing: 4.0.0 mdast-util-phrasing: 4.0.0
@@ -8774,6 +8801,10 @@ packages:
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
dev: true dev: true
/minisearch@6.2.0:
resolution: {integrity: sha512-BECkorDF1TY2rGKt9XHdSeP9TP29yUbrAaCh/C03wpyf1vx3uYcP/+8XlMcpTkgoU0rBVnHMAOaP83Rc9Tm+TQ==}
dev: true
/minizlib@2.1.2: /minizlib@2.1.2:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
@@ -9215,13 +9246,25 @@ packages:
- supports-color - supports-color
dev: true dev: true
/nuxt-component-meta-edge@0.5.5-28315603.0a285c7(rollup@3.29.1):
resolution: {integrity: sha512-Hw2ByxuO1Itd7i2AyZ8oJhE+kbHAjI6FccCvJgKP2K/b2TgzfQSecjs5FNPtD1URa/4aCIFB8PVHpdNxoW5Piw==}
dependencies:
'@nuxt/kit': 3.8.0(rollup@3.29.1)
scule: 1.0.0
typescript: 5.2.2
vue-component-meta: 1.8.22(typescript@5.2.2)
transitivePeerDependencies:
- rollup
- supports-color
dev: true
/nuxt-component-meta@0.5.4(rollup@3.29.1): /nuxt-component-meta@0.5.4(rollup@3.29.1):
resolution: {integrity: sha512-0ou1O5Dky/avUAm6XrO4r4aZiRgP3wCwBlOe49FcyVZo0uAULFw8b3j48BvKWzBdOywf8hJEL4V5o7FWnd1E+A==} resolution: {integrity: sha512-0ou1O5Dky/avUAm6XrO4r4aZiRgP3wCwBlOe49FcyVZo0uAULFw8b3j48BvKWzBdOywf8hJEL4V5o7FWnd1E+A==}
dependencies: dependencies:
'@nuxt/kit': 3.7.4(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
scule: 1.0.0 scule: 1.0.0
typescript: 5.2.2 typescript: 5.2.2
vue-component-meta: 1.8.8(typescript@5.2.2) vue-component-meta: 1.8.22(typescript@5.2.2)
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
@@ -9240,8 +9283,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/nuxt-icon@0.6.0(rollup@3.29.1)(vue@3.3.4): /nuxt-icon@0.6.1(rollup@3.29.1)(vue@3.3.4):
resolution: {integrity: sha512-yFhdd1inv8z4soCF8HZphVMn0wJJN+5m+ZHs1QQblrdxXJDV7UuZeTjN6Fy8VDHfWbZJm6coXSQrK483kU+ipA==} resolution: {integrity: sha512-a4/MEmbP2hXB0sLWBqevC+569FADEMs+VfYJ6nzbktUSJY57/PoHyen0PtqAAkMjGGhHgDVHAcjy5RCJyYZRYg==}
dependencies: dependencies:
'@iconify/vue': 4.1.1(vue@3.3.4) '@iconify/vue': 4.1.1(vue@3.3.4)
'@nuxt/kit': 3.8.0(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
@@ -9251,13 +9294,14 @@ packages:
- vue - vue
dev: true dev: true
/nuxt-og-image@2.1.3(rollup@3.29.1)(vue@3.3.4): /nuxt-og-image@2.2.3(rollup@3.29.1)(vue@3.3.4):
resolution: {integrity: sha512-ro9DrArtnBZNtITnDLZPrHoyF4KQIYc2tADkZWIdHchY34O5csyCF77kR7dxfvP/1jXrL8kG2HULoNzmS5/uug==} resolution: {integrity: sha512-r6EfYcprzndoDIFnfUU+Qq0/iEp5b413LRGehaigTBABRspWzMvI6fqKHlovSbi/k44Y/vWCVUaJQD0gwZ65Wg==}
dependencies: dependencies:
'@nuxt/kit': 3.8.0(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
'@resvg/resvg-js': 2.4.1 '@resvg/resvg-js': 2.6.0
'@resvg/resvg-wasm': 2.4.1 '@resvg/resvg-wasm': 2.6.0
'@types/fs-extra': 11.0.2 '@twemoji/api': 14.1.2
'@types/fs-extra': 11.0.3
birpc: 0.2.14 birpc: 0.2.14
chalk: 5.3.0 chalk: 5.3.0
chrome-launcher: 1.1.0 chrome-launcher: 1.1.0
@@ -9270,8 +9314,8 @@ packages:
globby: 13.2.2 globby: 13.2.2
image-size: 1.0.2 image-size: 1.0.2
launch-editor: 2.6.1 launch-editor: 2.6.1
nuxt-site-config: 1.5.4(rollup@3.29.1)(vue@3.3.4) nuxt-site-config: 1.5.5(rollup@3.29.1)(vue@3.3.4)
nuxt-site-config-kit: 1.5.4(rollup@3.29.1)(vue@3.3.4) nuxt-site-config-kit: 1.5.5(rollup@3.29.1)(vue@3.3.4)
nypm: 0.3.3 nypm: 0.3.3
ofetch: 1.3.3 ofetch: 1.3.3
ohash: 1.1.3 ohash: 1.1.3
@@ -9297,13 +9341,13 @@ packages:
- vue - vue
dev: true dev: true
/nuxt-site-config-kit@1.5.4(rollup@3.29.1)(vue@3.3.4): /nuxt-site-config-kit@1.5.5(rollup@3.29.1)(vue@3.3.4):
resolution: {integrity: sha512-anTcPXIb5/1S7BP9nce3BU/UgbX38A6mofZ0c+cvni4O512GOx07SWJCpq9GXlS5qInEbg8f5azIEupTD+d+iQ==} resolution: {integrity: sha512-87mf+Ij5njs0qmSl/X/fUhfaSe9kf6feulZnrfGqI0yqk7XmcpdiDZl5xLOWaFQI5Ial+eMeIDz86hrKptiLrQ==}
dependencies: dependencies:
'@nuxt/kit': 3.8.0(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
'@nuxt/schema': 3.8.0(rollup@3.29.1) '@nuxt/schema': 3.8.0(rollup@3.29.1)
pkg-types: 1.0.3 pkg-types: 1.0.3
site-config-stack: 1.5.4(vue@3.3.4) site-config-stack: 1.5.5(vue@3.3.4)
std-env: 3.4.3 std-env: 3.4.3
ufo: 1.3.1 ufo: 1.3.1
transitivePeerDependencies: transitivePeerDependencies:
@@ -9312,14 +9356,14 @@ packages:
- vue - vue
dev: true dev: true
/nuxt-site-config@1.5.4(rollup@3.29.1)(vue@3.3.4): /nuxt-site-config@1.5.5(rollup@3.29.1)(vue@3.3.4):
resolution: {integrity: sha512-u6N1D+2iAul5fHL0heeMMdvaa/TIqUXA9eNhwbGibc9Tiw+cOals4bFdQYFp6PXcRZrQC81dX27p87qgOa5q+g==} resolution: {integrity: sha512-L1mjCyFvIb0mp7WwTgGngGCN6xlIza52zL/84R7rqY8r6gMkUtcTHH7OUCMO9Sq9bGI70HZLl7hsLuIqle+cWw==}
dependencies: dependencies:
'@nuxt/kit': 3.8.0(rollup@3.29.1) '@nuxt/kit': 3.8.0(rollup@3.29.1)
'@nuxt/schema': 3.8.0(rollup@3.29.1) '@nuxt/schema': 3.8.0(rollup@3.29.1)
nuxt-site-config-kit: 1.5.4(rollup@3.29.1)(vue@3.3.4) nuxt-site-config-kit: 1.5.5(rollup@3.29.1)(vue@3.3.4)
pathe: 1.1.1 pathe: 1.1.1
site-config-stack: 1.5.4(vue@3.3.4) site-config-stack: 1.5.5(vue@3.3.4)
ufo: 1.3.1 ufo: 1.3.1
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
@@ -10336,6 +10380,14 @@ packages:
/postcss-value-parser@4.2.0: /postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
/postcss@8.4.30:
resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.6
picocolors: 1.0.0
source-map-js: 1.0.2
/postcss@8.4.31: /postcss@8.4.31:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
@@ -10507,7 +10559,7 @@ packages:
resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==}
dependencies: dependencies:
defu: 6.1.3 defu: 6.1.3
destr: 2.0.1 destr: 2.0.2
flat: 5.0.2 flat: 5.0.2
/rc@1.2.8: /rc@1.2.8:
@@ -10647,7 +10699,7 @@ packages:
/rehype-external-links@3.0.0: /rehype-external-links@3.0.0:
resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
'@ungap/structured-clone': 1.2.0 '@ungap/structured-clone': 1.2.0
hast-util-is-element: 3.0.0 hast-util-is-element: 3.0.0
is-absolute-url: 4.0.1 is-absolute-url: 4.0.1
@@ -10666,7 +10718,7 @@ packages:
/rehype-slug@6.0.0: /rehype-slug@6.0.0:
resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
github-slugger: 2.0.0 github-slugger: 2.0.0
hast-util-heading-rank: 3.0.0 hast-util-heading-rank: 3.0.0
hast-util-to-string: 3.0.0 hast-util-to-string: 3.0.0
@@ -10676,7 +10728,7 @@ packages:
/rehype-sort-attribute-values@5.0.0: /rehype-sort-attribute-values@5.0.0:
resolution: {integrity: sha512-dQdHdCIRnpiU+BkrLSqH+aM4lWJyLqGzv49KvH4gHj+JxYwNqvGhoTXckS3AJu4V9ZutwsTcawP0pC7PhwX0tQ==} resolution: {integrity: sha512-dQdHdCIRnpiU+BkrLSqH+aM4lWJyLqGzv49KvH4gHj+JxYwNqvGhoTXckS3AJu4V9ZutwsTcawP0pC7PhwX0tQ==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
hast-util-is-element: 3.0.0 hast-util-is-element: 3.0.0
unist-util-visit: 5.0.0 unist-util-visit: 5.0.0
dev: true dev: true
@@ -10684,7 +10736,7 @@ packages:
/rehype-sort-attributes@5.0.0: /rehype-sort-attributes@5.0.0:
resolution: {integrity: sha512-6tJUH4xHFcdO85CZRwAcEtHNCzjZ9V9S0VZLgo1pzbN04qy8jiVCZ3oAxDmBVG3Rth5b1xFTDet5WG/UYZeJLQ==} resolution: {integrity: sha512-6tJUH4xHFcdO85CZRwAcEtHNCzjZ9V9S0VZLgo1pzbN04qy8jiVCZ3oAxDmBVG3Rth5b1xFTDet5WG/UYZeJLQ==}
dependencies: dependencies:
'@types/hast': 3.0.1 '@types/hast': 3.0.2
unist-util-visit: 5.0.0 unist-util-visit: 5.0.0
dev: true dev: true
@@ -10746,10 +10798,10 @@ packages:
- supports-color - supports-color
dev: true dev: true
/remark-mdc@2.0.0: /remark-mdc@2.1.0:
resolution: {integrity: sha512-zBonqJya1254h84GRLjJc1fU4aXng2cKaie5qk0T1edUIkP4lVY1kJD4TP+uoFaUziTeyR6LSvkmRcHDZiWtoA==} resolution: {integrity: sha512-N1jHp5fjzCvY6qXmhfoFOMjCauu6CfNz1q79vihtgwnUrp3/C0e6Nzkzm6QeoFLHhxrTRu0epWi6A3nQUUxOIA==}
dependencies: dependencies:
'@types/mdast': 4.0.1 '@types/mdast': 4.0.2
'@types/unist': 3.0.0 '@types/unist': 3.0.0
flat: 5.0.2 flat: 5.0.2
js-yaml: 4.1.0 js-yaml: 4.1.0
@@ -10885,7 +10937,7 @@ packages:
rollup: ^3.25.0 rollup: ^3.25.0
typescript: ^4.5 || ^5.0 typescript: ^4.5 || ^5.0
dependencies: dependencies:
magic-string: 0.30.5 magic-string: 0.30.3
rollup: 3.29.1 rollup: 3.29.1
typescript: 5.2.2 typescript: 5.2.2
optionalDependencies: optionalDependencies:
@@ -11132,8 +11184,8 @@ packages:
resolution: {integrity: sha512-e+/aueHx0YeIEut6RXC6K8gSf0PykwZiHD7q7AHtpTW8Kd8TpFUIWqTwhAnrGjOyOMyrwv+syr5WPagMpDpVYQ==} resolution: {integrity: sha512-e+/aueHx0YeIEut6RXC6K8gSf0PykwZiHD7q7AHtpTW8Kd8TpFUIWqTwhAnrGjOyOMyrwv+syr5WPagMpDpVYQ==}
dev: true dev: true
/shikiji@0.6.8: /shikiji@0.6.10:
resolution: {integrity: sha512-K0axxNAdB9KvLUflU7QoLC7p6i2p1R2MFG0eP+iclbjtuEZqng99jHcg3VJL0GWRO67yozTICnykjo1HjOzdkg==} resolution: {integrity: sha512-WE+A5Y2ntM5hL3iJQujk97qr5Uj7PSIRXpQfrZ6h+JWPXZ8KBEDhFXc4lqNriaRq1WGOVPUT83XMOzmHiH3W8A==}
dependencies: dependencies:
hast-util-to-html: 9.0.0 hast-util-to-html: 9.0.0
dev: true dev: true
@@ -11193,8 +11245,8 @@ packages:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
dev: true dev: true
/site-config-stack@1.5.4(vue@3.3.4): /site-config-stack@1.5.5(vue@3.3.4):
resolution: {integrity: sha512-VQUGuSSfaqBdaySLFKXj2YS9RCrbMjGcbXV06yOAJr9AygyzapSRNKjglolcRQVxdG8q+iQpW/qQQeN1IvHCeg==} resolution: {integrity: sha512-aLSAUOC0RjDvA/EAG8TZUOEGRkgKj5EIUJAFCVViSLZwCQ2VCDCxTjWqdIULkhiB8y9NTGH4+M0iwiLbFfCP+g==}
peerDependencies: peerDependencies:
vue: ^3 vue: ^3
dependencies: dependencies:
@@ -12684,7 +12736,7 @@ packages:
'@types/node': 20.6.3 '@types/node': 20.6.3
esbuild: 0.18.20 esbuild: 0.18.20
postcss: 8.4.31 postcss: 8.4.31
rollup: 3.29.1 rollup: 3.29.4
optionalDependencies: optionalDependencies:
fsevents: 2.3.3 fsevents: 2.3.3
dev: true dev: true
@@ -12800,23 +12852,23 @@ packages:
ufo: 1.3.1 ufo: 1.3.1
dev: true dev: true
/vue-component-meta@1.8.8(typescript@5.2.2): /vue-component-meta@1.8.22(typescript@5.2.2):
resolution: {integrity: sha512-iVwH7wGm6VpOAvQoMjFmv8Coe9oV61JqbRkUVx95Xegwb3hEYmltvv4hYvLwUjaev07JRkskPQctyzPBU3YFyQ==} resolution: {integrity: sha512-xic335E3KOm3uMcg23UDqo0y1XII8PVPjwoIkzi3tjUzP0edM3m9jF8SYevnJLp1NqiZ035iG1N6QMEauSAulA==}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@volar/typescript': 1.10.1 '@volar/typescript': 1.10.5
'@vue/language-core': 1.8.8(typescript@5.2.2) '@vue/language-core': 1.8.22(typescript@5.2.2)
typesafe-path: 0.2.2 typesafe-path: 0.2.2
typescript: 5.2.2 typescript: 5.2.2
vue-component-type-helpers: 1.8.8 vue-component-type-helpers: 1.8.22
dev: true dev: true
/vue-component-type-helpers@1.8.8: /vue-component-type-helpers@1.8.22:
resolution: {integrity: sha512-Ohv9HQY92nSbpReC6WhY0X4YkOszHzwUHaaN/lev5tHQLM1AEw+LrLeB2bIGIyKGDU7ZVrncXcv/oBny4rjbYg==} resolution: {integrity: sha512-LK3wJHs3vJxHG292C8cnsRusgyC5SEZDCzDCD01mdE/AoREFMl2tzLRuzwyuEsOIz13tqgBcnvysN3Lxsa14Fw==}
dev: true dev: true
/vue-demi@0.14.6(vue@3.3.4): /vue-demi@0.14.6(vue@3.3.4):