├── src ├── constants.ts ├── assets.ts ├── build.ts ├── index.ts ├── loaders.ts └── utils.ts ├── .github └── FUNDING.yml ├── .vscode └── extensions.json ├── pnpm-workspace.yaml ├── global.d.ts ├── .prettierrc ├── demo ├── css │ └── index.css ├── extensions │ ├── index.js │ ├── underline.js │ ├── heading.js │ ├── italic.js │ ├── strikethrough.js │ ├── bold.js │ └── textAlign.js ├── index.html ├── index.js ├── vite.config.js ├── toolbar │ ├── History.vue │ ├── FormatText.vue │ ├── Align.vue │ └── Heading.vue ├── package.json ├── components │ ├── InputText.vue │ └── Button.vue └── App.vue ├── .gitignore ├── vite.config.ts ├── tsconfig.json ├── LICENCE.md ├── package.json ├── README.md └── pnpm-lock.yaml /src/constants.ts: -------------------------------------------------------------------------------- 1 | export const STYLE_TYPE = "text/tailwindcss"; 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: craigrileyuk 2 | buy_me_a_coffee: craigrileyuk 3 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar"] 3 | } 4 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - demo 3 | 4 | onlyBuiltDependencies: 5 | - esbuild 6 | -------------------------------------------------------------------------------- /global.d.ts: -------------------------------------------------------------------------------- 1 | declare module "tailwindcss/*.css?raw" { 2 | const content: string; 3 | export default content; 4 | } 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["prettier-plugin-tailwindcss"], 3 | "useTabs": true, 4 | "printWidth": 120, 5 | "tabWidth": 4, 6 | "semi": true 7 | } 8 | -------------------------------------------------------------------------------- /demo/css/index.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; 2 | 3 | @theme { 4 | --font-sans: "Roboto", "sans-serif"; 5 | } 6 | 7 | #app { 8 | min-height: 100dvh; 9 | display: flex; 10 | flex-flow: column; 11 | } 12 | -------------------------------------------------------------------------------- /demo/extensions/index.js: -------------------------------------------------------------------------------- 1 | export * from "./textAlign"; 2 | export * from "./heading"; 3 | export * from "./bold"; 4 | export * from "./italic"; 5 | export * from "./strikethrough"; 6 | export * from "./underline"; 7 | -------------------------------------------------------------------------------- /src/assets.ts: -------------------------------------------------------------------------------- 1 | import index from "tailwindcss/index.css?raw"; 2 | import preflight from "tailwindcss/preflight.css?raw"; 3 | import theme from "tailwindcss/theme.css?raw"; 4 | import utilities from "tailwindcss/utilities.css?raw"; 5 | 6 | export default { index, preflight, theme, utilities }; 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | tsconfig.tsbuildinfo 27 | types/* 28 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Vue useTailwind: Demonstration 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /demo/index.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import { createVuetify } from "vuetify"; 3 | import colours from "vuetify/util/colors"; 4 | import App from "./App.vue"; 5 | import { aliases, mdi } from "vuetify/iconsets/mdi-svg"; 6 | import "./css/index.css"; 7 | import "vuetify/styles"; 8 | 9 | const app = createApp(App); 10 | const vuetify = createVuetify({ 11 | icons: { 12 | defaultSet: "mdi", 13 | aliases, 14 | sets: { 15 | mdi, 16 | }, 17 | }, 18 | theme: { 19 | themes: { 20 | light: { 21 | colors: { 22 | primary: colours.teal.darken1, 23 | }, 24 | }, 25 | }, 26 | }, 27 | }); 28 | 29 | app.use(vuetify).mount("#app"); 30 | -------------------------------------------------------------------------------- /demo/vite.config.js: -------------------------------------------------------------------------------- 1 | import vue from "@vitejs/plugin-vue"; 2 | import { defineConfig } from "vite"; 3 | import { resolve } from "node:path"; 4 | import vuetify, { transformAssetUrls } from "vite-plugin-vuetify"; 5 | 6 | export default defineConfig(({ mode }) => { 7 | const alias = 8 | mode === "development" 9 | ? { 10 | "vue-use-tailwind": resolve("../src"), 11 | } 12 | : {}; 13 | 14 | return { 15 | resolve: { 16 | alias, 17 | }, 18 | base: "/vue-use-tailwind/", 19 | assetsDir: "", 20 | plugins: [ 21 | vue({ 22 | template: { 23 | transformAssetUrls, 24 | }, 25 | }), 26 | vuetify(), 27 | ], 28 | }; 29 | }); 30 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import vue from "@vitejs/plugin-vue"; 3 | import { resolve } from "node:path"; 4 | 5 | // https://vite.dev/config/ 6 | export default defineConfig({ 7 | build: { 8 | lib: { 9 | entry: resolve("./src/index.ts"), 10 | formats: ["es", "cjs"], 11 | }, 12 | target: "esnext", 13 | rollupOptions: { 14 | external: [ 15 | "vue", 16 | "tailwindcss", 17 | "tailwindcss/index.css?raw", 18 | "tailwindcss/preflight.css?raw", 19 | "tailwindcss/theme.css?raw", 20 | "tailwindcss/utilities.css?raw", 21 | ], 22 | }, 23 | }, 24 | plugins: [], 25 | optimizeDeps: { 26 | exclude: ["@tailwindcss/typography"], // Ensure it's loaded at runtime 27 | }, 28 | }); 29 | -------------------------------------------------------------------------------- /demo/extensions/underline.js: -------------------------------------------------------------------------------- 1 | import Underline from "@tiptap/extension-underline"; 2 | import { mergeAttributes } from "@tiptap/core"; 3 | 4 | // 2. Overwrite the keyboard shortcuts 5 | const TailwindUnderline = Underline.extend({ 6 | parseHTML() { 7 | return [ 8 | { 9 | tag: "u", 10 | }, 11 | { 12 | tag: "span[class*=underline]", 13 | }, 14 | { 15 | style: "text-decoration", 16 | consuming: false, 17 | getAttrs: (style) => (style.includes("underline") ? {} : false), 18 | }, 19 | ]; 20 | }, 21 | renderHTML({ HTMLAttributes }) { 22 | return [ 23 | "span", 24 | mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { 25 | class: "underline", 26 | }), 27 | 0, 28 | ]; 29 | }, 30 | }); 31 | 32 | export { TailwindUnderline }; 33 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["src/**/*","global.d.ts"], 3 | "exclude": ["node_modules"], 4 | "compilerOptions": { 5 | "rootDir": ".", 6 | "noEmitOnError": true, 7 | 8 | "lib": ["DOM", "DOM.Iterable", "ES2022"], 9 | "target": "ES2020", 10 | "types": ["node"], 11 | "declaration": true, 12 | "emitDeclarationOnly": true, 13 | 14 | "module": "ESNext", 15 | "moduleResolution": "bundler", 16 | "resolveJsonModule": true, 17 | "allowSyntheticDefaultImports": true, 18 | "outDir": "types", 19 | 20 | "noImplicitThis": true, 21 | "noUnusedLocals": true, 22 | "noUnusedParameters": true, 23 | "preserveConstEnums": true, 24 | "removeComments": true, 25 | "typeRoots": ["./node_modules/@types"], 26 | "esModuleInterop": true, 27 | "strict": true, 28 | "skipLibCheck": true 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /demo/extensions/heading.js: -------------------------------------------------------------------------------- 1 | import Heading from "@tiptap/extension-heading"; 2 | import { mergeAttributes } from "@tiptap/core"; 3 | 4 | // 2. Overwrite the keyboard shortcuts 5 | const TailwindHeading = Heading.extend({ 6 | renderHTML({ node, HTMLAttributes }) { 7 | const hasLevel = this.options.levels.includes(node.attrs.level); 8 | const level = hasLevel ? node.attrs.level : this.options.levels[0]; 9 | 10 | const className = 11 | { 12 | 1: "text-5xl", 13 | 2: "text-4xl", 14 | 3: "text-3xl", 15 | 4: "text-2xl", 16 | 5: "text-xl", 17 | 6: "text-base font-bold", 18 | }[level] ?? null; 19 | 20 | return [ 21 | `h${level}`, 22 | mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { 23 | class: className, 24 | }), 25 | 0, 26 | ]; 27 | }, 28 | }); 29 | 30 | export { TailwindHeading }; 31 | -------------------------------------------------------------------------------- /demo/extensions/italic.js: -------------------------------------------------------------------------------- 1 | import Italic from "@tiptap/extension-italic"; 2 | import { mergeAttributes } from "@tiptap/core"; 3 | 4 | // 2. Overwrite the keyboard shortcuts 5 | const TailwindItalic = Italic.extend({ 6 | parseHTML() { 7 | return [ 8 | { 9 | tag: "em", 10 | }, 11 | { 12 | tag: "span[class*=italic]", 13 | }, 14 | { 15 | tag: "i", 16 | getAttrs: (node) => node.style.fontStyle !== "normal" && null, 17 | }, 18 | { 19 | style: "font-style=normal", 20 | clearMark: (mark) => mark.type.name === this.name, 21 | }, 22 | { 23 | style: "font-style=italic", 24 | }, 25 | ]; 26 | }, 27 | renderHTML({ HTMLAttributes }) { 28 | return [ 29 | "span", 30 | mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { 31 | class: "italic", 32 | }), 33 | 0, 34 | ]; 35 | }, 36 | }); 37 | 38 | export { TailwindItalic }; 39 | -------------------------------------------------------------------------------- /demo/extensions/strikethrough.js: -------------------------------------------------------------------------------- 1 | import Strikethrough from "@tiptap/extension-strike"; 2 | import { mergeAttributes } from "@tiptap/core"; 3 | 4 | // 2. Overwrite the keyboard shortcuts 5 | const TailwindStrikethrough = Strikethrough.extend({ 6 | parseHTML() { 7 | return [ 8 | { 9 | tag: "s", 10 | }, 11 | { 12 | tag: "del", 13 | }, 14 | { 15 | tag: "strike", 16 | }, 17 | { 18 | tag: "span[class*=line-through]", 19 | }, 20 | { 21 | style: "text-decoration", 22 | consuming: false, 23 | getAttrs: (style) => (style.includes("line-through") ? {} : false), 24 | }, 25 | ]; 26 | }, 27 | renderHTML({ HTMLAttributes }) { 28 | return [ 29 | "span", 30 | mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { 31 | class: "line-through", 32 | }), 33 | 0, 34 | ]; 35 | }, 36 | }); 37 | 38 | export { TailwindStrikethrough }; 39 | -------------------------------------------------------------------------------- /demo/toolbar/History.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 33 | -------------------------------------------------------------------------------- /demo/extensions/bold.js: -------------------------------------------------------------------------------- 1 | import Bold from "@tiptap/extension-bold"; 2 | import { mergeAttributes } from "@tiptap/core"; 3 | 4 | // 2. Overwrite the keyboard shortcuts 5 | const TailwindBold = Bold.extend({ 6 | parseHTML() { 7 | return [ 8 | { 9 | tag: "strong", 10 | }, 11 | { 12 | tag: "span[class*=font-bold]", 13 | }, 14 | { 15 | tag: "b", 16 | getAttrs: (node) => node.style.fontWeight !== "normal" && null, 17 | }, 18 | { 19 | style: "font-weight=400", 20 | clearMark: (mark) => mark.type.name === this.name, 21 | }, 22 | { 23 | style: "font-weight", 24 | getAttrs: (value) => /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null, 25 | }, 26 | ]; 27 | }, 28 | renderHTML({ HTMLAttributes }) { 29 | return [ 30 | "span", 31 | mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { 32 | class: "font-bold", 33 | }), 34 | 0, 35 | ]; 36 | }, 37 | }); 38 | 39 | export { TailwindBold }; 40 | -------------------------------------------------------------------------------- /LICENCE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright © 2025 Evo Mark Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "type": "module", 7 | "scripts": { 8 | "dev": "vite", 9 | "build": "vite build", 10 | "preview": "vite preview" 11 | }, 12 | "keywords": [], 13 | "author": "", 14 | "license": "MIT", 15 | "dependencies": { 16 | "@mdi/js": "^7.4.47", 17 | "@tailwindcss/typography": "^0.5.16", 18 | "@tiptap/core": "^2.11.7", 19 | "@tiptap/extension-bold": "^2.11.7", 20 | "@tiptap/extension-heading": "^2.11.7", 21 | "@tiptap/extension-italic": "^2.11.7", 22 | "@tiptap/extension-strike": "^2.11.7", 23 | "@tiptap/extension-text-align": "^2.11.7", 24 | "@tiptap/extension-underline": "^2.11.7", 25 | "@tiptap/pm": "^2.11.7", 26 | "@tiptap/starter-kit": "^2.11.7", 27 | "@tiptap/vue-3": "^2.11.7", 28 | "@vueuse/core": "^13.0.0", 29 | "prosemirror-state": "^1.4.3", 30 | "striptags": "^3.2.0", 31 | "vue": "^3.5.13", 32 | "vue-use-tailwind": "link:.." 33 | }, 34 | "devDependencies": { 35 | "@vitejs/plugin-vue": "^5.2.3", 36 | "vite-plugin-vuetify": "^2.1.1", 37 | "vuetify": "^3.8.0" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /demo/components/InputText.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 40 | -------------------------------------------------------------------------------- /demo/toolbar/FormatText.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 46 | -------------------------------------------------------------------------------- /src/build.ts: -------------------------------------------------------------------------------- 1 | import type { InstanceProperties } from "./utils"; 2 | 3 | type Kind = "full" | "incremental"; 4 | 5 | export async function build( 6 | kind: Kind, 7 | { compiler, sheet, root, classes }: Pick, 8 | ) { 9 | if (!compiler) return; 10 | const instance = await compiler; 11 | 12 | // 1. Refresh the known list of classes 13 | let newClasses = new Set(); 14 | 15 | for (let element of root.value.querySelectorAll("[class]")) { 16 | for (let c of element.classList) { 17 | if (classes.value.has(c)) continue; 18 | 19 | classes.value.add(c); 20 | newClasses.add(c); 21 | } 22 | } 23 | 24 | if (newClasses.size === 0 && kind === "incremental") return; 25 | 26 | // 2. Compile the CSS 27 | sheet.value.textContent = instance.build(Array.from(newClasses) as string[]); 28 | } 29 | 30 | export function rebuild( 31 | kind: Kind, 32 | { 33 | compiler, 34 | buildQueue, 35 | sheet, 36 | root, 37 | classes, 38 | }: Pick, 39 | ) { 40 | async function run() { 41 | if (!compiler && kind !== "full") { 42 | return; 43 | } 44 | 45 | if (kind === "full") { 46 | await compiler; 47 | } 48 | 49 | await build(kind, { compiler, sheet, root, classes }); 50 | } 51 | 52 | buildQueue.value = buildQueue.value.then(run); 53 | } 54 | -------------------------------------------------------------------------------- /demo/extensions/textAlign.js: -------------------------------------------------------------------------------- 1 | import TextAlign from "@tiptap/extension-text-align"; 2 | 3 | // 2. Overwrite the keyboard shortcuts 4 | const TailwindTextAlign = TextAlign.extend({ 5 | addOptions() { 6 | return { 7 | types: [], 8 | alignments: ["left", "center", "right", "justify", "start", "end"], 9 | defaultAlignment: null, 10 | }; 11 | }, 12 | addGlobalAttributes() { 13 | return [ 14 | { 15 | types: this.options.types, 16 | attributes: { 17 | textAlign: { 18 | default: this.options.defaultAlignment, 19 | parseHTML: (element) => { 20 | if (element.classList.contains("text-left")) return "left"; 21 | else if (element.classList.contains("text-center")) return "center"; 22 | else if (element.classList.contains("text-right")) return "right"; 23 | else if (element.classList.contains("text-justify")) return "justify"; 24 | else if (element.classList.contains("text-start")) return "start"; 25 | else if (element.classList.contains("text-end")) return "end"; 26 | else return this.options.defaultAlignment; 27 | }, 28 | renderHTML: (attributes) => { 29 | if (!attributes.textAlign) { 30 | return {}; 31 | } 32 | 33 | return { class: `text-${attributes.textAlign}` }; 34 | }, 35 | }, 36 | }, 37 | }, 38 | ]; 39 | }, 40 | }); 41 | 42 | export { TailwindTextAlign }; 43 | -------------------------------------------------------------------------------- /demo/toolbar/Align.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 73 | -------------------------------------------------------------------------------- /demo/toolbar/Heading.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 66 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { ref, watch, toValue, MaybeRefOrGetter, type Ref } from "vue"; 2 | import { type UserConfig, createElementObserver, createCompiler } from "./utils"; 3 | import { rebuild } from "./build"; 4 | type Compiler = ReturnType; 5 | 6 | type GShadowRoot = typeof global.ShadowRoot.prototype; 7 | interface ShadowRootExpose { 8 | shadow_root?: GShadowRoot; 9 | } 10 | 11 | export const useTailwind = ( 12 | el: MaybeRefOrGetter, 13 | { theme, plugins } = {} as UserConfig, 14 | ) => { 15 | let compiler: Compiler; 16 | const observer = ref(); 17 | const isInit = ref(false); 18 | const classes: Ref> = ref(new Set()); 19 | const lastCss = ref(""); 20 | const sheet = ref(document.createElement("style")); 21 | const buildQueue = ref(); 22 | const root = ref(); 23 | 24 | const bootstrap = () => { 25 | if (!root.value) return (isInit.value = false); 26 | const styleObserver = new MutationObserver(() => 27 | rebuild("full", { buildQueue, compiler, sheet, root, classes }), 28 | ); 29 | 30 | compiler = createCompiler(root, { lastCss, classes, styleObserver, theme, plugins }) as Compiler; 31 | buildQueue.value = compiler; 32 | rebuild("full", { buildQueue, compiler, sheet, root, classes }); 33 | root.value.appendChild(sheet.value); 34 | observer.value = createElementObserver(root, { styleObserver, sheet, compiler, buildQueue, classes }); 35 | }; 36 | 37 | watch( 38 | () => toValue(el), 39 | (maybeShadow) => { 40 | if (maybeShadow && !isInit.value) { 41 | if ("shadow_root" in maybeShadow) { 42 | root.value = maybeShadow.shadow_root; 43 | } else { 44 | root.value = maybeShadow; 45 | } 46 | bootstrap(); 47 | isInit.value = true; 48 | } 49 | }, 50 | { 51 | immediate: true, 52 | }, 53 | ); 54 | 55 | return { 56 | isInit, 57 | observer, 58 | root, 59 | classes, 60 | sheet, 61 | }; 62 | }; 63 | -------------------------------------------------------------------------------- /src/loaders.ts: -------------------------------------------------------------------------------- 1 | import { parseUserTheme, parseUserPlugins, type UserConfig } from "./utils"; 2 | import type { PluginCreator } from "tailwindcss/plugin"; 3 | 4 | import css from "./assets"; 5 | 6 | export async function loadModule( 7 | id: string, 8 | base: string, 9 | type: string, 10 | plugins: UserConfig["plugins"], 11 | ): Promise<{ 12 | module: PluginCreator; 13 | base: string; 14 | }> { 15 | if (type !== "plugin") { 16 | throw new Error(`useTailwind does not support config files.`); 17 | } 18 | 19 | const index = id.split("_").at(-1); 20 | if (index === undefined || !plugins) { 21 | throw new Error(`useTailwind encountered an error loading ${id}.`); 22 | } 23 | const resolvedPlugin = plugins[parseInt(index, 10)]; 24 | if (resolvedPlugin) { 25 | return { 26 | base, 27 | module: resolvedPlugin ?? resolvedPlugin, 28 | }; 29 | } else throw new Error(`useTailwind encountered an error loading ${id}.`); 30 | } 31 | 32 | export async function loadStylesheet(id: string, base: string, { theme, plugins }: UserConfig) { 33 | function load() { 34 | if (id === "tailwindcss") { 35 | const userTheme = parseUserTheme(theme); 36 | const pluginImports = parseUserPlugins(plugins); 37 | 38 | return { 39 | base, 40 | content: css.index + "\n" + userTheme + "\n" + pluginImports, 41 | }; 42 | } else if (id === "tailwindcss/preflight" || id === "tailwindcss/preflight.css" || id === "./preflight.css") { 43 | return { 44 | base, 45 | content: css.preflight, 46 | }; 47 | } else if (id === "tailwindcss/theme" || id === "tailwindcss/theme.css" || id === "./theme.css") { 48 | return { 49 | base, 50 | content: css.theme, 51 | }; 52 | } else if (id === "tailwindcss/utilities" || id === "tailwindcss/utilities.css" || id === "./utilities.css") { 53 | return { 54 | base, 55 | content: css.utilities, 56 | }; 57 | } 58 | 59 | throw new Error(`The browser build does not support @import for "${id}"`); 60 | } 61 | 62 | let sheet = load(); 63 | 64 | return sheet; 65 | } 66 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-use-tailwind", 3 | "version": "1.0.0", 4 | "author": "Craig Riley ", 5 | "license": "MIT", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/evo-mark/vue-use-tailwind.git" 9 | }, 10 | "bugs": { 11 | "url": "https://github.com/evo-mark/vue-use-tailwind/issues" 12 | }, 13 | "keywords": [ 14 | "wysiwyg", 15 | "tailwind", 16 | "jit", 17 | "shadow", 18 | "isolated", 19 | "css", 20 | "design", 21 | "tailwindcss", 22 | "tiptap", 23 | "html", 24 | "generator" 25 | ], 26 | "type": "module", 27 | "scripts": { 28 | "dev": "vite", 29 | "build": "vue-tsc -b && vite build", 30 | "demo": "pnpm --filter=demo run dev", 31 | "demo:build": "pnpm --filter=demo run build", 32 | "demo:preview": "pnpm --filter=demo run preview", 33 | "demo:deploy": "npm run demo:build && gh-pages -d demo/dist", 34 | "prepublishOnly": "npm run build" 35 | }, 36 | "types": "./types/index.d.ts", 37 | "main": "./dist/vite-use-tailwind.cjs", 38 | "module": "./dist/vite-use-tailwind.js", 39 | "exports": { 40 | ".": { 41 | "types": "./types/index.d.ts", 42 | "import": "./dist/vue-use-tailwind.js", 43 | "require": "./dist/vue-use-tailwind.cjs" 44 | } 45 | }, 46 | "files": [ 47 | "dist", 48 | "types", 49 | "tsconfig.tsbuildinfo" 50 | ], 51 | "dependencies": {}, 52 | "devDependencies": { 53 | "@types/node": "^22.14.0", 54 | "@vitejs/plugin-vue": "^5.2.3", 55 | "@vue/tsconfig": "^0.7.0", 56 | "gh-pages": "^6.3.0", 57 | "prettier": "^3.5.3", 58 | "prettier-plugin-tailwindcss": "^0.6.11", 59 | "tailwindcss": "^4.1.3", 60 | "typescript": "^5.8.3", 61 | "vite": "^6.2.5", 62 | "vue": "^3.5.13", 63 | "vue-tsc": "^2.2.8" 64 | }, 65 | "peerDependencies": { 66 | "tailwindcss": "^4.0.0", 67 | "vue": "^3.3.0", 68 | "vue-shadow-dom": "^4.0.0" 69 | }, 70 | "peerDependenciesMeta": { 71 | "vue-shadow-dom": { 72 | "optional": true 73 | } 74 | }, 75 | "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808" 76 | } 77 | -------------------------------------------------------------------------------- /demo/components/Button.vue: -------------------------------------------------------------------------------- 1 | 38 | 39 | 47 | -------------------------------------------------------------------------------- /demo/App.vue: -------------------------------------------------------------------------------- 1 | 62 | 63 | 136 | 137 | 146 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | 4 | 5 | 6 | evoMark company logo 7 | 8 | 9 |

10 | 11 |

12 | Downloads 13 | Version 14 | Licence 15 |

16 | 17 | # Vue useTailwind 18 | 19 | Bring Tailwind's JIT compiler to the browser with features designed around building your own WYSIWYG or CMS. 20 | 21 | - Tailwind v4+ 22 | - Supports user-provided themes 23 | - Supports user-provided plugins 24 | - Use in the main DOM or in isolated Shadow DOM components 25 | - Run multiple different instances on the same page 26 | - Get a reactive list of your used classes 27 | 28 | See demo at https://evo-mark.github.io/vue-use-tailwind/ 29 | 30 | > Not affiliated with the @vueuse project 31 | 32 | ## Install 33 | 34 | ```sh 35 | pnpm add vue-use-tailwind 36 | ``` 37 | 38 | ## Usage 39 | 40 | Below is a basic example of **useTailwind** inside a shadow DOM. 41 | 42 | No styles or CSS applied outside the shadow DOM will affect the editor content and a clean Tailwind stylesheet will be reactively applied to content inside the tiptap editor. 43 | 44 | ```html 45 | 50 | 51 | 64 | ``` 65 | 66 | ### Theme config 67 | 68 | You can also pass theme configuration CSS to **useTailwind**. 69 | 70 | ```js 71 | const { classes } = useTailwind(shadowRef, { 72 | theme: [{ content: "--color-mint-500: oklch(0.72 0.11 178);" }], 73 | }); 74 | ``` 75 | 76 | The theme parameter can contain a string, an array of strings, or an array of ThemeConfigItems: 77 | 78 | ```ts 79 | interface ThemeConfigItem { 80 | isInline?: boolean; // optional 81 | isStatic?: boolean; // optional 82 | content: string; 83 | } 84 | ``` 85 | 86 | ### Plugins 87 | 88 | If you want your stylesheet to load additional plugins, you must pass them to the **useTailwind** composable: 89 | 90 | ```js 91 | import { useTailwind } from "vue-use-tailwind"; 92 | import TailwindTypography from "@tailwindcss/typography"; 93 | 94 | const { classes } = useTailwind(shadowRef, { 95 | theme: "--color-mint-500: oklch(0.72 0.11 178);", 96 | plugins: [TailwindTypography], 97 | }); 98 | ``` 99 | 100 | > Note: Neither theme nor plugins are reactive. 101 | 102 | ## Support Open-Source Software 103 | 104 | We're providing this package free-of-charge to the community. However, all development and maintenance costs time, energy and money. So please help fund this project if you can. 105 | 106 |

107 | 108 | 109 | 110 | Buy Me A Coffee 111 |

112 | 113 | --- 114 | 115 | For full installation instructions and documentation, visit [evoMark](https://evomark.co.uk/open-source-software/vue-use-tailwind/) (coming soon). 116 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import { loadModule, loadStylesheet } from "./loaders"; 2 | import { compile } from "tailwindcss"; 3 | import type { PluginCreator } from "tailwindcss/plugin"; 4 | 5 | type Compiler = ReturnType; 6 | interface ThemeConfigItem { 7 | isInline?: boolean; 8 | isStatic?: boolean; 9 | content: string; 10 | } 11 | 12 | export type UserConfig = { 13 | theme?: string | string[] | ThemeConfigItem | ThemeConfigItem[]; 14 | plugins?: PluginCreator[]; 15 | }; 16 | 17 | export interface InstanceProperties { 18 | styleObserver: MutationObserver; 19 | sheet: Ref; 20 | classes: Ref>; 21 | buildQueue: Ref>; 22 | compiler: Compiler; 23 | root: Ref; 24 | theme: UserConfig["theme"]; 25 | plugins: UserConfig["plugins"]; 26 | lastCss: Ref; 27 | } 28 | 29 | import type { Ref } from "vue"; 30 | import { STYLE_TYPE } from "./constants"; 31 | import { rebuild } from "./build"; 32 | 33 | export function observeSheet(sheet: HTMLStyleElement, styleObserver: MutationObserver) { 34 | styleObserver.observe(sheet, { 35 | attributes: true, 36 | attributeFilter: ["type"], 37 | characterData: true, 38 | subtree: true, 39 | childList: true, 40 | }); 41 | } 42 | 43 | export function parseThemeTag(item: string | ThemeConfigItem): string { 44 | if (item instanceof Object && item.isInline) { 45 | return "@theme inline"; 46 | } else if (item instanceof Object && item.isStatic) { 47 | return "@theme static"; 48 | } else { 49 | return "@theme"; 50 | } 51 | } 52 | 53 | export function parseUserTheme(theme: UserConfig["theme"]): string { 54 | if (!theme) return ""; 55 | const themeArray = Array.isArray(theme) ? theme : [theme]; 56 | 57 | return themeArray 58 | .reduce((acc: string[], curr: string | ThemeConfigItem): string[] => { 59 | const tag = parseThemeTag(curr); 60 | const content = typeof curr === "string" ? curr : curr.content; 61 | acc.push(`${tag} { 62 | ${content} 63 | }`); 64 | return acc; 65 | }, []) 66 | .join("\n\n"); 67 | } 68 | 69 | export function parseUserPlugins(plugins: UserConfig["plugins"]): string { 70 | if (!plugins || Array.isArray(plugins) === false) { 71 | return ""; 72 | } 73 | return plugins 74 | .reduce((acc: string[], curr: PluginCreator, index: number) => { 75 | if (!curr) return acc; 76 | acc.push(`@plugin "#plugin_${index}"`); 77 | return acc; 78 | }, []) 79 | .join("\n"); 80 | } 81 | 82 | export function createElementObserver( 83 | root: Ref, 84 | { 85 | styleObserver, 86 | sheet, 87 | compiler, 88 | classes, 89 | buildQueue, 90 | }: Pick, 91 | ) { 92 | return new MutationObserver((records) => { 93 | let full = 0; 94 | let incremental = 0; 95 | 96 | for (let record of records) { 97 | // New stylesheets == tracking + full rebuild 98 | for (let node of record.addedNodes) { 99 | if (node.nodeType !== Node.ELEMENT_NODE) continue; 100 | 101 | const element = node as Element; 102 | 103 | if (element.tagName !== "STYLE") continue; 104 | if (element.getAttribute("type") !== STYLE_TYPE) continue; 105 | 106 | const styleElement = element as HTMLStyleElement; 107 | 108 | observeSheet(styleElement, styleObserver); 109 | full++; 110 | } 111 | 112 | // New nodes require an incremental rebuild 113 | for (let node of record.addedNodes) { 114 | if (node.nodeType !== 1) continue; 115 | 116 | // Skip the output stylesheet itself to prevent loops 117 | if (node === sheet.value) continue; 118 | 119 | incremental++; 120 | } 121 | 122 | // Changes to class attributes require an incremental rebuild 123 | if (record.type === "attributes") { 124 | incremental++; 125 | } 126 | } 127 | 128 | if (full > 0) { 129 | return rebuild("full", { compiler, buildQueue, sheet, root, classes }); 130 | } else if (incremental > 0) { 131 | return rebuild("incremental", { compiler, buildQueue, sheet, root, classes }); 132 | } 133 | }).observe(root.value, { 134 | attributes: true, 135 | attributeFilter: ["class"], 136 | childList: true, 137 | subtree: true, 138 | }); 139 | } 140 | 141 | export async function createCompiler( 142 | root: Ref, 143 | { 144 | lastCss, 145 | classes, 146 | styleObserver, 147 | theme, 148 | plugins, 149 | }: Pick, 150 | ) { 151 | // The stylesheets may have changed causing a full rebuild so we'll need to 152 | // gather the latest list of stylesheets. 153 | let stylesheets: Iterable = root.value.querySelectorAll(`style[type="${STYLE_TYPE}"]`); 154 | 155 | let css = ""; 156 | for (let sheet of stylesheets) { 157 | observeSheet(sheet, styleObserver); 158 | css += sheet.textContent + "\n"; 159 | } 160 | 161 | // The user might have no stylesheets, or a some stylesheets without `@import` 162 | // because they want to customize their theme so we'll inject the main import 163 | // for them. However, if they start using `@import` we'll let them control 164 | // the build completely. 165 | if (!css.includes("@import")) { 166 | css = `@import "tailwindcss";${css}`; 167 | } 168 | 169 | // The input CSS did not change so the compiler does not need to be recreated 170 | if (lastCss.value === css) return; 171 | 172 | lastCss.value = css; 173 | 174 | const compiler = await compile(css, { 175 | base: "/", 176 | loadStylesheet: async (id, base) => loadStylesheet(id, base, { theme, plugins }), 177 | loadModule: async (id: string, base: string, type: string) => loadModule(id, base, type, plugins), 178 | }); 179 | 180 | classes.value.clear(); 181 | return compiler; 182 | } 183 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | vue-shadow-dom: 12 | specifier: ^4.0.0 13 | version: 4.2.0 14 | devDependencies: 15 | '@types/node': 16 | specifier: ^22.14.0 17 | version: 22.14.0 18 | '@vitejs/plugin-vue': 19 | specifier: ^5.2.3 20 | version: 5.2.3(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2))(vue@3.5.13(typescript@5.8.3)) 21 | '@vue/tsconfig': 22 | specifier: ^0.7.0 23 | version: 0.7.0(typescript@5.8.3)(vue@3.5.13(typescript@5.8.3)) 24 | gh-pages: 25 | specifier: ^6.3.0 26 | version: 6.3.0 27 | prettier: 28 | specifier: ^3.5.3 29 | version: 3.5.3 30 | prettier-plugin-tailwindcss: 31 | specifier: ^0.6.11 32 | version: 0.6.11(prettier@3.5.3) 33 | tailwindcss: 34 | specifier: ^4.1.3 35 | version: 4.1.3 36 | typescript: 37 | specifier: ^5.8.3 38 | version: 5.8.3 39 | vite: 40 | specifier: ^6.2.5 41 | version: 6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2) 42 | vue: 43 | specifier: ^3.5.13 44 | version: 3.5.13(typescript@5.8.3) 45 | vue-tsc: 46 | specifier: ^2.2.8 47 | version: 2.2.8(typescript@5.8.3) 48 | 49 | demo: 50 | dependencies: 51 | '@mdi/js': 52 | specifier: ^7.4.47 53 | version: 7.4.47 54 | '@tailwindcss/typography': 55 | specifier: ^0.5.16 56 | version: 0.5.16(tailwindcss@4.1.3) 57 | '@tiptap/core': 58 | specifier: ^2.11.7 59 | version: 2.11.7(@tiptap/pm@2.11.7) 60 | '@tiptap/extension-bold': 61 | specifier: ^2.11.7 62 | version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 63 | '@tiptap/extension-heading': 64 | specifier: ^2.11.7 65 | version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 66 | '@tiptap/extension-italic': 67 | specifier: ^2.11.7 68 | version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 69 | '@tiptap/extension-strike': 70 | specifier: ^2.11.7 71 | version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 72 | '@tiptap/extension-text-align': 73 | specifier: ^2.11.7 74 | version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 75 | '@tiptap/extension-underline': 76 | specifier: ^2.11.7 77 | version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 78 | '@tiptap/pm': 79 | specifier: ^2.11.7 80 | version: 2.11.7 81 | '@tiptap/starter-kit': 82 | specifier: ^2.11.7 83 | version: 2.11.7 84 | '@tiptap/vue-3': 85 | specifier: ^2.11.7 86 | version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(vue@3.5.13(typescript@5.8.3)) 87 | '@vueuse/core': 88 | specifier: ^13.0.0 89 | version: 13.0.0(vue@3.5.13(typescript@5.8.3)) 90 | prosemirror-state: 91 | specifier: ^1.4.3 92 | version: 1.4.3 93 | striptags: 94 | specifier: ^3.2.0 95 | version: 3.2.0 96 | vue: 97 | specifier: ^3.5.13 98 | version: 3.5.13(typescript@5.8.3) 99 | vue-use-tailwind: 100 | specifier: link:.. 101 | version: link:.. 102 | devDependencies: 103 | '@vitejs/plugin-vue': 104 | specifier: ^5.2.3 105 | version: 5.2.3(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2))(vue@3.5.13(typescript@5.8.3)) 106 | vite-plugin-vuetify: 107 | specifier: ^2.1.1 108 | version: 2.1.1(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2))(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.0) 109 | vuetify: 110 | specifier: ^3.8.0 111 | version: 3.8.0(typescript@5.8.3)(vite-plugin-vuetify@2.1.1)(vue@3.5.13(typescript@5.8.3)) 112 | 113 | packages: 114 | 115 | '@babel/helper-string-parser@7.25.9': 116 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 117 | engines: {node: '>=6.9.0'} 118 | 119 | '@babel/helper-validator-identifier@7.25.9': 120 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 121 | engines: {node: '>=6.9.0'} 122 | 123 | '@babel/parser@7.27.0': 124 | resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} 125 | engines: {node: '>=6.0.0'} 126 | hasBin: true 127 | 128 | '@babel/types@7.27.0': 129 | resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} 130 | engines: {node: '>=6.9.0'} 131 | 132 | '@esbuild/aix-ppc64@0.25.2': 133 | resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} 134 | engines: {node: '>=18'} 135 | cpu: [ppc64] 136 | os: [aix] 137 | 138 | '@esbuild/android-arm64@0.25.2': 139 | resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} 140 | engines: {node: '>=18'} 141 | cpu: [arm64] 142 | os: [android] 143 | 144 | '@esbuild/android-arm@0.25.2': 145 | resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} 146 | engines: {node: '>=18'} 147 | cpu: [arm] 148 | os: [android] 149 | 150 | '@esbuild/android-x64@0.25.2': 151 | resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} 152 | engines: {node: '>=18'} 153 | cpu: [x64] 154 | os: [android] 155 | 156 | '@esbuild/darwin-arm64@0.25.2': 157 | resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} 158 | engines: {node: '>=18'} 159 | cpu: [arm64] 160 | os: [darwin] 161 | 162 | '@esbuild/darwin-x64@0.25.2': 163 | resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} 164 | engines: {node: '>=18'} 165 | cpu: [x64] 166 | os: [darwin] 167 | 168 | '@esbuild/freebsd-arm64@0.25.2': 169 | resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} 170 | engines: {node: '>=18'} 171 | cpu: [arm64] 172 | os: [freebsd] 173 | 174 | '@esbuild/freebsd-x64@0.25.2': 175 | resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} 176 | engines: {node: '>=18'} 177 | cpu: [x64] 178 | os: [freebsd] 179 | 180 | '@esbuild/linux-arm64@0.25.2': 181 | resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} 182 | engines: {node: '>=18'} 183 | cpu: [arm64] 184 | os: [linux] 185 | 186 | '@esbuild/linux-arm@0.25.2': 187 | resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} 188 | engines: {node: '>=18'} 189 | cpu: [arm] 190 | os: [linux] 191 | 192 | '@esbuild/linux-ia32@0.25.2': 193 | resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} 194 | engines: {node: '>=18'} 195 | cpu: [ia32] 196 | os: [linux] 197 | 198 | '@esbuild/linux-loong64@0.25.2': 199 | resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} 200 | engines: {node: '>=18'} 201 | cpu: [loong64] 202 | os: [linux] 203 | 204 | '@esbuild/linux-mips64el@0.25.2': 205 | resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} 206 | engines: {node: '>=18'} 207 | cpu: [mips64el] 208 | os: [linux] 209 | 210 | '@esbuild/linux-ppc64@0.25.2': 211 | resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} 212 | engines: {node: '>=18'} 213 | cpu: [ppc64] 214 | os: [linux] 215 | 216 | '@esbuild/linux-riscv64@0.25.2': 217 | resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} 218 | engines: {node: '>=18'} 219 | cpu: [riscv64] 220 | os: [linux] 221 | 222 | '@esbuild/linux-s390x@0.25.2': 223 | resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} 224 | engines: {node: '>=18'} 225 | cpu: [s390x] 226 | os: [linux] 227 | 228 | '@esbuild/linux-x64@0.25.2': 229 | resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} 230 | engines: {node: '>=18'} 231 | cpu: [x64] 232 | os: [linux] 233 | 234 | '@esbuild/netbsd-arm64@0.25.2': 235 | resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} 236 | engines: {node: '>=18'} 237 | cpu: [arm64] 238 | os: [netbsd] 239 | 240 | '@esbuild/netbsd-x64@0.25.2': 241 | resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} 242 | engines: {node: '>=18'} 243 | cpu: [x64] 244 | os: [netbsd] 245 | 246 | '@esbuild/openbsd-arm64@0.25.2': 247 | resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} 248 | engines: {node: '>=18'} 249 | cpu: [arm64] 250 | os: [openbsd] 251 | 252 | '@esbuild/openbsd-x64@0.25.2': 253 | resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} 254 | engines: {node: '>=18'} 255 | cpu: [x64] 256 | os: [openbsd] 257 | 258 | '@esbuild/sunos-x64@0.25.2': 259 | resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} 260 | engines: {node: '>=18'} 261 | cpu: [x64] 262 | os: [sunos] 263 | 264 | '@esbuild/win32-arm64@0.25.2': 265 | resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} 266 | engines: {node: '>=18'} 267 | cpu: [arm64] 268 | os: [win32] 269 | 270 | '@esbuild/win32-ia32@0.25.2': 271 | resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} 272 | engines: {node: '>=18'} 273 | cpu: [ia32] 274 | os: [win32] 275 | 276 | '@esbuild/win32-x64@0.25.2': 277 | resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} 278 | engines: {node: '>=18'} 279 | cpu: [x64] 280 | os: [win32] 281 | 282 | '@jridgewell/sourcemap-codec@1.5.0': 283 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 284 | 285 | '@mdi/js@7.4.47': 286 | resolution: {integrity: sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==} 287 | 288 | '@nodelib/fs.scandir@2.1.5': 289 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 290 | engines: {node: '>= 8'} 291 | 292 | '@nodelib/fs.stat@2.0.5': 293 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 294 | engines: {node: '>= 8'} 295 | 296 | '@nodelib/fs.walk@1.2.8': 297 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 298 | engines: {node: '>= 8'} 299 | 300 | '@popperjs/core@2.11.8': 301 | resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} 302 | 303 | '@remirror/core-constants@3.0.0': 304 | resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} 305 | 306 | '@rollup/rollup-android-arm-eabi@4.39.0': 307 | resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} 308 | cpu: [arm] 309 | os: [android] 310 | 311 | '@rollup/rollup-android-arm64@4.39.0': 312 | resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} 313 | cpu: [arm64] 314 | os: [android] 315 | 316 | '@rollup/rollup-darwin-arm64@4.39.0': 317 | resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} 318 | cpu: [arm64] 319 | os: [darwin] 320 | 321 | '@rollup/rollup-darwin-x64@4.39.0': 322 | resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} 323 | cpu: [x64] 324 | os: [darwin] 325 | 326 | '@rollup/rollup-freebsd-arm64@4.39.0': 327 | resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} 328 | cpu: [arm64] 329 | os: [freebsd] 330 | 331 | '@rollup/rollup-freebsd-x64@4.39.0': 332 | resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} 333 | cpu: [x64] 334 | os: [freebsd] 335 | 336 | '@rollup/rollup-linux-arm-gnueabihf@4.39.0': 337 | resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} 338 | cpu: [arm] 339 | os: [linux] 340 | 341 | '@rollup/rollup-linux-arm-musleabihf@4.39.0': 342 | resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} 343 | cpu: [arm] 344 | os: [linux] 345 | 346 | '@rollup/rollup-linux-arm64-gnu@4.39.0': 347 | resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} 348 | cpu: [arm64] 349 | os: [linux] 350 | 351 | '@rollup/rollup-linux-arm64-musl@4.39.0': 352 | resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} 353 | cpu: [arm64] 354 | os: [linux] 355 | 356 | '@rollup/rollup-linux-loongarch64-gnu@4.39.0': 357 | resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} 358 | cpu: [loong64] 359 | os: [linux] 360 | 361 | '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': 362 | resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} 363 | cpu: [ppc64] 364 | os: [linux] 365 | 366 | '@rollup/rollup-linux-riscv64-gnu@4.39.0': 367 | resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} 368 | cpu: [riscv64] 369 | os: [linux] 370 | 371 | '@rollup/rollup-linux-riscv64-musl@4.39.0': 372 | resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} 373 | cpu: [riscv64] 374 | os: [linux] 375 | 376 | '@rollup/rollup-linux-s390x-gnu@4.39.0': 377 | resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} 378 | cpu: [s390x] 379 | os: [linux] 380 | 381 | '@rollup/rollup-linux-x64-gnu@4.39.0': 382 | resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} 383 | cpu: [x64] 384 | os: [linux] 385 | 386 | '@rollup/rollup-linux-x64-musl@4.39.0': 387 | resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} 388 | cpu: [x64] 389 | os: [linux] 390 | 391 | '@rollup/rollup-win32-arm64-msvc@4.39.0': 392 | resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} 393 | cpu: [arm64] 394 | os: [win32] 395 | 396 | '@rollup/rollup-win32-ia32-msvc@4.39.0': 397 | resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} 398 | cpu: [ia32] 399 | os: [win32] 400 | 401 | '@rollup/rollup-win32-x64-msvc@4.39.0': 402 | resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} 403 | cpu: [x64] 404 | os: [win32] 405 | 406 | '@tailwindcss/typography@0.5.16': 407 | resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} 408 | peerDependencies: 409 | tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' 410 | 411 | '@tiptap/core@2.11.7': 412 | resolution: {integrity: sha512-zN+NFFxLsxNEL8Qioc+DL6b8+Tt2bmRbXH22Gk6F6nD30x83eaUSFlSv3wqvgyCq3I1i1NO394So+Agmayx6rQ==} 413 | peerDependencies: 414 | '@tiptap/pm': ^2.7.0 415 | 416 | '@tiptap/extension-blockquote@2.11.7': 417 | resolution: {integrity: sha512-liD8kWowl3CcYCG9JQlVx1eSNc/aHlt6JpVsuWvzq6J8APWX693i3+zFqyK2eCDn0k+vW62muhSBe3u09hA3Zw==} 418 | peerDependencies: 419 | '@tiptap/core': ^2.7.0 420 | 421 | '@tiptap/extension-bold@2.11.7': 422 | resolution: {integrity: sha512-VTR3JlldBixXbjpLTFme/Bxf1xeUgZZY3LTlt5JDlCW3CxO7k05CIa+kEZ8LXpog5annytZDUVtWqxrNjmsuHQ==} 423 | peerDependencies: 424 | '@tiptap/core': ^2.7.0 425 | 426 | '@tiptap/extension-bubble-menu@2.11.7': 427 | resolution: {integrity: sha512-0vYqSUSSap3kk3/VT4tFE1/6StX70I3/NKQ4J68ZSFgkgyB3ZVlYv7/dY3AkEukjsEp3yN7m8Gw8ei2eEwyzwg==} 428 | peerDependencies: 429 | '@tiptap/core': ^2.7.0 430 | '@tiptap/pm': ^2.7.0 431 | 432 | '@tiptap/extension-bullet-list@2.11.7': 433 | resolution: {integrity: sha512-WbPogE2/Q3e3/QYgbT1Sj4KQUfGAJNc5pvb7GrUbvRQsAh7HhtuO8hqdDwH8dEdD/cNUehgt17TO7u8qV6qeBw==} 434 | peerDependencies: 435 | '@tiptap/core': ^2.7.0 436 | 437 | '@tiptap/extension-code-block@2.11.7': 438 | resolution: {integrity: sha512-To/y/2H04VWqiANy53aXjV7S6fA86c2759RsH1hTIe57jA1KyE7I5tlAofljOLZK/covkGmPeBddSPHGJbz++Q==} 439 | peerDependencies: 440 | '@tiptap/core': ^2.7.0 441 | '@tiptap/pm': ^2.7.0 442 | 443 | '@tiptap/extension-code@2.11.7': 444 | resolution: {integrity: sha512-VpPO1Uy/eF4hYOpohS/yMOcE1C07xmMj0/D989D9aS1x95jWwUVrSkwC+PlWMUBx9PbY2NRsg1ZDwVvlNKZ6yQ==} 445 | peerDependencies: 446 | '@tiptap/core': ^2.7.0 447 | 448 | '@tiptap/extension-document@2.11.7': 449 | resolution: {integrity: sha512-95ouJXPjdAm9+VBRgFo4lhDoMcHovyl/awORDI8gyEn0Rdglt+ZRZYoySFzbVzer9h0cre+QdIwr9AIzFFbfdA==} 450 | peerDependencies: 451 | '@tiptap/core': ^2.7.0 452 | 453 | '@tiptap/extension-dropcursor@2.11.7': 454 | resolution: {integrity: sha512-63mL+nxQILizsr5NbmgDeOjFEWi34BLt7evwL6UUZEVM15K8V1G8pD9Y0kCXrZYpHWz0tqFRXdrhDz0Ppu8oVw==} 455 | peerDependencies: 456 | '@tiptap/core': ^2.7.0 457 | '@tiptap/pm': ^2.7.0 458 | 459 | '@tiptap/extension-floating-menu@2.11.7': 460 | resolution: {integrity: sha512-DG54WoUu2vxHRVzKZiR5I5RMOYj45IlxQMkBAx1wjS0ch41W8DUYEeipvMMjCeKtEI+emz03xYUcOAP9LRmg+w==} 461 | peerDependencies: 462 | '@tiptap/core': ^2.7.0 463 | '@tiptap/pm': ^2.7.0 464 | 465 | '@tiptap/extension-gapcursor@2.11.7': 466 | resolution: {integrity: sha512-EceesmPG7FyjXZ8EgeJPUov9G1mAf2AwdypxBNH275g6xd5dmU/KvjoFZjmQ0X1ve7mS+wNupVlGxAEUYoveew==} 467 | peerDependencies: 468 | '@tiptap/core': ^2.7.0 469 | '@tiptap/pm': ^2.7.0 470 | 471 | '@tiptap/extension-hard-break@2.11.7': 472 | resolution: {integrity: sha512-zTkZSA6q+F5sLOdCkiC2+RqJQN0zdsJqvFIOVFL/IDVOnq6PZO5THzwRRLvOSnJJl3edRQCl/hUgS0L5sTInGQ==} 473 | peerDependencies: 474 | '@tiptap/core': ^2.7.0 475 | 476 | '@tiptap/extension-heading@2.11.7': 477 | resolution: {integrity: sha512-8kWh7y4Rd2fwxfWOhFFWncHdkDkMC1Z60yzIZWjIu72+6yQxvo8w3yeb7LI7jER4kffbMmadgcfhCHC/fkObBA==} 478 | peerDependencies: 479 | '@tiptap/core': ^2.7.0 480 | 481 | '@tiptap/extension-history@2.11.7': 482 | resolution: {integrity: sha512-Cu5x3aS13I040QSRoLdd+w09G4OCVfU+azpUqxufZxeNs9BIJC+0jowPLeOxKDh6D5GGT2A8sQtxc6a/ssbs8g==} 483 | peerDependencies: 484 | '@tiptap/core': ^2.7.0 485 | '@tiptap/pm': ^2.7.0 486 | 487 | '@tiptap/extension-horizontal-rule@2.11.7': 488 | resolution: {integrity: sha512-uVmQwD2dzZ5xwmvUlciy0ItxOdOfQjH6VLmu80zyJf8Yu7mvwP8JyxoXUX0vd1xHpwAhgQ9/ozjIWYGIw79DPQ==} 489 | peerDependencies: 490 | '@tiptap/core': ^2.7.0 491 | '@tiptap/pm': ^2.7.0 492 | 493 | '@tiptap/extension-italic@2.11.7': 494 | resolution: {integrity: sha512-r985bkQfG0HMpmCU0X0p/Xe7U1qgRm2mxvcp6iPCuts2FqxaCoyfNZ8YnMsgVK1mRhM7+CQ5SEg2NOmQNtHvPw==} 495 | peerDependencies: 496 | '@tiptap/core': ^2.7.0 497 | 498 | '@tiptap/extension-list-item@2.11.7': 499 | resolution: {integrity: sha512-6ikh7Y+qAbkSuIHXPIINqfzmWs5uIGrylihdZ9adaIyvrN1KSnWIqrZIk/NcZTg5YFIJlXrnGSRSjb/QM3WUhw==} 500 | peerDependencies: 501 | '@tiptap/core': ^2.7.0 502 | 503 | '@tiptap/extension-ordered-list@2.11.7': 504 | resolution: {integrity: sha512-bLGCHDMB0vbJk7uu8bRg8vES3GsvxkX7Cgjgm/6xysHFbK98y0asDtNxkW1VvuRreNGz4tyB6vkcVCfrxl4jKw==} 505 | peerDependencies: 506 | '@tiptap/core': ^2.7.0 507 | 508 | '@tiptap/extension-paragraph@2.11.7': 509 | resolution: {integrity: sha512-Pl3B4q6DJqTvvAdraqZaNP9Hh0UWEHL5nNdxhaRNuhKaUo7lq8wbDSIxIW3lvV0lyCs0NfyunkUvSm1CXb6d4Q==} 510 | peerDependencies: 511 | '@tiptap/core': ^2.7.0 512 | 513 | '@tiptap/extension-strike@2.11.7': 514 | resolution: {integrity: sha512-D6GYiW9F24bvAY7XMOARNZbC8YGPzdzWdXd8VOOJABhf4ynMi/oW4NNiko+kZ67jn3EGaKoz32VMJzNQgYi1HA==} 515 | peerDependencies: 516 | '@tiptap/core': ^2.7.0 517 | 518 | '@tiptap/extension-text-align@2.11.7': 519 | resolution: {integrity: sha512-3M8zd9ROADXazVNpgR6Ejs1evSvBveN36qN4GgV71GqrNlTcjqYgQcXFLQrsd2hnE+aXir8/8bLJ+aaJXDninA==} 520 | peerDependencies: 521 | '@tiptap/core': ^2.7.0 522 | 523 | '@tiptap/extension-text-style@2.11.7': 524 | resolution: {integrity: sha512-LHO6DBg/9SkCQFdWlVfw9nolUmw+Cid94WkTY+7IwrpyG2+ZGQxnKpCJCKyeaFNbDoYAtvu0vuTsSXeCkgShcA==} 525 | peerDependencies: 526 | '@tiptap/core': ^2.7.0 527 | 528 | '@tiptap/extension-text@2.11.7': 529 | resolution: {integrity: sha512-wObCn8qZkIFnXTLvBP+X8KgaEvTap/FJ/i4hBMfHBCKPGDx99KiJU6VIbDXG8d5ZcFZE0tOetK1pP5oI7qgMlQ==} 530 | peerDependencies: 531 | '@tiptap/core': ^2.7.0 532 | 533 | '@tiptap/extension-underline@2.11.7': 534 | resolution: {integrity: sha512-NtoQw6PGijOAtXC6G+0Aq0/Z5wwEjPhNHs8nsjXogfWIgaj/aI4/zfBnA06eI3WT+emMYQTl0fTc4CUPnLVU8g==} 535 | peerDependencies: 536 | '@tiptap/core': ^2.7.0 537 | 538 | '@tiptap/pm@2.11.7': 539 | resolution: {integrity: sha512-7gEEfz2Q6bYKXM07vzLUD0vqXFhC5geWRA6LCozTiLdVFDdHWiBrvb2rtkL5T7mfLq03zc1QhH7rI3F6VntOEA==} 540 | 541 | '@tiptap/starter-kit@2.11.7': 542 | resolution: {integrity: sha512-K+q51KwNU/l0kqRuV5e1824yOLVftj6kGplGQLvJG56P7Rb2dPbM/JeaDbxQhnHT/KDGamG0s0Po0M3pPY163A==} 543 | 544 | '@tiptap/vue-3@2.11.7': 545 | resolution: {integrity: sha512-P4Dyi7Uvi+l2ubsVTibZU3XVLT15eWP0W3mPiQwT0IVI0+FjGyBa83TXgMh5Kb53nxABgIK7FiIMBtQPSkjqfg==} 546 | peerDependencies: 547 | '@tiptap/core': ^2.7.0 548 | '@tiptap/pm': ^2.7.0 549 | vue: ^3.0.0 550 | 551 | '@types/estree@1.0.7': 552 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 553 | 554 | '@types/linkify-it@5.0.0': 555 | resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} 556 | 557 | '@types/markdown-it@14.1.2': 558 | resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} 559 | 560 | '@types/mdurl@2.0.0': 561 | resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} 562 | 563 | '@types/node@22.14.0': 564 | resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} 565 | 566 | '@types/web-bluetooth@0.0.21': 567 | resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} 568 | 569 | '@vitejs/plugin-vue@5.2.3': 570 | resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} 571 | engines: {node: ^18.0.0 || >=20.0.0} 572 | peerDependencies: 573 | vite: ^5.0.0 || ^6.0.0 574 | vue: ^3.2.25 575 | 576 | '@volar/language-core@2.4.12': 577 | resolution: {integrity: sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==} 578 | 579 | '@volar/source-map@2.4.12': 580 | resolution: {integrity: sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==} 581 | 582 | '@volar/typescript@2.4.12': 583 | resolution: {integrity: sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==} 584 | 585 | '@vue/compiler-core@3.5.13': 586 | resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} 587 | 588 | '@vue/compiler-dom@3.5.13': 589 | resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} 590 | 591 | '@vue/compiler-sfc@3.5.13': 592 | resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} 593 | 594 | '@vue/compiler-ssr@3.5.13': 595 | resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} 596 | 597 | '@vue/compiler-vue2@2.7.16': 598 | resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} 599 | 600 | '@vue/language-core@2.2.8': 601 | resolution: {integrity: sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==} 602 | peerDependencies: 603 | typescript: '*' 604 | peerDependenciesMeta: 605 | typescript: 606 | optional: true 607 | 608 | '@vue/reactivity@3.5.13': 609 | resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} 610 | 611 | '@vue/runtime-core@3.5.13': 612 | resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} 613 | 614 | '@vue/runtime-dom@3.5.13': 615 | resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} 616 | 617 | '@vue/server-renderer@3.5.13': 618 | resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} 619 | peerDependencies: 620 | vue: 3.5.13 621 | 622 | '@vue/shared@3.5.13': 623 | resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} 624 | 625 | '@vue/tsconfig@0.7.0': 626 | resolution: {integrity: sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==} 627 | peerDependencies: 628 | typescript: 5.x 629 | vue: ^3.4.0 630 | peerDependenciesMeta: 631 | typescript: 632 | optional: true 633 | vue: 634 | optional: true 635 | 636 | '@vuetify/loader-shared@2.1.0': 637 | resolution: {integrity: sha512-dNE6Ceym9ijFsmJKB7YGW0cxs7xbYV8+1LjU6jd4P14xOt/ji4Igtgzt0rJFbxu+ZhAzqz853lhB0z8V9Dy9cQ==} 638 | peerDependencies: 639 | vue: ^3.0.0 640 | vuetify: ^3.0.0 641 | 642 | '@vueuse/core@13.0.0': 643 | resolution: {integrity: sha512-rkgb4a8/0b234lMGCT29WkCjPfsX0oxrIRR7FDndRoW3FsaC9NBzefXg/9TLhAgwM11f49XnutshM4LzJBrQ5g==} 644 | peerDependencies: 645 | vue: ^3.5.0 646 | 647 | '@vueuse/metadata@13.0.0': 648 | resolution: {integrity: sha512-TRNksqmvtvqsuHf7bbgH9OSXEV2b6+M3BSN4LR5oxWKykOFT9gV78+C2/0++Pq9KCp9KQ1OQDPvGlWNQpOb2Mw==} 649 | 650 | '@vueuse/shared@13.0.0': 651 | resolution: {integrity: sha512-9MiHhAPw+sqCF/RLo8V6HsjRqEdNEWVpDLm2WBRW2G/kSQjb8X901sozXpSCaeLG0f7TEfMrT4XNaA5m1ez7Dg==} 652 | peerDependencies: 653 | vue: ^3.5.0 654 | 655 | alien-signals@1.0.13: 656 | resolution: {integrity: sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==} 657 | 658 | argparse@2.0.1: 659 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 660 | 661 | array-union@2.1.0: 662 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 663 | engines: {node: '>=8'} 664 | 665 | async@3.2.6: 666 | resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} 667 | 668 | balanced-match@1.0.2: 669 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 670 | 671 | brace-expansion@2.0.1: 672 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 673 | 674 | braces@3.0.3: 675 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 676 | engines: {node: '>=8'} 677 | 678 | commander@13.1.0: 679 | resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} 680 | engines: {node: '>=18'} 681 | 682 | commondir@1.0.1: 683 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} 684 | 685 | crelt@1.0.6: 686 | resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} 687 | 688 | cssesc@3.0.0: 689 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 690 | engines: {node: '>=4'} 691 | hasBin: true 692 | 693 | csstype@3.1.3: 694 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 695 | 696 | de-indent@1.0.2: 697 | resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} 698 | 699 | debug@4.4.0: 700 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 701 | engines: {node: '>=6.0'} 702 | peerDependencies: 703 | supports-color: '*' 704 | peerDependenciesMeta: 705 | supports-color: 706 | optional: true 707 | 708 | detect-libc@2.0.3: 709 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} 710 | engines: {node: '>=8'} 711 | 712 | dir-glob@3.0.1: 713 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 714 | engines: {node: '>=8'} 715 | 716 | email-addresses@5.0.0: 717 | resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} 718 | 719 | entities@4.5.0: 720 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 721 | engines: {node: '>=0.12'} 722 | 723 | esbuild@0.25.2: 724 | resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} 725 | engines: {node: '>=18'} 726 | hasBin: true 727 | 728 | escape-string-regexp@1.0.5: 729 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 730 | engines: {node: '>=0.8.0'} 731 | 732 | escape-string-regexp@4.0.0: 733 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 734 | engines: {node: '>=10'} 735 | 736 | estree-walker@2.0.2: 737 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 738 | 739 | fast-glob@3.3.3: 740 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 741 | engines: {node: '>=8.6.0'} 742 | 743 | fastq@1.19.1: 744 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 745 | 746 | filename-reserved-regex@2.0.0: 747 | resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} 748 | engines: {node: '>=4'} 749 | 750 | filenamify@4.3.0: 751 | resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} 752 | engines: {node: '>=8'} 753 | 754 | fill-range@7.1.1: 755 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 756 | engines: {node: '>=8'} 757 | 758 | find-cache-dir@3.3.2: 759 | resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} 760 | engines: {node: '>=8'} 761 | 762 | find-up@4.1.0: 763 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 764 | engines: {node: '>=8'} 765 | 766 | fs-extra@11.3.0: 767 | resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} 768 | engines: {node: '>=14.14'} 769 | 770 | fsevents@2.3.3: 771 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 772 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 773 | os: [darwin] 774 | 775 | gh-pages@6.3.0: 776 | resolution: {integrity: sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==} 777 | engines: {node: '>=10'} 778 | hasBin: true 779 | 780 | glob-parent@5.1.2: 781 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 782 | engines: {node: '>= 6'} 783 | 784 | globby@11.1.0: 785 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 786 | engines: {node: '>=10'} 787 | 788 | graceful-fs@4.2.11: 789 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 790 | 791 | he@1.2.0: 792 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 793 | hasBin: true 794 | 795 | ignore@5.3.2: 796 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 797 | engines: {node: '>= 4'} 798 | 799 | is-extglob@2.1.1: 800 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 801 | engines: {node: '>=0.10.0'} 802 | 803 | is-glob@4.0.3: 804 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 805 | engines: {node: '>=0.10.0'} 806 | 807 | is-number@7.0.0: 808 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 809 | engines: {node: '>=0.12.0'} 810 | 811 | jiti@2.4.2: 812 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} 813 | hasBin: true 814 | 815 | jsonfile@6.1.0: 816 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 817 | 818 | lightningcss-darwin-arm64@1.29.2: 819 | resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} 820 | engines: {node: '>= 12.0.0'} 821 | cpu: [arm64] 822 | os: [darwin] 823 | 824 | lightningcss-darwin-x64@1.29.2: 825 | resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} 826 | engines: {node: '>= 12.0.0'} 827 | cpu: [x64] 828 | os: [darwin] 829 | 830 | lightningcss-freebsd-x64@1.29.2: 831 | resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} 832 | engines: {node: '>= 12.0.0'} 833 | cpu: [x64] 834 | os: [freebsd] 835 | 836 | lightningcss-linux-arm-gnueabihf@1.29.2: 837 | resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} 838 | engines: {node: '>= 12.0.0'} 839 | cpu: [arm] 840 | os: [linux] 841 | 842 | lightningcss-linux-arm64-gnu@1.29.2: 843 | resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} 844 | engines: {node: '>= 12.0.0'} 845 | cpu: [arm64] 846 | os: [linux] 847 | 848 | lightningcss-linux-arm64-musl@1.29.2: 849 | resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} 850 | engines: {node: '>= 12.0.0'} 851 | cpu: [arm64] 852 | os: [linux] 853 | 854 | lightningcss-linux-x64-gnu@1.29.2: 855 | resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} 856 | engines: {node: '>= 12.0.0'} 857 | cpu: [x64] 858 | os: [linux] 859 | 860 | lightningcss-linux-x64-musl@1.29.2: 861 | resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} 862 | engines: {node: '>= 12.0.0'} 863 | cpu: [x64] 864 | os: [linux] 865 | 866 | lightningcss-win32-arm64-msvc@1.29.2: 867 | resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} 868 | engines: {node: '>= 12.0.0'} 869 | cpu: [arm64] 870 | os: [win32] 871 | 872 | lightningcss-win32-x64-msvc@1.29.2: 873 | resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} 874 | engines: {node: '>= 12.0.0'} 875 | cpu: [x64] 876 | os: [win32] 877 | 878 | lightningcss@1.29.2: 879 | resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} 880 | engines: {node: '>= 12.0.0'} 881 | 882 | linkify-it@5.0.0: 883 | resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} 884 | 885 | locate-path@5.0.0: 886 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 887 | engines: {node: '>=8'} 888 | 889 | lodash.castarray@4.4.0: 890 | resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} 891 | 892 | lodash.isplainobject@4.0.6: 893 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 894 | 895 | lodash.merge@4.6.2: 896 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 897 | 898 | magic-string@0.30.17: 899 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 900 | 901 | make-dir@3.1.0: 902 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 903 | engines: {node: '>=8'} 904 | 905 | markdown-it@14.1.0: 906 | resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} 907 | hasBin: true 908 | 909 | mdurl@2.0.0: 910 | resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} 911 | 912 | merge2@1.4.1: 913 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 914 | engines: {node: '>= 8'} 915 | 916 | micromatch@4.0.8: 917 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 918 | engines: {node: '>=8.6'} 919 | 920 | minimatch@9.0.5: 921 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 922 | engines: {node: '>=16 || 14 >=14.17'} 923 | 924 | ms@2.1.3: 925 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 926 | 927 | muggle-string@0.4.1: 928 | resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} 929 | 930 | nanoid@3.3.11: 931 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 932 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 933 | hasBin: true 934 | 935 | orderedmap@2.1.1: 936 | resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} 937 | 938 | p-limit@2.3.0: 939 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 940 | engines: {node: '>=6'} 941 | 942 | p-locate@4.1.0: 943 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 944 | engines: {node: '>=8'} 945 | 946 | p-try@2.2.0: 947 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 948 | engines: {node: '>=6'} 949 | 950 | path-browserify@1.0.1: 951 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 952 | 953 | path-exists@4.0.0: 954 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 955 | engines: {node: '>=8'} 956 | 957 | path-type@4.0.0: 958 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 959 | engines: {node: '>=8'} 960 | 961 | picocolors@1.1.1: 962 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 963 | 964 | picomatch@2.3.1: 965 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 966 | engines: {node: '>=8.6'} 967 | 968 | pkg-dir@4.2.0: 969 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 970 | engines: {node: '>=8'} 971 | 972 | postcss-selector-parser@6.0.10: 973 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 974 | engines: {node: '>=4'} 975 | 976 | postcss@8.5.3: 977 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 978 | engines: {node: ^10 || ^12 || >=14} 979 | 980 | prettier-plugin-tailwindcss@0.6.11: 981 | resolution: {integrity: sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==} 982 | engines: {node: '>=14.21.3'} 983 | peerDependencies: 984 | '@ianvs/prettier-plugin-sort-imports': '*' 985 | '@prettier/plugin-pug': '*' 986 | '@shopify/prettier-plugin-liquid': '*' 987 | '@trivago/prettier-plugin-sort-imports': '*' 988 | '@zackad/prettier-plugin-twig': '*' 989 | prettier: ^3.0 990 | prettier-plugin-astro: '*' 991 | prettier-plugin-css-order: '*' 992 | prettier-plugin-import-sort: '*' 993 | prettier-plugin-jsdoc: '*' 994 | prettier-plugin-marko: '*' 995 | prettier-plugin-multiline-arrays: '*' 996 | prettier-plugin-organize-attributes: '*' 997 | prettier-plugin-organize-imports: '*' 998 | prettier-plugin-sort-imports: '*' 999 | prettier-plugin-style-order: '*' 1000 | prettier-plugin-svelte: '*' 1001 | peerDependenciesMeta: 1002 | '@ianvs/prettier-plugin-sort-imports': 1003 | optional: true 1004 | '@prettier/plugin-pug': 1005 | optional: true 1006 | '@shopify/prettier-plugin-liquid': 1007 | optional: true 1008 | '@trivago/prettier-plugin-sort-imports': 1009 | optional: true 1010 | '@zackad/prettier-plugin-twig': 1011 | optional: true 1012 | prettier-plugin-astro: 1013 | optional: true 1014 | prettier-plugin-css-order: 1015 | optional: true 1016 | prettier-plugin-import-sort: 1017 | optional: true 1018 | prettier-plugin-jsdoc: 1019 | optional: true 1020 | prettier-plugin-marko: 1021 | optional: true 1022 | prettier-plugin-multiline-arrays: 1023 | optional: true 1024 | prettier-plugin-organize-attributes: 1025 | optional: true 1026 | prettier-plugin-organize-imports: 1027 | optional: true 1028 | prettier-plugin-sort-imports: 1029 | optional: true 1030 | prettier-plugin-style-order: 1031 | optional: true 1032 | prettier-plugin-svelte: 1033 | optional: true 1034 | 1035 | prettier@3.5.3: 1036 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 1037 | engines: {node: '>=14'} 1038 | hasBin: true 1039 | 1040 | prosemirror-changeset@2.2.1: 1041 | resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==} 1042 | 1043 | prosemirror-collab@1.3.1: 1044 | resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} 1045 | 1046 | prosemirror-commands@1.7.0: 1047 | resolution: {integrity: sha512-6toodS4R/Aah5pdsrIwnTYPEjW70SlO5a66oo5Kk+CIrgJz3ukOoS+FYDGqvQlAX5PxoGWDX1oD++tn5X3pyRA==} 1048 | 1049 | prosemirror-dropcursor@1.8.1: 1050 | resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==} 1051 | 1052 | prosemirror-gapcursor@1.3.2: 1053 | resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} 1054 | 1055 | prosemirror-history@1.4.1: 1056 | resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==} 1057 | 1058 | prosemirror-inputrules@1.5.0: 1059 | resolution: {integrity: sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==} 1060 | 1061 | prosemirror-keymap@1.2.2: 1062 | resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==} 1063 | 1064 | prosemirror-markdown@1.13.2: 1065 | resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==} 1066 | 1067 | prosemirror-menu@1.2.4: 1068 | resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} 1069 | 1070 | prosemirror-model@1.25.0: 1071 | resolution: {integrity: sha512-/8XUmxWf0pkj2BmtqZHYJipTBMHIdVjuvFzMvEoxrtyGNmfvdhBiRwYt/eFwy2wA9DtBW3RLqvZnjurEkHaFCw==} 1072 | 1073 | prosemirror-schema-basic@1.2.4: 1074 | resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==} 1075 | 1076 | prosemirror-schema-list@1.5.1: 1077 | resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} 1078 | 1079 | prosemirror-state@1.4.3: 1080 | resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} 1081 | 1082 | prosemirror-tables@1.6.4: 1083 | resolution: {integrity: sha512-TkDY3Gw52gRFRfRn2f4wJv5WOgAOXLJA2CQJYIJ5+kdFbfj3acR4JUW6LX2e1hiEBiUwvEhzH5a3cZ5YSztpIA==} 1084 | 1085 | prosemirror-trailing-node@3.0.0: 1086 | resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} 1087 | peerDependencies: 1088 | prosemirror-model: ^1.22.1 1089 | prosemirror-state: ^1.4.2 1090 | prosemirror-view: ^1.33.8 1091 | 1092 | prosemirror-transform@1.10.3: 1093 | resolution: {integrity: sha512-Nhh/+1kZGRINbEHmVu39oynhcap4hWTs/BlU7NnxWj3+l0qi8I1mu67v6mMdEe/ltD8hHvU4FV6PHiCw2VSpMw==} 1094 | 1095 | prosemirror-view@1.39.1: 1096 | resolution: {integrity: sha512-GhLxH1xwnqa5VjhJ29LfcQITNDp+f1jzmMPXQfGW9oNrF0lfjPzKvV5y/bjIQkyKpwCX3Fp+GA4dBpMMk8g+ZQ==} 1097 | 1098 | punycode.js@2.3.1: 1099 | resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} 1100 | engines: {node: '>=6'} 1101 | 1102 | queue-microtask@1.2.3: 1103 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1104 | 1105 | reusify@1.1.0: 1106 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1107 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1108 | 1109 | rollup@4.39.0: 1110 | resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} 1111 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1112 | hasBin: true 1113 | 1114 | rope-sequence@1.3.4: 1115 | resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} 1116 | 1117 | run-parallel@1.2.0: 1118 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1119 | 1120 | semver@6.3.1: 1121 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1122 | hasBin: true 1123 | 1124 | slash@3.0.0: 1125 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1126 | engines: {node: '>=8'} 1127 | 1128 | source-map-js@1.2.1: 1129 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1130 | engines: {node: '>=0.10.0'} 1131 | 1132 | strip-outer@1.0.1: 1133 | resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} 1134 | engines: {node: '>=0.10.0'} 1135 | 1136 | striptags@3.2.0: 1137 | resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==} 1138 | 1139 | tailwindcss@4.1.3: 1140 | resolution: {integrity: sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==} 1141 | 1142 | tippy.js@6.3.7: 1143 | resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} 1144 | 1145 | to-regex-range@5.0.1: 1146 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1147 | engines: {node: '>=8.0'} 1148 | 1149 | trim-repeated@1.0.0: 1150 | resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} 1151 | engines: {node: '>=0.10.0'} 1152 | 1153 | typescript@5.8.3: 1154 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1155 | engines: {node: '>=14.17'} 1156 | hasBin: true 1157 | 1158 | uc.micro@2.1.0: 1159 | resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} 1160 | 1161 | undici-types@6.21.0: 1162 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1163 | 1164 | universalify@2.0.1: 1165 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 1166 | engines: {node: '>= 10.0.0'} 1167 | 1168 | upath@2.0.1: 1169 | resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} 1170 | engines: {node: '>=4'} 1171 | 1172 | util-deprecate@1.0.2: 1173 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1174 | 1175 | vite-plugin-vuetify@2.1.1: 1176 | resolution: {integrity: sha512-Pb7bKhQH8qPMzURmEGq2aIqCJkruFNsyf1NcrrtnjsOIkqJPMcBbiP0oJoO8/uAmyB5W/1JTbbUEsyXdMM0QHQ==} 1177 | engines: {node: ^18.0.0 || >=20.0.0} 1178 | peerDependencies: 1179 | vite: '>=5' 1180 | vue: ^3.0.0 1181 | vuetify: ^3.0.0 1182 | 1183 | vite@6.2.5: 1184 | resolution: {integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==} 1185 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1186 | hasBin: true 1187 | peerDependencies: 1188 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1189 | jiti: '>=1.21.0' 1190 | less: '*' 1191 | lightningcss: ^1.21.0 1192 | sass: '*' 1193 | sass-embedded: '*' 1194 | stylus: '*' 1195 | sugarss: '*' 1196 | terser: ^5.16.0 1197 | tsx: ^4.8.1 1198 | yaml: ^2.4.2 1199 | peerDependenciesMeta: 1200 | '@types/node': 1201 | optional: true 1202 | jiti: 1203 | optional: true 1204 | less: 1205 | optional: true 1206 | lightningcss: 1207 | optional: true 1208 | sass: 1209 | optional: true 1210 | sass-embedded: 1211 | optional: true 1212 | stylus: 1213 | optional: true 1214 | sugarss: 1215 | optional: true 1216 | terser: 1217 | optional: true 1218 | tsx: 1219 | optional: true 1220 | yaml: 1221 | optional: true 1222 | 1223 | vscode-uri@3.1.0: 1224 | resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} 1225 | 1226 | vue-shadow-dom@4.2.0: 1227 | resolution: {integrity: sha512-lguI064rT2HT/dxqSmXtz860KOvCq+W3nU1jMqroTmX3K1H46q22BMR4emh/Ld3ozy35XJKOaNGcr6mkJ/t/yg==} 1228 | 1229 | vue-tsc@2.2.8: 1230 | resolution: {integrity: sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==} 1231 | hasBin: true 1232 | peerDependencies: 1233 | typescript: '>=5.0.0' 1234 | 1235 | vue@3.5.13: 1236 | resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} 1237 | peerDependencies: 1238 | typescript: '*' 1239 | peerDependenciesMeta: 1240 | typescript: 1241 | optional: true 1242 | 1243 | vuetify@3.8.0: 1244 | resolution: {integrity: sha512-ROC0Xq2G/25ZyUpQMhaynMyXZBJY1WbOGlqOB810yubp8hfY8RlrOw+mzXJonOq6jylCY32muQ9xiJF1JPTLVA==} 1245 | engines: {node: ^12.20 || >=14.13} 1246 | peerDependencies: 1247 | typescript: '>=4.7' 1248 | vite-plugin-vuetify: '>=2.1.0' 1249 | vue: ^3.5.0 1250 | webpack-plugin-vuetify: '>=3.1.0' 1251 | peerDependenciesMeta: 1252 | typescript: 1253 | optional: true 1254 | vite-plugin-vuetify: 1255 | optional: true 1256 | webpack-plugin-vuetify: 1257 | optional: true 1258 | 1259 | w3c-keyname@2.2.8: 1260 | resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} 1261 | 1262 | snapshots: 1263 | 1264 | '@babel/helper-string-parser@7.25.9': {} 1265 | 1266 | '@babel/helper-validator-identifier@7.25.9': {} 1267 | 1268 | '@babel/parser@7.27.0': 1269 | dependencies: 1270 | '@babel/types': 7.27.0 1271 | 1272 | '@babel/types@7.27.0': 1273 | dependencies: 1274 | '@babel/helper-string-parser': 7.25.9 1275 | '@babel/helper-validator-identifier': 7.25.9 1276 | 1277 | '@esbuild/aix-ppc64@0.25.2': 1278 | optional: true 1279 | 1280 | '@esbuild/android-arm64@0.25.2': 1281 | optional: true 1282 | 1283 | '@esbuild/android-arm@0.25.2': 1284 | optional: true 1285 | 1286 | '@esbuild/android-x64@0.25.2': 1287 | optional: true 1288 | 1289 | '@esbuild/darwin-arm64@0.25.2': 1290 | optional: true 1291 | 1292 | '@esbuild/darwin-x64@0.25.2': 1293 | optional: true 1294 | 1295 | '@esbuild/freebsd-arm64@0.25.2': 1296 | optional: true 1297 | 1298 | '@esbuild/freebsd-x64@0.25.2': 1299 | optional: true 1300 | 1301 | '@esbuild/linux-arm64@0.25.2': 1302 | optional: true 1303 | 1304 | '@esbuild/linux-arm@0.25.2': 1305 | optional: true 1306 | 1307 | '@esbuild/linux-ia32@0.25.2': 1308 | optional: true 1309 | 1310 | '@esbuild/linux-loong64@0.25.2': 1311 | optional: true 1312 | 1313 | '@esbuild/linux-mips64el@0.25.2': 1314 | optional: true 1315 | 1316 | '@esbuild/linux-ppc64@0.25.2': 1317 | optional: true 1318 | 1319 | '@esbuild/linux-riscv64@0.25.2': 1320 | optional: true 1321 | 1322 | '@esbuild/linux-s390x@0.25.2': 1323 | optional: true 1324 | 1325 | '@esbuild/linux-x64@0.25.2': 1326 | optional: true 1327 | 1328 | '@esbuild/netbsd-arm64@0.25.2': 1329 | optional: true 1330 | 1331 | '@esbuild/netbsd-x64@0.25.2': 1332 | optional: true 1333 | 1334 | '@esbuild/openbsd-arm64@0.25.2': 1335 | optional: true 1336 | 1337 | '@esbuild/openbsd-x64@0.25.2': 1338 | optional: true 1339 | 1340 | '@esbuild/sunos-x64@0.25.2': 1341 | optional: true 1342 | 1343 | '@esbuild/win32-arm64@0.25.2': 1344 | optional: true 1345 | 1346 | '@esbuild/win32-ia32@0.25.2': 1347 | optional: true 1348 | 1349 | '@esbuild/win32-x64@0.25.2': 1350 | optional: true 1351 | 1352 | '@jridgewell/sourcemap-codec@1.5.0': {} 1353 | 1354 | '@mdi/js@7.4.47': {} 1355 | 1356 | '@nodelib/fs.scandir@2.1.5': 1357 | dependencies: 1358 | '@nodelib/fs.stat': 2.0.5 1359 | run-parallel: 1.2.0 1360 | 1361 | '@nodelib/fs.stat@2.0.5': {} 1362 | 1363 | '@nodelib/fs.walk@1.2.8': 1364 | dependencies: 1365 | '@nodelib/fs.scandir': 2.1.5 1366 | fastq: 1.19.1 1367 | 1368 | '@popperjs/core@2.11.8': {} 1369 | 1370 | '@remirror/core-constants@3.0.0': {} 1371 | 1372 | '@rollup/rollup-android-arm-eabi@4.39.0': 1373 | optional: true 1374 | 1375 | '@rollup/rollup-android-arm64@4.39.0': 1376 | optional: true 1377 | 1378 | '@rollup/rollup-darwin-arm64@4.39.0': 1379 | optional: true 1380 | 1381 | '@rollup/rollup-darwin-x64@4.39.0': 1382 | optional: true 1383 | 1384 | '@rollup/rollup-freebsd-arm64@4.39.0': 1385 | optional: true 1386 | 1387 | '@rollup/rollup-freebsd-x64@4.39.0': 1388 | optional: true 1389 | 1390 | '@rollup/rollup-linux-arm-gnueabihf@4.39.0': 1391 | optional: true 1392 | 1393 | '@rollup/rollup-linux-arm-musleabihf@4.39.0': 1394 | optional: true 1395 | 1396 | '@rollup/rollup-linux-arm64-gnu@4.39.0': 1397 | optional: true 1398 | 1399 | '@rollup/rollup-linux-arm64-musl@4.39.0': 1400 | optional: true 1401 | 1402 | '@rollup/rollup-linux-loongarch64-gnu@4.39.0': 1403 | optional: true 1404 | 1405 | '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': 1406 | optional: true 1407 | 1408 | '@rollup/rollup-linux-riscv64-gnu@4.39.0': 1409 | optional: true 1410 | 1411 | '@rollup/rollup-linux-riscv64-musl@4.39.0': 1412 | optional: true 1413 | 1414 | '@rollup/rollup-linux-s390x-gnu@4.39.0': 1415 | optional: true 1416 | 1417 | '@rollup/rollup-linux-x64-gnu@4.39.0': 1418 | optional: true 1419 | 1420 | '@rollup/rollup-linux-x64-musl@4.39.0': 1421 | optional: true 1422 | 1423 | '@rollup/rollup-win32-arm64-msvc@4.39.0': 1424 | optional: true 1425 | 1426 | '@rollup/rollup-win32-ia32-msvc@4.39.0': 1427 | optional: true 1428 | 1429 | '@rollup/rollup-win32-x64-msvc@4.39.0': 1430 | optional: true 1431 | 1432 | '@tailwindcss/typography@0.5.16(tailwindcss@4.1.3)': 1433 | dependencies: 1434 | lodash.castarray: 4.4.0 1435 | lodash.isplainobject: 4.0.6 1436 | lodash.merge: 4.6.2 1437 | postcss-selector-parser: 6.0.10 1438 | tailwindcss: 4.1.3 1439 | 1440 | '@tiptap/core@2.11.7(@tiptap/pm@2.11.7)': 1441 | dependencies: 1442 | '@tiptap/pm': 2.11.7 1443 | 1444 | '@tiptap/extension-blockquote@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1445 | dependencies: 1446 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1447 | 1448 | '@tiptap/extension-bold@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1449 | dependencies: 1450 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1451 | 1452 | '@tiptap/extension-bubble-menu@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': 1453 | dependencies: 1454 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1455 | '@tiptap/pm': 2.11.7 1456 | tippy.js: 6.3.7 1457 | 1458 | '@tiptap/extension-bullet-list@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1459 | dependencies: 1460 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1461 | 1462 | '@tiptap/extension-code-block@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': 1463 | dependencies: 1464 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1465 | '@tiptap/pm': 2.11.7 1466 | 1467 | '@tiptap/extension-code@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1468 | dependencies: 1469 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1470 | 1471 | '@tiptap/extension-document@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1472 | dependencies: 1473 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1474 | 1475 | '@tiptap/extension-dropcursor@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': 1476 | dependencies: 1477 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1478 | '@tiptap/pm': 2.11.7 1479 | 1480 | '@tiptap/extension-floating-menu@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': 1481 | dependencies: 1482 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1483 | '@tiptap/pm': 2.11.7 1484 | tippy.js: 6.3.7 1485 | 1486 | '@tiptap/extension-gapcursor@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': 1487 | dependencies: 1488 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1489 | '@tiptap/pm': 2.11.7 1490 | 1491 | '@tiptap/extension-hard-break@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1492 | dependencies: 1493 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1494 | 1495 | '@tiptap/extension-heading@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1496 | dependencies: 1497 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1498 | 1499 | '@tiptap/extension-history@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': 1500 | dependencies: 1501 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1502 | '@tiptap/pm': 2.11.7 1503 | 1504 | '@tiptap/extension-horizontal-rule@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': 1505 | dependencies: 1506 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1507 | '@tiptap/pm': 2.11.7 1508 | 1509 | '@tiptap/extension-italic@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1510 | dependencies: 1511 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1512 | 1513 | '@tiptap/extension-list-item@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1514 | dependencies: 1515 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1516 | 1517 | '@tiptap/extension-ordered-list@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1518 | dependencies: 1519 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1520 | 1521 | '@tiptap/extension-paragraph@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1522 | dependencies: 1523 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1524 | 1525 | '@tiptap/extension-strike@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1526 | dependencies: 1527 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1528 | 1529 | '@tiptap/extension-text-align@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1530 | dependencies: 1531 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1532 | 1533 | '@tiptap/extension-text-style@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1534 | dependencies: 1535 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1536 | 1537 | '@tiptap/extension-text@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1538 | dependencies: 1539 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1540 | 1541 | '@tiptap/extension-underline@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': 1542 | dependencies: 1543 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1544 | 1545 | '@tiptap/pm@2.11.7': 1546 | dependencies: 1547 | prosemirror-changeset: 2.2.1 1548 | prosemirror-collab: 1.3.1 1549 | prosemirror-commands: 1.7.0 1550 | prosemirror-dropcursor: 1.8.1 1551 | prosemirror-gapcursor: 1.3.2 1552 | prosemirror-history: 1.4.1 1553 | prosemirror-inputrules: 1.5.0 1554 | prosemirror-keymap: 1.2.2 1555 | prosemirror-markdown: 1.13.2 1556 | prosemirror-menu: 1.2.4 1557 | prosemirror-model: 1.25.0 1558 | prosemirror-schema-basic: 1.2.4 1559 | prosemirror-schema-list: 1.5.1 1560 | prosemirror-state: 1.4.3 1561 | prosemirror-tables: 1.6.4 1562 | prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.0)(prosemirror-state@1.4.3)(prosemirror-view@1.39.1) 1563 | prosemirror-transform: 1.10.3 1564 | prosemirror-view: 1.39.1 1565 | 1566 | '@tiptap/starter-kit@2.11.7': 1567 | dependencies: 1568 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1569 | '@tiptap/extension-blockquote': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1570 | '@tiptap/extension-bold': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1571 | '@tiptap/extension-bullet-list': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1572 | '@tiptap/extension-code': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1573 | '@tiptap/extension-code-block': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) 1574 | '@tiptap/extension-document': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1575 | '@tiptap/extension-dropcursor': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) 1576 | '@tiptap/extension-gapcursor': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) 1577 | '@tiptap/extension-hard-break': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1578 | '@tiptap/extension-heading': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1579 | '@tiptap/extension-history': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) 1580 | '@tiptap/extension-horizontal-rule': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) 1581 | '@tiptap/extension-italic': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1582 | '@tiptap/extension-list-item': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1583 | '@tiptap/extension-ordered-list': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1584 | '@tiptap/extension-paragraph': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1585 | '@tiptap/extension-strike': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1586 | '@tiptap/extension-text': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1587 | '@tiptap/extension-text-style': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) 1588 | '@tiptap/pm': 2.11.7 1589 | 1590 | '@tiptap/vue-3@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(vue@3.5.13(typescript@5.8.3))': 1591 | dependencies: 1592 | '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) 1593 | '@tiptap/extension-bubble-menu': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) 1594 | '@tiptap/extension-floating-menu': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) 1595 | '@tiptap/pm': 2.11.7 1596 | vue: 3.5.13(typescript@5.8.3) 1597 | 1598 | '@types/estree@1.0.7': {} 1599 | 1600 | '@types/linkify-it@5.0.0': {} 1601 | 1602 | '@types/markdown-it@14.1.2': 1603 | dependencies: 1604 | '@types/linkify-it': 5.0.0 1605 | '@types/mdurl': 2.0.0 1606 | 1607 | '@types/mdurl@2.0.0': {} 1608 | 1609 | '@types/node@22.14.0': 1610 | dependencies: 1611 | undici-types: 6.21.0 1612 | 1613 | '@types/web-bluetooth@0.0.21': {} 1614 | 1615 | '@vitejs/plugin-vue@5.2.3(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2))(vue@3.5.13(typescript@5.8.3))': 1616 | dependencies: 1617 | vite: 6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2) 1618 | vue: 3.5.13(typescript@5.8.3) 1619 | 1620 | '@volar/language-core@2.4.12': 1621 | dependencies: 1622 | '@volar/source-map': 2.4.12 1623 | 1624 | '@volar/source-map@2.4.12': {} 1625 | 1626 | '@volar/typescript@2.4.12': 1627 | dependencies: 1628 | '@volar/language-core': 2.4.12 1629 | path-browserify: 1.0.1 1630 | vscode-uri: 3.1.0 1631 | 1632 | '@vue/compiler-core@3.5.13': 1633 | dependencies: 1634 | '@babel/parser': 7.27.0 1635 | '@vue/shared': 3.5.13 1636 | entities: 4.5.0 1637 | estree-walker: 2.0.2 1638 | source-map-js: 1.2.1 1639 | 1640 | '@vue/compiler-dom@3.5.13': 1641 | dependencies: 1642 | '@vue/compiler-core': 3.5.13 1643 | '@vue/shared': 3.5.13 1644 | 1645 | '@vue/compiler-sfc@3.5.13': 1646 | dependencies: 1647 | '@babel/parser': 7.27.0 1648 | '@vue/compiler-core': 3.5.13 1649 | '@vue/compiler-dom': 3.5.13 1650 | '@vue/compiler-ssr': 3.5.13 1651 | '@vue/shared': 3.5.13 1652 | estree-walker: 2.0.2 1653 | magic-string: 0.30.17 1654 | postcss: 8.5.3 1655 | source-map-js: 1.2.1 1656 | 1657 | '@vue/compiler-ssr@3.5.13': 1658 | dependencies: 1659 | '@vue/compiler-dom': 3.5.13 1660 | '@vue/shared': 3.5.13 1661 | 1662 | '@vue/compiler-vue2@2.7.16': 1663 | dependencies: 1664 | de-indent: 1.0.2 1665 | he: 1.2.0 1666 | 1667 | '@vue/language-core@2.2.8(typescript@5.8.3)': 1668 | dependencies: 1669 | '@volar/language-core': 2.4.12 1670 | '@vue/compiler-dom': 3.5.13 1671 | '@vue/compiler-vue2': 2.7.16 1672 | '@vue/shared': 3.5.13 1673 | alien-signals: 1.0.13 1674 | minimatch: 9.0.5 1675 | muggle-string: 0.4.1 1676 | path-browserify: 1.0.1 1677 | optionalDependencies: 1678 | typescript: 5.8.3 1679 | 1680 | '@vue/reactivity@3.5.13': 1681 | dependencies: 1682 | '@vue/shared': 3.5.13 1683 | 1684 | '@vue/runtime-core@3.5.13': 1685 | dependencies: 1686 | '@vue/reactivity': 3.5.13 1687 | '@vue/shared': 3.5.13 1688 | 1689 | '@vue/runtime-dom@3.5.13': 1690 | dependencies: 1691 | '@vue/reactivity': 3.5.13 1692 | '@vue/runtime-core': 3.5.13 1693 | '@vue/shared': 3.5.13 1694 | csstype: 3.1.3 1695 | 1696 | '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))': 1697 | dependencies: 1698 | '@vue/compiler-ssr': 3.5.13 1699 | '@vue/shared': 3.5.13 1700 | vue: 3.5.13(typescript@5.8.3) 1701 | 1702 | '@vue/shared@3.5.13': {} 1703 | 1704 | '@vue/tsconfig@0.7.0(typescript@5.8.3)(vue@3.5.13(typescript@5.8.3))': 1705 | optionalDependencies: 1706 | typescript: 5.8.3 1707 | vue: 3.5.13(typescript@5.8.3) 1708 | 1709 | '@vuetify/loader-shared@2.1.0(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.0)': 1710 | dependencies: 1711 | upath: 2.0.1 1712 | vue: 3.5.13(typescript@5.8.3) 1713 | vuetify: 3.8.0(typescript@5.8.3)(vite-plugin-vuetify@2.1.1)(vue@3.5.13(typescript@5.8.3)) 1714 | 1715 | '@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.3))': 1716 | dependencies: 1717 | '@types/web-bluetooth': 0.0.21 1718 | '@vueuse/metadata': 13.0.0 1719 | '@vueuse/shared': 13.0.0(vue@3.5.13(typescript@5.8.3)) 1720 | vue: 3.5.13(typescript@5.8.3) 1721 | 1722 | '@vueuse/metadata@13.0.0': {} 1723 | 1724 | '@vueuse/shared@13.0.0(vue@3.5.13(typescript@5.8.3))': 1725 | dependencies: 1726 | vue: 3.5.13(typescript@5.8.3) 1727 | 1728 | alien-signals@1.0.13: {} 1729 | 1730 | argparse@2.0.1: {} 1731 | 1732 | array-union@2.1.0: {} 1733 | 1734 | async@3.2.6: {} 1735 | 1736 | balanced-match@1.0.2: {} 1737 | 1738 | brace-expansion@2.0.1: 1739 | dependencies: 1740 | balanced-match: 1.0.2 1741 | 1742 | braces@3.0.3: 1743 | dependencies: 1744 | fill-range: 7.1.1 1745 | 1746 | commander@13.1.0: {} 1747 | 1748 | commondir@1.0.1: {} 1749 | 1750 | crelt@1.0.6: {} 1751 | 1752 | cssesc@3.0.0: {} 1753 | 1754 | csstype@3.1.3: {} 1755 | 1756 | de-indent@1.0.2: {} 1757 | 1758 | debug@4.4.0: 1759 | dependencies: 1760 | ms: 2.1.3 1761 | 1762 | detect-libc@2.0.3: 1763 | optional: true 1764 | 1765 | dir-glob@3.0.1: 1766 | dependencies: 1767 | path-type: 4.0.0 1768 | 1769 | email-addresses@5.0.0: {} 1770 | 1771 | entities@4.5.0: {} 1772 | 1773 | esbuild@0.25.2: 1774 | optionalDependencies: 1775 | '@esbuild/aix-ppc64': 0.25.2 1776 | '@esbuild/android-arm': 0.25.2 1777 | '@esbuild/android-arm64': 0.25.2 1778 | '@esbuild/android-x64': 0.25.2 1779 | '@esbuild/darwin-arm64': 0.25.2 1780 | '@esbuild/darwin-x64': 0.25.2 1781 | '@esbuild/freebsd-arm64': 0.25.2 1782 | '@esbuild/freebsd-x64': 0.25.2 1783 | '@esbuild/linux-arm': 0.25.2 1784 | '@esbuild/linux-arm64': 0.25.2 1785 | '@esbuild/linux-ia32': 0.25.2 1786 | '@esbuild/linux-loong64': 0.25.2 1787 | '@esbuild/linux-mips64el': 0.25.2 1788 | '@esbuild/linux-ppc64': 0.25.2 1789 | '@esbuild/linux-riscv64': 0.25.2 1790 | '@esbuild/linux-s390x': 0.25.2 1791 | '@esbuild/linux-x64': 0.25.2 1792 | '@esbuild/netbsd-arm64': 0.25.2 1793 | '@esbuild/netbsd-x64': 0.25.2 1794 | '@esbuild/openbsd-arm64': 0.25.2 1795 | '@esbuild/openbsd-x64': 0.25.2 1796 | '@esbuild/sunos-x64': 0.25.2 1797 | '@esbuild/win32-arm64': 0.25.2 1798 | '@esbuild/win32-ia32': 0.25.2 1799 | '@esbuild/win32-x64': 0.25.2 1800 | 1801 | escape-string-regexp@1.0.5: {} 1802 | 1803 | escape-string-regexp@4.0.0: {} 1804 | 1805 | estree-walker@2.0.2: {} 1806 | 1807 | fast-glob@3.3.3: 1808 | dependencies: 1809 | '@nodelib/fs.stat': 2.0.5 1810 | '@nodelib/fs.walk': 1.2.8 1811 | glob-parent: 5.1.2 1812 | merge2: 1.4.1 1813 | micromatch: 4.0.8 1814 | 1815 | fastq@1.19.1: 1816 | dependencies: 1817 | reusify: 1.1.0 1818 | 1819 | filename-reserved-regex@2.0.0: {} 1820 | 1821 | filenamify@4.3.0: 1822 | dependencies: 1823 | filename-reserved-regex: 2.0.0 1824 | strip-outer: 1.0.1 1825 | trim-repeated: 1.0.0 1826 | 1827 | fill-range@7.1.1: 1828 | dependencies: 1829 | to-regex-range: 5.0.1 1830 | 1831 | find-cache-dir@3.3.2: 1832 | dependencies: 1833 | commondir: 1.0.1 1834 | make-dir: 3.1.0 1835 | pkg-dir: 4.2.0 1836 | 1837 | find-up@4.1.0: 1838 | dependencies: 1839 | locate-path: 5.0.0 1840 | path-exists: 4.0.0 1841 | 1842 | fs-extra@11.3.0: 1843 | dependencies: 1844 | graceful-fs: 4.2.11 1845 | jsonfile: 6.1.0 1846 | universalify: 2.0.1 1847 | 1848 | fsevents@2.3.3: 1849 | optional: true 1850 | 1851 | gh-pages@6.3.0: 1852 | dependencies: 1853 | async: 3.2.6 1854 | commander: 13.1.0 1855 | email-addresses: 5.0.0 1856 | filenamify: 4.3.0 1857 | find-cache-dir: 3.3.2 1858 | fs-extra: 11.3.0 1859 | globby: 11.1.0 1860 | 1861 | glob-parent@5.1.2: 1862 | dependencies: 1863 | is-glob: 4.0.3 1864 | 1865 | globby@11.1.0: 1866 | dependencies: 1867 | array-union: 2.1.0 1868 | dir-glob: 3.0.1 1869 | fast-glob: 3.3.3 1870 | ignore: 5.3.2 1871 | merge2: 1.4.1 1872 | slash: 3.0.0 1873 | 1874 | graceful-fs@4.2.11: {} 1875 | 1876 | he@1.2.0: {} 1877 | 1878 | ignore@5.3.2: {} 1879 | 1880 | is-extglob@2.1.1: {} 1881 | 1882 | is-glob@4.0.3: 1883 | dependencies: 1884 | is-extglob: 2.1.1 1885 | 1886 | is-number@7.0.0: {} 1887 | 1888 | jiti@2.4.2: 1889 | optional: true 1890 | 1891 | jsonfile@6.1.0: 1892 | dependencies: 1893 | universalify: 2.0.1 1894 | optionalDependencies: 1895 | graceful-fs: 4.2.11 1896 | 1897 | lightningcss-darwin-arm64@1.29.2: 1898 | optional: true 1899 | 1900 | lightningcss-darwin-x64@1.29.2: 1901 | optional: true 1902 | 1903 | lightningcss-freebsd-x64@1.29.2: 1904 | optional: true 1905 | 1906 | lightningcss-linux-arm-gnueabihf@1.29.2: 1907 | optional: true 1908 | 1909 | lightningcss-linux-arm64-gnu@1.29.2: 1910 | optional: true 1911 | 1912 | lightningcss-linux-arm64-musl@1.29.2: 1913 | optional: true 1914 | 1915 | lightningcss-linux-x64-gnu@1.29.2: 1916 | optional: true 1917 | 1918 | lightningcss-linux-x64-musl@1.29.2: 1919 | optional: true 1920 | 1921 | lightningcss-win32-arm64-msvc@1.29.2: 1922 | optional: true 1923 | 1924 | lightningcss-win32-x64-msvc@1.29.2: 1925 | optional: true 1926 | 1927 | lightningcss@1.29.2: 1928 | dependencies: 1929 | detect-libc: 2.0.3 1930 | optionalDependencies: 1931 | lightningcss-darwin-arm64: 1.29.2 1932 | lightningcss-darwin-x64: 1.29.2 1933 | lightningcss-freebsd-x64: 1.29.2 1934 | lightningcss-linux-arm-gnueabihf: 1.29.2 1935 | lightningcss-linux-arm64-gnu: 1.29.2 1936 | lightningcss-linux-arm64-musl: 1.29.2 1937 | lightningcss-linux-x64-gnu: 1.29.2 1938 | lightningcss-linux-x64-musl: 1.29.2 1939 | lightningcss-win32-arm64-msvc: 1.29.2 1940 | lightningcss-win32-x64-msvc: 1.29.2 1941 | optional: true 1942 | 1943 | linkify-it@5.0.0: 1944 | dependencies: 1945 | uc.micro: 2.1.0 1946 | 1947 | locate-path@5.0.0: 1948 | dependencies: 1949 | p-locate: 4.1.0 1950 | 1951 | lodash.castarray@4.4.0: {} 1952 | 1953 | lodash.isplainobject@4.0.6: {} 1954 | 1955 | lodash.merge@4.6.2: {} 1956 | 1957 | magic-string@0.30.17: 1958 | dependencies: 1959 | '@jridgewell/sourcemap-codec': 1.5.0 1960 | 1961 | make-dir@3.1.0: 1962 | dependencies: 1963 | semver: 6.3.1 1964 | 1965 | markdown-it@14.1.0: 1966 | dependencies: 1967 | argparse: 2.0.1 1968 | entities: 4.5.0 1969 | linkify-it: 5.0.0 1970 | mdurl: 2.0.0 1971 | punycode.js: 2.3.1 1972 | uc.micro: 2.1.0 1973 | 1974 | mdurl@2.0.0: {} 1975 | 1976 | merge2@1.4.1: {} 1977 | 1978 | micromatch@4.0.8: 1979 | dependencies: 1980 | braces: 3.0.3 1981 | picomatch: 2.3.1 1982 | 1983 | minimatch@9.0.5: 1984 | dependencies: 1985 | brace-expansion: 2.0.1 1986 | 1987 | ms@2.1.3: {} 1988 | 1989 | muggle-string@0.4.1: {} 1990 | 1991 | nanoid@3.3.11: {} 1992 | 1993 | orderedmap@2.1.1: {} 1994 | 1995 | p-limit@2.3.0: 1996 | dependencies: 1997 | p-try: 2.2.0 1998 | 1999 | p-locate@4.1.0: 2000 | dependencies: 2001 | p-limit: 2.3.0 2002 | 2003 | p-try@2.2.0: {} 2004 | 2005 | path-browserify@1.0.1: {} 2006 | 2007 | path-exists@4.0.0: {} 2008 | 2009 | path-type@4.0.0: {} 2010 | 2011 | picocolors@1.1.1: {} 2012 | 2013 | picomatch@2.3.1: {} 2014 | 2015 | pkg-dir@4.2.0: 2016 | dependencies: 2017 | find-up: 4.1.0 2018 | 2019 | postcss-selector-parser@6.0.10: 2020 | dependencies: 2021 | cssesc: 3.0.0 2022 | util-deprecate: 1.0.2 2023 | 2024 | postcss@8.5.3: 2025 | dependencies: 2026 | nanoid: 3.3.11 2027 | picocolors: 1.1.1 2028 | source-map-js: 1.2.1 2029 | 2030 | prettier-plugin-tailwindcss@0.6.11(prettier@3.5.3): 2031 | dependencies: 2032 | prettier: 3.5.3 2033 | 2034 | prettier@3.5.3: {} 2035 | 2036 | prosemirror-changeset@2.2.1: 2037 | dependencies: 2038 | prosemirror-transform: 1.10.3 2039 | 2040 | prosemirror-collab@1.3.1: 2041 | dependencies: 2042 | prosemirror-state: 1.4.3 2043 | 2044 | prosemirror-commands@1.7.0: 2045 | dependencies: 2046 | prosemirror-model: 1.25.0 2047 | prosemirror-state: 1.4.3 2048 | prosemirror-transform: 1.10.3 2049 | 2050 | prosemirror-dropcursor@1.8.1: 2051 | dependencies: 2052 | prosemirror-state: 1.4.3 2053 | prosemirror-transform: 1.10.3 2054 | prosemirror-view: 1.39.1 2055 | 2056 | prosemirror-gapcursor@1.3.2: 2057 | dependencies: 2058 | prosemirror-keymap: 1.2.2 2059 | prosemirror-model: 1.25.0 2060 | prosemirror-state: 1.4.3 2061 | prosemirror-view: 1.39.1 2062 | 2063 | prosemirror-history@1.4.1: 2064 | dependencies: 2065 | prosemirror-state: 1.4.3 2066 | prosemirror-transform: 1.10.3 2067 | prosemirror-view: 1.39.1 2068 | rope-sequence: 1.3.4 2069 | 2070 | prosemirror-inputrules@1.5.0: 2071 | dependencies: 2072 | prosemirror-state: 1.4.3 2073 | prosemirror-transform: 1.10.3 2074 | 2075 | prosemirror-keymap@1.2.2: 2076 | dependencies: 2077 | prosemirror-state: 1.4.3 2078 | w3c-keyname: 2.2.8 2079 | 2080 | prosemirror-markdown@1.13.2: 2081 | dependencies: 2082 | '@types/markdown-it': 14.1.2 2083 | markdown-it: 14.1.0 2084 | prosemirror-model: 1.25.0 2085 | 2086 | prosemirror-menu@1.2.4: 2087 | dependencies: 2088 | crelt: 1.0.6 2089 | prosemirror-commands: 1.7.0 2090 | prosemirror-history: 1.4.1 2091 | prosemirror-state: 1.4.3 2092 | 2093 | prosemirror-model@1.25.0: 2094 | dependencies: 2095 | orderedmap: 2.1.1 2096 | 2097 | prosemirror-schema-basic@1.2.4: 2098 | dependencies: 2099 | prosemirror-model: 1.25.0 2100 | 2101 | prosemirror-schema-list@1.5.1: 2102 | dependencies: 2103 | prosemirror-model: 1.25.0 2104 | prosemirror-state: 1.4.3 2105 | prosemirror-transform: 1.10.3 2106 | 2107 | prosemirror-state@1.4.3: 2108 | dependencies: 2109 | prosemirror-model: 1.25.0 2110 | prosemirror-transform: 1.10.3 2111 | prosemirror-view: 1.39.1 2112 | 2113 | prosemirror-tables@1.6.4: 2114 | dependencies: 2115 | prosemirror-keymap: 1.2.2 2116 | prosemirror-model: 1.25.0 2117 | prosemirror-state: 1.4.3 2118 | prosemirror-transform: 1.10.3 2119 | prosemirror-view: 1.39.1 2120 | 2121 | prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.0)(prosemirror-state@1.4.3)(prosemirror-view@1.39.1): 2122 | dependencies: 2123 | '@remirror/core-constants': 3.0.0 2124 | escape-string-regexp: 4.0.0 2125 | prosemirror-model: 1.25.0 2126 | prosemirror-state: 1.4.3 2127 | prosemirror-view: 1.39.1 2128 | 2129 | prosemirror-transform@1.10.3: 2130 | dependencies: 2131 | prosemirror-model: 1.25.0 2132 | 2133 | prosemirror-view@1.39.1: 2134 | dependencies: 2135 | prosemirror-model: 1.25.0 2136 | prosemirror-state: 1.4.3 2137 | prosemirror-transform: 1.10.3 2138 | 2139 | punycode.js@2.3.1: {} 2140 | 2141 | queue-microtask@1.2.3: {} 2142 | 2143 | reusify@1.1.0: {} 2144 | 2145 | rollup@4.39.0: 2146 | dependencies: 2147 | '@types/estree': 1.0.7 2148 | optionalDependencies: 2149 | '@rollup/rollup-android-arm-eabi': 4.39.0 2150 | '@rollup/rollup-android-arm64': 4.39.0 2151 | '@rollup/rollup-darwin-arm64': 4.39.0 2152 | '@rollup/rollup-darwin-x64': 4.39.0 2153 | '@rollup/rollup-freebsd-arm64': 4.39.0 2154 | '@rollup/rollup-freebsd-x64': 4.39.0 2155 | '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 2156 | '@rollup/rollup-linux-arm-musleabihf': 4.39.0 2157 | '@rollup/rollup-linux-arm64-gnu': 4.39.0 2158 | '@rollup/rollup-linux-arm64-musl': 4.39.0 2159 | '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 2160 | '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 2161 | '@rollup/rollup-linux-riscv64-gnu': 4.39.0 2162 | '@rollup/rollup-linux-riscv64-musl': 4.39.0 2163 | '@rollup/rollup-linux-s390x-gnu': 4.39.0 2164 | '@rollup/rollup-linux-x64-gnu': 4.39.0 2165 | '@rollup/rollup-linux-x64-musl': 4.39.0 2166 | '@rollup/rollup-win32-arm64-msvc': 4.39.0 2167 | '@rollup/rollup-win32-ia32-msvc': 4.39.0 2168 | '@rollup/rollup-win32-x64-msvc': 4.39.0 2169 | fsevents: 2.3.3 2170 | 2171 | rope-sequence@1.3.4: {} 2172 | 2173 | run-parallel@1.2.0: 2174 | dependencies: 2175 | queue-microtask: 1.2.3 2176 | 2177 | semver@6.3.1: {} 2178 | 2179 | slash@3.0.0: {} 2180 | 2181 | source-map-js@1.2.1: {} 2182 | 2183 | strip-outer@1.0.1: 2184 | dependencies: 2185 | escape-string-regexp: 1.0.5 2186 | 2187 | striptags@3.2.0: {} 2188 | 2189 | tailwindcss@4.1.3: {} 2190 | 2191 | tippy.js@6.3.7: 2192 | dependencies: 2193 | '@popperjs/core': 2.11.8 2194 | 2195 | to-regex-range@5.0.1: 2196 | dependencies: 2197 | is-number: 7.0.0 2198 | 2199 | trim-repeated@1.0.0: 2200 | dependencies: 2201 | escape-string-regexp: 1.0.5 2202 | 2203 | typescript@5.8.3: {} 2204 | 2205 | uc.micro@2.1.0: {} 2206 | 2207 | undici-types@6.21.0: {} 2208 | 2209 | universalify@2.0.1: {} 2210 | 2211 | upath@2.0.1: {} 2212 | 2213 | util-deprecate@1.0.2: {} 2214 | 2215 | vite-plugin-vuetify@2.1.1(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2))(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.0): 2216 | dependencies: 2217 | '@vuetify/loader-shared': 2.1.0(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.0) 2218 | debug: 4.4.0 2219 | upath: 2.0.1 2220 | vite: 6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2) 2221 | vue: 3.5.13(typescript@5.8.3) 2222 | vuetify: 3.8.0(typescript@5.8.3)(vite-plugin-vuetify@2.1.1)(vue@3.5.13(typescript@5.8.3)) 2223 | transitivePeerDependencies: 2224 | - supports-color 2225 | 2226 | vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2): 2227 | dependencies: 2228 | esbuild: 0.25.2 2229 | postcss: 8.5.3 2230 | rollup: 4.39.0 2231 | optionalDependencies: 2232 | '@types/node': 22.14.0 2233 | fsevents: 2.3.3 2234 | jiti: 2.4.2 2235 | lightningcss: 1.29.2 2236 | 2237 | vscode-uri@3.1.0: {} 2238 | 2239 | vue-shadow-dom@4.2.0: {} 2240 | 2241 | vue-tsc@2.2.8(typescript@5.8.3): 2242 | dependencies: 2243 | '@volar/typescript': 2.4.12 2244 | '@vue/language-core': 2.2.8(typescript@5.8.3) 2245 | typescript: 5.8.3 2246 | 2247 | vue@3.5.13(typescript@5.8.3): 2248 | dependencies: 2249 | '@vue/compiler-dom': 3.5.13 2250 | '@vue/compiler-sfc': 3.5.13 2251 | '@vue/runtime-dom': 3.5.13 2252 | '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3)) 2253 | '@vue/shared': 3.5.13 2254 | optionalDependencies: 2255 | typescript: 5.8.3 2256 | 2257 | vuetify@3.8.0(typescript@5.8.3)(vite-plugin-vuetify@2.1.1)(vue@3.5.13(typescript@5.8.3)): 2258 | dependencies: 2259 | vue: 3.5.13(typescript@5.8.3) 2260 | optionalDependencies: 2261 | typescript: 5.8.3 2262 | vite-plugin-vuetify: 2.1.1(vite@6.2.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2))(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.0) 2263 | 2264 | w3c-keyname@2.2.8: {} 2265 | --------------------------------------------------------------------------------