diff --git a/apps/solid/src/layout/app-bars/top-app-bar.component.tsx b/apps/solid/src/layout/app-bars/top-app-bar.component.tsx index 89bb486..16cd49e 100644 --- a/apps/solid/src/layout/app-bars/top-app-bar.component.tsx +++ b/apps/solid/src/layout/app-bars/top-app-bar.component.tsx @@ -1,12 +1,18 @@ +import { Layout } from '@spuxx/solid'; import { AppBar, Button } from '@spuxx/solid'; export const TopAppBar = () => { return ( - - + + Hello World! + + )); + expect(screen.queryByRole('dialog')).not.toBeInTheDocument(); + Layout.openSidebar(); + await sleep(50); + expect(screen.queryByRole('dialog')).toBeInTheDocument(); + Layout.closeSidebar(); + await sleep(50); + expect(screen.queryByRole('dialog')).not.toBeInTheDocument(); + }); + }); + + describe('closeSidebarOnMobile', () => { + it('should close the sidebar when viewport is considered a mobile device', async () => { + page.viewport(375, 667); + render(() => ( + + Hello World! + + )); + Layout.openSidebar(); + await sleep(50); + expect(screen.queryByRole('dialog')).toBeInTheDocument(); + Layout.closeSidebarOnMobile(); + await sleep(50); + expect(screen.queryByRole('dialog')).not.toBeInTheDocument(); + }); + + it('should not close the sidebar when viewport is considered a desktop', async () => { + page.viewport(1920, 1080); + render(() => ( + + Hello World! + + )); + Layout.openSidebar(); + await sleep(50); + expect(screen.queryByRole('dialog')).toBeInTheDocument(); + Layout.closeSidebarOnMobile(); + await sleep(50); + expect(screen.queryByRole('dialog')).toBeInTheDocument(); + }); + }); +}); diff --git a/packages/solid/src/layout/layout.service.ts b/packages/solid/src/layout/layout.service.ts new file mode 100644 index 0000000..1397a39 --- /dev/null +++ b/packages/solid/src/layout/layout.service.ts @@ -0,0 +1,60 @@ +import { UserAgent } from '@spuxx/browser-utils'; +import { ServiceMixin } from '@spuxx/js-utils'; +import { createSignal } from 'solid-js'; + +interface LayoutState { + sidebarOpen: boolean; +} + +/** + * The `Layout` service provides global access to the layout of the application. + */ +export class Layout extends ServiceMixin() { + state = createSignal({ sidebarOpen: false }); + + /** + * Opens the sidebar. + */ + static openSidebar = (): void => { + this.setState({ ...this.state, sidebarOpen: true }); + }; + + /** + * Closes the sidebar. + */ + static closeSidebar = (): void => { + this.setState({ ...this.state, sidebarOpen: false }); + }; + + /** + * Closes the sidebar if the current viewport is considered a mobile device. + */ + static closeSidebarOnMobile = (): void => { + if (UserAgent.isDesktop) return; + this.setState({ ...this.state, sidebarOpen: false }); + }; + + /** + * Toggles the sidebar. + */ + static toggleSidebar = (): void => { + this.setState({ ...this.state, sidebarOpen: !this.state.sidebarOpen }); + }; + + /** + * Returns the current state of the layout. The state is read-only. + */ + static get state(): LayoutState { + const [state] = this.instance.state; + return state(); + } + + /** + * Sets the current state of the layout. You should avoid manipulating the modal state directly + * and instead use the provided methods. + */ + static setState = (newState: LayoutState): void => { + const [_state, setModalState] = this.instance.state; + setModalState(newState); + }; +} diff --git a/packages/solid/src/layout/sidebar/areas/content/sidebar-content.component.tsx b/packages/solid/src/layout/sidebar/areas/content/sidebar-content.component.tsx new file mode 100644 index 0000000..7e26808 --- /dev/null +++ b/packages/solid/src/layout/sidebar/areas/content/sidebar-content.component.tsx @@ -0,0 +1,11 @@ +import { Component } from 'solid-js'; +import { SidebarContentProps } from './sidebar-content.types'; +import { attributes, classNames } from '@src/main'; + +export const SidebarContent: Component = (props) => { + return ( +
+ {props.children} +
+ ); +}; diff --git a/packages/solid/src/layout/sidebar/areas/content/sidebar-content.types.ts b/packages/solid/src/layout/sidebar/areas/content/sidebar-content.types.ts new file mode 100644 index 0000000..6030264 --- /dev/null +++ b/packages/solid/src/layout/sidebar/areas/content/sidebar-content.types.ts @@ -0,0 +1,6 @@ +import { ComponentProps } from '@src/main'; +import type { JSX, ParentProps } from 'solid-js'; + +export interface SidebarContentProps + extends ComponentProps>, + ParentProps {} diff --git a/packages/solid/src/layout/sidebar/areas/toolbar/index.ts b/packages/solid/src/layout/sidebar/areas/toolbar/index.ts new file mode 100644 index 0000000..03954c1 --- /dev/null +++ b/packages/solid/src/layout/sidebar/areas/toolbar/index.ts @@ -0,0 +1,2 @@ +export * from './sidebar-toolbar.component'; +export * from './sidebar-toolbar.types'; diff --git a/packages/solid/src/layout/sidebar/areas/toolbar/sidebar-toolbar.component.tsx b/packages/solid/src/layout/sidebar/areas/toolbar/sidebar-toolbar.component.tsx new file mode 100644 index 0000000..2e4fe41 --- /dev/null +++ b/packages/solid/src/layout/sidebar/areas/toolbar/sidebar-toolbar.component.tsx @@ -0,0 +1,11 @@ +import { Component } from 'solid-js'; +import { SidebarToolbarProps } from './sidebar-toolbar.types'; +import { attributes, classNames } from '@src/main'; + +export const SidebarToolbar: Component = (props) => { + return ( +
+ {props.children} +
+ ); +}; diff --git a/packages/solid/src/layout/sidebar/areas/toolbar/sidebar-toolbar.types.ts b/packages/solid/src/layout/sidebar/areas/toolbar/sidebar-toolbar.types.ts new file mode 100644 index 0000000..b981314 --- /dev/null +++ b/packages/solid/src/layout/sidebar/areas/toolbar/sidebar-toolbar.types.ts @@ -0,0 +1,6 @@ +import { ComponentProps } from '@src/main'; +import type { JSX, ParentProps } from 'solid-js'; + +export interface SidebarToolbarProps + extends ComponentProps>, + ParentProps {} diff --git a/packages/solid/src/layout/sidebar/index.ts b/packages/solid/src/layout/sidebar/index.ts new file mode 100644 index 0000000..95e069f --- /dev/null +++ b/packages/solid/src/layout/sidebar/index.ts @@ -0,0 +1,2 @@ +export * from './sidebar.component'; +export * from './sidebar.types'; diff --git a/packages/solid/src/layout/sidebar/sidebar.component.test.tsx b/packages/solid/src/layout/sidebar/sidebar.component.test.tsx new file mode 100644 index 0000000..2c48072 --- /dev/null +++ b/packages/solid/src/layout/sidebar/sidebar.component.test.tsx @@ -0,0 +1,128 @@ +import { afterEach, describe, expect, it } from 'vitest'; +import { fireEvent, render, screen } from '@solidjs/testing-library'; +import { Sidebar } from './sidebar.component'; +import { Layout } from '../layout.service'; +import { sleep } from '@spuxx/js-utils'; + +describe('Sidebar', () => { + afterEach(() => { + Layout.destroy(); + }); + + it('should render with default values', async () => { + render(() => ( + + + + + + Hello World! + + )); + Layout.openSidebar(); + const sidebar = screen.queryByRole('dialog'); + expect(sidebar).toBeInTheDocument(); + expect(sidebar).toHaveClass('spx', 'spx-sidebar'); + expect(sidebar).toHaveAttribute('data-side', 'left'); + expect(sidebar).toHaveTextContent('Hello World!'); + }); + + it('should render with custom values', () => { + render(() => ( + + + + + + Hello World! + + )); + Layout.openSidebar(); + const sidebar = screen.queryByRole('dialog'); + expect(sidebar).toBeInTheDocument(); + expect(sidebar).toHaveClass('spx', 'spx-sidebar', 'my-class'); + expect(sidebar).toHaveAttribute('id', '123'); + expect(sidebar).toHaveAttribute('data-side', 'right'); + expect(sidebar).toHaveStyle({ color: 'rgb(255,0,0)' }); + expect(sidebar).toHaveTextContent('Hello World!'); + }); + + it('should close the sidebar by dragging', async () => { + render(() => ( + + Drag me! + + )); + Layout.openSidebar(); + const sidebar = screen.queryByRole('dialog'); + expect(sidebar).toBeInTheDocument(); + fireEvent.pointerDown(sidebar!, { clientX: 100 }); + fireEvent.pointerMove(sidebar!, { clientX: 0 }); + fireEvent.pointerUp(sidebar!); + await sleep(50); + expect(screen.queryByRole('dialog')).not.toBeInTheDocument(); + }); + + describe('Toolbar', () => { + it('should render with default values', () => { + const { container } = render(() => Hello World!); + const toolbar = container.querySelector('.spx-sidebar-toolbar'); + expect(toolbar).toBeInTheDocument(); + expect(toolbar).toHaveClass('spx', 'spx-sidebar-toolbar'); + expect(toolbar).toHaveTextContent('Hello World!'); + }); + + it('should render with custom values', () => { + const { container } = render(() => ( + + Hello World! + + )); + const toolbar = container.querySelector('.spx-sidebar-toolbar'); + expect(toolbar).toBeInTheDocument(); + expect(toolbar).toHaveClass('spx', 'spx-sidebar-toolbar', 'my-class'); + expect(toolbar).toHaveAttribute('id', '123'); + expect(toolbar).toHaveStyle({ color: 'rgb(255,0,0)' }); + }); + }); + + describe('Content', () => { + it('should render with default values', () => { + const { container } = render(() => Hello World!); + const content = container.querySelector('.spx-sidebar-content'); + expect(content).toBeInTheDocument(); + expect(content).toHaveClass('spx', 'spx-sidebar-content'); + expect(content).toHaveTextContent('Hello World!'); + }); + + it('should render with custom values', () => { + const { container } = render(() => ( + + Hello World! + + )); + const content = container.querySelector('.spx-sidebar-content'); + expect(content).toBeInTheDocument(); + expect(content).toHaveClass('spx', 'spx-sidebar-content', 'my-class'); + expect(content).toHaveAttribute('id', '123'); + expect(content).toHaveStyle({ color: 'rgb(255,0,0)' }); + }); + }); +}); diff --git a/packages/solid/src/layout/sidebar/sidebar.component.tsx b/packages/solid/src/layout/sidebar/sidebar.component.tsx new file mode 100644 index 0000000..70be93c --- /dev/null +++ b/packages/solid/src/layout/sidebar/sidebar.component.tsx @@ -0,0 +1,54 @@ +import { Component, Show } from 'solid-js'; +import Drawer from '@corvu/drawer'; +import { SidebarProps } from './sidebar.types'; +import { Layout } from '../layout.service'; +import { attributes, classNames } from '@src/main'; +import { SidebarToolbar } from './areas/toolbar'; +import { SidebarContent } from './areas/content/sidebar-content.component'; +import { UserAgent } from '@spuxx/browser-utils'; + +const Sidebar: Component & { + Toolbar: typeof SidebarToolbar; + Content: typeof SidebarContent; +} = (props) => { + const { side = 'left' } = props; + const handleOpenChange = (open: boolean) => { + // The value check is here mostly for safety and we don't usually run into it. + /* v8 ignore next */ + if (open) return; + Layout.toggleSidebar(); + }; + + return ( + + + + + + + {props.children} + + + + ); +}; + +Sidebar.Toolbar = SidebarToolbar; +Sidebar.Content = SidebarContent; + +export { Sidebar }; diff --git a/packages/solid/src/layout/sidebar/sidebar.types.ts b/packages/solid/src/layout/sidebar/sidebar.types.ts new file mode 100644 index 0000000..01ee0d6 --- /dev/null +++ b/packages/solid/src/layout/sidebar/sidebar.types.ts @@ -0,0 +1,15 @@ +import { ComponentProps } from '@src/main'; +import type { JSX, ParentProps } from 'solid-js'; + +/** + * The Sidebar component properties. + */ +export interface SidebarProps + extends ComponentProps>, + ParentProps { + /** + * Where the sidebar should be positioned. + * @default 'left' + */ + side?: 'left' | 'right'; +} diff --git a/packages/solid/src/main.ts b/packages/solid/src/main.ts index bba8216..502f0c8 100644 --- a/packages/solid/src/main.ts +++ b/packages/solid/src/main.ts @@ -5,12 +5,13 @@ export * from './types/public'; export * from './components/control/button'; +export * from './components/control/button-link'; export * from './components/control/input'; export * from './components/control/select'; export * from './components/layout/container'; export * from './components/layout/divider'; export * from './components/typography/heading'; -export * from './layout/app-bar'; +export * from './layout'; export * from './modal'; export * from './utils/component.utils'; diff --git a/packages/solid/vitest.workspace.ts b/packages/solid/vitest.workspace.ts index 9b5c92f..8a280df 100644 --- a/packages/solid/vitest.workspace.ts +++ b/packages/solid/vitest.workspace.ts @@ -10,6 +10,7 @@ export default defineWorkspace([ browser: { enabled: true, provider: 'playwright', + viewport: { width: 375, height: 667 }, // https://vitest.dev/guide/browser/playwright instances: [ { browser: 'chromium' }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4216de6..49812b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -474,6 +474,9 @@ importers: '@corvu/dialog': specifier: 0.2.4 version: 0.2.4(solid-js@1.9.5) + '@corvu/drawer': + specifier: 0.2.3 + version: 0.2.3(solid-js@1.9.5) '@spuxx/js-utils': specifier: ^1.3.0 version: 1.3.0(@modyfi/vite-plugin-yaml@1.1.0(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.0))) @@ -744,11 +747,6 @@ packages: resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.10': - resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.26.8': resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==} engines: {node: '>=6.0.0'} @@ -777,10 +775,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.26.10': - resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.26.7': resolution: {integrity: sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==} engines: {node: '>=6.9.0'} @@ -801,10 +795,6 @@ packages: resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.10': - resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} - engines: {node: '>=6.9.0'} - '@babel/types@7.26.8': resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==} engines: {node: '>=6.9.0'} @@ -838,6 +828,16 @@ packages: peerDependencies: solid-js: ^1.8 + '@corvu/drawer@0.2.3': + resolution: {integrity: sha512-ZCEwJF5Rca2s9qhAlFWB7Y3uVTYClNKRek5xMfUT6fEJ+evPCp5N7oxv3eqxv1iLSlu7/JZTee/Wi4QkOsNmiw==} + peerDependencies: + solid-js: ^1.8 + + '@corvu/utils@0.3.2': + resolution: {integrity: sha512-ZWlyWEE8qV9+CB9OAyo2bTrZGXQN9ZeM+JfYv89zoR+lRACKTDuoOZEdiyL8Uc7U5dUSH1uTqKhTTnaHWb+wZA==} + peerDependencies: + solid-js: ^1.8 + '@corvu/utils@0.4.2': resolution: {integrity: sha512-Ox2kYyxy7NoXdKWdHeDEjZxClwzO4SKM8plAaVwmAJPxHMqA0rLOoAsa+hBDwRLpctf+ZRnAd/ykguuJidnaTA==} peerDependencies: @@ -1396,8 +1396,26 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.8': - resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} + '@inquirer/confirm@5.1.6': + resolution: {integrity: sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.7': + resolution: {integrity: sha512-Xrfbrw9eSiHb+GsesO8TQIeHSMTP0xyvTCeeYevgZ4sKW+iz9w/47bgfG9b0niQm+xaLY2EWPBINUPldLwvYiw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.1.7': + resolution: {integrity: sha512-AA9CQhlrt6ZgiSy6qoAigiA1izOa751ugX6ioSjqgJ+/Gd+tEN/TORk5sUYNjXuHWfW0r1n/a6ak4u/NqHHrtA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1405,8 +1423,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.9': - resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==} + '@inquirer/core@10.1.8': + resolution: {integrity: sha512-HpAqR8y715zPpM9e/9Q+N88bnGwqqL8ePgZ0SMv/s3673JLMv3bIkoivGmjPqXlEgisUksSXibweQccUwEx4qQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1509,6 +1527,15 @@ packages: '@types/node': optional: true + '@inquirer/type@3.0.4': + resolution: {integrity: sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/type@3.0.5': resolution: {integrity: sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==} engines: {node: '>=18'} @@ -1838,8 +1865,8 @@ packages: resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} engines: {node: '>= 18'} - '@octokit/core@5.2.0': - resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} + '@octokit/core@5.2.1': + resolution: {integrity: sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==} engines: {node: '>= 18'} '@octokit/endpoint@9.0.6': @@ -1850,8 +1877,8 @@ packages: resolution: {integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==} engines: {node: '>= 18'} - '@octokit/openapi-types@23.0.1': - resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} + '@octokit/openapi-types@24.2.0': + resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} '@octokit/plugin-paginate-rest@11.4.4-cjs.2': resolution: {integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==} @@ -1883,8 +1910,8 @@ packages: resolution: {integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==} engines: {node: '>= 18'} - '@octokit/types@13.8.0': - resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} + '@octokit/types@13.10.0': + resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -2130,6 +2157,21 @@ packages: resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} engines: {node: '>=12'} + '@solid-primitives/memo@1.4.1': + resolution: {integrity: sha512-MzNCJNpXidQdLOZUsEkwpuq52uwT8zrFrBxEVMEr9N35yIIvGhjqwrI1M6xzPmJGzuVUe8anCk57q+N5gyRk0Q==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/scheduled@1.5.0': + resolution: {integrity: sha512-RVw24IRNh1FQ4DCMb3OahB70tXIwc5vH8nhR4nNPsXwUPQeuOkLsDI5BlxaPk0vyZgqw9lDpufgI3HnPwplgDw==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/utils@6.3.0': + resolution: {integrity: sha512-e7hTlJ1Ywh2+g/Qug+n4L1mpfxsikoIS4/sHE2EK9WatQt8UJqop/vE6bsLnXlU1xuhb/jo94Ah5Y27rd4wP7A==} + peerDependencies: + solid-js: ^1.6.12 + '@solidjs/router@0.15.3': resolution: {integrity: sha512-iEbW8UKok2Oio7o6Y4VTzLj+KFCmQPGEpm1fS3xixwFBdclFVBvaQVeibl1jys4cujfAK5Kn6+uG2uBm3lxOMw==} peerDependencies: @@ -2696,9 +2738,6 @@ packages: '@volar/language-core@2.4.11': resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} - '@volar/language-core@2.4.12': - resolution: {integrity: sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==} - '@volar/language-server@2.4.11': resolution: {integrity: sha512-W9P8glH1M8LGREJ7yHRCANI5vOvTrRO15EMLdmh5WNF9sZYSEbQxiHKckZhvGIkbeR1WAlTl3ORTrJXUghjk7g==} @@ -2708,15 +2747,9 @@ packages: '@volar/source-map@2.4.11': resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} - '@volar/source-map@2.4.12': - resolution: {integrity: sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==} - '@volar/typescript@2.4.11': resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} - '@volar/typescript@2.4.12': - resolution: {integrity: sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==} - '@vscode/emmet-helper@2.11.0': resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} @@ -3117,6 +3150,11 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + browserslist@4.24.4: resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -3183,8 +3221,14 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001705: - resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==} + caniuse-lite@1.0.30001647: + resolution: {integrity: sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==} + + caniuse-lite@1.0.30001701: + resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==} + + caniuse-lite@1.0.30001707: + resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3492,8 +3536,8 @@ packages: css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - css-selector-parser@3.1.1: - resolution: {integrity: sha512-Y+DuvJ7JAjpL1f4DeILe5sXCC3kRXMl0DxM4lAWbS8/jEZ29o3V0L5TL6zIifj4Csmj6c+jiF2ENjida2OVOGA==} + css-selector-parser@3.0.5: + resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} @@ -3561,6 +3605,9 @@ packages: decimal.js@10.5.0: resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-named-character-reference@1.1.0: resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} @@ -3726,8 +3773,11 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.120: - resolution: {integrity: sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==} + electron-to-chromium@1.5.109: + resolution: {integrity: sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==} + + electron-to-chromium@1.5.4: + resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} @@ -3814,6 +3864,10 @@ packages: engines: {node: '>=18'} hasBin: true + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -5111,6 +5165,9 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + micromark-core-commonmark@2.0.2: + resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -5207,6 +5264,9 @@ packages: micromark-util-sanitize-uri@2.0.1: resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + micromark-util-subtokenize@2.0.4: + resolution: {integrity: sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==} + micromark-util-subtokenize@2.1.0: resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} @@ -5219,8 +5279,8 @@ packages: micromark-util-types@2.0.2: resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromark@4.0.1: + resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} @@ -5457,6 +5517,9 @@ packages: resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} engines: {node: '>=8'} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -5728,8 +5791,8 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - piscina@4.9.0: - resolution: {integrity: sha512-JCxYZiHa5nlL8fPSJcw0QBUKEgkdxH9Pi7JK2WQ6WQk7UXufbdiaw9AN7wFUGdvvAHFH+lrudfR8nsMlrpnfCQ==} + piscina@4.8.0: + resolution: {integrity: sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==} pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} @@ -5854,8 +5917,8 @@ packages: pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -5876,8 +5939,8 @@ packages: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} - quansync@0.2.8: - resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==} + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -6385,6 +6448,11 @@ packages: peerDependencies: solid-js: ^1.3 + solid-transition-size@0.1.4: + resolution: {integrity: sha512-ocHVnbfy23CgfaH4cEUR/AFg0Y3CEL8Oh3n9Qv8OHFJgPh+zkmERKZQfi/xH5XvxDCizg8VjPrVUhiHB1Gza8g==} + peerDependencies: + solid-js: ^1.8 + sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} engines: {node: '>=0.10.0'} @@ -6703,8 +6771,8 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.0: - resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} + tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} tree-kill@1.2.2: @@ -7020,6 +7088,12 @@ packages: uploadthing: optional: true + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -7298,9 +7372,6 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -7359,8 +7430,8 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + whatwg-url@14.1.1: + resolution: {integrity: sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ==} engines: {node: '>=18'} whatwg-url@5.0.0: @@ -7862,7 +7933,7 @@ snapshots: dependencies: '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 - browserslist: 4.24.4 + browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 @@ -7945,10 +8016,6 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/parser@7.26.10': - dependencies: - '@babel/types': 7.26.10 - '@babel/parser@7.26.8': dependencies: '@babel/types': 7.26.9 @@ -7972,10 +8039,6 @@ snapshots: '@babel/core': 7.26.9 '@babel/helper-plugin-utils': 7.26.5 - '@babel/runtime@7.26.10': - dependencies: - regenerator-runtime: 0.14.1 - '@babel/runtime@7.26.7': dependencies: regenerator-runtime: 0.14.1 @@ -8016,11 +8079,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.26.10': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.26.8': dependencies: '@babel/helper-string-parser': 7.25.9 @@ -8063,6 +8121,19 @@ snapshots: solid-presence: 0.2.0(solid-js@1.9.5) solid-prevent-scroll: 0.1.10(solid-js@1.9.5) + '@corvu/drawer@0.2.3(solid-js@1.9.5)': + dependencies: + '@corvu/dialog': 0.2.4(solid-js@1.9.5) + '@corvu/utils': 0.4.2(solid-js@1.9.5) + '@solid-primitives/memo': 1.4.1(solid-js@1.9.5) + solid-js: 1.9.5 + solid-transition-size: 0.1.4(solid-js@1.9.5) + + '@corvu/utils@0.3.2(solid-js@1.9.5)': + dependencies: + '@floating-ui/dom': 1.6.13 + solid-js: 1.9.5 + '@corvu/utils@0.4.2(solid-js@1.9.5)': dependencies: '@floating-ui/dom': 1.6.13 @@ -8348,7 +8419,7 @@ snapshots: '@google-automations/git-file-utils@3.0.0': dependencies: '@octokit/rest': 20.1.2 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 minimatch: 5.1.6 '@hapi/hoek@9.3.0': {} @@ -8455,22 +8526,42 @@ snapshots: '@inquirer/checkbox@4.1.2(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.13.10 - '@inquirer/confirm@5.1.8(@types/node@22.13.10)': + '@inquirer/confirm@5.1.6(@types/node@22.13.10)': + dependencies: + '@inquirer/core': 10.1.7(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) + optionalDependencies: + '@types/node': 22.13.10 + + '@inquirer/confirm@5.1.7(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) + '@inquirer/core': 10.1.8(@types/node@22.13.10) + '@inquirer/type': 3.0.5(@types/node@22.13.10) + optionalDependencies: + '@types/node': 22.13.10 + + '@inquirer/core@10.1.7(@types/node@22.13.10)': + dependencies: + '@inquirer/figures': 1.0.10 '@inquirer/type': 3.0.5(@types/node@22.13.10) + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.13.10 - '@inquirer/core@10.1.9(@types/node@22.13.10)': + '@inquirer/core@10.1.8(@types/node@22.13.10)': dependencies: '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.5(@types/node@22.13.10) @@ -8485,16 +8576,16 @@ snapshots: '@inquirer/editor@4.2.7(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) external-editor: 3.1.0 optionalDependencies: '@types/node': 22.13.10 '@inquirer/expand@4.0.9(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.13.10 @@ -8505,22 +8596,22 @@ snapshots: '@inquirer/input@4.1.6(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) optionalDependencies: '@types/node': 22.13.10 '@inquirer/number@3.0.9(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) optionalDependencies: '@types/node': 22.13.10 '@inquirer/password@4.0.9(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) ansi-escapes: 4.3.2 optionalDependencies: '@types/node': 22.13.10 @@ -8528,7 +8619,7 @@ snapshots: '@inquirer/prompts@7.2.1(@types/node@22.13.10)': dependencies: '@inquirer/checkbox': 4.1.2(@types/node@22.13.10) - '@inquirer/confirm': 5.1.8(@types/node@22.13.10) + '@inquirer/confirm': 5.1.7(@types/node@22.13.10) '@inquirer/editor': 4.2.7(@types/node@22.13.10) '@inquirer/expand': 4.0.9(@types/node@22.13.10) '@inquirer/input': 4.1.6(@types/node@22.13.10) @@ -8542,7 +8633,7 @@ snapshots: '@inquirer/prompts@7.3.2(@types/node@22.13.10)': dependencies: '@inquirer/checkbox': 4.1.2(@types/node@22.13.10) - '@inquirer/confirm': 5.1.8(@types/node@22.13.10) + '@inquirer/confirm': 5.1.6(@types/node@22.13.10) '@inquirer/editor': 4.2.7(@types/node@22.13.10) '@inquirer/expand': 4.0.9(@types/node@22.13.10) '@inquirer/input': 4.1.6(@types/node@22.13.10) @@ -8556,31 +8647,35 @@ snapshots: '@inquirer/rawlist@4.0.9(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.13.10 '@inquirer/search@3.0.9(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.13.10 '@inquirer/select@4.0.9(@types/node@22.13.10)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.10) + '@inquirer/core': 10.1.7(@types/node@22.13.10) '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.5(@types/node@22.13.10) + '@inquirer/type': 3.0.4(@types/node@22.13.10) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.13.10 + '@inquirer/type@3.0.4(@types/node@22.13.10)': + optionalDependencies: + '@types/node': 22.13.10 + '@inquirer/type@3.0.5(@types/node@22.13.10)': optionalDependencies: '@types/node': 22.13.10 @@ -8957,46 +9052,46 @@ snapshots: '@octokit/auth-token@4.0.0': {} - '@octokit/core@5.2.0': + '@octokit/core@5.2.1': dependencies: '@octokit/auth-token': 4.0.0 '@octokit/graphql': 7.1.1 '@octokit/request': 8.4.1 '@octokit/request-error': 5.1.1 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 '@octokit/endpoint@9.0.6': dependencies: - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 '@octokit/graphql@7.1.1': dependencies: '@octokit/request': 8.4.1 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 - '@octokit/openapi-types@23.0.1': {} + '@octokit/openapi-types@24.2.0': {} - '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.0)': + '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.1)': dependencies: - '@octokit/core': 5.2.0 - '@octokit/types': 13.8.0 + '@octokit/core': 5.2.1 + '@octokit/types': 13.10.0 - '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0)': + '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.1)': dependencies: - '@octokit/core': 5.2.0 + '@octokit/core': 5.2.1 - '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.0)': + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.1)': dependencies: - '@octokit/core': 5.2.0 - '@octokit/types': 13.8.0 + '@octokit/core': 5.2.1 + '@octokit/types': 13.10.0 '@octokit/request-error@5.1.1': dependencies: - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 deprecation: 2.3.1 once: 1.4.0 @@ -9004,19 +9099,19 @@ snapshots: dependencies: '@octokit/endpoint': 9.0.6 '@octokit/request-error': 5.1.1 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 '@octokit/rest@20.1.2': dependencies: - '@octokit/core': 5.2.0 - '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.0) - '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) - '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.0) + '@octokit/core': 5.2.1 + '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.1) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.1) + '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.1) - '@octokit/types@13.8.0': + '@octokit/types@13.10.0': dependencies: - '@octokit/openapi-types': 23.0.1 + '@octokit/openapi-types': 24.2.0 '@open-draft/deferred-promise@2.2.0': {} @@ -9228,6 +9323,20 @@ snapshots: dependencies: escape-string-regexp: 5.0.0 + '@solid-primitives/memo@1.4.1(solid-js@1.9.5)': + dependencies: + '@solid-primitives/scheduled': 1.5.0(solid-js@1.9.5) + '@solid-primitives/utils': 6.3.0(solid-js@1.9.5) + solid-js: 1.9.5 + + '@solid-primitives/scheduled@1.5.0(solid-js@1.9.5)': + dependencies: + solid-js: 1.9.5 + + '@solid-primitives/utils@6.3.0(solid-js@1.9.5)': + dependencies: + solid-js: 1.9.5 + '@solidjs/router@0.15.3(solid-js@1.9.5)': dependencies: solid-js: 1.9.5 @@ -9272,7 +9381,7 @@ snapshots: commander: 8.3.0 fast-glob: 3.3.3 minimatch: 9.0.5 - piscina: 4.9.0 + piscina: 4.8.0 semver: 7.7.1 slash: 3.0.0 source-map: 0.7.4 @@ -9847,10 +9956,6 @@ snapshots: dependencies: '@volar/source-map': 2.4.11 - '@volar/language-core@2.4.12': - dependencies: - '@volar/source-map': 2.4.12 - '@volar/language-server@2.4.11': dependencies: '@volar/language-core': 2.4.11 @@ -9872,19 +9977,11 @@ snapshots: '@volar/source-map@2.4.11': {} - '@volar/source-map@2.4.12': {} - '@volar/typescript@2.4.11': dependencies: '@volar/language-core': 2.4.11 path-browserify: 1.0.1 - vscode-uri: 3.1.0 - - '@volar/typescript@2.4.12': - dependencies: - '@volar/language-core': 2.4.12 - path-browserify: 1.0.1 - vscode-uri: 3.1.0 + vscode-uri: 3.0.8 '@vscode/emmet-helper@2.11.0': dependencies: @@ -9892,13 +9989,13 @@ snapshots: jsonc-parser: 2.3.1 vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 + vscode-uri: 3.0.8 '@vscode/l10n@0.0.18': {} '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.26.10 + '@babel/parser': 7.26.9 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -9916,7 +10013,7 @@ snapshots: '@vue/language-core@2.2.0(typescript@5.8.2)': dependencies: - '@volar/language-core': 2.4.12 + '@volar/language-core': 2.4.11 '@vue/compiler-dom': 3.5.13 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.13 @@ -10308,7 +10405,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.1): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001705 + caniuse-lite: 1.0.30001707 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -10431,10 +10528,17 @@ snapshots: dependencies: fill-range: 7.1.1 + browserslist@4.23.3: + dependencies: + caniuse-lite: 1.0.30001647 + electron-to-chromium: 1.5.4 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001705 - electron-to-chromium: 1.5.120 + caniuse-lite: 1.0.30001701 + electron-to-chromium: 1.5.109 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -10524,7 +10628,11 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001705: {} + caniuse-lite@1.0.30001647: {} + + caniuse-lite@1.0.30001701: {} + + caniuse-lite@1.0.30001707: {} ccount@2.0.1: {} @@ -10840,7 +10948,7 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 - css-selector-parser@3.1.1: {} + css-selector-parser@3.0.5: {} css-what@6.1.0: {} @@ -10859,7 +10967,7 @@ snapshots: data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 + whatwg-url: 14.1.1 optional: true dateformat@3.0.3: {} @@ -10888,6 +10996,10 @@ snapshots: decimal.js@10.5.0: optional: true + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + decode-named-character-reference@1.1.0: dependencies: character-entities: 2.0.2 @@ -11016,7 +11128,9 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.120: {} + electron-to-chromium@1.5.109: {} + + electron-to-chromium@1.5.4: {} emmet@2.4.11: dependencies: @@ -11150,6 +11264,8 @@ snapshots: '@esbuild/win32-ia32': 0.25.1 '@esbuild/win32-x64': 0.25.1 + escalade@3.1.2: {} + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -11894,7 +12010,7 @@ snapshots: '@types/unist': 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 3.1.1 + css-selector-parser: 3.0.5 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 @@ -12085,7 +12201,7 @@ snapshots: i18next@23.16.8: dependencies: - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.26.7 iconify-icon@2.3.0: dependencies: @@ -12353,7 +12469,7 @@ snapshots: webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 + whatwg-url: 14.1.1 ws: 8.18.1 xml-name-validator: 5.0.0 transitivePeerDependencies: @@ -12485,7 +12601,7 @@ snapshots: dependencies: mlly: 1.7.4 pkg-types: 2.1.0 - quansync: 0.2.8 + quansync: 0.2.10 locate-path@5.0.0: dependencies: @@ -12629,15 +12745,15 @@ snapshots: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.0.2 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.2 + micromark: 4.0.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-decode-string: 2.0.1 micromark-util-normalize-identifier: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.1 unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color @@ -12817,6 +12933,25 @@ snapshots: methods@1.1.2: {} + micromark-core-commonmark@2.0.2: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.0.4 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.1.0 @@ -13013,7 +13148,7 @@ snapshots: dependencies: micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.1 micromark-util-combine-extensions@2.0.1: dependencies: @@ -13026,7 +13161,7 @@ snapshots: micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.0.2 micromark-util-character: 2.1.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 @@ -13060,6 +13195,13 @@ snapshots: micromark-util-encode: 2.0.1 micromark-util-symbol: 2.0.1 + micromark-util-subtokenize@2.0.4: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-util-subtokenize@2.1.0: dependencies: devlop: 1.1.0 @@ -13073,13 +13215,13 @@ snapshots: micromark-util-types@2.0.2: {} - micromark@4.0.2: + micromark@4.0.1: dependencies: '@types/debug': 4.1.12 debug: 4.4.0 - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 + micromark-core-commonmark: 2.0.2 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 micromark-util-chunked: 2.0.1 @@ -13089,7 +13231,7 @@ snapshots: micromark-util-normalize-identifier: 2.0.1 micromark-util-resolve-all: 2.0.1 micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.1.0 + micromark-util-subtokenize: 2.0.4 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 transitivePeerDependencies: @@ -13228,7 +13370,7 @@ snapshots: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.8(@types/node@22.13.10) + '@inquirer/confirm': 5.1.7(@types/node@22.13.10) '@mswjs/interceptors': 0.37.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -13254,7 +13396,7 @@ snapshots: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.8(@types/node@22.13.10) + '@inquirer/confirm': 5.1.7(@types/node@22.13.10) '@mswjs/interceptors': 0.37.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -13356,6 +13498,8 @@ snapshots: dependencies: process-on-spawn: 1.1.0 + node-releases@2.0.18: {} + node-releases@2.0.19: {} nopt@5.0.0: @@ -13585,7 +13729,7 @@ snapshots: '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.0.2 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 @@ -13663,7 +13807,7 @@ snapshots: pify@4.0.1: {} - piscina@4.9.0: + piscina@4.8.0: optionalDependencies: '@napi-rs/nice': 1.0.1 optional: true @@ -13795,9 +13939,7 @@ snapshots: pseudomap@1.0.2: optional: true - psl@1.15.0: - dependencies: - punycode: 2.3.1 + psl@1.9.0: {} pump@3.0.0: dependencies: @@ -13816,7 +13958,7 @@ snapshots: dependencies: side-channel: 1.1.0 - quansync@0.2.8: {} + quansync@0.2.10: {} querystringify@2.2.0: {} @@ -14502,6 +14644,11 @@ snapshots: transitivePeerDependencies: - supports-color + solid-transition-size@0.1.4(solid-js@1.9.5): + dependencies: + '@corvu/utils': 0.3.2(solid-js@1.9.5) + solid-js: 1.9.5 + sort-keys-length@1.0.1: dependencies: sort-keys: 1.1.2 @@ -14824,7 +14971,7 @@ snapshots: tough-cookie@4.1.4: dependencies: - psl: 1.15.0 + psl: 1.9.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 @@ -14837,7 +14984,7 @@ snapshots: tr46@0.0.3: optional: true - tr46@5.1.0: + tr46@5.0.0: dependencies: punycode: 2.3.1 optional: true @@ -15117,6 +15264,12 @@ snapshots: ofetch: 1.4.1 ufo: 1.5.4 + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.1.1 + update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: browserslist: 4.24.4 @@ -15195,7 +15348,7 @@ snapshots: dependencies: '@microsoft/api-extractor': 7.52.1(@types/node@22.13.10) '@rollup/pluginutils': 5.1.4(rollup@4.35.0) - '@volar/typescript': 2.4.12 + '@volar/typescript': 2.4.11 '@vue/language-core': 2.2.0(typescript@5.8.2) compare-versions: 6.1.1 debug: 4.4.0 @@ -15401,7 +15554,7 @@ snapshots: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 + vscode-uri: 3.0.8 vscode-html-languageservice@5.3.1: dependencies: @@ -15416,7 +15569,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-nls: 5.2.0 - vscode-uri: 3.1.0 + vscode-uri: 3.0.8 vscode-jsonrpc@6.0.0: {} @@ -15450,8 +15603,6 @@ snapshots: vscode-uri@3.0.8: {} - vscode-uri@3.1.0: {} - w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -15526,9 +15677,9 @@ snapshots: whatwg-mimetype@4.0.0: optional: true - whatwg-url@14.2.0: + whatwg-url@14.1.1: dependencies: - tr46: 5.1.0 + tr46: 5.0.0 webidl-conversions: 7.0.0 optional: true @@ -15645,7 +15796,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-nls: 5.2.0 - vscode-uri: 3.1.0 + vscode-uri: 3.0.8 yaml: 2.2.2 optionalDependencies: prettier: 2.8.7