From 9a8c91d052e67eefaf96ba1b8ed8d7a5dc947fc7 Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Sat, 28 Jun 2025 17:40:35 +0100 Subject: [PATCH 1/3] wip: limn explorer rewrite to vue.js --- package.json | 1 + packages/limn-explorer/index.html | 49 +- packages/limn-explorer/package.json | 5 +- packages/limn-explorer/src/app/app.vue | 59 +++ packages/limn-explorer/src/app/editor.vue | 48 ++ packages/limn-explorer/src/app/preview.vue | 13 + packages/limn-explorer/src/app/sidebar.vue | 16 + packages/limn-explorer/src/demos/circle.ts | 15 + packages/limn-explorer/src/demos/index.ts | 18 + packages/limn-explorer/src/demos/intro.ts | 19 + packages/limn-explorer/src/demos/rectangle.ts | 7 + packages/limn-explorer/src/index.ts | 426 +++++++++--------- .../src/limnRenderer/limnRenderer.ts | 3 + packages/limn-explorer/src/sidebar/index.ts | 11 + packages/limn-explorer/src/style.css | 52 +++ packages/limn-explorer/vite.config.ts | 8 +- pnpm-lock.yaml | 24 + 17 files changed, 519 insertions(+), 255 deletions(-) create mode 100644 packages/limn-explorer/src/app/app.vue create mode 100644 packages/limn-explorer/src/app/editor.vue create mode 100644 packages/limn-explorer/src/app/preview.vue create mode 100644 packages/limn-explorer/src/app/sidebar.vue create mode 100644 packages/limn-explorer/src/demos/circle.ts create mode 100644 packages/limn-explorer/src/demos/index.ts create mode 100644 packages/limn-explorer/src/demos/intro.ts create mode 100644 packages/limn-explorer/src/demos/rectangle.ts create mode 100644 packages/limn-explorer/src/limnRenderer/limnRenderer.ts create mode 100644 packages/limn-explorer/src/sidebar/index.ts create mode 100644 packages/limn-explorer/src/style.css diff --git a/package.json b/package.json index 4562bc7..01ce51a 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "private": true, "scripts": { "limn-explorer-build": "cd packages/limn-explorer && pnpm build", + "explorer:dev": "cd packages/limn-explorer && pnpm dev", "build": "cd packages/limn && pnpm build", "ci:build-docs": "./build-docs.sh", "docs:build": "cd docs && pnpm run docs:build", diff --git a/packages/limn-explorer/index.html b/packages/limn-explorer/index.html index 16ae229..d2681b2 100644 --- a/packages/limn-explorer/index.html +++ b/packages/limn-explorer/index.html @@ -6,50 +6,17 @@ Limn Explorer - - -
+
+ diff --git a/packages/limn-explorer/package.json b/packages/limn-explorer/package.json index bdf550e..bd6dd1d 100644 --- a/packages/limn-explorer/package.json +++ b/packages/limn-explorer/package.json @@ -2,6 +2,7 @@ "name": "limn-explorer", "version": "1.0.0", "description": "", + "type": "module", "main": "index.js", "private": true, "scripts": { @@ -16,9 +17,11 @@ "dependencies": { "esbuild": "^0.25.5", "limn": "workspace:*", - "monaco-editor": "^0.52.2" + "monaco-editor": "^0.52.2", + "vue": "^3.5.14" }, "devDependencies": { + "@vitejs/plugin-vue": "^6.0.0", "vite": "^6.3.5", "vite-plugin-monaco-editor": "^1.1.0" } diff --git a/packages/limn-explorer/src/app/app.vue b/packages/limn-explorer/src/app/app.vue new file mode 100644 index 0000000..89c9bf1 --- /dev/null +++ b/packages/limn-explorer/src/app/app.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/app/editor.vue b/packages/limn-explorer/src/app/editor.vue new file mode 100644 index 0000000..edc19c0 --- /dev/null +++ b/packages/limn-explorer/src/app/editor.vue @@ -0,0 +1,48 @@ + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/app/preview.vue b/packages/limn-explorer/src/app/preview.vue new file mode 100644 index 0000000..c541170 --- /dev/null +++ b/packages/limn-explorer/src/app/preview.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/app/sidebar.vue b/packages/limn-explorer/src/app/sidebar.vue new file mode 100644 index 0000000..4c6c65f --- /dev/null +++ b/packages/limn-explorer/src/app/sidebar.vue @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/packages/limn-explorer/src/demos/circle.ts b/packages/limn-explorer/src/demos/circle.ts new file mode 100644 index 0000000..ba157b1 --- /dev/null +++ b/packages/limn-explorer/src/demos/circle.ts @@ -0,0 +1,15 @@ +export const circle = `import { Circle, GenerativeCollection } from 'limn' + + +const t = r.timer.infiniteForward(10000, i => i) + + const circles = new GenerativeCollection( + 50, + i => new Circle({ center: r.center, radius: i * 15 })) + .map((c, i) => c.segment(0.2).rotate(i * t.value)) + + r.add(circles, { + width: 10, + stroke: 'rgb(150 150 150)' + }) +` \ No newline at end of file diff --git a/packages/limn-explorer/src/demos/index.ts b/packages/limn-explorer/src/demos/index.ts new file mode 100644 index 0000000..afd7058 --- /dev/null +++ b/packages/limn-explorer/src/demos/index.ts @@ -0,0 +1,18 @@ +import { circle } from "./circle"; +import { intro } from "./intro"; +import { rectangle } from "./rectangle"; + +export const start = `${intro} +${circle}` + +export interface Demo { + name: string, + code: string +} + +export const demos = [ + { + name: 'Rectangle', + code: rectangle + } +] as Demo[] \ No newline at end of file diff --git a/packages/limn-explorer/src/demos/intro.ts b/packages/limn-explorer/src/demos/intro.ts new file mode 100644 index 0000000..6c684d8 --- /dev/null +++ b/packages/limn-explorer/src/demos/intro.ts @@ -0,0 +1,19 @@ +export const intro = `/** +Limn Explorer + +Here you can experiment with Limn library. +CTRL+Enter - execute code +CTRL+p - pause/resume timer + +On mac it's CMD instead of CTRL + +CTRL+\` - toggle code editor + +Variables: +r - LimnRenderer setup for the background canvas + + +by hypersphere. +Check out tutorials on https://hypersphere.blog +**/ +` \ No newline at end of file diff --git a/packages/limn-explorer/src/demos/rectangle.ts b/packages/limn-explorer/src/demos/rectangle.ts new file mode 100644 index 0000000..09e85b2 --- /dev/null +++ b/packages/limn-explorer/src/demos/rectangle.ts @@ -0,0 +1,7 @@ +export const rectangle = `import { Rectangle } from 'limn' + const rect = new Rectangle(c.center, c.center.add(100, 100)) + + r.add(rect, { + fill: 'red' + }) +` \ No newline at end of file diff --git a/packages/limn-explorer/src/index.ts b/packages/limn-explorer/src/index.ts index 7570e3e..16b6e02 100644 --- a/packages/limn-explorer/src/index.ts +++ b/packages/limn-explorer/src/index.ts @@ -1,213 +1,219 @@ -import * as monaco from 'monaco-editor' -import * as limnVars from 'limn' -import { LimnRenderer } from 'limn' -import limnTypes from 'limn/dist/index.d.ts?raw' - -const container = document.querySelector('#editor')! - -const code = `/** -Limn Explorer - -Here you can experiment with Limn library. -CTRL+Enter - execute code -CTRL+p - pause/resume timer - -On mac it's CMD instead of CTRL - -CTRL+\` - toggle code editor - -Variables: -r - LimnRenderer setup for the background canvas - - -by hypersphere. -Check out tutorials on https://hypersphere.blog -**/ -import { Circle, GenerativeCollection } from 'limn' - - -const t = r.timer.infiniteForward(10000, i => i) - - const circles = new GenerativeCollection( - 50, - i => new Circle({ center: r.center, radius: i * 15 })) - .map((c, i) => c.segment(0.2).rotate(i * t.value)) - - r.add(circles, { - width: 10, - stroke: 'rgb(150 150 150)' - }) -` - -function resolveImports(code: string) { - // Replace import statements with variable declarations - return code.replace( - /import\s*{\s*([^}]+)\s*}\s*from\s*['"]limn['"];?\s*/g, - (match, imports) => { - // Clean up imports and create destructuring - const cleanImports = imports.split(',').map(imp => imp.trim()).join(', ') - return `// Import resolved: ${match}\nconst { ${cleanImports} } = limnLibrary; // Get from passed objects\n` - } - ) -} - - -// monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ -// target: monaco.languages.typescript.ScriptTarget.ES2020, -// allowNonTsExtensions: true, -// moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs, -// module: monaco.languages.typescript.ModuleKind.ESNext, -// noEmit: true, -// esModuleInterop: true, -// allowJs: true, -// strict: true, -// skipLibCheck: true +import {createApp } from 'vue' +import App from './app/app.vue' + +createApp(App).mount(document.querySelector('#app')!) + +// import * as monaco from 'monaco-editor' +// import * as limnVars from 'limn' +// import { LimnRenderer } from 'limn' +// import './style.css' +// import limnTypes from 'limn/dist/index.d.ts?raw' + +// const container = document.querySelector('#editor')! + +// const code = `/** +// Limn Explorer + +// Here you can experiment with Limn library. +// CTRL+Enter - execute code +// CTRL+p - pause/resume timer + +// On mac it's CMD instead of CTRL + +// CTRL+\` - toggle code editor + +// Variables: +// r - LimnRenderer setup for the background canvas + + +// by hypersphere. +// Check out tutorials on https://hypersphere.blog +// **/ +// import { Circle, GenerativeCollection } from 'limn' + + +// const t = r.timer.infiniteForward(10000, i => i) + +// const circles = new GenerativeCollection( +// 50, +// i => new Circle({ center: r.center, radius: i * 15 })) +// .map((c, i) => c.segment(0.2).rotate(i * t.value)) + +// r.add(circles, { +// width: 10, +// stroke: 'rgb(150 150 150)' +// }) +// ` + +// function resolveImports(code: string) { +// // Replace import statements with variable declarations +// return code.replace( +// /import\s*{\s*([^}]+)\s*}\s*from\s*['"]limn['"];?\s*/g, +// (match, imports) => { +// // Clean up imports and create destructuring +// const cleanImports = imports.split(',').map(imp => imp.trim()).join(', ') +// return `// Import resolved: ${match}\nconst { ${cleanImports} } = limnLibrary; // Get from passed objects\n` +// } +// ) +// } + + +// // monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ +// // target: monaco.languages.typescript.ScriptTarget.ES2020, +// // allowNonTsExtensions: true, +// // moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs, +// // module: monaco.languages.typescript.ModuleKind.ESNext, +// // noEmit: true, +// // esModuleInterop: true, +// // allowJs: true, +// // strict: true, +// // skipLibCheck: true +// // }) + +// monaco.languages.typescript.typescriptDefaults.addExtraLib(limnTypes, +// 'file:///node_modules/limn/dist/index.d.ts' +// ) + +// monaco.languages.typescript.typescriptDefaults.addExtraLib(` +// declare global { +// const r: LimnRenderer; +// } + +// export {}; +// `, 'file:///globals.d.ts') + + + +// monaco.languages.registerCompletionItemProvider('typescript', { +// provideCompletionItems: () => { +// return { +// suggestions: [ +// { +// label: 'Limn Circle', +// kind: monaco.languages.CompletionItemKind.Snippet, +// documentation: 'Add basic circle in the middle', +// insertText: `r.add(\${1:r.center}, { +// radius: \${2:20}, +// color: '\${3:red}', +// })`, +// insertTextRules: +// monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet +// } +// ] +// }; +// } +// } as any); + + +// const editor = monaco.editor.create(container, { +// value: code, +// language: 'typescript', +// theme: 'vs-dark', +// automaticLayout: true, +// minimap: { enabled: false }, +// scrollBeyondLastLine: false, +// fontSize: 14, +// tabSize: 2, +// wordWrap: 'on', +// lineNumbers: 'on', +// suggest: { +// showWords: false, +// showKeywords: false, +// showEnums: false, +// showClasses: false, +// showConstructors: false +// } // }) -monaco.languages.typescript.typescriptDefaults.addExtraLib(limnTypes, - 'file:///node_modules/limn/dist/index.d.ts' -) - -monaco.languages.typescript.typescriptDefaults.addExtraLib(` -declare global { - const r: LimnRenderer; -} - -export {}; -`, 'file:///globals.d.ts') - - - -monaco.languages.registerCompletionItemProvider('typescript', { - provideCompletionItems: () => { - return { - suggestions: [ - { - label: 'Limn Circle', - kind: monaco.languages.CompletionItemKind.Snippet, - documentation: 'Add basic circle in the middle', - insertText: `r.add(\${1:r.center}, { - radius: \${2:20}, - color: '\${3:red}', -})`, -insertTextRules: - monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet - } - ] - }; - } -} as any); - - -const editor = monaco.editor.create(container, { - value: code, - language: 'typescript', - theme: 'vs-dark', - automaticLayout: true, - minimap: { enabled: false }, - scrollBeyondLastLine: false, - fontSize: 14, - tabSize: 2, - wordWrap: 'on', - lineNumbers: 'on', - suggest: { - showWords: false, - showKeywords: false, - showEnums: false, - showClasses: false, - showConstructors: false - } -}) - -editor.addAction({ - id: 'limn.run-code', - label: 'Limn: Run Code', - contextMenuGroupId: 'navigation', - contextMenuOrder: 0.90, - keybindings: [ - monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter - ], - run:function() { - console.log('run code') - // run code - runCode() - } -}) - -editor.addAction({ - id: 'limn.toggle-timer', - label: 'Limn: Toggle Timer', - contextMenuGroupId: 'navigation', - contextMenuOrder: 0.91, - keybindings: [ - monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyP - ], - run: () => { - if (renderer.timer.isRunning) { - renderer.timer.pause() - } else { - renderer.timer.start() - } - } -}) - -editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyK, () => { - editor.trigger("", "editor.action.quickCommand", ""); // Opens the quickcommand - const input = document.querySelector(".quick-input-box .input")!; // Gets the quickcommand input - input.value = "> Limn"; // Change the input value - input.dispatchEvent(new Event("input", { bubbles: true })); // Trigger an input event, for the search to register the new input value -}) - -// CREATING CONTEXT -const app = document.querySelector('#app')! -const ctx = app.getContext('2d')! -const renderer = new LimnRenderer(ctx) -let fn = new Function('r', 'limnLibrary', resolveImports(code)) -renderer.fitScreen() -fn(renderer, limnVars) -renderer.watch() - -const runCode = () => { - const code = resolveImports(editor.getValue()) - - renderer.clear() - fn = new Function('r', 'limnLibrary', code) - fn(renderer, limnVars) -} - -window.addEventListener('keydown', (e) => { - console.log('keydown', e) - // if ((e.metaKey || e.ctrlKey) && e.key === 'k') { - // e.preventDefault() - - // console.log('EDITOR') - - // editor.focus(); // Editor needs focus to be able to trigger command - // editor.trigger("", "editor.action.quickCommand", ""); // Opens the quickcommand - // const input = document.querySelector(".quick-input-box .input")!; // Gets the quickcommand input - // input.value = "> Your search string"; // Change the input value - // input.dispatchEvent(new Event("input", { bubbles: true })); // Trigger an input event, for the search to register the new input value - - // // console.log('Saving') - // // const code = resolveImports(editor.getValue()) - // // console.log('VALUE', code) - - // // renderer.clear() - // // fn = new Function('r', 'limnLibrary', code) - // // fn(renderer, limnVars) - // } - // if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') { - // e.preventDefault() - // runCode() - // } - - if (e.ctrlKey && e.code === 'Backquote') { - e.preventDefault() - editorToggle() - } -}) - -const editorToggle = () => { - document.body.classList.toggle('hide-editor') -} +// editor.addAction({ +// id: 'limn.run-code', +// label: 'Limn: Run Code', +// contextMenuGroupId: 'navigation', +// contextMenuOrder: 0.90, +// keybindings: [ +// monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter +// ], +// run:function() { +// console.log('run code') +// // run code +// runCode() +// } +// }) + +// editor.addAction({ +// id: 'limn.toggle-timer', +// label: 'Limn: Toggle Timer', +// contextMenuGroupId: 'navigation', +// contextMenuOrder: 0.91, +// keybindings: [ +// monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyP +// ], +// run: () => { +// if (renderer.timer.isRunning) { +// renderer.timer.pause() +// } else { +// renderer.timer.start() +// } +// } +// }) + +// editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyK, () => { +// editor.trigger("", "editor.action.quickCommand", ""); // Opens the quickcommand +// const input = document.querySelector(".quick-input-box .input")!; // Gets the quickcommand input +// input.value = "> Limn"; // Change the input value +// input.dispatchEvent(new Event("input", { bubbles: true })); // Trigger an input event, for the search to register the new input value +// }) + +// // CREATING CONTEXT +// const app = document.querySelector('#app')! +// const ctx = app.getContext('2d')! +// const renderer = new LimnRenderer(ctx) +// let fn = new Function('r', 'limnLibrary', resolveImports(code)) +// renderer.fitScreen() +// fn(renderer, limnVars) +// renderer.watch() + +// const runCode = () => { +// const code = resolveImports(editor.getValue()) + +// renderer.clear() +// fn = new Function('r', 'limnLibrary', code) +// fn(renderer, limnVars) +// } + +// window.addEventListener('keydown', (e) => { +// console.log('keydown', e) +// // if ((e.metaKey || e.ctrlKey) && e.key === 'k') { +// // e.preventDefault() + +// // console.log('EDITOR') + +// // editor.focus(); // Editor needs focus to be able to trigger command +// // editor.trigger("", "editor.action.quickCommand", ""); // Opens the quickcommand +// // const input = document.querySelector(".quick-input-box .input")!; // Gets the quickcommand input +// // input.value = "> Your search string"; // Change the input value +// // input.dispatchEvent(new Event("input", { bubbles: true })); // Trigger an input event, for the search to register the new input value + +// // // console.log('Saving') +// // // const code = resolveImports(editor.getValue()) +// // // console.log('VALUE', code) + +// // // renderer.clear() +// // // fn = new Function('r', 'limnLibrary', code) +// // // fn(renderer, limnVars) +// // } +// // if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') { +// // e.preventDefault() +// // runCode() +// // } + +// if (e.ctrlKey && e.code === 'Backquote') { +// e.preventDefault() +// editorToggle() +// } +// }) + +// const editorToggle = () => { +// document.body.classList.toggle('hide-editor') +// } diff --git a/packages/limn-explorer/src/limnRenderer/limnRenderer.ts b/packages/limn-explorer/src/limnRenderer/limnRenderer.ts new file mode 100644 index 0000000..9edbea9 --- /dev/null +++ b/packages/limn-explorer/src/limnRenderer/limnRenderer.ts @@ -0,0 +1,3 @@ +export const limnRenderer = () => { + +} \ No newline at end of file diff --git a/packages/limn-explorer/src/sidebar/index.ts b/packages/limn-explorer/src/sidebar/index.ts new file mode 100644 index 0000000..101ffec --- /dev/null +++ b/packages/limn-explorer/src/sidebar/index.ts @@ -0,0 +1,11 @@ +import { Demo } from "../demos"; + +const generateDemo = (demo: Demo) => { + // const container = document.create +} + +const sidebar = (container: HTMLDivElement, demos: Demo[]) => { + demos.forEach(d => { + generateDemo(d) + }) +} \ No newline at end of file diff --git a/packages/limn-explorer/src/style.css b/packages/limn-explorer/src/style.css new file mode 100644 index 0000000..df5c3b3 --- /dev/null +++ b/packages/limn-explorer/src/style.css @@ -0,0 +1,52 @@ +body, +html { + margin: 0; + padding: 0; + min-height: 100%; +} + +#editor { + height: 100vh; + box-sizing: border-box; + padding: 1em; +} + +.monaco-editor.monaco-editor { + --vscode-editor-background: transparent; + --vscode-focusBorder: transparent; + --vscode-editorGutter-background: transparent; +} + +/* .monaco-editor .margin { + display: none; + } */ + +#app { + width: 100%; + height: 100vh; + position: absolute; + top: 0; + left: 0; + background: #1e1e1e; +} + +.monaco-editor .view-line span:not(:has(span)) { + background: rgb(30 30 30 / 70%); +} + +.hide-editor #editor { + display: none; +} + +.sidebar { + background: black; + color: #FFF; +} + +#container { + width: 100vw; + height: 100vh; + background: red; + display: grid; + grid-template-columns: 100px 1fr 1fr; +} \ No newline at end of file diff --git a/packages/limn-explorer/vite.config.ts b/packages/limn-explorer/vite.config.ts index df19f1a..79601c1 100644 --- a/packages/limn-explorer/vite.config.ts +++ b/packages/limn-explorer/vite.config.ts @@ -1,9 +1,11 @@ import { defineConfig } from 'vite'; -import monacoEditorPlugin from 'vite-plugin-monaco-editor'; +// import monacoEditorPlugin from 'vite-plugin-monaco-editor'; +import vue from '@vitejs/plugin-vue' + export default defineConfig({ base: './', - plugins: [monacoEditorPlugin({ + plugins: [/*monacoEditorPlugin({ languageWorkers: ['typescript'] - })], + })*/, vue()], }); \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 096d74a..44871e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,7 +88,13 @@ importers: monaco-editor: specifier: ^0.52.2 version: 0.52.2 + vue: + specifier: ^3.5.14 + version: 3.5.14(typescript@5.8.3) devDependencies: + '@vitejs/plugin-vue': + specifier: ^6.0.0 + version: 6.0.0(vite@6.3.5(@types/node@22.15.18))(vue@3.5.14(typescript@5.8.3)) vite: specifier: ^6.3.5 version: 6.3.5(@types/node@22.15.18) @@ -906,6 +912,9 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@rolldown/pluginutils@1.0.0-beta.19': + resolution: {integrity: sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==} + '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -1217,6 +1226,13 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 + '@vitejs/plugin-vue@6.0.0': + resolution: {integrity: sha512-iAliE72WsdhjzTOp2DtvKThq1VBC4REhwRcaA+zPAAph6I+OQhUXv+Xu2KS7ElxYtb7Zc/3R30Hwv1DxEo7NXQ==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vue: ^3.2.25 + '@volar/language-core@2.4.14': resolution: {integrity: sha512-X6beusV0DvuVseaOEy7GoagS4rYHgDHnTrdOj5jeUb49fW5ceQyP9Ej5rBhqgz2wJggl+2fDbbojq1XKaxDi6w==} @@ -3952,6 +3968,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@rolldown/pluginutils@1.0.0-beta.19': {} + '@rollup/pluginutils@5.1.4(rollup@4.40.0)': dependencies: '@types/estree': 1.0.7 @@ -4300,6 +4318,12 @@ snapshots: vite: 5.4.18(@types/node@22.15.18) vue: 3.5.14(typescript@5.8.3) + '@vitejs/plugin-vue@6.0.0(vite@6.3.5(@types/node@22.15.18))(vue@3.5.14(typescript@5.8.3))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.19 + vite: 6.3.5(@types/node@22.15.18) + vue: 3.5.14(typescript@5.8.3) + '@volar/language-core@2.4.14': dependencies: '@volar/source-map': 2.4.14 From 1565b29d9d661e2c2bcdb444a479eaffbbd72b52 Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Sun, 29 Jun 2025 22:14:03 +0100 Subject: [PATCH 2/3] chore: limn explorer rewritten to Vue.js --- package.json | 5 +- packages/limn-explorer/.gitignore | 24 + .../limn-explorer/.vscode/extensions.json | 3 + packages/limn-explorer/README.md | 5 + packages/limn-explorer/components.json | 20 + packages/limn-explorer/esbuild.mjs | 9 - packages/limn-explorer/index.html | 34 +- packages/limn-explorer/package.json | 37 +- packages/limn-explorer/public/vite.svg | 1 + packages/limn-explorer/src/App.vue | 33 + packages/limn-explorer/src/app/app.vue | 59 - packages/limn-explorer/src/app/editor.vue | 48 - packages/limn-explorer/src/app/preview.vue | 13 - packages/limn-explorer/src/app/sidebar.vue | 16 - packages/limn-explorer/src/assets/vue.svg | 1 + .../src/components/AppSidebar.vue | 138 ++ .../src/components/editor/editor.ts | 33 + .../src/components/editor/editor.vue | 93 + .../src/components/editor/extraLibraries.ts | 24 + .../src/components/editor/typescript.ts | 39 + .../src/components/editor/workers.ts | 26 + .../src/components/form/layoutOptions.vue | 30 + .../src/components/mainContainer.vue | 44 + .../src/components/preview/preview.vue | 89 + .../components/sidebar/limn-icon-explorer.svg | 1 + .../src/components/sidebarContent/config.vue | 36 + .../src/components/sidebarContent/demos.vue | 92 + .../components/sidebarContent/filesystem.vue | 10 + .../src/components/ui/avatar/Avatar.vue | 18 + .../components/ui/avatar/AvatarFallback.vue | 20 + .../src/components/ui/avatar/AvatarImage.vue | 16 + .../src/components/ui/avatar/index.ts | 3 + .../components/ui/breadcrumb/Breadcrumb.vue | 17 + .../ui/breadcrumb/BreadcrumbEllipsis.vue | 23 + .../ui/breadcrumb/BreadcrumbItem.vue | 17 + .../ui/breadcrumb/BreadcrumbLink.vue | 20 + .../ui/breadcrumb/BreadcrumbList.vue | 17 + .../ui/breadcrumb/BreadcrumbPage.vue | 20 + .../ui/breadcrumb/BreadcrumbSeparator.vue | 22 + .../src/components/ui/breadcrumb/index.ts | 7 + .../src/components/ui/button/Button.vue | 27 + .../src/components/ui/button/index.ts | 36 + .../components/ui/collapsible/Collapsible.vue | 19 + .../ui/collapsible/CollapsibleContent.vue | 14 + .../ui/collapsible/CollapsibleTrigger.vue | 14 + .../src/components/ui/collapsible/index.ts | 3 + .../ui/dropdown-menu/DropdownMenu.vue | 17 + .../DropdownMenuCheckboxItem.vue | 38 + .../ui/dropdown-menu/DropdownMenuContent.vue | 36 + .../ui/dropdown-menu/DropdownMenuGroup.vue | 14 + .../ui/dropdown-menu/DropdownMenuItem.vue | 30 + .../ui/dropdown-menu/DropdownMenuLabel.vue | 22 + .../dropdown-menu/DropdownMenuRadioGroup.vue | 22 + .../dropdown-menu/DropdownMenuRadioItem.vue | 39 + .../dropdown-menu/DropdownMenuSeparator.vue | 23 + .../ui/dropdown-menu/DropdownMenuShortcut.vue | 17 + .../ui/dropdown-menu/DropdownMenuSub.vue | 19 + .../dropdown-menu/DropdownMenuSubContent.vue | 28 + .../dropdown-menu/DropdownMenuSubTrigger.vue | 30 + .../ui/dropdown-menu/DropdownMenuTrigger.vue | 16 + .../src/components/ui/dropdown-menu/index.ts | 16 + .../src/components/ui/form/FormControl.vue | 17 + .../components/ui/form/FormDescription.vue | 21 + .../src/components/ui/form/FormItem.vue | 22 + .../src/components/ui/form/FormLabel.vue | 25 + .../src/components/ui/form/FormMessage.vue | 22 + .../src/components/ui/form/index.ts | 7 + .../src/components/ui/form/injectionKeys.ts | 4 + .../src/components/ui/form/useFormField.ts | 30 + .../src/components/ui/input/Input.vue | 33 + .../src/components/ui/input/index.ts | 1 + .../src/components/ui/label/Label.vue | 25 + .../src/components/ui/label/index.ts | 1 + .../ui/resizable/ResizableHandle.vue | 27 + .../ui/resizable/ResizablePanel.vue | 18 + .../ui/resizable/ResizablePanelGroup.vue | 42 + .../src/components/ui/resizable/index.ts | 3 + .../src/components/ui/select/Select.vue | 18 + .../components/ui/select/SelectContent.vue | 52 + .../src/components/ui/select/SelectGroup.vue | 14 + .../src/components/ui/select/SelectItem.vue | 42 + .../components/ui/select/SelectItemText.vue | 14 + .../src/components/ui/select/SelectLabel.vue | 16 + .../ui/select/SelectScrollDownButton.vue | 25 + .../ui/select/SelectScrollUpButton.vue | 25 + .../components/ui/select/SelectSeparator.vue | 18 + .../components/ui/select/SelectTrigger.vue | 32 + .../src/components/ui/select/SelectValue.vue | 14 + .../src/components/ui/select/index.ts | 11 + .../src/components/ui/separator/Separator.vue | 28 + .../src/components/ui/separator/index.ts | 1 + .../src/components/ui/sheet/Sheet.vue | 17 + .../src/components/ui/sheet/SheetClose.vue | 14 + .../src/components/ui/sheet/SheetContent.vue | 63 + .../components/ui/sheet/SheetDescription.vue | 20 + .../src/components/ui/sheet/SheetFooter.vue | 16 + .../src/components/ui/sheet/SheetHeader.vue | 15 + .../src/components/ui/sheet/SheetOverlay.vue | 20 + .../src/components/ui/sheet/SheetTitle.vue | 20 + .../src/components/ui/sheet/SheetTrigger.vue | 14 + .../src/components/ui/sheet/index.ts | 8 + .../src/components/ui/sidebar/Sidebar.vue | 96 + .../components/ui/sidebar/SidebarContent.vue | 18 + .../components/ui/sidebar/SidebarFooter.vue | 18 + .../components/ui/sidebar/SidebarGroup.vue | 18 + .../ui/sidebar/SidebarGroupAction.vue | 27 + .../ui/sidebar/SidebarGroupContent.vue | 18 + .../ui/sidebar/SidebarGroupLabel.vue | 25 + .../components/ui/sidebar/SidebarHeader.vue | 18 + .../components/ui/sidebar/SidebarInput.vue | 22 + .../components/ui/sidebar/SidebarInset.vue | 21 + .../src/components/ui/sidebar/SidebarMenu.vue | 18 + .../ui/sidebar/SidebarMenuAction.vue | 34 + .../ui/sidebar/SidebarMenuBadge.vue | 26 + .../ui/sidebar/SidebarMenuButton.vue | 47 + .../ui/sidebar/SidebarMenuButtonChild.vue | 34 + .../components/ui/sidebar/SidebarMenuItem.vue | 18 + .../ui/sidebar/SidebarMenuSkeleton.vue | 34 + .../components/ui/sidebar/SidebarMenuSub.vue | 22 + .../ui/sidebar/SidebarMenuSubButton.vue | 36 + .../ui/sidebar/SidebarMenuSubItem.vue | 18 + .../components/ui/sidebar/SidebarProvider.vue | 81 + .../src/components/ui/sidebar/SidebarRail.vue | 33 + .../ui/sidebar/SidebarSeparator.vue | 19 + .../components/ui/sidebar/SidebarTrigger.vue | 27 + .../src/components/ui/sidebar/index.ts | 60 + .../src/components/ui/sidebar/utils.ts | 19 + .../src/components/ui/skeleton/Skeleton.vue | 17 + .../src/components/ui/skeleton/index.ts | 1 + .../src/components/ui/switch/Switch.vue | 38 + .../src/components/ui/switch/index.ts | 1 + .../src/components/ui/tooltip/Tooltip.vue | 17 + .../components/ui/tooltip/TooltipContent.vue | 33 + .../components/ui/tooltip/TooltipProvider.vue | 13 + .../components/ui/tooltip/TooltipTrigger.vue | 14 + .../src/components/ui/tooltip/index.ts | 4 + packages/limn-explorer/src/demos/point.ts | 8 + packages/limn-explorer/src/demos/rectangle.ts | 2 +- packages/limn-explorer/src/index.ts | 219 -- packages/limn-explorer/src/lib/utils.ts | 31 + .../src/limnRenderer/limnRenderer.ts | 3 - packages/limn-explorer/src/main.ts | 5 + packages/limn-explorer/src/sidebar/index.ts | 11 - packages/limn-explorer/src/state/config.ts | 14 + packages/limn-explorer/src/style.css | 157 +- packages/limn-explorer/src/vite-env.d.ts | 1 + packages/limn-explorer/tsconfig.app.json | 21 + packages/limn-explorer/tsconfig.json | 13 + packages/limn-explorer/tsconfig.node.json | 25 + packages/limn-explorer/vite.config.ts | 18 +- packages/limn/src/canvas/Renderer.ts | 58 +- pnpm-lock.yaml | 2161 ++++++++++++++++- 152 files changed, 5558 insertions(+), 592 deletions(-) create mode 100644 packages/limn-explorer/.gitignore create mode 100644 packages/limn-explorer/.vscode/extensions.json create mode 100644 packages/limn-explorer/README.md create mode 100644 packages/limn-explorer/components.json delete mode 100644 packages/limn-explorer/esbuild.mjs create mode 100644 packages/limn-explorer/public/vite.svg create mode 100644 packages/limn-explorer/src/App.vue delete mode 100644 packages/limn-explorer/src/app/app.vue delete mode 100644 packages/limn-explorer/src/app/editor.vue delete mode 100644 packages/limn-explorer/src/app/preview.vue delete mode 100644 packages/limn-explorer/src/app/sidebar.vue create mode 100644 packages/limn-explorer/src/assets/vue.svg create mode 100644 packages/limn-explorer/src/components/AppSidebar.vue create mode 100644 packages/limn-explorer/src/components/editor/editor.ts create mode 100644 packages/limn-explorer/src/components/editor/editor.vue create mode 100644 packages/limn-explorer/src/components/editor/extraLibraries.ts create mode 100644 packages/limn-explorer/src/components/editor/typescript.ts create mode 100644 packages/limn-explorer/src/components/editor/workers.ts create mode 100644 packages/limn-explorer/src/components/form/layoutOptions.vue create mode 100644 packages/limn-explorer/src/components/mainContainer.vue create mode 100644 packages/limn-explorer/src/components/preview/preview.vue create mode 100644 packages/limn-explorer/src/components/sidebar/limn-icon-explorer.svg create mode 100644 packages/limn-explorer/src/components/sidebarContent/config.vue create mode 100644 packages/limn-explorer/src/components/sidebarContent/demos.vue create mode 100644 packages/limn-explorer/src/components/sidebarContent/filesystem.vue create mode 100644 packages/limn-explorer/src/components/ui/avatar/Avatar.vue create mode 100644 packages/limn-explorer/src/components/ui/avatar/AvatarFallback.vue create mode 100644 packages/limn-explorer/src/components/ui/avatar/AvatarImage.vue create mode 100644 packages/limn-explorer/src/components/ui/avatar/index.ts create mode 100644 packages/limn-explorer/src/components/ui/breadcrumb/Breadcrumb.vue create mode 100644 packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue create mode 100644 packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbItem.vue create mode 100644 packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbLink.vue create mode 100644 packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbList.vue create mode 100644 packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbPage.vue create mode 100644 packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbSeparator.vue create mode 100644 packages/limn-explorer/src/components/ui/breadcrumb/index.ts create mode 100644 packages/limn-explorer/src/components/ui/button/Button.vue create mode 100644 packages/limn-explorer/src/components/ui/button/index.ts create mode 100644 packages/limn-explorer/src/components/ui/collapsible/Collapsible.vue create mode 100644 packages/limn-explorer/src/components/ui/collapsible/CollapsibleContent.vue create mode 100644 packages/limn-explorer/src/components/ui/collapsible/CollapsibleTrigger.vue create mode 100644 packages/limn-explorer/src/components/ui/collapsible/index.ts create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenu.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuContent.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuGroup.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuItem.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuLabel.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSub.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue create mode 100644 packages/limn-explorer/src/components/ui/dropdown-menu/index.ts create mode 100644 packages/limn-explorer/src/components/ui/form/FormControl.vue create mode 100644 packages/limn-explorer/src/components/ui/form/FormDescription.vue create mode 100644 packages/limn-explorer/src/components/ui/form/FormItem.vue create mode 100644 packages/limn-explorer/src/components/ui/form/FormLabel.vue create mode 100644 packages/limn-explorer/src/components/ui/form/FormMessage.vue create mode 100644 packages/limn-explorer/src/components/ui/form/index.ts create mode 100644 packages/limn-explorer/src/components/ui/form/injectionKeys.ts create mode 100644 packages/limn-explorer/src/components/ui/form/useFormField.ts create mode 100644 packages/limn-explorer/src/components/ui/input/Input.vue create mode 100644 packages/limn-explorer/src/components/ui/input/index.ts create mode 100644 packages/limn-explorer/src/components/ui/label/Label.vue create mode 100644 packages/limn-explorer/src/components/ui/label/index.ts create mode 100644 packages/limn-explorer/src/components/ui/resizable/ResizableHandle.vue create mode 100644 packages/limn-explorer/src/components/ui/resizable/ResizablePanel.vue create mode 100644 packages/limn-explorer/src/components/ui/resizable/ResizablePanelGroup.vue create mode 100644 packages/limn-explorer/src/components/ui/resizable/index.ts create mode 100644 packages/limn-explorer/src/components/ui/select/Select.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectContent.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectGroup.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectItem.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectItemText.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectLabel.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectScrollDownButton.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectScrollUpButton.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectSeparator.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectTrigger.vue create mode 100644 packages/limn-explorer/src/components/ui/select/SelectValue.vue create mode 100644 packages/limn-explorer/src/components/ui/select/index.ts create mode 100644 packages/limn-explorer/src/components/ui/separator/Separator.vue create mode 100644 packages/limn-explorer/src/components/ui/separator/index.ts create mode 100644 packages/limn-explorer/src/components/ui/sheet/Sheet.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/SheetClose.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/SheetContent.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/SheetDescription.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/SheetFooter.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/SheetHeader.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/SheetOverlay.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/SheetTitle.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/SheetTrigger.vue create mode 100644 packages/limn-explorer/src/components/ui/sheet/index.ts create mode 100644 packages/limn-explorer/src/components/ui/sidebar/Sidebar.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarContent.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarFooter.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarGroup.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarGroupAction.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarGroupContent.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarGroupLabel.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarHeader.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarInput.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarInset.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenu.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuAction.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuBadge.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuButton.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuButtonChild.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuItem.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSkeleton.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSub.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSubButton.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSubItem.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarProvider.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarRail.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarSeparator.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/SidebarTrigger.vue create mode 100644 packages/limn-explorer/src/components/ui/sidebar/index.ts create mode 100644 packages/limn-explorer/src/components/ui/sidebar/utils.ts create mode 100644 packages/limn-explorer/src/components/ui/skeleton/Skeleton.vue create mode 100644 packages/limn-explorer/src/components/ui/skeleton/index.ts create mode 100644 packages/limn-explorer/src/components/ui/switch/Switch.vue create mode 100644 packages/limn-explorer/src/components/ui/switch/index.ts create mode 100644 packages/limn-explorer/src/components/ui/tooltip/Tooltip.vue create mode 100644 packages/limn-explorer/src/components/ui/tooltip/TooltipContent.vue create mode 100644 packages/limn-explorer/src/components/ui/tooltip/TooltipProvider.vue create mode 100644 packages/limn-explorer/src/components/ui/tooltip/TooltipTrigger.vue create mode 100644 packages/limn-explorer/src/components/ui/tooltip/index.ts create mode 100644 packages/limn-explorer/src/demos/point.ts delete mode 100644 packages/limn-explorer/src/index.ts create mode 100644 packages/limn-explorer/src/lib/utils.ts delete mode 100644 packages/limn-explorer/src/limnRenderer/limnRenderer.ts create mode 100644 packages/limn-explorer/src/main.ts delete mode 100644 packages/limn-explorer/src/sidebar/index.ts create mode 100644 packages/limn-explorer/src/state/config.ts create mode 100644 packages/limn-explorer/src/vite-env.d.ts create mode 100644 packages/limn-explorer/tsconfig.app.json create mode 100644 packages/limn-explorer/tsconfig.json create mode 100644 packages/limn-explorer/tsconfig.node.json diff --git a/package.json b/package.json index 01ce51a..11c7cfe 100644 --- a/package.json +++ b/package.json @@ -19,5 +19,8 @@ "devDependencies": { "@changesets/cli": "^2.29.4", "@types/jest": "^29.5.14" + }, + "overrides": { + "css-select": "5.1.0" } -} +} \ No newline at end of file diff --git a/packages/limn-explorer/.gitignore b/packages/limn-explorer/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/packages/limn-explorer/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/limn-explorer/.vscode/extensions.json b/packages/limn-explorer/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/packages/limn-explorer/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/packages/limn-explorer/README.md b/packages/limn-explorer/README.md new file mode 100644 index 0000000..33895ab --- /dev/null +++ b/packages/limn-explorer/README.md @@ -0,0 +1,5 @@ +# Vue 3 + TypeScript + Vite + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` - - - \ No newline at end of file + + + + + Vite + Vue + TS + + +
+ + + diff --git a/packages/limn-explorer/package.json b/packages/limn-explorer/package.json index bd6dd1d..3bcf597 100644 --- a/packages/limn-explorer/package.json +++ b/packages/limn-explorer/package.json @@ -1,28 +1,37 @@ { "name": "limn-explorer", - "version": "1.0.0", - "description": "", - "type": "module", - "main": "index.js", "private": true, + "version": "0.0.0", + "type": "module", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", "dev": "vite", - "build": "vite build" + "build": "vue-tsc -b && vite build", + "preview": "vite preview" }, - "keywords": [], - "author": "", - "license": "ISC", - "packageManager": "pnpm@10.12.3", "dependencies": { - "esbuild": "^0.25.5", + "@tailwindcss/vite": "^4.1.11", + "@vee-validate/zod": "^4.15.1", + "@vueuse/core": "^13.4.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", "limn": "workspace:*", + "lucide-vue-next": "^0.525.0", "monaco-editor": "^0.52.2", - "vue": "^3.5.14" + "reka-ui": "^2.3.1", + "tailwind-merge": "^3.3.1", + "tailwindcss": "^4.1.11", + "tw-animate-css": "^1.3.4", + "vee-validate": "^4.15.1", + "vue": "^3.5.17", + "zod": "^3.25.67" }, "devDependencies": { + "@types/node": "^24.0.7", "@vitejs/plugin-vue": "^6.0.0", - "vite": "^6.3.5", - "vite-plugin-monaco-editor": "^1.1.0" + "@vue/tsconfig": "^0.7.0", + "typescript": "~5.8.3", + "vite": "^7.0.0", + "vite-svg-loader": "^5.1.0", + "vue-tsc": "^2.2.10" } } diff --git a/packages/limn-explorer/public/vite.svg b/packages/limn-explorer/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/packages/limn-explorer/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/limn-explorer/src/App.vue b/packages/limn-explorer/src/App.vue new file mode 100644 index 0000000..4a174ab --- /dev/null +++ b/packages/limn-explorer/src/App.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/packages/limn-explorer/src/app/app.vue b/packages/limn-explorer/src/app/app.vue deleted file mode 100644 index 89c9bf1..0000000 --- a/packages/limn-explorer/src/app/app.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - \ No newline at end of file diff --git a/packages/limn-explorer/src/app/editor.vue b/packages/limn-explorer/src/app/editor.vue deleted file mode 100644 index edc19c0..0000000 --- a/packages/limn-explorer/src/app/editor.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - \ No newline at end of file diff --git a/packages/limn-explorer/src/app/preview.vue b/packages/limn-explorer/src/app/preview.vue deleted file mode 100644 index c541170..0000000 --- a/packages/limn-explorer/src/app/preview.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - \ No newline at end of file diff --git a/packages/limn-explorer/src/app/sidebar.vue b/packages/limn-explorer/src/app/sidebar.vue deleted file mode 100644 index 4c6c65f..0000000 --- a/packages/limn-explorer/src/app/sidebar.vue +++ /dev/null @@ -1,16 +0,0 @@ - - \ No newline at end of file diff --git a/packages/limn-explorer/src/assets/vue.svg b/packages/limn-explorer/src/assets/vue.svg new file mode 100644 index 0000000..770e9d3 --- /dev/null +++ b/packages/limn-explorer/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/AppSidebar.vue b/packages/limn-explorer/src/components/AppSidebar.vue new file mode 100644 index 0000000..20d9845 --- /dev/null +++ b/packages/limn-explorer/src/components/AppSidebar.vue @@ -0,0 +1,138 @@ + + + diff --git a/packages/limn-explorer/src/components/editor/editor.ts b/packages/limn-explorer/src/components/editor/editor.ts new file mode 100644 index 0000000..837b40b --- /dev/null +++ b/packages/limn-explorer/src/components/editor/editor.ts @@ -0,0 +1,33 @@ +import { setupExtraLibraries } from "./extraLibraries" +import { setupTypescript } from "./typescript" +import { setupWorkers } from "./workers" +import * as monaco from 'monaco-editor' + + +export const setupEditor = (codeContainer: HTMLDivElement, code: string) => { + setupWorkers() + setupExtraLibraries() + const compileTypeScript = setupTypescript() + + const editor = monaco.editor.create(codeContainer, { + value: code, + language: 'typescript', + theme: 'vs-dark', + automaticLayout: false, + minimap: { enabled: false }, + scrollBeyondLastLine: false, + fontSize: 14, + tabSize: 2, + wordWrap: 'on', + lineNumbers: 'on', + suggest: { + showWords: false, + showKeywords: false, + showEnums: false, + showClasses: false, + showConstructors: false + } + }) + + return { editor, compileTypeScript } +} \ No newline at end of file diff --git a/packages/limn-explorer/src/components/editor/editor.vue b/packages/limn-explorer/src/components/editor/editor.vue new file mode 100644 index 0000000..99c7e10 --- /dev/null +++ b/packages/limn-explorer/src/components/editor/editor.vue @@ -0,0 +1,93 @@ + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/editor/extraLibraries.ts b/packages/limn-explorer/src/components/editor/extraLibraries.ts new file mode 100644 index 0000000..923658a --- /dev/null +++ b/packages/limn-explorer/src/components/editor/extraLibraries.ts @@ -0,0 +1,24 @@ +import limnTypes from 'limn/dist/index.d.ts?raw' +import * as monaco from 'monaco-editor' + +export const setupExtraLibraries = () => { + // const wrappedDeclaration = ` + // declare module 'limn' { + // ${limnTypes} + // }` + + monaco.languages.typescript.typescriptDefaults.addExtraLib(limnTypes, + 'file:///node_modules/limn/index.d.ts' + ) + + // Global R + + monaco.languages.typescript.typescriptDefaults.addExtraLib(` + import type { LimnRenderer } from 'limn' +declare global { + const r: LimnRenderer; +} + +export {}; +`, 'file:///globals.d.ts') +} \ No newline at end of file diff --git a/packages/limn-explorer/src/components/editor/typescript.ts b/packages/limn-explorer/src/components/editor/typescript.ts new file mode 100644 index 0000000..99c00d8 --- /dev/null +++ b/packages/limn-explorer/src/components/editor/typescript.ts @@ -0,0 +1,39 @@ +import * as monaco from 'monaco-editor' + +export const setupTypescript = () => { + // Configure TypeScript compiler options + monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ + target: monaco.languages.typescript.ScriptTarget.ES2020, + allowNonTsExtensions: true, + moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs, + module: monaco.languages.typescript.ModuleKind.ESNext, + experimentalDecorators: true + // allowJs: true, + // esModuleInterop: true, + // strict: false + }); + + + return async function compileTypeScript(tsCode: string) { + // Create a model + const uri = monaco.Uri.parse('file:///main.ts'); + const model = monaco.editor.createModel(tsCode, 'typescript', uri); + + // Get the TypeScript worker + const worker = await monaco.languages.typescript.getTypeScriptWorker(); + const client = await worker(uri); + + // Compile the code + const result = await client.getEmitOutput(uri.toString()); + + // Clean up + model.dispose(); + + if (result.emitSkipped) { + throw new Error('TypeScript compilation failed'); + } + + // Return the compiled JavaScript + return result.outputFiles[0].text; + } +} \ No newline at end of file diff --git a/packages/limn-explorer/src/components/editor/workers.ts b/packages/limn-explorer/src/components/editor/workers.ts new file mode 100644 index 0000000..7873cce --- /dev/null +++ b/packages/limn-explorer/src/components/editor/workers.ts @@ -0,0 +1,26 @@ +import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; +import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'; +import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; +import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'; +import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; + + +export const setupWorkers = () => { + self.MonacoEnvironment = { + getWorker(_, label) { + if (label === 'json') { + return new jsonWorker(); + } + if (label === 'css' || label === 'scss' || label === 'less') { + return new cssWorker(); + } + if (label === 'html' || label === 'handlebars' || label === 'razor') { + return new htmlWorker(); + } + if (label === 'typescript' || label === 'javascript') { + return new tsWorker(); + } + return new editorWorker(); + }, + }; +} \ No newline at end of file diff --git a/packages/limn-explorer/src/components/form/layoutOptions.vue b/packages/limn-explorer/src/components/form/layoutOptions.vue new file mode 100644 index 0000000..1233c87 --- /dev/null +++ b/packages/limn-explorer/src/components/form/layoutOptions.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/mainContainer.vue b/packages/limn-explorer/src/components/mainContainer.vue new file mode 100644 index 0000000..c6f40da --- /dev/null +++ b/packages/limn-explorer/src/components/mainContainer.vue @@ -0,0 +1,44 @@ + + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/preview/preview.vue b/packages/limn-explorer/src/components/preview/preview.vue new file mode 100644 index 0000000..09d586b --- /dev/null +++ b/packages/limn-explorer/src/components/preview/preview.vue @@ -0,0 +1,89 @@ + + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/sidebar/limn-icon-explorer.svg b/packages/limn-explorer/src/components/sidebar/limn-icon-explorer.svg new file mode 100644 index 0000000..db215c4 --- /dev/null +++ b/packages/limn-explorer/src/components/sidebar/limn-icon-explorer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/sidebarContent/config.vue b/packages/limn-explorer/src/components/sidebarContent/config.vue new file mode 100644 index 0000000..5a88829 --- /dev/null +++ b/packages/limn-explorer/src/components/sidebarContent/config.vue @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/sidebarContent/demos.vue b/packages/limn-explorer/src/components/sidebarContent/demos.vue new file mode 100644 index 0000000..8a12875 --- /dev/null +++ b/packages/limn-explorer/src/components/sidebarContent/demos.vue @@ -0,0 +1,92 @@ + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/sidebarContent/filesystem.vue b/packages/limn-explorer/src/components/sidebarContent/filesystem.vue new file mode 100644 index 0000000..7d8db6f --- /dev/null +++ b/packages/limn-explorer/src/components/sidebarContent/filesystem.vue @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/ui/avatar/Avatar.vue b/packages/limn-explorer/src/components/ui/avatar/Avatar.vue new file mode 100644 index 0000000..5aa263d --- /dev/null +++ b/packages/limn-explorer/src/components/ui/avatar/Avatar.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/avatar/AvatarFallback.vue b/packages/limn-explorer/src/components/ui/avatar/AvatarFallback.vue new file mode 100644 index 0000000..dc20f80 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/avatar/AvatarFallback.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/avatar/AvatarImage.vue b/packages/limn-explorer/src/components/ui/avatar/AvatarImage.vue new file mode 100644 index 0000000..801392b --- /dev/null +++ b/packages/limn-explorer/src/components/ui/avatar/AvatarImage.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/avatar/index.ts b/packages/limn-explorer/src/components/ui/avatar/index.ts new file mode 100644 index 0000000..6a90410 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/avatar/index.ts @@ -0,0 +1,3 @@ +export { default as Avatar } from './Avatar.vue' +export { default as AvatarFallback } from './AvatarFallback.vue' +export { default as AvatarImage } from './AvatarImage.vue' diff --git a/packages/limn-explorer/src/components/ui/breadcrumb/Breadcrumb.vue b/packages/limn-explorer/src/components/ui/breadcrumb/Breadcrumb.vue new file mode 100644 index 0000000..b99dcea --- /dev/null +++ b/packages/limn-explorer/src/components/ui/breadcrumb/Breadcrumb.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue new file mode 100644 index 0000000..b147851 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue @@ -0,0 +1,23 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbItem.vue b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbItem.vue new file mode 100644 index 0000000..f50f69d --- /dev/null +++ b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbItem.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbLink.vue b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbLink.vue new file mode 100644 index 0000000..c94995e --- /dev/null +++ b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbLink.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbList.vue b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbList.vue new file mode 100644 index 0000000..3a92c48 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbList.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbPage.vue b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbPage.vue new file mode 100644 index 0000000..cc667bc --- /dev/null +++ b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbPage.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbSeparator.vue b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbSeparator.vue new file mode 100644 index 0000000..7ee2d01 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/breadcrumb/BreadcrumbSeparator.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/breadcrumb/index.ts b/packages/limn-explorer/src/components/ui/breadcrumb/index.ts new file mode 100644 index 0000000..0590983 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/breadcrumb/index.ts @@ -0,0 +1,7 @@ +export { default as Breadcrumb } from './Breadcrumb.vue' +export { default as BreadcrumbEllipsis } from './BreadcrumbEllipsis.vue' +export { default as BreadcrumbItem } from './BreadcrumbItem.vue' +export { default as BreadcrumbLink } from './BreadcrumbLink.vue' +export { default as BreadcrumbList } from './BreadcrumbList.vue' +export { default as BreadcrumbPage } from './BreadcrumbPage.vue' +export { default as BreadcrumbSeparator } from './BreadcrumbSeparator.vue' diff --git a/packages/limn-explorer/src/components/ui/button/Button.vue b/packages/limn-explorer/src/components/ui/button/Button.vue new file mode 100644 index 0000000..ecf3fe3 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/button/Button.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/button/index.ts b/packages/limn-explorer/src/components/ui/button/index.ts new file mode 100644 index 0000000..616d1d3 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/button/index.ts @@ -0,0 +1,36 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +export { default as Button } from './Button.vue' + +export const buttonVariants = cva( + 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*=\'size-\'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', + { + variants: { + variant: { + default: + 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90', + destructive: + 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60', + outline: + 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50', + secondary: + 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80', + ghost: + 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50', + link: 'text-primary underline-offset-4 hover:underline', + }, + size: { + default: 'h-9 px-4 py-2 has-[>svg]:px-3', + sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5', + lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', + icon: 'size-9', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +) + +export type ButtonVariants = VariantProps diff --git a/packages/limn-explorer/src/components/ui/collapsible/Collapsible.vue b/packages/limn-explorer/src/components/ui/collapsible/Collapsible.vue new file mode 100644 index 0000000..dcd58e2 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/collapsible/Collapsible.vue @@ -0,0 +1,19 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/collapsible/CollapsibleContent.vue b/packages/limn-explorer/src/components/ui/collapsible/CollapsibleContent.vue new file mode 100644 index 0000000..4120d2f --- /dev/null +++ b/packages/limn-explorer/src/components/ui/collapsible/CollapsibleContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/collapsible/CollapsibleTrigger.vue b/packages/limn-explorer/src/components/ui/collapsible/CollapsibleTrigger.vue new file mode 100644 index 0000000..be603a4 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/collapsible/CollapsibleTrigger.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/collapsible/index.ts b/packages/limn-explorer/src/components/ui/collapsible/index.ts new file mode 100644 index 0000000..abab956 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/collapsible/index.ts @@ -0,0 +1,3 @@ +export { default as Collapsible } from './Collapsible.vue' +export { default as CollapsibleContent } from './CollapsibleContent.vue' +export { default as CollapsibleTrigger } from './CollapsibleTrigger.vue' diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenu.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenu.vue new file mode 100644 index 0000000..e386052 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenu.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue new file mode 100644 index 0000000..f63c967 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue @@ -0,0 +1,38 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuContent.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuContent.vue new file mode 100644 index 0000000..0aac75f --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuContent.vue @@ -0,0 +1,36 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuGroup.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuGroup.vue new file mode 100644 index 0000000..c7eb308 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuGroup.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuItem.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuItem.vue new file mode 100644 index 0000000..f0a9495 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuItem.vue @@ -0,0 +1,30 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuLabel.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuLabel.vue new file mode 100644 index 0000000..61015cc --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuLabel.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue new file mode 100644 index 0000000..d205d0b --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue new file mode 100644 index 0000000..3d6d908 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue @@ -0,0 +1,39 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue new file mode 100644 index 0000000..5d3fde6 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue @@ -0,0 +1,23 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue new file mode 100644 index 0000000..1bcbb88 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSub.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSub.vue new file mode 100644 index 0000000..7329bca --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSub.vue @@ -0,0 +1,19 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue new file mode 100644 index 0000000..bb70eef --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue @@ -0,0 +1,28 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue new file mode 100644 index 0000000..c641d0a --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue new file mode 100644 index 0000000..7bc7339 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/dropdown-menu/index.ts b/packages/limn-explorer/src/components/ui/dropdown-menu/index.ts new file mode 100644 index 0000000..f488d39 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/dropdown-menu/index.ts @@ -0,0 +1,16 @@ +export { default as DropdownMenu } from './DropdownMenu.vue' + +export { default as DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem.vue' +export { default as DropdownMenuContent } from './DropdownMenuContent.vue' +export { default as DropdownMenuGroup } from './DropdownMenuGroup.vue' +export { default as DropdownMenuItem } from './DropdownMenuItem.vue' +export { default as DropdownMenuLabel } from './DropdownMenuLabel.vue' +export { default as DropdownMenuRadioGroup } from './DropdownMenuRadioGroup.vue' +export { default as DropdownMenuRadioItem } from './DropdownMenuRadioItem.vue' +export { default as DropdownMenuSeparator } from './DropdownMenuSeparator.vue' +export { default as DropdownMenuShortcut } from './DropdownMenuShortcut.vue' +export { default as DropdownMenuSub } from './DropdownMenuSub.vue' +export { default as DropdownMenuSubContent } from './DropdownMenuSubContent.vue' +export { default as DropdownMenuSubTrigger } from './DropdownMenuSubTrigger.vue' +export { default as DropdownMenuTrigger } from './DropdownMenuTrigger.vue' +export { DropdownMenuPortal } from 'reka-ui' diff --git a/packages/limn-explorer/src/components/ui/form/FormControl.vue b/packages/limn-explorer/src/components/ui/form/FormControl.vue new file mode 100644 index 0000000..884fcb0 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/form/FormControl.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/form/FormDescription.vue b/packages/limn-explorer/src/components/ui/form/FormDescription.vue new file mode 100644 index 0000000..f7a9f83 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/form/FormDescription.vue @@ -0,0 +1,21 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/form/FormItem.vue b/packages/limn-explorer/src/components/ui/form/FormItem.vue new file mode 100644 index 0000000..10ec203 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/form/FormItem.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/form/FormLabel.vue b/packages/limn-explorer/src/components/ui/form/FormLabel.vue new file mode 100644 index 0000000..a7d69bb --- /dev/null +++ b/packages/limn-explorer/src/components/ui/form/FormLabel.vue @@ -0,0 +1,25 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/form/FormMessage.vue b/packages/limn-explorer/src/components/ui/form/FormMessage.vue new file mode 100644 index 0000000..8b34b09 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/form/FormMessage.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/form/index.ts b/packages/limn-explorer/src/components/ui/form/index.ts new file mode 100644 index 0000000..1a3be11 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/form/index.ts @@ -0,0 +1,7 @@ +export { default as FormControl } from './FormControl.vue' +export { default as FormDescription } from './FormDescription.vue' +export { default as FormItem } from './FormItem.vue' +export { default as FormLabel } from './FormLabel.vue' +export { default as FormMessage } from './FormMessage.vue' +export { FORM_ITEM_INJECTION_KEY } from './injectionKeys' +export { Form, Field as FormField, FieldArray as FormFieldArray } from 'vee-validate' diff --git a/packages/limn-explorer/src/components/ui/form/injectionKeys.ts b/packages/limn-explorer/src/components/ui/form/injectionKeys.ts new file mode 100644 index 0000000..b972d36 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/form/injectionKeys.ts @@ -0,0 +1,4 @@ +import type { InjectionKey } from 'vue' + +export const FORM_ITEM_INJECTION_KEY + = Symbol() as InjectionKey diff --git a/packages/limn-explorer/src/components/ui/form/useFormField.ts b/packages/limn-explorer/src/components/ui/form/useFormField.ts new file mode 100644 index 0000000..ed30a8a --- /dev/null +++ b/packages/limn-explorer/src/components/ui/form/useFormField.ts @@ -0,0 +1,30 @@ +import { FieldContextKey, useFieldError, useIsFieldDirty, useIsFieldTouched, useIsFieldValid } from 'vee-validate' +import { inject } from 'vue' +import { FORM_ITEM_INJECTION_KEY } from './injectionKeys' + +export function useFormField() { + const fieldContext = inject(FieldContextKey) + const fieldItemContext = inject(FORM_ITEM_INJECTION_KEY) + + if (!fieldContext) + throw new Error('useFormField should be used within ') + + const { name } = fieldContext + const id = fieldItemContext + + const fieldState = { + valid: useIsFieldValid(name), + isDirty: useIsFieldDirty(name), + isTouched: useIsFieldTouched(name), + error: useFieldError(name), + } + + return { + id, + name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState, + } +} diff --git a/packages/limn-explorer/src/components/ui/input/Input.vue b/packages/limn-explorer/src/components/ui/input/Input.vue new file mode 100644 index 0000000..b82c9d0 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/input/Input.vue @@ -0,0 +1,33 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/input/index.ts b/packages/limn-explorer/src/components/ui/input/index.ts new file mode 100644 index 0000000..a691dd6 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from './Input.vue' diff --git a/packages/limn-explorer/src/components/ui/label/Label.vue b/packages/limn-explorer/src/components/ui/label/Label.vue new file mode 100644 index 0000000..3199723 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/label/Label.vue @@ -0,0 +1,25 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/label/index.ts b/packages/limn-explorer/src/components/ui/label/index.ts new file mode 100644 index 0000000..572c2f0 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/label/index.ts @@ -0,0 +1 @@ +export { default as Label } from './Label.vue' diff --git a/packages/limn-explorer/src/components/ui/resizable/ResizableHandle.vue b/packages/limn-explorer/src/components/ui/resizable/ResizableHandle.vue new file mode 100644 index 0000000..8c008b8 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/resizable/ResizableHandle.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/resizable/ResizablePanel.vue b/packages/limn-explorer/src/components/ui/resizable/ResizablePanel.vue new file mode 100644 index 0000000..15efd37 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/resizable/ResizablePanel.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/resizable/ResizablePanelGroup.vue b/packages/limn-explorer/src/components/ui/resizable/ResizablePanelGroup.vue new file mode 100644 index 0000000..ea24782 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/resizable/ResizablePanelGroup.vue @@ -0,0 +1,42 @@ + + + + \ No newline at end of file diff --git a/packages/limn-explorer/src/components/ui/resizable/index.ts b/packages/limn-explorer/src/components/ui/resizable/index.ts new file mode 100644 index 0000000..5b3bb84 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/resizable/index.ts @@ -0,0 +1,3 @@ +export { default as ResizableHandle } from './ResizableHandle.vue' +export { default as ResizablePanel } from './ResizablePanel.vue' +export { default as ResizablePanelGroup } from './ResizablePanelGroup.vue' diff --git a/packages/limn-explorer/src/components/ui/select/Select.vue b/packages/limn-explorer/src/components/ui/select/Select.vue new file mode 100644 index 0000000..dc1f83d --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/Select.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectContent.vue b/packages/limn-explorer/src/components/ui/select/SelectContent.vue new file mode 100644 index 0000000..71a6061 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectContent.vue @@ -0,0 +1,52 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectGroup.vue b/packages/limn-explorer/src/components/ui/select/SelectGroup.vue new file mode 100644 index 0000000..4f36d92 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectGroup.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectItem.vue b/packages/limn-explorer/src/components/ui/select/SelectItem.vue new file mode 100644 index 0000000..1cdfa63 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectItem.vue @@ -0,0 +1,42 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectItemText.vue b/packages/limn-explorer/src/components/ui/select/SelectItemText.vue new file mode 100644 index 0000000..cff32ac --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectItemText.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectLabel.vue b/packages/limn-explorer/src/components/ui/select/SelectLabel.vue new file mode 100644 index 0000000..37a84dd --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectLabel.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectScrollDownButton.vue b/packages/limn-explorer/src/components/ui/select/SelectScrollDownButton.vue new file mode 100644 index 0000000..f03ff40 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectScrollDownButton.vue @@ -0,0 +1,25 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectScrollUpButton.vue b/packages/limn-explorer/src/components/ui/select/SelectScrollUpButton.vue new file mode 100644 index 0000000..078331b --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectScrollUpButton.vue @@ -0,0 +1,25 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectSeparator.vue b/packages/limn-explorer/src/components/ui/select/SelectSeparator.vue new file mode 100644 index 0000000..5ec7155 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectSeparator.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectTrigger.vue b/packages/limn-explorer/src/components/ui/select/SelectTrigger.vue new file mode 100644 index 0000000..5ffd488 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectTrigger.vue @@ -0,0 +1,32 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/SelectValue.vue b/packages/limn-explorer/src/components/ui/select/SelectValue.vue new file mode 100644 index 0000000..f198b96 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/SelectValue.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/select/index.ts b/packages/limn-explorer/src/components/ui/select/index.ts new file mode 100644 index 0000000..31b9294 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/select/index.ts @@ -0,0 +1,11 @@ +export { default as Select } from './Select.vue' +export { default as SelectContent } from './SelectContent.vue' +export { default as SelectGroup } from './SelectGroup.vue' +export { default as SelectItem } from './SelectItem.vue' +export { default as SelectItemText } from './SelectItemText.vue' +export { default as SelectLabel } from './SelectLabel.vue' +export { default as SelectScrollDownButton } from './SelectScrollDownButton.vue' +export { default as SelectScrollUpButton } from './SelectScrollUpButton.vue' +export { default as SelectSeparator } from './SelectSeparator.vue' +export { default as SelectTrigger } from './SelectTrigger.vue' +export { default as SelectValue } from './SelectValue.vue' diff --git a/packages/limn-explorer/src/components/ui/separator/Separator.vue b/packages/limn-explorer/src/components/ui/separator/Separator.vue new file mode 100644 index 0000000..d397e08 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/separator/Separator.vue @@ -0,0 +1,28 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/separator/index.ts b/packages/limn-explorer/src/components/ui/separator/index.ts new file mode 100644 index 0000000..2287bcb --- /dev/null +++ b/packages/limn-explorer/src/components/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from './Separator.vue' diff --git a/packages/limn-explorer/src/components/ui/sheet/Sheet.vue b/packages/limn-explorer/src/components/ui/sheet/Sheet.vue new file mode 100644 index 0000000..e2a3374 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/Sheet.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/SheetClose.vue b/packages/limn-explorer/src/components/ui/sheet/SheetClose.vue new file mode 100644 index 0000000..05077ea --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/SheetClose.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/SheetContent.vue b/packages/limn-explorer/src/components/ui/sheet/SheetContent.vue new file mode 100644 index 0000000..8e55613 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/SheetContent.vue @@ -0,0 +1,63 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/SheetDescription.vue b/packages/limn-explorer/src/components/ui/sheet/SheetDescription.vue new file mode 100644 index 0000000..e3682d3 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/SheetDescription.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/SheetFooter.vue b/packages/limn-explorer/src/components/ui/sheet/SheetFooter.vue new file mode 100644 index 0000000..d2ac823 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/SheetFooter.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/SheetHeader.vue b/packages/limn-explorer/src/components/ui/sheet/SheetHeader.vue new file mode 100644 index 0000000..ab20557 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/SheetHeader.vue @@ -0,0 +1,15 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/SheetOverlay.vue b/packages/limn-explorer/src/components/ui/sheet/SheetOverlay.vue new file mode 100644 index 0000000..3f27a86 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/SheetOverlay.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/SheetTitle.vue b/packages/limn-explorer/src/components/ui/sheet/SheetTitle.vue new file mode 100644 index 0000000..262fb5b --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/SheetTitle.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/SheetTrigger.vue b/packages/limn-explorer/src/components/ui/sheet/SheetTrigger.vue new file mode 100644 index 0000000..5981f8e --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/SheetTrigger.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sheet/index.ts b/packages/limn-explorer/src/components/ui/sheet/index.ts new file mode 100644 index 0000000..ee33431 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sheet/index.ts @@ -0,0 +1,8 @@ +export { default as Sheet } from './Sheet.vue' +export { default as SheetClose } from './SheetClose.vue' +export { default as SheetContent } from './SheetContent.vue' +export { default as SheetDescription } from './SheetDescription.vue' +export { default as SheetFooter } from './SheetFooter.vue' +export { default as SheetHeader } from './SheetHeader.vue' +export { default as SheetTitle } from './SheetTitle.vue' +export { default as SheetTrigger } from './SheetTrigger.vue' diff --git a/packages/limn-explorer/src/components/ui/sidebar/Sidebar.vue b/packages/limn-explorer/src/components/ui/sidebar/Sidebar.vue new file mode 100644 index 0000000..c75db5d --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/Sidebar.vue @@ -0,0 +1,96 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarContent.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarContent.vue new file mode 100644 index 0000000..3b7536c --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarContent.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarFooter.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarFooter.vue new file mode 100644 index 0000000..c324dff --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarFooter.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarGroup.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarGroup.vue new file mode 100644 index 0000000..57a099f --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarGroup.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupAction.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupAction.vue new file mode 100644 index 0000000..eb9a3ec --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupAction.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupContent.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupContent.vue new file mode 100644 index 0000000..5d5e2dd --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupContent.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupLabel.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupLabel.vue new file mode 100644 index 0000000..8e1c1e3 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarGroupLabel.vue @@ -0,0 +1,25 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarHeader.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarHeader.vue new file mode 100644 index 0000000..00673f7 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarHeader.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarInput.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarInput.vue new file mode 100644 index 0000000..ecaa977 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarInput.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarInset.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarInset.vue new file mode 100644 index 0000000..386c622 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarInset.vue @@ -0,0 +1,21 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenu.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenu.vue new file mode 100644 index 0000000..59ec071 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenu.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuAction.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuAction.vue new file mode 100644 index 0000000..4852f28 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuAction.vue @@ -0,0 +1,34 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuBadge.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuBadge.vue new file mode 100644 index 0000000..3984b33 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuBadge.vue @@ -0,0 +1,26 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuButton.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuButton.vue new file mode 100644 index 0000000..1d934b2 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuButton.vue @@ -0,0 +1,47 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuButtonChild.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuButtonChild.vue new file mode 100644 index 0000000..82998df --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuButtonChild.vue @@ -0,0 +1,34 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuItem.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuItem.vue new file mode 100644 index 0000000..b7b4d3f --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuItem.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSkeleton.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSkeleton.vue new file mode 100644 index 0000000..6302c35 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSkeleton.vue @@ -0,0 +1,34 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSub.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSub.vue new file mode 100644 index 0000000..11aec64 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSub.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSubButton.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSubButton.vue new file mode 100644 index 0000000..f9fae8f --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSubButton.vue @@ -0,0 +1,36 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSubItem.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSubItem.vue new file mode 100644 index 0000000..f0c35bc --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarMenuSubItem.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarProvider.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarProvider.vue new file mode 100644 index 0000000..2e08dec --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarProvider.vue @@ -0,0 +1,81 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarRail.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarRail.vue new file mode 100644 index 0000000..07e59be --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarRail.vue @@ -0,0 +1,33 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarSeparator.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarSeparator.vue new file mode 100644 index 0000000..1803bff --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarSeparator.vue @@ -0,0 +1,19 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/SidebarTrigger.vue b/packages/limn-explorer/src/components/ui/sidebar/SidebarTrigger.vue new file mode 100644 index 0000000..59f29b9 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/SidebarTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/sidebar/index.ts b/packages/limn-explorer/src/components/ui/sidebar/index.ts new file mode 100644 index 0000000..48da274 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/index.ts @@ -0,0 +1,60 @@ +import type { VariantProps } from 'class-variance-authority' +import type { HTMLAttributes } from 'vue' +import { cva } from 'class-variance-authority' + +export interface SidebarProps { + side?: 'left' | 'right' + variant?: 'sidebar' | 'floating' | 'inset' + collapsible?: 'offcanvas' | 'icon' | 'none' + class?: HTMLAttributes['class'] +} + +export { default as Sidebar } from './Sidebar.vue' +export { default as SidebarContent } from './SidebarContent.vue' +export { default as SidebarFooter } from './SidebarFooter.vue' +export { default as SidebarGroup } from './SidebarGroup.vue' +export { default as SidebarGroupAction } from './SidebarGroupAction.vue' +export { default as SidebarGroupContent } from './SidebarGroupContent.vue' +export { default as SidebarGroupLabel } from './SidebarGroupLabel.vue' +export { default as SidebarHeader } from './SidebarHeader.vue' +export { default as SidebarInput } from './SidebarInput.vue' +export { default as SidebarInset } from './SidebarInset.vue' +export { default as SidebarMenu } from './SidebarMenu.vue' +export { default as SidebarMenuAction } from './SidebarMenuAction.vue' +export { default as SidebarMenuBadge } from './SidebarMenuBadge.vue' +export { default as SidebarMenuButton } from './SidebarMenuButton.vue' +export { default as SidebarMenuItem } from './SidebarMenuItem.vue' +export { default as SidebarMenuSkeleton } from './SidebarMenuSkeleton.vue' +export { default as SidebarMenuSub } from './SidebarMenuSub.vue' +export { default as SidebarMenuSubButton } from './SidebarMenuSubButton.vue' +export { default as SidebarMenuSubItem } from './SidebarMenuSubItem.vue' +export { default as SidebarProvider } from './SidebarProvider.vue' +export { default as SidebarRail } from './SidebarRail.vue' +export { default as SidebarSeparator } from './SidebarSeparator.vue' +export { default as SidebarTrigger } from './SidebarTrigger.vue' + +export { useSidebar } from './utils' + +export const sidebarMenuButtonVariants = cva( + 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', + { + variants: { + variant: { + default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground', + outline: + 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]', + }, + size: { + default: 'h-8 text-sm', + sm: 'h-7 text-xs', + lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +) + +export type SidebarMenuButtonVariants = VariantProps diff --git a/packages/limn-explorer/src/components/ui/sidebar/utils.ts b/packages/limn-explorer/src/components/ui/sidebar/utils.ts new file mode 100644 index 0000000..6edb140 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/sidebar/utils.ts @@ -0,0 +1,19 @@ +import type { ComputedRef, Ref } from 'vue' +import { createContext } from 'reka-ui' + +export const SIDEBAR_COOKIE_NAME = 'sidebar_state' +export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 +export const SIDEBAR_WIDTH = '16rem' +export const SIDEBAR_WIDTH_MOBILE = '18rem' +export const SIDEBAR_WIDTH_ICON = '3rem' +export const SIDEBAR_KEYBOARD_SHORTCUT = 'b' + +export const [useSidebar, provideSidebarContext] = createContext<{ + state: ComputedRef<'expanded' | 'collapsed'> + open: Ref + setOpen: (value: boolean) => void + isMobile: Ref + openMobile: Ref + setOpenMobile: (value: boolean) => void + toggleSidebar: () => void +}>('Sidebar') diff --git a/packages/limn-explorer/src/components/ui/skeleton/Skeleton.vue b/packages/limn-explorer/src/components/ui/skeleton/Skeleton.vue new file mode 100644 index 0000000..153fe2c --- /dev/null +++ b/packages/limn-explorer/src/components/ui/skeleton/Skeleton.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/skeleton/index.ts b/packages/limn-explorer/src/components/ui/skeleton/index.ts new file mode 100644 index 0000000..be21fad --- /dev/null +++ b/packages/limn-explorer/src/components/ui/skeleton/index.ts @@ -0,0 +1 @@ +export { default as Skeleton } from './Skeleton.vue' diff --git a/packages/limn-explorer/src/components/ui/switch/Switch.vue b/packages/limn-explorer/src/components/ui/switch/Switch.vue new file mode 100644 index 0000000..0462d67 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/switch/Switch.vue @@ -0,0 +1,38 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/switch/index.ts b/packages/limn-explorer/src/components/ui/switch/index.ts new file mode 100644 index 0000000..87b4b17 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/switch/index.ts @@ -0,0 +1 @@ +export { default as Switch } from './Switch.vue' diff --git a/packages/limn-explorer/src/components/ui/tooltip/Tooltip.vue b/packages/limn-explorer/src/components/ui/tooltip/Tooltip.vue new file mode 100644 index 0000000..3ebeecc --- /dev/null +++ b/packages/limn-explorer/src/components/ui/tooltip/Tooltip.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/tooltip/TooltipContent.vue b/packages/limn-explorer/src/components/ui/tooltip/TooltipContent.vue new file mode 100644 index 0000000..62712e6 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/tooltip/TooltipContent.vue @@ -0,0 +1,33 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/tooltip/TooltipProvider.vue b/packages/limn-explorer/src/components/ui/tooltip/TooltipProvider.vue new file mode 100644 index 0000000..4b4203e --- /dev/null +++ b/packages/limn-explorer/src/components/ui/tooltip/TooltipProvider.vue @@ -0,0 +1,13 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/tooltip/TooltipTrigger.vue b/packages/limn-explorer/src/components/ui/tooltip/TooltipTrigger.vue new file mode 100644 index 0000000..36253c6 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/tooltip/TooltipTrigger.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/limn-explorer/src/components/ui/tooltip/index.ts b/packages/limn-explorer/src/components/ui/tooltip/index.ts new file mode 100644 index 0000000..5ab9653 --- /dev/null +++ b/packages/limn-explorer/src/components/ui/tooltip/index.ts @@ -0,0 +1,4 @@ +export { default as Tooltip } from './Tooltip.vue' +export { default as TooltipContent } from './TooltipContent.vue' +export { default as TooltipProvider } from './TooltipProvider.vue' +export { default as TooltipTrigger } from './TooltipTrigger.vue' diff --git a/packages/limn-explorer/src/demos/point.ts b/packages/limn-explorer/src/demos/point.ts new file mode 100644 index 0000000..33331e2 --- /dev/null +++ b/packages/limn-explorer/src/demos/point.ts @@ -0,0 +1,8 @@ +export const point = `import { Point } from 'limn' + const point = new Point(r.center.x, r.center.y) + + r.add(point, { + color: 'red', + radius: 10 + }) +` \ No newline at end of file diff --git a/packages/limn-explorer/src/demos/rectangle.ts b/packages/limn-explorer/src/demos/rectangle.ts index 09e85b2..284158f 100644 --- a/packages/limn-explorer/src/demos/rectangle.ts +++ b/packages/limn-explorer/src/demos/rectangle.ts @@ -1,5 +1,5 @@ export const rectangle = `import { Rectangle } from 'limn' - const rect = new Rectangle(c.center, c.center.add(100, 100)) + const rect = new Rectangle({ p1: r.center, p2: r.center.add(100, 100)}) r.add(rect, { fill: 'red' diff --git a/packages/limn-explorer/src/index.ts b/packages/limn-explorer/src/index.ts deleted file mode 100644 index 16b6e02..0000000 --- a/packages/limn-explorer/src/index.ts +++ /dev/null @@ -1,219 +0,0 @@ -import {createApp } from 'vue' -import App from './app/app.vue' - -createApp(App).mount(document.querySelector('#app')!) - -// import * as monaco from 'monaco-editor' -// import * as limnVars from 'limn' -// import { LimnRenderer } from 'limn' -// import './style.css' -// import limnTypes from 'limn/dist/index.d.ts?raw' - -// const container = document.querySelector('#editor')! - -// const code = `/** -// Limn Explorer - -// Here you can experiment with Limn library. -// CTRL+Enter - execute code -// CTRL+p - pause/resume timer - -// On mac it's CMD instead of CTRL - -// CTRL+\` - toggle code editor - -// Variables: -// r - LimnRenderer setup for the background canvas - - -// by hypersphere. -// Check out tutorials on https://hypersphere.blog -// **/ -// import { Circle, GenerativeCollection } from 'limn' - - -// const t = r.timer.infiniteForward(10000, i => i) - -// const circles = new GenerativeCollection( -// 50, -// i => new Circle({ center: r.center, radius: i * 15 })) -// .map((c, i) => c.segment(0.2).rotate(i * t.value)) - -// r.add(circles, { -// width: 10, -// stroke: 'rgb(150 150 150)' -// }) -// ` - -// function resolveImports(code: string) { -// // Replace import statements with variable declarations -// return code.replace( -// /import\s*{\s*([^}]+)\s*}\s*from\s*['"]limn['"];?\s*/g, -// (match, imports) => { -// // Clean up imports and create destructuring -// const cleanImports = imports.split(',').map(imp => imp.trim()).join(', ') -// return `// Import resolved: ${match}\nconst { ${cleanImports} } = limnLibrary; // Get from passed objects\n` -// } -// ) -// } - - -// // monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ -// // target: monaco.languages.typescript.ScriptTarget.ES2020, -// // allowNonTsExtensions: true, -// // moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs, -// // module: monaco.languages.typescript.ModuleKind.ESNext, -// // noEmit: true, -// // esModuleInterop: true, -// // allowJs: true, -// // strict: true, -// // skipLibCheck: true -// // }) - -// monaco.languages.typescript.typescriptDefaults.addExtraLib(limnTypes, -// 'file:///node_modules/limn/dist/index.d.ts' -// ) - -// monaco.languages.typescript.typescriptDefaults.addExtraLib(` -// declare global { -// const r: LimnRenderer; -// } - -// export {}; -// `, 'file:///globals.d.ts') - - - -// monaco.languages.registerCompletionItemProvider('typescript', { -// provideCompletionItems: () => { -// return { -// suggestions: [ -// { -// label: 'Limn Circle', -// kind: monaco.languages.CompletionItemKind.Snippet, -// documentation: 'Add basic circle in the middle', -// insertText: `r.add(\${1:r.center}, { -// radius: \${2:20}, -// color: '\${3:red}', -// })`, -// insertTextRules: -// monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet -// } -// ] -// }; -// } -// } as any); - - -// const editor = monaco.editor.create(container, { -// value: code, -// language: 'typescript', -// theme: 'vs-dark', -// automaticLayout: true, -// minimap: { enabled: false }, -// scrollBeyondLastLine: false, -// fontSize: 14, -// tabSize: 2, -// wordWrap: 'on', -// lineNumbers: 'on', -// suggest: { -// showWords: false, -// showKeywords: false, -// showEnums: false, -// showClasses: false, -// showConstructors: false -// } -// }) - -// editor.addAction({ -// id: 'limn.run-code', -// label: 'Limn: Run Code', -// contextMenuGroupId: 'navigation', -// contextMenuOrder: 0.90, -// keybindings: [ -// monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter -// ], -// run:function() { -// console.log('run code') -// // run code -// runCode() -// } -// }) - -// editor.addAction({ -// id: 'limn.toggle-timer', -// label: 'Limn: Toggle Timer', -// contextMenuGroupId: 'navigation', -// contextMenuOrder: 0.91, -// keybindings: [ -// monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyP -// ], -// run: () => { -// if (renderer.timer.isRunning) { -// renderer.timer.pause() -// } else { -// renderer.timer.start() -// } -// } -// }) - -// editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyK, () => { -// editor.trigger("", "editor.action.quickCommand", ""); // Opens the quickcommand -// const input = document.querySelector(".quick-input-box .input")!; // Gets the quickcommand input -// input.value = "> Limn"; // Change the input value -// input.dispatchEvent(new Event("input", { bubbles: true })); // Trigger an input event, for the search to register the new input value -// }) - -// // CREATING CONTEXT -// const app = document.querySelector('#app')! -// const ctx = app.getContext('2d')! -// const renderer = new LimnRenderer(ctx) -// let fn = new Function('r', 'limnLibrary', resolveImports(code)) -// renderer.fitScreen() -// fn(renderer, limnVars) -// renderer.watch() - -// const runCode = () => { -// const code = resolveImports(editor.getValue()) - -// renderer.clear() -// fn = new Function('r', 'limnLibrary', code) -// fn(renderer, limnVars) -// } - -// window.addEventListener('keydown', (e) => { -// console.log('keydown', e) -// // if ((e.metaKey || e.ctrlKey) && e.key === 'k') { -// // e.preventDefault() - -// // console.log('EDITOR') - -// // editor.focus(); // Editor needs focus to be able to trigger command -// // editor.trigger("", "editor.action.quickCommand", ""); // Opens the quickcommand -// // const input = document.querySelector(".quick-input-box .input")!; // Gets the quickcommand input -// // input.value = "> Your search string"; // Change the input value -// // input.dispatchEvent(new Event("input", { bubbles: true })); // Trigger an input event, for the search to register the new input value - -// // // console.log('Saving') -// // // const code = resolveImports(editor.getValue()) -// // // console.log('VALUE', code) - -// // // renderer.clear() -// // // fn = new Function('r', 'limnLibrary', code) -// // // fn(renderer, limnVars) -// // } -// // if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') { -// // e.preventDefault() -// // runCode() -// // } - -// if (e.ctrlKey && e.code === 'Backquote') { -// e.preventDefault() -// editorToggle() -// } -// }) - -// const editorToggle = () => { -// document.body.classList.toggle('hide-editor') -// } - diff --git a/packages/limn-explorer/src/lib/utils.ts b/packages/limn-explorer/src/lib/utils.ts new file mode 100644 index 0000000..d8d4539 --- /dev/null +++ b/packages/limn-explorer/src/lib/utils.ts @@ -0,0 +1,31 @@ +import { type ClassValue, clsx } from 'clsx' +import { twMerge } from 'tailwind-merge' + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} + + +export function throttle>(mainFunction: (...args: A) => void, delay: number) { + let timerFlag: number | null = null; // Variable to keep track of the timer + + // Returning a throttled version + return (...args: A) => { + if (timerFlag === null) { // If there is no timer currently running + mainFunction(...args); // Execute the main function + timerFlag = setTimeout(() => { // Set a timer to clear the timerFlag after the specified delay + timerFlag = null; // Clear the timerFlag to allow the main function to be executed again + }, delay); + } + }; +} + +export function debounce>(func: (...args: A) => void, timeout = 300){ + let timer: number | null = null; + return (...args: A) => { + if (timer) { + clearTimeout(timer) + } + timer = setTimeout(() => { func(...args) }, timeout); + }; +} \ No newline at end of file diff --git a/packages/limn-explorer/src/limnRenderer/limnRenderer.ts b/packages/limn-explorer/src/limnRenderer/limnRenderer.ts deleted file mode 100644 index 9edbea9..0000000 --- a/packages/limn-explorer/src/limnRenderer/limnRenderer.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const limnRenderer = () => { - -} \ No newline at end of file diff --git a/packages/limn-explorer/src/main.ts b/packages/limn-explorer/src/main.ts new file mode 100644 index 0000000..2425c0f --- /dev/null +++ b/packages/limn-explorer/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import './style.css' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/packages/limn-explorer/src/sidebar/index.ts b/packages/limn-explorer/src/sidebar/index.ts deleted file mode 100644 index 101ffec..0000000 --- a/packages/limn-explorer/src/sidebar/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Demo } from "../demos"; - -const generateDemo = (demo: Demo) => { - // const container = document.create -} - -const sidebar = (container: HTMLDivElement, demos: Demo[]) => { - demos.forEach(d => { - generateDemo(d) - }) -} \ No newline at end of file diff --git a/packages/limn-explorer/src/state/config.ts b/packages/limn-explorer/src/state/config.ts new file mode 100644 index 0000000..fc847de --- /dev/null +++ b/packages/limn-explorer/src/state/config.ts @@ -0,0 +1,14 @@ +import { reactive } from 'vue' +import { start } from '../demos' + +export const config = reactive({ + layout: 'horizontal', + pause: false, + autoRun: false, + currentCode: { + code: start + }, + runCurrentCode: () => { + console.log('not implemented') + } +}) \ No newline at end of file diff --git a/packages/limn-explorer/src/style.css b/packages/limn-explorer/src/style.css index df5c3b3..210000b 100644 --- a/packages/limn-explorer/src/style.css +++ b/packages/limn-explorer/src/style.css @@ -1,52 +1,123 @@ -body, -html { - margin: 0; - padding: 0; - min-height: 100%; -} - -#editor { - height: 100vh; - box-sizing: border-box; - padding: 1em; -} +@import "tailwindcss"; +@import "tw-animate-css"; -.monaco-editor.monaco-editor { - --vscode-editor-background: transparent; - --vscode-focusBorder: transparent; - --vscode-editorGutter-background: transparent; -} - -/* .monaco-editor .margin { - display: none; - } */ - -#app { - width: 100%; - height: 100vh; - position: absolute; - top: 0; - left: 0; - background: #1e1e1e; -} +@custom-variant dark (&:is(.dark *)); -.monaco-editor .view-line span:not(:has(span)) { - background: rgb(30 30 30 / 70%); +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); } -.hide-editor #editor { - display: none; +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.129 0.042 264.695); + --card: oklch(1 0 0); + --card-foreground: oklch(0.129 0.042 264.695); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.129 0.042 264.695); + --primary: oklch(0.208 0.042 265.755); + --primary-foreground: oklch(0.984 0.003 247.858); + --secondary: oklch(0.968 0.007 247.896); + --secondary-foreground: oklch(0.208 0.042 265.755); + --muted: oklch(0.968 0.007 247.896); + --muted-foreground: oklch(0.554 0.046 257.417); + --accent: oklch(0.968 0.007 247.896); + --accent-foreground: oklch(0.208 0.042 265.755); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.929 0.013 255.508); + --input: oklch(0.929 0.013 255.508); + --ring: oklch(0.704 0.04 256.788); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.984 0.003 247.858); + --sidebar-foreground: oklch(0.129 0.042 264.695); + --sidebar-primary: oklch(0.208 0.042 265.755); + --sidebar-primary-foreground: oklch(0.984 0.003 247.858); + --sidebar-accent: oklch(0.968 0.007 247.896); + --sidebar-accent-foreground: oklch(0.208 0.042 265.755); + --sidebar-border: oklch(0.929 0.013 255.508); + --sidebar-ring: oklch(0.704 0.04 256.788); } -.sidebar { - background: black; - color: #FFF; +.dark { + --background: oklch(0.129 0.042 264.695); + --foreground: oklch(0.984 0.003 247.858); + --card: oklch(0.129 0.042 264.695); + --card-foreground: oklch(0.984 0.003 247.858); + --popover: oklch(0.129 0.042 264.695); + --popover-foreground: oklch(0.984 0.003 247.858); + --primary: oklch(0.984 0.003 247.858); + --primary-foreground: oklch(0.208 0.042 265.755); + --secondary: oklch(0.279 0.041 260.031); + --secondary-foreground: oklch(0.984 0.003 247.858); + --muted: oklch(0.279 0.041 260.031); + --muted-foreground: oklch(0.704 0.04 256.788); + --accent: oklch(0.279 0.041 260.031); + --accent-foreground: oklch(0.984 0.003 247.858); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.279 0.041 260.031); + --input: oklch(0.279 0.041 260.031); + --ring: oklch(0.446 0.043 257.281); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.208 0.042 265.755); + --sidebar-foreground: oklch(0.984 0.003 247.858); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.984 0.003 247.858); + --sidebar-accent: oklch(0.279 0.041 260.031); + --sidebar-accent-foreground: oklch(0.984 0.003 247.858); + --sidebar-border: oklch(0.279 0.041 260.031); + --sidebar-ring: oklch(0.446 0.043 257.281); } -#container { - width: 100vw; - height: 100vh; - background: red; - display: grid; - grid-template-columns: 100px 1fr 1fr; +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } } \ No newline at end of file diff --git a/packages/limn-explorer/src/vite-env.d.ts b/packages/limn-explorer/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/packages/limn-explorer/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/limn-explorer/tsconfig.app.json b/packages/limn-explorer/tsconfig.app.json new file mode 100644 index 0000000..84e1fa4 --- /dev/null +++ b/packages/limn-explorer/tsconfig.app.json @@ -0,0 +1,21 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ] + }, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] +} diff --git a/packages/limn-explorer/tsconfig.json b/packages/limn-explorer/tsconfig.json new file mode 100644 index 0000000..fec8c8e --- /dev/null +++ b/packages/limn-explorer/tsconfig.json @@ -0,0 +1,13 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/packages/limn-explorer/tsconfig.node.json b/packages/limn-explorer/tsconfig.node.json new file mode 100644 index 0000000..f85a399 --- /dev/null +++ b/packages/limn-explorer/tsconfig.node.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/limn-explorer/vite.config.ts b/packages/limn-explorer/vite.config.ts index 79601c1..8b64411 100644 --- a/packages/limn-explorer/vite.config.ts +++ b/packages/limn-explorer/vite.config.ts @@ -1,11 +1,15 @@ -import { defineConfig } from 'vite'; -// import monacoEditorPlugin from 'vite-plugin-monaco-editor'; +import path from 'node:path' +import tailwindcss from '@tailwindcss/vite' import vue from '@vitejs/plugin-vue' - +import svgLoader from 'vite-svg-loader' +import { defineConfig } from 'vite' export default defineConfig({ + plugins: [vue(), tailwindcss(), svgLoader()], base: './', - plugins: [/*monacoEditorPlugin({ - languageWorkers: ['typescript'] - })*/, vue()], -}); \ No newline at end of file + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, +}) \ No newline at end of file diff --git a/packages/limn/src/canvas/Renderer.ts b/packages/limn/src/canvas/Renderer.ts index f9bcfa5..7fd1ea9 100644 --- a/packages/limn/src/canvas/Renderer.ts +++ b/packages/limn/src/canvas/Renderer.ts @@ -29,6 +29,28 @@ import { RVideo } from "./RVideo"; import { RPath } from "./RPath"; import { Path } from "../primitives/Path"; +// FIXME: do proper typings here +const throttle = (fn: Function, wait: number = 300) => { + let inThrottle: boolean, + lastFn: ReturnType, + lastTime: number; + return function (...args: any[]) { + if (!inThrottle) { + fn(...args); + lastTime = Date.now(); + inThrottle = true; + } else { + clearTimeout(lastFn); + lastFn = setTimeout(() => { + if (Date.now() - lastTime >= wait) { + fn(...args) + lastTime = Date.now(); + } + }, Math.max(wait - (Date.now() - lastTime), 0)); + } + }; +}; + const RENDER_CLASSES = [ [Point, RPoint], [Line, RLine], @@ -49,22 +71,22 @@ type VV = ExtractInstancePairs[number] type O = Extract[1] -type MapPairToInstances = - [InstanceType, InstanceType]; +type MapPairToInstances = + [InstanceType, InstanceType]; - type ExtractInstancePairs = { +type ExtractInstancePairs = { [K in keyof T]: MapPairToInstances; - }; +}; type Config = O extends PrimitiveRenderable ? [config: Partial] : [] type RR = VV[0] | Renderable type OR = T extends ReactiveArray ? -TT extends Renderable ? -RArray : TT extends VV[0] ? OR extends PrimitiveRenderable ? RArray> : never : never -: -T extends VV[0] ? O : T + TT extends Renderable ? + RArray : TT extends VV[0] ? OR extends PrimitiveRenderable ? RArray> : never : never + : + T extends VV[0] ? O : T type ConfigR = T extends ReactiveArray ? TT extends RR ? @@ -157,6 +179,24 @@ export class LimnRenderer { return this } + fitContainer() { + // FIXME: observer + + const fn = throttle((entries: ResizeObserverEntry[]) => { + const canvas = entries[0].target as HTMLCanvasElement + const box = canvas.getBoundingClientRect() + + canvas.width = box.width + canvas.height = box.height + this._width.set(this.ctx.canvas.width) + this._height.set(this.ctx.canvas.height) + }, 100) + + const observer = new ResizeObserver(fn) + observer.observe(this.ctx.canvas as any) + fn([{ target: this.ctx.canvas }]) + } + /** * Adds new item to render on canvas * @param item either Renderable or a basic shape @@ -165,7 +205,7 @@ export class LimnRenderer { */ add( item: Item, - ...[config]: ConfigR + ...[config]: ConfigR ): OR { if (isRenderable(item)) { this.items.set([...this.items.value, item]) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44871e3..d9ce2e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,7 +32,7 @@ importers: version: 3.4.2 vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.25.0)(@types/node@22.15.18)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3) + version: 1.6.3(@algolia/client-search@5.25.0)(@types/node@24.0.7)(lightningcss@1.30.1)(postcss@8.5.6)(search-insights@2.17.3)(stylus@0.57.0)(typescript@5.8.3) vue: specifier: ^3.5.14 version: 3.5.14(typescript@5.8.3) @@ -47,7 +47,7 @@ importers: version: 0.1.5 vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@22.15.18)(rollup@4.40.0)(typescript@5.8.3)(vite@5.4.18(@types/node@22.15.18)) + version: 4.5.4(@types/node@24.0.7)(rollup@4.40.0)(typescript@5.8.3)(vite@5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0)) devDependencies: '@eslint/js': specifier: ^9.27.0 @@ -60,44 +60,147 @@ importers: version: 0.25.5 eslint: specifier: ^9.27.0 - version: 9.27.0 + version: 9.27.0(jiti@2.4.2) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.18) + version: 29.7.0(@types/node@24.0.7) ts-jest: specifier: ^29.3.4 - version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.5)(jest@29.7.0(@types/node@22.15.18))(typescript@5.8.3) + version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.5)(jest@29.7.0(@types/node@24.0.7))(typescript@5.8.3) typescript: specifier: ^5.3.3 version: 5.8.3 typescript-eslint: specifier: ^8.32.1 - version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) vite: specifier: ^5.1.4 - version: 5.4.18(@types/node@22.15.18) + version: 5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0) packages/limn-explorer: dependencies: + '@tailwindcss/vite': + specifier: ^4.1.11 + version: 4.1.11(vite@7.0.0(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0)) + '@vee-validate/zod': + specifier: ^4.15.1 + version: 4.15.1(vue@3.5.17(typescript@5.8.3))(zod@3.25.67) + '@vueuse/core': + specifier: ^13.4.0 + version: 13.4.0(vue@3.5.17(typescript@5.8.3)) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + limn: + specifier: workspace:* + version: link:../limn + lucide-vue-next: + specifier: ^0.525.0 + version: 0.525.0(vue@3.5.17(typescript@5.8.3)) + monaco-editor: + specifier: ^0.52.2 + version: 0.52.2 + reka-ui: + specifier: ^2.3.1 + version: 2.3.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 + tailwindcss: + specifier: ^4.1.11 + version: 4.1.11 + tw-animate-css: + specifier: ^1.3.4 + version: 1.3.4 + vee-validate: + specifier: ^4.15.1 + version: 4.15.1(vue@3.5.17(typescript@5.8.3)) + vue: + specifier: ^3.5.17 + version: 3.5.17(typescript@5.8.3) + zod: + specifier: ^3.25.67 + version: 3.25.67 + devDependencies: + '@types/node': + specifier: ^24.0.7 + version: 24.0.7 + '@vitejs/plugin-vue': + specifier: ^6.0.0 + version: 6.0.0(vite@7.0.0(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0))(vue@3.5.17(typescript@5.8.3)) + '@vue/tsconfig': + specifier: ^0.7.0 + version: 0.7.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + typescript: + specifier: ~5.8.3 + version: 5.8.3 + vite: + specifier: ^7.0.0 + version: 7.0.0(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0) + vite-svg-loader: + specifier: ^5.1.0 + version: 5.1.0(vue@3.5.17(typescript@5.8.3)) + vue-tsc: + specifier: ^2.2.10 + version: 2.2.10(typescript@5.8.3) + + packages/limn-explorer-old: + dependencies: + '@tailwindcss/vite': + specifier: ^4.1.11 + version: 4.1.11(vite@6.3.5(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0)) + '@vueuse/core': + specifier: ^13.4.0 + version: 13.4.0(vue@3.5.17(typescript@5.8.3)) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 esbuild: specifier: ^0.25.5 version: 0.25.5 limn: specifier: workspace:* version: link:../limn + lucide-vue-next: + specifier: ^0.525.0 + version: 0.525.0(vue@3.5.17(typescript@5.8.3)) monaco-editor: specifier: ^0.52.2 version: 0.52.2 + reka-ui: + specifier: ^2.3.1 + version: 2.3.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 + tailwindcss: + specifier: ^4.1.11 + version: 4.1.11 + tw-animate-css: + specifier: ^1.3.4 + version: 1.3.4 vue: specifier: ^3.5.14 - version: 3.5.14(typescript@5.8.3) + version: 3.5.17(typescript@5.8.3) devDependencies: + '@types/node': + specifier: ^24.0.7 + version: 24.0.7 '@vitejs/plugin-vue': specifier: ^6.0.0 - version: 6.0.0(vite@6.3.5(@types/node@22.15.18))(vue@3.5.14(typescript@5.8.3)) + version: 6.0.0(vite@6.3.5(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0))(vue@3.5.17(typescript@5.8.3)) + shadcn-vue: + specifier: ^2.2.0 + version: 2.2.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.18) + version: 6.3.5(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0) vite-plugin-monaco-editor: specifier: ^1.1.0 version: 1.1.0(monaco-editor@0.52.2) @@ -210,10 +313,24 @@ packages: resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.27.1': + resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} @@ -224,10 +341,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -249,6 +380,16 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.27.7': + resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@8.0.0-alpha.12': + resolution: {integrity: sha512-AzWmrp4uJ+DcXVH0uoUpJVhRqxNirC0BbXsZ82AQuVod41CoaV5G+cwcvtYusrIIxv7BIJb6ce0dQ9L0wAl1iA==} + engines: {node: ^18.20.0 || ^20.10.0 || >=21.0.0} + hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -340,6 +481,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.1': + resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.27.1': resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} @@ -356,6 +515,10 @@ packages: resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.27.7': + resolution: {integrity: sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -763,6 +926,18 @@ packages: resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@floating-ui/core@1.7.2': + resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} + + '@floating-ui/dom@1.7.2': + resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@floating-ui/vue@1.1.7': + resolution: {integrity: sha512-idmAtbAIigGXN2SI5gItiXYBYtNfDTP9yIiObxgu13dgtG7ARCHlNfnR29GxP4LI4o13oiwsJ8wVgghj1lNqcw==} + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -789,6 +964,28 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + '@internationalized/date@3.8.2': + resolution: {integrity: sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==} + + '@internationalized/number@3.6.3': + resolution: {integrity: sha512-p+Zh1sb6EfrfVaS86jlHGQ9HA66fJhV9x5LiE5vCbZtXEHAuhcmUZUdZ4WrFpUBfNalr2OkAJI5AcKEQF+Lebw==} + + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -1097,6 +1294,114 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@tailwindcss/node@4.1.11': + resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==} + + '@tailwindcss/oxide-android-arm64@4.1.11': + resolution: {integrity: sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.11': + resolution: {integrity: sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.11': + resolution: {integrity: sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.11': + resolution: {integrity: sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': + resolution: {integrity: sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': + resolution: {integrity: sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.11': + resolution: {integrity: sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.11': + resolution: {integrity: sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.11': + resolution: {integrity: sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.11': + resolution: {integrity: sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': + resolution: {integrity: sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.11': + resolution: {integrity: sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.11': + resolution: {integrity: sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.11': + resolution: {integrity: sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + + '@tanstack/virtual-core@3.13.12': + resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} + + '@tanstack/vue-virtual@3.13.12': + resolution: {integrity: sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww==} + peerDependencies: + vue: ^2.7.0 || ^3.0.0 + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@ts-morph/common@0.27.0': + resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} + '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -1151,8 +1456,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@22.15.18': - resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} + '@types/node@24.0.7': + resolution: {integrity: sha512-YIEUUr4yf8q8oQoXPpSlnvKNVKDQlPMWrmOcgzoduo7kvA2UF0/BwJ/eMKFTiTtkNL17I0M6Xe2tvwFU7be6iw==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -1219,6 +1524,16 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unovue/detypes@0.8.5': + resolution: {integrity: sha512-Yz4JeWOHGa+w/3YudVdng8hgN/VGW9cvp8xmFkmPPFzalGblLPPSpIRiwVo853yLstMZO2LLwe0vOoLAQsUQXw==} + engines: {node: '>=18'} + hasBin: true + + '@vee-validate/zod@4.15.1': + resolution: {integrity: sha512-329Z4TDBE5Vx0FdbA8S4eR9iGCFFUNGbxjpQ20ff5b5wGueScjocUIx9JHPa79LTG06RnlUR4XogQsjN4tecKA==} + peerDependencies: + zod: ^3.24.0 + '@vitejs/plugin-vue@5.2.4': resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1245,15 +1560,27 @@ packages: '@vue/compiler-core@3.5.14': resolution: {integrity: sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==} + '@vue/compiler-core@3.5.17': + resolution: {integrity: sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==} + '@vue/compiler-dom@3.5.14': resolution: {integrity: sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==} + '@vue/compiler-dom@3.5.17': + resolution: {integrity: sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==} + '@vue/compiler-sfc@3.5.14': resolution: {integrity: sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==} + '@vue/compiler-sfc@3.5.17': + resolution: {integrity: sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==} + '@vue/compiler-ssr@3.5.14': resolution: {integrity: sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==} + '@vue/compiler-ssr@3.5.17': + resolution: {integrity: sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==} + '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -1274,26 +1601,70 @@ packages: typescript: optional: true + '@vue/language-core@2.2.10': + resolution: {integrity: sha512-+yNoYx6XIKuAO8Mqh1vGytu8jkFEOH5C8iOv3i8Z/65A7x9iAOXA97Q+PqZ3nlm2lxf5rOJuIGI/wDtx/riNYw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@vue/reactivity@3.5.14': resolution: {integrity: sha512-7cK1Hp343Fu/SUCCO52vCabjvsYu7ZkOqyYu7bXV9P2yyfjUMUXHZafEbq244sP7gf+EZEz+77QixBTuEqkQQw==} + '@vue/reactivity@3.5.17': + resolution: {integrity: sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw==} + '@vue/runtime-core@3.5.14': resolution: {integrity: sha512-w9JWEANwHXNgieAhxPpEpJa+0V5G0hz3NmjAZwlOebtfKyp2hKxKF0+qSh0Xs6/PhfGihuSdqMprMVcQU/E6ag==} + '@vue/runtime-core@3.5.17': + resolution: {integrity: sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q==} + '@vue/runtime-dom@3.5.14': resolution: {integrity: sha512-lCfR++IakeI35TVR80QgOelsUIdcKjd65rWAMfdSlCYnaEY5t3hYwru7vvcWaqmrK+LpI7ZDDYiGU5V3xjMacw==} + '@vue/runtime-dom@3.5.17': + resolution: {integrity: sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g==} + '@vue/server-renderer@3.5.14': resolution: {integrity: sha512-Rf/ISLqokIvcySIYnv3tNWq40PLpNLDLSJwwVWzG6MNtyIhfbcrAxo5ZL9nARJhqjZyWWa40oRb2IDuejeuv6w==} peerDependencies: vue: 3.5.14 + '@vue/server-renderer@3.5.17': + resolution: {integrity: sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA==} + peerDependencies: + vue: 3.5.17 + '@vue/shared@3.5.14': resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==} + '@vue/shared@3.5.17': + resolution: {integrity: sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==} + + '@vue/tsconfig@0.7.0': + resolution: {integrity: sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==} + peerDependencies: + typescript: 5.x + vue: ^3.4.0 + peerDependenciesMeta: + typescript: + optional: true + vue: + optional: true + + '@vuedx/template-ast-types@0.7.1': + resolution: {integrity: sha512-Mqugk/F0lFN2u9bhimH6G1kSu2hhLi2WoqgCVxrMvgxm2kDc30DtdvVGRq+UgEmKVP61OudcMtZqkUoGQeFBUQ==} + '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} + '@vueuse/core@13.4.0': + resolution: {integrity: sha512-OnK7zW3bTq/QclEk17+vDFN3tuAm8ONb9zQUIHrYQkkFesu3WeGUx/3YzpEp+ly53IfDAT9rsYXgGW6piNZC5w==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/integrations@12.8.2': resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} peerDependencies: @@ -1338,9 +1709,17 @@ packages: '@vueuse/metadata@12.8.2': resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} + '@vueuse/metadata@13.4.0': + resolution: {integrity: sha512-CPDQ/IgOeWbqItg1c/pS+Ulum63MNbpJ4eecjFJqgD/JUCJ822zLfpw6M9HzSvL6wbzMieOtIAW/H8deQASKHg==} + '@vueuse/shared@12.8.2': resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} + '@vueuse/shared@13.4.0': + resolution: {integrity: sha512-+AxuKbw8R1gYy5T21V5yhadeNM7rJqb4cPaRI9DdGnnNl3uqXh+unvQ3uCaA2DjYLbNr1+l7ht/B4qEsRegX6A==} + peerDependencies: + vue: ^3.5.0 + '@wdns/vue-code-block@2.3.5': resolution: {integrity: sha512-09TguXcFZEA/9Fyx4c/3Jp4XUK82OKiT1TwH8cBeGg6Nj1E1R16nuABq1yJSvq/GZCxXtOJWw9i3TdxV4MctOw==} @@ -1386,6 +1765,9 @@ packages: alien-signals@0.4.14: resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} + alien-signals@1.0.13: + resolution: {integrity: sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1398,6 +1780,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1406,6 +1792,10 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1416,13 +1806,30 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + ast-types-x@1.18.0: + resolution: {integrity: sha512-ZtfIlyTCmnAXPCQo4mSDtFsHL7L3q0sJfpVYPmy5uYPjs+fynzOuc1Cg6yQ9fF6h61RjEWtOlRFwV1Kc80Qs6A==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1458,6 +1865,9 @@ packages: birpc@2.3.0: resolution: {integrity: sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1505,6 +1915,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -1518,13 +1932,35 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cjs-module-lexer@1.4.3: resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + engines: {node: '>=4'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + clipper2-js@1.2.4: resolution: {integrity: sha512-xD6ETXBuFYRI0IDWfSbkmMYB+M+nPoZQVVLi1GGlVhUVKV8rC//YYP6YHJX0ciyPsWYUCMxcv1QaIGLfnQo18Q==} peerDependencies: @@ -1535,10 +1971,17 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} @@ -1552,6 +1995,18 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@14.0.0: + resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} + engines: {node: '>=20'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + compare-versions@6.1.1: resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} @@ -1564,6 +2019,10 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1571,6 +2030,15 @@ packages: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + create-jest@29.7.0: resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1580,6 +2048,28 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + css@3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -1595,6 +2085,10 @@ packages: supports-color: optional: true + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dedent@1.6.0: resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} peerDependencies: @@ -1603,6 +2097,9 @@ packages: babel-plugin-macros: optional: true + deep-diff@1.0.2: + resolution: {integrity: sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1610,14 +2107,24 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -1629,10 +2136,30 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + diff@8.0.2: + resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} + engines: {node: '>=0.3.1'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} @@ -1648,9 +2175,19 @@ packages: emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.18.2: + resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -1659,6 +2196,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -1759,6 +2300,9 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -1812,6 +2356,10 @@ packages: focus-trap@7.6.4: resolution: {integrity: sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + fs-extra@11.3.0: resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} @@ -1843,6 +2391,14 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-own-enumerable-keys@1.0.0: + resolution: {integrity: sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==} + engines: {node: '>=14.16'} + get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -1851,6 +2407,9 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1859,6 +2418,11 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -1875,6 +2439,11 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} + gonzales-pe@4.3.0: + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} + engines: {node: '>=0.6.0'} + hasBin: true + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -1979,10 +2548,22 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-obj@3.0.0: + resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} + engines: {node: '>=12'} + + is-regexp@3.1.0: + resolution: {integrity: sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==} + engines: {node: '>=12'} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -1991,6 +2572,14 @@ packages: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} @@ -2026,6 +2615,10 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -2160,6 +2753,10 @@ packages: node-notifier: optional: true + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -2223,33 +2820,114 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] - local-pkg@1.1.1: - resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} - engines: {node: '>=14'} + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + local-pkg@1.1.1: + resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.sortedlastindex@4.1.0: + resolution: {integrity: sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==} + lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -2257,6 +2935,11 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lucide-vue-next@0.525.0: + resolution: {integrity: sha512-Xf8+x8B2DrnGDV/rxylS+KBp2FIe6ljwDn2JsGTZZvXIfhmm/q+nv8RuGO1OyoMjOVkkz7CqtUqJfwtFPRbB2w==} + peerDependencies: + vue: '>=3.0.1' + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -2276,6 +2959,12 @@ packages: mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -2306,6 +2995,14 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@10.0.3: + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + engines: {node: 20 || >=22} + minimatch@3.0.8: resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} @@ -2320,12 +3017,28 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + minisearch@7.1.2: resolution: {integrity: sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} @@ -2350,6 +3063,12 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + + node-html-parser@7.0.1: + resolution: {integrity: sha512-KGtmPY2kS0thCWGK0VuPyOS+pBKhhe8gXztzA2ilAOhbUbxa9homF1bOyKvhGzMLXUoRds9IOmr/v5lr/lqNmA==} + node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -2364,6 +3083,20 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nypm@0.6.0: + resolution: {integrity: sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2371,6 +3104,10 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} @@ -2384,6 +3121,10 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -2419,6 +3160,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} @@ -2448,6 +3192,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2487,10 +3235,34 @@ packages: pkg-types@2.1.0: resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} + postcss-less@6.0.0: + resolution: {integrity: sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==} + engines: {node: '>=12'} + peerDependencies: + postcss: ^8.3.5 + + postcss-sass@0.5.0: + resolution: {integrity: sha512-qtu8awh1NMF3o9j/x9j3EZnd+BlF66X6NZYl12BdKoG2Z4hmydOt/dZj2Nq+g0kfk2pQy3jeYFBmvG9DBwynGQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + + postcss-styl@0.12.3: + resolution: {integrity: sha512-8I7Cd8sxiEITIp32xBK4K/Aj1ukX6vuWnx8oY/oAH35NfQI4OZaY5nd68Yx8HeN5S49uhQ6DL0rNk0ZBu/TaLg==} + engines: {node: ^8.10.0 || ^10.13.0 || ^11.10.1 || >=12.13.0} + postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + preact@10.26.6: resolution: {integrity: sha512-5SRRBinwpwkaD+OqlBDeITlRgvd8I8QlxHJw9AxSdMNV6O+LodN9nUyYGpSF7sadHjs6RzeFShMexC6DbtWr9g==} @@ -2503,6 +3275,11 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true + pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2538,6 +3315,10 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} + recast-x@1.0.5: + resolution: {integrity: sha512-CkfWKhQiYsMQYaWUkHdERXUxT2jJLBoa5y7zFv3dUAE7Ly5oU/0hsqrENyEfrCL03pDsQYbnoz17Cbagx/c2OA==} + engines: {node: '>= 4'} + regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -2547,6 +3328,11 @@ packages: regex@6.0.1: resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + reka-ui@2.3.1: + resolution: {integrity: sha512-2SjGeybd7jvD8EQUkzjgg7GdOQdf4cTwdVMq/lDNTMqneUFNnryGO43dg8WaM/jaG9QpSCZBvstfBFWlDdb2Zg==} + peerDependencies: + vue: '>= 3.2.0' + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -2567,6 +3353,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve.exports@2.0.3: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} @@ -2576,6 +3365,10 @@ packages: engines: {node: '>= 0.4'} hasBin: true + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2597,6 +3390,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + search-insights@2.17.3: resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} @@ -2614,6 +3410,10 @@ packages: engines: {node: '>=10'} hasBin: true + shadcn-vue@2.2.0: + resolution: {integrity: sha512-D7RZC1WHb6YFQczEpVhKQl4esok8tKNByO1sZTbzMyRlLMlgRuo//bZqeXU/zxFiFhrRhgtpxO3adQGIMmMP8A==} + hasBin: true + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2645,10 +3445,18 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-resolve@0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -2656,6 +3464,10 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -2673,6 +3485,10 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -2685,13 +3501,29 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + stringify-object@5.0.0: + resolution: {integrity: sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==} + engines: {node: '>=14.16'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -2708,6 +3540,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + stylus@0.57.0: + resolution: {integrity: sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==} + hasBin: true + superjson@2.2.2: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} @@ -2724,9 +3560,32 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + + tailwindcss@4.1.11: + resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -2735,6 +3594,15 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} @@ -2783,9 +3651,15 @@ packages: esbuild: optional: true + ts-morph@26.0.0: + resolution: {integrity: sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tw-animate-css@1.3.4: + resolution: {integrity: sha512-dd1Ht6/YQHcNbq0znIT6dG8uhO7Ce+VIIhZUhjsryXsMPJQz3bZg7Q2eNzLwipb25bRZslGb2myio5mScd1TFg==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2826,8 +3700,12 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + + undici@7.11.0: + resolution: {integrity: sha512-heTSIac3iLhsmZhUCjyS3JQEkZELateufzZuBaVM5RHXdSBMb1LPMQf5x+FH7qjsZYDP0ttAc3nnVpUB+wYbOg==} + engines: {node: '>=20.18.1'} unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -2865,6 +3743,11 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} + vee-validate@4.15.1: + resolution: {integrity: sha512-DkFsiTwEKau8VIxyZBGdO6tOudD+QoUBPuHj3e6QFqmbfCRj1ArmYWue9lEp6jLSWBIw4XPlDLjFIZNLdRAMSg==} + peerDependencies: + vue: ^3.4.26 + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -2885,6 +3768,11 @@ packages: peerDependencies: monaco-editor: '>=0.33.0' + vite-svg-loader@5.1.0: + resolution: {integrity: sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==} + peerDependencies: + vue: '>=3.2.13' + vite@5.4.18: resolution: {integrity: sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2956,6 +3844,46 @@ packages: yaml: optional: true + vite@7.0.0: + resolution: {integrity: sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitepress@1.6.3: resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==} hasBin: true @@ -2971,6 +3899,33 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@10.1.4: + resolution: {integrity: sha512-EIZvCukIEMHEb3mxOKemtvWR1fcUAdWWAgkfyjmRHzvyhrZvBvH9oz69+thDIWhGiIQjZnPkCn8yHqvjM+a9eg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + vue-metamorph@3.3.3: + resolution: {integrity: sha512-NPeDg2/ZL4lDJsC/PjEfFq+Ln3Rr7cX86AQo4bI5V6ziUTZOMY93HyIwKHW37BrIf4YB97llrGtvM+eMhwr1jw==} + hasBin: true + + vue-tsc@2.2.10: + resolution: {integrity: sha512-jWZ1xSaNbabEV3whpIDMbjVSVawjAyW+x1n3JeGQo7S0uv2n9F/JMgWW90tGWNFRKya4YwKMZgCtr0vRAM7DeQ==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + vue@3.5.14: resolution: {integrity: sha512-LbOm50/vZFG6Mhy6KscQYXZMQ0LMCC/y40HDJPPvGFQ+i/lUH+PJHR6C3assgOQiXdl6tAfsXHbXYVBZZu65ew==} peerDependencies: @@ -2979,6 +3934,14 @@ packages: typescript: optional: true + vue@3.5.17: + resolution: {integrity: sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -2995,6 +3958,10 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -3012,6 +3979,10 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -3024,6 +3995,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zod@3.25.67: + resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} + zone.js@0.13.3: resolution: {integrity: sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==} @@ -3190,6 +4164,10 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.27.7 + '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.27.2 @@ -3198,6 +4176,26 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.27.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.27.1 @@ -3214,8 +4212,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.27.7 + '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} @@ -3231,6 +4249,12 @@ snapshots: dependencies: '@babel/types': 7.27.1 + '@babel/parser@7.27.7': + dependencies: + '@babel/types': 7.27.7 + + '@babel/parser@8.0.0-alpha.12': {} + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 @@ -3316,6 +4340,36 @@ snapshots: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + '@babel/runtime@7.27.1': {} '@babel/template@7.27.2': @@ -3341,6 +4395,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.27.7': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@bcoe/v8-coverage@0.2.3': {} '@changesets/apply-release-plan@7.0.12': @@ -3653,9 +4712,9 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': dependencies: - eslint: 9.27.0 + eslint: 9.27.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -3697,6 +4756,26 @@ snapshots: '@eslint/core': 0.14.0 levn: 0.4.1 + '@floating-ui/core@1.7.2': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.2': + dependencies: + '@floating-ui/core': 1.7.2 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/utils@0.2.10': {} + + '@floating-ui/vue@1.1.7(vue@3.5.17(typescript@5.8.3))': + dependencies: + '@floating-ui/dom': 1.7.2 + '@floating-ui/utils': 0.2.10 + vue-demi: 0.14.10(vue@3.5.17(typescript@5.8.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -3716,6 +4795,33 @@ snapshots: '@iconify/types@2.0.0': {} + '@internationalized/date@3.8.2': + dependencies: + '@swc/helpers': 0.5.17 + + '@internationalized/number@3.6.3': + dependencies: + '@swc/helpers': 0.5.17 + + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -3729,7 +4835,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -3742,14 +4848,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.18) + jest-config: 29.7.0(@types/node@24.0.7) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3774,7 +4880,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -3792,7 +4898,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.18 + '@types/node': 24.0.7 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3814,7 +4920,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.18 + '@types/node': 24.0.7 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -3884,7 +4990,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.18 + '@types/node': 24.0.7 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -3921,23 +5027,23 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@microsoft/api-extractor-model@7.30.6(@types/node@22.15.18)': + '@microsoft/api-extractor-model@7.30.6(@types/node@24.0.7)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.18) + '@rushstack/node-core-library': 5.13.1(@types/node@24.0.7) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.52.8(@types/node@22.15.18)': + '@microsoft/api-extractor@7.52.8(@types/node@24.0.7)': dependencies: - '@microsoft/api-extractor-model': 7.30.6(@types/node@22.15.18) + '@microsoft/api-extractor-model': 7.30.6(@types/node@24.0.7) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.18) + '@rushstack/node-core-library': 5.13.1(@types/node@24.0.7) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.15.3(@types/node@22.15.18) - '@rushstack/ts-command-line': 5.0.1(@types/node@22.15.18) + '@rushstack/terminal': 0.15.3(@types/node@24.0.7) + '@rushstack/ts-command-line': 5.0.1(@types/node@24.0.7) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -4038,7 +5144,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.0': optional: true - '@rushstack/node-core-library@5.13.1(@types/node@22.15.18)': + '@rushstack/node-core-library@5.13.1(@types/node@24.0.7)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -4049,23 +5155,23 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.7 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.15.3(@types/node@22.15.18)': + '@rushstack/terminal@0.15.3(@types/node@24.0.7)': dependencies: - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.18) + '@rushstack/node-core-library': 5.13.1(@types/node@24.0.7) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.7 - '@rushstack/ts-command-line@5.0.1(@types/node@22.15.18)': + '@rushstack/ts-command-line@5.0.1(@types/node@24.0.7)': dependencies: - '@rushstack/terminal': 0.15.3(@types/node@22.15.18) + '@rushstack/terminal': 0.15.3(@types/node@24.0.7) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -4153,6 +5259,103 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.1.11': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.2 + jiti: 2.4.2 + lightningcss: 1.30.1 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.11 + + '@tailwindcss/oxide-android-arm64@4.1.11': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.11': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.11': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.11': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.11': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.11': + optional: true + + '@tailwindcss/oxide@4.1.11': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.11 + '@tailwindcss/oxide-darwin-arm64': 4.1.11 + '@tailwindcss/oxide-darwin-x64': 4.1.11 + '@tailwindcss/oxide-freebsd-x64': 4.1.11 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.11 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.11 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.11 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.11 + '@tailwindcss/oxide-linux-x64-musl': 4.1.11 + '@tailwindcss/oxide-wasm32-wasi': 4.1.11 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.11 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.11 + + '@tailwindcss/vite@4.1.11(vite@6.3.5(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0))': + dependencies: + '@tailwindcss/node': 4.1.11 + '@tailwindcss/oxide': 4.1.11 + tailwindcss: 4.1.11 + vite: 6.3.5(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0) + + '@tailwindcss/vite@4.1.11(vite@7.0.0(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0))': + dependencies: + '@tailwindcss/node': 4.1.11 + '@tailwindcss/oxide': 4.1.11 + tailwindcss: 4.1.11 + vite: 7.0.0(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0) + + '@tanstack/virtual-core@3.13.12': {} + + '@tanstack/vue-virtual@3.13.12(vue@3.5.17(typescript@5.8.3))': + dependencies: + '@tanstack/virtual-core': 3.13.12 + vue: 3.5.17(typescript@5.8.3) + + '@trysound/sax@0.2.0': {} + + '@ts-morph/common@0.27.0': + dependencies: + fast-glob: 3.3.3 + minimatch: 10.0.3 + path-browserify: 1.0.1 + '@types/argparse@1.0.38': {} '@types/babel__core@7.20.5': @@ -4180,7 +5383,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.7 '@types/hast@3.0.4': dependencies: @@ -4218,9 +5421,9 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@22.15.18': + '@types/node@24.0.7': dependencies: - undici-types: 6.21.0 + undici-types: 7.8.0 '@types/stack-utils@2.0.3': {} @@ -4234,15 +5437,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.27.0 + eslint: 9.27.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.4 natural-compare: 1.4.0 @@ -4251,14 +5454,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 debug: 4.4.1 - eslint: 9.27.0 + eslint: 9.27.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -4268,12 +5471,12 @@ snapshots: '@typescript-eslint/types': 8.32.1 '@typescript-eslint/visitor-keys': 8.32.1 - '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.1 - eslint: 9.27.0 + eslint: 9.27.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -4295,13 +5498,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 9.27.0 + eslint: 9.27.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -4313,16 +5516,43 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.4(vite@5.4.18(@types/node@22.15.18))(vue@3.5.14(typescript@5.8.3))': + '@unovue/detypes@0.8.5': + dependencies: + '@babel/core': 7.27.1 + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.1) + '@vue/compiler-dom': 3.5.14 + '@vue/compiler-sfc': 3.5.14 + '@vuedx/template-ast-types': 0.7.1 + fast-glob: 3.3.3 + prettier: 3.6.2 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@vee-validate/zod@4.15.1(vue@3.5.17(typescript@5.8.3))(zod@3.25.67)': + dependencies: + type-fest: 4.41.0 + vee-validate: 4.15.1(vue@3.5.17(typescript@5.8.3)) + zod: 3.25.67 + transitivePeerDependencies: + - vue + + '@vitejs/plugin-vue@5.2.4(vite@5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0))(vue@3.5.14(typescript@5.8.3))': dependencies: - vite: 5.4.18(@types/node@22.15.18) + vite: 5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0) vue: 3.5.14(typescript@5.8.3) - '@vitejs/plugin-vue@6.0.0(vite@6.3.5(@types/node@22.15.18))(vue@3.5.14(typescript@5.8.3))': + '@vitejs/plugin-vue@6.0.0(vite@6.3.5(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0))(vue@3.5.17(typescript@5.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.19 - vite: 6.3.5(@types/node@22.15.18) - vue: 3.5.14(typescript@5.8.3) + vite: 6.3.5(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0) + vue: 3.5.17(typescript@5.8.3) + + '@vitejs/plugin-vue@6.0.0(vite@7.0.0(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0))(vue@3.5.17(typescript@5.8.3))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.19 + vite: 7.0.0(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0) + vue: 3.5.17(typescript@5.8.3) '@volar/language-core@2.4.14': dependencies: @@ -4344,11 +5574,24 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 + '@vue/compiler-core@3.5.17': + dependencies: + '@babel/parser': 7.27.7 + '@vue/shared': 3.5.17 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + '@vue/compiler-dom@3.5.14': dependencies: '@vue/compiler-core': 3.5.14 '@vue/shared': 3.5.14 + '@vue/compiler-dom@3.5.17': + dependencies: + '@vue/compiler-core': 3.5.17 + '@vue/shared': 3.5.17 + '@vue/compiler-sfc@3.5.14': dependencies: '@babel/parser': 7.27.2 @@ -4361,11 +5604,28 @@ snapshots: postcss: 8.5.3 source-map-js: 1.2.1 + '@vue/compiler-sfc@3.5.17': + dependencies: + '@babel/parser': 7.27.7 + '@vue/compiler-core': 3.5.17 + '@vue/compiler-dom': 3.5.17 + '@vue/compiler-ssr': 3.5.17 + '@vue/shared': 3.5.17 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.6 + source-map-js: 1.2.1 + '@vue/compiler-ssr@3.5.14': dependencies: '@vue/compiler-dom': 3.5.14 '@vue/shared': 3.5.14 + '@vue/compiler-ssr@3.5.17': + dependencies: + '@vue/compiler-dom': 3.5.17 + '@vue/shared': 3.5.17 + '@vue/compiler-vue2@2.7.16': dependencies: de-indent: 1.0.2 @@ -4402,15 +5662,37 @@ snapshots: optionalDependencies: typescript: 5.8.3 + '@vue/language-core@2.2.10(typescript@5.8.3)': + dependencies: + '@volar/language-core': 2.4.14 + '@vue/compiler-dom': 3.5.14 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.14 + alien-signals: 1.0.13 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.8.3 + '@vue/reactivity@3.5.14': dependencies: '@vue/shared': 3.5.14 + '@vue/reactivity@3.5.17': + dependencies: + '@vue/shared': 3.5.17 + '@vue/runtime-core@3.5.14': dependencies: '@vue/reactivity': 3.5.14 '@vue/shared': 3.5.14 + '@vue/runtime-core@3.5.17': + dependencies: + '@vue/reactivity': 3.5.17 + '@vue/shared': 3.5.17 + '@vue/runtime-dom@3.5.14': dependencies: '@vue/reactivity': 3.5.14 @@ -4418,28 +5700,59 @@ snapshots: '@vue/shared': 3.5.14 csstype: 3.1.3 + '@vue/runtime-dom@3.5.17': + dependencies: + '@vue/reactivity': 3.5.17 + '@vue/runtime-core': 3.5.17 + '@vue/shared': 3.5.17 + csstype: 3.1.3 + '@vue/server-renderer@3.5.14(vue@3.5.14(typescript@5.8.3))': dependencies: '@vue/compiler-ssr': 3.5.14 '@vue/shared': 3.5.14 vue: 3.5.14(typescript@5.8.3) + '@vue/server-renderer@3.5.17(vue@3.5.17(typescript@5.8.3))': + dependencies: + '@vue/compiler-ssr': 3.5.17 + '@vue/shared': 3.5.17 + vue: 3.5.17(typescript@5.8.3) + '@vue/shared@3.5.14': {} + '@vue/shared@3.5.17': {} + + '@vue/tsconfig@0.7.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3))': + optionalDependencies: + typescript: 5.8.3 + vue: 3.5.17(typescript@5.8.3) + + '@vuedx/template-ast-types@0.7.1': + dependencies: + '@vue/compiler-core': 3.5.14 + '@vueuse/core@12.8.2(typescript@5.8.3)': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@5.8.3) - vue: 3.5.14(typescript@5.8.3) + vue: 3.5.17(typescript@5.8.3) transitivePeerDependencies: - typescript + '@vueuse/core@13.4.0(vue@3.5.17(typescript@5.8.3))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 13.4.0 + '@vueuse/shared': 13.4.0(vue@3.5.17(typescript@5.8.3)) + vue: 3.5.17(typescript@5.8.3) + '@vueuse/integrations@12.8.2(focus-trap@7.6.4)(typescript@5.8.3)': dependencies: '@vueuse/core': 12.8.2(typescript@5.8.3) '@vueuse/shared': 12.8.2(typescript@5.8.3) - vue: 3.5.14(typescript@5.8.3) + vue: 3.5.17(typescript@5.8.3) optionalDependencies: focus-trap: 7.6.4 transitivePeerDependencies: @@ -4447,12 +5760,18 @@ snapshots: '@vueuse/metadata@12.8.2': {} + '@vueuse/metadata@13.4.0': {} + '@vueuse/shared@12.8.2(typescript@5.8.3)': dependencies: - vue: 3.5.14(typescript@5.8.3) + vue: 3.5.17(typescript@5.8.3) transitivePeerDependencies: - typescript + '@vueuse/shared@13.4.0(vue@3.5.17(typescript@5.8.3))': + dependencies: + vue: 3.5.17(typescript@5.8.3) + '@wdns/vue-code-block@2.3.5(typescript@5.8.3)': dependencies: highlight.js: 11.11.1 @@ -4515,6 +5834,8 @@ snapshots: alien-signals@0.4.14: {} + alien-signals@1.0.13: {} + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -4523,12 +5844,16 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -4540,10 +5865,22 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + array-union@2.1.0: {} + ast-types-x@1.18.0: + dependencies: + tslib: 2.8.1 + + astral-regex@2.0.0: {} + async@3.2.6: {} + atob@2.1.2: {} + babel-jest@29.7.0(@babel/core@7.27.1): dependencies: '@babel/core': 7.27.1 @@ -4607,6 +5944,8 @@ snapshots: birpc@2.3.0: {} + boolbase@1.0.0: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -4652,6 +5991,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.4.1: {} + char-regex@1.0.2: {} character-entities-html4@2.1.0: {} @@ -4660,10 +6001,30 @@ snapshots: chardet@0.7.0: {} + chownr@3.0.0: {} + ci-info@3.9.0: {} + citty@0.1.6: + dependencies: + consola: 3.4.2 + cjs-module-lexer@1.4.3: {} + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-progress@3.12.0: + dependencies: + string-width: 4.2.3 + + cli-spinners@2.9.2: {} + clipper2-js@1.2.4(@angular/common@15.2.10(@angular/core@15.2.10(rxjs@7.8.2)(zone.js@0.13.3))(rxjs@7.8.2))(@angular/core@15.2.10(rxjs@7.8.2)(zone.js@0.13.3)): dependencies: '@angular/common': 15.2.10(@angular/core@15.2.10(rxjs@7.8.2)(zone.js@0.13.3))(rxjs@7.8.2) @@ -4676,8 +6037,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clsx@2.1.1: {} + co@4.6.0: {} + code-block-writer@13.0.3: {} + collect-v8-coverage@1.0.2: {} color-convert@2.0.1: @@ -4688,6 +6053,12 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@13.1.0: {} + + commander@14.0.0: {} + + commander@7.2.0: {} + compare-versions@6.1.1: {} concat-map@0.0.1: {} @@ -4696,19 +6067,30 @@ snapshots: confbox@0.2.2: {} + consola@3.4.2: {} + convert-source-map@2.0.0: {} copy-anything@3.0.5: dependencies: is-what: 4.1.16 - create-jest@29.7.0(@types/node@22.15.18): + cosmiconfig@9.0.0(typescript@5.8.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.8.3 + + create-jest@29.7.0(@types/node@24.0.7): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.18) + jest-config: 29.7.0(@types/node@24.0.7) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -4717,11 +6099,41 @@ snapshots: - supports-color - ts-node - cross-spawn@7.0.6: + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-what@6.2.2: {} + + css@3.0.0: dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.6.0 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 csstype@3.1.3: {} @@ -4731,16 +6143,26 @@ snapshots: dependencies: ms: 2.1.3 + decode-uri-component@0.2.2: {} + dedent@1.6.0: {} + deep-diff@1.0.2: {} + deep-is@0.1.4: {} deepmerge@4.3.1: {} + defu@6.1.4: {} + dequal@2.0.3: {} + destr@2.0.5: {} + detect-indent@6.1.0: {} + detect-libc@2.0.4: {} + detect-newline@3.1.0: {} devlop@1.1.0: @@ -4749,10 +6171,32 @@ snapshots: diff-sequences@29.6.3: {} + diff@8.0.2: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + eastasianwidth@0.2.0: {} + ejs@3.1.10: dependencies: jake: 10.9.2 @@ -4763,8 +6207,17 @@ snapshots: emoji-regex-xs@1.0.0: {} + emoji-regex@10.4.0: {} + emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + + enhanced-resolve@5.18.2: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -4772,6 +6225,8 @@ snapshots: entities@4.5.0: {} + env-paths@2.2.1: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -4845,9 +6300,9 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.27.0: + eslint@9.27.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.2 @@ -4882,6 +6337,8 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 transitivePeerDependencies: - supports-color @@ -4941,6 +6398,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-diff@1.3.0: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4998,6 +6457,11 @@ snapshots: dependencies: tabbable: 6.2.0 + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 @@ -5027,10 +6491,18 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.3.0: {} + + get-own-enumerable-keys@1.0.0: {} + get-package-type@0.1.0: {} get-stream@6.0.1: {} + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -5039,6 +6511,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@11.0.3: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.3 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -5061,6 +6542,10 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + gonzales-pe@4.3.0: + dependencies: + minimist: 1.2.8 + graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -5148,14 +6633,24 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-interactive@2.0.0: {} + is-number@7.0.0: {} + is-obj@3.0.0: {} + + is-regexp@3.1.0: {} + is-stream@2.0.1: {} is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + is-what@4.1.16: {} is-windows@1.0.2: {} @@ -5203,6 +6698,10 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + jake@10.9.2: dependencies: async: 3.2.6 @@ -5222,7 +6721,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -5242,16 +6741,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.18): + jest-cli@29.7.0(@types/node@24.0.7): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.18) + create-jest: 29.7.0(@types/node@24.0.7) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.18) + jest-config: 29.7.0(@types/node@24.0.7) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -5261,7 +6760,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.18): + jest-config@29.7.0(@types/node@24.0.7): dependencies: '@babel/core': 7.27.1 '@jest/test-sequencer': 29.7.0 @@ -5286,7 +6785,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.7 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -5315,7 +6814,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5325,7 +6824,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.18 + '@types/node': 24.0.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -5364,7 +6863,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -5399,7 +6898,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5427,7 +6926,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -5473,7 +6972,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5492,7 +6991,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.18 + '@types/node': 24.0.7 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5501,23 +7000,25 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.7 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.18): + jest@29.7.0(@types/node@24.0.7): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.18) + jest-cli: 29.7.0(@types/node@24.0.7) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node + jiti@2.4.2: {} + jju@1.4.0: {} js-tokens@4.0.0: {} @@ -5570,6 +7071,51 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + lines-and-columns@1.2.4: {} local-pkg@1.1.1: @@ -5586,14 +7132,27 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash-es@4.17.21: {} + lodash.memoize@4.1.2: {} lodash.merge@4.6.2: {} + lodash.sortedlastindex@4.1.0: {} + lodash.startcase@4.4.0: {} + lodash.truncate@4.4.2: {} + lodash@4.17.21: {} + log-symbols@6.0.0: + dependencies: + chalk: 5.4.1 + is-unicode-supported: 1.3.0 + + lru-cache@11.1.0: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -5602,6 +7161,10 @@ snapshots: dependencies: yallist: 4.0.0 + lucide-vue-next@0.525.0(vue@3.5.17(typescript@5.8.3)): + dependencies: + vue: 3.5.17(typescript@5.8.3) + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -5630,6 +7193,10 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -5658,6 +7225,12 @@ snapshots: mimic-fn@2.1.0: {} + mimic-function@5.0.1: {} + + minimatch@10.0.3: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + minimatch@3.0.8: dependencies: brace-expansion: 1.1.11 @@ -5674,10 +7247,20 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimist@1.2.8: {} + + minipass@7.1.2: {} + minisearch@7.1.2: {} + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + mitt@3.0.1: {} + mkdirp@3.0.1: {} + mlly@1.7.4: dependencies: acorn: 8.14.1 @@ -5697,6 +7280,13 @@ snapshots: natural-compare@1.4.0: {} + node-fetch-native@1.6.6: {} + + node-html-parser@7.0.1: + dependencies: + css-select: 5.2.2 + he: 1.2.0 + node-int64@0.4.0: {} node-releases@2.0.19: {} @@ -5707,6 +7297,26 @@ snapshots: dependencies: path-key: 3.1.1 + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nypm@0.6.0: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 2.1.0 + tinyexec: 0.3.2 + + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.6 + ufo: 1.6.1 + + ohash@2.0.11: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -5715,6 +7325,10 @@ snapshots: dependencies: mimic-fn: 2.1.0 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + oniguruma-parser@0.12.1: {} oniguruma-to-es@3.1.1: @@ -5738,6 +7352,18 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@8.2.0: + dependencies: + chalk: 5.4.1 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + os-tmpdir@1.0.2: {} outdent@0.5.0: {} @@ -5766,6 +7392,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + package-manager-detector@0.2.11: dependencies: quansync: 0.2.10 @@ -5791,6 +7419,11 @@ snapshots: path-parse@1.0.7: {} + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + path-type@4.0.0: {} pathe@2.0.3: {} @@ -5823,18 +7456,49 @@ snapshots: exsolve: 1.0.5 pathe: 2.0.3 + postcss-less@6.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-sass@0.5.0: + dependencies: + gonzales-pe: 4.3.0 + postcss: 8.5.3 + + postcss-scss@4.0.9(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-styl@0.12.3: + dependencies: + debug: 4.4.1 + fast-diff: 1.3.0 + lodash.sortedlastindex: 4.1.0 + postcss: 8.5.3 + stylus: 0.57.0 + transitivePeerDependencies: + - supports-color + postcss@8.5.3: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + preact@10.26.6: {} prelude-ls@1.2.1: {} prettier@2.8.8: {} + prettier@3.6.2: {} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -5867,6 +7531,13 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + recast-x@1.0.5: + dependencies: + ast-types: ast-types-x@1.18.0 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 @@ -5877,6 +7548,23 @@ snapshots: dependencies: regex-utilities: 2.3.0 + reka-ui@2.3.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)): + dependencies: + '@floating-ui/dom': 1.7.2 + '@floating-ui/vue': 1.1.7(vue@3.5.17(typescript@5.8.3)) + '@internationalized/date': 3.8.2 + '@internationalized/number': 3.6.3 + '@tanstack/vue-virtual': 3.13.12(vue@3.5.17(typescript@5.8.3)) + '@vueuse/core': 12.8.2(typescript@5.8.3) + '@vueuse/shared': 12.8.2(typescript@5.8.3) + aria-hidden: 1.2.6 + defu: 6.1.4 + ohash: 2.0.11 + vue: 3.5.17(typescript@5.8.3) + transitivePeerDependencies: + - '@vue/composition-api' + - typescript + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -5889,6 +7577,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve.exports@2.0.3: {} resolve@1.22.10: @@ -5897,6 +7587,11 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + reusify@1.1.0: {} rfdc@1.4.1: {} @@ -5937,6 +7632,8 @@ snapshots: safer-buffer@2.1.2: {} + sax@1.2.4: {} + search-insights@2.17.3: {} semver@6.3.1: {} @@ -5947,6 +7644,40 @@ snapshots: semver@7.7.2: {} + shadcn-vue@2.2.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)): + dependencies: + '@unovue/detypes': 0.8.5 + '@vue/compiler-sfc': 3.5.14 + commander: 14.0.0 + consola: 3.4.2 + cosmiconfig: 9.0.0(typescript@5.8.3) + deepmerge: 4.3.1 + diff: 8.0.2 + fs-extra: 11.3.0 + get-tsconfig: 4.10.1 + magic-string: 0.30.17 + nypm: 0.6.0 + ofetch: 1.4.1 + ora: 8.2.0 + pathe: 2.0.3 + postcss: 8.5.3 + prompts: 2.4.2 + reka-ui: 2.3.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + stringify-object: 5.0.0 + tailwindcss: 4.1.11 + tinyexec: 1.0.1 + tinyglobby: 0.2.14 + ts-morph: 26.0.0 + undici: 7.11.0 + vue-metamorph: 3.3.3(eslint@9.27.0(jiti@2.4.2)) + zod: 3.25.67 + transitivePeerDependencies: + - '@vue/composition-api' + - eslint + - supports-color + - typescript + - vue + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -5985,8 +7716,19 @@ snapshots: slash@3.0.0: {} + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + source-map-js@1.2.1: {} + source-map-resolve@0.6.0: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 @@ -5994,6 +7736,8 @@ snapshots: source-map@0.6.1: {} + source-map@0.7.4: {} + space-separated-tokens@2.0.2: {} spawndamnit@3.0.1: @@ -6009,6 +7753,8 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 + stdin-discarder@0.2.2: {} + string-argv@0.3.2: {} string-length@4.0.2: @@ -6022,15 +7768,37 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + stringify-object@5.0.0: + dependencies: + get-own-enumerable-keys: 1.0.0 + is-obj: 3.0.0 + is-regexp: 3.1.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + strip-bom@3.0.0: {} strip-bom@4.0.0: {} @@ -6039,6 +7807,17 @@ snapshots: strip-json-comments@3.1.1: {} + stylus@0.57.0: + dependencies: + css: 3.0.0 + debug: 4.4.1 + glob: 7.2.3 + safer-buffer: 2.1.2 + sax: 1.2.4 + source-map: 0.7.4 + transitivePeerDependencies: + - supports-color + superjson@2.2.2: dependencies: copy-anything: 3.0.5 @@ -6053,8 +7832,41 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.2.2 + css-tree: 2.3.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + tabbable@6.2.0: {} + table@6.9.0: + dependencies: + ajv: 8.13.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwind-merge@3.3.1: {} + + tailwindcss@4.1.11: {} + + tapable@2.2.2: {} + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + term-size@2.2.1: {} test-exclude@6.0.0: @@ -6063,6 +7875,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + tiny-invariant@1.3.3: {} + + tinyexec@0.3.2: {} + + tinyexec@1.0.1: {} + tinyglobby@0.2.14: dependencies: fdir: 6.4.6(picomatch@4.0.2) @@ -6084,12 +7902,12 @@ snapshots: dependencies: typescript: 5.8.3 - ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.5)(jest@29.7.0(@types/node@22.15.18))(typescript@5.8.3): + ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.5)(jest@29.7.0(@types/node@24.0.7))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.15.18) + jest: 29.7.0(@types/node@24.0.7) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -6105,8 +7923,15 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.27.1) esbuild: 0.25.5 + ts-morph@26.0.0: + dependencies: + '@ts-morph/common': 0.27.0 + code-block-writer: 13.0.3 + tslib@2.8.1: {} + tw-animate-css@1.3.4: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -6117,12 +7942,12 @@ snapshots: type-fest@4.41.0: {} - typescript-eslint@8.32.1(eslint@9.27.0)(typescript@5.8.3): + typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - eslint: 9.27.0 + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -6135,7 +7960,9 @@ snapshots: ufo@1.6.1: {} - undici-types@6.21.0: {} + undici-types@7.8.0: {} + + undici@7.11.0: {} unist-util-is@6.0.0: dependencies: @@ -6180,6 +8007,12 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + vee-validate@4.15.1(vue@3.5.17(typescript@5.8.3)): + dependencies: + '@vue/devtools-api': 7.7.6 + type-fest: 4.41.0 + vue: 3.5.17(typescript@5.8.3) + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 @@ -6190,9 +8023,9 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-plugin-dts@4.5.4(@types/node@22.15.18)(rollup@4.40.0)(typescript@5.8.3)(vite@5.4.18(@types/node@22.15.18)): + vite-plugin-dts@4.5.4(@types/node@24.0.7)(rollup@4.40.0)(typescript@5.8.3)(vite@5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0)): dependencies: - '@microsoft/api-extractor': 7.52.8(@types/node@22.15.18) + '@microsoft/api-extractor': 7.52.8(@types/node@24.0.7) '@rollup/pluginutils': 5.1.4(rollup@4.40.0) '@volar/typescript': 2.4.14 '@vue/language-core': 2.2.0(typescript@5.8.3) @@ -6203,7 +8036,7 @@ snapshots: magic-string: 0.30.17 typescript: 5.8.3 optionalDependencies: - vite: 5.4.18(@types/node@22.15.18) + vite: 5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0) transitivePeerDependencies: - '@types/node' - rollup @@ -6213,16 +8046,23 @@ snapshots: dependencies: monaco-editor: 0.52.2 - vite@5.4.18(@types/node@22.15.18): + vite-svg-loader@5.1.0(vue@3.5.17(typescript@5.8.3)): + dependencies: + svgo: 3.3.2 + vue: 3.5.17(typescript@5.8.3) + + vite@5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0): dependencies: esbuild: 0.21.5 postcss: 8.5.3 rollup: 4.40.0 optionalDependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.7 fsevents: 2.3.3 + lightningcss: 1.30.1 + stylus: 0.57.0 - vite@6.3.5(@types/node@22.15.18): + vite@6.3.5(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0): dependencies: esbuild: 0.25.5 fdir: 6.4.6(picomatch@4.0.2) @@ -6231,10 +8071,28 @@ snapshots: rollup: 4.40.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.7 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 + stylus: 0.57.0 + + vite@7.0.0(@types/node@24.0.7)(jiti@2.4.2)(lightningcss@1.30.1)(stylus@0.57.0): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.6 + rollup: 4.40.0 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 24.0.7 fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 + stylus: 0.57.0 - vitepress@1.6.3(@algolia/client-search@5.25.0)(@types/node@22.15.18)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3): + vitepress@1.6.3(@algolia/client-search@5.25.0)(@types/node@24.0.7)(lightningcss@1.30.1)(postcss@8.5.6)(search-insights@2.17.3)(stylus@0.57.0)(typescript@5.8.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.25.0)(search-insights@2.17.3) @@ -6243,7 +8101,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.18(@types/node@22.15.18))(vue@3.5.14(typescript@5.8.3)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0))(vue@3.5.14(typescript@5.8.3)) '@vue/devtools-api': 7.7.6 '@vue/shared': 3.5.14 '@vueuse/core': 12.8.2(typescript@5.8.3) @@ -6252,10 +8110,10 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.18(@types/node@22.15.18) + vite: 5.4.18(@types/node@24.0.7)(lightningcss@1.30.1)(stylus@0.57.0) vue: 3.5.14(typescript@5.8.3) optionalDependencies: - postcss: 8.5.3 + postcss: 8.5.6 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -6285,6 +8143,55 @@ snapshots: vscode-uri@3.1.0: {} + vue-demi@0.14.10(vue@3.5.17(typescript@5.8.3)): + dependencies: + vue: 3.5.17(typescript@5.8.3) + + vue-eslint-parser@10.1.4(eslint@9.27.0(jiti@2.4.2)): + dependencies: + debug: 4.4.1 + eslint: 9.27.0(jiti@2.4.2) + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + vue-metamorph@3.3.3(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@babel/parser': 8.0.0-alpha.12 + ast-types-x: 1.18.0 + chalk: 5.4.1 + cli-progress: 3.12.0 + commander: 13.1.0 + deep-diff: 1.0.2 + fs-extra: 11.3.0 + glob: 11.0.3 + lodash-es: 4.17.21 + magic-string: 0.30.17 + micromatch: 4.0.8 + node-html-parser: 7.0.1 + postcss: 8.5.3 + postcss-less: 6.0.0(postcss@8.5.3) + postcss-sass: 0.5.0 + postcss-scss: 4.0.9(postcss@8.5.3) + postcss-styl: 0.12.3 + recast-x: 1.0.5 + table: 6.9.0 + vue-eslint-parser: 10.1.4(eslint@9.27.0(jiti@2.4.2)) + transitivePeerDependencies: + - eslint + - supports-color + + vue-tsc@2.2.10(typescript@5.8.3): + dependencies: + '@volar/typescript': 2.4.14 + '@vue/language-core': 2.2.10(typescript@5.8.3) + typescript: 5.8.3 + vue@3.5.14(typescript@5.8.3): dependencies: '@vue/compiler-dom': 3.5.14 @@ -6295,6 +8202,16 @@ snapshots: optionalDependencies: typescript: 5.8.3 + vue@3.5.17(typescript@5.8.3): + dependencies: + '@vue/compiler-dom': 3.5.17 + '@vue/compiler-sfc': 3.5.17 + '@vue/runtime-dom': 3.5.17 + '@vue/server-renderer': 3.5.17(vue@3.5.17(typescript@5.8.3)) + '@vue/shared': 3.5.17 + optionalDependencies: + typescript: 5.8.3 + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -6311,6 +8228,12 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} write-file-atomic@4.0.2: @@ -6324,6 +8247,8 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yargs-parser@21.1.1: {} yargs@17.7.2: @@ -6338,6 +8263,8 @@ snapshots: yocto-queue@0.1.0: {} + zod@3.25.67: {} + zone.js@0.13.3: dependencies: tslib: 2.8.1 From 27c9947190bb692e27e1e7dd3aa555dc9b68041e Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Sun, 29 Jun 2025 22:15:41 +0100 Subject: [PATCH 3/3] chore: blank for tests for now --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 11c7cfe..264603b 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "build": "cd packages/limn && pnpm build", "ci:build-docs": "./build-docs.sh", "docs:build": "cd docs && pnpm run docs:build", - "docs:dev": "cd docs && pnpm run docs:dev" + "docs:dev": "cd docs && pnpm run docs:dev", + "test": "echo 'No tests for now'" }, "keywords": [], "author": "",