import type { PropType } from 'vue' import type { RouteLocationRaw } from '#vue-router' import type { NuxtLinkProps } from '#app' export const nuxtLinkProps = { to: { type: [String, Object] as PropType, default: undefined, required: false, }, href: { type: [String, Object] as PropType, default: undefined, required: false, }, // Attributes target: { type: String as PropType, default: undefined, required: false, }, rel: { type: String as PropType, default: undefined, required: false, }, noRel: { type: Boolean as PropType, default: undefined, required: false, }, // Prefetching prefetch: { type: Boolean as PropType, default: undefined, required: false, }, noPrefetch: { type: Boolean as PropType, default: undefined, required: false, }, // Styling activeClass: { type: String as PropType, default: undefined, required: false, }, exactActiveClass: { type: String as PropType, default: undefined, required: false, }, prefetchedClass: { type: String as PropType, default: undefined, required: false, }, // Vue Router's `` additional props replace: { type: Boolean as PropType, default: undefined, required: false, }, ariaCurrentValue: { type: String as PropType, default: undefined, required: false, }, // Edge cases handling external: { type: Boolean as PropType, default: undefined, required: false, }, } as const export const uiLinkProps = { as: { type: String, default: 'button', }, type: { type: String, default: 'button', }, disabled: { type: Boolean, default: null, }, active: { type: Boolean, default: undefined, }, exact: { type: Boolean, default: false, }, exactQuery: { type: Boolean, default: false, }, exactHash: { type: Boolean, default: false, }, inactiveClass: { type: String, default: undefined, }, } as const export function getNuxtLinkProps(props: any) { const keys = Object.keys(nuxtLinkProps) return keys.reduce((acc, key) => { if (props[key] !== undefined) { acc[key] = props[key] } return acc }, {} as any) } export function getUiLinkProps(props: any) { const keys = [...Object.keys(nuxtLinkProps), ...Object.keys(uiLinkProps)] return keys.reduce((acc, key) => { if (props[key] !== undefined) { acc[key] = props[key] } return acc }, {} as any) }