diff --git a/.gitignore b/.gitignore index ce574ac..1ecc9be 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,10 @@ dist .cache .output +# Vitepress +**/.vitepress/cache + + # Env .env diff --git a/docs/.vitepress/components/demo-block/index.ts b/docs/.vitepress/components/demo-block/index.ts new file mode 100644 index 0000000..3b25848 --- /dev/null +++ b/docs/.vitepress/components/demo-block/index.ts @@ -0,0 +1,3 @@ +import DemoBlock from "./src/index.vue"; + +export default DemoBlock; diff --git a/docs/.vitepress/components/demo-block/src/index.ts b/docs/.vitepress/components/demo-block/src/index.ts new file mode 100644 index 0000000..676be67 --- /dev/null +++ b/docs/.vitepress/components/demo-block/src/index.ts @@ -0,0 +1,42 @@ +import type { ExtractPropTypes } from "vue"; + +export const demoProps = { + github: { + type: String, + default: "https://github.com/chizukicn/hoci" + }, + codeSandBox: { + type: String, + default: "https://codesandbox.io/" + }, + highlightedCode: { + type: String, + default: "" + }, + code: { + type: String, + default: "" + }, + title: { + type: String, + default: "" + }, + desc: { + type: String, + default: "" + }, + lang: { + type: String, + default: "vue" + }, + expand: { + type: Boolean, + default: false + }, + src: { + type: String, + default: "" + } +} as const; + +export type ODemoProps = ExtractPropTypes; diff --git a/docs/.vitepress/components/demo-block/src/index.vue b/docs/.vitepress/components/demo-block/src/index.vue new file mode 100644 index 0000000..2760345 --- /dev/null +++ b/docs/.vitepress/components/demo-block/src/index.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/docs/.vitepress/components/demo-block/src/playground.ts b/docs/.vitepress/components/demo-block/src/playground.ts new file mode 100644 index 0000000..7a1d576 --- /dev/null +++ b/docs/.vitepress/components/demo-block/src/playground.ts @@ -0,0 +1,21 @@ +const playgroundUrl = (import.meta as any).env.DEV ? "http://localhost:5173/play/" : "https://onu.zyob.top/play/"; + +function utoa(data: string) { + return btoa(unescape(encodeURIComponent(data))); +} + +const MAIN_FILE_NAME = "App.vue"; + +export const usePlayground = (source: string) => { + const code = decodeURIComponent(source); + const originCode = { + [MAIN_FILE_NAME]: code + }; + + const encoded = utoa(JSON.stringify(originCode)); + const link = `${playgroundUrl}#${encoded}`; + return { + encoded, + link + }; +}; diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts new file mode 100644 index 0000000..cb26e27 --- /dev/null +++ b/docs/.vitepress/config.ts @@ -0,0 +1,58 @@ +import { defineConfig } from "vitepress"; +import type { DefaultTheme } from "vitepress/types/default-theme"; +import { applyPlugins } from "./plugins/code"; + +const guideSidebar = (): DefaultTheme.SidebarItem[] => { + return [ + { + text: "快速开始", + link: "quickstart" + } + ]; +}; + +const componentSidebar = (): DefaultTheme.SidebarItem[] => { + return [ + { + text: "Affix (固钉)", + link: "affix" + }, + { + text: "Selection (选择器)", + link: "selection" + } + ]; +}; + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "hoci", + description: "a headless components library for vue3", + markdown: { + config: (md) => { + applyPlugins(md); + } + }, + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: "指南", link: "/guide/quickstart" }, + { text: "组件", link: "/component/selection" } + ], + + sidebar: { + "/guide/": { + base: "/guide/", + items: guideSidebar() + }, + "/component/": { + base: "/component/", + items: componentSidebar() + } + }, + + socialLinks: [ + { icon: "github", link: "https://github.com/chizukicn/hoci" } + ] + } +}); diff --git a/docs/.vitepress/plugins/code/constants.ts b/docs/.vitepress/plugins/code/constants.ts new file mode 100644 index 0000000..0f53d07 --- /dev/null +++ b/docs/.vitepress/plugins/code/constants.ts @@ -0,0 +1,2 @@ +export const FenceDemoTag = "vue:demo"; +export const DemoTag = "demo"; diff --git a/docs/.vitepress/plugins/code/fencePlugin.ts b/docs/.vitepress/plugins/code/fencePlugin.ts new file mode 100644 index 0000000..21442e7 --- /dev/null +++ b/docs/.vitepress/plugins/code/fencePlugin.ts @@ -0,0 +1,20 @@ +import type { MarkdownRenderer } from "vitepress"; +import { FenceDemoTag } from "./constants"; +import { genDemoByCode } from "./utils"; + +export function fencePlugin(md: MarkdownRenderer) { + const defaultRender = md.renderer.rules.fence; + + md.renderer.rules.fence = (tokens, idx, options, env, self) => { + const token = tokens[idx]; + if (token.info.trim() !== FenceDemoTag) { + return defaultRender!(tokens, idx, options, env, self); + }; + + const content = token.content; + const path = env.path; + + const demoScripts = genDemoByCode(md, env, path, content); + return demoScripts; + }; +} diff --git a/docs/.vitepress/plugins/code/index.ts b/docs/.vitepress/plugins/code/index.ts new file mode 100644 index 0000000..874bf35 --- /dev/null +++ b/docs/.vitepress/plugins/code/index.ts @@ -0,0 +1,7 @@ +import { demoBlockPlugin } from "./plugin-demo-block"; +import { fencePlugin } from "./fencePlugin"; + +export function applyPlugins(md: markdownit) { + md.use(fencePlugin); + md.use(demoBlockPlugin); +} diff --git a/docs/.vitepress/plugins/code/plugin-demo-block.ts b/docs/.vitepress/plugins/code/plugin-demo-block.ts new file mode 100644 index 0000000..df2d589 --- /dev/null +++ b/docs/.vitepress/plugins/code/plugin-demo-block.ts @@ -0,0 +1,67 @@ +import { dirname, resolve } from "node:path"; +import fsExtra from "fs-extra"; +import { baseParse } from "@vue/compiler-core"; +import type { AttributeNode, ElementNode } from "@vue/compiler-core"; +import type { MarkdownRenderer } from "vitepress"; +import { DemoTag } from "./constants"; +import { getDemoComponent } from "./utils"; + +function getPropsMap(attrs: AttributeNode[]) { + const map: Record = {}; + for (const { name, value } of attrs) { + map[name] = value?.content; + }; + + return map; +} + +export function parseProps(content: string) { + const ast = baseParse(content); + const demoElement = ast.children[0] as ElementNode; + + const props = getPropsMap(demoElement.props as AttributeNode[]); + + return props; +} + +export function demoBlockPlugin(md: MarkdownRenderer) { + const addRenderRule = (type: string) => { + const defaultRender = md.renderer.rules[type]; + + md.renderer.rules[type] = (tokens, idx, options, env, self) => { + const token = tokens[idx]; + const content = token.content.trim(); + + if (!content.startsWith(`<${DemoTag} `)) { + return defaultRender!(tokens, idx, options, env, self); + }; + + const { path } = env; + + const props = parseProps(content); + + if (!props.src) { + return defaultRender!(tokens, idx, options, env, self); + }; + + const frontmatter = env.frontmatter; + + const mdDir = dirname(frontmatter.realPath ?? path); + const srcPath = resolve(mdDir, props.src); + const code = fsExtra.readFileSync(srcPath, "utf-8"); + + const demoScripts = getDemoComponent(md, env, { + title: props.title, + desc: props.desc, + path: srcPath, + code, + ...props + }); + + return demoScripts; + }; + }; + + addRenderRule("html_block"); + addRenderRule("html_inline"); +} diff --git a/docs/.vitepress/plugins/code/types.ts b/docs/.vitepress/plugins/code/types.ts new file mode 100644 index 0000000..57c3e05 --- /dev/null +++ b/docs/.vitepress/plugins/code/types.ts @@ -0,0 +1,7 @@ +export interface DemoInfos { + title?: string + desc?: string + path: string + code: string + lang?: string +} diff --git a/docs/.vitepress/plugins/code/utils.ts b/docs/.vitepress/plugins/code/utils.ts new file mode 100644 index 0000000..28f811c --- /dev/null +++ b/docs/.vitepress/plugins/code/utils.ts @@ -0,0 +1,110 @@ +import { dirname, join, sep } from "node:path"; +import fsExtra from "fs-extra"; +import type { MarkdownRenderer } from "vitepress"; +import { DemoTag } from "./constants"; +import type { DemoInfos } from "./types"; + +const scriptRE = /<\/script>/; +const scriptLangTsRE = /<\s*script[^>]*\blang=["']ts["'][^>]*/; +const scriptSetupRE = /<\s*script[^>]*\bsetup\b[^>]*/; +const scriptClientRE = /<\s*script[^>]*\bclient\b[^>]*/; + +let index = 1; +export function getDemoComponent( + md: MarkdownRenderer, + env: any, + { title, desc, path, code, ...props }: DemoInfos +) { + const componentName = `DemoComponent${index++}`; + path = normalizePath(path); + const github = `https://github.com/chizukicn/hoci/tree/main/${path.split("/").slice(-4).join("/")}`; + + injectImportStatement(env, componentName, path); + + const highlightedCode = md.options.highlight!(code, props.lang || "vue", ""); + return ` + <${DemoTag} + code="${encodeURIComponent(code)}" + highlightedCode="${encodeURIComponent(highlightedCode)}" + src="${path}" + title="${title ?? ""}" + desc="${desc ?? ""}" + github="${github}" + > + <${componentName}> + + `.trim(); +} + +let fenceIndex = 1; +export function genDemoByCode( + md: MarkdownRenderer, + env: any, + path: string, + code: string +) { + let demoName = ""; + let demoPath = ""; + + while (true) { + demoName = `demo-${fenceIndex++}.vue`; + demoPath = join(dirname(path), demoName); + if (!fsExtra.existsSync(demoPath)) { + break; + }; + } + + fsExtra.createFileSync(demoPath); + fsExtra.writeFileSync(demoPath, code); + + return getDemoComponent(md, env, { + path: demoPath, + code + }); +} + +function normalizePath(path: string) { + return path.split(sep).join("/"); +} + +function injectImportStatement( + env: any, + componentName: string, + path: string +) { + const componentRegistStatement + = `import ${componentName} from '${path}'`.trim(); + + if (!env?.sfcBlocks?.scripts) { + env.sfcBlocks.scripts = []; + }; + const tags = env.sfcBlocks.scripts as { content: string }[]; + + const isUsingTS + = tags.findIndex(tag => scriptLangTsRE.test(tag.content)) > -1; + const existingSetupScriptIndex = tags?.findIndex((tag) => { + return ( + scriptRE.test(tag.content) + && scriptSetupRE.test(tag.content) + && !scriptClientRE.test(tag.content) + ); + }); + + if (existingSetupScriptIndex > -1) { + const tagSrc = tags[existingSetupScriptIndex]; + tags[existingSetupScriptIndex].content = tagSrc.content.replace( + scriptRE, + `${componentRegistStatement} + + ` + ); + } else { + tags.unshift({ + content: ` + + `.trim() + }); + } +} diff --git a/docs/.vitepress/theme/components/demo.vue b/docs/.vitepress/theme/components/demo.vue new file mode 100644 index 0000000..6ae5742 --- /dev/null +++ b/docs/.vitepress/theme/components/demo.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts new file mode 100644 index 0000000..81a5c47 --- /dev/null +++ b/docs/.vitepress/theme/index.ts @@ -0,0 +1,60 @@ +import "uno.css"; +// https://vitepress.dev/guide/custom-theme +import { watch } from "vue"; +import Theme from "vitepress/theme"; +import DemoBlock from "../components/demo-block"; + +import "./style.css"; + +let homePageStyle: HTMLStyleElement | undefined; + +export default { + ...Theme, + enhanceApp({ router, app }) { + if (typeof window === "undefined") { + return; + }; + + app.component("Demo", DemoBlock); + watch( + () => router.route.data.relativePath, + () => updateHomePageStyle(location.pathname === "/"), + { immediate: true } + ); + } +}; + +if (typeof window !== "undefined") { + // detect browser, add to class for conditional styling + const browser = navigator.userAgent.toLowerCase(); + if (browser.includes("chrome")) { + document.documentElement.classList.add("browser-chrome"); + } else if (browser.includes("firefox")) { + document.documentElement.classList.add("browser-firefox"); + } else if (browser.includes("safari")) { + document.documentElement.classList.add("browser-safari"); + }; +} + +// Speed up the rainbow animation on home page +function updateHomePageStyle(value: boolean) { + if (value) { + if (homePageStyle) { + return; + }; + + homePageStyle = document.createElement("style"); + homePageStyle.innerHTML = ` + :root { + animation: rainbow 12s linear infinite; + }`; + document.body.appendChild(homePageStyle); + } else { + if (!homePageStyle) { + return; + }; + + homePageStyle.remove(); + homePageStyle = undefined; + } +} diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css new file mode 100644 index 0000000..4bd9440 --- /dev/null +++ b/docs/.vitepress/theme/style.css @@ -0,0 +1,322 @@ +/* /** + * Colors + * -------------------------------------------------------------------------- */ + :root { + --vp-code-block-bg: rgba(125, 125, 125, 0.04); + --vp-custom-block-tip-text: rgb(12, 124, 108); + --vp-custom-block-tip-border: rgba(12, 124, 108, 0.5); + --vp-custom-block-tip-bg: rgba(18, 181, 157, 0.1); + --vp-custom-title-text: #606266; + --vp-layout-max-width: 1580px; + --vp-sidebar-width: 252px; + --vp-code-font-size: .92em; + --n-td-color: #fff; + --n-td-color-hover: rgb(247, 247, 250, 1); + --n-td-color-modal: #fff; + --n-td-color-popover: #fff; + --n-td-text-color: rgb(51, 54, 57); + --n-border-color: rgba(239, 239, 245, 1); + --n-border-color-modal: rgba(239, 239, 245, 1); + --n-border-color-popover: rgba(239, 239, 245, 1); + --n-border-radius: 3px; + --n-font-size: 14px; + --vp-code-tab-active-text-color: var(--vp-c-text-1); + --vp-code-copy-code-active-text: var(--vp-c-text-2); + --n-th-color: rgba(250, 250, 252, 1); + --n-th-color-modal: rgba(250, 250, 252, 1); + --n-th-color-popover: rgba(250, 250, 252, 1); + --n-th-font-weight: 500; + --n-th-text-color: rgb(31, 34, 37); + --n-line-height: 1.6; + --n-td-padding: 12px; + --n-th-padding: 12px; + --n-td-color-striped: rgba(250, 250, 252, 1); + --n-td-color-striped-modal: rgba(250, 250, 252, 1); + --n-td-color-striped-popover: rgba(250, 250, 252, 1); + --n-bezier: cubic-bezier(0.4, 0, 0.2, 1); + --n-text-color: rgb(51, 54, 57); + --n-font-weight-strong: 500; + --n-font-famliy-mono: v-mono, SFMono-Regular, Menlo, Consolas, Courier, + monospace; + --n-code-border-radius: 2px; + --n-code-text-color: rgb(51, 54, 57); + --n-code-color: rgb(244, 244, 248); + --n-code-border: 1px solid #0000; + --vp-home-hero-name-color: transparent; + --vp-home-hero-name-background: -webkit-linear-gradient( + 120deg, + #42d392 30%, + #647eff + ); + + --vp-home-hero-image-background-image: linear-gradient( + -45deg, + #70E6FB 50%, + #42d392 50% + ); + --vp-home-hero-image-filter: blur(40px); + + --vp-code-tab-divider: var(--vp-c-divider); + --vp-code-copy-code-bg: rgba(125,125,125,0.1); + --vp-code-copy-code-hover-bg: rgba(125,125,125,0.2); + --vp-c-disabled-bg: rgba(125,125,125,0.2); + --vp-code-tab-text-color: var(--vp-c-text-2); + --vp-code-tab-hover-text-color: var(--vp-c-text-1); +} + +@media (min-width: 640px) { + :root { + --vp-home-hero-image-filter: blur(56px); + } +} + +@media (min-width: 960px) { + :root { + --vp-home-hero-image-filter: blur(72px); + } +} + +.dark { + --vp-code-block-bg: rgba(0, 0, 0, 0.2); + --vp-c-text-code: #c0cec0; + --vp-custom-block-tip-text: rgb(18, 181, 157); + --vp-custom-block-tip-border: rgba(18, 181, 157, 0.5); + --vp-custom-block-tip-bg: rgba(18, 181, 157, 0.1); + --vp-c-text-dark-2: rgba(235, 235, 235, 0.6); + --vp-custom-title-text: #cfd3dc; + + --n-td-color: rgb(24, 24, 28); + --n-td-color-hover: rgb(38, 38, 42, 1); + --n-td-color-modal: rgb(44, 44, 50); + --n-td-color-popover: rgb(72, 72, 78); + --n-td-text-color: rgba(255, 255, 255, 0.82); + --n-border-color: rgba(45, 45, 48, 1); + --n-border-color-modal: rgba(63, 63, 68, 1); + --n-border-color-popover: rgba(88, 88, 94, 1); + --n-th-color: rgba(38, 38, 42, 1); + --n-th-color-modal: rgba(57, 57, 62, 1); + --n-th-color-popover: rgba(83, 83, 89, 1); + --n-th-text-color: rgba(255, 255, 255, 0.9); + --n-td-color-striped: rgba(36, 36, 39, 1); + --n-td-color-striped-modal: rgba(55, 55, 60, 1); + --n-td-color-striped-popover: rgba(81, 81, 87, 1); + --n-text-color: rgba(255, 255, 255, 0.82); + --n-font-weight-strong: 500; + --n-font-famliy-mono: v-mono, SFMono-Regular, Menlo, Consolas, Courier, + monospace; + --n-code-border-radius: 2px; + --n-code-text-color: rgba(255, 255, 255, 0.82); + --n-code-color: rgba(255, 255, 255, 0.12); + --n-code-border: 1px solid #0000; + --vp-code-tab-text-color: var(--vp-c-text-dark-2); + --vp-code-tab-active-text-color: var(--vp-c-text-dark-1); + --vp-code-tab-hover-text-color: var(--vp-c-text-dark-1); + --vp-code-copy-code-active-text: var(--vp-c-text-dark-2); +} + + +/* Safari has a very bad performance on gradient and filter */ +.browser-safari, .browser-firefox { + --vp-home-hero-image-background-image: transparent; + --vp-home-hero-image-filter: ''; +} + +/** + * Component: Custom Block + * -------------------------------------------------------------------------- */ + +:root { + --vp-custom-block-tip-border: var(--vp-c-brand); + --vp-custom-block-tip-text: var(--vp-c-brand-darker); + --vp-custom-block-tip-bg: var(--vp-c-brand-dimm); +} + +.dark { + --vp-custom-block-tip-border: var(--vp-c-brand); + --vp-custom-block-tip-text: var(--vp-c-brand-lightest); + --vp-custom-block-tip-bg: var(--vp-c-brand-dimm); +} + +.dark [img-light] { + display: none; +} + +html:not(.dark) [img-dark] { + display: none; +} + +.vp-doc table { + display: table; + font-size: var(--n-font-size); + font-variant-numeric: tabular-nums; + line-height: var(--n-line-height); + width: 100%; + border-radius: var(--n-border-radius) var(--n-border-radius) 0 0; + text-align: left; + border-collapse: separate; + border-spacing: 0; + overflow: hidden; + background-color: var(--n-td-color); + border: 1px solid var(--n-merged-border-color); + transition: background-color 0.3s var(--n-bezier), + border-color 0.3s var(--n-bezier), color 0.3s var(--n-bezier); + --n-merged-border-color: var(--n-border-color); +} + +.vp-doc table th { + white-space: nowrap; + transition: background-color 0.3s var(--n-bezier), + border-color 0.3s var(--n-bezier), color 0.3s var(--n-bezier); + text-align: inherit; + padding: var(--n-th-padding); + vertical-align: inherit; + text-transform: none; + border: 0px solid var(--n-merged-border-color); + font-weight: var(--n-th-font-weight); + color: var(--n-th-text-color); + background-color: var(--n-th-color); + border-bottom: 1px solid var(--n-merged-border-color); + border-right: 0px solid var(--n-merged-border-color); +} + +.VPDoc.has-aside .content-container { + max-width: 100% !important; +} + +.vp-doc table td:first-child { + width: 15%; + font-weight: 600; + font-family: v-mono, monospace; + white-space: nowrap; +} + +.vp-doc table tr { + box-sizing: border-box; + background-clip: padding-box; + transition: background-color 0.3s var(--n-bezier); +} + +.vp-doc table tbody tr:hover { + background-color: var(--n-td-color-hover); +} +.vp-doc table tbody tr:hover td { + background: none; +} + +.vp-doc table td { + transition: background-color 0.3s var(--n-bezier), + border-color 0.3s var(--n-bezier), color 0.3s var(--n-bezier); + padding: var(--n-td-padding); + color: var(--n-td-text-color); + background-color: var(--n-td-color); + border: 0px solid var(--n-merged-border-color); + min-width: 110px; +} + +.vp-doc table tr:not(:last-child) td { + border-bottom: 0px solid var(--n-merged-border-color); +} + +.vp-doc pre, code, kbd, samp { + font-family: 'DM mono'; + font-weight: 500; +} + +.vp-doc :not(pre) > code { + line-height: 1.4; + display: inline-block; + font-family: var(--n-font-famliy-mono); + transition: color 0.3s var(--n-bezier), border-color 0.3s var(--n-bezier), + background-color 0.3s var(--n-bezier) !important; + box-sizing: border-box; + padding: 0.05em 0.35em 0 0.35em !important; + border-radius: var(--n-code-border-radius) !important; + color: var(--n-code-text-color) !important; + background-color: var(--n-code-color) !important; + border: var(--n-code-border) !important; +} + +.vp-doc h1, +h2, +h3, +h4, +h5, +strong, +b { + font-weight: 600; + color: var(--vp-custom-title-text); +} + +.VPSocialLink { + transform: scale(0.9); +} + +.vp-doc tr th { + font-size: 14px; + font-weight: bold; +} + +.vp-doc th, +.vp-doc td { + padding: 6px 10px; + border: 1px solid #8882; +} + +.vp-doc .VPTeamMembers.medium.count-1 .container { + max-width: 368px!important; +} + +.vp-code-group .tabs label { + background-color: transparent; +} + +table { + width: 100% !important; + display: table; +} + +.custom-block.tip .custom-block-title { + color: var(--vp-c-brand); +} + +.VPHero .image-bg { + z-index: 1; + opacity: 0.8; + transition: opacity 1s ease; +} + +.VPHero .image-container:hover .image-bg { + opacity: 0.2; +} + + +/** + * VitePress: Custom fix + * -------------------------------------------------------------------------- */ + +/* + Use lighter colors for links in dark mode for a11y. + Also specify some classes twice to have higher specificity + over scoped class data attribute. +*/ +.dark .vp-doc a, +.dark .vp-doc a > code, +.dark .VPNavBarMenuLink.VPNavBarMenuLink:hover, +.dark .VPNavBarMenuLink.VPNavBarMenuLink.active, +.dark .link.link:hover, +.dark .link.link.active, +.dark .edit-link-button.edit-link-button, +.dark .pager-link .title { + color: var(--vp-c-brand-lighter); +} + +.dark .vp-doc a:hover, +.dark .vp-doc a > code:hover { + /* color: var(--vp-c-brand-lightest); */ + opacity: 1; +} + +/* Transition by color instead of opacity */ +.dark .vp-doc .custom-block a { + transition: color 0.25s; +} diff --git a/docs/component/affix.md b/docs/component/affix.md new file mode 100644 index 0000000..8367624 --- /dev/null +++ b/docs/component/affix.md @@ -0,0 +1,21 @@ +## Basic Usage (基本使用) + + + + +## Target Container (指定容器) + + + + +## Fixed Position (固定的相对方向) + + + +## Affix Props (参数) +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| offset | `number` | `0` | 距离达到指定偏移量后触发 | +| target | `string` | `window` | 指定容器 | +| position | `'top'` \| `'position'` | `'top'` | 固定的相对方向 | +| z-index | `number` | `998` | z-index 值 | diff --git a/docs/component/selection.md b/docs/component/selection.md new file mode 100644 index 0000000..2421589 --- /dev/null +++ b/docs/component/selection.md @@ -0,0 +1,36 @@ +# Selection (选择器) + +## Basic Usage (基本使用) + + +## Use Slots (使用插槽) + + +## Selection Props (参数) +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| model-value | `any` | `undefined` | 绑定值 | +| active-event | `ActiveEvent` | `click` | 触发选中的事件 | +| item-class | `ClassType` | "" | 元素的类名 | +| active-class | `ClassType` | "" | 被选中元素的类名 | +| unactive-class | `ClassType` | "" | 未被选中元素的类名 | +| disabled-class | `ClassType` | "" | 被禁用元素的类名 | +| multiple | `boolean` | `false` | 是否多选 | +| clearable | `boolean` | `false` | 是否可以不选择任何元素 | + +## Selection Events (事件) + +| Name | Description | +| --- | --- | +| update:model-value | 绑定值变化时触发 | +| change | 选中的元素发生变化时触发 | + + +## Item Props (参数) +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| value | `any` | `undefined` | 元素对应的值 | +| active-event | `ActiveEvent` | `click` | 触发选中的事件 | +| disabled | `boolean` | `false` | 是否禁用 | + + diff --git a/docs/components.d.ts b/docs/components.d.ts new file mode 100644 index 0000000..7d3c73b --- /dev/null +++ b/docs/components.d.ts @@ -0,0 +1,14 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + HiAffix: typeof import('hoci')['HiAffix'] + HiItem: typeof import('hoci')['HiItem'] + HiSelection: typeof import('hoci')['HiSelection'] + } +} diff --git a/docs/examples/affix/basic.vue b/docs/examples/affix/basic.vue new file mode 100644 index 0000000..e245a74 --- /dev/null +++ b/docs/examples/affix/basic.vue @@ -0,0 +1,12 @@ + + + diff --git a/docs/examples/affix/container.vue b/docs/examples/affix/container.vue new file mode 100644 index 0000000..07db76d --- /dev/null +++ b/docs/examples/affix/container.vue @@ -0,0 +1,15 @@ + + + diff --git a/docs/examples/affix/fixed.vue b/docs/examples/affix/fixed.vue new file mode 100644 index 0000000..0c3e79c --- /dev/null +++ b/docs/examples/affix/fixed.vue @@ -0,0 +1,12 @@ + + + diff --git a/docs/examples/selection/basic.vue b/docs/examples/selection/basic.vue new file mode 100644 index 0000000..f053f16 --- /dev/null +++ b/docs/examples/selection/basic.vue @@ -0,0 +1,33 @@ + + + diff --git a/docs/examples/selection/slots.vue b/docs/examples/selection/slots.vue new file mode 100644 index 0000000..d148277 --- /dev/null +++ b/docs/examples/selection/slots.vue @@ -0,0 +1,19 @@ + + + diff --git a/docs/guide/quickstart.md b/docs/guide/quickstart.md new file mode 100644 index 0000000..26d799b --- /dev/null +++ b/docs/guide/quickstart.md @@ -0,0 +1,56 @@ +# 快速开始 + +## 使用包管理器安装 + +```sh +# 使用 npm +npm install hoci + +# 使用 yarn +yarn add hoci + +# 使用 pnpm +pnpm add hoci + +``` + +## 完整引入 + + +```ts +import { createApp } from "vue"; +import hoci from "hoci"; + +const app = createApp(); +app.use(hoci); +app.mount("#app"); +``` + + +## 按需引入 + +你可以使用unplugin-vue-components按需引入组件 + +```sh +npm install -D unplugin-vue-components +``` + +在vite.config中配置 +```ts +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import components from "unplugin-vue-components/vite"; +import { HociResolver } from "hoci/resolver"; + +export default defineConfig({ + plugins: [ + vue(), + components({ + resolvers: [ + HociResolver(), + ], + }), + ], +}); +``` + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..678d1a2 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,22 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Hoci" + text: "Headless Components Library For Vue" + tagline: My great project tagline + actions: + - theme: brand + text: 快速开始 + link: /guide/quickstart + +features: + - title: Feature A + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature B + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature C + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit +--- + diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000..9d4f07c --- /dev/null +++ b/docs/package.json @@ -0,0 +1,21 @@ +{ + "name": "docs", + "type": "module", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vitepress dev", + "build": "vitepress build" + }, + "dependencies": { + "hoci": "workspace:*" + }, + "devDependencies": { + "@iconify-json/carbon": "^1.1.21", + "scss": "^0.2.4", + "unocss": "^0.56.5", + "unplugin-vue-components": "^0.25.2", + "vitepress": "^1.0.0-rc.22", + "vitepress-theme-demoblock": "^3.0.3" + } +} diff --git a/docs/vite.config.ts b/docs/vite.config.ts new file mode 100644 index 0000000..a6ca687 --- /dev/null +++ b/docs/vite.config.ts @@ -0,0 +1,51 @@ +import { defineConfig } from "vite"; +import UnoCSS from "unocss/vite"; +import { presetIcons, presetUno } from "unocss"; +import Components from "unplugin-vue-components/vite"; +import { HociResolver } from "hoci/resolver"; +import { alias } from "../alias"; +export default defineConfig({ + optimizeDeps: { + exclude: [ + "vitepress" + ] + }, + server: { + hmr: { + overlay: false + } + }, + resolve: { + alias + }, + plugins: [ + UnoCSS({ + presets: [ + presetUno(), + presetIcons() + ], + shortcuts: [ + { + "fscw": "flex justify-start items-center flex-wrap w-full", + "o-demo_wrapper": + "p-8 c-#282f38 border border-light-700 rounded-sm dark:bg-dark-700 dark:border-#4C4D4F flex [&:o-button-base]:!c-context", + "o-demo_actions": "flex justify-end pt-3 gap-2", + "o-demo_action_item": + "relative outline-none flex justify-center items-center w-7 h-7 p-0 rounded-full border border-light-900 dark:border-dark-900 bg-white dark:bg-#38383A cursor-pointer hover:bg-#E5E6EB dark:hover:bg-dark:300", + "o-demo_action_icon": "c-#4E5969 dark:c-white", + "o-demo_tooltip": + "opacity-0 h-7 bg-black px-2.5 py-1 box-border text-xs c-white inline-flex justify-center items-center rounded absolute z-1 transition duration-600 whitespace-nowrap -top-8", + "o-overview_card_wrapper": "flex flex-col items-center space-x-3 p-4 rounded border border-light-500 hover:bg-#F2F2F2 hover:-translate-y-2 !duration-400 dark:border-#4C4D4F dark:hover:bg-dark-300 !hover-b-emerald-300 !transition-all", + "o-overview_cover": "children-w-full children-aspect-video", + "o-overview_body": "flex p-4 !text-base flex-1 flex-col gap-2", + "overview_body_title": "mb-2 flex items-center gap-2 !text-lg font-bold" + } + ] + }), + Components({ + resolvers: [ + HociResolver() + ] + }) + ] +}); diff --git a/package.json b/package.json index ce6e4d7..0733584 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,9 @@ "prepare": "npx simple-git-hooks", "prepublish": "pnpm build", "up": "taze -r major", - "regit": "git fetch --all && git reset --hard origin/main && git pull && git remote prune origin" + "regit": "git fetch --all && git reset --hard origin/main && git pull && git remote prune origin", + "docs": "pnpm -C docs dev", + "build:docs": "pnpm -C docs build" }, "devDependencies": { "@curev/eslint-config": "^0.2.1", @@ -44,6 +46,7 @@ "taze": "^0.11.3", "typescript": "^5.2.2", "unbuild": "^2.0.0", + "vitepress": "1.0.0-rc.22", "vitest": "^0.34.6" }, "simple-git-hooks": { diff --git a/packages/components/install.ts b/packages/components/install.ts index e83a8c7..517fe04 100644 --- a/packages/components/install.ts +++ b/packages/components/install.ts @@ -1,5 +1,6 @@ import type { App } from "vue"; import * as components from "./components"; + export const install = (app: App) => { for (const key in components) { app.component(key, components[key as keyof typeof components]); diff --git a/packages/hoci/package.json b/packages/hoci/package.json index 294ae88..45e03eb 100644 --- a/packages/hoci/package.json +++ b/packages/hoci/package.json @@ -28,11 +28,11 @@ "stub": "unbuild --stub", "prepublish": "pnpm build" }, - "peerDependencies": { - "unplugin-vue-components": "^0.25.2" - }, "dependencies": { "@hoci/components": "workspace:*", "@hoci/core": "workspace:*" + }, + "optionalDependencies": { + "unplugin-vue-components": "^0.25.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d4dcbe..3069fff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,10 +41,38 @@ importers: unbuild: specifier: ^2.0.0 version: 2.0.0(typescript@5.2.2) + vitepress: + specifier: 1.0.0-rc.22 + version: 1.0.0-rc.22(@algolia/client-search@4.20.0)(@types/node@20.8.6)(postcss@8.4.30)(search-insights@2.9.0) vitest: specifier: ^0.34.6 version: 0.34.6 + docs: + dependencies: + hoci: + specifier: workspace:* + version: link:../packages/hoci + devDependencies: + '@iconify-json/carbon': + specifier: ^1.1.21 + version: 1.1.21 + scss: + specifier: ^0.2.4 + version: 0.2.4 + unocss: + specifier: ^0.56.5 + version: 0.56.5(postcss@8.4.30)(rollup@3.29.0)(vite@4.4.11) + unplugin-vue-components: + specifier: ^0.25.2 + version: 0.25.2(rollup@3.29.0)(vue@3.3.4) + vitepress: + specifier: ^1.0.0-rc.22 + version: 1.0.0-rc.22(@algolia/client-search@4.20.0)(@types/node@20.8.6)(postcss@8.4.30)(search-insights@2.9.0) + vitepress-theme-demoblock: + specifier: ^3.0.3 + version: 3.0.3(@algolia/client-search@4.20.0)(@types/node@20.8.6)(postcss@8.4.30)(search-insights@2.9.0) + packages/components: dependencies: '@hoci/core': @@ -89,6 +117,7 @@ importers: '@hoci/core': specifier: workspace:* version: link:../core + optionalDependencies: unplugin-vue-components: specifier: ^0.25.2 version: 0.25.2(rollup@3.29.0)(vue@3.3.4) @@ -152,6 +181,140 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.9.0): + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.9.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: true + + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.9.0): + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + search-insights: 2.9.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: true + + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/client-search': 4.20.0 + algoliasearch: 4.20.0 + dev: true + + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 4.20.0 + algoliasearch: 4.20.0 + dev: true + + /@algolia/cache-browser-local-storage@4.20.0: + resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==} + dependencies: + '@algolia/cache-common': 4.20.0 + dev: true + + /@algolia/cache-common@4.20.0: + resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} + dev: true + + /@algolia/cache-in-memory@4.20.0: + resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} + dependencies: + '@algolia/cache-common': 4.20.0 + dev: true + + /@algolia/client-account@4.20.0: + resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: true + + /@algolia/client-analytics@4.20.0: + resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: true + + /@algolia/client-common@4.20.0: + resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==} + dependencies: + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: true + + /@algolia/client-personalization@4.20.0: + resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: true + + /@algolia/client-search@4.20.0: + resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: true + + /@algolia/logger-common@4.20.0: + resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} + dev: true + + /@algolia/logger-console@4.20.0: + resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} + dependencies: + '@algolia/logger-common': 4.20.0 + dev: true + + /@algolia/requester-browser-xhr@4.20.0: + resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==} + dependencies: + '@algolia/requester-common': 4.20.0 + dev: true + + /@algolia/requester-common@4.20.0: + resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} + dev: true + + /@algolia/requester-node-http@4.20.0: + resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} + dependencies: + '@algolia/requester-common': 4.20.0 + dev: true + + /@algolia/transporter@4.20.0: + resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==} + dependencies: + '@algolia/cache-common': 4.20.0 + '@algolia/logger-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + dev: true + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -600,6 +763,49 @@ packages: - typescript dev: true + /@docsearch/css@3.5.2: + resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} + dev: true + + /@docsearch/js@3.5.2(@algolia/client-search@4.20.0)(search-insights@2.9.0): + resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==} + dependencies: + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(search-insights@2.9.0) + preact: 10.18.1 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + dev: true + + /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(search-insights@2.9.0): + resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.9.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@docsearch/css': 3.5.2 + algoliasearch: 4.20.0 + search-insights: 2.9.0 + transitivePeerDependencies: + - '@algolia/client-search' + dev: true + /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -1038,6 +1244,33 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@floating-ui/core@1.5.0: + resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} + dependencies: + '@floating-ui/utils': 0.1.6 + dev: true + + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + dependencies: + '@floating-ui/core': 1.5.0 + '@floating-ui/utils': 0.1.6 + dev: true + + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: true + + /@floating-ui/vue@1.0.2(vue@3.3.4): + resolution: {integrity: sha512-sImlAl9mAoCKZLNlwWz2P2ZMJIDlOEDXrRD6aD2sIHAka1LPC+nWtB+D3lPe7IE7FGWSbwBPTnlSdlABa3Fr0A==} + dependencies: + '@floating-ui/dom': 1.5.3 + vue-demi: 0.14.6(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + /@humanwhocodes/config-array@0.11.11: resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} @@ -1058,6 +1291,12 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@iconify-json/carbon@1.1.21: + resolution: {integrity: sha512-bK2cMVM4noBU+FGlay433flpXLRzQu0ED095iAnoO6ka3yb4uz0lvb8acpN5gthyGLJ89C4HpfIbQZLQnMKQww==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + /@iconify/types@2.0.0: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: true @@ -1137,6 +1376,18 @@ packages: type-detect: 4.0.8 dev: true + /@mdit-vue/plugin-sfc@0.12.1: + resolution: {integrity: sha512-6j332CsSqumy1+StIM3XphdXG1zj9NXuWestDJrKgS3OLy5P0EAioXScUYiZYysw61ZG+2pP37MW7Hg+eHbyIg==} + dependencies: + '@mdit-vue/types': 0.12.0 + '@types/markdown-it': 13.0.2 + markdown-it: 13.0.2 + dev: true + + /@mdit-vue/types@0.12.0: + resolution: {integrity: sha512-mrC4y8n88BYvgcgzq9bvTlDgFyi2zuvzmPilRvRc3Uz1iIvq8mDhxJ0rHKFUNzPEScpDvJdIujqiDrulMqiudA==} + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1420,6 +1671,12 @@ packages: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true + /@types/debug@4.1.9: + resolution: {integrity: sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==} + dependencies: + '@types/ms': 0.7.32 + dev: true + /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} @@ -1431,12 +1688,31 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/linkify-it@3.0.3: + resolution: {integrity: sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g==} + dev: true + + /@types/markdown-it@13.0.2: + resolution: {integrity: sha512-Tla7hH9oeXHOlJyBFdoqV61xWE9FZf/y2g+gFVwQ2vE1/eBzjUno5JCd3Hdb5oATve5OF6xNjZ/4VIZhVVx+hA==} + dependencies: + '@types/linkify-it': 3.0.3 + '@types/mdurl': 1.0.3 + dev: true + /@types/mdast@3.0.11: resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} dependencies: '@types/unist': 3.0.0 dev: true + /@types/mdurl@1.0.3: + resolution: {integrity: sha512-T5k6kTXak79gwmIOaDF2UUQXFbnBE0zBUzF20pz7wDYu0RQMzWg+Ml/Pz50214NsFHBITkoi5VtdjFZnJ2ijjA==} + dev: true + + /@types/ms@0.7.32: + resolution: {integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==} + dev: true + /@types/node@20.8.6: resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} dependencies: @@ -1465,7 +1741,6 @@ packages: /@types/web-bluetooth@0.0.18: resolution: {integrity: sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==} - dev: false /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} @@ -1927,6 +2202,10 @@ packages: '@vue/compiler-dom': 3.3.4 '@vue/shared': 3.3.4 + /@vue/devtools-api@6.5.1: + resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} + dev: true + /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: @@ -1976,11 +2255,59 @@ packages: transitivePeerDependencies: - '@vue/composition-api' - vue - dev: false + + /@vueuse/integrations@10.5.0(focus-trap@7.5.4)(vue@3.3.4): + resolution: {integrity: sha512-fm5sXLCK0Ww3rRnzqnCQRmfjDURaI4xMsx+T+cec0ngQqHx/JgUtm8G0vRjwtonIeTBsH1Q8L3SucE+7K7upJQ==} + peerDependencies: + async-validator: '*' + axios: '*' + change-case: '*' + drauu: '*' + focus-trap: '*' + fuse.js: '*' + idb-keyval: '*' + jwt-decode: '*' + nprogress: '*' + qrcode: '*' + sortablejs: '*' + universal-cookie: '*' + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + dependencies: + '@vueuse/core': 10.5.0(vue@3.3.4) + '@vueuse/shared': 10.5.0(vue@3.3.4) + focus-trap: 7.5.4 + vue-demi: 0.14.6(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true /@vueuse/metadata@10.5.0: resolution: {integrity: sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==} - dev: false /@vueuse/shared@10.5.0(vue@3.3.4): resolution: {integrity: sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==} @@ -1989,7 +2316,6 @@ packages: transitivePeerDependencies: - '@vue/composition-api' - vue - dev: false /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -2060,6 +2386,25 @@ packages: uri-js: 4.4.1 dev: true + /algoliasearch@4.20.0: + resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} + dependencies: + '@algolia/cache-browser-local-storage': 4.20.0 + '@algolia/cache-common': 4.20.0 + '@algolia/cache-in-memory': 4.20.0 + '@algolia/client-account': 4.20.0 + '@algolia/client-analytics': 4.20.0 + '@algolia/client-common': 4.20.0 + '@algolia/client-personalization': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/logger-common': 4.20.0 + '@algolia/logger-console': 4.20.0 + '@algolia/requester-browser-xhr': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/requester-node-http': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: true + /ansi-escapes@5.0.0: resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} engines: {node: '>=12'} @@ -2077,6 +2422,10 @@ packages: engines: {node: '>=12'} dev: true + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -2176,6 +2525,10 @@ packages: engines: {node: '>= 0.4'} dev: true + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: true + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2322,6 +2675,11 @@ packages: engines: {node: '>=10'} dev: true + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: true + /caniuse-lite@1.0.30001514: resolution: {integrity: sha512-ENcIpYBmwAAOm/V2cXgM7rZUrKKaqisZl4ZAI520FIkqGXUxJjmaIssbRW5HVVR5tyV6ygTLIm15aU8LUmQSaQ==} dev: true @@ -2361,18 +2719,34 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: true + /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} dev: true + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: true + /character-entities@1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} dev: true + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: true + /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} dev: true + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: true + /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: @@ -2556,6 +2930,12 @@ packages: dependencies: ms: 2.1.2 + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: true + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} @@ -2587,6 +2967,11 @@ packages: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: true + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + /destr@2.0.0: resolution: {integrity: sha512-FJ9RDpf3GicEBvzI3jxc2XhHzbqD8p4ANw/1kPsFBfTvP1b7Gn/Lg1vO7R9J4IVgoMbyUmFrFGZafJ1hPZpvlg==} dev: true @@ -2605,6 +2990,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /diff@5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2686,6 +3076,11 @@ packages: dev: true optional: true + /entities@3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + dev: true + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -3247,19 +3642,12 @@ packages: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} dev: true - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true - /fast-glob@3.3.0: - resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true /fast-glob@3.3.1: @@ -3285,6 +3673,12 @@ packages: dependencies: reusify: 1.0.4 + /fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + dependencies: + format: 0.2.2 + dev: true + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -3331,6 +3725,12 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + dependencies: + tabbable: 6.2.0 + dev: true + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -3345,6 +3745,11 @@ packages: signal-exit: 4.0.2 dev: true + /format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + dev: true + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -3561,7 +3966,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 @@ -3635,6 +4040,10 @@ packages: dependencies: function-bind: 1.1.1 + /hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + dev: true + /hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} dev: true @@ -3806,6 +4215,10 @@ packages: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} dev: true + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: true + /is-alphanumerical@1.0.4: resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} dependencies: @@ -3813,6 +4226,13 @@ packages: is-decimal: 1.0.4 dev: true + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: true + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -3845,6 +4265,11 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} @@ -3873,6 +4298,10 @@ packages: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: true + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3897,6 +4326,10 @@ packages: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: true + /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: true @@ -3926,6 +4359,11 @@ packages: engines: {node: '>=8'} dev: true + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: true + /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: @@ -4114,6 +4552,11 @@ packages: engines: {node: '>=6'} dev: true + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + /kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} dev: true @@ -4135,6 +4578,12 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true + /linkify-it@4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + dependencies: + uc.micro: 1.0.6 + dev: true + /lint-staged@14.0.1: resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} engines: {node: ^16.14.0 || >=18.0.0} @@ -4209,6 +4658,10 @@ packages: wrap-ansi: 8.1.0 dev: true + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: true + /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: @@ -4298,10 +4751,43 @@ packages: - supports-color dev: true + /mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + dev: true + + /markdown-it-container@3.0.0: + resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==} + dev: true + + /markdown-it@13.0.2: + resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 3.0.1 + linkify-it: 4.0.1 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: true + /maybe-types@0.1.0: resolution: {integrity: sha512-95JErOEUUG9FZPFf0LxDf0qUbWiAKW+/HnlbYSKkRqfFKyMVdPrR/d3Wk/HDdJKvNID/pfGXHN21KqBzByc5Zg==} dev: false + /mdast-util-directive@2.2.4: + resolution: {integrity: sha512-sK3ojFP+jpj1n7Zo5ZKvoxP1MvLyzVG63+gm40Z/qI00avzdPCYxt7RBMgofwAva9gBjbDBWVRB/i+UD+fUCzQ==} + dependencies: + '@types/mdast': 3.0.11 + '@types/unist': 2.0.6 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-visit-parents: 5.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: @@ -4314,14 +4800,71 @@ packages: - supports-color dev: true + /mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + dependencies: + '@types/mdast': 3.0.11 + '@types/unist': 2.0.6 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-frontmatter@1.0.1: + resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} + dependencies: + '@types/mdast': 3.0.11 + mdast-util-to-markdown: 1.5.0 + micromark-extension-frontmatter: 1.1.1 + dev: true + + /mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + dependencies: + '@types/mdast': 3.0.11 + unist-util-is: 5.2.1 + dev: true + + /mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + dependencies: + '@types/mdast': 3.0.11 + '@types/unist': 2.0.6 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + dev: true + /mdast-util-to-string@2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true + /mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + dependencies: + '@types/mdast': 3.0.11 + dev: true + /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true + /mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: true + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true @@ -4330,6 +4873,178 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + /micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-extension-directive@2.2.1: + resolution: {integrity: sha512-ZFKZkNaEqAP86IghX1X7sE8NNnx6kFNq9mSBRvEHjArutTCJZ3LYg6VH151lXVb1JHpmIcW/7rX25oMoIHuSug==} + dependencies: + micromark-factory-space: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + parse-entities: 4.0.1 + uvu: 0.5.6 + dev: true + + /micromark-extension-frontmatter@1.1.1: + resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} + dependencies: + fault: 2.0.1 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + dev: true + + /micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + dev: true + + /micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + dependencies: + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + dev: true + + /micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + dev: true + /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: @@ -4339,6 +5054,30 @@ packages: - supports-color dev: true + /micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + dependencies: + '@types/debug': 4.1.9 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -4452,6 +5191,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dev: true + /minisearch@6.1.0: + resolution: {integrity: sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==} + dev: true + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -4732,6 +5475,11 @@ packages: resolution: {integrity: sha512-9CIOSq5945rI045GFtcO3uudyOkYVY1nyfFxVQp+9BRgslr8jPNiSSrsFGg/BNTUFOLqx0P5tng6G32brIPw0w==} dev: true + /ometa@0.2.2: + resolution: {integrity: sha512-LZuoK/yjU3FvrxPjUXUlZ1bavCfBPqauA7fsNdwi+AVhRdyk2IzgP3JRnevvjzQ6fKHdUw8YISshf53FmpHrng==} + engines: {node: '>= 0.2.0'} + dev: true + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -4857,6 +5605,19 @@ packages: is-hexadecimal: 1.0.4 dev: true + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + dependencies: + '@types/unist': 2.0.6 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: true + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -4957,11 +5718,21 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /preact@10.18.1: + resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} + dev: true + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + /prettier@3.0.3: resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} @@ -5105,6 +5876,55 @@ packages: jsesc: 0.5.0 dev: true + /remark-directive@2.0.1: + resolution: {integrity: sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw==} + dependencies: + '@types/mdast': 3.0.11 + mdast-util-directive: 2.2.4 + micromark-extension-directive: 2.2.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-frontmatter@4.0.1: + resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} + dependencies: + '@types/mdast': 3.0.11 + mdast-util-frontmatter: 1.0.1 + micromark-extension-frontmatter: 1.1.1 + unified: 10.1.2 + dev: true + + /remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + dependencies: + '@types/mdast': 3.0.11 + mdast-util-from-markdown: 1.3.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-stringify@10.0.3: + resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==} + dependencies: + '@types/mdast': 3.0.11 + mdast-util-to-markdown: 1.5.0 + unified: 10.1.2 + dev: true + + /remark@14.0.3: + resolution: {integrity: sha512-bfmJW1dmR2LvaMJuAnE88pZP9DktIFYXazkTfOIKZzi3Knk9lT0roItIA24ydOucI3bV/g/tXBA6hzqq3FV9Ew==} + dependencies: + '@types/mdast': 3.0.11 + remark-parse: 10.0.2 + remark-stringify: 10.0.3 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -5185,6 +6005,13 @@ packages: dependencies: queue-microtask: 1.2.3 + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true @@ -5213,10 +6040,21 @@ packages: source-map-js: 1.0.2 dev: true + /scss@0.2.4: + resolution: {integrity: sha512-4u8V87F+Q/upVhUmhPnB4C1R11xojkRkWjExL2v0CX2EXTg18VrKd+9JWoeyCp2VEMdSpJsyAvVU+rVjogh51A==} + engines: {node: '>= 0.2.0'} + dependencies: + ometa: 0.2.2 + dev: true + /scule@1.0.0: resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} dev: true + /search-insights@2.9.0: + resolution: {integrity: sha512-bkWW9nIHOFkLwjQ1xqVaMbjjO5vhP26ERsH9Y3pKr8imthofEFIxlnOabkmGcw6ksRj9jWidcI65vvjJH/nTGg==} + dev: true + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -5256,6 +6094,15 @@ packages: engines: {node: '>=8'} dev: true + /shiki@0.14.5: + resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} + dependencies: + ansi-sequence-parser: 1.1.1 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -5466,6 +6313,13 @@ packages: safe-buffer: 5.2.1 dev: true + /stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: true + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -5535,6 +6389,10 @@ packages: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} dev: true + /tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + dev: true + /tar@6.1.13: resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} engines: {node: '>=10'} @@ -5601,6 +6459,10 @@ packages: engines: {node: '>=6'} dev: true + /trough@2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + dev: true + /ts-api-utils@1.0.3(typescript@5.2.2): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} @@ -5688,6 +6550,10 @@ packages: hasBin: true dev: true + /uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + dev: true + /ufo@1.1.2: resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} dev: true @@ -5757,6 +6623,18 @@ packages: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} dev: true + /unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + dependencies: + '@types/unist': 2.0.6 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 5.3.7 + dev: true + /unique-filename@3.0.0: resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5771,12 +6649,39 @@ packages: imurmurhash: 0.1.4 dev: true + /unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + dependencies: + '@types/unist': 2.0.6 + dev: true + /unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: '@types/unist': 2.0.6 dev: true + /unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.2.1 + dev: true + + /unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: true + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} @@ -5893,6 +6798,17 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true + /uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: true + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -5907,6 +6823,22 @@ packages: builtins: 5.0.1 dev: true + /vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + dependencies: + '@types/unist': 2.0.6 + unist-util-stringify-position: 3.0.3 + dev: true + + /vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + dev: true + /vite-node@0.34.6(@types/node@20.8.6): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} @@ -5966,6 +6898,117 @@ packages: fsevents: 2.3.2 dev: true + /vitepress-theme-demoblock@3.0.3(@algolia/client-search@4.20.0)(@types/node@20.8.6)(postcss@8.4.30)(search-insights@2.9.0): + resolution: {integrity: sha512-LmHvoffRnqVvhYie6spOQhA42+Rwxu6/9N1pTADwEufJ/U+GZ4oC00518/6I67bklx1E+NZWrA3G47Y5azRGXw==} + engines: {node: '>=16.0.0'} + hasBin: true + requiresBuild: true + dependencies: + '@floating-ui/vue': 1.0.2(vue@3.3.4) + '@mdit-vue/plugin-sfc': 0.12.1 + '@vue/compiler-sfc': 3.3.4 + '@vueuse/core': 10.5.0(vue@3.3.4) + camelcase: 7.0.1 + globby: 13.2.2 + hash-sum: 2.0.0 + markdown-it: 13.0.2 + markdown-it-container: 3.0.0 + minimist: 1.2.8 + picocolors: 1.0.0 + prettier: 2.8.8 + remark: 14.0.3 + remark-directive: 2.0.1 + remark-frontmatter: 4.0.1 + remark-parse: 10.0.2 + remark-stringify: 10.0.3 + shiki: 0.14.5 + unified: 10.1.2 + unist-util-visit: 4.1.2 + vitepress: 1.0.0-rc.22(@algolia/client-search@4.20.0)(@types/node@20.8.6)(postcss@8.4.30)(search-insights@2.9.0) + vue: 3.3.4 + yaml: 2.3.1 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - supports-color + - terser + - universal-cookie + dev: true + + /vitepress@1.0.0-rc.22(@algolia/client-search@4.20.0)(@types/node@20.8.6)(postcss@8.4.30)(search-insights@2.9.0): + resolution: {integrity: sha512-n7le5iikCFgWMuX7sKfzDGJGlrsYQ5trG3S97BghNz2alOTr4Xp+GrB6ShwogUTX9gNgeNmrACjokhW55LNeBA==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4.3.2 + postcss: ^8.4.31 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + dependencies: + '@docsearch/css': 3.5.2 + '@docsearch/js': 3.5.2(@algolia/client-search@4.20.0)(search-insights@2.9.0) + '@types/markdown-it': 13.0.2 + '@vue/devtools-api': 6.5.1 + '@vueuse/core': 10.5.0(vue@3.3.4) + '@vueuse/integrations': 10.5.0(focus-trap@7.5.4)(vue@3.3.4) + focus-trap: 7.5.4 + mark.js: 8.11.1 + minisearch: 6.1.0 + postcss: 8.4.30 + shiki: 0.14.5 + vite: 4.4.11(@types/node@20.8.6)(sass@1.69.3) + vue: 3.3.4 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - universal-cookie + dev: true + /vitest@0.34.6: resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} @@ -6031,6 +7074,14 @@ packages: - terser dev: true + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + dev: true + /vue-demi@0.14.6(vue@3.3.4): resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} engines: {node: '>=12'} @@ -6044,7 +7095,6 @@ packages: optional: true dependencies: vue: 3.3.4 - dev: false /vue-eslint-parser@9.3.1(eslint@8.51.0): resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==} @@ -6218,3 +7268,7 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true + + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d821de8..d44d940 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - packages/** - playground + - docs