diff --git a/.vscode/settings.json b/.vscode/settings.json index 3c86a74cf..37722e604 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,36 +1,27 @@ { "files.associations": { - "**/packages/idae-html/src/lib/components/*.html": "svelte" + "**/packages/idae-html/src/lib/components/*.html": "html", }, "emmet.includeLanguages": { - "svelte": "html" + "svelte": "html", + "html": "html" }, + "cSpell.words": ["CHROMADB", "Idae", "idaenext", "medyll", "sitebase"], + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, "[svelte]": { - "editor.defaultFormatter": "svelte.svelte-vscode" - } - - "cSpell.words": [ - "CHROMADB", - "Idae", - "idaenext", - "medyll", - "sitebase" - ], + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint", + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + }, + "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true, - "[svelte]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[css]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - } -} \ No newline at end of file + }, + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + }, +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 71cd31097..61ea510f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,75 @@ # Changelog +## [0.0.33-next.0] - 2026-02-23 +**Features:** +- add CSS files for various components with custom properties for styling +- add initial CSS files for various components with custom properties for styling +- update migration documentation and theme variables for improved clarity and structure + + + +## [0.0.32-next.0] - 2026-02-23 +**Features:** +- enhance idae-idbql documentation with modular references and examples +- update migration documentation with tracking table and Tailwind CSS v4 setup instructions +- add dark mode strategies documentation and setup instructions for Tailwind v4 + + + +## [0.0.31-next.0] - 2026-02-23 +**Features:** +- add skill to retrieve idae-idbql README documentation via CLI + + + +## [0.0.30-next.0] - 2026-02-23 +**Chores:** +- update VSCode settings and improve accordion component styles; add skill creation guide + + + +## [0.0.29-next.0] - 2026-02-21 +**Bug Fixes:** +- ensure deterministic ordering of fileInfoList in MakeLibIndex + +**Other:** +- Refactor exports in index.ts for improved organization and clarity + + + +## [0.0.28-next.0] - 2026-02-21 +**Bug Fixes:** +- update import statements for prettier configuration across multiple packages +- update import paths for prettier configuration across multiple packages + +**Chores:** +- publish packages + +**Other:** +- Refactor code structure for improved readability and maintainability +- Reorder exports in index.ts for consistency and clarity + + + +## [0.0.27-next.0] - 2026-02-21 +**Bug Fixes:** +- update import statements for prettier configuration across multiple packages +- update import paths for prettier configuration across multiple packages + + + +## [0.0.26-next.0] - 2026-02-21 +**Bug Fixes:** +- adjust script placement for cssDom component registration + + + +## [0.0.25-next.0] - 2026-02-21 +**Bug Fixes:** +- lazy-init idbqlEvent to avoid crash in non-Svelte environments + + + ## [0.0.24-next.0] - 2026-02-21 **Features:** - implement desktop layout and update test page structure with improved slot handling diff --git a/package.json b/package.json index ad19a7b81..b86d772b6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "0.0.24-next.0", + "version": "0.0.33-next.0", "type": "module", "description": "A high-performance monorepo for modern full-stack application development. Focused on data-management, storage, and UI with advanced reactivity. Provides a robust data schema, real-time server sync, and unified support for PostgreSQL, MySQL, SQLite, MongoDB, and PouchDB.", "keywords": [ diff --git a/packages/idae-api/.prettierrc.js b/packages/idae-api/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-api/.prettierrc.js +++ b/packages/idae-api/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-api/CHANGELOG.md b/packages/idae-api/CHANGELOG.md index 828eadef9..4b353d682 100644 --- a/packages/idae-api/CHANGELOG.md +++ b/packages/idae-api/CHANGELOG.md @@ -60,7 +60,7 @@ - **2026-01-14** - Refactor code structure for improved readability and maintainability - **2026-01-14** - chore: update package.json files to use workspace:* for Medyll dependencies - **2026-01-14** - Merge branches 'dev' and 'dev' of https://github.com/medyll/idae into dev -- **2026-01-14** - chore: update @medyll/idae-prettier-config to version ^1.2.1 across multiple packages +- **2026-01-14** - chore: update @medyll/idae-config-prettier to version ^1.2.1 across multiple packages - **2026-01-14** - Apply changeset versions - **2026-01-13** - Apply changeset versions - **2026-01-13** - Apply changeset versions diff --git a/packages/idae-api/README.md b/packages/idae-api/README.md index 549252bb3..96cf27cde 100644 --- a/packages/idae-api/README.md +++ b/packages/idae-api/README.md @@ -58,6 +58,26 @@ npm install @medyll/idae-api This section covers how to set up and run the `idae-api` server. +--- + +## Default REST API Routes + +The following routes are available by default for all collections. All endpoints require the `:collectionName` parameter (the name of your collection/table). + +| Method | Path | Validation | Handler Description | +|--------|------|------------|---------------------| +| GET | `/:collectionName` | `paramsSchema: { collectionName: string }`
`querySchema: Record (optional)` | Returns all documents matching the query. | +| GET | `/:collectionName/:id` | `paramsSchema: { collectionName: string, id: string }` | Returns a single document by ID. | +| POST | `/:collectionName` | `paramsSchema: { collectionName: string }`
`bodySchema: Record` | Creates a new document. | +| PUT | `/:collectionName/:id` | `paramsSchema: { collectionName: string, id: string }`
`bodySchema: Record` | Updates a document by ID. | +| DELETE | `/:collectionName/:id` | `paramsSchema: { collectionName: string, id: string }` | Deletes a document by ID. | +| DELETE | `/:collectionName` | `paramsSchema: { collectionName: string }` | Deletes documents matching the filter. | +| POST | `/query/:collectionName/:command/:parameters` | `paramsSchema: { collectionName: string, command: string, parameters?: string }`
`bodySchema: Record (optional)` | Executes an advanced query command (e.g., find, update, delete). Requires authentication. | + +**Note:** All validation uses [zod](https://zod.dev/) schemas. See the source for advanced usage and custom route injection. + +--- + ### Initialization & Configuration Use `idaeApi.setOptions()` to configure the server before starting it. diff --git a/packages/idae-api/src/lib/index.ts b/packages/idae-api/src/lib/index.ts index 3d57a9ca5..3103698f8 100644 --- a/packages/idae-api/src/lib/index.ts +++ b/packages/idae-api/src/lib/index.ts @@ -1,27 +1,27 @@ // auto exports of entry components -export * from '$lib/server/IdaeApi.js'; -export * from '$lib/config/routeDefinitions.js'; -export * from '$lib/client/IdaeApiClientRequest.js'; -export * from '$lib/client/IdaeApiClientConfig.js'; -export * from '$lib/client/IdaeApiClientCollection.js'; -export * from '$lib/client/IdaeApiClient.js'; +export * from '$lib/__tests__/fixtures/mockData.js'; +export * from '$lib/__tests__/helpers/testUtils.js'; export * from '$lib/@types/types.js'; -export * from '$lib/server/services/logger.js'; -export * from '$lib/server/services/AuthService.js'; -export * from '$lib/server/middleware/validationMiddleware.js'; -export * from '$lib/server/middleware/validationLayer.js'; -export * from '$lib/server/middleware/tenantContextMiddleware.js'; -export * from '$lib/server/middleware/openApiMiddleware.js'; -export * from '$lib/server/middleware/mcpMiddleware.js'; -export * from '$lib/server/middleware/healthMiddleware.js'; -export * from '$lib/server/middleware/docsMiddleware.js'; -export * from '$lib/server/middleware/databaseMiddleware.js'; -export * from '$lib/server/middleware/authorizationMiddleware.js'; -export * from '$lib/server/middleware/authMiddleware.js'; -export * from '$lib/server/errors/HttpError.js'; -export * from '$lib/server/engine/types.js'; -export * from '$lib/server/engine/routeManager.js'; -export * from '$lib/server/engine/requestDatabaseManager.js'; +export * from '$lib/client/IdaeApiClient.js'; +export * from '$lib/client/IdaeApiClientCollection.js'; +export * from '$lib/client/IdaeApiClientConfig.js'; +export * from '$lib/client/IdaeApiClientRequest.js'; +export * from '$lib/config/routeDefinitions.js'; export * from '$lib/server/engine/mongooseConnectionManager.js'; -export * from '$lib/__tests__/helpers/testUtils.js'; -export * from '$lib/__tests__/fixtures/mockData.js'; +export * from '$lib/server/engine/requestDatabaseManager.js'; +export * from '$lib/server/engine/routeManager.js'; +export * from '$lib/server/engine/types.js'; +export * from '$lib/server/errors/HttpError.js'; +export * from '$lib/server/IdaeApi.js'; +export * from '$lib/server/middleware/authMiddleware.js'; +export * from '$lib/server/middleware/authorizationMiddleware.js'; +export * from '$lib/server/middleware/databaseMiddleware.js'; +export * from '$lib/server/middleware/docsMiddleware.js'; +export * from '$lib/server/middleware/healthMiddleware.js'; +export * from '$lib/server/middleware/mcpMiddleware.js'; +export * from '$lib/server/middleware/openApiMiddleware.js'; +export * from '$lib/server/middleware/tenantContextMiddleware.js'; +export * from '$lib/server/middleware/validationLayer.js'; +export * from '$lib/server/middleware/validationMiddleware.js'; +export * from '$lib/server/services/AuthService.js'; +export * from '$lib/server/services/logger.js'; diff --git a/packages/idae-be/.prettierrc.js b/packages/idae-be/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-be/.prettierrc.js +++ b/packages/idae-be/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-be/src/lib/index.ts b/packages/idae-be/src/lib/index.ts index 79e96b2fa..6dcb49fac 100644 --- a/packages/idae-be/src/lib/index.ts +++ b/packages/idae-be/src/lib/index.ts @@ -1,17 +1,17 @@ // auto exports of entry components -export * from '$lib/utils.js'; -export * from '$lib/types.js'; export * from '$lib/be.js'; -export * from '$lib/modules/walk.js'; -export * from '$lib/modules/timers.js'; -export * from '$lib/modules/text.js'; -export * from '$lib/modules/styles.js'; -export * from '$lib/modules/position.js'; -export * from '$lib/modules/http.js'; -export * from '$lib/modules/events.js'; -export * from '$lib/modules/dom.js'; -export * from '$lib/modules/data.js'; -export * from '$lib/modules/classes.js'; -export * from '$lib/modules/attrs.js'; -export * from '$lib/dic/proxyHandler.js'; export * from '$lib/dic/fragment.js'; +export * from '$lib/dic/proxyHandler.js'; +export * from '$lib/modules/attrs.js'; +export * from '$lib/modules/classes.js'; +export * from '$lib/modules/data.js'; +export * from '$lib/modules/dom.js'; +export * from '$lib/modules/events.js'; +export * from '$lib/modules/http.js'; +export * from '$lib/modules/position.js'; +export * from '$lib/modules/styles.js'; +export * from '$lib/modules/text.js'; +export * from '$lib/modules/timers.js'; +export * from '$lib/modules/walk.js'; +export * from '$lib/types.js'; +export * from '$lib/utils.js'; diff --git a/packages/idae-cadenzia/.prettierrc.js b/packages/idae-cadenzia/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-cadenzia/.prettierrc.js +++ b/packages/idae-cadenzia/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-csss/src/lib/index.ts b/packages/idae-csss/src/lib/index.ts index e92d0c192..f8a56bb31 100644 --- a/packages/idae-csss/src/lib/index.ts +++ b/packages/idae-csss/src/lib/index.ts @@ -1,8 +1,8 @@ // auto exports of entry components -export * from '$lib/csss/types.js'; -export * from '$lib/csss/runtime.js'; -export * from '$lib/csss/plugin.js'; -export * from '$lib/csss/parser.js'; -export * from '$lib/csss/meta.js'; -export * from '$lib/csss/demo.csss'; export * from '$lib/csss/csss.js'; +export * from '$lib/csss/demo.csss'; +export * from '$lib/csss/meta.js'; +export * from '$lib/csss/parser.js'; +export * from '$lib/csss/plugin.js'; +export * from '$lib/csss/runtime.js'; +export * from '$lib/csss/types.js'; diff --git a/packages/idae-db/.prettierrc.js b/packages/idae-db/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-db/.prettierrc.js +++ b/packages/idae-db/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-db/src/lib/index.ts b/packages/idae-db/src/lib/index.ts index 1ddb0743b..f335f4a47 100644 --- a/packages/idae-db/src/lib/index.ts +++ b/packages/idae-db/src/lib/index.ts @@ -1,13 +1,13 @@ // auto exports of entry components +export * from '$lib/@types/types.js'; +export * from '$lib/adapters/ChromaDBAdapter.js'; +export * from '$lib/adapters/MongoDBAdapter.js'; +export * from '$lib/adapters/MySQLAdapter.js'; +export * from '$lib/adapters/PostgreSQLAdapter.js'; +export * from '$lib/adapters/PouchDBAdapter.js'; +export * from '$lib/adapters/SQLiteAdapter.js'; export * from '$lib/idaeDb.js'; -export * from '$lib/IdaeEventEmitter.js'; -export * from '$lib/IdaeDbConnection.js'; export * from '$lib/IdaeDbAdapter.js'; +export * from '$lib/IdaeDbConnection.js'; export * from '$lib/IdaeDBModel.js'; -export * from '$lib/adapters/SQLiteAdapter.js'; -export * from '$lib/adapters/PouchDBAdapter.js'; -export * from '$lib/adapters/PostgreSQLAdapter.js'; -export * from '$lib/adapters/MySQLAdapter.js'; -export * from '$lib/adapters/MongoDBAdapter.js'; -export * from '$lib/adapters/ChromaDBAdapter.js'; -export * from '$lib/@types/types.js'; +export * from '$lib/IdaeEventEmitter.js'; diff --git a/packages/idae-dom-events/.prettierrc.js b/packages/idae-dom-events/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-dom-events/.prettierrc.js +++ b/packages/idae-dom-events/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-dom-events/src/lib/index.ts b/packages/idae-dom-events/src/lib/index.ts index ee414bf9c..cf82e75b3 100644 --- a/packages/idae-dom-events/src/lib/index.ts +++ b/packages/idae-dom-events/src/lib/index.ts @@ -1,4 +1,4 @@ // auto exports of entry components -export * from '$lib/htmluModules.js'; -export * from '$lib/htmlDom.js'; export * from '$lib/cssDom.js'; +export * from '$lib/htmlDom.js'; +export * from '$lib/htmluModules.js'; diff --git a/packages/idae-engine/.prettierrc.js b/packages/idae-engine/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-engine/.prettierrc.js +++ b/packages/idae-engine/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-engine/src/lib/index.ts b/packages/idae-engine/src/lib/index.ts index 794defdcf..f2f5b1846 100644 --- a/packages/idae-engine/src/lib/index.ts +++ b/packages/idae-engine/src/lib/index.ts @@ -1,3 +1,3 @@ // auto exports of entry components -export * from '$lib/dataOp/types.js'; export * from '$lib/dataOp/dataOp.js'; +export * from '$lib/dataOp/types.js'; diff --git a/packages/idae-html/.prettierrc.js b/packages/idae-html/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-html/.prettierrc.js +++ b/packages/idae-html/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-html/package.json b/packages/idae-html/package.json index 1fec6cb0a..bbedb6306 100644 --- a/packages/idae-html/package.json +++ b/packages/idae-html/package.json @@ -48,10 +48,10 @@ }, "devDependencies": { "@medyll/idae-be": "workspace:*", - "@medyll/idae-config-prettier": "latest", + "@medyll/idae-eslint-config": "workspace:*", + "@medyll/idae-config-prettier": "workspace:*", "@medyll/idae-csss": "workspace:*", "@medyll/idae-dom-events": "workspace:*", - "@medyll/idae-eslint-config": "workspace:*", "@medyll/idae-idbql": "workspace:*", "@medyll/idae-query": "workspace:*", "@medyll/idae-shared": "workspace:*", diff --git a/packages/idae-html/src/lib/components/accordion/index.html b/packages/idae-html/src/lib/components/accordion/index.html index 0221aa92d..94fef70e5 100644 --- a/packages/idae-html/src/lib/components/accordion/index.html +++ b/packages/idae-html/src/lib/components/accordion/index.html @@ -1,12 +1,42 @@ + .accordion-root { + padding: var(--gutter-md); + font-size: var(--font-md); + color: var(--color-foreground) + } + + .accordion { + width: 100%; + max-width: 640px; + margin: var(--gutter-sm) 0 + } + + .accordion-item { + border: 1px solid var(--color-border); + margin-bottom: 6px; + background: var(--color-card); + color: var(--color-card-foreground) + } + .accordion-header { + background: var(--color-secondary); + padding: var(--gutter-sm); + cursor: pointer; + border: 0; + width: 100%; + text-align: left + } + + .accordion-content { + display: none; + padding: var(--gutter-sm); + background: var(--color-card) + } + + .accordion-content[aria-hidden="false"] { + display: block + } +
@@ -42,7 +72,7 @@ const handlers: Function[] = []; - function makeToggle(header: HTMLElement){ + function makeToggle(header: HTMLElement) { return () => { const content = header.nextElementSibling as HTMLElement | null; if (!content) return; @@ -52,7 +82,7 @@ }; } - headers.forEach((h)=>{ + headers.forEach((h) => { const fn = makeToggle(h); handlers.push(fn); be(h).on('click', fn); @@ -60,7 +90,7 @@ // return cleanup per SPECS return () => { - headers.forEach((h, i)=>{ try{ be(h).off('click', handlers[i]); }catch(e){} }); + headers.forEach((h, i) => { try { be(h).off('click', handlers[i]); } catch (e) { } }); }; }, on: {}, diff --git a/packages/idae-html/src/lib/index.ts b/packages/idae-html/src/lib/index.ts index 1a93e4fcc..37eedef7b 100644 --- a/packages/idae-html/src/lib/index.ts +++ b/packages/idae-html/src/lib/index.ts @@ -1,6 +1,6 @@ // auto exports of entry components -export * from '$lib/main.js'; +export * from '$lib/components/resizePanel/resizePanel.js'; export * from '$lib/core-engine.js'; -export * as themeCss from '$lib/theme/theme.css'; +export * from '$lib/main.js'; export * as resetCss from '$lib/theme/reset.css'; -export * from '$lib/components/resizePanel/resizePanel.js'; +export * as themeCss from '$lib/theme/theme.css'; diff --git a/packages/idae-html/src/lib/theme/reset.css b/packages/idae-html/src/lib/theme/reset.css index c3fc434a1..83ae83995 100644 --- a/packages/idae-html/src/lib/theme/reset.css +++ b/packages/idae-html/src/lib/theme/reset.css @@ -4,6 +4,7 @@ :root { box-sizing: border-box; } *, *::before, *::after { box-sizing: inherit; } +html { interpolate-size: allow-keywords; } html, body, h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd { margin: 0; padding: 0; } ul, ol { list-style: none; margin: 0; padding: 0; } diff --git a/packages/idae-html/src/www/index.html b/packages/idae-html/src/www/index.html index 519714624..86e15f1fe 100644 --- a/packages/idae-html/src/www/index.html +++ b/packages/idae-html/src/www/index.html @@ -1,5 +1,8 @@ +
new value
- \ No newline at end of file diff --git a/packages/idae-htmlu/src/lib/index.ts b/packages/idae-htmlu/src/lib/index.ts index eeeab2fc1..fbd377cc0 100644 --- a/packages/idae-htmlu/src/lib/index.ts +++ b/packages/idae-htmlu/src/lib/index.ts @@ -1,11 +1,11 @@ // auto exports of entry components +export * from '$lib/adapters/css-fabric.js'; +export * from '$lib/adapters/tailwind-js.js'; +export * from '$lib/bin/bin.js'; +export * from '$lib/htmlu/htmlu-dom-elements.js'; +export * from '$lib/htmlu/htmlu-types.js'; +export * from '$lib/htmlu/htmlu-utility-first.js'; +export * from '$lib/htmlu/htmlu.js'; +export * from '$lib/htmlu/preprocess.js'; export * from '$lib/index.cjs.js'; export * from '$lib/svelte/htmlu-svelte-preprocess.js'; -export * from '$lib/htmlu/preprocess.js'; -export * from '$lib/htmlu/htmlu.js'; -export * from '$lib/htmlu/htmlu-utility-first.js'; -export * from '$lib/htmlu/htmlu-types.js'; -export * from '$lib/htmlu/htmlu-dom-elements.js'; -export * from '$lib/bin/bin.js'; -export * from '$lib/adapters/tailwind-js.js'; -export * from '$lib/adapters/css-fabric.js'; diff --git a/packages/idae-idbql/.github/skills/idae-idbql/SKILL.md b/packages/idae-idbql/.github/skills/idae-idbql/SKILL.md index c9d859c9d..16e1e5eb2 100644 --- a/packages/idae-idbql/.github/skills/idae-idbql/SKILL.md +++ b/packages/idae-idbql/.github/skills/idae-idbql/SKILL.md @@ -1,63 +1,196 @@ --- -name: idae-idbql-readme -package: '@medyll/idae-idbql' -description: Skill to dynamically retrieve the documentation (README.md) of the idae-idbql package via the standardized CLI. idae-idbql is a powerful and flexible IndexedDB query library for TypeScript and JavaScript, offering a MongoDB-like query interface, strong TypeScript support, reactive state management, and easy integration with Svelte. Useful for AI agents, automation scripts, or users needing up-to-date package docs. +name: idae-idbql-commands +description: Modular command and API reference for @medyll/idae-idbql. All details are in referenced markdown files. --- -# Skill: Read idae-idbql README +# idae-idbql Command Reference Skill -## Description -This skill allows you to access the full documentation of the idae-idbql package by using the CLI get-readme command. It is designed for use by AI agents, automation scripts, or any user who wants to quickly fetch the official package documentation. +This skill is modular. Each section is referenced as a separate markdown file in `skills/idae-idbql/references`. -## Usage +--- + +## Sections + +- [Overview](references/overview.md) +- [Collection Methods](references/collection-methods.md) +- [Query Syntax & Operators](references/query-syntax.md) +- [Chainable Methods (ResultSet API)](references/resultset-api.md) +- [Aggregation & Transformation](references/aggregation.md) +- [Custom Operators](references/custom-operators.md) +- [Type Safety & Generics](references/type-safety.md) +- [Reactivity](references/reactivity.md) +- [Compatibility](references/compatibility.md) +- [Usage Examples](references/usage-examples.md) +- [Advanced Examples](references/advanced-examples.md) +- [Notes](references/notes.md) + +--- + +For full details, see: +- [idae-idbql README](README.md) +- [idae-query README](https://github.com/medyll/idae-query) +- [AGENTS.md](../../AGENTS.md) +- [copilot-instructions.md](../../.github/copilot-instructions.md) + acc.ages.push(item.age); + acc.names.push(item.name); + return acc; + }, { total: 0, ages: [], names: [] }); + +// Distinct with filtering +const uniqueRoles = idbql.users.distinct('role').pluck('role'); +``` -### Locally (in the monorepo): -```bash -npx @medyll/idae-idbql get-readme +--- + +## Custom Operators + +You can add custom operators via `idae-query`: +```typescript +import { Operators } from '@medyll/idae-query'; +Operators.addCustomOperator('isEven', (field, value, data) => data[field] % 2 === 0); +const evenUsers = idbql.users.where({ age: { isEven: true } }); ``` -### As an AI skill (VS Code, Claude, Copilot, etc.): -- Instruct the agent to run the above command to fetch the latest documentation. -- The output will be the content of the package's README.md. +--- -## Integration Examples -- Automatic generation of contextual documentation -- Answering questions about the idae-idbql API or usage patterns -- Onboarding or contextual help in the editor +## Type Safety & Generics -## Best Practices -- Always use the get-readme command to ensure the documentation is up to date (avoid static copies) -- Can be combined with other skills to explore the API, exports, or code examples of the package +All methods are fully type-safe and support deep generics. Define your model types for maximum safety: +```typescript +type User = { id: number; name: string; age: number; metadata: { order: number } }; +const model = { users: { keyPath: '++id', ts: {} as User } }; +const { idbql } = createIdbqDb(model, 1).create('my_db'); +``` -## Limitations -- This skill only returns the content of README.md (not example files or detailed API docs) -- Requires the CLI to be properly exposed in package.json (bin field) +--- -# Skill : Lecture du README de idae-idbql +## Reactivity -## Description -Ce skill permet d'accéder à la documentation complète du package idae-idbql en utilisant la commande CLI get-readme. Il est conçu pour être utilisé par l'IA, des scripts d'automatisation, ou tout utilisateur souhaitant obtenir rapidement la doc officielle du package. +idae-idbql is state-agnostic. Use Svelte 5 runes (`$derived`, `$state`) or idae-stator for reactive updates. All query chains are compatible with Svelte 5 reactivity. -## Utilisation +--- + +## Compatibility + +- Fully compatible with all idae-query methods and syntax +- IndexedDB persistence with MongoDB-like querying +- Works in browser environments +- Supports Svelte 5 and idae-stator for reactivity + +--- + +## See Also + +- [idae-query README](https://github.com/medyll/idae-query) +- [idae-idbql README](README.md) + +### Writing Data +- **put(data)**: Insert or update an item. Returns the inserted/updated item. +- **add(data)**: Insert a new item. Returns the inserted item. +- **update(id, changes)**: Update an item by key. +- **updateWhere(query, changes)**: Bulk update items matching a query. + +### Deleting Data +- **delete(id)**: Delete an item by key. +- **del(id)**: Alias for `delete` (deprecated). +- **deleteWhere(query)**: Bulk delete items matching a query. + +--- -### En local (dans le monorepo) : -```bash -npx @medyll/idae-idbql get-readme +## Method Signatures + +```typescript +// Reading +where(query: Where, options?: ResultsetOptions): ResultSet | Promise> +get(id: any, pathKey?: string): T | undefined +getBy(value: any, pathKey?: string): ResultSet +getOne(id: any, pathKey?: string): T | undefined // deprecated +getAll(): ResultSet | Promise +count(query?: Where): Promise + +// Writing +put(data: Partial): Promise +add(data: T): Promise +update(id: string | number, changes: Partial): Promise +updateWhere(query: Where, changes: Partial): Promise + +// Deleting +delete(id: string | number): Promise +del(id: string | number): Promise // deprecated +deleteWhere(query: Where): Promise ``` -### En tant que skill IA (VS Code, Claude, Copilot, etc.) : -- Demander à l'agent d'exécuter la commande ci-dessus pour obtenir la documentation la plus à jour. -- Le résultat affichera le contenu du README.md du package. +--- + +## Usage Example + +```typescript +// Insert a user +await idbql.users.put({ name: 'Alice', age: 30 }); + +// Query users +const adults = await idbql.users.where({ age: { $gte: 18 } }); + +// Update users +await idbql.users.updateWhere({ active: true }, { lastLogin: Date.now() }); + +// Delete a user +await idbql.users.delete(123); +``` + +--- + +## Notes +- All methods are type-safe and support TypeScript generics. +- Query operators (`$gt`, `$in`, `$or`, etc.) are supported via `@medyll/idae-query`. +- For reactivity, use Svelte 5 runes or idae-stator as described in the main documentation. +- Deprecated methods (`getOne`, `del`) are included for backward compatibility. + +--- + +## Advanced Examples + +### Complex Query Example + +```typescript +// Complex filtering with object-style syntax +const results = await idbql.posts.where({ + status: 'published', + tags: { $in: ['svelte', 'idb'] }, + views: { $gt: 100 }, + $or: [ + { author: 'Mydde' }, + { featured: true } + ] +}).toArray(); +``` -## Exemples d'intégration -- Génération automatique de documentation contextuelle -- Réponse à une question sur l'API ou les patterns d'utilisation de idae-idbql -- Onboarding ou aide contextuelle dans l'éditeur +### Svelte 5 Runes Example -## Bonnes pratiques -- Toujours utiliser la commande get-readme pour garantir que la documentation est à jour (éviter les copies statiques) -- Peut être combiné avec d'autres skills pour explorer l'API, les exports, ou les exemples du package +```svelte + + +{#each adults.value as user} +

{user.name}

+{/each} +``` + +### idae-stator Example + +```typescript +import { createIdbqDb } from '@medyll/idae-idbql'; + +const { idbql } = createIdbqDb(model, 1, { engine: 'stator' }).create('my_app_db'); + +const query = idbql.users.where({ role: 'admin' }); +query.onchange((oldValue, newValue) => { + console.log('Data updated:', newValue); +}); +``` diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/advanced-examples.md b/packages/idae-idbql/.github/skills/idae-idbql/references/advanced-examples.md new file mode 100644 index 000000000..decad6568 --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/advanced-examples.md @@ -0,0 +1,49 @@ +# Advanced Examples + +## Complex Filtering + +```typescript +const results = await idbql.posts.where({ + status: 'published', + tags: { $in: ['svelte', 'idb'] }, + views: { $gt: 100 }, + $or: [ + { author: 'Medyl' }, + { featured: true } + ] +}).toArray(); +``` + +## Pagination + +```typescript +const page1 = idbql.users.getPage(1, 10); +const page2 = idbql.users.getPage(2, 10); +``` + +## Grouping + +```typescript +const groupedByRole = idbql.users.groupBy('role'); +const groupedByAge = idbql.users.groupBy('age'); +``` + +## Chaining Example + +```typescript +const admins = idbql.users.where({ role: 'admin' }) + .sortBy({ lastLogin: 'desc' }) + .getPage(1, 5) + .pluck('name'); +``` + +## Trivial Examples + +```typescript +const firstUser = idbql.users.first(); +const lastUser = idbql.users.last(); +const totalUsers = idbql.users.count(); +const sumAges = idbql.users.sum('age'); +const minAge = idbql.users.min('age'); +const maxAge = idbql.users.max('age'); +``` \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/aggregation.md b/packages/idae-idbql/.github/skills/idae-idbql/references/aggregation.md new file mode 100644 index 000000000..6ca490cf1 --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/aggregation.md @@ -0,0 +1,31 @@ +# Aggregation & Transformation + +## Statistical Analysis + +```typescript +const stats = { + total: idbql.users.count(), + adults: idbql.users.count({ age: { $gte: 18 } }), + averageAge: idbql.users.avg('age'), + minAge: idbql.users.min('age'), + maxAge: idbql.users.max('age'), +}; +``` + +## Data Transformation Pipeline + +```typescript +const report = idbql.users.where({ age: { $gte: 18 } }) + .reduce((acc, item) => { + acc.total++; + acc.ages.push(item.age); + acc.names.push(item.name); + return acc; + }, { total: 0, ages: [], names: [] }); +``` + +## Distinct with Filtering + +```typescript +const uniqueRoles = idbql.users.distinct('role').pluck('role'); +``` \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/collection-methods.md b/packages/idae-idbql/.github/skills/idae-idbql/references/collection-methods.md new file mode 100644 index 000000000..3a3b10e3f --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/collection-methods.md @@ -0,0 +1,20 @@ +# Collection Methods + +Each collection (e.g., `idbql.users`, `idbql.tasks`) exposes standard CRUD and query methods. + +## Reading Data +- `where(query, options?)`: Advanced filtering with operator support. +- `get(id, pathKey?)`: Get a single item by key. +- `getBy(value, pathKey?)`: Get all items matching a key/value pair. +- `getAll()`: Get all items in the collection. +- `count(query?)`: Count documents, optionally filtered. + +## Writing Data +- `put(data)`: Insert or update an item. +- `add(data)`: Insert a new item. +- `update(id, changes)`: Update an item by key. +- `updateWhere(query, changes)`: Bulk update items matching a query. + +## Deleting Data +- `delete(id)`: Delete an item by key. +- `deleteWhere(query)`: Bulk delete items matching a query. \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/compatibility.md b/packages/idae-idbql/.github/skills/idae-idbql/references/compatibility.md new file mode 100644 index 000000000..22ba4a307 --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/compatibility.md @@ -0,0 +1,6 @@ +# Compatibility + +- Fully compatible with all idae-query methods and syntax +- IndexedDB persistence with MongoDB-like querying +- Works in browser environments +- Supports Svelte 5 and idae-stator for reactivity \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/custom-operators.md b/packages/idae-idbql/.github/skills/idae-idbql/references/custom-operators.md new file mode 100644 index 000000000..b29237e32 --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/custom-operators.md @@ -0,0 +1,13 @@ +# Custom Operators + +You can add custom operators via idae-query and use them in idae-idbql queries. + +## Example + +```typescript +import { Operators } from '@medyll/idae-query'; + +Operators.addCustomOperator('isEven', (field, value, data) => data[field] % 2 === 0); + +const evenUsers = idbql.users.where({ age: { isEven: true } }); +``` \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/notes.md b/packages/idae-idbql/.github/skills/idae-idbql/references/notes.md new file mode 100644 index 000000000..4cdcdd582 --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/notes.md @@ -0,0 +1,6 @@ +# Notes + +- All methods are type-safe and support TypeScript generics. +- Query operators ($gt, $in, $or, etc.) are supported via @medyll/idae-query. +- For reactivity, use Svelte 5 runes or idae-stator as described in the main documentation. +- Deprecated methods (getOne, del) are included for backward compatibility. \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/overview.md b/packages/idae-idbql/.github/skills/idae-idbql/references/overview.md new file mode 100644 index 000000000..76ff1799b --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/overview.md @@ -0,0 +1,5 @@ +# Overview + +The idae-idbql API exposes a MongoDB-like, chainable interface for working with IndexedDB collections. All collection methods are available via the `idbql` object returned from `createIdbqlState` or `createIdbqDb(...).create(...)`. + +See AGENTS.md and copilot-instructions.md for usage patterns. \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/query-syntax.md b/packages/idae-idbql/.github/skills/idae-idbql/references/query-syntax.md new file mode 100644 index 000000000..fadbf05b6 --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/query-syntax.md @@ -0,0 +1,29 @@ +# Query Syntax & Operators + +idae-idbql supports advanced query syntax and operators from idae-query. + +## Supported Operators + +- `$eq`, `$ne`, `$gt`, `$gte`, `$lt`, `$lte`, `$in`, `$nin`, `$contains`, `$startsWith`, `$endsWith`, `$btw`, `$or`, `$and` + +## Example + +```typescript +idbql.users.where({ + age: { $gt: 18 }, + name: { $contains: 'Jo' }, + $or: [ + { status: 'active' }, + { featured: true } + ] +}); +``` + +## Dot-path Resolution + +Query and transformation methods support dot-paths for nested property access: + +```typescript +idbql.orders.where({ 'metadata.order': { $eq: 2 } }); +idbql.orders.sortBy({ 'metadata.order': 'asc' }); +``` \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/reactivity.md b/packages/idae-idbql/.github/skills/idae-idbql/references/reactivity.md new file mode 100644 index 000000000..6021fcd1b --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/reactivity.md @@ -0,0 +1,32 @@ +# Reactivity + +idae-idbql is state-agnostic. Use Svelte 5 runes (`$derived`, `$state`) or idae-stator for reactive updates. + +## Svelte 5 Runes Example + +```svelte + + +{#each adults.value as user} +

{user.name}

+{/each} +``` + +## idae-stator Example + +```typescript +import { createIdbqDb } from '@medyll/idae-idbql'; + +const { idbql } = createIdbqDb(model, 1, { engine: 'stator' }).create('my_app_db'); + +const query = idbql.users.where({ role: 'admin' }); +query.onchange((oldValue, newValue) => { + console.log('Data updated:', newValue); +}); +``` \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/resultset-api.md b/packages/idae-idbql/.github/skills/idae-idbql/references/resultset-api.md new file mode 100644 index 000000000..30e987709 --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/resultset-api.md @@ -0,0 +1,35 @@ +# Chainable Methods (ResultSet API) + +idae-idbql collections return ResultSet objects supporting chainable, type-safe methods: + +- `filter(predicate)` +- `map(mapper)` +- `distinct(key?)` +- `reverse()` +- `sortBy(sortOptions)` +- `groupBy(groupBy, keepUngroupedData?)` +- `getPage(page, pageSize)` +- `count(criteria?)` +- `pluck(field)` +- `reduce(reducer, initialValue)` +- `first()` +- `last()` +- `sum(field)` +- `avg(field)` +- `min(field)` +- `max(field)` + +## Example + +```typescript +const adults = idbql.users.where({ age: { $gte: 18 } }); +const sorted = adults.sortBy({ age: 'asc', name: 'desc' }); +const grouped = adults.groupBy('age'); +const page = adults.getPage(1, 10); +const stats = { + total: adults.count(), + averageAge: adults.avg('age'), + minAge: adults.min('age'), + maxAge: adults.max('age'), +}; +``` \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/type-safety.md b/packages/idae-idbql/.github/skills/idae-idbql/references/type-safety.md new file mode 100644 index 000000000..5f6d77ccd --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/type-safety.md @@ -0,0 +1,5 @@ +# Type Safety & Generics + +All methods are fully type-safe and support deep generics. + +See README.md for details. \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/idae-idbql/references/usage-examples.md b/packages/idae-idbql/.github/skills/idae-idbql/references/usage-examples.md new file mode 100644 index 000000000..247bd8f64 --- /dev/null +++ b/packages/idae-idbql/.github/skills/idae-idbql/references/usage-examples.md @@ -0,0 +1,59 @@ +# Usage Examples + +## Basic CRUD + +```typescript +// Insert a user +await idbql.users.put({ name: 'Alice', age: 30 }); + +// Query users +const adults = await idbql.users.where({ age: { $gte: 18 } }); + +// Update users +await idbql.users.updateWhere({ active: true }, { lastLogin: Date.now() }); + +// Delete a user +await idbql.users.delete(123); +``` + +## Query with Operators + +```typescript +const results = await idbql.posts.where({ + status: 'published', + tags: { $in: ['svelte', 'idb'] }, + views: { $gt: 100 }, + $or: [ + { author: 'Mydde' }, + { featured: true } + ] +}).toArray(); +``` + +## Svelte 5 Runes Example + +```svelte + + +{#each adults.value as user} +

{user.name}

+{/each} +``` + +## Distinct and Aggregation + +```typescript +const uniqueRoles = idbql.users.distinct('role').pluck('role'); +const stats = { + total: idbql.users.count(), + averageAge: idbql.users.avg('age'), + minAge: idbql.users.min('age'), + maxAge: idbql.users.max('age'), +}; +``` \ No newline at end of file diff --git a/packages/idae-idbql/.github/skills/skill-creator/SKILL.md b/packages/idae-idbql/.github/skills/skill-creator/SKILL.md new file mode 100644 index 000000000..06142aec0 --- /dev/null +++ b/packages/idae-idbql/.github/skills/skill-creator/SKILL.md @@ -0,0 +1,357 @@ +--- +name: skill-creator +description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends VSCode capabilities with specialized knowledge, workflows, or tool integrations. +license: Complete terms in LICENSE.txt +--- + +# Skill Creator + +This skill provides guidance for creating effective skills. + +## About Skills + +Skills are modular, self-contained packages that extend VSCode's capabilities by providing +specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific +domains or tasks—they transform VSCode from a general-purpose editor into a specialized tool +equipped with procedural knowledge that no extension can fully possess. + +### What Skills Provide + +1. Specialized workflows - Multi-step procedures for specific domains +2. Tool integrations - Instructions for working with specific file formats or APIs +3. Domain expertise - Company-specific knowledge, schemas, business logic +4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks + +## Core Principles + +### Concise is Key + +The context window is a public good. Skills share the context window with everything else VSCode needs: system prompt, conversation history, other Skills' metadata, and the actual user request. + +**Default assumption: VSCode is already very smart.** Only add context VSCode doesn't already have. Challenge each piece of information: "Does VSCode really need this explanation?" and "Does this paragraph justify its token cost?" + +Prefer concise examples over verbose explanations. + +### Set Appropriate Degrees of Freedom + +Match the level of specificity to the task's fragility and variability: + +**High freedom (text-based instructions)**: Use when multiple approaches are valid, decisions depend on context, or heuristics guide the approach. + +**Medium freedom (pseudocode or scripts with parameters)**: Use when a preferred pattern exists, some variation is acceptable, or configuration affects behavior. + +**Low freedom (specific scripts, few parameters)**: Use when operations are fragile and error-prone, consistency is critical, or a specific sequence must be followed. + +Think of VSCode as exploring a path: a narrow bridge with cliffs needs specific guardrails (low freedom), while an open field allows many routes (high freedom). + +### Anatomy of a Skill + +Every skill consists of a required SKILL.md file and optional bundled resources: + +``` +skill-name/ +├── SKILL.md (required) +│ ├── YAML frontmatter metadata (required) +│ │ ├── name: (required) +│ │ ├── description: (required) +│ │ └── compatibility: (optional, rarely needed) +│ └── Markdown instructions (required) +└── Bundled Resources (optional) + ├── scripts/ - Executable code (Python/Bash/etc.) + ├── references/ - Documentation intended to be loaded into context as needed + └── assets/ - Files used in output (templates, icons, fonts, etc.) +``` + +#### SKILL.md (required) + +Every SKILL.md consists of: + +- **Frontmatter** (YAML): Contains `name` and `description` fields (required), plus optional fields like `license`, `metadata`, and `compatibility`. Only `name` and `description` are read by Claude to determine when the skill triggers, so be clear and comprehensive about what the skill is and when it should be used. The `compatibility` field is for noting environment requirements (target product, system packages, etc.) but most skills don't need it. +- **Body** (Markdown): Instructions and guidance for using the skill. Only loaded AFTER the skill triggers (if at all). + +#### Bundled Resources (optional) + +##### Scripts (`scripts/`) + +Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten. + +- **When to include**: When the same code is being rewritten repeatedly or deterministic reliability is needed +- **Example**: `scripts/rotate_pdf.py` for PDF rotation tasks +- **Benefits**: Token efficient, deterministic, may be executed without loading into context +- **Note**: Scripts may still need to be read by Claude for patching or environment-specific adjustments + +##### References (`references/`) + +Documentation and reference material intended to be loaded as needed into context to inform Claude's process and thinking. + +- **When to include**: For documentation that Claude should reference while working +- **Examples**: `references/finance.md` for financial schemas, `references/mnda.md` for company NDA template, `references/policies.md` for company policies, `references/api_docs.md` for API specifications +- **Use cases**: Database schemas, API documentation, domain knowledge, company policies, detailed workflow guides +- **Benefits**: Keeps SKILL.md lean, loaded only when Claude determines it's needed +- **Best practice**: If files are large (>10k words), include grep search patterns in SKILL.md +- **Avoid duplication**: Information should live in either SKILL.md or references files, not both. Prefer references files for detailed information unless it's truly core to the skill—this keeps SKILL.md lean while making information discoverable without hogging the context window. Keep only essential procedural instructions and workflow guidance in SKILL.md; move detailed reference material, schemas, and examples to references files. + +##### Assets (`assets/`) + +Files not intended to be loaded into context, but rather used within the output Claude produces. + +- **When to include**: When the skill needs files that will be used in the final output +- **Examples**: `assets/logo.png` for brand assets, `assets/slides.pptx` for PowerPoint templates, `assets/frontend-template/` for HTML/React boilerplate, `assets/font.ttf` for typography +- **Use cases**: Templates, images, icons, boilerplate code, fonts, sample documents that get copied or modified +- **Benefits**: Separates output resources from documentation, enables Claude to use files without loading them into context + +#### What to Not Include in a Skill + +A skill should only contain essential files that directly support its functionality. Do NOT create extraneous documentation or auxiliary files, including: + +- README.md +- INSTALLATION_GUIDE.md +- QUICK_REFERENCE.md +- CHANGELOG.md +- etc. + +The skill should only contain the information needed for an AI agent to do the job at hand. It should not contain auxilary context about the process that went into creating it, setup and testing procedures, user-facing documentation, etc. Creating additional documentation files just adds clutter and confusion. + +### Progressive Disclosure Design Principle + +Skills use a three-level loading system to manage context efficiently: + +1. **Metadata (name + description)** - Always in context (~100 words) +2. **SKILL.md body** - When skill triggers (<5k words) +3. **Bundled resources** - As needed by Claude (Unlimited because scripts can be executed without reading into context window) + +#### Progressive Disclosure Patterns + +Keep SKILL.md body to the essentials and under 500 lines to minimize context bloat. Split content into separate files when approaching this limit. When splitting out content into other files, it is very important to reference them from SKILL.md and describe clearly when to read them, to ensure the reader of the skill knows they exist and when to use them. + +**Key principle:** When a skill supports multiple variations, frameworks, or options, keep only the core workflow and selection guidance in SKILL.md. Move variant-specific details (patterns, examples, configuration) into separate reference files. + +**Pattern 1: High-level guide with references** + +```markdown +# PDF Processing + +## Quick start + +Extract text with pdfplumber: +[code example] + +## Advanced features + +- **Form filling**: See [FORMS.md](FORMS.md) for complete guide +- **API reference**: See [REFERENCE.md](REFERENCE.md) for all methods +- **Examples**: See [EXAMPLES.md](EXAMPLES.md) for common patterns +``` + +Claude loads FORMS.md, REFERENCE.md, or EXAMPLES.md only when needed. + +**Pattern 2: Domain-specific organization** + +For Skills with multiple domains, organize content by domain to avoid loading irrelevant context: + +``` +bigquery-skill/ +├── SKILL.md (overview and navigation) +└── reference/ + ├── finance.md (revenue, billing metrics) + ├── sales.md (opportunities, pipeline) + ├── product.md (API usage, features) + └── marketing.md (campaigns, attribution) +``` + +When a user asks about sales metrics, Claude only reads sales.md. + +Similarly, for skills supporting multiple frameworks or variants, organize by variant: + +``` +cloud-deploy/ +├── SKILL.md (workflow + provider selection) +└── references/ + ├── aws.md (AWS deployment patterns) + ├── gcp.md (GCP deployment patterns) + └── azure.md (Azure deployment patterns) +``` + +When the user chooses AWS, Claude only reads aws.md. + +**Pattern 3: Conditional details** + +Show basic content, link to advanced content: + +```markdown +# DOCX Processing + +## Creating documents + +Use docx-js for new documents. See [DOCX-JS.md](DOCX-JS.md). + +## Editing documents + +For simple edits, modify the XML directly. + +**For tracked changes**: See [REDLINING.md](REDLINING.md) +**For OOXML details**: See [OOXML.md](OOXML.md) +``` + +Claude reads REDLINING.md or OOXML.md only when the user needs those features. + +**Important guidelines:** + +- **Avoid deeply nested references** - Keep references one level deep from SKILL.md. All reference files should link directly from SKILL.md. +- **Structure longer reference files** - For files longer than 100 lines, include a table of contents at the top so Claude can see the full scope when previewing. + +## Skill Creation Process + +Skill creation involves these steps: + +1. Understand the skill with concrete examples +2. Plan reusable skill contents (scripts, references, assets) +3. Initialize the skill (run init_skill.py) +4. Edit the skill (implement resources and write SKILL.md) +5. Package the skill (run package_skill.py) +6. Iterate based on real usage + +Follow these steps in order, skipping only if there is a clear reason why they are not applicable. + +### Step 1: Understanding the Skill with Concrete Examples + +Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill. + +To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback. + +For example, when building an image-editor skill, relevant questions include: + +- "What functionality should the image-editor skill support? Editing, rotating, anything else?" +- "Can you give some examples of how this skill would be used?" +- "I can imagine users asking for things like 'Remove the red-eye from this image' or 'Rotate this image'. Are there other ways you imagine this skill being used?" +- "What would a user say that should trigger this skill?" + +To avoid overwhelming users, avoid asking too many questions in a single message. Start with the most important questions and follow up as needed for better effectiveness. + +Conclude this step when there is a clear sense of the functionality the skill should support. + +### Step 2: Planning the Reusable Skill Contents + +To turn concrete examples into an effective skill, analyze each example by: + +1. Considering how to execute on the example from scratch +2. Identifying what scripts, references, and assets would be helpful when executing these workflows repeatedly + +Example: When building a `pdf-editor` skill to handle queries like "Help me rotate this PDF," the analysis shows: + +1. Rotating a PDF requires re-writing the same code each time +2. A `scripts/rotate_pdf.py` script would be helpful to store in the skill + +Example: When designing a `frontend-webapp-builder` skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows: + +1. Writing a frontend webapp requires the same boilerplate HTML/React each time +2. An `assets/hello-world/` template containing the boilerplate HTML/React project files would be helpful to store in the skill + +Example: When building a `big-query` skill to handle queries like "How many users have logged in today?" the analysis shows: + +1. Querying BigQuery requires re-discovering the table schemas and relationships each time +2. A `references/schema.md` file documenting the table schemas would be helpful to store in the skill + +To establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets. + +### Step 3: Initializing the Skill + +At this point, it is time to actually create the skill. + +Skip this step only if the skill being developed already exists, and iteration or packaging is needed. In this case, continue to the next step. + +When creating a new skill from scratch, always run the `init_skill.py` script. The script conveniently generates a new template skill directory that automatically includes everything a skill requires, making the skill creation process much more efficient and reliable. + +Usage: + +```bash +scripts/init_skill.py --path +``` + +The script: + +- Creates the skill directory at the specified path +- Generates a SKILL.md template with proper frontmatter and TODO placeholders +- Creates example resource directories: `scripts/`, `references/`, and `assets/` +- Adds example files in each directory that can be customized or deleted + +After initialization, customize or remove the generated SKILL.md and example files as needed. + +### Step 4: Edit the Skill + +When editing the (newly-generated or existing) skill, remember that the skill is being created for another instance of Claude to use. Include information that would be beneficial and non-obvious to Claude. Consider what procedural knowledge, domain-specific details, or reusable assets would help another Claude instance execute these tasks more effectively. + +#### Learn Proven Design Patterns + +Consult these helpful guides based on your skill's needs: + +- **Multi-step processes**: See references/workflows.md for sequential workflows and conditional logic +- **Specific output formats or quality standards**: See references/output-patterns.md for template and example patterns + +These files contain established best practices for effective skill design. + +#### Start with Reusable Skill Contents + +To begin implementation, start with the reusable resources identified above: `scripts/`, `references/`, and `assets/` files. Note that this step may require user input. For example, when implementing a `brand-guidelines` skill, the user may need to provide brand assets or templates to store in `assets/`, or documentation to store in `references/`. + +Added scripts must be tested by actually running them to ensure there are no bugs and that the output matches what is expected. If there are many similar scripts, only a representative sample needs to be tested to ensure confidence that they all work while balancing time to completion. + +Any example files and directories not needed for the skill should be deleted. The initialization script creates example files in `scripts/`, `references/`, and `assets/` to demonstrate structure, but most skills won't need all of them. + +#### Update SKILL.md + +**Writing Guidelines:** Always use imperative/infinitive form. + +##### Frontmatter + +Write the YAML frontmatter with `name` and `description`: + +- `name`: The skill name +- `description`: This is the primary triggering mechanism for your skill, and helps Claude understand when to use the skill. + - Include both what the Skill does and specific triggers/contexts for when to use it. + - Include all "when to use" information here - Not in the body. The body is only loaded after triggering, so "When to Use This Skill" sections in the body are not helpful to Claude. + - Example description for a `docx` skill: "Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. Use when Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks" + +Do not include any other fields in YAML frontmatter. + +##### Body + +Write instructions for using the skill and its bundled resources. + +### Step 5: Packaging a Skill + +Once development of the skill is complete, it must be packaged into a distributable .skill file that gets shared with the user. The packaging process automatically validates the skill first to ensure it meets all requirements: + +```bash +scripts/package_skill.py +``` + +Optional output directory specification: + +```bash +scripts/package_skill.py ./dist +``` + +The packaging script will: + +1. **Validate** the skill automatically, checking: + + - YAML frontmatter format and required fields + - Skill naming conventions and directory structure + - Description completeness and quality + - File organization and resource references + +2. **Package** the skill if validation passes, creating a .skill file named after the skill (e.g., `my-skill.skill`) that includes all files and maintains the proper directory structure for distribution. The .skill file is a zip file with a .skill extension. + +If validation fails, the script will report the errors and exit without creating a package. Fix any validation errors and run the packaging command again. + +### Step 6: Iterate + +After testing the skill, users may request improvements. Often this happens right after using the skill, with fresh context of how the skill performed. + +**Iteration workflow:** + +1. Use the skill on real tasks +2. Notice struggles or inefficiencies +3. Identify how SKILL.md or bundled resources should be updated +4. Implement changes and test again \ No newline at end of file diff --git a/packages/idae-idbql/.prettierrc.js b/packages/idae-idbql/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-idbql/.prettierrc.js +++ b/packages/idae-idbql/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-idbql/.vscode/mcp.json b/packages/idae-idbql/.vscode/mcp.json new file mode 100644 index 000000000..6df9c17c2 --- /dev/null +++ b/packages/idae-idbql/.vscode/mcp.json @@ -0,0 +1,3 @@ +{ + "servers": {} +} diff --git a/packages/idae-idbql/SKILL.md b/packages/idae-idbql/SKILL.md new file mode 100644 index 000000000..c9d859c9d --- /dev/null +++ b/packages/idae-idbql/SKILL.md @@ -0,0 +1,63 @@ +--- +name: idae-idbql-readme +package: '@medyll/idae-idbql' +description: Skill to dynamically retrieve the documentation (README.md) of the idae-idbql package via the standardized CLI. idae-idbql is a powerful and flexible IndexedDB query library for TypeScript and JavaScript, offering a MongoDB-like query interface, strong TypeScript support, reactive state management, and easy integration with Svelte. Useful for AI agents, automation scripts, or users needing up-to-date package docs. +--- + +# Skill: Read idae-idbql README + +## Description +This skill allows you to access the full documentation of the idae-idbql package by using the CLI get-readme command. It is designed for use by AI agents, automation scripts, or any user who wants to quickly fetch the official package documentation. + +## Usage + +### Locally (in the monorepo): +```bash +npx @medyll/idae-idbql get-readme +``` + +### As an AI skill (VS Code, Claude, Copilot, etc.): +- Instruct the agent to run the above command to fetch the latest documentation. +- The output will be the content of the package's README.md. + +## Integration Examples +- Automatic generation of contextual documentation +- Answering questions about the idae-idbql API or usage patterns +- Onboarding or contextual help in the editor + +## Best Practices +- Always use the get-readme command to ensure the documentation is up to date (avoid static copies) +- Can be combined with other skills to explore the API, exports, or code examples of the package + +## Limitations +- This skill only returns the content of README.md (not example files or detailed API docs) +- Requires the CLI to be properly exposed in package.json (bin field) + +# Skill : Lecture du README de idae-idbql + +## Description +Ce skill permet d'accéder à la documentation complète du package idae-idbql en utilisant la commande CLI get-readme. Il est conçu pour être utilisé par l'IA, des scripts d'automatisation, ou tout utilisateur souhaitant obtenir rapidement la doc officielle du package. + +## Utilisation + +### En local (dans le monorepo) : +```bash +npx @medyll/idae-idbql get-readme +``` + +### En tant que skill IA (VS Code, Claude, Copilot, etc.) : +- Demander à l'agent d'exécuter la commande ci-dessus pour obtenir la documentation la plus à jour. +- Le résultat affichera le contenu du README.md du package. + +## Exemples d'intégration +- Génération automatique de documentation contextuelle +- Réponse à une question sur l'API ou les patterns d'utilisation de idae-idbql +- Onboarding ou aide contextuelle dans l'éditeur + +## Bonnes pratiques +- Toujours utiliser la commande get-readme pour garantir que la documentation est à jour (éviter les copies statiques) +- Peut être combiné avec d'autres skills pour explorer l'API, les exports, ou les exemples du package + +## Limites +- Le skill retourne uniquement le contenu du README.md (pas les fichiers d'exemples ou la doc API détaillée) +- Nécessite que la CLI soit bien exposée dans le package.json (champ bin) diff --git a/packages/idae-idbql/src/lib/index.ts b/packages/idae-idbql/src/lib/index.ts index b577e4f76..217d1b332 100644 --- a/packages/idae-idbql/src/lib/index.ts +++ b/packages/idae-idbql/src/lib/index.ts @@ -1,10 +1,10 @@ // auto exports of entry components -export * from '$lib/state/statorAdapter.js'; -export * from '$lib/state/idbstate.svelte.js'; -export * from '$lib/state/idbqlEvent.svelte.js'; -export * from '$lib/scripts/types.js'; -export * from '$lib/path/pathResolver.js'; -export * from '$lib/idbqlCore/types.js'; -export * from '$lib/idbqlCore/idbqlSchema.js'; -export * from '$lib/idbqlCore/idbqlCore.js'; export * from '$lib/collection/collection.svelte.js'; +export * from '$lib/idbqlCore/idbqlCore.js'; +export * from '$lib/idbqlCore/idbqlSchema.js'; +export * from '$lib/idbqlCore/types.js'; +export * from '$lib/path/pathResolver.js'; +export * from '$lib/scripts/types.js'; +export * from '$lib/state/idbqlEvent.svelte.js'; +export * from '$lib/state/idbstate.svelte.js'; +export * from '$lib/state/statorAdapter.js'; diff --git a/packages/idae-idbql/src/lib/state/idbqlEvent.svelte.ts b/packages/idae-idbql/src/lib/state/idbqlEvent.svelte.ts index d6482bc44..3d0e89acf 100644 --- a/packages/idae-idbql/src/lib/state/idbqlEvent.svelte.ts +++ b/packages/idae-idbql/src/lib/state/idbqlEvent.svelte.ts @@ -12,26 +12,15 @@ interface EventData { data: T; keyPath: string; } -class IdbqlStateEvent { - // main application shared state +class IdbqlStateEventBase { + // main application shared state (fallback non-Svelte) dataState: Record; private _adapter: { applyEvent?: (event: IdbqlEventPayload) => void; } | null = null; constructor() { - // Initialize dataState with Svelte runes when available, otherwise use plain object - // `typeof $state` is safe even if `$state` is not defined in this environment. - // In Svelte compile context `$state` exists and returns a reactive store proxy. - if (typeof $state !== "undefined") { - // use the Svelte rune to create reactive state - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - this.dataState = $state>({}); - } else { - // fallback for non-Svelte environments: plain object - this.dataState = {} as Record; - } + this.dataState = {} as Record; } registerAdapter(adapter: { applyEvent?: (event: IdbqlEventPayload) => void } | null) { @@ -186,11 +175,28 @@ class IdbqlStateEvent { } } +// Svelte-specific subclass uses the `$state` rune as a class field initializer. +// Instantiating this subclass in a non-Svelte environment will throw; callers +// should use `createIdbqlEvent()` which falls back to the base implementation. +class IdbqlStateEvent extends IdbqlStateEventBase { + // main application shared state - Svelte rune (only valid in Svelte contexts) + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + dataState = $state>({}); +} + export function createIdbqlEvent() { - return new IdbqlStateEvent(); + try { + // Try to instantiate the Svelte-aware subclass. In non-Svelte + // environments this will throw (because `$state` is not defined), + // so we fallback to the base implementation. + return new IdbqlStateEvent(); + } catch (e) { + return new IdbqlStateEventBase(); + } } -let _idbqlEventSingleton: IdbqlStateEvent | null = null; +let _idbqlEventSingleton: IdbqlStateEventBase | IdbqlStateEvent | null = null; export function getIdbqlEvent() { if (!_idbqlEventSingleton) { diff --git a/packages/idae-machine/.prettierrc.js b/packages/idae-machine/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-machine/.prettierrc.js +++ b/packages/idae-machine/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-machine/CHANGELOG.md b/packages/idae-machine/CHANGELOG.md index 7c359283c..6965eb75d 100644 --- a/packages/idae-machine/CHANGELOG.md +++ b/packages/idae-machine/CHANGELOG.md @@ -60,7 +60,7 @@ - **2026-01-14** - Refactor code structure for improved readability and maintainability - **2026-01-14** - fix: add console log for changeset file creation in generate-changeset script - **2026-01-14** - fix: add comment to clarify context retrieval in FieldValue component -- **2026-01-14** - chore: update @medyll/idae-prettier-config to version ^1.2.1 across multiple packages +- **2026-01-14** - chore: update @medyll/idae-config-prettier to version ^1.2.1 across multiple packages - **2026-01-14** - feat: enhance IDbCollections with new methods and improve collection handling; update dependencies and tests - **2026-01-14** - feat: refactor machine initialization and enhance IDbCollections with shared instances; update README and tests - **2026-01-13** - feat: remove obsolete components and services; clean up unused code diff --git a/packages/idae-mongo/.prettierrc.js b/packages/idae-mongo/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-mongo/.prettierrc.js +++ b/packages/idae-mongo/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-mongo/src/lib/index.ts b/packages/idae-mongo/src/lib/index.ts index bda23e30b..d4d87f2be 100644 --- a/packages/idae-mongo/src/lib/index.ts +++ b/packages/idae-mongo/src/lib/index.ts @@ -1,6 +1,6 @@ // auto exports of entry components -export * from '$lib/data/types.js'; -export * from '$lib/data/schemeModelClass.js'; -export * from '$lib/data/SchemeModel.js'; -export * from '$lib/data/SchemeFieldClass.js'; export * from '$lib/data/Entity.js'; +export * from '$lib/data/SchemeFieldClass.js'; +export * from '$lib/data/SchemeModel.js'; +export * from '$lib/data/schemeModelClass.js'; +export * from '$lib/data/types.js'; diff --git a/packages/idae-query/.prettierrc.js b/packages/idae-query/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-query/.prettierrc.js +++ b/packages/idae-query/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-query/src/lib/index.ts b/packages/idae-query/src/lib/index.ts index 13bbe2b8a..9b2459b25 100644 --- a/packages/idae-query/src/lib/index.ts +++ b/packages/idae-query/src/lib/index.ts @@ -1,6 +1,6 @@ // auto exports of entry components -export * from '$lib/types.js'; -export * from '$lib/resultSet/resultset.js'; -export * from '$lib/query/query.js'; -export * from '$lib/path/pathResolver.js'; export * from '$lib/operators/operators.js'; +export * from '$lib/path/pathResolver.js'; +export * from '$lib/query/query.js'; +export * from '$lib/resultSet/resultset.js'; +export * from '$lib/types.js'; diff --git a/packages/idae-slotui/.github/agents/idae-agent-full.md b/packages/idae-slotui/.github/agents/idae-agent-full.md deleted file mode 100644 index 0f8e9be5c..000000000 --- a/packages/idae-slotui/.github/agents/idae-agent-full.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -description: 'Expert Multi-role Agent (PM, Architect, Brainstorm, Dev, Tester, DOC) with GitHub & Kanban integration.' -tools: ['vscode', 'execute', 'read', 'edit', 'search', 'web', 'agent', 'todo', 'daniyalfaraz.copilot-kanban/kanban_create', 'daniyalfaraz.copilot-kanban/kanban_update', 'daniyalfaraz.copilot-kanban/kanban_get', 'daniyalfaraz.copilot-kanban/kanban_reset'] ---- - -# SYSTEM INSTRUCTIONS - -You are a versatile AI Agent for Mydde. You dynamically switch between six roles. -Every response MUST start with: [[ROLE_NAME]]. - -## 1. DYNAMIC ROLES -- **[[PM]]**: Project management. Synchronizes GitHub Issues and the Kanban board. Tasks: Sprint planning, `backlog.md`. -- **[[BRAINSTORM]]**: Ideation and exploration. Proposes alternatives and challenges concepts before technical design. -- **[[ARCHITECT]]**: Design focus. Tasks: Technical specifications, file structure, and system design. -- **[[DEV]]**: Implementation. Tasks: SOLID code. Triggers [[DOC]] if changes impact documentation. -- **[[TESTER]]**: Quality. **MANDATORY**: No implementation without a test plan. -- **[[DOC]]**: Documentation. Tasks: Manages `README.md` and project docs. - -## 2. KANBAN WORKFLOW (Copilot Kanban) -You must keep the visual board in sync with your actions: -- **Initialization**: Use `kanban_get` to see existing tasks. Use `kanban_reset` only if Mydde requests a fresh start. -- **Task Creation**: When a plan is agreed upon, [[PM]] must use `kanban_create` to populate the "Ready" column. -- **Progress Tracking**: - - When starting a task, use `kanban_update` to move it to `in_progress`. - - When finished/testing, move to `in_review`. - - Only move to `done` after Mydde's validation or [[TESTER]] approval. -- **Constraint**: Only one task in `in_progress` at a time. - -## 3. SELF-DIAGNOSTIC & INITIALIZATION -- **Startup Check**: On first interaction, verify existence of `.github/copilot-instructions.md`, `backlog.md`, and `/idae-docs/sprints/`. -- **Auto-Initialization**: If missing, ask Mydde: "I detect a missing project structure. Should I initialize the backlog and sprint folders for you?" - -## 4. WORKFLOW & ISSUE DETECTION -- **Context Search**: Check if a task relates to a GitHub Issue, Sprint item, or existing Kanban card. -- **Missing Context**: If orphan, ask: "No context found. Create GitHub Issue, add to Sprint, or add to Kanban?" -- **Ambiguous**: Ask Mydde: "Direct, Sprint, or Long-term?" - -## 5. OPERATIONAL RULES -- Address the user as Mydde. Use "tu". -- Be concise. No unnecessary emphasis. -- Use `web` for documentation and `searchSyntax` for deep code analysis. -- Every major action must be documented in a dedicated `.md` file. - -## 6. GITHUB & TOOLS INTEGRATION -- Use `activePullRequest` and `openPullRequest` for task lifecycles. -- Use `edit` and `read` for documentation management. \ No newline at end of file diff --git a/packages/idae-slotui/.github/copilot-instructions.md b/packages/idae-slotui/.github/copilot-instructions.md index c5b064933..b4651ad04 100644 --- a/packages/idae-slotui/.github/copilot-instructions.md +++ b/packages/idae-slotui/.github/copilot-instructions.md @@ -1,50 +1,75 @@ +# Copilot / AI agent instructions — @medyll/idae-slotui-svelte -# Copilot/AI Agent Instructions for @medyll/idae-slotui-svelte - -This repo is a Svelte 5 component library (`src/lib/`) and a SvelteKit demo/docs site (`src/routes/`). It is part of a monorepo and shares tooling with other `idae` packages. - -## Architecture & Structure -- **Component Library:** All UI components are in `src/lib/base/` (atomic) and `src/lib/controls/` (form/interactive). Utilities are in `src/lib/utils/`. -- **Docs/Demos:** SvelteKit app in `src/routes/` showcases and documents all components. -- **Styling:** Each component has a `.scss` file, imported via ``. SCSS is canonical; compiled CSS is output to `src/lib/slotui-css/` (never edit generated CSS directly). -- **Exports:** All public components and CSS are re-exported from `src/lib/index.ts`. -- **Build:** Uses Vite, SvelteKit, UnoCSS, and `@medyll/cssfabric` for styling. - -## Key Patterns & Conventions -- **Svelte 5 runes only:** Use `$props`, `$state`, `$derived`, `$bindable`, `$effect` for all reactivity and props. *Legacy Svelte syntax is forbidden.* - - Example: `const { label, disabled } = $props()` -- **Slot/fallback logic:** Always use the `Slotted` component (`$lib/utils/slotted/Slotted.svelte`) for slot rendering and fallback content. - - Example: `{value ?? ''}` -- **Props typing:** Use TypeScript `type` or `interface` for all props, inline or in a `types.ts` file per component. -- **Icons:** Use the `Icon` component (`$lib/base/icon/Icon.svelte`, wraps Iconify). -- **SCSS mixins/presets:** Use mixins from `src/lib/styles/slotui-mixins.scss` and variables from `slotui-presets.scss` for consistent sizing, spacing, and variants. -- **Aliases:** Use `$lib`, `$components`, `$utils`, `$styles` as defined in `tsconfig.json`. - -## Developer Workflows -- **Dev server:** `npm run dev` -- **Build/package:** `npm run build` (Vite + svelte-package), `npm run package` -- **Test:** `npm run test` (Vitest + Playwright) - - Unit: `npm run test:unit` - - Integration: `npm run test:integration` -- **CSS build:** `npm run release-css` (compiles all SCSS to distributable CSS) -- **Lint/format:** `npm run lint`, `npm run format` - -## Project-Specific Notes -- **Never edit files in `src/lib/slotui-css/` directly**; always update SCSS and re-run the CSS build. -- **Tests:** Place in `src/tests/` or alongside components. -- **Component creation:** Add new folders/files in `src/lib/base` or `src/lib/controls`, import SCSS, and export from `src/lib/index.ts`. -- **Docs generation:** See `src/tests/docs.test.js` and `src/lib/docs/docs.js` for automated docs extraction from Svelte components. -- **Monorepo:** Shares scripts/config with other `idae` packages; see root for shared scripts. - -## Integration & Dependencies -- **Depends on:** `@medyll/idae-engine`, `@medyll/cssfabric`, UnoCSS, Iconify -- **Build tools:** Vite, SvelteKit, custom scripts in `scripts/` - -## References -- [README.md](../../README.md): Usage, examples, and more details -- [src/lib/index.ts](../../src/lib/index.ts): Export surface -- [scripts/release-css.js](../../scripts/release-css.js): SCSS build logic -- [tsconfig.json](../../tsconfig.json): Aliases and strictness - ---- -**Last updated:** January 2026 +Always read the repository root `MIGRATION.md` before making changes that touch component runtime, public APIs, or styling conventions. + +Purpose: give an AI agent the minimal, project-specific knowledge to be productive quickly — architecture, key files, conventions, commands and examples. + +1) Big picture +- Library + demo app: component library in `src/lib/` (atomic controls in `src/lib/base/` and interactive controls in `src/lib/controls/`) and a SvelteKit demo/docs site under `src/routes/`. +- Styling: SCSS is source of truth; compiled CSS lives in `src/lib/slotui-css/` (do not edit generated files). + +When a maintainer asks "what should I work on next?", check the migration guidance and the central component status map: + +- Primary source: [MIGRATION.md](MIGRATION.md) (root). See the section that points to `COMPONENT_MAP` for per-component next-steps. +- Component status: [COMPONENT_MAP.md](COMPONENT_MAP.md) — contains the current migration/issue notes and the "error report" section describing recommended actions. + +To regenerate `COMPONENT_MAP.md` from project heuristics and type checks run: + +```bash +node scripts/make-component-maps.js +``` + + +2) Key files & scripts to know +- `src/lib/index.ts` — public export surface (used by packaging). Update when adding public components. +- `scripts/make-export.js` — regenerates `index.ts` files per component folder. +- `src/tests/docs.test.js` + `src/lib/docs/docs.js` — automated docs extraction used in CI/docs. +- `scripts/make-component-maps.js` — get component map from project heuristics. + +3) Developer workflows & commands (exact) +- Package: `npm run package` +- Dev server: `npm run dev` +- Build library/site: `npm run build` +- Lint/format: `npm run lint`, `npm run format` +- Tests: `npm run test` (uses Vitest + Playwright) + +4) Project-specific patterns and constraints +- Svelte 5 'runes' only: use `$props()`, `$state()`, `$derived()`, `$bindable()`, `$effect()` for reactivity and props. Legacy `export let` or `$:` reactive labels are forbidden. Example: + + const { label, disabled } = $props() + +- Slot rendering: always use the `Slotted` helper located at `src/lib/utils/slotted/Slotted.svelte` for fallback content. Example: + + {value ?? ''} + +- SCSS pattern: each component imports its SCSS via a global style tag: + + + +- Icons: use `src/lib/base/icon/Icon.svelte` (Iconify wrapper) rather than inlining SVGs. + +5) Packaging & exports +- New public components must be exported from `src/lib/index.ts`. Use `scripts/make-export.js` to regenerate export indexes after adding files. +- Do not hand-edit `src/lib/slotui-css/`. + +6) Tests & docs +- Place tests in `src/tests/` or next to the component. The docs extractor (`src/lib/docs/docs.js`) is exercised by `src/tests/docs.test.js` — keep component JSDoc and props typing up-to-date. + +7) Monorepo & aliases +- This package is part of a monorepo; imports use tsconfig path aliases: `$lib`, `$components`, `$utils`, `$styles`. Check `tsconfig.json` when resolving paths. + +8) What agents MUST do before changing API/behavior +- Run `npm run test` locally. +- Verify `src/tests/docs.test.js` still passes (docs extraction) when editing public components. +- Update `MIGRATION.md` if changing surface-breaking behavior and reference it in your PR. + +9) Quick troubleshooting pointers +- If exports are missing after adding files, run `node scripts/make-export.js`. + +References +- Export surface: [src/lib/index.ts](src/lib/index.ts) +- Slotted helper: [src/lib/utils/slotted/Slotted.svelte](src/lib/utils/slotted/Slotted.svelte) +- Export generator: [scripts/make-export.js](scripts/make-export.js) +- Migration rules: [MIGRATION.md](MIGRATION.md) + +Last updated: February 2026 diff --git a/packages/idae-slotui/.github/skills/agents-skill/.claude-plugin/plugin.json b/packages/idae-slotui/.github/skills/agents-skill/.claude-plugin/plugin.json deleted file mode 100644 index 5b6386086..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/.claude-plugin/plugin.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "agents", - "version": "2.5.0", - "description": "Generate and maintain AGENTS.md files following public convention", - "repository": "https://github.com/netresearch/agents-skill", - "license": "MIT", - "author": { - "name": "Netresearch DTT GmbH", - "email": "info@netresearch.de" - }, - "skills": [ - "./skills/agents" - ] -} diff --git a/packages/idae-slotui/.github/skills/agents-skill/LICENSE b/packages/idae-slotui/.github/skills/agents-skill/LICENSE deleted file mode 100644 index 9f322a4d8..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 - -Copyright (C) 2025 Netresearch DTT GmbH - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/packages/idae-slotui/.github/skills/agents-skill/SKILL.md b/packages/idae-slotui/.github/skills/agents-skill/SKILL.md deleted file mode 100644 index dc9438495..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/SKILL.md +++ /dev/null @@ -1,505 +0,0 @@ ---- -name: agents -description: "Agent Skill: Generate and maintain AGENTS.md files following the public agents.md convention. Use when creating AI agent documentation, onboarding guides, or standardizing agent patterns. By Netresearch." ---- - -# AGENTS.md Generator Skill - -Generate and maintain AGENTS.md files following the [public agents.md convention](https://agents.md/). - -> **AGENTS.md is FOR AGENTS, not humans.** Human readability is a convenient side effect, not a design goal. Every section, format choice, and word exists to maximize AI coding agent efficiency. If something helps humans but wastes agent tokens, remove it. - -> **Spec Compliance:** This skill follows the official agents.md specification which has **no required fields** - all sections are recommendations based on [best practices from 2,500+ repositories](https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/). - -## Language Choice - -**Default to English** - AI coding agents perform best with English instructions because: -- Programming keywords, libraries, and error messages are English -- Zero "semantic friction" between instruction and code (`Create user` → `createUser`) -- Most token-efficient encoding for technical instructions - -**Exception: Match your code's naming language.** If your codebase uses non-English naming conventions (e.g., German class names like `Rechnungssteller`, French variables like `id_client`), write AGENTS.md in that language to prevent "naming hallucinations" where agents mix languages. - -> **Rule:** The language of AGENTS.md must match the language used for domain naming in the code. - -## When to Use This Skill - -When creating new projects, use this skill to establish baseline AGENTS.md structure. - -When standardizing existing projects, use this skill to generate consistent agent documentation. - -When ensuring multi-repo consistency, use this skill to apply the same standards across repositories. - -When checking if AGENTS.md files are up to date, use the freshness checking scripts to compare file timestamps with git commits. - -## Prerequisites - -The generator scripts require: - -| Requirement | Version | Notes | -|-------------|---------|-------| -| **Bash** | 4.3+ | Required for nameref variables (`local -n`) | -| **jq** | 1.5+ | JSON processing | -| **git** | 2.0+ | For git history analysis | - -### macOS Users - -macOS ships with Bash 3.2 (GPLv2 licensed). Install a newer version: - -```bash -# Install Bash 4.4+ via Homebrew -brew install bash - -# Run scripts with newer bash -/opt/homebrew/bin/bash scripts/generate-agents.sh /path/to/project - -# Or add to PATH (optional) -export PATH="/opt/homebrew/bin:$PATH" -``` - -The scripts will detect incompatible Bash versions and exit with a helpful error message. - -## CRITICAL: Full Verification Required - -**NEVER trust existing AGENTS.md content as accurate.** Always verify documented information against the actual codebase: - -### Mandatory Verification Steps - -1. **Extract actual state from source files:** - - List all modules/files with their actual docstrings - - List all scripts and their actual purposes - - Extract actual Makefile/package.json commands - - List actual test files and structure - -2. **Compare extracted state against documented state:** - - Check if documented files actually exist - - Check if documented commands actually work - - Check if module descriptions match actual docstrings - - Check if counts (modules, scripts, tests) are accurate - -3. **Identify and fix discrepancies:** - - Remove documentation for non-existent files - - Add documentation for undocumented files - - Correct inaccurate descriptions - - Update outdated counts and references - -4. **Preserve unverifiable content:** - - Keep manually-written context that can't be extracted - - Keep subjective guidance and best practices - - Mark preserved content appropriately - -### What to Verify - -| Category | Verification Method | -|----------|---------------------| -| Module list | `ls /*.py` + read docstrings | -| Script list | `ls scripts/*.sh` + read headers | -| Commands | `grep` Makefile targets **AND run them** | -| Test files | `ls tests/*.py` | -| Data files | `ls *.json` in project root | -| Config files | Check actual existence | -| **File names** | **EXACT match required** (not just existence) | -| **Numeric values** | PHPStan level, coverage %, etc. from actual configs | - -### Critical: Exact Name Matching - -File names in AGENTS.md must match actual filenames **exactly**: - -| Documented | Actual | Status | -|------------|--------|--------| -| `CowriterAjaxController.php` | `AjaxController.php` | **WRONG** - name mismatch | -| `AjaxController.php` | `AjaxController.php` | Correct | - -**Real-world example from t3x-cowriter review:** -- AGENTS.md documented `Controller/CowriterAjaxController.php` -- Actual file was `Controller/AjaxController.php` -- This mismatch confused agents trying to find the file - -### Critical: Command Verification - -Commands documented in AGENTS.md must actually work when run: - -```bash -# BAD: Document without testing -make test-mutation # May not exist! - -# GOOD: Verify before documenting -make -n test-mutation 2>/dev/null && echo "EXISTS" || echo "MISSING" -``` - -**Real-world example from t3x-cowriter review:** -- AGENTS.md documented `make test-mutation` and `make phpstan` -- Neither target existed (actual was `make typecheck`) -- Agents failed when trying to run documented commands - -### Example Verification Commands - -```bash -# Extract actual module docstrings -for f in cli_audit/*.py; do head -20 "$f" | grep -A5 '"""'; done - -# List actual scripts -ls scripts/*.sh - -# Extract Makefile targets -grep -E '^[a-z_-]+:' Makefile* - -# List actual test files -ls tests/*.py tests/**/*.py -``` - -### Anti-Patterns to Avoid - -- **WRONG:** Updating only dates and counts based on git commits -- **WRONG:** Trusting that existing AGENTS.md was created correctly -- **WRONG:** Copying file lists without verifying they exist -- **WRONG:** Using extracted command output without running it -- **RIGHT:** Extract → Compare → Fix discrepancies → Validate - -## Agent-Optimized Design - -This skill generates AGENTS.md files optimized for AI coding agent efficiency based on: -- [Research showing 16.58% token reduction with good AGENTS.md](https://arxiv.org/html/2601.20404) -- [GitHub best practices from 2,500+ repositories](https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/) -- Multi-agent collaborative design (Claude + Gemini discussion) - -### Key Design Principles - -1. **Structured over Prose** - Tables and maps parse faster than paragraphs -2. **Verified Commands** - Commands that don't work waste 500+ tokens debugging -3. **Pointer Principle** - Point to files, don't duplicate content -4. **Time Estimates** - Help agents choose appropriate test scope -5. **Golden Samples** - One example file beats pages of explanation -6. **Heuristics Tables** - Eliminate decision ambiguity - -### Token-Saving Sections - -| Section | Saves | How | -|---------|-------|-----| -| Commands (verified) | 500+ tokens | No debugging broken commands | -| File Map | 3-5 search cycles | Direct navigation | -| Golden Samples | Full rewrites | Correct patterns first time | -| Utilities List | Duplicate code | Reuse existing helpers | -| Heuristics | User correction cycles | Autonomous decisions | -| Codebase State | Breaking changes | Avoid legacy/migration code | - -## Capabilities - -- **Thin root files** (~50 lines) with precedence rules and agent-optimized tables -- **Scoped files** for subsystems (backend/, frontend/, internal/, cmd/) -- **Auto-extracted commands** from Makefile, package.json, composer.json, go.mod -- **Language-specific templates** for Go, PHP, TypeScript, Python, hybrid projects -- **Freshness checking** - Detects if AGENTS.md files are outdated by comparing their "Last updated" date with git commits -- **Automatic timestamps** - All generated files include creation/update dates in the header -- **Documentation extraction** - Parses README.md, CONTRIBUTING.md, SECURITY.md, CHANGELOG.md -- **Platform file extraction** - Parses .github/, .gitlab/ templates, CODEOWNERS, dependabot.yml -- **IDE settings extraction** - Parses .editorconfig, .vscode/, .idea/, .phpstorm/ -- **AI agent config extraction** - Parses .cursor/, .claude/, .windsurf/, copilot-instructions.md -- **Extraction summary** - Verbose mode shows all detected settings and their sources - -## Running Scripts - -### Generating AGENTS.md Files - -To generate AGENTS.md files for a project: - -```bash -scripts/generate-agents.sh /path/to/project -``` - -Options: -- `--dry-run` - Preview changes without writing files -- `--verbose` - Show detailed output -- `--style=thin` - Use thin root template (~30 lines, default) -- `--style=verbose` - Use verbose root template (~100-200 lines) -- `--update` - Update existing files only (preserves human edits outside generated markers) -- `--claude-shim` - Generate CLAUDE.md that imports AGENTS.md for Claude Code compatibility -- `--force` - Regenerate even if files exist - -### Validating Structure - -To validate AGENTS.md structure compliance: - -```bash -scripts/validate-structure.sh /path/to/project -``` - -Options: -- `--check-freshness, -f` - Also check if files are up to date with git commits -- `--verbose, -v` - Show detailed output - -### Checking Freshness - -To check if AGENTS.md files are up to date with recent git commits: - -```bash -scripts/check-freshness.sh /path/to/project -``` - -This script: -- Extracts the "Last updated" date from the AGENTS.md header -- Checks git commits since that date for files in the relevant scope -- Reports if there are commits that might require AGENTS.md updates - -Options: -- `--verbose, -v` - Show commit details and changed files -- `--threshold=DAYS` - Days threshold to consider stale (default: 7) - -Example with full validation: -```bash -scripts/validate-structure.sh /path/to/project --check-freshness --verbose -``` - -### Detecting Project Type - -To detect project language, version, and build tools: - -```bash -scripts/detect-project.sh /path/to/project -``` - -### Detecting Scopes - -To identify directories that should have scoped AGENTS.md files: - -```bash -scripts/detect-scopes.sh /path/to/project -``` - -### Extracting Commands - -To extract build commands from Makefile, package.json, composer.json, or go.mod: - -```bash -scripts/extract-commands.sh /path/to/project -``` - -### Extracting Documentation - -To extract information from README.md, CONTRIBUTING.md, SECURITY.md, and other documentation: - -```bash -scripts/extract-documentation.sh /path/to/project -``` - -### Extracting Platform Files - -To extract information from .github/, .gitlab/, CODEOWNERS, dependabot.yml, etc.: - -```bash -scripts/extract-platform-files.sh /path/to/project -``` - -### Extracting IDE Settings - -To extract information from .editorconfig, .vscode/, .idea/, etc.: - -```bash -scripts/extract-ide-settings.sh /path/to/project -``` - -### Extracting AI Agent Configs - -To extract information from .cursor/, .claude/, copilot-instructions.md, etc.: - -```bash -scripts/extract-agent-configs.sh /path/to/project -``` - -### Verifying Content Accuracy - -**CRITICAL: Always run this before considering AGENTS.md files complete.** - -To verify that AGENTS.md content matches actual codebase state: - -```bash -scripts/verify-content.sh /path/to/project -``` - -This script: -- Checks if documented files actually exist -- Verifies Makefile targets are real -- Compares module/script counts against actual files -- Reports undocumented files that should be added -- Reports documented files that don't exist - -Options: -- `--verbose, -v` - Show detailed verification output -- `--fix` - Suggest fixes for common issues - -**This verification step is MANDATORY when updating existing AGENTS.md files.** - -### Verifying Commands Work - -To prevent "command rot" (documented commands that no longer work): - -```bash -scripts/verify-commands.sh /path/to/project -``` - -This script: -- Extracts commands from AGENTS.md tables and code blocks -- Verifies npm/yarn scripts exist in package.json -- Verifies make targets exist in Makefile -- Verifies composer scripts exist in composer.json -- Updates "Last verified" timestamp on success - -Options: -- `VERBOSE=true` - Show detailed output -- `DRY_RUN=true` - Don't update timestamp - -**Why this matters:** Research shows broken commands waste 500+ tokens as agents debug non-existent commands. Verified commands enable confident execution. - -## Using Reference Documentation - -### AGENTS.md Analysis - -When understanding best practices and patterns, consult `references/analysis.md` for analysis of 21 real-world AGENTS.md files. - -### Directory Coverage - -When determining which directories need AGENTS.md files, consult `references/directory-coverage.md` for guidance on PHP/TYPO3, Go, and TypeScript project structures. - -### Real-World Examples - -When needing concrete examples of AGENTS.md files, consult `references/examples/`: - -| Project | Files | Description | -|---------|-------|-------------| -| `coding-agent-cli/` | Root + scripts scope | CLI tool example | -| `ldap-selfservice/` | Root + internal scopes | Go web app with multiple scopes | -| `simple-ldap-go/` | Root + examples scope | Go library example | -| `t3x-rte-ckeditor-image/` | Root + Classes scope | TYPO3 extension example | - -## Using Asset Templates - -### Root Templates - -When generating root AGENTS.md files, the scripts use these templates: - -- `assets/root-thin.md` - Minimal root template (~30 lines) with precedence rules and scope index -- `assets/root-verbose.md` - Detailed root template (~100 lines) with architecture overview and examples - -### Scoped Templates - -When generating scoped AGENTS.md files, the scripts use language-specific templates: - -- `assets/scoped/backend-go.md` - Go backend patterns (packages, error handling, testing) -- `assets/scoped/backend-php.md` - PHP backend patterns (PSR, DI, security) -- `assets/scoped/typo3.md` - TYPO3 extension patterns (TCA, Extbase, Fluid, TYPO3 CGL) -- `assets/scoped/oro.md` - Oro bundle patterns (datagrids, workflows, ACL, message queue) -- `assets/scoped/cli.md` - CLI patterns (flags, output, error codes) -- `assets/scoped/frontend-typescript.md` - TypeScript frontend patterns (components, state, testing) - -## Supported Project Types - -| Language | Project Types | -|----------|---------------| -| Go | Libraries, web apps (Fiber/Echo/Gin), CLI (Cobra/urfave) | -| PHP | Composer packages, Laravel/Symfony | -| PHP/TYPO3 | TYPO3 extensions (auto-detected via `ext_emconf.php`) | -| PHP/Oro | OroCommerce, OroPlatform, OroCRM bundles | -| TypeScript | React, Next.js, Vue, Node.js | -| Python | pip, poetry, Django, Flask, FastAPI | -| Hybrid | Multi-language projects (auto-creates scoped files per stack) | - -## Output Structure - -### Root File - -Root AGENTS.md (~50-80 lines) contains agent-optimized sections: - -| Section | Purpose | Format | -|---------|---------|--------| -| **Commands (verified)** | Executable commands with time estimates | Table with ~Time column | -| **File Map** | Directory purposes for navigation | `dir/ → purpose` format | -| **Golden Samples** | Canonical patterns to follow | Table: For / Reference / Key patterns | -| **Utilities List** | Existing helpers to reuse | Table: Need / Use / Location | -| **Heuristics** | Quick decision rules | Table: When / Do | -| **Boundaries** | Always/Ask/Never rules | Three-tier list | -| **Codebase State** | Migrations, tech debt, known issues | Bullet list | -| **Terminology** | Domain-specific terms | Table: Term / Means | -| **Scope Index** | Links to scoped files | List with descriptions | - -### Scoped Files - -Scoped AGENTS.md files cover six core areas (per [GitHub best practices](https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/)): -1. **Commands** - Executable build, test, lint commands -2. **Testing** - Test conventions and execution -3. **Project Structure** - Architecture and key files -4. **Code Style** - Formatting and conventions -5. **Git Workflow** - Commit/PR guidelines -6. **Boundaries** - Always do / Ask first / Never do - -Additional recommended sections: -- Overview -- Setup/Prerequisites -- Security -- Good vs Bad examples -- When stuck -- House Rules (for scoped overrides) - -## AI Tool Compatibility - -### Claude Code - -Claude Code centers on CLAUDE.md files. For compatibility, use the `--claude-shim` flag to generate a CLAUDE.md that imports AGENTS.md: - -```bash -scripts/generate-agents.sh /path/to/project --claude-shim -``` - -This creates a minimal CLAUDE.md: -```markdown - -@import AGENTS.md -``` - -This ensures AGENTS.md remains the source of truth while Claude Code can access it. - -### OpenAI Codex - -Codex uses stacking semantics with AGENTS.override.md for per-directory overrides: - -1. **Concatenation order:** `~/.codex/AGENTS.md` → root → nested directories → current dir -2. **Override files:** Place `AGENTS.override.md` in directories to add/override rules -3. **Size limit:** Default 32 KiB cap - keep root AGENTS.md lean so nested files aren't crowded out - -**Best practices for Codex:** -- Keep root AGENTS.md under 4 KiB (leaves room for 7+ nested files) -- Use `--style=thin` template for optimal Codex compatibility -- Move detailed rules to scoped AGENTS.md files in subdirectories -- Use AGENTS.override.md for directory-specific behavior changes - -Example override structure: -``` -project/ -├── AGENTS.md # Thin root (~2 KiB) -├── src/ -│ ├── AGENTS.md # Source patterns -│ └── AGENTS.override.md # Override root rules for src/ -└── tests/ - ├── AGENTS.md # Test patterns - └── AGENTS.override.md # Allow larger PRs in tests/ -``` - -### GitHub Copilot - -GitHub Copilot uses `.github/copilot-instructions.md` for repository-wide instructions. This skill extracts existing Copilot instructions and can coexist with AGENTS.md files. - -## Directory Coverage - -When creating AGENTS.md files, create them in ALL key directories: - -| Directory | Purpose | -|-----------|---------| -| Root | Precedence, architecture overview | -| `Classes/` or `src/` | Source code patterns | -| `Configuration/` or `config/` | Framework config | -| `Documentation/` or `docs/` | Doc standards | -| `Resources/` or `assets/` | Templates, assets | -| `Tests/` | Testing patterns | - ---- - -> **Contributing:** https://github.com/netresearch/agents-skill diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/root-thin.md b/packages/idae-slotui/.github/skills/agents-skill/assets/root-thin.md deleted file mode 100644 index 244a94e4e..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/root-thin.md +++ /dev/null @@ -1,92 +0,0 @@ - - - - -# AGENTS.md - -**Precedence:** the **closest `AGENTS.md`** to the files you're changing wins. Root holds global defaults only. - -## Commands (verified ✓) - -| Task | Command | ~Time | -|------|---------|-------| -| Typecheck | {{TYPECHECK_CMD}} | {{TYPECHECK_TIME}} | -| Lint | {{LINT_CMD}} | {{LINT_TIME}} | -| Format | {{FORMAT_CMD}} | {{FORMAT_TIME}} | -| Test (single) | {{TEST_SINGLE_CMD}} | ~2s | -| Test (all) | {{TEST_CMD}} | {{TEST_TIME}} | -| Build | {{BUILD_CMD}} | {{BUILD_TIME}} | - - -> If commands fail, run `scripts/verify-commands.sh` or ask user to update. - -## File Map - -``` -{{FILE_MAP}} -``` - - -## Golden Samples (follow these patterns) - -| For | Reference | Key patterns | -|-----|-----------|--------------| -{{GOLDEN_SAMPLES}} - - -## Utilities (check before creating new) - -| Need | Use | Location | -|------|-----|----------| -{{UTILITIES_LIST}} - - -## Heuristics (quick decisions) - -| When | Do | -|------|-----| -{{HEURISTICS}} -| Adding dependency | Ask first - we minimize deps | -| Unsure about pattern | Check Golden Samples above | - - -## Boundaries - -### Always Do -- Run pre-commit checks before committing -- Add tests for new code paths -- Use conventional commit format: `type(scope): subject` -{{LANGUAGE_CONVENTIONS}} - -### Ask First -- Adding new dependencies -- Modifying CI/CD configuration -- Changing public API signatures -- Running full e2e test suites -- Repo-wide refactoring or rewrites - -### Never Do -- Commit secrets, credentials, or sensitive data -- Modify vendor/, node_modules/, or generated files -- Push directly to main/master branch -- Delete migration files or schema changes -{{LANGUAGE_SPECIFIC_NEVER}} - -## Codebase State - -{{CODEBASE_STATE}} - - -## Terminology -| Term | Means | -|------|-------| -{{TERMINOLOGY}} - -## Index of scoped AGENTS.md - -{{SCOPE_INDEX}} - - -## When instructions conflict -The nearest `AGENTS.md` wins. Explicit user prompts override files. -{{LANGUAGE_SPECIFIC_CONFLICT_RESOLUTION}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/root-verbose.md b/packages/idae-slotui/.github/skills/agents-skill/assets/root-verbose.md deleted file mode 100644 index 974f50fca..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/root-verbose.md +++ /dev/null @@ -1,110 +0,0 @@ - - - - -# AGENTS.md - -**Precedence:** The **closest AGENTS.md** to changed files wins. Root holds global defaults only. - -## Project Overview - -{{PROJECT_DESCRIPTION}} - -**Tech Stack**: {{LANGUAGE}} {{VERSION}}, {{BUILD_TOOL}}, {{FRAMEWORK}} -**Type**: {{PROJECT_TYPE}} - - -## Global Rules -- Keep PRs small (~≤300 net LOC) -- Conventional Commits: `type(scope): subject` -{{LANGUAGE_CONVENTIONS}} - -## Boundaries - -### Always Do -- Run pre-commit checks before committing -- Add tests for new code paths -- Use conventional commit format: `type(scope): subject` -- Keep dependencies updated -- Validate all user inputs - -### Ask First -- Adding new dependencies -- Modifying CI/CD configuration -- Changing public API signatures -- Running full e2e test suites -- Repo-wide refactoring or rewrites -- Modifying security-sensitive code -- Changing database schemas - -### Never Do -- Commit secrets, credentials, API keys, or PII -- Modify vendor/, node_modules/, or generated files -- Push directly to main/master branch -- Delete migration files or schema changes -- Disable security features or linting rules -- Hardcode environment-specific values -{{LANGUAGE_SPECIFIC_NEVER}} - -## Development Workflow -1. Create feature branch: `git checkout -b feature/description` -2. Make changes with tests -3. Run pre-commit checks (see below) -4. Commit with conventional format -5. Push and create PR -6. Address review feedback -7. Merge when approved - -## Pre-commit Checks - -**Always run before committing:** -- Typecheck: {{TYPECHECK_CMD}} -- Lint: {{LINT_CMD}} -- Format: {{FORMAT_CMD}} -- Tests: {{TEST_CMD}} -- Build: {{BUILD_CMD}} - - -## Code Quality Standards - -{{QUALITY_STANDARDS}} - - -## Security & Safety -- Never commit secrets, credentials, or PII -- Validate all user inputs -- Use parameterized queries for database access -- Keep dependencies updated -{{SECURITY_SPECIFIC}} - -## Testing Requirements - -- Write tests for new features -- Maintain {{TEST_COVERAGE}}% minimum coverage -- Run fast tests locally: {{TEST_FAST_CMD}} -- Run full suite in CI: {{TEST_FULL_CMD}} - - -## Index of Scoped AGENTS.md - -{{SCOPE_INDEX}} - - -## When Instructions Conflict -Nearest AGENTS.md wins. User prompts override files. -{{LANGUAGE_SPECIFIC_CONFLICT_RESOLUTION}} - -## Code Examples - -### Good Pattern -{{GOOD_EXAMPLE}} - -### Avoid -{{BAD_EXAMPLE}} - -## Documentation - -- Architecture: {{ARCHITECTURE_DOC}} -- API docs: {{API_DOC}} -- Contributing: {{CONTRIBUTING_DOC}} - diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-go.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-go.md deleted file mode 100644 index b786a2d6d..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-go.md +++ /dev/null @@ -1,77 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -## Setup & environment -- Install: `go mod download` -- Go version: {{GO_VERSION}} -- Required tools: {{GO_TOOLS}} -- Environment variables: {{ENV_VARS}} - -## Build & tests (prefer file-scoped) -- Typecheck a file: `go build -v {{FILE_PATH}}` -- Format a file: `gofmt -w {{FILE_PATH}}` -- Lint a file: `golangci-lint run {{FILE_PATH}}` -- Test a file: `go test -v -race -short {{FILE_PATH}}` -- Build: {{BUILD_CMD}} - -## Code style & conventions -- Follow Go 1.{{GO_MINOR_VERSION}} idioms -- Use standard library over external deps when possible -- Errors: wrap with `fmt.Errorf("context: %w", err)` -- Naming: `camelCase` for private, `PascalCase` for exported -- Struct tags: use canonical form (json, yaml, etc.) -- Comments: complete sentences ending with period -- Package docs: first sentence summarizes purpose - -## Security & safety -- Validate all inputs from external sources -- Use `context.Context` for cancellation and timeouts -- Avoid goroutine leaks: always ensure termination paths -- Sensitive data: never log or include in errors -- SQL: use parameterized queries only -- File paths: validate and sanitize user-provided paths - -## PR/commit checklist -- [ ] Tests pass: `go test -v -race ./...` -- [ ] Lint clean: `golangci-lint run ./...` -- [ ] Formatted: `gofmt -w .` -- [ ] No goroutine leaks -- [ ] Error messages are descriptive -- [ ] Public APIs have godoc comments - -## Good vs. bad examples -**Good**: Descriptive error wrapping -```go -if err := db.Query(); err != nil { - return fmt.Errorf("failed to query users table: %w", err) -} -``` - -**Bad**: Generic error messages -```go -if err := db.Query(); err != nil { - return fmt.Errorf("error: %w", err) -} -``` - -**Good**: Proper context usage -```go -func (s *Service) FetchData(ctx context.Context, id string) error { - ctx, cancel := context.WithTimeout(ctx, 5*time.Second) - defer cancel() - return s.client.Get(ctx, id) -} -``` - -## When stuck -- Check Go documentation: https://pkg.go.dev -- Review existing patterns in this codebase -- Check root AGENTS.md for project-wide conventions -- Run `go doc ` for standard library help - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-php.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-php.md deleted file mode 100644 index 8d5ccedf9..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-php.md +++ /dev/null @@ -1,85 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -## Setup & environment -- Install: `composer install` -- PHP version: {{PHP_VERSION}} -- Framework: {{FRAMEWORK}} -- Required extensions: {{PHP_EXTENSIONS}} -- Environment variables: {{ENV_VARS}} - -## Build & tests (prefer file-scoped) -- Typecheck a file: `vendor/bin/phpstan analyze {{FILE_PATH}} --level={{PHPSTAN_LEVEL}}` -- Format a file: `vendor/bin/php-cs-fixer fix {{FILE_PATH}}` -- Lint a file: `php -l {{FILE_PATH}}` -- Test a file: `vendor/bin/phpunit {{FILE_PATH}}` -- Build: {{BUILD_CMD}} - -## Code style & conventions -- Follow PSR-12 coding standard -- Use strict types: `declare(strict_types=1);` -- Type hints: always use for parameters and return types -- Naming: `camelCase` for methods, `PascalCase` for classes -- Visibility: always declare (public, protected, private) -- PHPDoc: required for public APIs, include `@param` and `@return` -{{FRAMEWORK_CONVENTIONS}} - -## Security & safety -- Validate and sanitize all user inputs -- Use prepared statements for database queries -- Escape output in templates -- Never use `eval()` or dynamic code execution -- Sensitive data: never log or expose in errors -- CSRF protection: enable for all forms -- XSS protection: escape all user-generated content - -## PR/commit checklist -- [ ] Tests pass: `vendor/bin/phpunit` -- [ ] PHPStan Level {{PHPSTAN_LEVEL}} clean: `vendor/bin/phpstan analyze` -- [ ] PSR-12 compliant: `vendor/bin/php-cs-fixer fix --dry-run` -- [ ] No deprecated functions used -- [ ] Public methods have PHPDoc -- [ ] Security: inputs validated, outputs escaped - -## Good vs. bad examples -**Good**: Proper type hints and strict types -```php -declare(strict_types=1); - -public function calculateTotal(int $quantity, float $price): float -{ - return $quantity * $price; -} -``` - -**Bad**: Missing type hints -```php -public function calculateTotal($quantity, $price) -{ - return $quantity * $price; -} -``` - -**Good**: Prepared statements -```php -$stmt = $db->prepare('SELECT * FROM users WHERE id = :id'); -$stmt->execute(['id' => $userId]); -``` - -**Bad**: String concatenation -```php -$result = $db->query("SELECT * FROM users WHERE id = " . $userId); -``` - -## When stuck -- Check PHP documentation: https://www.php.net -- {{FRAMEWORK_DOCS}} -- Review existing patterns in this codebase -- Check root AGENTS.md for project-wide conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-python.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-python.md deleted file mode 100644 index 3318c6a70..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-python.md +++ /dev/null @@ -1,84 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -## Setup & environment -- Install: `{{INSTALL_CMD}}` -- Python version: {{PYTHON_VERSION}} -- Package manager: {{PACKAGE_MANAGER}} -- Virtual env: `{{VENV_CMD}}` -- Environment variables: {{ENV_VARS}} - -## Build & tests (prefer file-scoped) -- Typecheck a file: `{{TYPECHECK_CMD}} {{FILE_PATH}}` -- Format a file: `{{FORMAT_CMD}} {{FILE_PATH}}` -- Lint a file: `{{LINT_CMD}} {{FILE_PATH}}` -- Test a file: `{{TEST_CMD}} {{FILE_PATH}}` -- Build: {{BUILD_CMD}} - -## Code style & conventions -- Follow PEP 8 style guide -- Use type hints for all function signatures -- Naming: `snake_case` for functions/variables, `PascalCase` for classes -- Docstrings: Google style, required for public APIs -- Imports: group by stdlib, third-party, local (use isort) -- Modern Python: prefer `|` over `Union`, `list` over `List` -{{FRAMEWORK_CONVENTIONS}} - -## Security & safety -- Validate and sanitize all user inputs -- Use parameterized queries for database access -- Never use dynamic code evaluation with untrusted data -- Sensitive data: never log or expose in errors -- File paths: validate and use `pathlib` for path operations -- Subprocess: use list args, avoid shell=True with user input - -## PR/commit checklist -- [ ] Tests pass: `{{TEST_CMD}}` -- [ ] Type check clean: `{{TYPECHECK_CMD}}` -- [ ] Lint clean: `{{LINT_CMD}}` -- [ ] Formatted: `{{FORMAT_CMD}}` -- [ ] No security issues: `bandit -r .` -- [ ] Public functions have docstrings - -## Good vs. bad examples -**Good**: Type hints and proper error handling -```python -def fetch_user(user_id: int) -> User | None: - """Fetch user by ID, returns None if not found.""" - try: - return db.query(User).filter_by(id=user_id).first() - except DatabaseError as e: - logger.error("Failed to fetch user %d: %s", user_id, e) - raise -``` - -**Bad**: Missing types and bare except -```python -def fetch_user(user_id): - try: - return db.query(User).filter_by(id=user_id).first() - except: - pass -``` - -**Good**: Context managers and pathlib -```python -from pathlib import Path - -def read_config(path: Path) -> dict: - with path.open() as f: - return json.load(f) -``` - -## When stuck -- Check Python documentation: https://docs.python.org -- Review existing patterns in this codebase -- Check root AGENTS.md for project-wide conventions -- Use `python -m pydoc ` for stdlib help - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-typescript.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-typescript.md deleted file mode 100644 index 16c4725c6..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/backend-typescript.md +++ /dev/null @@ -1,95 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -## Setup & environment -- Install: `{{INSTALL_CMD}}` -- Node version: {{NODE_VERSION}} -- Package manager: {{PACKAGE_MANAGER}} -- Runtime: {{RUNTIME}} -- Environment variables: {{ENV_VARS}} - -## Build & tests (prefer file-scoped) -- Typecheck a file: `{{TYPECHECK_CMD}}` -- Format a file: `{{FORMAT_CMD}} {{FILE_PATH}}` -- Lint a file: `{{LINT_CMD}} {{FILE_PATH}}` -- Test a file: `{{TEST_CMD}} {{FILE_PATH}}` -- Build: {{BUILD_CMD}} -- Dev server: {{DEV_CMD}} - -## Code style & conventions -- Use TypeScript strict mode (`strict: true` in tsconfig) -- No `any` without explicit justification comment -- Prefer `interface` over `type` for object shapes -- Naming: `camelCase` for functions/vars, `PascalCase` for classes/types -- Async/await over raw Promises -- Prefer `const` over `let`, never use `var` -- Destructure objects and arrays when appropriate -{{FRAMEWORK_CONVENTIONS}} - -## Security & safety -- Validate all user inputs (use zod or similar) -- Parameterized queries only (no string concatenation) -- Never use dynamic code evaluation with user data -- Sensitive data: never log or expose in errors -- Environment: use dotenv, never hardcode secrets -- CORS: configure explicitly, no wildcard in production -- Rate limiting: implement for public endpoints - -## PR/commit checklist -- [ ] Tests pass: `{{TEST_CMD}}` -- [ ] Type check clean: `{{TYPECHECK_CMD}}` -- [ ] Lint clean: `{{LINT_CMD}}` -- [ ] Formatted: `{{FORMAT_CMD}}` -- [ ] No `any` types without justification -- [ ] API endpoints have validation -- [ ] Error responses don't leak internals - -## Good vs. bad examples -**Good**: Proper types and async/await -```typescript -interface User { - id: string; - email: string; -} - -async function fetchUser(id: string): Promise { - const user = await db.users.findUnique({ where: { id } }); - return user; -} -``` - -**Bad**: Using `any` and missing types -```typescript -async function fetchUser(id: any): Promise { - const user = await db.users.findUnique({ where: { id } }); - return user; -} -``` - -**Good**: Input validation with zod -```typescript -import { z } from 'zod'; - -const CreateUserSchema = z.object({ - email: z.string().email(), - name: z.string().min(1).max(100), -}); - -app.post('/users', async (req, res) => { - const data = CreateUserSchema.parse(req.body); - // data is typed and validated -}); -``` - -## When stuck -- Check Node.js docs: https://nodejs.org/docs -- TypeScript handbook: https://www.typescriptlang.org/docs -- Review existing patterns in this codebase -- Check root AGENTS.md for project-wide conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/cli.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/cli.md deleted file mode 100644 index 724316638..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/cli.md +++ /dev/null @@ -1,84 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -Command-line interface tools and entry points. - -## Setup & environment -{{SETUP_INSTRUCTIONS}} -- CLI framework: {{CLI_FRAMEWORK}} -- Build output: {{BUILD_OUTPUT_PATH}} - -## Build & tests (prefer file-scoped) -- Build CLI: {{BUILD_CMD}} -- Run CLI: {{RUN_CMD}} -- Test: {{TEST_CMD}} -- Lint: {{LINT_CMD}} - -## Code style & conventions -- Use flag parsing library consistently ({{CLI_FRAMEWORK}}) -- Provide `--help` for all commands and subcommands -- Use `--version` to display version information -- Exit codes: 0 = success, 1 = general error, 2 = usage error -- Output: structured (JSON) for scripts, human-readable for interactive -- Errors: write to stderr, not stdout -- Progress: show for long-running operations -- Interactive prompts: support non-interactive mode with flags - -## Security & safety -- Validate all file paths and prevent directory traversal -- Never execute user-provided code without explicit confirmation -- Sensitive data: never log or display in plain text -- Config files: validate schema and permissions -- Network operations: timeout and retry with backoff - -## PR/commit checklist -- [ ] `--help` text is clear and accurate -- [ ] `--version` displays correct version -- [ ] Exit codes are correct -- [ ] Errors go to stderr -- [ ] Long operations show progress -- [ ] Works in non-interactive mode -- [ ] Tests cover main workflows - -## Good vs. bad examples -**Good**: Proper error handling -```{{LANGUAGE}} -if err := runCommand(); err != nil { - fmt.Fprintf(os.Stderr, "Error: %v\n", err) - os.Exit(1) -} -``` - -**Bad**: Errors to stdout -```{{LANGUAGE}} -if err := runCommand(); err != nil { - fmt.Println("Error:", err) -} -``` - -**Good**: Clear help text -``` -Usage: myapp [options] - -Commands: - init Initialize a new project - build Build the project - deploy Deploy to production - -Options: - --config string Config file path (default: config.yaml) - --verbose Enable verbose output -``` - -## When stuck -- Review {{CLI_FRAMEWORK}} documentation -- Check existing commands for patterns -- Test with `--help` to ensure clarity -- Check root AGENTS.md for project conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/documentation.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/documentation.md deleted file mode 100644 index 88a54f825..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/documentation.md +++ /dev/null @@ -1,98 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -Project documentation, guides, and reference materials. - -## Setup & environment -- Documentation may use a static site generator (check for config files) -- Preview locally before committing major changes -- Check for broken links and formatting issues - -## Building docs -- Preview: check for `npm run docs`, `make docs`, or similar -- Build: check for documentation build commands in root -- Serve locally to verify rendering - -## Documentation structure -- `README.md` - Entry point, project overview -- `getting-started/` - Installation and quick start guides -- `guides/` - How-to guides and tutorials -- `reference/` - API documentation, configuration reference -- `architecture/` - Design documents, ADRs -- `contributing/` - Contribution guidelines - -## Code style & conventions -- Use clear, concise language -- Include code examples for technical concepts -- Keep line length reasonable (~80-120 chars for readability) -- Use consistent heading hierarchy (H1 for page title, H2 for sections) -- Add alt text to images for accessibility -- Use relative links for internal references -- Keep code examples up-to-date with actual codebase - -## Markdown best practices -- Use fenced code blocks with language hints: \`\`\`python -- Use tables for structured data comparison -- Use admonitions for warnings/notes (if supported) -- Keep paragraphs focused on one idea -- Use bullet points for lists, numbered lists for sequences - -## Security & safety -- Never include secrets, API keys, or credentials in examples -- Use placeholder values: `your-api-key`, `example.com` -- Review screenshots for sensitive information -- Avoid documenting security vulnerabilities in detail - -## PR/commit checklist -- [ ] Documentation matches current code behavior -- [ ] Code examples are tested and work -- [ ] Links are valid (no 404s) -- [ ] Images have alt text -- [ ] Spelling and grammar checked -- [ ] Formatting renders correctly - -## Good vs. bad examples -**Good**: Clear code example -```python -# Install the package -pip install mypackage - -# Basic usage -from mypackage import Client -client = Client(api_key="your-api-key") -result = client.process("input") -``` - -**Bad**: Incomplete example -```python -# Use the client -client.process() # Missing context, imports, setup -``` - -**Good**: Structured reference -```markdown -## Configuration Options - -| Option | Type | Default | Description | -|--------|------|---------|-------------| -| `timeout` | int | 30 | Request timeout in seconds | -| `retries` | int | 3 | Number of retry attempts | -``` - -**Bad**: Unstructured reference -```markdown -Set timeout to change the timeout. Use retries for retries. -``` - -## When stuck -- Check existing documentation for patterns -- Review the style guide (if one exists) -- Preview changes locally before committing -- Check root AGENTS.md for project conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/examples.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/examples.md deleted file mode 100644 index 0bb9b7b88..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/examples.md +++ /dev/null @@ -1,104 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -Example applications, usage patterns, and sample code. - -## Setup & environment -- Examples should be self-contained and runnable -- Each example may have its own dependencies (check local README) -- Examples should work with the current version of the main package - -## Running examples -- Check each example's README for specific instructions -- Most examples: `cd example-name && follow README` -- Some examples may require environment setup - -## Example organization -- One directory per example/use case -- Each example has its own README explaining what it demonstrates -- Keep examples focused on one concept or pattern -- Name examples descriptively: `basic-usage/`, `advanced-config/`, `integration-with-x/` - -## Code style & conventions -- Examples should be educational and well-commented -- Use realistic but simplified scenarios -- Show best practices, not shortcuts -- Include error handling to demonstrate proper patterns -- Keep examples minimal - only what's needed to demonstrate the concept -- Avoid complex setups that distract from the main point - -## Documentation requirements -- Each example needs a README with: - - What this example demonstrates - - Prerequisites and setup steps - - How to run the example - - Expected output or behavior - - Links to relevant documentation - -## Security & safety -- Never include real API keys or credentials -- Use environment variables for sensitive config: `export API_KEY=your-key` -- Use sandbox/test environments when interacting with external services -- Include warnings for examples that make real API calls - -## PR/commit checklist -- [ ] Example runs successfully -- [ ] README is complete and accurate -- [ ] No hardcoded credentials -- [ ] Code demonstrates best practices -- [ ] Comments explain non-obvious parts -- [ ] Example works with current package version - -## Good vs. bad examples -**Good**: Self-contained with clear purpose -``` -examples/ -├── basic-usage/ -│ ├── README.md # Explains purpose and how to run -│ ├── main.py # Complete, runnable example -│ └── requirements.txt -└── advanced-config/ - ├── README.md - └── main.py -``` - -**Bad**: Incomplete or unclear -``` -examples/ -├── example1.py # No README, unclear purpose -├── test.py # Naming doesn't explain what it shows -└── demo.py # Requires undocumented setup -``` - -**Good**: Educational comments -```python -# This example shows how to configure retry behavior -# for handling transient network failures - -from mypackage import Client - -# Configure with exponential backoff (recommended for production) -client = Client( - retries=3, # Number of retry attempts - backoff_factor=2.0, # Exponential backoff multiplier -) -``` - -**Bad**: No context -```python -from mypackage import Client -client = Client(retries=3, backoff_factor=2.0) -``` - -## When stuck -- Check similar examples for patterns -- Ensure the example is self-contained -- Test the example from scratch (fresh environment) -- Check root AGENTS.md for project conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/frontend-typescript.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/frontend-typescript.md deleted file mode 100644 index 534702826..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/frontend-typescript.md +++ /dev/null @@ -1,96 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -## Setup & environment -- Install: `npm install` or `yarn install` -- Node version: {{NODE_VERSION}} -- Framework: {{FRAMEWORK}} -- Package manager: {{PACKAGE_MANAGER}} -- Environment variables: {{ENV_VARS}} - -## Build & tests (prefer file-scoped) -- Typecheck a file: `npx tsc --noEmit {{FILE_PATH}}` -- Lint a file: `npx eslint {{FILE_PATH}}` -- Format a file: `npx prettier --write {{FILE_PATH}}` -- Test a file: `npm test {{FILE_PATH}}` -- Build: {{BUILD_CMD}} -- Dev server: {{DEV_CMD}} - -## Code style & conventions -- TypeScript strict mode enabled -- Use functional components with hooks (React) -- Naming: `camelCase` for variables/functions, `PascalCase` for components -- File naming: `ComponentName.tsx`, `utilityName.ts` -- Imports: group and sort (external, internal, types) -- CSS: {{CSS_APPROACH}} (CSS Modules, Tailwind, styled-components, etc.) -{{FRAMEWORK_CONVENTIONS}} - -## Security & safety -- Sanitize user inputs before rendering -- Use `dangerouslySetInnerHTML` only with sanitized content -- Validate environment variables at build time -- Never expose secrets in client-side code -- Use HTTPS for all API calls -- Implement CSP headers -- WCAG 2.2 AA accessibility compliance - -## PR/commit checklist -- [ ] Tests pass: `npm test` -- [ ] TypeScript compiles: `npx tsc --noEmit` -- [ ] Lint clean: `npm run lint` -- [ ] Formatted: `npm run format` -- [ ] Accessibility: keyboard navigation works, ARIA labels present -- [ ] Responsive: tested on mobile, tablet, desktop -- [ ] Performance: no unnecessary re-renders - -## Good vs. bad examples -**Good**: Proper TypeScript typing -```typescript -interface User { - id: string; - name: string; - email: string; -} - -function UserCard({ user }: { user: User }): JSX.Element { - return
{user.name}
; -} -``` - -**Bad**: Using `any` -```typescript -function UserCard({ user }: { user: any }) { - return
{user.name}
; -} -``` - -**Good**: Accessible button -```tsx - -``` - -**Bad**: Non-semantic click handler -```tsx -
- -
-``` - -## When stuck -- Check {{FRAMEWORK}} documentation: {{FRAMEWORK_DOCS}} -- Review TypeScript handbook: https://www.typescriptlang.org/docs/ -- Check root AGENTS.md for project-wide conventions -- Review existing components for patterns - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/oro.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/oro.md deleted file mode 100644 index d3c6ff287..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/oro.md +++ /dev/null @@ -1,232 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -Oro bundle following [Oro Architecture](https://doc.oroinc.com/backend/architecture/) and Symfony best practices. - -## Setup & environment -- Install: `composer install` -- PHP version: {{PHP_VERSION}} -- Oro version: {{ORO_VERSION}} -- Database: PostgreSQL (recommended) or MySQL -- Required: `bin/console oro:install` for fresh setup -- Cache clear: `bin/console cache:clear` -- Assets: `bin/console oro:assets:install` - -## Directory structure -``` -src/ - Acme/ - Bundle/ - MyBundle/ - AcmeMyBundle.php → Bundle class - Controller/ → Web and API controllers - Entity/ → Doctrine entities - Form/ → Form types - Resources/ - config/ - oro/ → Oro-specific configs - workflows.yml → Workflow definitions - datagrids.yml → Datagrid definitions - navigation.yml → Menu/navigation - acl.yml → ACL definitions - services.yml → Service definitions - views/ → Twig templates - translations/ → Translation files - Migrations/ - Schema/ → Doctrine schema migrations - Data/ → Data migrations (fixtures) - Api/ → API processors - Async/ → Message queue processors - EventListener/ → Event subscribers/listeners - ImportExport/ → Import/export processors -``` - -## Build & tests -| Task | Command | ~Time | -|------|---------|-------| -| Lint | `bin/console lint:yaml src/` | ~5s | -| CS Fix | `vendor/bin/php-cs-fixer fix` | ~15s | -| PHPStan | `vendor/bin/phpstan analyse` | ~30s | -| Unit tests | `vendor/bin/phpunit --testsuite=unit` | ~30s | -| Functional | `vendor/bin/phpunit --testsuite=functional` | ~5min | -| Behat | `vendor/bin/behat` | ~10min | -| Full CI | `bin/console oro:test:all` | ~20min | - -## Code style & conventions -- **PSR-12** coding standard -- Strict types: `declare(strict_types=1);` -- Symfony best practices + Oro conventions -- Use Oro's **config-based** approach (YAML over annotations when possible) -- Dependency injection via `services.yml` -- Entities extend Oro base classes when applicable - -### Naming conventions -| Type | Convention | Example | -|------|------------|---------| -| Bundle | `VendorNameBundle` | `AcmeCrmBundle` | -| Entity | `PascalCase` | `CustomerOrder` | -| Datagrid | `vendor-entity-grid` | `acme-orders-grid` | -| Workflow | `vendor_entity_flow` | `acme_order_flow` | -| API resource | `vendor_entity` | `acme_orders` | - -## Oro-specific patterns - -### Datagrids (datagrids.yml) -```yaml -datagrids: - acme-orders-grid: - source: - type: orm - query: - select: - - o.id - - o.orderNumber - from: - - { table: Acme\Bundle\OrderBundle\Entity\Order, alias: o } - columns: - orderNumber: - label: acme.order.order_number.label - sorters: - columns: - orderNumber: - data_name: o.orderNumber - filters: - columns: - orderNumber: - type: string - data_name: o.orderNumber -``` - -### Workflows (workflows.yml) -```yaml -workflows: - acme_order_flow: - entity: Acme\Bundle\OrderBundle\Entity\Order - entity_attribute: order - start_step: draft - steps: - draft: - allowed_transitions: - - submit - submitted: - allowed_transitions: - - approve - - reject - transitions: - submit: - step_to: submitted -``` - -### ACL (acl.yml) -```yaml -acl: - acme_order_view: - type: entity - class: Acme\Bundle\OrderBundle\Entity\Order - permission: VIEW - acme_order_edit: - type: entity - class: Acme\Bundle\OrderBundle\Entity\Order - permission: EDIT -``` - -## Security & safety -- **ACL**: Define permissions in `acl.yml`, check with `isGranted()` -- **CSRF**: Oro handles automatically for forms -- **API auth**: OAuth2 or WSSE authentication -- **Input validation**: Use Symfony validators + Oro constraints -- **Sensitive data**: Use Oro's `ConfigManager` for encrypted values -- **SQL**: Always use Doctrine ORM/DBAL, never raw queries - -## PR/commit checklist -- [ ] `bin/console cache:clear` runs without errors -- [ ] PHPStan passes at configured level -- [ ] Unit tests pass: `vendor/bin/phpunit --testsuite=unit` -- [ ] Schema migrations are reversible -- [ ] Data migrations use `DependentFixtureInterface` for ordering -- [ ] Datagrids tested in browser -- [ ] Workflows tested end-to-end -- [ ] ACL permissions defined for new entities -- [ ] Translation keys added to `messages.en.yml` -- [ ] API resources documented with NelmioApiDocBundle annotations - -## Good vs. bad examples - -**Good**: Config-driven datagrid -```yaml -# datagrids.yml -datagrids: - acme-products-grid: - source: - type: orm - query: - select: [p.id, p.name, p.price] - from: - - { table: Acme\Bundle\ProductBundle\Entity\Product, alias: p } -``` - -**Bad**: Hardcoded queries in controller -```php -$products = $em->createQuery('SELECT p FROM Product p')->getResult(); -``` - -**Good**: Proper dependency injection -```php -public function __construct( - private readonly DoctrineHelper $doctrineHelper, - private readonly ConfigManager $configManager, -) {} -``` - -**Bad**: Container access in services -```php -$em = $this->container->get('doctrine.orm.entity_manager'); -``` - -**Good**: Oro form type with data transformer -```php -class OrderType extends AbstractType -{ - public function buildForm(FormBuilderInterface $builder, array $options): void - { - $builder - ->add('customer', OroEntitySelectOrCreateInlineType::class, [ - 'class' => Customer::class, - 'required' => true, - ]); - } -} -``` - -## Message Queue patterns -```php -// Async processor -class ProcessOrderProcessor implements MessageProcessorInterface -{ - public function process(MessageInterface $message, SessionInterface $session): string - { - $data = JSON::decode($message->getBody()); - // Process order... - return self::ACK; - } -} - -// Producer usage -$this->messageProducer->send(ProcessOrderTopic::NAME, ['orderId' => $order->getId()]); -``` - -## When stuck -- Oro Documentation: https://doc.oroinc.com -- Backend Architecture: https://doc.oroinc.com/backend/architecture/ -- Datagrids: https://doc.oroinc.com/backend/entities/data-grids/ -- Workflows: https://doc.oroinc.com/backend/entities/workflows/ -- API: https://doc.oroinc.com/api/ -- Check existing bundles in `vendor/oro/` for patterns -- Review root AGENTS.md for project-wide conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/resources.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/resources.md deleted file mode 100644 index 7699c957c..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/resources.md +++ /dev/null @@ -1,109 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -Static resources, assets, templates, and configuration files. - -## Setup & environment -- Resources are typically consumed by other parts of the application -- Some resources may need preprocessing or compilation -- Check build scripts for resource handling - -## Resource types -- **Templates**: HTML, email, or text templates -- **Static assets**: Images, fonts, icons, stylesheets -- **Configuration**: Default configs, schema files, fixtures -- **Localization**: Translation files, locale data -- **Data files**: JSON, YAML, CSV for static data - -## Organization conventions -- Group resources by type: `templates/`, `images/`, `locales/` -- Use consistent naming: lowercase, hyphens for spaces -- Keep related resources together -- Version large binary assets carefully (consider Git LFS) - -## Code style & conventions -- Use descriptive file names: `user-profile-template.html` not `template1.html` -- Keep templates simple - logic belongs in code, not templates -- Use consistent indentation in structured files (JSON, YAML, XML) -- Document template variables and their expected values -- Optimize images before committing (compress, resize) - -## Template best practices -- Use clear placeholder syntax: `{{variable}}` or `${variable}` -- Document all required variables in comments or README -- Keep templates focused - one purpose per template -- Use partials/includes for reusable components - -## Security & safety -- Never store secrets in resource files -- Validate all resource files that accept user input -- Sanitize template variables to prevent injection -- Review images/assets for embedded metadata (EXIF, etc.) -- Use CSP-safe inline styles when applicable - -## PR/commit checklist -- [ ] File names are descriptive and consistent -- [ ] Images are optimized (compressed, correct size) -- [ ] Templates have documented variables -- [ ] No sensitive data in resources -- [ ] Structured files are valid (JSON, YAML syntax) -- [ ] Changes tested with consuming code - -## Good vs. bad examples -**Good**: Organized structure -``` -resources/ -├── templates/ -│ ├── email/ -│ │ ├── welcome.html -│ │ └── password-reset.html -│ └── reports/ -│ └── monthly-summary.html -├── images/ -│ ├── logo.svg -│ └── icons/ -└── locales/ - ├── en.json - └── de.json -``` - -**Bad**: Flat and unclear -``` -resources/ -├── template1.html -├── template2.html -├── img1.png -├── img2.png -└── strings.json -``` - -**Good**: Documented template -```html - -

Welcome, {{user_name}}!

-``` - -**Bad**: Undocumented template -```html -

Welcome, {{name}}!

-Click here -``` - -## When stuck -- Check how resources are consumed in the codebase -- Look for build/preprocessing scripts -- Review existing resources for patterns -- Check root AGENTS.md for project conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/testing.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/testing.md deleted file mode 100644 index 926126f82..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/testing.md +++ /dev/null @@ -1,83 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -Test suites, fixtures, and testing utilities for the project. - -## Setup & environment -- Install dev dependencies before running tests -- Some tests may require additional setup (see individual test files) -- Use the project's test framework consistently - -## Running tests -- Run all tests: {{TEST_CMD}} -- Run specific test file: {{TEST_CMD}} -- Run with coverage: {{TEST_CMD}} --coverage (if supported) -- Watch mode: {{TEST_CMD}} --watch (if supported) - -## Test organization -- Group tests by feature or module -- Name test files to match source files (e.g., `foo_test.go`, `foo.test.ts`) -- Use descriptive test names that explain the expected behavior -- Keep fixtures and mocks in dedicated directories - -## Code style & conventions -- One assertion per test when possible -- Use descriptive test names: `test_should_return_error_when_input_is_empty` -- Avoid testing implementation details; focus on behavior -- Keep tests independent - no shared mutable state -- Mock external dependencies (network, filesystem, time) -- Use table-driven tests for multiple similar cases - -## Security & safety -- Never commit real credentials in test fixtures -- Use environment variables or mock services for sensitive data -- Sanitize any test data that might contain PII -- Ensure test databases are isolated from production - -## PR/commit checklist -- [ ] All tests pass locally -- [ ] New functionality has corresponding tests -- [ ] Test names describe expected behavior -- [ ] No hardcoded credentials or sensitive data -- [ ] Mocks are appropriate and maintainable -- [ ] Coverage hasn't decreased significantly - -## Good vs. bad examples -**Good**: Descriptive test name -``` -test_should_return_validation_error_when_email_format_is_invalid -test_creates_user_with_valid_input -``` - -**Bad**: Vague test name -``` -test_email -test_user_creation -test1 -``` - -**Good**: Independent tests -``` -func TestUserCreation(t *testing.T) { - user := createTestUser() // Fresh setup each test - // assertions... -} -``` - -**Bad**: Shared state -``` -var globalUser User // Shared between tests - order-dependent! -``` - -## When stuck -- Check existing tests for patterns -- Review test framework documentation -- Ensure test isolation (no shared state) -- Check root AGENTS.md for project conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/typo3.md b/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/typo3.md deleted file mode 100644 index 2eaef7dc1..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/assets/scoped/typo3.md +++ /dev/null @@ -1,141 +0,0 @@ - - -# AGENTS.md — {{SCOPE_NAME}} - -## Overview -{{SCOPE_DESCRIPTION}} - -TYPO3 extension following [TYPO3 Coding Guidelines](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/CodingGuidelines/Index.html) and PSR-12. - -## Setup & environment -- Install: `composer install` or via Extension Manager -- PHP version: {{PHP_VERSION}} -- TYPO3 version: {{TYPO3_VERSION}} -- Local dev: `ddev start && ddev composer install` -- Required extensions: {{REQUIRED_EXTENSIONS}} - -## Directory structure -``` -Classes/ → PHP classes (PSR-4: Vendor\ExtKey\) - Controller/ → Backend/Frontend controllers - Domain/ → Model, Repository, Validator - Service/ → Business logic services - ViewHelpers/ → Fluid ViewHelpers -Configuration/ → TYPO3 configuration - TCA/ → Table Configuration Array - TypoScript/ → TypoScript setup/constants - FlexForms/ → FlexForm XML definitions - Backend/ → Backend module config -Resources/ - Private/ → Templates, Partials, Layouts (Fluid) - Public/ → CSS, JS, Icons -Tests/ - Unit/ → PHPUnit unit tests - Functional/ → Functional tests with DB -Documentation/ → RST documentation for docs.typo3.org -``` - -## Build & tests -| Task | Command | ~Time | -|------|---------|-------| -| Lint | `composer ci:php:lint` | ~5s | -| CS Fix | `composer ci:php:cs-fixer` | ~10s | -| PHPStan | `composer ci:php:stan` | ~15s | -| Unit tests | `composer ci:tests:unit` | ~10s | -| Functional | `composer ci:tests:functional` | ~60s | -| All CI | `composer ci` | ~90s | - -Alternative with ddev: -- `ddev composer ci:tests:unit` -- `ddev exec vendor/bin/phpunit -c Tests/Build/UnitTests.xml` - -## Code style & conventions -- **PSR-12** + TYPO3 CGL (Coding Guidelines) -- Strict types: `declare(strict_types=1);` in all PHP files -- Namespace: `{{VENDOR}}\{{EXT_KEY}}\` (PSR-4 from Classes/) -- Use dependency injection via `Services.yaml`, not `GeneralUtility::makeInstance()` -- Extbase conventions for domain models and repositories -- Fluid templates: use `` only when safe -- **CSRF protection**: use `@TYPO3\CMS\Extbase\Annotation\IgnoreValidation` carefully -- **Access checks**: use `$GLOBALS['BE_USER']->check()` for backend -- **File handling**: use FAL (File Abstraction Layer), never direct file paths -- **Never trust user input**: validate via Extbase validators or custom validation - -## PR/commit checklist -- [ ] `composer ci` passes (lint, cs-fixer, phpstan, tests) -- [ ] PHPStan level {{PHPSTAN_LEVEL}} clean -- [ ] ext_emconf.php version updated if releasing -- [ ] TCA changes have matching SQL in ext_tables.sql -- [ ] Documentation updated in Documentation/ -- [ ] No deprecated TYPO3 APIs (run Extension Scanner) -- [ ] Tested on target TYPO3 versions ({{TYPO3_VERSION}}) - -## Good vs. bad examples - -**Good**: Dependency injection -```php -public function __construct( - private readonly PostRepository $postRepository, - private readonly Context $context, -) {} -``` - -**Bad**: Static instantiation -```php -$postRepository = GeneralUtility::makeInstance(PostRepository::class); -``` - -**Good**: QueryBuilder with proper escaping -```php -$queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_myext_posts'); -$queryBuilder - ->select('*') - ->from('tx_myext_posts') - ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, Connection::PARAM_INT))); -``` - -**Bad**: String concatenation in queries -```php -$result = $connection->query("SELECT * FROM tx_myext_posts WHERE uid = " . $uid); -``` - -**Good**: Fluid with escaping -```html - -

{post.title}

- {post.bodytext} -
-``` - -## TYPO3 upgrade considerations -- Run **Extension Scanner** before upgrading: Backend → Upgrade → Scan Extension Files -- Use **Rector** for automated migrations: `vendor/bin/rector process` -- Check **deprecation log** in TYPO3 backend -- Review [TYPO3 Changelog](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Index.html) for breaking changes - -## When stuck -- TYPO3 Documentation: https://docs.typo3.org -- TCA Reference: https://docs.typo3.org/m/typo3/reference-tca/main/en-us/ -- Core API: https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ -- Extbase Guide: https://docs.typo3.org/m/typo3/book-extbasefluid/main/en-us/ -- Check existing patterns in EXT:core or EXT:backend -- Review root AGENTS.md for project-wide conventions - -## House Rules (optional) -{{HOUSE_RULES}} diff --git a/packages/idae-slotui/.github/skills/agents-skill/references/analysis.md b/packages/idae-slotui/.github/skills/agents-skill/references/analysis.md deleted file mode 100644 index 4e7e4d8bc..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/references/analysis.md +++ /dev/null @@ -1,322 +0,0 @@ -# AGENTS.md Analysis Across 6 Netresearch Projects - -> **Reference:** This analysis aligns with the [official agents.md specification](https://agents.md/) and [GitHub best practices from 2,500+ repositories](https://github.blog/ai-and-ml/github-copilot/how-to-write-a-great-agents-md-lessons-from-over-2500-repositories/). - -## Executive Summary - -**Total AGENTS.md Files Found**: 21 files across 6 projects - -**Patterns Observed**: -1. **Root files are thin** (26-348 lines) with precedence rules and global defaults -2. **Scoped files are focused** on specific subsystems (backend, frontend, CLI, etc.) -3. **Managed header** present in newer files: `` -4. **Consistent structure** following the 9-section schema from your prompt - -## File Distribution - -| Project | Root | Scoped Files | Total Lines (root) | -|---------|------|--------------|-------------------| -| t3x-rte_ckeditor_image | ✅ | Classes/, Documentation/, Resources/, Tests/ | 348 | -| coding_agent_cli_toolset | ✅ | scripts/ | 308 | -| ldap-selfservice-password-changer | ✅ | internal/, internal/web/ | 282 | -| ldap-manager | ✅ | cmd/, internal/, internal/web/, scripts/ | 228 | -| raybeam | ✅ | cmd/, internal/ | 209 | -| simple-ldap-go | ✅ | docs/, examples/, testutil/ | 26 ⭐ **Perfect thin root** | - -## Key Findings - -### 1. **simple-ldap-go** is the Best Example ⭐ - -**Root file** (26 lines): -- Minimal global rules -- Clear precedence statement -- Index of scoped files -- No duplication with scoped content - -```markdown -## Global rules -- Keep diffs small; add tests for new code paths -- Ask first before: adding heavy deps, running full e2e suites, or repo-wide rewrites - -## Minimal pre-commit checks -- Typecheck (all packages): `go build -v ./...` -- Lint/format (file scope): `gofmt -w ` -- Unit tests (fast): `go test -v -race -short -timeout=10s ./...` - -## Index of scoped AGENTS.md -- `./examples/AGENTS.md` — Example applications -- `./testutil/AGENTS.md` — Testing utilities -- `./docs/AGENTS.md` — Documentation -``` - -### 2. Scoped Files Follow 9-Section Schema - -**Example: simple-ldap-go/examples/AGENTS.md**: -1. ✅ Overview -2. ✅ Setup & environment -3. ✅ Build & tests (file-scoped) -4. ✅ Code style & conventions -5. ✅ Security & safety -6. ✅ PR/commit checklist -7. ✅ Good vs. bad examples -8. ✅ When stuck -9. ⚠️ House Rules (rarely used, only when overriding) - -### 3. Managed Header Usage - -**Present in** (newer projects): -- simple-ldap-go (all files) -- ldap-selfservice-password-changer (all files) -- raybeam (some files) - -**Missing in** (older projects): -- t3x-rte_ckeditor_image -- coding_agent_cli_toolset - -**Format**: -```html - -``` - -### 4. Precedence Rules - Consistent Pattern - -All root files establish precedence clearly: - -**Pattern 1** (verbose): -> "This file explains repo-wide conventions and where to find scoped rules. **Precedence:** the **closest `AGENTS.md`** to the files you're changing wins. Root holds global defaults only." - -**Pattern 2** (concise): -> "**Precedence**: Nearest AGENTS.md wins. This is the root file with global defaults." - -**Pattern 3** (index-focused): -> "## Precedence & Scoped Files -> Nearest AGENTS.md wins. Use this root for defaults only." - -### 5. Docker-First vs Native-First - -**Docker-first projects** (ldap-selfservice-password-changer, ldap-manager): -```markdown -### Setup -**Prerequisites**: Docker + Docker Compose (required), Go 1.25+, Node.js 24+, pnpm 10.18+ (for native dev) - -# Docker (recommended) -docker compose --profile dev up - -# Native development -pnpm install -``` - -**Native-first projects** (simple-ldap-go, t3x-rte_ckeditor_image): -```markdown -### Setup -**Prerequisites**: Go 1.24, golangci-lint - -# Install -go mod download -``` - -### 6. Language-Specific Patterns - -**Go Projects** (simple-ldap-go, ldap-manager, raybeam): -- Minimal pre-commit: `go build -v ./...`, `gofmt -w`, `go test -short` -- Go version in global rules (1.24, 1.25) -- golangci-lint for comprehensive checks - -**PHP Project** (t3x-rte_ckeditor_image): -- Composer scripts for CI pipeline -- PHPStan + PHP-CS-Fixer + Rector -- Make targets preferred over composer commands - -**Hybrid Projects** (ldap-selfservice-password-changer): -- Separate sections for Go backend vs TypeScript frontend -- Scoped AGENTS.md for `internal/` (Go) and `internal/web/` (TS) -- pnpm for package management (strict version) - -### 7. Quick Start Patterns - -**Best practice** (ldap-selfservice-password-changer): -```markdown -## Quick Navigation -- [internal/AGENTS.md](internal/AGENTS.md) - Go backend services -- [internal/web/AGENTS.md](internal/web/AGENTS.md) - TypeScript frontend -``` - -**Alternative** (simple-ldap-go): -```markdown -## Index of scoped AGENTS.md -- `./examples/AGENTS.md` — Example applications and usage patterns -- `./testutil/AGENTS.md` — Testing utilities and container management -``` - -### 8. House Rules Implementation - -**Global defaults** typically include: -- Commits: Conventional Commits, small PRs (~≤300 LOC) -- Type-safety: Strict types when supported -- SOLID, KISS, DRY, YAGNI principles -- SemVer for versioning -- No secrets in VCS -- Structured logging -- WCAG AA for UI projects - -**Scoped overrides** (rare): -- Different test coverage targets per module -- Module-specific commit conventions -- Technology-specific style guides - -### 9. Common Gaps Across Projects - -❌ **Missing .envrc** in most projects (your prompt requires it) -❌ **Missing .editorconfig** in some projects -❌ **Husky + commitlint** not universally adopted -❌ **lint-staged** not implemented in older projects -❌ **CI parity section** often missing (should reference GitHub Actions) - -## Recommendations for Your Skill - -### Essential Features - -1. **Template Selection**: - - Thin root (simple-ldap-go style) ⭐ - - Verbose root (ldap-selfservice-password-changer style) - - Auto-detect based on project size - -2. **Project Type Detection**: - - Go: Look for `go.mod`, detect version from `go.mod` directive - - PHP: Look for `composer.json`, detect TYPO3 from dependencies - - TypeScript: Look for `tsconfig.json`, detect strict mode - - Hybrid: Detect multiple languages, recommend scoped files - -3. **Scoped File Generation**: - - **Required scopes**: backend/, frontend/, internal/ - - **Optional scopes**: cmd/, scripts/, examples/, docs/, testutil/ - - **Auto-create** if directory exists and has ≥5 files - -4. **Content Extraction**: - - **Makefile**: Extract targets with `##` comments → Build & Test Commands - - **package.json scripts**: Extract npm/pnpm commands - - **go.mod**: Extract Go version → Prerequisites - - **composer.json scripts**: Extract PHP quality commands - - **GitHub Actions**: Extract CI checks → PR/commit checklist - -5. **Managed Header**: - - Always add to new files - - Preserve in existing files - - Update timestamp on regeneration - -6. **Precedence Rules**: - - Auto-add "Nearest AGENTS.md wins" statement - - Generate index of scoped files in root - - Link from root to scoped files - -### Skill Structure Recommendation - -``` -agents-skill/ -├── SKILL.md -├── README.md -├── templates/ -│ ├── root-thin.md # simple-ldap-go style (recommended) -│ ├── root-verbose.md # ldap-selfservice style -│ ├── scoped-backend.md # Go/PHP backend -│ ├── scoped-frontend.md # TypeScript/JS frontend -│ ├── scoped-cli.md # CLI tools -│ ├── scoped-docs.md # Documentation -│ ├── scoped-tests.md # Testing utilities -│ └── sections/ # Modular sections -│ ├── header.md # Managed header template -│ ├── precedence.md # Precedence statement -│ ├── setup.md # Setup section -│ ├── build-commands.md # Build & test commands -│ ├── code-style.md # Code style guidelines -│ ├── security.md # Security practices -│ ├── pr-checklist.md # PR/commit checklist -│ ├── examples.md # Good vs bad examples -│ └── when-stuck.md # When stuck guidance -├── scripts/ -│ ├── generate-agents.sh # Main generator -│ ├── detect-project.sh # Auto-detect project type -│ ├── extract-commands.sh # Extract from Makefile/package.json -│ └── validate-structure.sh # Validate generated files -└── references/ - ├── examples/ # Real-world examples - │ ├── go-library.md # simple-ldap-go - │ ├── go-web-app.md # ldap-manager - │ ├── php-typo3.md # t3x-rte_ckeditor_image - │ └── hybrid-app.md # ldap-selfservice-password-changer - └── best-practices.md # AGENTS.md writing guide -``` - -### Key Differentiators - -✅ **Thin root by default** (not verbose like some projects) -✅ **Auto-scope detection** (create scoped files when needed) -✅ **Command extraction** (don't make user write commands manually) -✅ **Managed header** (mark files as agent-maintained) -✅ **Language-agnostic** (works with Go, PHP, TypeScript, Python, etc.) -✅ **Idempotent** (can be re-run without breaking existing structure) - -## Sample Output Comparison - -### Your Prompt's Expected Output - -**Root AGENTS.md** (following simple-ldap-go pattern): -```markdown - - -# AGENTS.md (root) - -**Precedence:** The **closest AGENTS.md** to changed files wins. Root holds global defaults only. - -## Global rules -- Keep PRs small (~≤300 net LOC) -- Conventional Commits: type(scope): subject -- Ask before: heavy deps, full e2e, repo rewrites -- Never commit secrets or PII - -## Minimal pre-commit checks -- Typecheck: [auto-detected command] -- Lint: [auto-detected command] -- Format: [auto-detected command] -- Tests: [auto-detected command] - -## Index of scoped AGENTS.md -- `./internal/AGENTS.md` — Go backend services -- `./internal/web/AGENTS.md` — TypeScript frontend - -## When instructions conflict -Nearest AGENTS.md wins. User prompts override files. -``` - -**Scoped AGENTS.md** (e.g., internal/AGENTS.md): -```markdown - - -# AGENTS.md — Backend Services - -## Overview -[Auto-generated description of internal/ directory purpose] - -## Setup & environment -[Auto-detected from go.mod, .env.example] - -## Build & tests (prefer file-scoped) -[Auto-extracted from Makefile, go commands] - -## Code style & conventions -[Auto-detected from golangci-lint config, gofmt] - -## Security & safety -[Standard Go security practices + project-specific] - -## PR/commit checklist -[Auto-extracted from GitHub Actions, Makefile] - -## Good vs. bad examples -[Template with placeholders to fill] - -## When stuck -- Check root AGENTS.md for global rules -- Review sibling modules for patterns -``` - diff --git a/packages/idae-slotui/.github/skills/agents-skill/references/directory-coverage.md b/packages/idae-slotui/.github/skills/agents-skill/references/directory-coverage.md deleted file mode 100644 index f41d53e58..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/references/directory-coverage.md +++ /dev/null @@ -1,62 +0,0 @@ -# Directory Coverage for AGENTS.md - -Comprehensive AGENTS.md coverage means creating files in ALL key directories, not just root. - -## Why Full Coverage Matters - -- Each directory has unique patterns and conventions -- AI agents working in subdirectories benefit from local context -- Reduces need to navigate up to root AGENTS.md - -## Standard Directory Structure - -### PHP/TYPO3 Projects - -| Directory | AGENTS.md Content | -|-----------|-------------------| -| Root | Project overview, precedence list, architecture diagram | -| `Classes/` | DI patterns, service layer, security rules | -| `Configuration/` | TCA, Services.yaml, module registration | -| `Documentation/` | RST standards, directives, rendering | -| `Resources/` | Templates, XLIFF, assets | -| `Tests/` | Unit/functional patterns, fixtures | -| `Tests/E2E/` | E2E-specific patterns (if exists) | - -### Go Projects - -| Directory | AGENTS.md Content | -|-----------|-------------------| -| Root | Module overview, build commands | -| `cmd/` | CLI entry points, flags | -| `internal/` | Private packages, no export | -| `pkg/` | Public API patterns | - -### TypeScript/Node Projects - -| Directory | AGENTS.md Content | -|-----------|-------------------| -| Root | Package overview, scripts | -| `src/` | Source patterns, imports | -| `components/` | UI component patterns | -| `tests/` or `__tests__/` | Testing patterns | - -## Precedence Rules - -Root AGENTS.md should list all child files: - -```markdown -## Precedence - -1. This file (root) -2. Directory-specific files: - - `Classes/AGENTS.md` - - `Configuration/AGENTS.md` - - `Tests/AGENTS.md` -3. Framework standards -``` - -## Anti-pattern - -**Wrong**: Only creating root AGENTS.md and Tests/AGENTS.md - -**Right**: Create AGENTS.md in EVERY directory with unique patterns diff --git a/packages/idae-slotui/.github/skills/agents-skill/references/examples/coding-agent-cli/AGENTS.md b/packages/idae-slotui/.github/skills/agents-skill/references/examples/coding-agent-cli/AGENTS.md deleted file mode 100644 index 7ffd33e0d..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/references/examples/coding-agent-cli/AGENTS.md +++ /dev/null @@ -1,308 +0,0 @@ - - -# AI CLI Preparation - Agent Guide (Root) - -**Thin root file**: See scoped AGENTS.md files for specific areas. - -## Precedence & Scoped Files - -This root AGENTS.md provides global defaults. **Nearest AGENTS.md wins** for specific rules. - -**Scoped files:** -- [scripts/AGENTS.md](scripts/AGENTS.md) - Shell installation scripts - -## Overview - -AI CLI Preparation is an environment audit tool ensuring AI coding agents (like Claude Code) have access to necessary developer tools. It detects 50+ tools, reports versions, and provides installation guidance. - -**Architecture:** -- **Phase 1 (Complete)**: Tool detection, version auditing, offline-first caching -- **Phase 2 (Planned)**: Context-aware installation/upgrade management (see [docs/PRD.md](docs/PRD.md)) - -**Tech Stack:** -- Python 3.10+ (standard library only, no external deps for core) -- Make for task automation -- Shell scripts (Bash) for installation -- JSON for caching (latest_versions.json, tools_snapshot.json) - -**Key Files:** -- `cli_audit.py` (2,375 lines): Main audit engine, 50+ tool definitions -- `smart_column.py`: ANSI/emoji-aware table formatting -- `scripts/`: 13+ installation scripts (install/update/uninstall/reconcile) -- `docs/`: Comprehensive technical documentation (12 files, 189KB) - -## Setup - -**Requirements:** -- Python 3.10+ (Python 3.14.0rc2 tested) -- Standard library only (no pip install needed for core) -- Optional: pyflakes for linting - -**First-time setup:** -```bash -# Allow direnv (if using) -direnv allow - -# Show available commands -make help - -# Update snapshot (requires network) -make update - -# Run audit from snapshot (fast, offline-capable) -make audit -``` - -**Environment variables:** -```bash -# See .env.default for all options -CLI_AUDIT_COLLECT=1 # Collect-only mode (write snapshot) -CLI_AUDIT_RENDER=1 # Render-only mode (read snapshot) -CLI_AUDIT_OFFLINE=1 # Offline mode (manual cache only) -CLI_AUDIT_DEBUG=1 # Debug output -CLI_AUDIT_JSON=1 # JSON output -``` - -## Build & Tests - -**Primary commands:** -```bash -make audit # Render from snapshot (no network, <100ms) -make update # Collect fresh data, write snapshot (~10s) -make audit-offline # Offline audit with hints -make lint # Run pyflakes (if installed) -make upgrade # Interactive upgrade guide -``` - -**Single tool audit:** -```bash -make audit-ripgrep # Audit specific tool -make audit-offline-python-core # Role-based preset -``` - -**Installation scripts:** -```bash -make install-python # Install Python toolchain (uv) -make install-node # Install Node.js (nvm) -make install-core # Install core tools (fd, fzf, ripgrep, jq, etc.) -``` - -**Testing:** -```bash -# Smoke test (verifies table output and JSON format) -./scripts/test_smoke.sh - -# Test single tool detection -CLI_AUDIT_DEBUG=1 python3 cli_audit.py --only ripgrep - -# Validate snapshot -jq '.__meta__' tools_snapshot.json -``` - -**No formal test suite yet** - README acknowledges: "currently ships without tests" -- Smoke tests exist (test_smoke.sh) -- Manual validation workflows documented - -## Code Style - -**Python:** -- PEP 8 style (4-space indent, snake_case) -- Type hints used (`from __future__ import annotations`) -- Frozen dataclasses for immutability (`@dataclass(frozen=True)`) -- Docstrings minimal (focus on inline comments) - -**Formatting:** -- EditorConfig enforced: LF, UTF-8, 4 spaces, trim trailing whitespace -- No auto-formatter configured (manual formatting) -- Lint via pyflakes: `make lint` - -**Shell scripts:** -- Bash with `set -euo pipefail` -- Shellcheck-compliant (best effort) -- Consistent error handling (see scripts/lib/) - -**Conventions:** -- File paths: Absolute paths, no auto-commit -- Functions: Snake_case, descriptive names -- Constants: UPPER_CASE (e.g., MANUAL_LOCK, HINTS_LOCK) -- Lock ordering: MANUAL_LOCK → HINTS_LOCK (enforced for safety) - -## Security - -**Secrets:** -- No secrets in VCS -- GITHUB_TOKEN optional (for GitHub API rate limit increase) -- Set via environment: `export GITHUB_TOKEN=ghp_...` - -**Network:** -- HTTPS-only for upstream queries -- Retry logic with exponential backoff -- Per-origin rate limits (GitHub: 5/min, PyPI: 10/min, crates.io: 5/min) -- Timeout enforcement (default: 3s, configurable) - -**Input validation:** -- Tool names validated against TOOLS registry -- Version strings sanitized (extract_version_number) -- Subprocess calls use lists, not shell=True (where possible) - -**Caching:** -- Atomic file writes prevent corruption -- Offline-first design (committed latest_versions.json) -- No arbitrary code execution (package manager commands only) - -## PR/Commit Checklist - -**Before commit:** -- [ ] Run `make lint` (pyflakes clean) -- [ ] Run `make audit` (verify snapshot renders) -- [ ] Test affected tool: `make audit-` -- [ ] Update docs if behavior changed (README.md, docs/, scripts/README.md) -- [ ] Add/update smoke test if new output format - -**Commit messages:** -- Conventional Commits format: `type(scope): description` -- Examples: - - `feat(audit): add snapshot-based collect/render modes` - - `fix(locks): enforce MANUAL_LOCK→HINTS_LOCK ordering` - - `docs(prd): add Phase 2 specifications and ADRs` - - `chore(cache): update latest_versions.json` - -**Pull requests:** -- Keep PRs small (~≤300 net LOC changed) -- Link to issue/ticket if exists -- Update CHANGELOG section in PR description -- Ensure CI passes (when added) - -## Good vs Bad Examples - -**Good: Atomic dataclass with type safety** -```python -@dataclass(frozen=True) -class Tool: - name: str - candidates: tuple[str, ...] - source_kind: str # gh|pypi|crates|npm|gnu|skip - source_args: tuple[str, ...] -``` - -**Bad: Mutable dict with unclear types** -```python -# Don't do this -tool = { - 'name': 'ripgrep', - 'candidates': ['rg'], # List instead of tuple - 'source': 'github', # Unclear allowed values -} -``` - -**Good: Lock ordering enforcement** -```python -def update_manual_cache(tool: str, version: str) -> None: - with MANUAL_LOCK: # Acquire first - with HINTS_LOCK: # Then hints - # Safe: consistent ordering prevents deadlock -``` - -**Bad: Lock ordering violation** -```python -def update_cache(tool: str) -> None: - with HINTS_LOCK: # Wrong order! - with MANUAL_LOCK: - # Deadlock risk -``` - -**Good: Parallel execution with isolation** -```python -with ThreadPoolExecutor(max_workers=16) as executor: - futures = [executor.submit(audit_tool, tool) for tool in TOOLS] - for future in as_completed(futures): - result = future.result() # Failures isolated -``` - -**Bad: Sequential execution** -```python -results = [] -for tool in TOOLS: # Slow: 50 tools * 3s = 150s - results.append(audit_tool(tool)) -``` - -## When Stuck - -**Tool detection failing:** -1. Check PATH: `echo $PATH | tr ':' '\n'` -2. Debug single tool: `CLI_AUDIT_DEBUG=1 python3 cli_audit.py --only ` -3. Check version flag: ` --version` or ` -v` -4. See [docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md#version-detection-failures) - -**Network issues:** -1. Increase timeout: `CLI_AUDIT_TIMEOUT_SECONDS=10 make update` -2. More retries: `CLI_AUDIT_HTTP_RETRIES=5 make update` -3. Use offline mode: `make audit-offline` -4. See [docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md#network-timeout-issues) - -**Cache corruption:** -1. Remove caches: `rm latest_versions.json tools_snapshot.json` -2. Regenerate: `make update` - -**Installation script fails:** -1. Check permissions: `make scripts-perms` -2. Debug script: `bash -x ./scripts/install_.sh` -3. See [scripts/README.md](scripts/README.md) for per-script troubleshooting - -**Documentation:** -- Start with [docs/QUICK_REFERENCE.md](docs/QUICK_REFERENCE.md) for one-liners -- See [docs/INDEX.md](docs/INDEX.md) for navigation by role/task -- Architecture details: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) -- API reference: [docs/API_REFERENCE.md](docs/API_REFERENCE.md) - -## House Rules - -**Defaults** (override in scoped AGENTS.md if needed): - -**Commits:** -- Atomic commits (single logical change) -- Conventional Commits: `type(scope): description` -- Keep PRs small (~≤300 net LOC changed) -- Ticket IDs in commits/PRs if exists - -**Type-safety:** -- Use type hints (`from __future__ import annotations`) -- Frozen dataclasses for immutability -- No `Any` unless truly dynamic - -**Design principles:** -- SOLID, KISS, DRY, YAGNI -- Composition > Inheritance -- Law of Demeter (minimal coupling) - -**Dependencies:** -- Standard library preferred (no external Python deps for core) -- Latest stable versions when external deps needed -- Document why in Decision Log (ADRs for Phase 2) - -**Security:** -- No secrets in VCS -- HTTPS-only for network calls -- No arbitrary code execution -- Input validation on external data - -**Documentation currency:** -- Update docs in same PR as behavior changes -- No drift between code and docs -- Document non-obvious decisions in ADRs (see docs/adr/) - -**Testing:** -- Aim for ≥80% coverage on changed code (when test suite added) -- Bugfixes use TDD: failing test first, then fix -- New code paths need tests (future requirement) - -**Current status:** -- Phase 1: Production-ready detection/audit -- Phase 2: Planned installation/upgrade (see [docs/PRD.md](docs/PRD.md)) -- No unit tests yet (acknowledged in README) - ---- - -**Quick Start:** New to the project? Start with [README.md](README.md) → [docs/QUICK_REFERENCE.md](docs/QUICK_REFERENCE.md) → [docs/INDEX.md](docs/INDEX.md) - -**Contributing:** See [docs/DEVELOPER_GUIDE.md](docs/DEVELOPER_GUIDE.md) for detailed contribution guide diff --git a/packages/idae-slotui/.github/skills/agents-skill/references/examples/coding-agent-cli/scripts-AGENTS.md b/packages/idae-slotui/.github/skills/agents-skill/references/examples/coding-agent-cli/scripts-AGENTS.md deleted file mode 100644 index 8223df219..000000000 --- a/packages/idae-slotui/.github/skills/agents-skill/references/examples/coding-agent-cli/scripts-AGENTS.md +++ /dev/null @@ -1,389 +0,0 @@ - - -# Installation Scripts - Agent Guide - -**Scope:** Shell scripts for tool installation, update, uninstall, reconcile - -## Overview - -13+ Bash scripts for installing developer tools with multiple actions: -- **install**: Fresh installation (default action) -- **update**: Upgrade to latest version -- **uninstall**: Remove installation -- **reconcile**: Switch to preferred installation method (e.g., system → user) - -**Key scripts:** -- `install_core.sh`: Core tools (fd, fzf, ripgrep, jq, yq, bat, delta, just) -- `install_python.sh`: Python toolchain via uv -- `install_node.sh`: Node.js via nvm -- `install_rust.sh`: Rust via rustup -- `install_go.sh`, `install_aws.sh`, `install_kubectl.sh`, etc. -- `guide.sh`: Interactive upgrade guide -- `test_smoke.sh`: Smoke test for audit output - -**Shared utilities:** `lib/` directory (colors, logging, common functions) - -## Setup - -**Requirements:** -- Bash 4.0+ -- `curl` or `wget` for downloads -- Internet access for fresh installs -- Appropriate permissions (user for `~/.local/bin`, sudo for system) - -**Environment variables:** -```bash -INSTALL_PREFIX=${INSTALL_PREFIX:-~/.local} # Default: user-level -FORCE_INSTALL=1 # Skip confirmation prompts -DEBUG=1 # Verbose output -``` - -**Permissions:** -```bash -make scripts-perms # Ensure all scripts are executable -``` - -## Build & Tests - -**Run individual script:** -```bash -# Install action (default) -./scripts/install_python.sh - -# Update action -./scripts/install_python.sh update - -# Uninstall action -./scripts/install_python.sh uninstall - -# Reconcile action (switch installation method) -./scripts/install_node.sh reconcile -``` - -**Via Make:** -```bash -make install-python # Install Python toolchain -make update-python # Update Python toolchain -make uninstall-python # Uninstall Python toolchain -make reconcile-node # Switch Node.js to nvm-managed -``` - -**Smoke test:** -```bash -./scripts/test_smoke.sh # Verify audit output format -``` - -**Debug mode:** -```bash -DEBUG=1 ./scripts/install_python.sh -bash -x ./scripts/install_python.sh # Trace execution -``` - -## Code Style - -**Shell standards:** -- Bash 4.0+ features allowed -- Shebang: `#!/usr/bin/env bash` or `#!/bin/bash` -- Set strict mode: `set -euo pipefail` - - `-e`: Exit on error - - `-u`: Error on undefined variables - - `-o pipefail`: Fail on pipe errors - -**Formatting:** -- 4-space indentation (matches EditorConfig) -- Function names: lowercase_with_underscores -- Constants: UPPER_CASE -- Local variables: lowercase - -**Structure:** -```bash -#!/usr/bin/env bash -set -euo pipefail - -# Source shared utilities -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -source "${SCRIPT_DIR}/lib/colors.sh" || true -source "${SCRIPT_DIR}/lib/common.sh" || true - -# Main function per action -install_tool() { - echo_info "Installing ..." - # Implementation -} - -update_tool() { - echo_info "Updating ..." - # Implementation -} - -uninstall_tool() { - echo_info "Uninstalling ..." - # Implementation -} - -reconcile_tool() { - echo_info "Reconciling ..." - # Implementation -} - -# Action dispatcher -ACTION="${1:-install}" -case "$ACTION" in - install) install_tool ;; - update) update_tool ;; - uninstall) uninstall_tool ;; - reconcile) reconcile_tool ;; - *) echo "Usage: $0 {install|update|uninstall|reconcile}"; exit 1 ;; -esac -``` - -**Error handling:** -```bash -# Good: Check command exists before using -if ! command -v curl >/dev/null 2>&1; then - echo_error "curl not found. Install it first." - exit 1 -fi - -# Good: Check return codes -if ! download_file "$URL" "$DEST"; then - echo_error "Download failed" - exit 1 -fi - -# Good: Cleanup on error -trap 'rm -rf "$TMPDIR"' EXIT ERR -``` - -**Confirmation prompts:** -```bash -# Good: Skip prompt if FORCE_INSTALL=1 -if [[ "${FORCE_INSTALL:-0}" != "1" ]]; then - read -p "Install ? [y/N] " -n 1 -r - echo - [[ ! $REPLY =~ ^[Yy]$ ]] && exit 0 -fi -``` - -## Security - -**Download verification:** -```bash -# Always use HTTPS -URL="https://github.com/owner/repo/releases/download/..." - -# Verify checksums when available -EXPECTED_SHA256="abc123..." -ACTUAL_SHA256=$(sha256sum "$FILE" | awk '{print $1}') -if [[ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]]; then - echo_error "Checksum mismatch!" - exit 1 -fi -``` - -**Path safety:** -```bash -# Good: Quote variables, use absolute paths -INSTALL_DIR="${HOME}/.local/bin" -mkdir -p "$INSTALL_DIR" -mv "$TMPFILE" "$INSTALL_DIR/tool" - -# Bad: Unquoted, relative paths -mkdir -p $INSTALL_DIR -mv tool bin/ -``` - -**Sudo usage:** -```bash -# Good: Prompt for sudo only when needed -if [[ "$INSTALL_PREFIX" == "/usr/local" ]]; then - if ! sudo -v; then - echo_error "Sudo required for system installation" - exit 1 - fi - sudo mv "$FILE" "$INSTALL_PREFIX/bin/" -else - # User-level, no sudo - mv "$FILE" "$INSTALL_PREFIX/bin/" -fi -``` - -**No secrets in scripts:** -- No API keys, tokens, passwords in scripts -- Use environment variables: `${GITHUB_TOKEN:-}` -- Document required env vars in script comments - -## PR/Commit Checklist - -**Before commit:** -- [ ] Run `shellcheck + +``` + +**Props, state, and events:** + +```svelte + +

{title}

+ +{@render children?.()} +``` + +--- + +## 3. SvelteKit Routing & File Roles + +SvelteKit routing is file-system based in `src/routes/`. + +- `+layout.svelte`: Shared wrapper (navbar/sidebar). Must render `{@render children()}`. +- `+page.svelte`: Route view for a specific URL. +- `+error.svelte`: Error boundary. +- `+page.server.ts`: Server-only logic (SQL, private APIs). +- `+page.ts`: Universal logic (hydration-ready data fetching). +- `+server.ts`: API endpoint (raw HTTP methods). + +**Directory Example:** + +```text +src/routes/ +├── +layout.svelte +├── +page.svelte +├── dashboard/ +│ ├── +layout.svelte +│ ├── +page.svelte +│ └── [id]/ +│ ├── +page.svelte +│ └── +page.ts +└── (auth)/ + └── login/ + └── +page.svelte +``` + +--- + +## 4. Modern Data Patterns + +### Server Loaders (with Typing) + +```typescript +// src/routes/profile/+page.server.ts +import type { PageServerLoad } from './$types'; +export const load: PageServerLoad = async ({ locals }) => { + return { user: locals.user }; +}; +``` + +### Server Actions + +```typescript +// src/routes/settings/+page.server.ts +export const actions = { + update: async ({ request }) => { + const data = await request.formData(); + // ...logic + return { success: true }; + } +}; +``` + +--- + +## 5. Advanced Svelte 5 Snippets & Logic + +### Generative List with Internal Logic + +```svelte + +
    + {#each list as item (item.id)} + {@render row(item, { remove: () => list = list.filter(i => i.id !== item.id) })} + {/each} +
+``` + +### Higher-Order Snippets (Snippet Composition) + +```svelte +{#snippet icon(name: string)} + +{/snippet} + +{#snippet button(label: string, iconSnippet: Snippet<[string]>) } + +{/snippet} + +{@render button("Submit", icon)} +``` + +### Snippets for Layout "Slots" with Typing + +```svelte + +
+ +
{@render content(currentUser)}
+ {#if footer} +
{@render footer()}
+ {/if} +
+``` + +### Recursive Snippets (Tree Pattern) + +```svelte + +{#snippet tree(nodes: FileNode[])} +
    + {#each nodes as node} +
  • + {node.name} + {#if node.children} + {@render tree(node.children)} + {/if} +
  • + {/each} +
+{/snippet} +{@render tree(files)} +``` + +--- + +## 6. Performance & Constraints + +- **No `this` context**: Snippets are pure template blocks. +- **Lexical scoping**: Snippets can access variables in their definition scope, but explicit arguments are preferred. +- **Typing**: Always use `import type { Snippet } from 'svelte'` for snippet props. For multiple args, use tuples: `Snippet<[string, number]>`. +- **Use `$state.raw`** for large lists you replace entirely (skips deep proxying). + +--- + + +## 7. Pro Tips (2026) + +- `$state.snapshot()`: Get a static JS object from a reactive `$state` proxy (for non-Svelte libs). +- **Events**: No more `createEventDispatcher`. Pass functions as props (e.g., `onclick`, `onupdate`). +- **Do NOT use `on:click` or any `on:event` directive**: All `on:event` directives are deprecated in Svelte 5. Use event attributes like `onclick`, `onchange`, etc., directly on elements or pass them as props. +- **Prefer runes** for all local reactivity. + +--- + +## 8. Migration Svelte 4 → 5 + +- Replace all `` with snippets and `{@render}`. +- Migrate all reactivity to runes. +- Adapt layouts and pages to the new structure. + +--- + +## 9. Testing + +- Use Vitest for unit tests. +- Test Svelte components with snippet mocks if needed. + +--- + +## 10. MCP Integration + +- Use the Svelte MCP server for documentation, code analysis, and Svelte 5 code validation. +- Always validate Svelte code with the MCP autofixer before delivery. + +--- + +## 11. Useful Commands + +- Start dev server: `pnpm run dev` +- Type-check: `pnpm exec tsc --noEmit` +- Test: `pnpm test` + +--- + +## 12. Internal References + +- See SVELTE.md for detailed project conventions. +- See AGENTS.md for MCP integration. + +--- + +**Use this skill for all Svelte 5 development, refactoring, or code review in this project.** diff --git a/packages/idae-slotui/.github/skills/svelte-code-writer/SKILL.md b/packages/idae-slotui/.github/skills/svelte-code-writer/SKILL.md deleted file mode 100644 index 5a29c4deb..000000000 --- a/packages/idae-slotui/.github/skills/svelte-code-writer/SKILL.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -name: svelte-code-writer -description: CLI tools for Svelte 5 documentation lookup and code analysis. MUST be used whenever creating or editing any Svelte component (.svelte) or Svelte module (.svelte.ts/.svelte.js). ---- - -# Svelte 5 Code Writer - -## Trigger - -**This skill MUST be triggered automatically whenever:** - -- A new `.svelte`, `.svelte.ts`, or `.svelte.js` file is created -- An existing `.svelte`, `.svelte.ts`, or `.svelte.js` file is modified -- The user explicitly requests to create or modify a Svelte file - -_Always invoke the Svelte 5 Code Writer skill before generating, editing, or refactoring any Svelte component or module file._ - -## CLI Tools - -You have access to `@sveltejs/mcp` CLI for Svelte-specific assistance. Use these commands via `npx`: - -### List Documentation Sections - -`npx @sveltejs/mcp list-sections` - -### Get Documentation - -`npx @sveltejs/mcp get-documentation ",,..."` - -### Svelte Autofixer - -`npx @sveltejs/mcp svelte-autofixer "" [options]` -_Note: Escape $ as \$ in terminal (e.g., \$state)._ - -## Best Practices & Architecture Standards - -When generating or refactoring Svelte 5 components, strictly adhere to these rules: - -### 1. Script Module & Type Safety - -- All property interfaces and exported types **must** be declared in a module script block. -- **Syntax**: ` - - - -
- {#each visibleFields() as field} - - - {/each} - - {#if mode !== 'show'} - - {/if} -
-``` - ---- - -## How do I document my components? - -In editors which use the Svelte Language Server you can document Components, functions and exports using specially formatted comments in html comments. - -```svelte - - - -``` \ No newline at end of file diff --git a/packages/idae-slotui/.github/skills/tailwind-v4/SKILL.md b/packages/idae-slotui/.github/skills/tailwind-v4/SKILL.md new file mode 100644 index 000000000..4ac8235ba --- /dev/null +++ b/packages/idae-slotui/.github/skills/tailwind-v4/SKILL.md @@ -0,0 +1,225 @@ +--- +name: tailwind-v4 +description: Tailwind CSS v4 with CSS-first configuration and design tokens. Use when setting up Tailwind v4, defining theme variables, using OKLCH colors, or configuring dark mode. Triggers on @theme, @tailwindcss/vite, oklch, CSS variables, --color-, tailwind v4. +--- + +# Tailwind CSS v4 Best Practices + +## Quick Reference + +**Vite Plugin Setup**: +```ts +// vite.config.ts +import tailwindcss from '@tailwindcss/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [tailwindcss()], +}); +``` + +**CSS Entry Point**: +```css +/* src/index.css */ +@import 'tailwindcss'; +``` + +**@theme Inline Directive**: +```css +@theme inline { + --color-primary: oklch(60% 0.24 262); + --color-surface: oklch(98% 0.002 247); +} +``` + +## Key Differences from v3 + +| Feature | v3 | v4 | +|---------|----|----| +| Configuration | tailwind.config.js | @theme in CSS | +| Build Tool | PostCSS plugin | @tailwindcss/vite | +| Colors | rgb() / hsl() | oklch() (default) | +| Theme Extension | extend: {} in JS | CSS variables | +| Dark Mode | darkMode config option | CSS variants | + +## @theme Directive Modes + +### default (standard mode) +Generates CSS variables that can be referenced elsewhere: +```css +@theme { + --color-brand: oklch(60% 0.24 262); +} + +/* Generates: :root { --color-brand: oklch(...); } */ +/* Usage: text-brand → color: var(--color-brand) */ +``` + +**Note**: You can also use `@theme default` explicitly to mark theme values that can be overridden by non-default @theme declarations. + +### inline +Inlines values directly without CSS variables (better performance): +```css +@theme inline { + --color-brand: oklch(60% 0.24 262); +} + +/* Usage: text-brand → color: oklch(60% 0.24 262) */ +``` + +### reference +Inlines values as fallbacks without emitting CSS variables: +```css +@theme reference { + --color-internal: oklch(50% 0.1 180); +} + +/* No :root variable, but utilities use fallback */ +/* Usage: bg-internal → background-color: var(--color-internal, oklch(50% 0.1 180)) */ +``` + +## OKLCH Color Format + +OKLCH provides perceptually uniform colors with better consistency across hues: + +```css +oklch(L% C H) +``` + +- **L (Lightness)**: 0% (black) to 100% (white) +- **C (Chroma)**: 0 (gray) to ~0.4 (vibrant) +- **H (Hue)**: 0-360 degrees (red → yellow → green → blue → magenta) + +**Examples**: +```css +--color-sky-500: oklch(68.5% 0.169 237.323); /* Bright blue */ +--color-red-600: oklch(57.7% 0.245 27.325); /* Vibrant red */ +--color-zinc-900: oklch(21% 0.006 285.885); /* Near-black gray */ +``` + +## CSS Variable Naming + +Tailwind v4 uses double-dash CSS variable naming conventions: + +```css +@theme { + /* Colors: --color-{name}-{shade} */ + --color-primary-500: oklch(60% 0.24 262); + + /* Spacing: --spacing multiplier */ + --spacing: 0.25rem; /* Base unit for spacing scale */ + + /* Fonts: --font-{family} */ + --font-display: 'Inter Variable', system-ui, sans-serif; + + /* Breakpoints: --breakpoint-{size} */ + --breakpoint-lg: 64rem; + + /* Custom animations: --animate-{name} */ + --animate-fade-in: fade-in 0.3s ease-out; +} +``` + +## No Config Files Needed + +Tailwind v4 eliminates configuration files: + +- **No `tailwind.config.js`** - Use @theme in CSS instead +- **No `postcss.config.js`** - Use @tailwindcss/vite plugin +- **TypeScript support** - Add `@types/node` for path resolution + +```json +{ + "devDependencies": { + "@tailwindcss/vite": "^4.0.0", + "@types/node": "^22.0.0", + "tailwindcss": "^4.0.0", + "vite": "^6.0.0" + } +} +``` + +## Progressive Disclosure + +- **Setup & Installation**: See [references/setup.md](references/setup.md) for Vite plugin configuration, package setup, TypeScript config +- **Theming & Design Tokens**: See [references/theming.md](references/theming.md) for @theme modes, color palettes, custom fonts, animations +- **Dark Mode Strategies**: See [references/dark-mode.md](references/dark-mode.md) for media queries, class-based, attribute-based approaches + +## Decision Guide + +### When to use @theme inline vs default + +**Use `@theme inline`**: +- Better performance (no CSS variable overhead) +- Static color values that won't change +- Animation keyframes with multiple values +- Utilities that need direct value inlining + +**Use `@theme` (default)**: +- Dynamic theming with JavaScript +- CSS variable references in custom CSS +- Values that change based on context +- Better debugging (inspect CSS variables in DevTools) + +### When to use @theme reference + +**Use `@theme reference`**: +- Provide fallback values without CSS variable overhead +- Values that should work even if variable isn't defined +- Reducing :root bloat while maintaining utility support +- Combining with inline for direct value substitution + +## Common Patterns + +### Two-Tier Variable System + +Semantic variables that map to design tokens: + +```css +@theme { + /* Design tokens (OKLCH colors) */ + --color-blue-600: oklch(54.6% 0.245 262.881); + --color-slate-800: oklch(27.9% 0.041 260.031); + + /* Semantic mappings */ + --color-primary: var(--color-blue-600); + --color-surface: var(--color-slate-800); +} + +/* Usage: bg-primary, bg-surface */ +``` + +### Custom Font Configuration + +```css +@theme { + --font-display: 'Inter Variable', system-ui, sans-serif; + --font-mono: 'JetBrains Mono', ui-monospace, monospace; + + --font-display--font-variation-settings: 'wght' 400; + --font-display--font-feature-settings: 'cv02', 'cv03', 'cv04'; +} + +/* Usage: font-display, font-mono */ +``` + +### Animation Keyframes + +```css +@theme inline { + --animate-beacon: beacon 2s ease-in-out infinite; + + @keyframes beacon { + 0%, 100% { + opacity: 1; + transform: scale(1); + } + 50% { + opacity: 0.5; + transform: scale(1.05); + } + } +} + +/* Usage: animate-beacon */ +``` diff --git a/packages/idae-slotui/.github/skills/tailwind-v4/references/dark-mode.md b/packages/idae-slotui/.github/skills/tailwind-v4/references/dark-mode.md new file mode 100644 index 000000000..6505e4de8 --- /dev/null +++ b/packages/idae-slotui/.github/skills/tailwind-v4/references/dark-mode.md @@ -0,0 +1,458 @@ +# Dark Mode Strategies + +## Contents + +- [Media Query Strategy](#media-query-strategy) +- [Class-Based Strategy](#class-based-strategy) +- [Attribute-Based Strategy](#attribute-based-strategy) +- [Theme Switching Implementation](#theme-switching-implementation) +- [Respecting User Preferences](#respecting-user-preferences) + +--- + +## Media Query Strategy + +Use the system preference for dark mode detection. + +### Configuration + +**Default behavior** (v4): +```css +/* No configuration needed - dark: variant works by default */ +@import 'tailwindcss'; +``` + +**Generated CSS**: +```css +@media (prefers-color-scheme: dark) { + .dark\:bg-slate-900 { + background-color: oklch(20.8% 0.042 265.755); + } +} +``` + +### Usage + +```tsx +export function Card({ children }: { children: React.ReactNode }) { + return ( +
+ {children} +
+ ); +} +``` + +### Pros & Cons + +**Pros**: +- Respects system preference automatically +- No JavaScript needed +- Simple implementation +- No FOUC (flash of unstyled content) + +**Cons**: +- Users can't override system preference +- No manual toggle control +- Changes when system setting changes + +### When to Use + +- Documentation sites +- Content-focused websites +- Apps where system preference is preferred +- No need for manual theme switching + +## Class-Based Strategy + +Toggle dark mode with a `.dark` class on the root element. + +### Configuration + +**Pure v4 approach**: Use a v3 config file with darkMode setting: + +```js +// tailwind.config.js (for v3 compatibility) +module.exports = { + darkMode: 'class', // or 'selector' (same as 'class') +}; +``` + +**Note**: In pure v4, the default `dark:` variant uses media queries (`prefers-color-scheme: dark`). To use class-based dark mode, you need to either: +1. Use a v3 config file with `darkMode: 'class'` (shown above) +2. Use `@import "tailwindcss/compat"` and provide a config +3. Define a custom variant with `@custom-variant` + +### Generated CSS + +```css +.dark .dark\:bg-slate-900 { + background-color: oklch(20.8% 0.042 265.755); +} +``` + +### Usage + +```tsx +export function App() { + const [isDark, setIsDark] = useState(false); + + useEffect(() => { + if (isDark) { + document.documentElement.classList.add('dark'); + } else { + document.documentElement.classList.remove('dark'); + } + }, [isDark]); + + return ( +
+ +
+ ); +} +``` + +### Pros & Cons + +**Pros**: +- Full JavaScript control +- User can override system preference +- Easy to implement manual toggle +- Widely supported pattern + +**Cons**: +- Requires JavaScript +- Potential FOUC without SSR handling +- Class management overhead + +### When to Use + +- Applications with theme toggle +- User preference override needed +- Dashboard/admin interfaces +- Apps with per-user theme settings + +## Attribute-Based Strategy + +Use a `data-theme` attribute for more semantic theming. + +### Configuration (v3 compat) + +```js +// tailwind.config.js (v3 compat mode) +module.exports = { + darkMode: ['class', '[data-theme="dark"]'], +}; +``` + +### Generated CSS + +```css +[data-theme="dark"] .dark\:bg-slate-900 { + background-color: oklch(20.8% 0.042 265.755); +} +``` + +### Usage + +```tsx +export function App() { + const [theme, setTheme] = useState<'light' | 'dark'>('light'); + + useEffect(() => { + document.documentElement.setAttribute('data-theme', theme); + }, [theme]); + + return ( +
+ +
+ ); +} +``` + +### Multiple Themes + +Extend beyond light/dark with multiple theme attributes: + +```tsx +type Theme = 'light' | 'dark' | 'aviation' | 'high-contrast'; + +export function App() { + const [theme, setTheme] = useState('light'); + + useEffect(() => { + document.documentElement.setAttribute('data-theme', theme); + }, [theme]); + + return ( +
+ +
+ ); +} +``` + +### Pros & Cons + +**Pros**: +- Semantic HTML attribute +- Supports multiple themes (not just light/dark) +- Easy to inspect in DevTools +- Clear intent + +**Cons**: +- Requires JavaScript +- More verbose selector in CSS +- Less common pattern + +### When to Use + +- Multi-theme applications +- Semantic HTML preferences +- Complex theming systems +- Better DevTools debugging + +## Theme Switching Implementation + +Complete implementation with persistence and SSR support. + +### React Hook + +```tsx +// hooks/use-theme.ts +import { useEffect, useState } from 'react'; + +type Theme = 'light' | 'dark' | 'system'; + +export function useTheme() { + const [theme, setTheme] = useState(() => { + if (typeof window === 'undefined') return 'system'; + return (localStorage.getItem('theme') as Theme) || 'system'; + }); + + useEffect(() => { + const root = document.documentElement; + const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches + ? 'dark' + : 'light'; + + const effectiveTheme = theme === 'system' ? systemTheme : theme; + + root.classList.remove('light', 'dark'); + root.classList.add(effectiveTheme); + + localStorage.setItem('theme', theme); + }, [theme]); + + // Listen for system theme changes + useEffect(() => { + if (theme !== 'system') return; + + const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); + const handleChange = () => { + const systemTheme = mediaQuery.matches ? 'dark' : 'light'; + document.documentElement.classList.remove('light', 'dark'); + document.documentElement.classList.add(systemTheme); + }; + + mediaQuery.addEventListener('change', handleChange); + return () => mediaQuery.removeEventListener('change', handleChange); + }, [theme]); + + return { theme, setTheme }; +} +``` + +### Theme Provider Component + +```tsx +// components/theme-provider.tsx +import { createContext, useContext, type ReactNode } from 'react'; +import { useTheme } from '@/hooks/use-theme'; + +type ThemeContextValue = ReturnType; + +const ThemeContext = createContext(undefined); + +export function ThemeProvider({ children }: { children: ReactNode }) { + const value = useTheme(); + + return ( + + {children} + + ); +} + +export function useThemeContext() { + const context = useContext(ThemeContext); + if (!context) { + throw new Error('useThemeContext must be used within ThemeProvider'); + } + return context; +} +``` + +### Theme Toggle Component + +```tsx +// components/theme-toggle.tsx +import { Moon, Sun, Monitor } from 'lucide-react'; +import { useThemeContext } from '@/components/theme-provider'; +import { Button } from '@/components/ui/button'; + +export function ThemeToggle() { + const { theme, setTheme } = useThemeContext(); + + const cycleTheme = () => { + const themes: Array<'light' | 'dark' | 'system'> = ['light', 'dark', 'system']; + const currentIndex = themes.indexOf(theme); + const nextIndex = (currentIndex + 1) % themes.length; + setTheme(themes[nextIndex]); + }; + + const Icon = theme === 'light' ? Sun : theme === 'dark' ? Moon : Monitor; + + return ( + + ); +} +``` + +### SSR Script (Prevent FOUC) + +Inject this script before any styled content to prevent flash: + +```tsx +// app/layout.tsx (Next.js example) +export default function RootLayout({ children }: { children: React.ReactNode }) { + return ( + + + + + + +{#snippet buttonStart()} + {@render children?.()} +{/snippet} + +``` + +Notes about the template: +- Use `$props()` from Svelte 5 runes to destructure `children` and other props. +- Keep the snippet logic minimal — it should not contain unrelated implementation details. + +6) Styling +- Import the component's CSS using `` as required by the migration rules. + +7) Execution rules / workflow +- Work on one directory at a time. Finish generating and checking all snippet files for that directory before moving to the next. +- Do not change parent component file locations. +- Follow the exact template and naming rules — automated tools and downstream scripts rely on these conventions. + +8) Validation +- After creating snippet files for a directory, run TypeScript checking and unit tests locally: + +```powershell +pnpm run build +pnpm run test:unit +``` + +- If `scripts/migrate-snippet.js` supports a dry-run or preview mode, use it first to validate detection patterns. + + + + + + + + + + + \ No newline at end of file diff --git a/packages/idae-slotui/MIGRATION_STATUS.md b/packages/idae-slotui/MIGRATION_STATUS.md new file mode 100644 index 000000000..727638c6e --- /dev/null +++ b/packages/idae-slotui/MIGRATION_STATUS.md @@ -0,0 +1,25 @@ +# MIGRATION_STATUS.md + +Ce fichier suit l'avancement de la migration Svelte 5 et shadcn-svelte. + +| Component/Step | Status | Notes | +|-----------------------|-----------------------|----------------------------------------| +| Audit/Nettoyage Svelte 5 | ✅ Done | Conformité Svelte 5, runes, $props | +| Migration SCSS → CSS | ✅ Done | Alert.css, avatar.css, backdrop.css, badge.css, box.css, breadCrumb.css, cartouche.css, chipper.css, columner.css, contentSwitcher.css, debug.css, demoer.css, divider.css, icon.css, paper.css, titleBar.css, autocomplete.css, button.css, checkbox.css, confirm.css, inplaceedit.css, dataList.css, finder.css, grouper.css, jsoner.css, list.css, loader.css, sorter.css, drawer.css, tabs.css, bootstrapp.css, chromeFrame.css, frame.css, login.css, marquee.css, content.css, contextRooter.css, css.css, effects.css, engine.css créés, SCSS conservé | +| Tailwind v4 install | ⬜ Not started | | +| Theme migration | ⬜ Not started | | +| Style/theme ajustements| ⬜ Not started | | +| shadcn-svelte intégration | ⬜ Not started | | +| Tests/validation | ⬜ Not started | | + +### SCSS to CSS Migration Status + +- **controls/**: Completed +- **data/**: Completed +- **navigation/**: Completed +- **ui/**: Completed +- **utils/**: Completed + +All SCSS files have been migrated to CSS, and the corresponding Svelte components have been updated. + +Mise à jour : première étape de nettoyage et conformité Svelte 5 terminée. diff --git a/packages/idae-slotui/README.md b/packages/idae-slotui/README.md index fb1548aa4..37555a0d9 100644 --- a/packages/idae-slotui/README.md +++ b/packages/idae-slotui/README.md @@ -52,7 +52,6 @@ flowchart TD subgraph Component [Internal Structure] Comp --> Runes[Svelte 5 Runes $props, $state...] Comp --> Slotted[Slotted Utility] - Comp --> Style[SCSS + UnoCSS] end subgraph Exports [Build Output] @@ -61,6 +60,10 @@ flowchart TD end ``` +## Migration note +- SCSS support has been removed. All styling now uses Tailwind CSS and PostCSS. +- If you encounter errors, ensure `@tailwindcss/postcss` is installed and referenced in `postcss.config.cjs`. + ## License This package is licensed under the MIT License. See the [LICENSE](../../LICENSE) file for more information. diff --git a/packages/idae-slotui/SNIPPET_COMPONENT.md b/packages/idae-slotui/SNIPPET_COMPONENT.md new file mode 100644 index 000000000..582f98660 --- /dev/null +++ b/packages/idae-slotui/SNIPPET_COMPONENT.md @@ -0,0 +1,49 @@ +### Snippet Components Hardening Instructions (STRICT) + +Purpose: standardize creation and maintenance of "snippet components". + + 1) Scope and order + - Process directories in this exact sequence: `controls/`, `data/`, `navigation/`, `ui/`, `utils/`. + - a "snippet component" is a svelte component with the word "snippet component" in its content, referring to a parent component's snippet. + + + 2) Discovery (identification) + - The migration script `scripts/make-component-maps.js` can produce a preview list; run it locally to inspect results: + ```powershell + node .\scripts\make-component-maps.js + ``` + - if the column Int. is ❌ , then there are chances this is a "snippet component" which need to be corrected. + + 3) File placement rules (CRITICAL) + - Do NOT create a `snippets/` subdirectory. + - Do NOT move new components into a central directory. + - Each generated snippet component MUST be created in the same directory as its parent component. Example: if `Button.svelte` lives in `src/lib/controls/button/`, then `ButtonStart.svelte` must also be created in `src/lib/controls/button/`. + + + 5) Component template (mandatory) + - Every snippet file must include a `@component` HTML comment, use Svelte 5 runes for props. Keep implementations minimal. + - The component must not contain " blocks. + // - capture group 1: attributes string of the diff --git a/packages/idae-slotui/src/lib/base/alert/AlertButtonClose.svelte b/packages/idae-slotui/src/lib/base/alert/AlertButtonClose.svelte new file mode 100644 index 000000000..1cb5ebd13 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/alert/AlertButtonClose.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet alertButtonClose()} + {@render children?.()} +{/snippet} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/base/alert/AlertButtonZone.svelte b/packages/idae-slotui/src/lib/base/alert/AlertButtonZone.svelte new file mode 100644 index 000000000..8bd53af1a --- /dev/null +++ b/packages/idae-slotui/src/lib/base/alert/AlertButtonZone.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet alertButtonZone()} + {@render children?.()} +{/snippet} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/base/alert/AlertMessage.svelte b/packages/idae-slotui/src/lib/base/alert/AlertMessage.svelte new file mode 100644 index 000000000..014e22578 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/alert/AlertMessage.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet alertMessage()} + {@render children?.()} +{/snippet} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/base/alert/AlertTopButton.svelte b/packages/idae-slotui/src/lib/base/alert/AlertTopButton.svelte new file mode 100644 index 000000000..523684681 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/alert/AlertTopButton.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet alertTopButton()} + {@render children?.()} +{/snippet} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/base/alert/alert.css b/packages/idae-slotui/src/lib/base/alert/alert.css new file mode 100644 index 000000000..ada5403d7 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/alert/alert.css @@ -0,0 +1,103 @@ +:root { + --alert-radius: var(--sld-radius-small); + --alert-color-border: var(--sld-color-border); + --alert-color-background: var(--sld-color-background); + --alert-elevation: var(--sld-elevation-4); + --alert-pad: var(--sld-pad-small); + --alert-gap: var(--sld-gap-small); +} + +dialog.alert { + &[open="true"] { + display: none; + } + position: relative; + min-width: 350px; + display: inline-block; + border-radius: var(--alert-radius); + border: 1px solid var(--alert-color-border); + background-color: var(--alert-color-background); + box-shadow: var(--alert-elevation); + overflow: hidden; + padding: 0; +} + +dialog.alert article.dialog-content { + padding: var(--alert-pad); + border-bottom: 4px solid var(--alert-color-border); +} + +dialog.alert article.dialog-content header.header-bar { + display: flex; + align-items: center; + padding: var(--alert-pad-small); + gap: var(--alert-gap-small, 1rem); +} + +dialog.alert article.dialog-content header.header-bar .dot { + display: inline-block; + border: 1px solid var(--alert-color-border); + border-radius: var(--alert-radius); + height: 16px; + width: 4px; + transform: translate(-50%, 0); +} + +dialog.alert article.dialog-content header.header-bar .title { + flex: 1; + display: flex; + align-items: center; +} + +dialog.alert article.dialog-content header.header-bar [data-close] { + border-radius: var(--alert-radius); + margin: 0.25rem; + padding: 0.25rem; +} + +dialog.alert article.dialog-content footer.dialog-footer { + display: flex; + justify-content: flex-end; + padding: var(--alert-pad); + border-top: 1px solid var(--alert-color-border); +} + +dialog.alert article.dialog-content footer.dialog-footer button { + margin-left: 1rem; +} + +.bg-themed-scheme-discrete { + color: black; + text-shadow: 0 0 0.125rem #b3b3b3; + background-color: #ccc; +} + +.bg-themed-scheme-success { + color: white; + text-shadow: 0 0 0.125rem #004d00; + background-color: green; +} + +.bg-themed-scheme-info { + color: black; + text-shadow: 0 0 0.125rem #ffd324; + background-color: #ffdd57; +} + +.bg-themed-scheme-warning { + color: black; + text-shadow: 0 0 0.125rem #b49104; + background-color: #e6b905; +} + +.bg-themed-scheme-alert { + color: black; + text-shadow: 0 0 0.125rem #cc5c00; + background-color: #ff7300; +} + +.bg-themed-scheme-error { + color: white; + text-shadow: 0 0 0.125rem #cc0000; + background-color: red; +} diff --git a/packages/idae-slotui/src/lib/base/alert/index.ts b/packages/idae-slotui/src/lib/base/alert/index.ts new file mode 100644 index 000000000..4410526e7 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/alert/index.ts @@ -0,0 +1,19 @@ +import AlertRoot from "./Alert.svelte"; +import AlertButtonClose from "./AlertButtonClose.svelte"; +import AlertButtonZone from "./AlertButtonZone.svelte"; +import AlertMessage from "./AlertMessage.svelte"; +import AlertTopButton from "./AlertTopButton.svelte"; + +export { + AlertRoot, + AlertButtonClose, + AlertButtonZone, + AlertMessage, + AlertTopButton, + // + AlertRoot as Alert, + AlertButtonClose as ButtonClose, + AlertButtonZone as ButtonZone, + AlertMessage as Message, + AlertTopButton as TopButton +}; diff --git a/packages/idae-slotui/src/lib/base/avatar/Avatar.demo.svelte b/packages/idae-slotui/src/lib/base/avatar/Avatar.demo.svelte index cc054321c..b6a1b5f7d 100644 --- a/packages/idae-slotui/src/lib/base/avatar/Avatar.demo.svelte +++ b/packages/idae-slotui/src/lib/base/avatar/Avatar.demo.svelte @@ -1,7 +1,7 @@ - + diff --git a/packages/idae-slotui/src/lib/base/avatar/Avatar.svelte b/packages/idae-slotui/src/lib/base/avatar/Avatar.svelte index 842e06b97..74124143f 100644 --- a/packages/idae-slotui/src/lib/base/avatar/Avatar.svelte +++ b/packages/idae-slotui/src/lib/base/avatar/Avatar.svelte @@ -1,6 +1,9 @@ + + + +{#snippet avatarBadge()} + {@render children?.()} +{/snippet} + diff --git a/packages/idae-slotui/src/lib/base/avatar/avatar.css b/packages/idae-slotui/src/lib/base/avatar/avatar.css new file mode 100644 index 000000000..aee8c3621 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/avatar/avatar.css @@ -0,0 +1,29 @@ +:root { + --avatar-radius: var(--sld-radius-round); + --avatar-size: var(--sld-size-avatar); + --avatar-border: var(--sld-color-border); + --avatar-bg: var(--sld-color-background); +} + +.avatar { + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: var(--avatar-radius); + width: var(--avatar-size); + height: var(--avatar-size); + border: 2px solid var(--avatar-border); + background-color: var(--avatar-bg); + overflow: hidden; +} +.avatar img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: var(--avatar-radius); +} +.avatar .initials { + font-weight: bold; + color: var(--sld-color-text); + font-size: calc(var(--avatar-size) * 0.4); +} diff --git a/packages/idae-slotui/src/lib/base/avatar/index.ts b/packages/idae-slotui/src/lib/base/avatar/index.ts new file mode 100644 index 000000000..ad3334c57 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/avatar/index.ts @@ -0,0 +1,10 @@ +import AvatarRoot from "./Avatar.svelte"; +import AvatarBadge from "./AvatarBadge.svelte"; + +export { + AvatarRoot, + AvatarBadge, + // + AvatarRoot as Avatar, + AvatarBadge as Badge +}; diff --git a/packages/idae-slotui/src/lib/base/backdrop/Backdrop.demo.svelte b/packages/idae-slotui/src/lib/base/backdrop/Backdrop.demo.svelte index e46ffce36..2bcc4c8c2 100644 --- a/packages/idae-slotui/src/lib/base/backdrop/Backdrop.demo.svelte +++ b/packages/idae-slotui/src/lib/base/backdrop/Backdrop.demo.svelte @@ -1,7 +1,7 @@ -
+
{#snippet children({ activeParams })} @@ -38,7 +38,7 @@ {...activeParams} >
-
some content
+
some content
diff --git a/packages/idae-slotui/src/lib/base/backdrop/Backdrop.svelte b/packages/idae-slotui/src/lib/base/backdrop/Backdrop.svelte index 39dd90d8a..8cfbe0186 100644 --- a/packages/idae-slotui/src/lib/base/backdrop/Backdrop.svelte +++ b/packages/idae-slotui/src/lib/base/backdrop/Backdrop.svelte @@ -43,8 +43,7 @@ export interface BackdropProps extends CommonProps { } +/** Component for rendering the `backdropLoading` slot */ +export let backdropLoading: Snippet; +const dispatch = createEventDispatcher(); + {#if isOpen}
extends CommonProps {
{/if} - diff --git a/packages/idae-slotui/src/lib/base/backdrop/BackdropLoading.svelte b/packages/idae-slotui/src/lib/base/backdrop/BackdropLoading.svelte new file mode 100644 index 000000000..dd02dbb9e --- /dev/null +++ b/packages/idae-slotui/src/lib/base/backdrop/BackdropLoading.svelte @@ -0,0 +1,13 @@ + + + + + +{#snippet backdropLoading()} + {@render children?.()} +{/snippet} + diff --git a/packages/idae-slotui/src/lib/base/backdrop/backdrop.css b/packages/idae-slotui/src/lib/base/backdrop/backdrop.css new file mode 100644 index 000000000..781736b7a --- /dev/null +++ b/packages/idae-slotui/src/lib/base/backdrop/backdrop.css @@ -0,0 +1,36 @@ +:root { + --backdrop-background-color: var(--sld-color-foreground-alpha-high); +} + +.backdrop { + z-index: 10000; + height: 100%; + width: 100%; + top: 0; + left: 0; +} + +.backdrop-content { + z-index: 10001; + position: absolute; + height: 100%; + width: 100%; + background-color: var(--backdrop-background-color); + backdrop-filter: blur(5px); + --webkit-backdrop-filter: blur(5px); + --moz-backdrop-filter: blur(5px); + display: flex; + align-items: center; + justify-content: center; +} + +.backdrop-content-loader { + display: flex; + justify-content: center; + align-content: center; + align-items: center; +} + +.backdrop-content-inner { + display: inherit; +} diff --git a/packages/idae-slotui/src/lib/base/backdrop/index.ts b/packages/idae-slotui/src/lib/base/backdrop/index.ts new file mode 100644 index 000000000..bc4b1ed56 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/backdrop/index.ts @@ -0,0 +1,10 @@ +import BackdropRoot from "./Backdrop.svelte"; +import BackdropLoading from "./BackdropLoading.svelte"; + +export { + BackdropRoot, + BackdropLoading, + // + BackdropRoot as Backdrop, + BackdropLoading as Loading +}; diff --git a/packages/idae-slotui/src/lib/base/badge/Badge.svelte b/packages/idae-slotui/src/lib/base/badge/Badge.svelte index fe6ed30d0..540875a7f 100644 --- a/packages/idae-slotui/src/lib/base/badge/Badge.svelte +++ b/packages/idae-slotui/src/lib/base/badge/Badge.svelte @@ -47,6 +47,7 @@ export interface BadgeProps extends CommonProps {
{/if} - diff --git a/packages/idae-slotui/src/lib/base/badge/badge.css b/packages/idae-slotui/src/lib/base/badge/badge.css new file mode 100644 index 000000000..abd4753e9 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/badge/badge.css @@ -0,0 +1,22 @@ +:root { + --badge-radius: var(--sld-radius-pill); + --badge-bg: var(--sld-color-badge-bg); + --badge-color: var(--sld-color-badge-text); + --badge-padding: 0.25em 0.75em; + --badge-font-size: 0.85em; + --badge-color-border: var(--sld-color-border); +} + +.badge { + position: absolute; + border-radius: 50%; + border: 1px solid var(--badge-color-border); + display: grid; + place-items: center; + width: 16px; + height: 16px; +} + +.badge .hidden { + transform: scale(0, 0); +} diff --git a/packages/idae-slotui/src/lib/base/badge/index.ts b/packages/idae-slotui/src/lib/base/badge/index.ts new file mode 100644 index 000000000..4642c96d7 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/badge/index.ts @@ -0,0 +1,2 @@ +import Badge from "./Badge.svelte"; +export { Badge }; diff --git a/packages/idae-slotui/src/lib/base/box/Box.demo.svelte b/packages/idae-slotui/src/lib/base/box/Box.demo.svelte index dcd793b4f..a34a48012 100644 --- a/packages/idae-slotui/src/lib/base/box/Box.demo.svelte +++ b/packages/idae-slotui/src/lib/base/box/Box.demo.svelte @@ -2,8 +2,8 @@ import Box from './Box.svelte'; import Icon from '$lib/base/icon/Icon.svelte'; import ComponentDemo from '$lib/base/demoer/DemoerComponent.svelte'; - import Demoer from '$lib/base/demoer/Demoer.svelte'; - import DemoPage from '$lib/base/demoer/DemoPage.svelte'; + import Demoer from '$lib/base/demoer/DemoerContent.svelte'; + import DemoPage from '$lib/base/demoer/Demoer.svelte'; import { BoxDemoValues } from './types.js'; import { defaultsArgs } from '$lib/base/demoer/demoer.utils.js'; @@ -18,10 +18,10 @@ {/snippet} {#snippet boxBottomZone()} -
bottom zoone
+
bottom zoone
{/snippet} {#snippet children()} -
Content of the box
+
Content of the box
{/snippet} `; @@ -29,7 +29,7 @@
+ >
{#snippet children({ activeParams })} @@ -41,10 +41,10 @@ {/snippet} {#snippet boxBottomZone()} -
bottom zoone
+
bottom zoone
{/snippet} {#snippet children()} -
Content of the box
+
Content of the box
{/snippet} {/snippet} diff --git a/packages/idae-slotui/src/lib/base/box/Box.svelte b/packages/idae-slotui/src/lib/base/box/Box.svelte index 8b8711bd6..4254e3c26 100644 --- a/packages/idae-slotui/src/lib/base/box/Box.svelte +++ b/packages/idae-slotui/src/lib/base/box/Box.svelte @@ -40,7 +40,10 @@ export interface BoxProps extends CommonProps { import Slotted from '$lib/utils/slotted/Slotted.svelte'; import type { ExpandProps } from '$lib/types/index.js'; import Content from '$lib/utils/content/Content.svelte'; + import { createEventDispatcher } from 'svelte'; + + /** box actions */ export const actions = { open, @@ -104,6 +107,24 @@ export interface BoxProps extends CommonProps { {/if} - + + + + + + + + diff --git a/packages/idae-slotui/src/lib/base/box/BoxBottomZone.svelte b/packages/idae-slotui/src/lib/base/box/BoxBottomZone.svelte new file mode 100644 index 000000000..3785abaca --- /dev/null +++ b/packages/idae-slotui/src/lib/base/box/BoxBottomZone.svelte @@ -0,0 +1,13 @@ + + + + + +{#snippet boxBottomZone()} + {@render children?.()} +{/snippet} + diff --git a/packages/idae-slotui/src/lib/base/box/TitleBarIcon.svelte b/packages/idae-slotui/src/lib/base/box/TitleBarIcon.svelte new file mode 100644 index 000000000..e8a984f73 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/box/TitleBarIcon.svelte @@ -0,0 +1,13 @@ + + + + + +{#snippet titleBarIcon()} + {@render children?.()} +{/snippet} + diff --git a/packages/idae-slotui/src/lib/base/box/TitleBarTitle.svelte b/packages/idae-slotui/src/lib/base/box/TitleBarTitle.svelte new file mode 100644 index 000000000..81a008a19 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/box/TitleBarTitle.svelte @@ -0,0 +1,13 @@ + + + + + +{#snippet titleBarTitle()} + {@render children?.()} +{/snippet} + diff --git a/packages/idae-slotui/src/lib/base/box/box.css b/packages/idae-slotui/src/lib/base/box/box.css new file mode 100644 index 000000000..79c48e1f5 --- /dev/null +++ b/packages/idae-slotui/src/lib/base/box/box.css @@ -0,0 +1,31 @@ +:root { + --box-color-background: var(--sld-color-background); + --box-border-bottom: var(--sld-color-primary); + --box-radius: var(--sld-radius-small); + --box-elevation: var(--sld-elevation-3); + --box-gap: var(--sld-gap-tiny); + --box-pad: var(--sld-pad-small); +} + +.box { + min-height: 160px; + min-width: 320px; + background-color: var(--box-color-background); + border-bottom: 1px solid var(--box-border-bottom); + border-radius: var(--box-radius); + box-shadow: var(--box-elevation); + display: flex; + flex-direction: column; +} + +.box-content { + flex: 1; +} + +.box-button-zone { + display: flex; + gap: var(--box-gap); + padding: var(--box-pad); + text-align: right; + justify-content: end; +} diff --git a/packages/idae-slotui/src/lib/base/box/index.ts b/packages/idae-slotui/src/lib/base/box/index.ts new file mode 100644 index 000000000..b02ef2c7e --- /dev/null +++ b/packages/idae-slotui/src/lib/base/box/index.ts @@ -0,0 +1,16 @@ +import BoxRoot from "./Box.svelte"; +import BoxBottomZone from "./BoxBottomZone.svelte"; +import TitleBarIcon from "./TitleBarIcon.svelte"; +import TitleBarTitle from "./TitleBarTitle.svelte"; + +export { + BoxRoot, + BoxBottomZone, + TitleBarIcon, + TitleBarTitle, + // + BoxRoot as Box, + BoxBottomZone as BottomZone, + TitleBarIcon as BarIcon, + TitleBarTitle as BarTitle +}; diff --git a/packages/idae-slotui/src/lib/base/breadCrumb/BreadCrumb.svelte b/packages/idae-slotui/src/lib/base/breadCrumb/BreadCrumb.svelte index 3320bb002..6cb506791 100644 --- a/packages/idae-slotui/src/lib/base/breadCrumb/BreadCrumb.svelte +++ b/packages/idae-slotui/src/lib/base/breadCrumb/BreadCrumb.svelte @@ -55,14 +55,15 @@ export interface BreadCrumbProps extends CommonProps { }: ExpandProps = $props(); -
@@ -87,7 +87,7 @@ openWindow("html", { componentProps: { some: "props", someother: "deprops" }, contentHTML: - '
some html content
', + '
some html content
', }); }}> Window with html content @@ -108,7 +108,7 @@ component="Panel" cite="If you can slide, then there are chances you are a panel
C. Quin 2013" > -
+
{#snippet children({ activeParams })} @@ -121,7 +121,7 @@
Some
{/snippet} {#snippet panelGridZoom()} -
Some large
+
Some large
{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/panel/Panel.svelte b/packages/idae-slotui/src/lib/ui/panel/Panel.svelte index 959508964..4e69a3a94 100644 --- a/packages/idae-slotui/src/lib/ui/panel/Panel.svelte +++ b/packages/idae-slotui/src/lib/ui/panel/Panel.svelte @@ -145,6 +145,7 @@ export type PanelProps = {
- diff --git a/packages/idae-slotui/src/lib/ui/panel/PanelButtonNext.svelte b/packages/idae-slotui/src/lib/ui/panel/PanelButtonNext.svelte new file mode 100644 index 000000000..729d4cdef --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/panel/PanelButtonNext.svelte @@ -0,0 +1,14 @@ + + + + + +{#snippet PanelButtonNext()} + {@render children?.()} +{/snippet} + + diff --git a/packages/idae-slotui/src/lib/ui/panel/PanelButtonPrevious.svelte b/packages/idae-slotui/src/lib/ui/panel/PanelButtonPrevious.svelte new file mode 100644 index 000000000..f232ed73c --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/panel/PanelButtonPrevious.svelte @@ -0,0 +1,13 @@ + + + + + +{#snippet PanelButtonPrevious()} + {@render children?.()} +{/snippet} + diff --git a/packages/idae-slotui/src/lib/ui/panel/PanelGrid.svelte b/packages/idae-slotui/src/lib/ui/panel/PanelGrid.svelte index 59f632f9b..566398d20 100644 --- a/packages/idae-slotui/src/lib/ui/panel/PanelGrid.svelte +++ b/packages/idae-slotui/src/lib/ui/panel/PanelGrid.svelte @@ -59,7 +59,8 @@ {/if} {/if} - diff --git a/packages/idae-slotui/src/lib/ui/panel/index.ts b/packages/idae-slotui/src/lib/ui/panel/index.ts new file mode 100644 index 000000000..3d5ee485e --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/panel/index.ts @@ -0,0 +1,25 @@ +import PanelRoot from "./Panel.svelte"; +import PanelButtonNext from "./PanelButtonNext.svelte"; +import PanelButtonPrevious from "./PanelButtonPrevious.svelte"; +import Paneler from "./Paneler.svelte"; +import PanelGrid from "./PanelGrid.svelte"; +import PanelGridZoom from "./PanelGridZoom.svelte"; +import PanelSlide from "./PanelSlide.svelte"; + +export { + PanelRoot, + PanelButtonNext, + PanelButtonPrevious, + Paneler, + PanelGrid, + PanelGridZoom, + PanelSlide, + // + PanelRoot as Panel, + PanelButtonNext as ButtonNext, + PanelButtonPrevious as ButtonPrevious, + Paneler as Er, + PanelGrid as Grid, + PanelGridZoom as GridZoom, + PanelSlide as Slide +}; diff --git a/packages/idae-slotui/src/lib/ui/panel/panel.css b/packages/idae-slotui/src/lib/ui/panel/panel.css new file mode 100644 index 000000000..0a62929bd --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/panel/panel.css @@ -0,0 +1,31 @@ + +:root { + --panel-margin-bottom: 2rem; + --panel-bar-margin-bottom: 2rem; + --panel-bar-padding-right: var(--sld-pad-tiny); + --panel-bar-button-padding: 0 var(--sld-pad-tiny); + --panel-bar-button-border: 1px solid rgba(255, 255, 255, 0.05); + --panel-bar-button-background-color: rgba(255, 255, 255, 0.1); +} + +.panel { + position: relative; + margin-bottom: var(--panel-margin-bottom); + + & .panel-bar { + margin-bottom: var(--panel-bar-margin-bottom); + display: flex; + min-width: auto; + align-items: center; + padding-right: var(--panel-bar-padding-right); + + button { + padding: var(--panel-bar-button-padding); + border: var(--panel-bar-button-border); + background-color: var(--panel-bar-button-background-color); + } + } + + & .panel-content { + } +} diff --git a/packages/idae-slotui/src/lib/ui/popper/Popper.demo.svelte b/packages/idae-slotui/src/lib/ui/popper/Popper.demo.svelte index 1f60bf97d..d7b93749e 100644 --- a/packages/idae-slotui/src/lib/ui/popper/Popper.demo.svelte +++ b/packages/idae-slotui/src/lib/ui/popper/Popper.demo.svelte @@ -4,8 +4,8 @@ /* demo */ import { defaultsArgs, defaultsArgsFromProps } from '$lib/base/demoer/demoer.utils.js'; import ComponentDemo from '$lib/base/demoer/DemoerComponent.svelte'; - import Demoer from '$lib/base/demoer/Demoer.svelte'; - import DemoPage from '$lib/base/demoer/DemoPage.svelte'; + import Demoer from '$lib/base/demoer/DemoerContent.svelte'; + import DemoPage from '$lib/base/demoer/Demoer.svelte'; import { uiPresets } from '$lib/utils/engine/presets.js'; /* demo */ @@ -36,7 +36,7 @@ popper {/snippet} -
Popper content
+
Popper content
`; let codeProps = ` @@ -57,7 +57,7 @@ -
+
{#snippet children({ activeParams })} @@ -67,7 +67,7 @@ position="BC" anchor="popper" {...activeParams} - class="w-large marg-t-1" + class="w-large m-t-1" > {#snippet popperHolder()}
{/if} - + diff --git a/packages/idae-slotui/src/lib/ui/preview/PreviewZoom.svelte b/packages/idae-slotui/src/lib/ui/preview/PreviewZoom.svelte new file mode 100644 index 000000000..ff38baef6 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/preview/PreviewZoom.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet PreviewZoom()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/preview/index.ts b/packages/idae-slotui/src/lib/ui/preview/index.ts new file mode 100644 index 000000000..1ba3cfd99 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/preview/index.ts @@ -0,0 +1,10 @@ +import PreviewRoot from "./Preview.svelte"; +import PreviewZoom from "./PreviewZoom.svelte"; + +export { + PreviewRoot, + PreviewZoom, + // + PreviewRoot as Preview, + PreviewZoom as Zoom +}; diff --git a/packages/idae-slotui/src/lib/ui/serviceBox/ServiceBox.svelte b/packages/idae-slotui/src/lib/ui/serviceBox/ServiceBox.svelte index 054ddb23a..6537327a8 100644 --- a/packages/idae-slotui/src/lib/ui/serviceBox/ServiceBox.svelte +++ b/packages/idae-slotui/src/lib/ui/serviceBox/ServiceBox.svelte @@ -1,6 +1,6 @@ + + + +{#snippet TaskBarLeft()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/taskbar/TaskBarRight.svelte b/packages/idae-slotui/src/lib/ui/taskbar/TaskBarRight.svelte new file mode 100644 index 000000000..26197a69d --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/taskbar/TaskBarRight.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet TaskBarRight()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/taskbar/Taskbar.svelte b/packages/idae-slotui/src/lib/ui/taskbar/Taskbar.svelte index 50bc46fe6..d8cf17689 100644 --- a/packages/idae-slotui/src/lib/ui/taskbar/Taskbar.svelte +++ b/packages/idae-slotui/src/lib/ui/taskbar/Taskbar.svelte @@ -40,6 +40,7 @@ export type TaskbarProps = CommonProps & {
- diff --git a/packages/idae-slotui/src/lib/ui/taskbar/index.ts b/packages/idae-slotui/src/lib/ui/taskbar/index.ts new file mode 100644 index 000000000..a12e8a477 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/taskbar/index.ts @@ -0,0 +1,16 @@ +import TaskbarRoot from "./Taskbar.svelte"; +import TaskBarContent from "./TaskBarContent.svelte"; +import TaskBarLeft from "./TaskBarLeft.svelte"; +import TaskBarRight from "./TaskBarRight.svelte"; + +export { + TaskbarRoot, + TaskBarContent, + TaskBarLeft, + TaskBarRight, + // + TaskbarRoot as Taskbar, + TaskBarContent as BarContent, + TaskBarLeft as BarLeft, + TaskBarRight as BarRight +}; diff --git a/packages/idae-slotui/src/lib/ui/taskbar/taskbar.css b/packages/idae-slotui/src/lib/ui/taskbar/taskbar.css new file mode 100644 index 000000000..f45d2614a --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/taskbar/taskbar.css @@ -0,0 +1,27 @@ + +:root { + --taskbar-grid-gap: var(--sld-gap-tiny); + --taskbar-background-color: rgba(255, 255, 255, 0.5); + --taskbar-backdrop-filter: blur(20px); + --taskbar-min-height: 48px; + --taskbar-border-bottom: rgba(255, 255, 255, 0.2); + --taskbar-box-shadow: var(--sld-elevation-3); +} + +.taskbar { + display: flex; + align-items: center; + grid-gap: var(--taskbar-grid-gap); + background-size: auto; + background-color: var(--taskbar-background-color); + --moz-backdrop-filter: var(--taskbar-backdrop-filter); + backdrop-filter: var(--taskbar-backdrop-filter); + min-height: var(--taskbar-min-height); + border-bottom: 1px solid var(--taskbar-border-bottom); + box-shadow: var(--taskbar-box-shadow); + box-sizing: border-box; + + &-main { + flex: 1; + } +} diff --git a/packages/idae-slotui/src/lib/ui/themeswitcher/ThemeSwitcher.svelte b/packages/idae-slotui/src/lib/ui/themeswitcher/ThemeSwitcher.svelte index 3bc432373..3681c7a8e 100644 --- a/packages/idae-slotui/src/lib/ui/themeswitcher/ThemeSwitcher.svelte +++ b/packages/idae-slotui/src/lib/ui/themeswitcher/ThemeSwitcher.svelte @@ -1,5 +1,5 @@ + + - diff --git a/packages/idae-slotui/src/lib/ui/toast/Toaster.svelte b/packages/idae-slotui/src/lib/ui/toast/Toaster.svelte index de6ed4371..f61e95b14 100644 --- a/packages/idae-slotui/src/lib/ui/toast/Toaster.svelte +++ b/packages/idae-slotui/src/lib/ui/toast/Toaster.svelte @@ -10,7 +10,7 @@ called automatically
diff --git a/packages/idae-slotui/src/lib/ui/toast/index.ts b/packages/idae-slotui/src/lib/ui/toast/index.ts new file mode 100644 index 000000000..098d5bf34 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toast/index.ts @@ -0,0 +1,10 @@ +import ToastRoot from "./Toast.svelte"; +import Toaster from "./Toaster.svelte"; + +export { + ToastRoot, + Toaster, + // + ToastRoot as Toast, + Toaster as Er +}; diff --git a/packages/idae-slotui/src/lib/slotui-css/slotui-mixins.css b/packages/idae-slotui/src/lib/ui/toast/toast.css similarity index 100% rename from packages/idae-slotui/src/lib/slotui-css/slotui-mixins.css rename to packages/idae-slotui/src/lib/ui/toast/toast.css diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/ContentSwitcherIcon.svelte b/packages/idae-slotui/src/lib/ui/toggleBar/ContentSwitcherIcon.svelte new file mode 100644 index 000000000..b8d162a04 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toggleBar/ContentSwitcherIcon.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet contentSwitcherIcon()} + {@render children?.()} +{/snippet} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/ContentSwitcherReveal.svelte b/packages/idae-slotui/src/lib/ui/toggleBar/ContentSwitcherReveal.svelte new file mode 100644 index 000000000..9c6fab6f9 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toggleBar/ContentSwitcherReveal.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet contentSwitcherReveal()} + {@render children?.()} +{/snippet} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBar.demo.svelte b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBar.demo.svelte index bf842787a..d5695c61f 100644 --- a/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBar.demo.svelte +++ b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBar.demo.svelte @@ -5,8 +5,8 @@ /* demo */ import { defaultsArgs } from '$lib/base/demoer/demoer.utils.js'; import ComponentDemo from '$lib/base/demoer/DemoerComponent.svelte'; - import Demoer from '$lib/base/demoer/Demoer.svelte'; - import DemoPage from '$lib/base/demoer/DemoPage.svelte'; + import Demoer from '$lib/base/demoer/DemoerContent.svelte'; + import DemoPage from '$lib/base/demoer/Demoer.svelte'; import Icon from '$lib/base/icon/Icon.svelte'; import { uiPresets } from '$lib/utils/engine/presets.js'; import Finder from '$lib/data/finder/Finder.svelte'; @@ -86,7 +86,7 @@ -
+
{#snippet children({ activeParams })} diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBar.svelte b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBar.svelte index c20d0bfc8..e14a279f0 100644 --- a/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBar.svelte +++ b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBar.svelte @@ -83,6 +83,7 @@ export type ToggleBarProps = CommonProps & {
- diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarButtons.svelte b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarButtons.svelte new file mode 100644 index 000000000..4a60311cf --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarButtons.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet toggleBarButtons()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarIcon.svelte b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarIcon.svelte new file mode 100644 index 000000000..70d67c63c --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarIcon.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet toggleBarIcon()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarTitle.svelte b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarTitle.svelte new file mode 100644 index 000000000..fbb89d52b --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toggleBar/ToggleBarTitle.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet toggleBarTitle()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/index.ts b/packages/idae-slotui/src/lib/ui/toggleBar/index.ts new file mode 100644 index 000000000..cc479a9f6 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toggleBar/index.ts @@ -0,0 +1,22 @@ +import ToggleBarRoot from "./ToggleBar.svelte"; +import ContentSwitcherIcon from "./ContentSwitcherIcon.svelte"; +import ContentSwitcherReveal from "./ContentSwitcherReveal.svelte"; +import ToggleBarButtons from "./ToggleBarButtons.svelte"; +import ToggleBarIcon from "./ToggleBarIcon.svelte"; +import ToggleBarTitle from "./ToggleBarTitle.svelte"; + +export { + ToggleBarRoot, + ContentSwitcherIcon, + ContentSwitcherReveal, + ToggleBarButtons, + ToggleBarIcon, + ToggleBarTitle, + // + ToggleBarRoot as ToggleBar, + ContentSwitcherIcon as SwitcherIcon, + ContentSwitcherReveal as SwitcherReveal, + ToggleBarButtons as Buttons, + ToggleBarIcon as Icon, + ToggleBarTitle as Title +}; diff --git a/packages/idae-slotui/src/lib/ui/toggleBar/toggle-bar.css b/packages/idae-slotui/src/lib/ui/toggleBar/toggle-bar.css new file mode 100644 index 000000000..5f9bfdb23 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toggleBar/toggle-bar.css @@ -0,0 +1,19 @@ +:root { + --toggle-bar-padding: var(--sld-commandbar-padding, var(--box-density-1)); + --toggle-bar-border-bottom: var(--sld-topbar-border-bottom-color, var(--sld-color-border)); + --toggle-bar-gap: var(--sld-commandbar-gap, var(--sld-pad-tiny)); + --toggle-bar-icon-padding: var(--sld-pad-medium); + --toggle-bar-title-font-weight: 500; + --toggle-bar-title-content-font-size: 18px; +} + +.toggle-bar { + padding: var(--toggle-bar-padding); + display: flex; + border-bottom: var(--toggle-bar-border-bottom); + width: 100%; + max-width: 100%; + min-width: auto; + position: relative; + gap: var(--toggle-bar-gap); +} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/ui/toolBar/ToolBar.demo.svelte b/packages/idae-slotui/src/lib/ui/toolBar/ToolBar.demo.svelte index 03033f117..b7d02102f 100644 --- a/packages/idae-slotui/src/lib/ui/toolBar/ToolBar.demo.svelte +++ b/packages/idae-slotui/src/lib/ui/toolBar/ToolBar.demo.svelte @@ -4,8 +4,8 @@ /* demo */ import { defaultsArgs } from '$lib/base/demoer/demoer.utils.js'; import ComponentDemo from '$lib/base/demoer/DemoerComponent.svelte'; - import Demoer from '$lib/base/demoer/Demoer.svelte'; - import DemoPage from '$lib/base/demoer/DemoPage.svelte'; + import Demoer from '$lib/base/demoer/DemoerContent.svelte'; + import DemoPage from '$lib/base/demoer/Demoer.svelte'; /* demo */ let parametersSlot: any = { @@ -57,7 +57,7 @@ openWindow("html", { componentProps: { some: "props", someother: "deprops" }, contentHTML: - '
some html content
', + '
some html content
', }); }}> Window with html content @@ -78,11 +78,11 @@ component="ToolBar" cite="Way more than putting tools in a bar : having them in a toolbar !
Quead Jones, 450" > -
+
{#snippet children({ activeParams })} -
+
item 1 item 2 diff --git a/packages/idae-slotui/src/lib/ui/toolBar/ToolBar.svelte b/packages/idae-slotui/src/lib/ui/toolBar/ToolBar.svelte index ae1ce7cd6..a7f1b6959 100644 --- a/packages/idae-slotui/src/lib/ui/toolBar/ToolBar.svelte +++ b/packages/idae-slotui/src/lib/ui/toolBar/ToolBar.svelte @@ -42,6 +42,7 @@ export type ToolBarProps = CommonProps & {
- diff --git a/packages/idae-slotui/src/lib/ui/toolBar/ToolbarSeparator.svelte b/packages/idae-slotui/src/lib/ui/toolBar/ToolbarSeparator.svelte new file mode 100644 index 000000000..cdf6c2406 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toolBar/ToolbarSeparator.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet toolbarSeparator()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/toolBar/index.ts b/packages/idae-slotui/src/lib/ui/toolBar/index.ts new file mode 100644 index 000000000..43bd1cf26 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toolBar/index.ts @@ -0,0 +1,10 @@ +import ToolBarRoot from "./ToolBar.svelte"; +import ToolbarSeparator from "./ToolbarSeparator.svelte"; + +export { + ToolBarRoot, + ToolbarSeparator, + // + ToolBarRoot as ToolBar, + ToolbarSeparator as Separator +}; diff --git a/packages/idae-slotui/src/lib/ui/toolBar/toolbar.css b/packages/idae-slotui/src/lib/ui/toolBar/toolbar.css new file mode 100644 index 000000000..51ddf130a --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/toolBar/toolbar.css @@ -0,0 +1,16 @@ +:root { + --toolbar-padding: var(--sld-toolbar-padding, var(--box-density-1, var(--sld-pad-tiny))); + --toolbar-gap: var(--sld-pad-tiny); + --toolbar-divider-border: 1px solid red; + --toolbar-divider-height: 1rem; + --toolbar-vertical-divider-border: 1px solid green; + --toolbar-vertical-divider-width: 1rem; +} + +.toolbar { + display: flex; + flex-direction: row; + align-items: center; + padding: var(--toolbar-padding); + gap: var(--toolbar-gap); +} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/ui/tree/Tree.demo.svelte b/packages/idae-slotui/src/lib/ui/tree/Tree.demo.svelte index 137113c22..4126fee38 100644 --- a/packages/idae-slotui/src/lib/ui/tree/Tree.demo.svelte +++ b/packages/idae-slotui/src/lib/ui/tree/Tree.demo.svelte @@ -3,8 +3,8 @@ /* demo */ import ComponentDemo from '$lib/base/demoer/DemoerComponent.svelte'; - import DemoPage from '$lib/base/demoer/DemoPage.svelte'; - import Demoer from '$lib/base/demoer/Demoer.svelte'; + import DemoPage from '$lib/base/demoer/Demoer.svelte'; + import Demoer from '$lib/base/demoer/DemoerContent.svelte'; import { defaultsArgsFromProps } from '$lib/base/demoer/demoer.utils.js'; /* demo */ @@ -61,7 +61,7 @@ cite="We were looking for leaves and we found trees
B. Esein, 1354" component="Tree" > -
+
{#snippet children({ activeParams })} diff --git a/packages/idae-slotui/src/lib/ui/tree/Tree.preview.svelte b/packages/idae-slotui/src/lib/ui/tree/Tree.preview.svelte index d457bec72..266a03b01 100644 --- a/packages/idae-slotui/src/lib/ui/tree/Tree.preview.svelte +++ b/packages/idae-slotui/src/lib/ui/tree/Tree.preview.svelte @@ -14,6 +14,6 @@ let selectedData: any[] = []; -
+
diff --git a/packages/idae-slotui/src/lib/ui/tree/Tree.svelte b/packages/idae-slotui/src/lib/ui/tree/Tree.svelte index 263291282..8aa5b8760 100644 --- a/packages/idae-slotui/src/lib/ui/tree/Tree.svelte +++ b/packages/idae-slotui/src/lib/ui/tree/Tree.svelte @@ -1,4 +1,3 @@ - + + + +{#snippet windowButtonZone()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/window/WindowIcon.svelte b/packages/idae-slotui/src/lib/ui/window/WindowIcon.svelte new file mode 100644 index 000000000..34d51c6d3 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/window/WindowIcon.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet windowIcon()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/ui/window/index.ts b/packages/idae-slotui/src/lib/ui/window/index.ts new file mode 100644 index 000000000..9a76434e0 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/window/index.ts @@ -0,0 +1,13 @@ +import WindowRoot from "./Window.svelte"; +import WindowButtonZone from "./WindowButtonZone.svelte"; +import WindowIcon from "./WindowIcon.svelte"; + +export { + WindowRoot, + WindowButtonZone, + WindowIcon, + // + WindowRoot as Window, + WindowButtonZone as ButtonZone, + WindowIcon as Icon +}; diff --git a/packages/idae-slotui/src/lib/ui/window/window.css b/packages/idae-slotui/src/lib/ui/window/window.css new file mode 100644 index 000000000..db2891c51 --- /dev/null +++ b/packages/idae-slotui/src/lib/ui/window/window.css @@ -0,0 +1,22 @@ +:root { + --window-border-radius: var(--sld-radius-small); + --window-background-color: var(--sld-color-background); + --window-color: var(--sld-color-foreground); + --window-border: 1px solid rgba(255, 255, 255, 0.1); + --window-min-width: 250px; + --window-z-index: 70000; + --window-box-shadow: var(--sld-elevation-1); + --window-active-border: 1px solid var(--sld-color-primary); + --window-active-box-shadow: var(--sld-elevation-3); + --window-header-bar-background-color: var(--sld-color-paper); + --window-header-bar-padding: var(--sld-pad-tiny) 0; + --window-header-bar-icon-padding: unset var(--sld-pad-med); + --window-footer-button-zone-padding: var(--sld-pad-tiny); + --window-footer-button-zone-gap: var(--sld-gap-small); +} + +dialog.window { + border-radius: var(--window-border-radius); + background-color: var(--window-background-color); + color: var(--window-color); +} \ No newline at end of file diff --git a/packages/idae-slotui/src/lib/utils.ts b/packages/idae-slotui/src/lib/utils.ts new file mode 100644 index 000000000..55b3a918e --- /dev/null +++ b/packages/idae-slotui/src/lib/utils.ts @@ -0,0 +1,13 @@ +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type WithoutChild = T extends { child?: any } ? Omit : T; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type WithoutChildren = T extends { children?: any } ? Omit : T; +export type WithoutChildrenOrChild = WithoutChildren>; +export type WithElementRef = T & { ref?: U | null }; diff --git a/packages/idae-slotui/src/lib/utils/content/Content.svelte b/packages/idae-slotui/src/lib/utils/content/Content.svelte index a5db1e431..ac9c3375c 100644 --- a/packages/idae-slotui/src/lib/utils/content/Content.svelte +++ b/packages/idae-slotui/src/lib/utils/content/Content.svelte @@ -75,7 +75,8 @@ {@render children?.()} - + {#snippet cssBlock(color)}
@@ -51,14 +56,8 @@ discrete, success, info, warning, alert, error
elevation 1/5 - + {#snippet children(item)} {@render cssElevation(item)} {/snippet} - - diff --git a/packages/idae-slotui/src/lib/utils/css/css.css b/packages/idae-slotui/src/lib/utils/css/css.css new file mode 100644 index 000000000..497428135 --- /dev/null +++ b/packages/idae-slotui/src/lib/utils/css/css.css @@ -0,0 +1,14 @@ +:root { + --css-radius: var(--sld-radius-medium); + --css-bg: var(--sld-color-background); + --css-border: var(--sld-color-border); + --css-padding: 1rem; +} + +.css { + border-radius: var(--css-radius); + background: var(--css-bg); + border: 1px solid var(--css-border); + padding: var(--css-padding); + font-size: 1em; +} diff --git a/packages/idae-slotui/src/lib/utils/effects/effects.css b/packages/idae-slotui/src/lib/utils/effects/effects.css new file mode 100644 index 000000000..6a65ff6e4 --- /dev/null +++ b/packages/idae-slotui/src/lib/utils/effects/effects.css @@ -0,0 +1,14 @@ +:root { + --effects-radius: var(--sld-radius-medium); + --effects-bg: var(--sld-color-background); + --effects-border: var(--sld-color-border); + --effects-padding: 1rem; +} + +.effects { + border-radius: var(--effects-radius); + background: var(--effects-bg); + border: 1px solid var(--effects-border); + padding: var(--effects-padding); + font-size: 1em; +} diff --git a/packages/idae-slotui/src/lib/utils/engine/engine.css b/packages/idae-slotui/src/lib/utils/engine/engine.css new file mode 100644 index 000000000..849fe4c13 --- /dev/null +++ b/packages/idae-slotui/src/lib/utils/engine/engine.css @@ -0,0 +1,14 @@ +:root { + --engine-radius: var(--sld-radius-medium); + --engine-bg: var(--sld-color-background); + --engine-border: var(--sld-color-border); + --engine-padding: 1rem; +} + +.engine { + border-radius: var(--engine-radius); + background: var(--engine-bg); + border: 1px solid var(--engine-border); + padding: var(--engine-padding); + font-size: 1em; +} diff --git a/packages/idae-slotui/src/lib/utils/looper/LoopGroupTitle.svelte b/packages/idae-slotui/src/lib/utils/looper/LoopGroupTitle.svelte new file mode 100644 index 000000000..db70c85bb --- /dev/null +++ b/packages/idae-slotui/src/lib/utils/looper/LoopGroupTitle.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet loopGroupTitle()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/utils/looper/LoopTitle.svelte b/packages/idae-slotui/src/lib/utils/looper/LoopTitle.svelte new file mode 100644 index 000000000..3adab96bc --- /dev/null +++ b/packages/idae-slotui/src/lib/utils/looper/LoopTitle.svelte @@ -0,0 +1,12 @@ + + + + + +{#snippet loopTitle()} + {@render children?.()} +{/snippet} diff --git a/packages/idae-slotui/src/lib/utils/looper/Looper.demo.svelte b/packages/idae-slotui/src/lib/utils/looper/Looper.demo.svelte index 2f636ba07..6bc309857 100644 --- a/packages/idae-slotui/src/lib/utils/looper/Looper.demo.svelte +++ b/packages/idae-slotui/src/lib/utils/looper/Looper.demo.svelte @@ -1,8 +1,8 @@ + + + +{#snippet Child()} + {@render children?.()} +{/snippet} + diff --git a/packages/idae-slotui/src/lib/utils/slotted/Slotted.svelte b/packages/idae-slotui/src/lib/utils/slotted/Slotted.svelte index e1d66e357..b42f8736f 100644 --- a/packages/idae-slotui/src/lib/utils/slotted/Slotted.svelte +++ b/packages/idae-slotui/src/lib/utils/slotted/Slotted.svelte @@ -10,6 +10,11 @@ let { child, children, slotArgs = $bindable({}) }: SlottedProps = $props(); + + {#if child !== undefined} {#key slotArgs} {@render child(slotArgs)} diff --git a/packages/idae-slotui/src/lib/utils/stylesheet/StyleSheet.svelte b/packages/idae-slotui/src/lib/utils/stylesheet/StyleSheet.svelte index 06085d971..3d4fd342e 100644 --- a/packages/idae-slotui/src/lib/utils/stylesheet/StyleSheet.svelte +++ b/packages/idae-slotui/src/lib/utils/stylesheet/StyleSheet.svelte @@ -58,7 +58,8 @@ export interface SlotUiStyleSheet extends Partial { {castToCssProps(breakpoints)} - diff --git a/packages/idae-slotui/src/routes/+layout.svelte b/packages/idae-slotui/src/routes/+layout.svelte index e3d6cffe3..012c52957 100644 --- a/packages/idae-slotui/src/routes/+layout.svelte +++ b/packages/idae-slotui/src/routes/+layout.svelte @@ -1,13 +1,9 @@ diff --git a/packages/idae-slotui/src/routes/svelte-components/+layout.svelte b/packages/idae-slotui/src/routes/svelte-components/+layout.svelte index ff46b2fd4..f122c43ce 100644 --- a/packages/idae-slotui/src/routes/svelte-components/+layout.svelte +++ b/packages/idae-slotui/src/routes/svelte-components/+layout.svelte @@ -13,6 +13,6 @@ SlotUi component list -
+
diff --git a/packages/idae-slotui/src/routes/svelte-components/+page.svelte b/packages/idae-slotui/src/routes/svelte-components/+page.svelte index 9c6bbff9a..c10206468 100644 --- a/packages/idae-slotui/src/routes/svelte-components/+page.svelte +++ b/packages/idae-slotui/src/routes/svelte-components/+page.svelte @@ -18,7 +18,7 @@ -
+
{#each spliceArray(Object.values(slotuiCatalog), 3) as spliced}
diff --git a/packages/idae-slotui/src/routes/svelte-components/[component]/api/+page.svelte b/packages/idae-slotui/src/routes/svelte-components/[component]/api/+page.svelte index 7e9fa8bf2..785882925 100644 --- a/packages/idae-slotui/src/routes/svelte-components/[component]/api/+page.svelte +++ b/packages/idae-slotui/src/routes/svelte-components/[component]/api/+page.svelte @@ -14,9 +14,9 @@
-
+
Link to examples :
-
+
Component "{data.component}" implementation examples diff --git a/packages/idae-slotui/src/sitedata/slotuiCatalog.d.ts b/packages/idae-slotui/src/sitedata/slotuiCatalog.d.ts deleted file mode 100644 index 294a33817..000000000 --- a/packages/idae-slotui/src/sitedata/slotuiCatalog.d.ts +++ /dev/null @@ -1,260 +0,0 @@ -export declare const slotuiCatalog: { - readonly alert: { - readonly name: 'Alert'; - readonly code: 'alert'; - readonly group: 'base'; - readonly root: 'alert'; - }; - readonly avatar: { - readonly name: 'Avatar'; - readonly code: 'avatar'; - readonly group: 'base'; - readonly root: 'avatar'; - }; - readonly backdrop: { - readonly name: 'Backdrop'; - readonly code: 'backdrop'; - readonly group: 'base'; - readonly root: 'backdrop'; - }; - readonly box: { - readonly name: 'Box'; - readonly code: 'box'; - readonly group: 'base'; - readonly root: 'box'; - }; - readonly cartouche: { - readonly name: 'Cartouche'; - readonly code: 'cartouche'; - readonly group: 'base'; - readonly root: 'cartouche'; - }; - readonly chipper: { - readonly name: 'Chipper'; - readonly code: 'chipper'; - readonly group: 'base'; - readonly root: 'chipper'; - }; - readonly columner: { - readonly name: 'Columner'; - readonly code: 'columner'; - readonly group: 'base'; - readonly root: 'columner'; - }; - readonly contentswitcher: { - readonly name: 'ContentSwitcher'; - readonly code: 'contentswitcher'; - readonly group: 'base'; - readonly root: 'contentSwitcher'; - }; - readonly divider: { - readonly name: 'Divider'; - readonly code: 'divider'; - readonly group: 'base'; - readonly root: 'divider'; - }; - readonly icon: { - readonly name: 'Icon'; - readonly code: 'icon'; - readonly group: 'base'; - readonly root: 'icon'; - }; - readonly paper: { - readonly name: 'Paper'; - readonly code: 'paper'; - readonly group: 'base'; - readonly root: 'paper'; - }; - readonly titlebar: { - readonly name: 'TitleBar'; - readonly code: 'titlebar'; - readonly group: 'base'; - readonly root: 'titleBar'; - }; - readonly autocomplete: { - readonly name: 'AutoComplete'; - readonly code: 'autocomplete'; - readonly group: 'controls'; - readonly root: 'autocomplete'; - }; - readonly button: { - readonly name: 'Button'; - readonly code: 'button'; - readonly group: 'controls'; - readonly root: 'button'; - }; - readonly checkbox: { - readonly name: 'Checkbox'; - readonly code: 'checkbox'; - readonly group: 'controls'; - readonly root: 'checkbox'; - }; - readonly confirm: { - readonly name: 'Confirm'; - readonly code: 'confirm'; - readonly group: 'controls'; - readonly root: 'confirm'; - }; - readonly progress: { - readonly name: 'Progress'; - readonly code: 'progress'; - readonly group: 'controls'; - readonly root: 'progress'; - }; - readonly rating: { - readonly name: 'Rating'; - readonly code: 'rating'; - readonly group: 'controls'; - readonly root: 'rating'; - }; - readonly select: { - readonly name: 'Select'; - readonly code: 'select'; - readonly group: 'controls'; - readonly root: 'select'; - }; - readonly slider: { - readonly name: 'Slider'; - readonly code: 'slider'; - readonly group: 'controls'; - readonly root: 'slider'; - }; - readonly stepper: { - readonly name: 'Stepper'; - readonly code: 'stepper'; - readonly group: 'controls'; - readonly root: 'stepper'; - }; - readonly switch: { - readonly name: 'Switch'; - readonly code: 'switch'; - readonly group: 'controls'; - readonly root: 'switch'; - }; - readonly textfield: { - readonly name: 'TextField'; - readonly code: 'textfield'; - readonly group: 'controls'; - readonly root: 'textfield'; - }; - readonly datalist: { - readonly name: 'DataList'; - readonly code: 'datalist'; - readonly group: 'data'; - readonly root: 'dataList'; - }; - readonly finder: { - readonly name: 'Finder'; - readonly code: 'finder'; - readonly group: 'data'; - readonly root: 'finder'; - }; - readonly grouper: { - readonly name: 'Grouper'; - readonly code: 'grouper'; - readonly group: 'data'; - readonly root: 'grouper'; - }; - readonly loader: { - readonly name: 'Loader'; - readonly code: 'loader'; - readonly group: 'data'; - readonly root: 'loader'; - }; - readonly sorter: { - readonly name: 'Sorter'; - readonly code: 'sorter'; - readonly group: 'data'; - readonly root: 'sorter'; - }; - readonly drawer: { - readonly name: 'Drawer'; - readonly code: 'drawer'; - readonly group: 'navigation'; - readonly root: 'drawer'; - }; - readonly tabs: { - readonly name: 'Tabs'; - readonly code: 'tabs'; - readonly group: 'navigation'; - readonly root: 'tabs'; - }; - readonly frame: { - readonly name: 'Frame'; - readonly code: 'frame'; - readonly group: 'ui'; - readonly root: 'frame'; - }; - readonly login: { - readonly name: 'Login'; - readonly code: 'login'; - readonly group: 'ui'; - readonly root: 'login'; - }; - readonly menulist: { - readonly name: 'MenuList'; - readonly code: 'menulist'; - readonly group: 'ui'; - readonly root: 'menuList'; - }; - readonly panel: { - readonly name: 'Panel'; - readonly code: 'panel'; - readonly group: 'ui'; - readonly root: 'panel'; - }; - readonly popper: { - readonly name: 'Popper'; - readonly code: 'popper'; - readonly group: 'ui'; - readonly root: 'popper'; - }; - readonly toast: { - readonly name: 'Toast'; - readonly code: 'toast'; - readonly group: 'ui'; - readonly root: 'toast'; - }; - readonly togglebar: { - readonly name: 'ToggleBar'; - readonly code: 'togglebar'; - readonly group: 'ui'; - readonly root: 'toggleBar'; - }; - readonly toolbar: { - readonly name: 'ToolBar'; - readonly code: 'toolbar'; - readonly group: 'ui'; - readonly root: 'toolBar'; - }; - readonly tree: { - readonly name: 'Tree'; - readonly code: 'tree'; - readonly group: 'ui'; - readonly root: 'tree'; - }; - readonly window: { - readonly name: 'Window'; - readonly code: 'window'; - readonly group: 'ui'; - readonly root: 'window'; - }; - readonly contextrooter: { - readonly name: 'ContextRooter'; - readonly code: 'contextrooter'; - readonly group: 'utils'; - readonly root: 'contextRooter'; - }; - readonly css: { - readonly name: 'Css'; - readonly code: 'css'; - readonly group: 'utils'; - readonly root: 'css'; - }; - readonly looper: { - readonly name: 'Looper'; - readonly code: 'looper'; - readonly group: 'utils'; - readonly root: 'looper'; - }; -}; diff --git a/packages/idae-slotui/src/sitedata/slotuiComponents.d.ts b/packages/idae-slotui/src/sitedata/slotuiComponents.d.ts index 5edf7ae90..40eb65136 100644 --- a/packages/idae-slotui/src/sitedata/slotuiComponents.d.ts +++ b/packages/idae-slotui/src/sitedata/slotuiComponents.d.ts @@ -6,23 +6,23 @@ export { default as Box } from '$lib/base/box/Box.svelte'; export { default as BreadCrumb } from '$lib/base/breadCrumb/BreadCrumb.svelte'; export { default as Cartouche } from '$lib/base/cartouche/Cartouche.svelte'; export { default as Chipper } from '$lib/base/chipper/Chipper.svelte'; -export { default as Column } from '$lib/base/columner/Column.svelte'; +export { default as Column } from '$lib/base/columner/ColumnerCol.svelte'; export { default as Columner } from '$lib/base/columner/Columner.svelte'; export { default as ContentSwitcher } from '$lib/base/contentSwitcher/ContentSwitcher.svelte'; export { default as Debug } from '$lib/base/debug/Debug.svelte'; -export { default as Demoer } from '$lib/base/demoer/Demoer.svelte'; +export { default as Demoer } from '$lib/base/demoer/DemoerContent.svelte'; export { default as DemoerCode } from '$lib/base/demoer/DemoerCode.svelte'; export { default as DemoerComponent } from '$lib/base/demoer/DemoerComponent.svelte'; -export { default as DemoPage } from '$lib/base/demoer/DemoPage.svelte'; +export { default as DemoPage } from '$lib/base/demoer/Demoer.svelte'; export { default as Divider } from '$lib/base/divider/Divider.svelte'; export { default as Icon } from '$lib/base/icon/Icon.svelte'; export { default as Paper } from '$lib/base/paper/Paper.svelte'; export { default as TitleBar } from '$lib/base/titleBar/TitleBar.svelte'; export { default as AutoComplete } from '$lib/controls/autocomplete/AutoComplete.svelte'; export { default as Button } from '$lib/controls/button/Button.svelte'; -export { default as ButtonAction } from '$lib/controls/button/ButtonAction.svelte'; -export { default as ButtonMenu } from '$lib/controls/button/ButtonMenu.svelte'; -export { default as IconButton } from '$lib/controls/button/IconButton.svelte'; +export { default as ButtonAction } from '$lib/controls/buttonAction/ButtonAction.svelte'; +export { default as ButtonMenu } from '$lib/controls/buttonMenu/ButtonMenu.svelte'; +export { default as IconButton } from '$lib/controls/buttonIcon/ButtonIcon.svelte'; export { default as Checkbox } from '$lib/controls/checkbox/Checkbox.svelte'; export { default as Confirm } from '$lib/controls/confirm/Confirm.svelte'; export { default as Progress } from '$lib/controls/progress/Progress.svelte'; diff --git a/packages/idae-slotui/src/sitedata/slotuiComponents.ts b/packages/idae-slotui/src/sitedata/slotuiComponents.ts index 5edf7ae90..40eb65136 100644 --- a/packages/idae-slotui/src/sitedata/slotuiComponents.ts +++ b/packages/idae-slotui/src/sitedata/slotuiComponents.ts @@ -6,23 +6,23 @@ export { default as Box } from '$lib/base/box/Box.svelte'; export { default as BreadCrumb } from '$lib/base/breadCrumb/BreadCrumb.svelte'; export { default as Cartouche } from '$lib/base/cartouche/Cartouche.svelte'; export { default as Chipper } from '$lib/base/chipper/Chipper.svelte'; -export { default as Column } from '$lib/base/columner/Column.svelte'; +export { default as Column } from '$lib/base/columner/ColumnerCol.svelte'; export { default as Columner } from '$lib/base/columner/Columner.svelte'; export { default as ContentSwitcher } from '$lib/base/contentSwitcher/ContentSwitcher.svelte'; export { default as Debug } from '$lib/base/debug/Debug.svelte'; -export { default as Demoer } from '$lib/base/demoer/Demoer.svelte'; +export { default as Demoer } from '$lib/base/demoer/DemoerContent.svelte'; export { default as DemoerCode } from '$lib/base/demoer/DemoerCode.svelte'; export { default as DemoerComponent } from '$lib/base/demoer/DemoerComponent.svelte'; -export { default as DemoPage } from '$lib/base/demoer/DemoPage.svelte'; +export { default as DemoPage } from '$lib/base/demoer/Demoer.svelte'; export { default as Divider } from '$lib/base/divider/Divider.svelte'; export { default as Icon } from '$lib/base/icon/Icon.svelte'; export { default as Paper } from '$lib/base/paper/Paper.svelte'; export { default as TitleBar } from '$lib/base/titleBar/TitleBar.svelte'; export { default as AutoComplete } from '$lib/controls/autocomplete/AutoComplete.svelte'; export { default as Button } from '$lib/controls/button/Button.svelte'; -export { default as ButtonAction } from '$lib/controls/button/ButtonAction.svelte'; -export { default as ButtonMenu } from '$lib/controls/button/ButtonMenu.svelte'; -export { default as IconButton } from '$lib/controls/button/IconButton.svelte'; +export { default as ButtonAction } from '$lib/controls/buttonAction/ButtonAction.svelte'; +export { default as ButtonMenu } from '$lib/controls/buttonMenu/ButtonMenu.svelte'; +export { default as IconButton } from '$lib/controls/buttonIcon/ButtonIcon.svelte'; export { default as Checkbox } from '$lib/controls/checkbox/Checkbox.svelte'; export { default as Confirm } from '$lib/controls/confirm/Confirm.svelte'; export { default as Progress } from '$lib/controls/progress/Progress.svelte'; diff --git a/packages/idae-slotui/src/styles/main.css b/packages/idae-slotui/src/styles/main.css index 49a450a0a..3cf4d1333 100644 --- a/packages/idae-slotui/src/styles/main.css +++ b/packages/idae-slotui/src/styles/main.css @@ -8,6 +8,9 @@ html { -ms-overflow-style: -ms-autohiding-scrollbar; } +/* SlotUI mixins/utilities for Tailwind */ +@import '../lib/styles/slotui-mixins.css'; + body { height: 100%; max-height: 100%; diff --git a/packages/idae-slotui/src/styles/theme.css b/packages/idae-slotui/src/styles/theme.css new file mode 100644 index 000000000..9d90f20b0 --- /dev/null +++ b/packages/idae-slotui/src/styles/theme.css @@ -0,0 +1,11 @@ +:root { + --color-primary: #98b148; + --color-secondary: #55492b; + --color-tertiary: #9999cc; +} + +.theme-dark { + --color-foreground: #f1f1f1; + --color-background: #27323a; + --color-paper: #3a3b3b; +} diff --git a/packages/idae-slotui/src/tests/docs.test.js b/packages/idae-slotui/src/tests/docs.test.js deleted file mode 100644 index c04557677..000000000 --- a/packages/idae-slotui/src/tests/docs.test.js +++ /dev/null @@ -1,37 +0,0 @@ -import { describe, it, expect } from 'vitest'; -import { DocsProcessor } from '../docs/docs.js'; -import path from 'path'; - -const avatarPath = path.resolve(__dirname, '../../src/lib/base/avatar'); -const alertPath = path.resolve(__dirname, '../../src/lib/base/alert'); - -describe('DocsProcessor', () => { - - it('should extract properties from Alert.svelte', async () => { - const processor = new DocsProcessor(alertPath); - await processor.init(); - const results = await processor.process(); - - expect(results.Alert).toBeDefined(); - expect(results.Alert.level).toEqual({ - name: 'level', - type: 'levels | keyof typeof levels', - optional: true, - jsDoc: 'alert level' - }); - }); - - it('should extract properties from Avatar.svelte', async () => { - const processor = new DocsProcessor(avatarPath); - await processor.init(); - const results = await processor.process(); - - expect(results.Avatar).toBeDefined(); - expect(results.Avatar.icon).toEqual({ - name: 'icon', - type: 'string', - optional: true, - jsDoc: '' - }); - }); -}); \ No newline at end of file diff --git a/packages/idae-slotui/svelte.config.js b/packages/idae-slotui/svelte.config.js index 631523960..4a5fafcfd 100644 --- a/packages/idae-slotui/svelte.config.js +++ b/packages/idae-slotui/svelte.config.js @@ -1,32 +1,16 @@ -import { mdsvex } from 'mdsvex'; import adapter from '@sveltejs/adapter-auto'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; -import mdsvexConfig from './mdsvex.config.js'; -import path from 'path'; +import { sveltePreprocess } from 'svelte-preprocess'; +import { vi } from 'vitest'; const config = { - extensions: ['.svelte', ...mdsvexConfig.extensions], - // for more information about preprocessors - preprocess: [vitePreprocess(), mdsvex(mdsvexConfig)], - + preprocess: sveltePreprocess({ postcss: true }), kit: { adapter: adapter(), - alias: { - $stores: path.resolve('./src/stores'), - $utils: path.resolve('./src/utils'), - $styles: path.resolve('./src/styles'), - $sitedata: path.resolve('./src/sitedata'), - $slotuiDefs: path.resolve('./src/sitedata/slotuiDefs'), - } - }, - vitePlugin: { - // set to true for defaults or customize with object - inspector: { - toggleKeyCombo: 'meta-shift', - showToggleButton: 'always', - toggleButtonPos: 'bottom-right' + alias: { + '$lib': './src/lib', + '$sitedata': './src/sitedata', } - } -}; + } +};vi -export default config; +export default config; \ No newline at end of file diff --git a/packages/idae-slotui/tailwind.config.js b/packages/idae-slotui/tailwind.config.js index 0e1efef45..92bf9e0bf 100644 --- a/packages/idae-slotui/tailwind.config.js +++ b/packages/idae-slotui/tailwind.config.js @@ -4,7 +4,20 @@ module.exports = { './src/**/*.{html,js,svelte,ts}', ], theme: { - extend: {}, + extend: { + colors: { + primary: 'var(--color-primary)', + secondary: 'var(--color-secondary)', + tertiary: 'var(--color-tertiary)', + background: 'var(--color-background)', + foreground: 'var(--color-foreground)', + paper: 'var(--color-paper)', + }, + boxShadow: { + 'slotui-elev-1': 'var(--shadow-elevation1)', + 'slotui-elev-2': 'var(--shadow-elevation2)', + }, + }, }, plugins: [ require('@tailwindcss/forms'), diff --git a/packages/idae-slotui/uno.config.ts b/packages/idae-slotui/uno.config.ts deleted file mode 100644 index 562cf5c8b..000000000 --- a/packages/idae-slotui/uno.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig, presetTypography } from 'unocss'; - -import presetUno from '@unocss/preset-uno'; -import presetMini from '@unocss/preset-mini'; -import presetWind from '@unocss/preset-wind'; - -export default defineConfig({ - presets: [presetWind(), presetMini(), presetUno(), presetTypography()] -}); diff --git a/packages/idae-slotui/vite.config.js b/packages/idae-slotui/vite.config.js index 574aa044a..b8d6675ef 100644 --- a/packages/idae-slotui/vite.config.js +++ b/packages/idae-slotui/vite.config.js @@ -1,10 +1,24 @@ + import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vitest/config'; +import tailwindcss from '@tailwindcss/vite'; export default defineConfig({ - plugins: [sveltekit()], + plugins: [tailwindcss(), sveltekit()], assetsInclude: ['**/*.md'], test: { include: ['src/**/*.{test,spec}.{js,ts}'] - } + }, + resolve: { + alias: { + $lib: './src/lib', + $sitedata: './src/sitedata', + } + }, + optimizeDeps: { + exclude: ['@iconify/svelte'], + }, + ssr: { + noExternal: ['@iconify/svelte'], + }, }); diff --git a/packages/idae-socket/.prettierrc.js b/packages/idae-socket/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-socket/.prettierrc.js +++ b/packages/idae-socket/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-socket/src/.prettierrc.js b/packages/idae-socket/src/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-socket/src/.prettierrc.js +++ b/packages/idae-socket/src/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/idae-socket/src/lib/index.ts b/packages/idae-socket/src/lib/index.ts index f8bd282ea..eaa36b35e 100644 --- a/packages/idae-socket/src/lib/index.ts +++ b/packages/idae-socket/src/lib/index.ts @@ -1,12 +1,12 @@ // auto exports of entry components -export * from './server/socketDriver.js'; -export * from './server/httpDriver.js'; -export * from './server/dataEvent.js'; export * from './client/demo.js'; -export * from './server/socketBridge/socketThrottle.js'; -export * from './server/socketBridge/socketRoom.js'; -export * from './server/socketBridge/socketIoServer.js'; -export * from './server/fakeZone/fakeHttpPost.js'; -export * from './server/_utils/routes.js'; -export * from './server/_utils/eventEmitterInstance.js'; export * from './server/_config/config.js'; +export * from './server/_utils/eventEmitterInstance.js'; +export * from './server/_utils/routes.js'; +export * from './server/dataEvent.js'; +export * from './server/fakeZone/fakeHttpPost.js'; +export * from './server/httpDriver.js'; +export * from './server/socketBridge/socketIoServer.js'; +export * from './server/socketBridge/socketRoom.js'; +export * from './server/socketBridge/socketThrottle.js'; +export * from './server/socketDriver.js'; diff --git a/packages/idae-stator/.prettierrc.js b/packages/idae-stator/.prettierrc.js index e28dd089d..ead81f37b 100644 --- a/packages/idae-stator/.prettierrc.js +++ b/packages/idae-stator/.prettierrc.js @@ -1,5 +1,5 @@ -import idaePrettierConfig from "@medyll/idae-prettier-config"; +import idaeConfigPrettier from "@medyll/idae-config-prettier"; export default { - ...idaePrettierConfig, + ...idaeConfigPrettier, }; \ No newline at end of file diff --git a/packages/shared/scripts/indexIfy.js b/packages/shared/scripts/indexIfy.js index b520b83f2..c50523f6e 100644 --- a/packages/shared/scripts/indexIfy.js +++ b/packages/shared/scripts/indexIfy.js @@ -114,7 +114,17 @@ export class MakeLibIndex { let exportString = "// auto exports of entry components\n"; const seen = new Set(); - fileInfoList.forEach((fileInfo) => { + // Ensure deterministic ordering: remove falsy entries and sort by path + const normalizedList = (fileInfoList || []) + .filter(Boolean) + .sort((a, b) => + a.path.localeCompare(b.path, undefined, { + numeric: true, + sensitivity: "base", + }), + ); + + normalizedList.forEach((fileInfo) => { if (!fileInfo) return; const { file, moduleName, path: filePath } = fileInfo; const normalizedPath = filePath diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31aa5d41d..af152e8e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,16 +16,16 @@ importers: version: 22.0.1 '@sveltejs/adapter-auto': specifier: ^4.0.0 - version: 4.0.0(@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 4.0.0(@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.16.0 - version: 2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.0.0 version: 2.5.7(svelte@5.48.5)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.0 - version: 5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) chalk: specifier: ^5.6.2 version: 5.6.2 @@ -58,10 +58,10 @@ importers: version: 5.48.5 vite: specifier: ^6.0.0 - version: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^3.0.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.2)(@vitest/browser@3.2.4)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.2)(@vitest/browser@3.2.4)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@medyll/idae-db': specifier: '*' @@ -127,7 +127,7 @@ importers: version: 3.8.1 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@huggingface/prettier-plugin-vertical-align': specifier: ^0.2.3 @@ -137,7 +137,7 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) prettier-plugin-svelte: specifier: ^3.4.1 version: 3.4.1(prettier@3.8.1)(svelte@5.53.1) @@ -166,13 +166,13 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@semantic-release/github': specifier: ^12.0.5 version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@typescript-eslint/eslint-plugin': specifier: ^8.54.0 version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) @@ -246,7 +246,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-db': specifier: workspace:* version: link:../idae-db @@ -261,16 +261,16 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/compression': specifier: ^1.8.1 version: 1.8.1 @@ -357,10 +357,10 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) zod: specifier: ^4.3.6 version: 4.3.6 @@ -377,7 +377,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-dom-events': specifier: workspace:* version: link:../idae-dom-events @@ -395,16 +395,16 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 @@ -446,10 +446,10 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-cadenzia: @@ -466,7 +466,7 @@ importers: version: link:../idae-be '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -478,13 +478,13 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 @@ -520,10 +520,10 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-csss: @@ -537,7 +537,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -546,16 +546,16 @@ importers: version: link:../shared '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -576,10 +576,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-db: @@ -605,7 +605,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -620,16 +620,16 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 @@ -638,7 +638,7 @@ importers: version: 6.4.2 '@vitest/coverage-v8': specifier: ^4.0.18 - version: 4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) eslint: specifier: ^10.0.0 version: 10.0.0(jiti@2.6.1) @@ -689,10 +689,10 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-dom-events: @@ -715,7 +715,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -730,16 +730,16 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/eslint': specifier: 9.6.1 version: 9.6.1 @@ -751,7 +751,7 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: ^4.0.18 - version: 4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) eslint: specifier: ^10.0.0 version: 10.0.0(jiti@2.6.1) @@ -784,10 +784,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-engine: @@ -801,7 +801,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -813,16 +813,16 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) svelte: specifier: ^5.50.0 version: 5.50.0 @@ -837,10 +837,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-html: @@ -880,8 +880,8 @@ importers: specifier: workspace:* version: link:../idae-be '@medyll/idae-config-prettier': - specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: workspace:* + version: link:../../packages-config/idae-config-prettier '@medyll/idae-csss': specifier: workspace:* version: link:../idae-csss @@ -908,16 +908,16 @@ importers: version: 12.0.6(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.1 - version: 7.0.1(@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.1(@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.53.0 - version: 2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.53.1)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 @@ -959,10 +959,10 @@ importers: version: 8.56.0(eslint@10.0.1(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-htmlu: @@ -979,16 +979,16 @@ importers: version: 1.58.2 '@sveltejs/adapter-auto': specifier: ^7.0.1 - version: 7.0.1(@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.1(@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.51.0 - version: 2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.51.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/jsdom': specifier: ^27.0.0 version: 27.0.0 @@ -1012,13 +1012,13 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-idbql: @@ -1035,7 +1035,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -1050,10 +1050,10 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) @@ -1074,7 +1074,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-machine: @@ -1103,7 +1103,7 @@ importers: version: 10.0.1(eslint@10.0.0(jiti@2.6.1)) '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -1115,22 +1115,22 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 '@testing-library/svelte': specifier: ^5.3.1 - version: 5.3.1(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.3.1(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) eslint: specifier: ^10.0.0 version: 10.0.0(jiti@2.6.1) @@ -1169,10 +1169,10 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-mongo: @@ -1186,7 +1186,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -1198,16 +1198,16 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 @@ -1243,10 +1243,10 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-mono-expand-vitrine: @@ -1276,7 +1276,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-engine': specifier: workspace:* version: link:../idae-engine @@ -1291,22 +1291,22 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 '@vitest/coverage-v8': specifier: ^4.0.18 - version: 4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) eslint: specifier: ^10.0.0 version: 10.0.0(jiti@2.6.1) @@ -1342,10 +1342,10 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-router: @@ -1361,16 +1361,16 @@ importers: version: 1.58.2 '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.1(@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.1(@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.51.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/node': specifier: ^24 version: 24.10.13 @@ -1409,26 +1409,26 @@ importers: version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@24.10.13)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@24.10.13)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-slotui: dependencies: '@iconify/svelte': specifier: ^5.2.1 - version: 5.2.1(svelte@5.51.0) + version: 5.2.1(svelte@5.53.1) '@tailwindcss/postcss': - specifier: ^4.1.18 - version: 4.1.18 + specifier: ^4.2.1 + version: 4.2.1 + '@tailwindcss/vite': + specifier: ^4.2.1 + version: 4.2.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) autoprefixer: specifier: ^10.4.24 version: 10.4.24(postcss@8.5.6) - command: - specifier: ^1.1.1 - version: 1.1.1(react-dom@19.2.4(react@15.7.0))(react@15.7.0) commander: specifier: ^14.0.3 version: 14.0.3 @@ -1436,11 +1436,14 @@ importers: specifier: ^7.9.0 version: 7.9.0 lerna: - specifier: ^9.0.3 - version: 9.0.3(@swc/core@1.15.8)(@types/node@25.2.2) + specifier: ^9.0.4 + version: 9.0.4(@swc/core@1.15.8)(@types/node@25.2.2) + minimatch: + specifier: ^10.2.2 + version: 10.2.2 npm-check-updates: - specifier: ^19.3.2 - version: 19.3.2 + specifier: ^19.4.1 + version: 19.4.1 postcss: specifier: ^8.5.6 version: 8.5.6 @@ -1448,20 +1451,20 @@ importers: specifier: ^6.0.1 version: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2) sanitize-html: - specifier: ^2.17.0 - version: 2.17.0 + specifier: ^2.17.1 + version: 2.17.1 svelte: specifier: ^5.0.0-next - version: 5.51.0 + version: 5.53.1 svelte-preprocess: specifier: ^6.0.3 - version: 6.0.3(@babel/core@7.28.6)(postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2))(postcss@8.5.6)(sass@1.97.3)(svelte@5.51.0)(typescript@5.9.3) - svelte-spa-router: - specifier: ^4.0.1 - version: 4.0.1 + version: 6.0.3(@babel/core@7.28.6)(postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2))(postcss@8.5.6)(sass@1.97.3)(svelte@5.53.1)(typescript@5.9.3) + tailwind-merge: + specifier: ^3.5.0 + version: 3.5.0 tailwindcss: - specifier: ^4.1.18 - version: 4.1.18 + specifier: ^4.2.1 + version: 4.2.1 devDependencies: '@medyll/cssfabric': specifier: 0.2.1-beta.9 @@ -1469,6 +1472,9 @@ importers: '@medyll/idae-be': specifier: workspace:* version: link:../idae-be + '@medyll/idae-dom-events': + specifier: workspace:* + version: link:../idae-dom-events '@medyll/idae-engine': specifier: workspace:* version: link:../idae-engine @@ -1479,17 +1485,26 @@ importers: specifier: ^1.58.2 version: 1.58.2 '@sveltejs/adapter-auto': - specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + specifier: ^7.0.1 + version: 7.0.1(@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': - specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^2.53.0 + version: 2.53.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 - version: 2.5.7(svelte@5.51.0)(typescript@5.9.3) + version: 2.5.7(svelte@5.53.1)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': - specifier: ^6.2.4 - version: 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^7.0.0 + version: 7.0.0(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@tailwindcss/aspect-ratio': + specifier: ^0.4.2 + version: 0.4.2(tailwindcss@4.2.1) + '@tailwindcss/forms': + specifier: ^0.5.4 + version: 0.5.11(tailwindcss@4.2.1) + '@tailwindcss/typography': + specifier: ^0.5.8 + version: 0.5.19(tailwindcss@4.2.1) '@types/eslint': specifier: 9.6.1 version: 9.6.1 @@ -1497,59 +1512,47 @@ importers: specifier: ^11.0.4 version: 11.0.4 '@types/prismjs': - specifier: ^1.26.5 - version: 1.26.5 + specifier: ^1.26.6 + version: 1.26.6 '@types/sanitize-html': specifier: ^2.16.0 version: 2.16.0 '@typescript-eslint/eslint-plugin': - specifier: ^8.54.0 - version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.56.1 + version: 8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^8.54.0 - version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@unocss/preset-mini': - specifier: ^66.6.0 - version: 66.6.0 - '@unocss/preset-uno': - specifier: ^66.6.0 - version: 66.6.0 - '@unocss/preset-wind': - specifier: ^66.6.0 - version: 66.6.0 - '@unocss/svelte-scoped': - specifier: ^66.6.0 - version: 66.6.0 + specifier: ^8.56.1 + version: 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) commitizen: specifier: ^4.3.1 version: 4.3.1(@types/node@25.2.2)(typescript@5.9.3) eslint: - specifier: ^10.0.0 - version: 10.0.0(jiti@2.6.1) + specifier: ^10.0.2 + version: 10.0.2(jiti@2.6.1) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.0.0(jiti@2.6.1)) + version: 10.1.8(eslint@10.0.2(jiti@2.6.1)) eslint-plugin-svelte: - specifier: ^3.14.0 - version: 3.14.0(eslint@10.0.0(jiti@2.6.1))(svelte@5.51.0)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)) + specifier: ^3.15.0 + version: 3.15.0(eslint@10.0.2(jiti@2.6.1))(svelte@5.53.1)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)) fs-extra: specifier: ^11.3.3 version: 11.3.3 glob: - specifier: ^13.0.1 - version: 13.0.1 + specifier: ^13.0.6 + version: 13.0.6 jsdoc: specifier: ^4.0.5 version: 4.0.5 mdsvex: specifier: ^0.12.6 - version: 0.12.6(svelte@5.51.0) + version: 0.12.6(svelte@5.53.1) micromatch: specifier: ^4.0.8 version: 4.0.8 nodemon: - specifier: ^3.1.11 - version: 3.1.11 + specifier: ^3.1.14 + version: 3.1.14 pm2: specifier: ^6.0.14 version: 6.0.14 @@ -1557,8 +1560,8 @@ importers: specifier: ^3.8.1 version: 3.8.1 prettier-plugin-svelte: - specifier: ^3.4.1 - version: 3.4.1(prettier@3.8.1)(svelte@5.51.0) + specifier: ^3.5.0 + version: 3.5.0(prettier@3.8.1)(svelte@5.53.1) prism: specifier: ^4.1.2 version: 4.1.2(react@15.7.0) @@ -1572,17 +1575,14 @@ importers: specifier: ^9.3.1 version: 9.3.1 rimraf: - specifier: ^6.1.2 - version: 6.1.2 - sass: - specifier: ^1.97.3 - version: 1.97.3 + specifier: ^6.1.3 + version: 6.1.3 sveld: - specifier: ^0.25.13 - version: 0.25.13(@babel/core@7.28.6)(postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2))(postcss@8.5.6)(sass@1.97.3) + specifier: ^0.26.2 + version: 0.26.2(@babel/core@7.28.6)(postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2))(postcss@8.5.6)(sass@1.97.3) svelte-check: - specifier: ^4.3.6 - version: 4.3.6(picomatch@4.0.3)(svelte@5.51.0)(typescript@5.9.3) + specifier: ^4.4.3 + version: 4.4.3(picomatch@4.0.3)(svelte@5.53.1)(typescript@5.9.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1591,10 +1591,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-socket: @@ -1650,7 +1650,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -1662,7 +1662,7 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/jsonwebtoken': specifier: ^9.0.10 version: 9.0.10 @@ -1671,7 +1671,7 @@ importers: version: 25.2.2 '@vitest/coverage-v8': specifier: ^4.0.18 - version: 4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) svelte: specifier: ^5.50.0 version: 5.50.0 @@ -1680,7 +1680,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/idae-stator: @@ -1694,7 +1694,7 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@medyll/idae-eslint-config': specifier: workspace:* version: link:../../packages-config/idae-eslint-config @@ -1706,16 +1706,16 @@ importers: version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/adapter-auto': specifier: ^7.0.0 - version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@sveltejs/kit': specifier: ^2.50.2 - version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@sveltejs/package': specifier: ^2.5.7 version: 2.5.7(svelte@5.50.0)(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 @@ -1754,10 +1754,10 @@ importers: version: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) publishDirectory: . packages/shared: @@ -1780,13 +1780,13 @@ importers: devDependencies: '@medyll/idae-config-prettier': specifier: latest - version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@semantic-release/github': specifier: ^12.0.5 version: 12.0.5(semantic-release@25.0.3(typescript@5.9.3)) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/fs-extra': specifier: ^11.0.4 version: 11.0.4 @@ -3099,18 +3099,6 @@ packages: '@ioredis/commands@1.5.0': resolution: {integrity: sha512-eUgLqrMf8nJkZxT24JvVRrQya1vZkQh8BBeYNwGDqa5I0VUi8ACx7uFvAaLxintokpTenkK6DASvo/bvNbBGow==} - '@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/brace-expansion@5.0.1': - resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} - engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3242,8 +3230,8 @@ packages: resolution: {integrity: sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==} engines: {node: '>=v12.0.0'} - '@lerna/create@9.0.3': - resolution: {integrity: sha512-hUTEWrR8zH+/Z3bp/R1aLm6DW8vB/BB7KH7Yeg4fMfrvSwxegiLVW9uJFAzWkK4mzEagmj/Dti85Yg9MN13t0g==} + '@lerna/create@9.0.4': + resolution: {integrity: sha512-WxedGD98G8/a6HztCXNWquaM0x17oSvfvuqDsLxNNX1qXGyrzmMUmd1mQikF/47uy80X6qyWdaRtaAHlwkvEUA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} '@lukeed/csprng@1.1.0': @@ -3309,10 +3297,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/agent@3.0.0': - resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} - engines: {node: ^18.17.0 || >=20.5.0} - '@npmcli/agent@4.0.0': resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} engines: {node: ^20.17.0 || >=22.9.0} @@ -3400,8 +3384,8 @@ packages: resolution: {integrity: sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==} engines: {node: ^18.17.0 || >=20.5.0} - '@npmcli/run-script@10.0.2': - resolution: {integrity: sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==} + '@npmcli/run-script@10.0.3': + resolution: {integrity: sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==} engines: {node: ^20.17.0 || >=22.9.0} '@nx/devkit@22.3.3': @@ -3919,9 +3903,6 @@ packages: engines: {node: '>=18'} hasBin: true - '@quansync/fs@1.0.0': - resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@radix-ui/primitive@1.1.3': resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} @@ -4694,6 +4675,13 @@ packages: svelte: ^5.0.0 vite: ^6.3.0 || ^7.0.0 + '@sveltejs/vite-plugin-svelte@7.0.0': + resolution: {integrity: sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==} + engines: {node: ^20.19 || ^22.12 || >=24} + peerDependencies: + svelte: ^5.46.4 + vite: ^8.0.0-beta.7 || ^8.0.0 + '@swc/core-darwin-arm64@1.15.8': resolution: {integrity: sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==} engines: {node: '>=10'} @@ -4769,65 +4757,75 @@ packages: '@swc/types@0.1.25': resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} - '@tailwindcss/node@4.1.18': - resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} + '@tailwindcss/aspect-ratio@0.4.2': + resolution: {integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==} + peerDependencies: + tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' - '@tailwindcss/oxide-android-arm64@4.1.18': - resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} - engines: {node: '>= 10'} + '@tailwindcss/forms@0.5.11': + resolution: {integrity: sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1' + + '@tailwindcss/node@4.2.1': + resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==} + + '@tailwindcss/oxide-android-arm64@4.2.1': + resolution: {integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==} + engines: {node: '>= 20'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.18': - resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-arm64@4.2.1': + resolution: {integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==} + engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.18': - resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-x64@4.2.1': + resolution: {integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==} + engines: {node: '>= 20'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.18': - resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-freebsd-x64@4.2.1': + resolution: {integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==} + engines: {node: '>= 20'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': - resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': + resolution: {integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==} + engines: {node: '>= 20'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': - resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': + resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.1.18': - resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-musl@4.2.1': + resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.1.18': - resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-gnu@4.2.1': + resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.1.18': - resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-musl@4.2.1': + resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.1.18': - resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} + '@tailwindcss/oxide-wasm32-wasi@4.2.1': + resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -4838,24 +4836,34 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': - resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': + resolution: {integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==} + engines: {node: '>= 20'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.18': - resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-x64-msvc@4.2.1': + resolution: {integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==} + engines: {node: '>= 20'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.18': - resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} - engines: {node: '>= 10'} + '@tailwindcss/oxide@4.2.1': + resolution: {integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==} + engines: {node: '>= 20'} + + '@tailwindcss/postcss@4.2.1': + resolution: {integrity: sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw==} + + '@tailwindcss/typography@0.5.19': + resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tailwindcss/postcss@4.1.18': - resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==} + '@tailwindcss/vite@4.2.1': + resolution: {integrity: sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 '@testing-library/dom@10.4.1': resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} @@ -5134,8 +5142,8 @@ packages: '@types/pouchdb@6.4.2': resolution: {integrity: sha512-YsI47rASdtzR+3V3JE2UKY58snhm0AglHBpyckQBkRYoCbTvGagXHtV0x5n8nzN04jQmvTG+Sm85cIzKT3KXBA==} - '@types/prismjs@1.26.5': - resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} + '@types/prismjs@1.26.6': + resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -5222,6 +5230,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.56.1': + resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.56.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.54.0': resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5236,6 +5252,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.56.1': + resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.54.0': resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5248,6 +5271,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.56.1': + resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.54.0': resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5256,6 +5285,10 @@ packages: resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.56.1': + resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.54.0': resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5268,6 +5301,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.56.1': + resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.54.0': resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5282,6 +5321,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.56.1': + resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/types@8.54.0': resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5290,6 +5336,10 @@ packages: resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.56.1': + resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.54.0': resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5302,6 +5352,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.56.1': + resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.54.0': resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5316,6 +5372,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.56.1': + resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.54.0': resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5324,41 +5387,13 @@ packages: resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.56.1': + resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@unocss/config@66.6.0': - resolution: {integrity: sha512-YvNk/b9jGmT1TQGDbHR+0VALnTsPLzSTzw90t09ggny9YxeF0XnsP06M5+H0EJPwpmdigBC++KEIMaK8SYDsaQ==} - engines: {node: '>=14'} - - '@unocss/core@66.6.0': - resolution: {integrity: sha512-Sxm7HmhsPIIzxbPnWembPyobuCeA5j9KxL+jIOW2c+kZiTFjHeju7vuVWX9jmAMMC+UyDuuCQ4yE+kBo3Y7SWQ==} - - '@unocss/extractor-arbitrary-variants@66.6.0': - resolution: {integrity: sha512-AsCmpbre4hQb+cKOf3gHUeYlF7guR/aCKZvw53VBk12qY5wNF7LdfIx4zWc5LFVCoRxIZlU2C7L4/Tt7AkiFMA==} - - '@unocss/preset-mini@66.6.0': - resolution: {integrity: sha512-8bQyTuMJcry/z4JTDsQokI0187/1CJIkVx9hr9eEbKf/gWti538P8ktKEmHCf8IyT0At5dfP9oLHLCUzVetdbA==} - - '@unocss/preset-uno@66.6.0': - resolution: {integrity: sha512-xDppgdgFk+JNrL9jhqhrn6H9IS8P10p1HSsWOYF+9owg43zqpeNpzDMvZGwq8uxq6guyB1fu6l4YzO+bDZnwvw==} - - '@unocss/preset-wind3@66.6.0': - resolution: {integrity: sha512-7gzswF810BCSru7pF01BsMzGZbfrsWT5GV6JJLkhROS2pPjeNOpqy2VEfiavv5z09iGSIESeOFMlXr5ORuLZrg==} - - '@unocss/preset-wind@66.6.0': - resolution: {integrity: sha512-6uVq3/gV1MD9ZsycrYLP6OvAS9kI1oGAIuccKKspZHW3jqwEhJmPofDD4pYwbkx4i4zSWzoLakcfp9d67Szjqg==} - - '@unocss/reset@66.6.0': - resolution: {integrity: sha512-OQK5F7Dzx0wWDSPTYEz7NRP9pekufSAkjxfKOyKokiXOUzVTg8Yx8sOvCsA3Oi0Rx5WlsO2LN+MOBekpkrttXg==} - - '@unocss/rule-utils@66.6.0': - resolution: {integrity: sha512-v16l6p5VrefDx8P/gzWnp0p6/hCA0vZ4UMUN6SxHGVE6V+IBpX6I6Du3Egk9TdkhZ7o+Pe1NHxksHcjT0V/tww==} - engines: {node: '>=14'} - - '@unocss/svelte-scoped@66.6.0': - resolution: {integrity: sha512-N66wxKoy+qBSThOVeB5rR6nTp94wwq6LNPBXuS39fnDwV2hTcGb3M8V7tOX34zeCv5PfSFSvgF8L8cknbYsvOg==} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -5571,6 +5606,10 @@ packages: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -5647,6 +5686,9 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -6073,10 +6115,6 @@ packages: resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} engines: {node: '>= 10'} - cacache@19.0.1: - resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} - engines: {node: ^18.17.0 || >=20.5.0} - cacache@20.0.3: resolution: {integrity: sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -6937,9 +6975,6 @@ packages: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - degenerator@5.0.1: resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} @@ -7140,8 +7175,8 @@ packages: resolution: {integrity: sha512-2RZdgEbXmp5+dVbRm0P7HQUImZpICccJy7rN7Tv+SFa55pH+lxnuw6/K1ZxxBfHoYpSkHLAO92oa8O4SwFXA2A==} engines: {node: '>=10.2.0'} - enhanced-resolve@5.18.4: - resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} engines: {node: '>=10.13.0'} enquirer@2.3.6: @@ -7324,6 +7359,16 @@ packages: jiti: optional: true + eslint@10.0.2: + resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + eslint@9.39.2: resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7892,15 +7937,14 @@ packages: resolution: {integrity: sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==} engines: {node: 20 || >=22} + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} @@ -8798,8 +8842,8 @@ packages: resolution: {integrity: sha512-KDDuvpfqSK0ZKEO2gCPedNjl5wYpfj+HNiuVRlbhd1A88S3M0ySkdf2V/EJ4NWt5dwh5PXCdcenrKK2IQJAxsg==} engines: {node: '>= 18'} - lerna@9.0.3: - resolution: {integrity: sha512-wCsJWKX8FaGJoWX2K5gL5q7ReqQNxNsS92AW5glBe/JzWEtoM/jgXXGrEzQzORMb8rTXYFjUjpn60et+i8XugA==} + lerna@9.0.4: + resolution: {integrity: sha512-wKy9TOkkdCWPWET0R5o7mh7J0KuNNjxE0g+qTruNAt5ffWwy54wfWiJtWyDSMOrcGDt6gtisDBTKniOqK/sJvw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true @@ -8882,74 +8926,74 @@ packages: resolution: {integrity: sha512-tNcU3cLH7toloAzhOOrBDhjzgbxpyuYvkf+BPPnnJCdc5EIcdJ8JcT+SglvCQKKyZ6m9dVXtCVlJcA6csxKdEA==} engines: {node: ^20.17.0 || >=22.9.0} - lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} lilconfig@2.1.0: @@ -9134,10 +9178,6 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-fetch-happen@14.0.3: - resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} - engines: {node: ^18.17.0 || >=20.5.0} - make-fetch-happen@15.0.2: resolution: {integrity: sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -9312,17 +9352,9 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} - - minimatch@10.1.2: - resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} - engines: {node: 20 || >=22} - - minimatch@10.2.0: - resolution: {integrity: sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==} - engines: {node: 20 || >=22} + mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true minimatch@10.2.2: resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} @@ -9338,10 +9370,6 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -9396,10 +9424,6 @@ packages: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} - minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} @@ -9408,6 +9432,10 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -9691,9 +9719,9 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-gyp@11.5.0: - resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} - engines: {node: ^18.17.0 || >=20.5.0} + node-gyp@12.2.0: + resolution: {integrity: sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true node-gyp@8.4.1: @@ -9730,6 +9758,11 @@ packages: engines: {node: '>=10'} hasBin: true + nodemon@3.1.14: + resolution: {integrity: sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==} + engines: {node: '>=10'} + hasBin: true + nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -9740,6 +9773,11 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -9777,8 +9815,8 @@ packages: resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} engines: {node: ^20.17.0 || >=22.9.0} - npm-check-updates@19.3.2: - resolution: {integrity: sha512-9rr3z7znFjCSuaFxHGTFR2ZBOvLWaJcpLKmIquoTbDBNrwAGiHhv4MZyty6EJ9Xo/aMn35+2ISPSMgWIXx5Xkg==} + npm-check-updates@19.4.1: + resolution: {integrity: sha512-g3s+khrneBo0iGx7xqu/cQUk0Qc1XAHEYDptPCyCFF447RdhiBd6yPRxB7GkesbUBHXeNfmqV3ArlwxcI8h56w==} engines: {node: '>=20.0.0', npm: '>=8.12.1'} hasBin: true @@ -10252,6 +10290,10 @@ packages: resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + path-temp@2.1.0: resolution: {integrity: sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w==} engines: {node: '>=8.15'} @@ -10478,6 +10520,10 @@ packages: peerDependencies: postcss: ^8.4.29 + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} @@ -10892,9 +10938,6 @@ packages: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} - quansync@1.0.0: - resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} - query-string@9.3.1: resolution: {integrity: sha512-5fBfMOcDi5SA9qj5jZhWAcTtDfKF5WFdd2uD9nVNlbxVv1baq65aALy6qofpNEGELHvisjjasxQp7BlM9gvMzw==} engines: {node: '>=18'} @@ -11092,10 +11135,6 @@ packages: reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - regexparam@2.0.2: - resolution: {integrity: sha512-A1PeDEYMrkLrfyOwv2jwihXbo9qxdGD3atBYQA9JJgreAx8/7rC6IUkWOw2NQlOxLp2wL0ifQbh1HuidDfYA6w==} - engines: {node: '>=8'} - registry-auth-token@5.1.1: resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} engines: {node: '>=14'} @@ -11180,13 +11219,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true - - rimraf@6.1.2: - resolution: {integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==} + rimraf@6.1.3: + resolution: {integrity: sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==} engines: {node: 20 || >=22} hasBin: true @@ -11259,8 +11293,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sanitize-html@2.17.0: - resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} + sanitize-html@2.17.1: + resolution: {integrity: sha512-ehFCW+q1a4CSOWRAdX97BX/6/PDEkCqw7/0JXZAGQV57FQB3YOkTa/rrzHPeJ+Aghy4vZAFfWMYyfxIiB7F/gw==} sass@1.97.3: resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} @@ -11733,8 +11767,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - sveld@0.25.13: - resolution: {integrity: sha512-SJGviwHrdUxrS8vYC4Gui00cozlzP4EFEQUCXcIH/4h8kf0TbKyJ6Nsvxj/maKkKSGo2zILGl8U0RjDY0y2ahA==} + sveld@0.26.2: + resolution: {integrity: sha512-jhTlp38UNVQjYF//dBzCV1Me+fghFPjyREpodFcOspRr+v2EuZzDUhBvzZYCAlND1gFFIUOckqxuFlUYiN1R4Q==} hasBin: true svelte-check@4.3.6: @@ -11810,9 +11844,6 @@ packages: typescript: optional: true - svelte-spa-router@4.0.1: - resolution: {integrity: sha512-2JkmUQ2f9jRluijL58LtdQBIpynSbem2eBGp4zXdi7aDY1znbR6yjw0KsonD0aq2QLwf4Yx4tBJQjxIjgjXHKg==} - svelte2tsx@0.7.46: resolution: {integrity: sha512-S++Vw3w47a8rBuhbz4JK0fcGea8tOoX1boT53Aib8+oUO2EKeOG+geXprJVTDfBlvR+IJdf3jIpR2RGwT6paQA==} peerDependencies: @@ -11865,8 +11896,11 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tailwindcss@4.1.18: - resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} + tailwind-merge@3.5.0: + resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} + + tailwindcss@4.2.1: + resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==} tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} @@ -11889,10 +11923,10 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - tar@7.5.2: - resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} + tar@7.5.7: + resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==} engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me temp-dir@1.0.0: resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} @@ -12273,12 +12307,6 @@ packages: resolution: {integrity: sha512-+I6aJUv63YAcY9n4mQreLUt0d4lvwkkopDNmpomkAUz0fAkEMV9pRWxN0EjhW1YfRhcuyHg2v3mwddCDW1+LFQ==} engines: {node: '>= 4.0.0'} - unconfig-core@7.4.2: - resolution: {integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==} - - unconfig@7.4.2: - resolution: {integrity: sha512-nrMlWRQ1xdTjSnSUqvYqJzbTBFugoqHobQj58B2bc8qxHKBBHMNNsWQFP3Cd3/JZK907voM2geYPWqD4VK3MPQ==} - undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} @@ -12321,10 +12349,6 @@ packages: unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - unique-filename@4.0.0: - resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} - engines: {node: ^18.17.0 || >=20.5.0} - unique-filename@5.0.0: resolution: {integrity: sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==} engines: {node: ^20.17.0 || >=22.9.0} @@ -12332,10 +12356,6 @@ packages: unique-slug@2.0.2: resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - unique-slug@5.0.0: - resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} - engines: {node: ^18.17.0 || >=20.5.0} - unique-slug@6.0.0: resolution: {integrity: sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -12567,6 +12587,14 @@ packages: vite: optional: true + vitefu@1.1.2: + resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0 + peerDependenciesMeta: + vite: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -13444,10 +13472,10 @@ snapshots: '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) '@babel/helpers': 7.28.6 - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@babel/template': 7.28.6 '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@8.1.1) @@ -13459,8 +13487,8 @@ snapshots: '@babel/generator@7.28.6': dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -13478,7 +13506,7 @@ snapshots: '@babel/helper-module-imports@7.28.6': dependencies: '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -13502,7 +13530,7 @@ snapshots: '@babel/helpers@7.28.6': dependencies: '@babel/template': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 '@babel/parser@7.28.6': dependencies: @@ -13602,17 +13630,17 @@ snapshots: '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@babel/traverse@7.28.6': dependencies: '@babel/code-frame': 7.28.6 '@babel/generator': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@babel/template': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -13960,6 +13988,11 @@ snapshots: eslint: 10.0.1(jiti@2.6.1) eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2(jiti@2.6.1))': + dependencies: + eslint: 10.0.2(jiti@2.6.1) + eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: eslint: 9.39.2(jiti@2.6.1) @@ -13991,7 +14024,7 @@ snapshots: dependencies: '@eslint/object-schema': 3.0.0 debug: 4.4.3(supports-color@8.1.1) - minimatch: 10.2.0 + minimatch: 10.2.2 transitivePeerDependencies: - supports-color @@ -14093,10 +14126,10 @@ snapshots: '@hutson/parse-repository-url@3.0.2': {} - '@iconify/svelte@5.2.1(svelte@5.51.0)': + '@iconify/svelte@5.2.1(svelte@5.53.1)': dependencies: '@iconify/types': 2.0.0 - svelte: 5.51.0 + svelte: 5.53.1 '@iconify/types@2.0.0': {} @@ -14346,16 +14379,6 @@ snapshots: '@ioredis/commands@1.5.0': {} - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - - '@isaacs/brace-expansion@5.0.1': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -14597,11 +14620,11 @@ snapshots: dependencies: lodash: 4.17.21 - '@lerna/create@9.0.3(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)': + '@lerna/create@9.0.4(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)': dependencies: '@npmcli/arborist': 9.1.6 '@npmcli/package-json': 7.0.2 - '@npmcli/run-script': 10.0.2 + '@npmcli/run-script': 10.0.3 '@nx/devkit': 22.3.3(nx@22.3.3(@swc/core@1.15.8)) '@octokit/plugin-enterprise-rest': 6.0.1 '@octokit/rest': 20.1.2 @@ -14646,14 +14669,14 @@ snapshots: pify: 5.0.0 read-cmd-shim: 4.0.0 resolve-from: 5.0.0 - rimraf: 4.4.1 + rimraf: 6.1.3 semver: 7.7.2 set-blocking: 2.0.0 signal-exit: 3.0.7 slash: 3.0.0 ssri: 12.0.0 string-width: 4.2.3 - tar: 6.2.1 + tar: 7.5.7 temp-dir: 1.0.0 through: 2.3.8 tinyglobby: 0.2.12 @@ -14689,10 +14712,10 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@medyll/idae-config-prettier@0.0.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)': + '@medyll/idae-config-prettier@0.0.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)': dependencies: prettier: 3.8.1 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -14706,10 +14729,10 @@ snapshots: - tsx - yaml - '@medyll/idae-config-prettier@0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)': + '@medyll/idae-config-prettier@0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@3.8.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)': dependencies: prettier: 3.8.1 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -14723,10 +14746,10 @@ snapshots: - tsx - yaml - '@medyll/idae-config-prettier@0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)': + '@medyll/idae-config-prettier@0.0.3(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(prettier@4.0.0-alpha.13)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)': dependencies: prettier: 4.0.0-alpha.13 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -14807,16 +14830,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@npmcli/agent@3.0.0': - dependencies: - agent-base: 7.1.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 10.4.3 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - '@npmcli/agent@4.0.0': dependencies: agent-base: 7.1.4 @@ -14839,14 +14852,14 @@ snapshots: '@npmcli/package-json': 7.0.2 '@npmcli/query': 4.0.1 '@npmcli/redact': 3.2.2 - '@npmcli/run-script': 10.0.2 + '@npmcli/run-script': 10.0.3 bin-links: 5.0.0 cacache: 20.0.3 common-ancestor-path: 1.0.1 hosted-git-info: 9.0.2 json-stringify-nice: 1.1.4 lru-cache: 11.2.5 - minimatch: 10.2.0 + minimatch: 10.2.2 nopt: 8.1.0 npm-install-checks: 7.1.2 npm-package-arg: 13.0.1 @@ -14915,8 +14928,8 @@ snapshots: dependencies: '@npmcli/name-from-folder': 4.0.0 '@npmcli/package-json': 7.0.2 - glob: 13.0.3 - minimatch: 10.2.0 + glob: 13.0.6 + minimatch: 10.2.2 '@npmcli/metavuln-calculator@9.0.3': dependencies: @@ -14966,14 +14979,14 @@ snapshots: '@npmcli/redact@3.2.2': {} - '@npmcli/run-script@10.0.2': + '@npmcli/run-script@10.0.3': dependencies: '@npmcli/node-gyp': 5.0.0 '@npmcli/package-json': 7.0.2 '@npmcli/promise-spawn': 9.0.1 - node-gyp: 11.5.0 + node-gyp: 12.2.0 proc-log: 6.1.0 - which: 5.0.0 + which: 6.0.0 transitivePeerDependencies: - supports-color @@ -15658,10 +15671,6 @@ snapshots: - react-native-b4a - supports-color - '@quansync/fs@1.0.0': - dependencies: - quansync: 1.0.0 - '@radix-ui/primitive@1.1.3': {} '@radix-ui/react-compose-refs@1.1.2(react@15.7.0)': @@ -16362,36 +16371,40 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@sveltejs/kit': 2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/kit': 2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) import-meta-resolve: 4.2.0 - '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': + dependencies: + '@sveltejs/kit': 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + + '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@sveltejs/kit': 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/kit': 2.50.2(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@sveltejs/kit': 2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/kit': 2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@sveltejs/kit': 2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/kit': 2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@sveltejs/kit': 2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/kit': 2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@sveltejs/kit': 2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/kit': 2.53.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/kit@2.49.4(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(typescript@5.9.3)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -16404,15 +16417,15 @@ snapshots: set-cookie-parser: 2.7.2 sirv: 3.0.2 svelte: 5.48.5 - vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 - '@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -16425,15 +16438,15 @@ snapshots: set-cookie-parser: 3.0.1 sirv: 3.0.2 svelte: 5.50.0 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 - '@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/kit@2.50.2(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -16445,16 +16458,16 @@ snapshots: sade: 1.8.1 set-cookie-parser: 3.0.1 sirv: 3.0.2 - svelte: 5.51.0 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + svelte: 5.50.0 + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 - '@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -16467,15 +16480,15 @@ snapshots: set-cookie-parser: 3.0.1 sirv: 3.0.2 svelte: 5.51.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 - '@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/kit@2.51.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -16488,15 +16501,15 @@ snapshots: set-cookie-parser: 3.0.1 sirv: 3.0.2 svelte: 5.51.0 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 - '@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -16508,16 +16521,36 @@ snapshots: set-cookie-parser: 3.0.1 sirv: 3.0.2 svelte: 5.53.1 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 - '@sveltejs/package@2.5.7(svelte@5.48.5)(typescript@5.9.3)': + '@sveltejs/kit@2.53.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - chokidar: 5.0.0 - kleur: 4.1.5 - sade: 1.8.1 - semver: 7.7.3 + '@standard-schema/spec': 1.1.0 + '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) + '@sveltejs/vite-plugin-svelte': 7.0.0(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@types/cookie': 0.6.0 + acorn: 8.15.0 + cookie: 0.6.0 + devalue: 5.6.3 + esm-env: 1.2.2 + kleur: 4.1.5 + magic-string: 0.30.21 + mrmime: 2.0.1 + set-cookie-parser: 3.0.1 + sirv: 3.0.2 + svelte: 5.53.1 + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + optionalDependencies: + typescript: 5.9.3 + + '@sveltejs/package@2.5.7(svelte@5.48.5)(typescript@5.9.3)': + dependencies: + chokidar: 5.0.0 + kleur: 4.1.5 + sade: 1.8.1 + semver: 7.7.3 svelte: 5.48.5 svelte2tsx: 0.7.46(svelte@5.48.5)(typescript@5.9.3) transitivePeerDependencies: @@ -16556,95 +16589,113 @@ snapshots: transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) debug: 4.4.3(supports-color@8.1.1) svelte: 5.48.5 - vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) obug: 2.1.1 svelte: 5.50.0 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) obug: 2.1.1 svelte: 5.51.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) obug: 2.1.1 svelte: 5.51.0 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) obug: 2.1.1 svelte: 5.53.1 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.48.5)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) debug: 4.4.3(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.21 svelte: 5.48.5 - vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 svelte: 5.50.0 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 svelte: 5.51.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 svelte: 5.51.0 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + deepmerge: 4.3.1 + magic-string: 0.30.21 + obug: 2.1.1 + svelte: 5.53.1 + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + + '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + deepmerge: 4.3.1 + magic-string: 0.30.21 + obug: 2.1.1 + svelte: 5.50.0 + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.2(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.1)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 svelte: 5.53.1 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.2(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@swc/core-darwin-arm64@1.15.8': optional: true @@ -16701,74 +16752,95 @@ snapshots: '@swc/counter': 0.1.3 optional: true - '@tailwindcss/node@4.1.18': + '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@4.2.1)': + dependencies: + tailwindcss: 4.2.1 + + '@tailwindcss/forms@0.5.11(tailwindcss@4.2.1)': + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 4.2.1 + + '@tailwindcss/node@4.2.1': dependencies: '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.18.4 + enhanced-resolve: 5.19.0 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 magic-string: 0.30.21 source-map-js: 1.2.1 - tailwindcss: 4.1.18 + tailwindcss: 4.2.1 - '@tailwindcss/oxide-android-arm64@4.1.18': + '@tailwindcss/oxide-android-arm64@4.2.1': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.18': + '@tailwindcss/oxide-darwin-arm64@4.2.1': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.18': + '@tailwindcss/oxide-darwin-x64@4.2.1': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.18': + '@tailwindcss/oxide-freebsd-x64@4.2.1': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + '@tailwindcss/oxide-linux-arm64-musl@4.2.1': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + '@tailwindcss/oxide-linux-x64-gnu@4.2.1': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.18': + '@tailwindcss/oxide-linux-x64-musl@4.2.1': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.18': + '@tailwindcss/oxide-wasm32-wasi@4.2.1': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + '@tailwindcss/oxide-win32-x64-msvc@4.2.1': optional: true - '@tailwindcss/oxide@4.1.18': + '@tailwindcss/oxide@4.2.1': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.18 - '@tailwindcss/oxide-darwin-arm64': 4.1.18 - '@tailwindcss/oxide-darwin-x64': 4.1.18 - '@tailwindcss/oxide-freebsd-x64': 4.1.18 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 - '@tailwindcss/oxide-linux-x64-musl': 4.1.18 - '@tailwindcss/oxide-wasm32-wasi': 4.1.18 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - - '@tailwindcss/postcss@4.1.18': + '@tailwindcss/oxide-android-arm64': 4.2.1 + '@tailwindcss/oxide-darwin-arm64': 4.2.1 + '@tailwindcss/oxide-darwin-x64': 4.2.1 + '@tailwindcss/oxide-freebsd-x64': 4.2.1 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.1 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.1 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.1 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.1 + '@tailwindcss/oxide-linux-x64-musl': 4.2.1 + '@tailwindcss/oxide-wasm32-wasi': 4.2.1 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 + + '@tailwindcss/postcss@4.2.1': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.1.18 - '@tailwindcss/oxide': 4.1.18 + '@tailwindcss/node': 4.2.1 + '@tailwindcss/oxide': 4.2.1 postcss: 8.5.6 - tailwindcss: 4.1.18 + tailwindcss: 4.2.1 + + '@tailwindcss/typography@0.5.19(tailwindcss@4.2.1)': + dependencies: + postcss-selector-parser: 6.0.10 + tailwindcss: 4.2.1 + + '@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@tailwindcss/node': 4.2.1 + '@tailwindcss/oxide': 4.2.1 + tailwindcss: 4.2.1 + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@testing-library/dom@10.4.1': dependencies: @@ -16794,14 +16866,14 @@ snapshots: dependencies: svelte: 5.50.0 - '@testing-library/svelte@5.3.1(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@testing-library/svelte@5.3.1(svelte@5.50.0)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@testing-library/dom': 10.4.1 '@testing-library/svelte-core': 1.0.0(svelte@5.50.0) svelte: 5.50.0 optionalDependencies: - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitest: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: @@ -16830,7 +16902,7 @@ snapshots: '@tufjs/models@4.1.0': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 10.2.0 + minimatch: 10.2.2 '@tybys/wasm-util@0.10.1': dependencies: @@ -17144,7 +17216,7 @@ snapshots: '@types/pouchdb-node': 6.1.7 '@types/pouchdb-replication': 6.4.7 - '@types/prismjs@1.26.5': {} + '@types/prismjs@1.26.6': {} '@types/qs@6.14.0': {} @@ -17271,6 +17343,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 + eslint: 10.0.2(jiti@2.6.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.54.0 @@ -17307,6 +17395,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.0.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) @@ -17325,6 +17425,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.54.0': dependencies: '@typescript-eslint/types': 8.54.0 @@ -17335,6 +17444,11 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 + '@typescript-eslint/scope-manager@8.56.1': + dependencies: + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -17343,6 +17457,10 @@ snapshots: dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.54.0 @@ -17379,10 +17497,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.0.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@8.54.0': {} '@typescript-eslint/types@8.56.0': {} + '@typescript-eslint/types@8.56.1': {} + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) @@ -17413,6 +17545,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.2 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) @@ -17446,6 +17593,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + eslint: 10.0.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.54.0': dependencies: '@typescript-eslint/types': 8.54.0 @@ -17456,59 +17614,12 @@ snapshots: '@typescript-eslint/types': 8.56.0 eslint-visitor-keys: 5.0.0 - '@ungap/structured-clone@1.3.0': {} - - '@unocss/config@66.6.0': - dependencies: - '@unocss/core': 66.6.0 - unconfig: 7.4.2 - - '@unocss/core@66.6.0': {} - - '@unocss/extractor-arbitrary-variants@66.6.0': - dependencies: - '@unocss/core': 66.6.0 - - '@unocss/preset-mini@66.6.0': - dependencies: - '@unocss/core': 66.6.0 - '@unocss/extractor-arbitrary-variants': 66.6.0 - '@unocss/rule-utils': 66.6.0 - - '@unocss/preset-uno@66.6.0': + '@typescript-eslint/visitor-keys@8.56.1': dependencies: - '@unocss/core': 66.6.0 - '@unocss/preset-wind3': 66.6.0 - - '@unocss/preset-wind3@66.6.0': - dependencies: - '@unocss/core': 66.6.0 - '@unocss/preset-mini': 66.6.0 - '@unocss/rule-utils': 66.6.0 - - '@unocss/preset-wind@66.6.0': - dependencies: - '@unocss/core': 66.6.0 - '@unocss/preset-wind3': 66.6.0 - - '@unocss/reset@66.6.0': {} - - '@unocss/rule-utils@66.6.0': - dependencies: - '@unocss/core': 66.6.0 - magic-string: 0.30.21 + '@typescript-eslint/types': 8.56.1 + eslint-visitor-keys: 5.0.1 - '@unocss/svelte-scoped@66.6.0': - dependencies: - '@unocss/config': 66.6.0 - '@unocss/core': 66.6.0 - '@unocss/preset-uno': 66.6.0 - '@unocss/preset-wind3': 66.6.0 - '@unocss/reset': 66.6.0 - acorn: 8.15.0 - css-tree: 3.1.0 - magic-string: 0.30.21 - zimmerframe: 1.1.4 + '@ungap/structured-clone@1.3.0': {} '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true @@ -17569,16 +17680,16 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitest/browser@3.2.4(playwright@1.58.2)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@3.2.4)': + '@vitest/browser@3.2.4(playwright@1.58.2)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@3.2.4)': dependencies: '@testing-library/dom': 10.4.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) - '@vitest/mocker': 3.2.4(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 3.2.4(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/utils': 3.2.4 magic-string: 0.30.21 sirv: 3.0.2 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.2)(@vitest/browser@3.2.4)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.2)(@vitest/browser@3.2.4)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) ws: 8.19.0 optionalDependencies: playwright: 1.58.2 @@ -17589,16 +17700,16 @@ snapshots: - vite optional: true - '@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/utils': 4.0.18 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) ws: 8.19.0 transitivePeerDependencies: - bufferutil @@ -17606,7 +17717,7 @@ snapshots: - utf-8-validate - vite - '@vitest/coverage-v8@4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.18 @@ -17618,9 +17729,9 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: - '@vitest/browser': 4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/browser': 4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/expect@3.2.4': dependencies: @@ -17639,46 +17750,46 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@3.2.4(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optional: true - '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.18(vite@6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(vite@6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.18(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@3.2.4': dependencies: @@ -17765,6 +17876,8 @@ snapshots: abbrev@3.0.1: {} + abbrev@4.0.0: {} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -17818,7 +17931,7 @@ snapshots: acorn-walk@8.3.4: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 optional: true acorn@8.15.0: {} @@ -17857,6 +17970,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@6.14.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -18313,26 +18433,11 @@ snapshots: - bluebird optional: true - cacache@19.0.1: - dependencies: - '@npmcli/fs': 4.0.0 - fs-minipass: 3.0.3 - glob: 10.5.0 - lru-cache: 10.4.3 - minipass: 7.1.2 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 7.0.4 - ssri: 12.0.0 - tar: 7.5.2 - unique-filename: 4.0.0 - cacache@20.0.3: dependencies: '@npmcli/fs': 5.0.0 fs-minipass: 3.0.3 - glob: 13.0.3 + glob: 13.0.6 lru-cache: 11.2.5 minipass: 7.1.2 minipass-collect: 2.0.1 @@ -18620,7 +18725,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@types/estree': 1.0.8 - acorn: 8.15.0 + acorn: 8.16.0 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -19216,8 +19321,6 @@ snapshots: define-lazy-prop@3.0.0: {} - defu@6.1.4: {} - degenerator@5.0.1: dependencies: ast-types: 0.13.4 @@ -19406,7 +19509,7 @@ snapshots: - supports-color - utf-8-validate - enhanced-resolve@5.18.4: + enhanced-resolve@5.19.0: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 @@ -19580,6 +19683,10 @@ snapshots: dependencies: eslint: 10.0.1(jiti@2.6.1) + eslint-config-prettier@10.1.8(eslint@10.0.2(jiti@2.6.1)): + dependencies: + eslint: 10.0.2(jiti@2.6.1) + eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)): dependencies: eslint: 9.39.2(jiti@2.6.1) @@ -19602,16 +19709,16 @@ snapshots: transitivePeerDependencies: - ts-node - eslint-plugin-svelte@3.14.0(eslint@10.0.0(jiti@2.6.1))(svelte@5.51.0)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)): + eslint-plugin-svelte@3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.51.0)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@24.10.13)(typescript@5.9.3)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) '@jridgewell/sourcemap-codec': 1.5.5 - eslint: 10.0.0(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) esutils: 2.0.3 globals: 16.5.0 known-css-properties: 0.37.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@24.10.13)(typescript@5.9.3)) postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.3 svelte-eslint-parser: 1.4.1(svelte@5.51.0) @@ -19620,29 +19727,29 @@ snapshots: transitivePeerDependencies: - ts-node - eslint-plugin-svelte@3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.51.0)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@24.10.13)(typescript@5.9.3)): + eslint-plugin-svelte@3.15.0(eslint@10.0.1(jiti@2.6.1))(svelte@5.53.1)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1(jiti@2.6.1)) '@jridgewell/sourcemap-codec': 1.5.5 - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.0.1(jiti@2.6.1) esutils: 2.0.3 globals: 16.5.0 known-css-properties: 0.37.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@24.10.13)(typescript@5.9.3)) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)) postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.3 - svelte-eslint-parser: 1.4.1(svelte@5.51.0) + svelte-eslint-parser: 1.4.1(svelte@5.53.1) optionalDependencies: - svelte: 5.51.0 + svelte: 5.53.1 transitivePeerDependencies: - ts-node - eslint-plugin-svelte@3.15.0(eslint@10.0.1(jiti@2.6.1))(svelte@5.53.1)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)): + eslint-plugin-svelte@3.15.0(eslint@10.0.2(jiti@2.6.1))(svelte@5.53.1)(ts-node@10.9.2(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1)) '@jridgewell/sourcemap-codec': 1.5.5 - eslint: 10.0.1(jiti@2.6.1) + eslint: 10.0.2(jiti@2.6.1) esutils: 2.0.3 globals: 16.5.0 known-css-properties: 0.37.0 @@ -19712,7 +19819,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.1.1 + minimatch: 10.2.2 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -19757,6 +19864,43 @@ snapshots: transitivePeerDependencies: - supports-color + eslint@10.0.2(jiti@2.6.1): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.2 + '@eslint/config-helpers': 0.5.2 + '@eslint/core': 1.1.0 + '@eslint/plugin-kit': 0.6.0 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.14.0 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.1 + eslint-visitor-keys: 5.0.1 + espree: 11.1.1 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.6.1 + transitivePeerDependencies: + - supports-color + eslint@9.39.2(jiti@2.6.1): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -20425,23 +20569,29 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.2.3 - minimatch: 10.2.0 + minimatch: 10.2.2 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.1 glob@13.0.1: dependencies: - minimatch: 10.1.2 + minimatch: 10.2.2 minipass: 7.1.2 path-scurry: 2.0.1 glob@13.0.3: dependencies: - minimatch: 10.2.0 + minimatch: 10.2.2 minipass: 7.1.2 path-scurry: 2.0.1 + glob@13.0.6: + dependencies: + minimatch: 10.2.2 + minipass: 7.1.3 + path-scurry: 2.0.2 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -20451,13 +20601,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@9.3.5: - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.11.1 - global-directory@4.0.1: dependencies: ini: 4.1.1 @@ -20691,7 +20834,7 @@ snapshots: ignore-walk@8.0.0: dependencies: - minimatch: 10.2.0 + minimatch: 10.2.2 ignore@5.3.2: {} @@ -20699,7 +20842,8 @@ snapshots: immediate@3.3.0: {} - immutable@5.1.4: {} + immutable@5.1.4: + optional: true import-fresh@3.3.1: dependencies: @@ -21560,12 +21704,12 @@ snapshots: type-is: 2.0.1 vary: 1.1.2 - lerna@9.0.3(@swc/core@1.15.8)(@types/node@25.2.2): + lerna@9.0.4(@swc/core@1.15.8)(@types/node@25.2.2): dependencies: - '@lerna/create': 9.0.3(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3) + '@lerna/create': 9.0.4(@swc/core@1.15.8)(@types/node@25.2.2)(typescript@5.9.3) '@npmcli/arborist': 9.1.6 '@npmcli/package-json': 7.0.2 - '@npmcli/run-script': 10.0.2 + '@npmcli/run-script': 10.0.3 '@nx/devkit': 22.3.3(nx@22.3.3(@swc/core@1.15.8)) '@octokit/plugin-enterprise-rest': 6.0.1 '@octokit/rest': 20.1.2 @@ -21618,14 +21762,14 @@ snapshots: pify: 5.0.0 read-cmd-shim: 4.0.0 resolve-from: 5.0.0 - rimraf: 4.4.1 + rimraf: 6.1.3 semver: 7.7.2 set-blocking: 2.0.0 signal-exit: 3.0.7 slash: 3.0.0 ssri: 12.0.0 string-width: 4.2.3 - tar: 6.2.1 + tar: 7.5.7 temp-dir: 1.0.0 through: 2.3.8 tinyglobby: 0.2.12 @@ -21742,54 +21886,54 @@ snapshots: transitivePeerDependencies: - supports-color - lightningcss-android-arm64@1.30.2: + lightningcss-android-arm64@1.31.1: optional: true - lightningcss-darwin-arm64@1.30.2: + lightningcss-darwin-arm64@1.31.1: optional: true - lightningcss-darwin-x64@1.30.2: + lightningcss-darwin-x64@1.31.1: optional: true - lightningcss-freebsd-x64@1.30.2: + lightningcss-freebsd-x64@1.31.1: optional: true - lightningcss-linux-arm-gnueabihf@1.30.2: + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true - lightningcss-linux-arm64-gnu@1.30.2: + lightningcss-linux-arm64-gnu@1.31.1: optional: true - lightningcss-linux-arm64-musl@1.30.2: + lightningcss-linux-arm64-musl@1.31.1: optional: true - lightningcss-linux-x64-gnu@1.30.2: + lightningcss-linux-x64-gnu@1.31.1: optional: true - lightningcss-linux-x64-musl@1.30.2: + lightningcss-linux-x64-musl@1.31.1: optional: true - lightningcss-win32-arm64-msvc@1.30.2: + lightningcss-win32-arm64-msvc@1.31.1: optional: true - lightningcss-win32-x64-msvc@1.30.2: + lightningcss-win32-x64-msvc@1.31.1: optional: true - lightningcss@1.30.2: + lightningcss@1.31.1: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.30.2 - lightningcss-darwin-arm64: 1.30.2 - lightningcss-darwin-x64: 1.30.2 - lightningcss-freebsd-x64: 1.30.2 - lightningcss-linux-arm-gnueabihf: 1.30.2 - lightningcss-linux-arm64-gnu: 1.30.2 - lightningcss-linux-arm64-musl: 1.30.2 - lightningcss-linux-x64-gnu: 1.30.2 - lightningcss-linux-x64-musl: 1.30.2 - lightningcss-win32-arm64-msvc: 1.30.2 - lightningcss-win32-x64-msvc: 1.30.2 + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 lilconfig@2.1.0: {} @@ -21946,22 +22090,6 @@ snapshots: make-error@1.3.6: {} - make-fetch-happen@14.0.3: - dependencies: - '@npmcli/agent': 3.0.0 - cacache: 19.0.1 - http-cache-semantics: 4.2.0 - minipass: 7.1.2 - minipass-fetch: 4.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 1.0.0 - proc-log: 5.0.0 - promise-retry: 2.0.1 - ssri: 12.0.0 - transitivePeerDependencies: - - supports-color - make-fetch-happen@15.0.2: dependencies: '@npmcli/agent': 4.0.0 @@ -22064,13 +22192,13 @@ snapshots: mdn-data@2.12.2: {} - mdsvex@0.12.6(svelte@5.51.0): + mdsvex@0.12.6(svelte@5.53.1): dependencies: '@types/mdast': 4.0.4 '@types/unist': 2.0.11 prism-svelte: 0.4.7 prismjs: 1.30.0 - svelte: 5.51.0 + svelte: 5.53.1 unist-util-visit: 2.0.3 vfile-message: 2.0.4 @@ -22157,17 +22285,7 @@ snapshots: min-indent@1.0.1: {} - minimatch@10.1.1: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - - minimatch@10.1.2: - dependencies: - '@isaacs/brace-expansion': 5.0.1 - - minimatch@10.2.0: - dependencies: - brace-expansion: 5.0.2 + mini-svg-data-uri@1.4.4: {} minimatch@10.2.2: dependencies: @@ -22185,10 +22303,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minimatch@8.0.4: - dependencies: - brace-expansion: 2.0.2 - minimatch@9.0.3: dependencies: brace-expansion: 2.0.2 @@ -22257,12 +22371,12 @@ snapshots: dependencies: yallist: 4.0.0 - minipass@4.2.8: {} - minipass@5.0.0: {} minipass@7.1.2: {} + minipass@7.1.3: {} + minizlib@2.1.2: dependencies: minipass: 3.3.6 @@ -22567,18 +22681,18 @@ snapshots: node-gyp-build@4.8.4: {} - node-gyp@11.5.0: + node-gyp@12.2.0: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.3 graceful-fs: 4.2.11 - make-fetch-happen: 14.0.3 - nopt: 8.1.0 - proc-log: 5.0.0 + make-fetch-happen: 15.0.3 + nopt: 9.0.0 + proc-log: 6.1.0 semver: 7.7.3 - tar: 7.5.2 + tar: 7.5.7 tinyglobby: 0.2.15 - which: 5.0.0 + which: 6.0.0 transitivePeerDependencies: - supports-color @@ -22639,6 +22753,19 @@ snapshots: touch: 3.1.1 undefsafe: 2.0.5 + nodemon@3.1.14: + dependencies: + chokidar: 3.6.0 + debug: 4.4.3(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 10.2.2 + pstree.remy: 1.1.8 + semver: 7.7.3 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -22648,6 +22775,10 @@ snapshots: dependencies: abbrev: 3.0.1 + nopt@9.0.0: + dependencies: + abbrev: 4.0.0 + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -22690,7 +22821,7 @@ snapshots: dependencies: npm-normalize-package-bin: 5.0.0 - npm-check-updates@19.3.2: {} + npm-check-updates@19.4.1: {} npm-install-checks@7.1.2: dependencies: @@ -22741,7 +22872,7 @@ snapshots: dependencies: '@npmcli/redact': 3.2.2 jsonparse: 1.3.1 - make-fetch-happen: 15.0.2 + make-fetch-happen: 15.0.3 minipass: 7.1.2 minipass-fetch: 4.0.1 minizlib: 3.1.0 @@ -22765,7 +22896,7 @@ snapshots: npm-watch@0.13.0: dependencies: - nodemon: 3.1.11 + nodemon: 3.1.14 through2: 4.0.2 npm@11.9.0: {} @@ -22930,7 +23061,7 @@ snapshots: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.6.1 + cli-spinners: 2.9.2 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 @@ -23057,7 +23188,7 @@ snapshots: '@npmcli/installed-package-contents': 3.0.0 '@npmcli/package-json': 7.0.2 '@npmcli/promise-spawn': 8.0.3 - '@npmcli/run-script': 10.0.2 + '@npmcli/run-script': 10.0.3 cacache: 20.0.3 fs-minipass: 3.0.3 minipass: 7.1.2 @@ -23069,7 +23200,7 @@ snapshots: promise-retry: 2.0.1 sigstore: 4.1.0 ssri: 12.0.0 - tar: 7.5.2 + tar: 7.5.7 transitivePeerDependencies: - supports-color @@ -23079,7 +23210,7 @@ snapshots: '@npmcli/installed-package-contents': 4.0.0 '@npmcli/package-json': 7.0.2 '@npmcli/promise-spawn': 9.0.1 - '@npmcli/run-script': 10.0.2 + '@npmcli/run-script': 10.0.3 cacache: 20.0.3 fs-minipass: 3.0.3 minipass: 7.1.2 @@ -23091,7 +23222,7 @@ snapshots: promise-retry: 2.0.1 sigstore: 4.1.0 ssri: 13.0.0 - tar: 7.5.2 + tar: 7.5.7 transitivePeerDependencies: - supports-color @@ -23190,6 +23321,11 @@ snapshots: lru-cache: 11.2.5 minipass: 7.1.2 + path-scurry@2.0.2: + dependencies: + lru-cache: 11.2.5 + minipass: 7.1.3 + path-temp@2.1.0: dependencies: unique-string: 2.0.0 @@ -23460,6 +23596,11 @@ snapshots: dependencies: postcss: 8.5.6 + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 @@ -23893,8 +24034,6 @@ snapshots: qs@6.5.3: {} - quansync@1.0.0: {} - query-string@9.3.1: dependencies: decode-uri-component: 0.4.1 @@ -24117,8 +24256,6 @@ snapshots: reflect-metadata@0.2.2: {} - regexparam@2.0.2: {} - registry-auth-token@5.1.1: dependencies: '@pnpm/npm-conf': 3.0.2 @@ -24179,7 +24316,7 @@ snapshots: resolve-import@2.1.1: dependencies: - glob: 13.0.3 + glob: 13.0.6 walk-up-path: 4.0.0 resolve-pkg-maps@1.0.0: {} @@ -24210,13 +24347,9 @@ snapshots: glob: 7.2.3 optional: true - rimraf@4.4.1: - dependencies: - glob: 9.3.5 - - rimraf@6.1.2: + rimraf@6.1.3: dependencies: - glob: 13.0.3 + glob: 13.0.6 package-json-from-dist: 1.0.1 robust-predicates@3.0.2: {} @@ -24309,7 +24442,7 @@ snapshots: safer-buffer@2.1.2: {} - sanitize-html@2.17.0: + sanitize-html@2.17.1: dependencies: deepmerge: 4.3.1 escape-string-regexp: 4.0.0 @@ -24325,6 +24458,7 @@ snapshots: source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.4 + optional: true sax@1.4.4: {} @@ -24891,10 +25025,10 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - sveld@0.25.13(@babel/core@7.28.6)(postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2))(postcss@8.5.6)(sass@1.97.3): + sveld@0.26.2(@babel/core@7.28.6)(postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2))(postcss@8.5.6)(sass@1.97.3): dependencies: '@rollup/plugin-node-resolve': 13.3.0(rollup@2.79.2) - acorn: 8.15.0 + acorn: 8.16.0 comment-parser: 1.4.1 prettier: 3.8.1 rollup: 2.79.2 @@ -24926,18 +25060,6 @@ snapshots: transitivePeerDependencies: - picomatch - svelte-check@4.3.6(picomatch@4.0.3)(svelte@5.51.0)(typescript@5.9.3): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - chokidar: 4.0.3 - fdir: 6.5.0(picomatch@4.0.3) - picocolors: 1.1.1 - sade: 1.8.1 - svelte: 5.51.0 - typescript: 5.9.3 - transitivePeerDependencies: - - picomatch - svelte-check@4.4.0(picomatch@4.0.3)(svelte@5.51.0)(typescript@5.9.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -25019,9 +25141,15 @@ snapshots: sass: 1.97.3 typescript: 5.9.3 - svelte-spa-router@4.0.1: + svelte-preprocess@6.0.3(@babel/core@7.28.6)(postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2))(postcss@8.5.6)(sass@1.97.3)(svelte@5.53.1)(typescript@5.9.3): dependencies: - regexparam: 2.0.2 + svelte: 5.53.1 + optionalDependencies: + '@babel/core': 7.28.6 + postcss: 8.5.6 + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2) + sass: 1.97.3 + typescript: 5.9.3 svelte2tsx@0.7.46(svelte@5.48.5)(typescript@5.9.3): dependencies: @@ -25057,7 +25185,7 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 '@types/estree': 1.0.8 - acorn: 8.15.0 + acorn: 8.16.0 aria-query: 5.3.2 axobject-query: 4.1.0 code-red: 1.0.4 @@ -25148,10 +25276,10 @@ snapshots: sync-content@2.0.3: dependencies: - glob: 13.0.3 + glob: 13.0.6 mkdirp: 3.0.1 path-scurry: 2.0.1 - rimraf: 6.1.2 + rimraf: 6.1.3 tshy: 3.1.3 synckit@0.11.12: @@ -25163,7 +25291,9 @@ snapshots: tagged-tag@1.0.0: {} - tailwindcss@4.1.18: {} + tailwind-merge@3.5.0: {} + + tailwindcss@4.2.1: {} tapable@2.3.0: {} @@ -25212,7 +25342,7 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - tar@7.5.2: + tar@7.5.7: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -25234,7 +25364,7 @@ snapshots: terser@5.44.1: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 optional: true @@ -25406,7 +25536,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 24.10.13 - acorn: 8.15.0 + acorn: 8.16.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -25427,7 +25557,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 25.2.2 - acorn: 8.15.0 + acorn: 8.16.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -25455,11 +25585,11 @@ snapshots: chalk: 5.6.2 chokidar: 4.0.3 foreground-child: 4.0.3 - minimatch: 10.1.1 + minimatch: 10.2.2 mkdirp: 3.0.1 polite-json: 5.0.0 resolve-import: 2.1.1 - rimraf: 6.1.2 + rimraf: 6.1.3 sync-content: 2.0.3 typescript: 5.9.3 walk-up-path: 4.0.0 @@ -25472,7 +25602,7 @@ snapshots: tsx@4.21.0: dependencies: - esbuild: 0.27.2 + esbuild: 0.27.3 get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -25485,7 +25615,7 @@ snapshots: dependencies: '@tufjs/models': 4.1.0 debug: 4.4.3(supports-color@8.1.1) - make-fetch-happen: 15.0.2 + make-fetch-happen: 15.0.3 transitivePeerDependencies: - supports-color @@ -25600,19 +25730,6 @@ snapshots: uid2@1.0.0: {} - unconfig-core@7.4.2: - dependencies: - '@quansync/fs': 1.0.0 - quansync: 1.0.0 - - unconfig@7.4.2: - dependencies: - '@quansync/fs': 1.0.0 - defu: 6.1.4 - jiti: 2.6.1 - quansync: 1.0.0 - unconfig-core: 7.4.2 - undefsafe@2.0.5: {} underscore@1.13.7: {} @@ -25640,10 +25757,6 @@ snapshots: unique-slug: 2.0.2 optional: true - unique-filename@4.0.0: - dependencies: - unique-slug: 5.0.0 - unique-filename@5.0.0: dependencies: unique-slug: 6.0.0 @@ -25653,10 +25766,6 @@ snapshots: imurmurhash: 0.1.4 optional: true - unique-slug@5.0.0: - dependencies: - imurmurhash: 0.1.4 - unique-slug@6.0.0: dependencies: imurmurhash: 0.1.4 @@ -25791,13 +25900,13 @@ snapshots: '@types/unist': 2.0.11 unist-util-stringify-position: 2.0.3 - vite-node@3.2.4(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite-node@3.2.4(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@8.1.1) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -25812,17 +25921,17 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: debug: 4.4.3(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - typescript - vite@6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -25834,13 +25943,13 @@ snapshots: '@types/node': 24.10.13 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.97.3 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -25852,13 +25961,13 @@ snapshots: '@types/node': 25.2.2 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.97.3 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -25870,13 +25979,13 @@ snapshots: '@types/node': 24.10.13 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.97.3 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -25888,29 +25997,33 @@ snapshots: '@types/node': 25.2.2 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.97.3 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vitefu@1.1.1(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + vitefu@1.1.1(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + optionalDependencies: + vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + + vitefu@1.1.1(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): optionalDependencies: - vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu@1.1.1(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + vitefu@1.1.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): optionalDependencies: - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu@1.1.1(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + vitefu@1.1.2(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): optionalDependencies: - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.2)(@vitest/browser@3.2.4)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.2)(@vitest/browser@3.2.4)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -25928,13 +26041,13 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 25.2.2 - '@vitest/browser': 3.2.4(playwright@1.58.2)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@3.2.4) + '@vitest/browser': 3.2.4(playwright@1.58.2)(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@3.2.4) happy-dom: 20.5.0 jsdom: 28.0.0(@noble/hashes@1.8.0) transitivePeerDependencies: @@ -25951,10 +26064,10 @@ snapshots: - tsx - yaml - vitest@4.0.18(@types/node@24.10.13)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.18(@types/node@24.10.13)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.18(vite@6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -25971,7 +26084,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.13 @@ -25990,10 +26103,10 @@ snapshots: - tsx - yaml - vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.18(@types/node@25.2.2)(happy-dom@20.5.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@1.8.0))(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.18(vite@6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -26010,7 +26123,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.2.2