diff --git a/.gitignore b/.gitignore index fd2b78d..8fcf208 100644 --- a/.gitignore +++ b/.gitignore @@ -21,5 +21,7 @@ node_modules/ .pnp.* # Library - lib/ + +*storybook.log +storybook-static diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..c959087 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "useTabs": true +} diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 0000000..11d5a5d --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,16 @@ +import type { StorybookConfig } from '@storybook/react-vite'; + +const config: StorybookConfig = { + "stories": [ + "../src/**/*.mdx", + "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)" + ], + "addons": [ + "@storybook/addon-docs" + ], + "framework": { + "name": "@storybook/react-vite", + "options": {} + } +}; +export default config; \ No newline at end of file diff --git a/.storybook/preview.ts b/.storybook/preview.ts new file mode 100644 index 0000000..1ed142f --- /dev/null +++ b/.storybook/preview.ts @@ -0,0 +1,14 @@ +import type { Preview } from '@storybook/react-vite' + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, +}; + +export default preview; \ No newline at end of file diff --git a/.woodpecker.yaml b/.woodpecker.yaml deleted file mode 100644 index 510c277..0000000 --- a/.woodpecker.yaml +++ /dev/null @@ -1,17 +0,0 @@ -steps: - - name: build_library - image: node:alpine - volumes: - - /tmp/woodpecker/cache/uikernel/core/node_modules:/woodpecker/src/code.zeptotech.net/UIKernel/Core/node_modules - - /tmp/woodpecker/cache/uikernel/core/.yarn/cache:/woodpecker/src/code.zeptotech.net/UIKernel/Core/.yarn/cache - secrets: - - FORGE_TOKEN - commands: - - corepack enable - - yarn install - - yarn build - - ./.woodpecker/yarn_auth.sh - - yarn npm publish - when: - - event: tag - ref: refs/tags/v* diff --git a/.woodpecker/yarn_auth.sh b/.woodpecker/yarn_auth.sh deleted file mode 100755 index 4c3ee2e..0000000 --- a/.woodpecker/yarn_auth.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -echo "npmRegistries: - //code.zeptotech.net/api/packages/UIKernel/npm/: - npmAlwaysAuth: true - npmAuthToken: \"$FORGE_TOKEN\"" >> ./.yarnrc.yml diff --git a/demo/DemoApp.tsx b/demo/DemoApp.tsx deleted file mode 100644 index 477ff98..0000000 --- a/demo/DemoApp.tsx +++ /dev/null @@ -1,635 +0,0 @@ -import React, {useState} from "react"; -import {Checkbox} from "../src/Components/Forms/Checkbox"; -import {Radio} from "../src/Components/Forms/Radio"; -import {AirTrafficControl, Basket, FloppyDisk, House, TrashSimple, XCircle} from "@phosphor-icons/react"; -import {Card} from "../src/Components/Card"; -import {PasswordInput} from "../src/Components/Forms/PasswordInput"; -import {RequiredField} from "../src/Components/Forms/RequiredField"; -import {Float} from "../src/Components/Floating/Float"; -import {Tooltip} from "../src/Components/Floating/Tooltip"; -import {DatepickerInput} from "../src/Components/Forms/DatepickerInput"; -import {TimepickerInput} from "../src/Components/Forms/TimepickerInput"; -import {Select} from "../src/Components/Select/Select"; -import {SpinningLoader} from "../src/Components/Loaders/SpinningLoader"; -import {ListLoader} from "../src/Components/Loaders/ListLoader"; -import {GenericLoader} from "../src/Components/Loaders/GenericLoader"; -import {MainMenu} from "../src/Components/Menus/MainMenu"; -import {SubmenuFloat} from "../src/Components/Menus/SubmenuFloat"; -import {Submenu} from "../src/Components/Menus/Submenu"; -import {SubmenuItem, SubmenuItemSubmenu} from "../src/Components/Menus/SubmenuItem"; -import {MainMenuItemSubmenu, MainMenuLink} from "../src/Components/Menus/MainMenuItem"; -import {AppItem, AppLink, AppsMenu} from "../src/Components/Menus/AppsMenu"; -import {Application} from "../src/Application/Application"; -import {Outlet} from "react-router-dom"; -import {ToggleSwitch} from "../src/Components/Forms/ToggleSwitch"; -import {Step, Steps} from "../src/Components/Steps/Steps"; -import {AsyncPaginate, AutoPaginate, Paginate} from "../src/Components/Pagination/Paginate"; -import {useCallableCurtain, useCurtains} from "../src/Components/Curtains/Curtains"; -import {Subapp, useCallableSubapp, useSubapps} from "../src/Components/Subapps/Subapps"; -import {DemoSubapp} from "./DemoSubapp"; -import {DemoCurtain} from "./DemoCurtain"; -import {DemoModal} from "./DemoModal"; -import {useCallableModal} from "../src/Components/Modals/Modals"; -import {ModalType} from "../src/Components/Modals/ModalsTypes"; -import {Buttons} from "../src/Components/Buttons/Buttons"; -import {useNotify} from "../src/Components/Notifications/Notifications"; -import {Notification, NotificationType} from "../src/Components/Notifications/Notification"; -import {Box} from "../src/Components/Box"; -import {Await, useAsync} from "../src/Async"; -import {NotifyErrorsBoundary} from "../src/Components/Errors/NotifyErrorsBoundary"; -import {DemoFailingComponent, DemoResetComponent} from "./DemoFailingComponent"; -import {Tip} from "../src/Components/Tips/Tip"; -import {useKernelContext} from "../src/KernelGlobalContext"; -import {KernelContext} from "./DemoKernelContext"; - -export function DemoApp() -{ - const curtains = useCurtains(); - const subapps = useSubapps(); - - // Easy curtain. - const easyCurtain = useCallableCurtain(); - - // Easy subapp. - const easySubapp = useCallableSubapp(); - - // Easy modal. - const easyModal = useCallableModal((type: ModalType = ModalType.NONE) => ); - - const notify = useNotify(); - - const [datetime, setDatetime] = useState(null); - - const [selected, setSelected] = useState(null); - const [anotherSelected, setAnotherSelected] = useState(null); - - const [page, setPage] = useState(11); - - const [asyncChange, setAsyncChange] = useState(0); - const [anotherChange, setAnotherChange] = useState(0); - const [asyncData] = useAsync(() => new Promise((resolve, reject) => { - setTimeout(() => { - resolve("async data (" + Math.random() + ")"); - }, 2000); - }), [asyncChange]); - - const [failingComponentsCount, setFailingComponentsCount] = useState(0); - - const [kernelContext, setKernelContext] = useKernelContext(KernelContext); - - return ( - - - Home - Test - - Test 1 - Test 2 - - Test A - Test B - - First last choice - Another last choice - - }> Submenu in submenu - - }> Submenu - - }> - Submenu - - - -

KernelUI

- -

Headings

- - -

Demo app

- -

Second title

- -

Third title

- -

Fourth title

- -
Fifth title
- -
Sixth title
-
- -

Buttons

- - - A link button - - - - - -

Forms

- -
- - - - - - Test password - - - - - - Date test - - - - Time test - - -

Currently selected datetime: {datetime ? datetime.toISOString() : "none"}

- - Checkbox demo - Toggle switch demo - Radio box test - Radio box test - - - A tip component, very useful in forms which require some explanations. - - - - - - - - - -
- -

HTML

- -
- Link test -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit aleph. Donec accumsan - pulvinar felis, vitae eleifend augue lacinia tempus. Integer nec iaculis ante. Duis a quam urna. Nullam - tincidunt rutrum felis, a efficitur enim facilisis sit amet. Quisque dictum semper sagittis. Maecenas in orci - hendrerit, tempor nunc non, tempus mi. Praesent blandit varius rutrum. Nullam quis mauris eros. Vestibulum - commodo libero sed pellentesque pharetra. Donec eget fringilla ante. Aliquam id leo massa. Duis dictum nunc ut - dolor iaculis malesuada. Nulla elementum justo a sem eleifend finibus. Phasellus bibendum elit nibh, at tempor - odio efficitur id. -

- -

Steps

- -
-

Step one

-

Step two

-

Step three

-
- -

Lists

- -
    -
  • One
  • -
  • Two
  • -
  • Three
  • -
  • Four
  • -
- -
    -
  1. One
  2. -
  3. Two
  4. -
  5. Three
  6. -
  7. Four
  8. -
- -

Tables

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column 1Column 2Column 3
ABCD
LoremIpsumDolorAmet
FooBarBazJohn
AliceBobJack
- -

Cards

- - -

Card title

- -

- Donec lobortis quam sapien, et efficitur dolor laoreet ut. Ut pretium, lacus at bibendum rutrum, nibh nibh - scelerisque nisi, nec semper dolor turpis sed tortor. Nulla massa sapien, accumsan id vestibulum et, elementum - eget metus. Morbi quis bibendum purus. Nunc at fermentum tortor. Quisque viverra diam in sem auctor blandit. - Vestibulum dignissim bibendum nunc, non tristique quam sollicitudin eu. Ut feugiat lectus tellus, tempus - viverra sapien aliquet vel. Morbi ac est mauris. Praesent facilisis ut tellus at cursus. Aenean placerat nulla - non mi vulputate hendrerit. Praesent fermentum dui eu gravida pharetra. Quisque rhoncus, magna non congue - egestas, leo lorem malesuada felis, eu imperdiet orci magna ultrices est. -

- - - - - -
- - -

Another small card

-
- -

Popovers

- - - - - - I am focused}> - - - - - You can add complex (clickable) content in me. - - - )}> - - - - - - - -
- ()}> - {(show, hide) => ( - - )} - -
- -

Tooltips

- - - This is a very simple tooltip. - - -

Loaders

- -

Simple loaders

- - - - - - - -

Generic loader

- - - Sample content. - - - -

Menus

- - - Test 1 - Test 2 - - Test A - Test B - - }> - Submenu - - - } floatingOptions={{placement: "right-start"}}> - - - -

App selectors

- - - - - Home - - - - Test link - - - - Test 3 - - - - - -

App steps

- -

Basic

- - - - -

First step

- - ABC STEP -
-
- - - -

Big content

- -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam id dignissim ligula, ut tempus sem. Sed - faucibus tincidunt ante vel iaculis. Duis hendrerit, orci eu gravida interdum, nulla lacus congue augue, - nec efficitur diam dui sollicitudin eros. Donec lacus lectus, aliquam nec feugiat non, gravida ac est. - Suspendisse feugiat justo quis dui vehicula, sed auctor est mollis. Sed hendrerit nisi non lectus lacinia, - id posuere dolor dignissim. Quisque commodo mi sit amet quam tincidunt auctor. Ut sit amet scelerisque - sem. Nulla rhoncus, orci vitae cursus ullamcorper, ex odio rhoncus enim, et blandit elit libero quis est. - Suspendisse lectus nunc, gravida sit amet vulputate eget, porta ac odio. -

- -

- Mauris egestas bibendum facilisis. Maecenas accumsan lorem arcu, ut faucibus dui euismod et. Nulla et - dignissim est, interdum luctus diam. Aliquam condimentum ex augue, id porttitor enim vestibulum quis. - Vivamus sed convallis leo. Duis finibus, ipsum sed condimentum viverra, ipsum sapien congue nunc, sed - fermentum metus ante quis ligula. Fusce eleifend ante in leo molestie, at suscipit metus cursus. Class - aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed laoreet justo ac - lacus porta, sed ultricies est mattis. Integer finibus purus metus, quis posuere risus suscipit suscipit. - Nulla facilisi. Duis tincidunt vitae enim eu sagittis. -

- -

- Donec rutrum tellus vitae vehicula tempor. Sed porta tempus leo, vel aliquam risus scelerisque nec. - Pellentesque diam nibh, ultrices in rhoncus ut, rhoncus et ligula. Duis pellentesque diam purus, ut - scelerisque turpis condimentum sit amet. Sed sit amet efficitur tortor, vitae aliquet quam. Nullam - placerat dui eu sapien condimentum, placerat convallis sapien imperdiet. Suspendisse vitae laoreet ex. - Etiam quis rhoncus ante. Ut egestas eget ipsum ultrices tempus. Vivamus non odio non nisl aliquet rhoncus. - Ut et nisl placerat, interdum turpis a, condimentum mauris. In laoreet lobortis justo. Maecenas vehicula - magna non libero posuere rutrum. Praesent eget lectus feugiat dui pellentesque vehicula a sed felis. - Curabitur nunc orci, vehicula non gravida sed, suscipit sed diam. Nam semper, dui eu volutpat vulputate, - metus mauris congue lectus, ultrices sollicitudin eros felis ac erat. -

- -

- Proin et rhoncus purus. Etiam nulla libero, dictum sed quam lacinia, consequat euismod ipsum. Donec quis - tristique metus. Cras vitae pretium massa. Etiam laoreet, eros in rhoncus ultrices, nibh nibh bibendum - diam, nec ultricies mi ante non ex. Pellentesque eget mattis dolor, eget pulvinar lorem. Nullam ante - dolor, ultricies et malesuada in, efficitur sit amet diam. Duis ligula augue, vestibulum sit amet ligula - ac, vestibulum tincidunt eros. Nullam commodo euismod vulputate. Morbi varius accumsan diam eu - pellentesque. Nunc vehicula pretium risus dapibus cursus. Mauris sit amet est at ipsum scelerisque - lobortis. Aenean eget quam sit amet arcu mattis interdum in at neque. -

- -

- Mauris efficitur, enim pellentesque maximus faucibus, nibh enim gravida urna, quis dignissim turpis velit - quis nibh. Mauris eget vestibulum tellus. Duis mollis, ante in egestas lacinia, felis massa rutrum ante, - vel placerat lectus neque in purus. Fusce sodales nunc vel ligula mollis tincidunt. Sed ac viverra ligula. - Vestibulum ut velit sit amet ipsum cursus posuere in nec lacus. Praesent vel odio pellentesque, - ullamcorper metus in, accumsan dolor. Donec vel mi ultrices, interdum arcu vel, pellentesque nunc. -

-
-
- - - -

Third step

- - GHI STEP -
-
-
- -

Pagination

- -

Normal pagination

- - - Page {page} - - -

Auto pagination

- - - {(page) => ( - Page {page} - )} - - -

Async pagination

- - { return 72; }} getData={async () => (["a", Math.random(), "c"])}> - {(data) => ( - <> - { - data.map((value, index) => ( -
{value}
- )) - } - - )} -
- -

Curtains & co

- -

Curtains

- - - - - - - -

Subapps

- - - - - - - ) - }}>Open a subapp - - - - - - - - - -

Modals

- - - - - - - -

Notifications

- - - - - - - - - -

Async

- - - Async data test: - }> - {(data) => ( -

Data: {data}

- )} -
- - -
- -

Error boundaries

- - - - }> - { - [...Array(failingComponentsCount)].map(() => ) - } - - - -

- Global states -

- - - - - - - - - -
- ); -} diff --git a/demo/DemoCurtain.tsx b/demo/DemoCurtain.tsx deleted file mode 100644 index 9e56eb5..0000000 --- a/demo/DemoCurtain.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from "react"; -import {useCurtain} from "../src/Components/Curtains/CurtainInstance"; -import {X} from "@phosphor-icons/react"; - -/** - * Demo curtain component. - */ -export function DemoCurtain() -{ - const {close} = useCurtain(); - - return ( - - ); -} diff --git a/demo/DemoFailingComponent.tsx b/demo/DemoFailingComponent.tsx deleted file mode 100644 index e2f3231..0000000 --- a/demo/DemoFailingComponent.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from "react"; -import {useErrorBoundary} from "react-error-boundary"; - -/** - * A simple demo failing component. - */ -export function DemoFailingComponent() -{ - throw new Error("Proudly thrown error."); - return (

I will never be shown...

); -} - -/** - * A simple demo reset component. - */ -export function DemoResetComponent() -{ - // Get error boundary. - const errorBoundary = useErrorBoundary(); - - return ( - - ); -} diff --git a/demo/DemoKernelContext.tsx b/demo/DemoKernelContext.tsx deleted file mode 100644 index 9b6966d..0000000 --- a/demo/DemoKernelContext.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import {createKernelContext} from "../src/KernelGlobalContext"; - -/** - * Create kernel context. - */ -export const KernelContext = createKernelContext(""); diff --git a/demo/DemoModal.tsx b/demo/DemoModal.tsx deleted file mode 100644 index 9a7f4d0..0000000 --- a/demo/DemoModal.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; -import {Modal, useModal} from "../src/Components/Modals/Modals"; -import {ModalType} from "../src/Components/Modals/ModalsTypes"; -import {Buttons} from "../src/Components/Buttons/Buttons"; - -export function DemoModal({type}: { type: ModalType; }) -{ - const {close} = useModal(); - - return ( - - Modal test content - - - - - - ); -} diff --git a/demo/DemoSubapp.tsx b/demo/DemoSubapp.tsx deleted file mode 100644 index 7808305..0000000 --- a/demo/DemoSubapp.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from "react"; -import {Subapp, useSubapp} from "../src/Components/Subapps/Subapps"; -import {Card} from "../src/Components/Card"; -import {useKernelContext} from "../src/KernelGlobalContext"; -import {KernelContext} from "./DemoKernelContext"; - -/** - * A demo Subapp component. - */ -export function DemoSubapp() -{ - // Get subapp close function. - const {uuid, close} = useSubapp(); - - // Get kernel context data. - const [kernelContext] = useKernelContext(KernelContext); - - return ( - - -

This is a complex subapp.

- -

UUID : {uuid}

- - {kernelContext &&

Kernel context data: {kernelContext}

} - - -
-
- ); -} diff --git a/demo/NavTest.tsx b/demo/NavTest.tsx deleted file mode 100644 index 1afa84e..0000000 --- a/demo/NavTest.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import {Card} from "../src/Components/Card"; - -/** - * Navigation test component. - */ -export function NavTest() -{ - return ( - - This is a navigation test. - - ) -} diff --git a/demo/demo.tsx b/demo/demo.tsx deleted file mode 100644 index 70aa3e9..0000000 --- a/demo/demo.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import "../index"; -import React from "react"; -import {createRoot} from "react-dom/client"; -import {DemoApp} from "./DemoApp"; -import {createBrowserRouter} from "react-router-dom"; -import {Kernel} from "../src/Application/Kernel"; -import {NavTest} from "./NavTest"; -import {Avocado} from "@phosphor-icons/react"; -import {ApplicationError} from "../src/Application/ApplicationError"; - -// Router initialization. -const router = createBrowserRouter([ - { - path: "/", - element: , - children: [ - { - path: "test", - element: , - } - ], - errorElement: , - } -]) - -document.addEventListener("DOMContentLoaded", () => { - const demoApp = document.getElementById("demo-app"); - - const root = createRoot(demoApp); - - root.render( - -
Kernel
- - } />); -}); diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..bc65623 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,26 @@ +// For more info, see https://github.com/storybookjs/eslint-plugin-storybook#configuration-flat-config-format +import storybook from "eslint-plugin-storybook"; + +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { globalIgnores } from 'eslint/config' + +export default tseslint.config([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs['recommended-latest'], + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +], storybook.configs["flat/recommended"]); diff --git a/index.html b/index.html deleted file mode 100644 index 062d826..0000000 --- a/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - UIKernel - Demo - - - - - diff --git a/index.ts b/index.ts deleted file mode 100644 index c6b073c..0000000 --- a/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -import "./src/styles/main.less"; - -export * from "./src/Application/Application"; -export * from "./src/Application/ApplicationError"; -export * from "./src/Application/Kernel"; - -export * from "./src/Components/Box"; -export * from "./src/Components/Card"; -export * from "./src/Components/Buttons/Buttons"; -export * from "./src/Components/Curtains/Curtains"; -export {useCurtain} from "./src/Components/Curtains/CurtainInstance"; -export type {CurtainContextState} from "./src/Components/Curtains/CurtainInstance"; -export * from "./src/Components/Dates/Calendar"; -export * from "./src/Components/Dates/Datepicker"; -export * from "./src/Components/Errors/NotifyErrorsBoundary"; -export * from "./src/Components/Floating/Float"; -export * from "./src/Components/Floating/Tooltip"; -export * from "./src/Components/Forms/Checkbox"; -export * from "./src/Components/Forms/CustomValidationRule"; -export * from "./src/Components/Forms/DatepickerInput"; -export * from "./src/Components/Forms/PasswordInput"; -export * from "./src/Components/Forms/Radio"; -export * from "./src/Components/Forms/RequiredField"; -export * from "./src/Components/Forms/TimepickerInput"; -export * from "./src/Components/Forms/ToggleSwitch"; -export * from "./src/Components/Loaders/GenericLoader"; -export * from "./src/Components/Loaders/ListLoader"; -export * from "./src/Components/Loaders/SpinningLoader"; -export * from "./src/Components/Menus/AppsMenu"; -export * from "./src/Components/Menus/MainMenu"; -export * from "./src/Components/Menus/MainMenuItem"; -export * from "./src/Components/Menus/Submenu"; -export * from "./src/Components/Menus/SubmenuFloat"; -export * from "./src/Components/Menus/SubmenuItem"; -export * from "./src/Components/Modals/Modals"; -export * from "./src/Components/Modals/ModalsTypes"; -export * from "./src/Components/Notifications/Notification"; -export * from "./src/Components/Notifications/Notifications"; -export * from "./src/Components/Pagination/Paginate"; -export * from "./src/Components/Pagination/Pagination"; -export * from "./src/Components/Select/OptionsSuggestions"; -export * from "./src/Components/Select/Select"; -export * from "./src/Components/Select/SimpleSuggestions"; -export * from "./src/Components/Select/Suggestible"; -export * from "./src/Components/Steps/Steps"; -export * from "./src/Components/Steps/StepsContext"; -export * from "./src/Components/Subapps/Subapps"; -export * from "./src/Components/Tips/Tip"; - -export * from "./src/Async"; -export * from "./src/GlobalState"; -export * from "./src/KernelGlobalContext"; -export * from "./src/Utils"; diff --git a/package.json b/package.json index db9b461..d5d9921 100644 --- a/package.json +++ b/package.json @@ -4,47 +4,46 @@ "description": "Kernel UI Core.", "scripts": { "dev": "vite", - "build": "tsc && vite build" + "build": "tsc && vite build", + "storybook": "storybook dev -p 6006", + "storybook:build": "storybook build" }, "type": "module", "source": "index.ts", "types": "lib/index.d.ts", "main": "lib/index.js", "files": [ - "lib/**/*" + "lib/**/*", + "README.md", + "LICENSE" ], "publishConfig": { "@kernelui:registry": "https://code.zeptotech.net/api/packages/UIKernel/npm/" }, - "dependencies": { - "@floating-ui/react": "^0.26.17", - "@fontsource-variable/jetbrains-mono": "^5.0.21", - "@fontsource-variable/manrope": "^5.0.20", - "@fontsource-variable/source-serif-4": "^5.0.19", - "react-error-boundary": "^4.0.13", - "react-merge-refs": "^2.1.1", - "uuid": "^10.0.0" - }, "devDependencies": { - "@phosphor-icons/react": "^2.1.7", - "@types/node": "^22.7.4", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "@types/uuid": "^10", - "@vitejs/plugin-react": "^4.3.4", - "less": "^4.2.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-router-dom": "^7.0.1", - "typescript": "^5.6.2", - "vite": "^6.0.1", - "vite-plugin-dts": "^4.3.0" + "@phosphor-icons/react": "^2.1.10", + "@storybook/addon-docs": "^9.1.5", + "@storybook/react-vite": "^9.1.5", + "@types/node": "^24.3.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", + "eslint": "^9.35.0", + "eslint-plugin-storybook": "^9.1.5", + "prettier": "^3.6.2", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "react-router-dom": "^7.8.2", + "storybook": "^9.1.5", + "typescript": "^5.9.2", + "vite": "^7.1.5", + "vite-plugin-dts": "^4.5.4" }, "peerDependencies": { - "@phosphor-icons/react": "^2.1.7", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-router-dom": "^7.0.1" + "@phosphor-icons/react": "^2.1.10", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "react-router-dom": "^7.8.2" }, - "packageManager": "yarn@4.5.3" + "packageManager": "yarn@4.9.4" } diff --git a/src/Application/Application.tsx b/src/Application/Application.tsx deleted file mode 100644 index 4e69835..0000000 --- a/src/Application/Application.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from "react"; -import {ApplicationError, ApplicationErrorBoundary} from "./ApplicationError"; - -/** - * Main Kernel UI application. - */ -export function Application({errorElement, children}: React.PropsWithChildren<{ - errorElement?: React.ReactNode; -}>) -{ - return ( - }> -
- {children} -
-
- ); -} diff --git a/src/Application/ApplicationError.tsx b/src/Application/ApplicationError.tsx deleted file mode 100644 index 2943f75..0000000 --- a/src/Application/ApplicationError.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import React, {useContext, useState} from "react"; -import {ArrowsClockwise, Bug, BugDroid} from "@phosphor-icons/react"; -import {useRouteError} from "react-router-dom"; - -/** - * Application error context. - */ -const ApplicationErrorContext = React.createContext(undefined); - -/** - * Get current error from context or router. - */ -export function useApplicationError(): Error -{ - // Get error from context or router. - const error = useContext(ApplicationErrorContext); - const routeError = useRouteError() as Error; - return error ?? routeError; -} - -/** - * Application error component. - */ -export function ApplicationError({children}: { - children?: (error: Error) => React.ReactElement; -}) -{ - // Get error from context. - const error = useApplicationError(); - - // Show details state. - const [showDetails, setShowDetails] = useState(false); - - return ( -
- {children ? children(error) : ( - <> - -

Error

- -
- -

{error.name}

- -

An unexpected error happened and the application was forced to quit.

- -
{error.message}
- - - -
- - - { // Show details if required. - showDetails && ( -
-									{error.stack}
-								
- ) - } -
- - )} -
- ); -} - -/** - * Error boundary component for the application. - */ -export class ApplicationErrorBoundary extends React.Component, { - error: Error; -}> -{ - static getDerivedStateFromError(error: Error) - { - return { error: error }; - } - - render() - { - if (this.state?.error) - // An error happened, showing the application error content. - return ( - - {this.props.errorElement} - - ); - - return this.props.children; - } -} diff --git a/src/Application/Kernel.tsx b/src/Application/Kernel.tsx deleted file mode 100644 index e0cf4d1..0000000 --- a/src/Application/Kernel.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { IconContext } from "@phosphor-icons/react"; -import React from "react"; -import {createBrowserRouter, RouterProvider} from "react-router-dom"; -import {CurtainsProvider} from "../Components/Curtains/Curtains"; -import {NotificationsProvider} from "../Components/Notifications/Notifications"; -import {KernelGlobalContextProvider} from "../KernelGlobalContext"; - -/** - * Main Kernel UI app component which initializes everything. - */ -export function Kernel({header, footer, router}: { - header?: React.ReactNode; - footer?: React.ReactNode; - router: ReturnType; -}) -{ - return ( - - - - - {header} - - {footer} - - - - - ); -} diff --git a/src/Async.tsx b/src/Async.tsx deleted file mode 100644 index 52886e6..0000000 --- a/src/Async.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import React, {useEffect, useMemo, useState} from "react"; - -/** - * A type that can be returned by a promise or as is. - */ -export type Promisable = T|Promise; - -/** - * Asynchronous data state. - */ -interface AsyncState -{ - /** - * Determine if we are waiting for the promise result or not. - */ - pending: boolean; - /** - * The promise which is retrieved (or has retrieved) data. - */ - promise: Promisable; - /** - * Error thrown by the promise. - */ - error: Error; - /** - * The promise result. - */ - data: T; -} - -/** - * A promise production function. - */ -export type PromiseFn = () => Promise; - -/** - * React hook for promise result retrieval. - * @param promise The promise or a function which produces a promise. - * @param deps When one of the `deps` change, it will wait for the promise again. - */ -export function useAsync(promise: Promisable|PromiseFn, deps: any[] = []): [AsyncState, React.Dispatch] -{ - // Get the actual promise from the function if there is one. - promise = useMemo(() => { - if ((promise as PromiseFn)?.call) - return (promise as PromiseFn)(); - else if (promise instanceof Promise) - return Promise.race([promise as Promise]); - else - return promise; - }, deps); - - // The async state. - const [state, setState] = useState>({ - pending: promise instanceof Promise, - promise: promise as Promisable, - error: undefined, - data: promise instanceof Promise ? undefined : promise as T, - }); - - /** - * Partial update of an async state. - * @param stateUpdate A partial update object. - */ - const updateState = (stateUpdate: Partial>) => { - // Copy the original state and apply the partial state update. - setState(Object.assign({}, state, stateUpdate)); - }; - - // Reconfigure the promise when any deps have changed. - useEffect(() => { - if (!(promise instanceof Promise)) - { // If it's not a promise, there is nothing to wait for. - updateState({ - pending: false, - promise: promise as Promisable, - error: undefined, - data: promise as T, - }); - return; - } - - promise.then((result) => { - // When there is a result, disable pending state and set retrieved data, without error. - updateState({ - pending: false, - error: undefined, - data: result, - }) - }).catch((error) => { - // An error happened, disable pending state, reset data, and set the error. - updateState({ - pending: false, - error: error, - data: undefined, - }) - }); - - // Promise is ready: reset the state to pending with the configured promise, without data and error. - updateState({ - pending: true, - promise: promise, - error: undefined, - data: undefined, - }); - }, deps); - - // Return the current async state and a dispatch data function. - return [state, (data: T) => { - updateState({data: data}); - }]; -} - -/** - * Wait for the promise to be fulfilled to render the children. - * @param async The async state. - * @param children Renderer function of the children, takes promised data as argument. - * @param fallback Content shown when the promise is not fulfilled yet. - * @constructor - */ -export function Await({ async, children, fallback }: { - async: AsyncState; - children: (async: T) => React.ReactElement; - fallback?: React.ReactElement; -}) -{ - // Still waiting for the promised data, showing fallback content. - if (async.pending) return fallback ?? <>; - // An error happened, throwing it. - if (async.error) throw async.error; - - // Promise is fulfilled, rendering the children with result data. - return children(async.data); -} - -/** - * Easy async component with fallback and fulfilled children render. - * @param promise The promise. - * @param children Renderer function of the children, takes promised data as argument. - * @param fallback Content shown when the promise is not fulfilled yet. - * @constructor - */ -export function Async({promise, fallback, children}: { - promise: Promisable|PromiseFn; - children: (async: T) => React.ReactElement; - fallback?: React.ReactElement; -}) -{ - // Get async data from given promise. - const [async] = useAsync(promise, [promise]); - - return ( - // Wait for promised data. - - {children} - - ) -} diff --git a/src/Components/Box.tsx b/src/Components/Box.tsx deleted file mode 100644 index 743a203..0000000 --- a/src/Components/Box.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React, {PropsWithChildren} from "react"; -import {classes} from "../Utils"; - -/** - * Content box generic component. - */ -export function Box({children, className, ...props}: PropsWithChildren>): React.ReactElement -{ - return ( -
- {children} -
- ); -} diff --git a/src/Components/Buttons/Buttons.tsx b/src/Components/Buttons/Buttons.tsx deleted file mode 100644 index 0a7ca23..0000000 --- a/src/Components/Buttons/Buttons.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; -import {classes} from "../../Utils"; - -export function Buttons({placement, children}: React.PropsWithChildren<{ - placement?: "right"|"left"|"center"; -}>) -{ - // Default placement: right. - placement = placement ?? "right"; - - return ( -
- {children} -
- ); -} diff --git a/src/Components/Card.tsx b/src/Components/Card.tsx deleted file mode 100644 index d1dd8d1..0000000 --- a/src/Components/Card.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React, {PropsWithChildren} from "react"; -import {classes} from "../Utils"; - -/** - * Content card component. - */ -export function Card({children, className, ...props}: PropsWithChildren>): React.ReactElement -{ - return ( -
- {children} -
- ); -} diff --git a/src/Components/Curtains/CurtainInstance.tsx b/src/Components/Curtains/CurtainInstance.tsx deleted file mode 100644 index d513033..0000000 --- a/src/Components/Curtains/CurtainInstance.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import React, {useCallback, useContext, useMemo, useRef} from "react"; -import {CurtainUuidType, useCurtains} from "./Curtains"; -import {classes} from "../../Utils"; - -/** - * Current curtain data and functions. - */ -export interface CurtainContextState -{ - /** - * Curtain UUID. - */ - uuid: CurtainUuidType; - - /** - * Close the curtain. - */ - close: () => void; - - /** - * True if the curtain is closed (while transitioning out). - */ - closed: boolean; -} - -/** - * Current curtain context. - */ -const CurtainContext = React.createContext({ - // Empty values. - uuid: "", - close: () => {}, - closed: false, -}); - -/** - * Hook to access current curtain data and functions. - */ -export function useCurtain(): CurtainContextState -{ - return useContext(CurtainContext); -} - -/** - * Component of an opened curtain instance. - */ -export function CurtainInstance({uuid, children}: React.PropsWithChildren<{ - /** - * Curtain UUID. - */ - uuid: string; -}>) -{ - // Get close curtain function. - const {close, isClosed} = useCurtains(); - - // Initialize close curtain function. - const closeCurtain = useRef<() => void>(); - closeCurtain.current = useCallback(() => { - // Close the current curtain. - close(uuid); - }, [uuid, close]); - - // Initialize context state from action functions. - const contextState = useMemo(() => ({ - uuid: uuid, - close: () => closeCurtain.current(), - closed: isClosed(uuid), - }), [uuid, closeCurtain, isClosed]); - - return ( - -
- {children} -
-
- ); -} - diff --git a/src/Components/Curtains/Curtains.tsx b/src/Components/Curtains/Curtains.tsx deleted file mode 100644 index 9187141..0000000 --- a/src/Components/Curtains/Curtains.tsx +++ /dev/null @@ -1,207 +0,0 @@ -import React, {useCallback, useContext, useEffect, useMemo, useRef, useState} from "react"; -import ReactDOM from "react-dom"; -import {v4 as uuidv4} from "uuid"; -import {CurtainInstance} from "./CurtainInstance"; - -/** - * Curtain UUID type. - */ -export type CurtainUuidType = string; - -/** - * The function that opens a curtain. - */ -export type OpenCurtainFunction = (content: React.ReactNode) => CurtainUuidType; - -/** - * The function that closes a curtain. - */ -export type CloseCurtainFunction = (uuid: CurtainUuidType) => void; - -/** - * The function that checks if a curtain is closed (while transitioning out) or not. - */ -export type IsCurtainClosedFunction = (uuid: CurtainUuidType) => boolean; - -/** - * Interface of curtains state. - */ -export interface CurtainsContextState -{ - /** - * Open a new curtain. - * @param content The curtain content. - * @return UUID of the curtain. - */ - open: OpenCurtainFunction; - - /** - * Close the given curtain. - * @param uuid UUID of the curtain to close. - */ - close: CloseCurtainFunction; - - /** - * Check if the given curtain is closed or not. - * @param uuid UUID of the curtain to check. - */ - isClosed: IsCurtainClosedFunction; -} - -const CurtainsContext = React.createContext({ - // Empty functions. - open() { return ""; }, - close() {}, - isClosed() { return false; }, -}); - -/** - * Hook to interact with curtains (open or close). - */ -export function useCurtains(): CurtainsContextState -{ - return useContext(CurtainsContext); -} - - - -/** - * A generic callable curtain element. - */ -export type CallableCurtainElement = (...args: any) => React.ReactNode; - -/** - * A callable curtain function with typed parameters. - */ -export type CallableCurtain = (...args: Parameters) => CurtainUuidType; - -/** - * Callable curtain function generator. - * @param curtains The curtains context state. - * @param curtainElement The curtain element to open when called. - */ -export function callableCurtain(curtains: CurtainsContextState, curtainElement: React.ReactNode|F): CallableCurtain -{ - if (typeof curtainElement == "function") - // It's a callable curtain element, the callable curtain should be called with the same parameters. - return (...args: Parameters) => curtains.open(curtainElement(...args)); - else - // It's a simple element, just open it. - return () => curtains.open(curtainElement); -} - -/** - * Hook to create a simple curtain. - * @param curtainElement Content of the curtain to open. - */ -export function useCallableCurtain(curtainElement: React.ReactNode|F): CallableCurtain -{ - // Get curtains context state. - const curtains = useCurtains(); - // Create and keep the curtain callable in memory. - return useCallback(callableCurtain(curtains, curtainElement), [curtains, curtainElement]); -} - - - -/** - * Page curtains provider. - */ -export function CurtainsProvider({children}: React.PropsWithChildren<{}>) -{ - // Curtains state. - const [curtains, setCurtains] = useState>({}); - // Keeping track of closed curtains that are still on (while transitioning out). - const [closedCurtains, setClosedCurtains] = useState>({}); - - // Initialize open curtain function. - const open = useRef(); - open.current = useCallback((content: React.ReactNode) => { - // Generate a new curtain UUID for the new curtain to open. - const curtainUuid = uuidv4(); - - // Add the curtain to open to the list of curtains, with the generated UUID. - setCurtains({ - ...curtains, - [curtainUuid]: content, - }); - - // Return the curtain UUID. - return curtainUuid; - }, [curtains, setCurtains]); - - // Initialize remove curtain function. - const remove = useRef(); - remove.current = useCallback((uuid: CurtainUuidType) => { - // Copy the curtains list. - const newCurtains = {...curtains}; - const newClosedCurtains = {...closedCurtains}; - // Remove the given curtain from the list. - delete newCurtains[uuid]; - delete newClosedCurtains[uuid]; - // Set the new curtains list. - setCurtains(newCurtains); - setClosedCurtains(newClosedCurtains); - }, [curtains, setCurtains, closedCurtains, setClosedCurtains]); - - // Initialize close curtain function with animation. - const close = useRef(); - close.current = useCallback((uuid) => { - // Add the given curtain UUID to the list of closed curtains. - setClosedCurtains({ - ...closedCurtains, - [uuid]: true, - }); - - // Remove the curtain 1s later. - window.setTimeout(() => { - // Remove the curtain. - remove.current(uuid); - }, 1000); - }, [remove, closedCurtains, setClosedCurtains]); - - // Initialize isClosed curtain function. - const isClosed = useRef(); - isClosed.current = useCallback((uuid) => (!!closedCurtains?.[uuid]), [closedCurtains]); - - // Initialize context state from action functions. - const contextState = useMemo(() => ({ - open: (content: React.ReactNode) => open.current(content), - close: (uuid: CurtainUuidType) => close.current(uuid), - isClosed: (uuid: CurtainUuidType) => isClosed.current(uuid), - }), [open, close, isClosed]); - - // Show dimmed main content. - useEffect(() => { - if ( - Object.keys(curtains).filter((curtainId) => !closedCurtains[curtainId]).length > 0 - ) // We should dim content if there is at least one open curtain. - { // Only dim if it's not already dimmed. - if (!document.body.classList.contains("dimmed")) document.body.classList.add("dimmed"); - } - else - // We shouldn't dim content. - document.body.classList.remove("dimmed"); - }, [curtains, closedCurtains]); - - return ( - - {children} - - - ); -} - -/** - * Curtains portal manager. - */ -function CurtainsPortal({curtains}: { - curtains: Record; -}) -{ - return ReactDOM.createPortal(Object.entries(curtains).map(([uuid, curtainContent]) => ( - - {curtainContent} - - )), document.body); -} diff --git a/src/Components/Dates/Calendar.tsx b/src/Components/Dates/Calendar.tsx deleted file mode 100644 index 02a7958..0000000 --- a/src/Components/Dates/Calendar.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import React, {useMemo} from "react"; -import {classes} from "../../Utils"; - -/** - * Calendar component. - */ -export function Calendar({date, onDateSelected, locale, className, ...tableProps}: { - date: Date; - onDateSelected: (date: Date) => void; - locale?: string; -} & React.TableHTMLAttributes): React.ReactElement -{ - locale = useMemo(() => (locale ?? "fr"), [locale]); - - const currentMonthHeader = useMemo(() => ( - - { // For each day of the week, showing its name. - [1, 2, 3, 4, 5, 6, 7].map(day => { - // Getting a date with the right day of the week. - const dayOfWeek = new Date(1970, 0, 4 + day); - - return ( - - {(new Intl.DateTimeFormat(locale, {weekday: "short"})).format(dayOfWeek)} - - ); - }) - } - - ), [date]); - - const currentMonthTable = useMemo(() => { - // Initialize weeks. - const weeksRows = []; - let currentWeek = []; - - // Get start date of the calendar. - let currentDate = new Date(date); - currentDate.setDate(1); // First day of the month. - currentDate.setDate(currentDate.getDate() - (currentDate.getDay() - 1 + 7) % 7); // Searching the start of the first week of the current month. - - // Get last day of the calendar. - const lastDate = new Date(date); - lastDate.setMonth(lastDate.getMonth() + 1, 0); // Get the last day of the month. - lastDate.setDate(lastDate.getDate() + (7 - lastDate.getDay())); // Searching the end of the last week of the current month. - - - while (currentDate.getTime() <= lastDate.getTime() || weeksRows.length < 6) - { // While the current date is before or is the last day of the current view, - // adding the current day to the current week. - currentWeek.push( - - ); - - // We're on sunday, adding the current week and creating a new one. - if (currentDate.getDay() == 0) - { // The current week is ended, adding it and creating a new one. - weeksRows.push( - - {currentWeek} - - ); - currentWeek = []; // Reset the current week to a new one. - } - - // Get the next day. - currentDate.setDate(currentDate.getDate() + 1); - } - - // Return generated weeks rows. - return weeksRows; - }, [date, onDateSelected]); - - return ( - - - {currentMonthHeader} - - - {currentMonthTable} - -
- ); -} - -/** - * Calendar day component. - */ -function Day({date, onClick, faded, selected}: { - date: Date; - onClick?: (date: Date) => void; - faded: boolean; - selected: boolean; -}): React.ReactElement -{ - return ( - - onClick?.(date)}> - {date.getDate()} - - - ); -} diff --git a/src/Components/Dates/Datepicker.tsx b/src/Components/Dates/Datepicker.tsx deleted file mode 100644 index 188882e..0000000 --- a/src/Components/Dates/Datepicker.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React, {useCallback, useMemo} from "react"; -import {CaretLeft, CaretRight} from "@phosphor-icons/react"; -import {Tooltip} from "../Floating/Tooltip"; -import {Calendar} from "./Calendar"; -import {classes} from "../../Utils"; - -/** - * Datepicker component. - */ -export function Datepicker({date, onDateSelected, locale, className, ...divProps}: { - date: Date; - onDateSelected: (date: Date) => void; - locale?: string; -} & React.HTMLAttributes): React.ReactElement -{ - locale = useMemo(() => (locale ?? "fr"), [locale]); - - // Get previous month name. - const previousMonthName = useMemo(() => { - // Copy the current date and get back one month earlier. - const previousMonthDate = new Date(date); - previousMonthDate.setMonth(previousMonthDate.getMonth() - 1); - return (new Intl.DateTimeFormat(locale, { month: "long", year: "numeric" })).format(previousMonthDate); - }, [date]); - // Get next month name. - const nextMonthName = useMemo(() => { - // Copy the current date and go to one month later. - const nextMonthDate = new Date(date); - nextMonthDate.setMonth(nextMonthDate.getMonth() + 1); - return (new Intl.DateTimeFormat(locale, { month: "long", year: "numeric" })).format(nextMonthDate); - }, [date]); - - return ( -
-
- {(new Intl.DateTimeFormat(locale, {month: "long", year: "numeric"})).format(date)} -
- - - - - - - - - -
- ); -} diff --git a/src/Components/Errors/NotifyErrorsBoundary.tsx b/src/Components/Errors/NotifyErrorsBoundary.tsx deleted file mode 100644 index 2bd22e0..0000000 --- a/src/Components/Errors/NotifyErrorsBoundary.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React, {useCallback, useMemo} from "react"; -import {ErrorBoundary, ErrorBoundaryProps} from "react-error-boundary"; -import {useNotify} from "../Notifications/Notifications"; -import {Notification, NotificationType} from "../Notifications/Notification"; - -/** - * A React error boundary that show errors in notifications. - */ -export function NotifyErrorsBoundary({children, onError, fallback, fallbackRender, FallbackComponent, ...props}: React.PropsWithChildren>) -{ - // Get notification function. - const notify = useNotify(); - - /** - * Error handling function. - */ - const handleError = useCallback((error: Error, info: React.ErrorInfo) => { - // Show a notification about the error. - notify(Unexpected error: {error.message}); - // Then call defined onError, if there is one. - onError?.(error, info); - }, [onError]); - - // Define default fallback component. - const defaultFallback = useMemo(() => <>, []); - - if (!fallback && !fallbackRender && !FallbackComponent) - // Set default fallback if nothing is set. - fallback = defaultFallback; - - return ( - - {children} - - ); -} diff --git a/src/Components/Floating/Float.tsx b/src/Components/Floating/Float.tsx deleted file mode 100644 index 2f324bd..0000000 --- a/src/Components/Floating/Float.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import React, {useCallback, useMemo, useState} from "react"; -import {Card} from "../Card"; -import { - flip, - shift, - useClick, useDismiss, - useFloating, UseFloatingOptions, - useFocus, - useHover, - useInteractions, useRole, useTransitionStyles -} from "@floating-ui/react"; -import {mergeRefs} from "react-merge-refs"; -import {classes} from "../../Utils"; - -/** - * Fully managed floating content function. - */ -export type Managed = (show: () => void, hide: () => void) => T; - -/** - * Allowed floating modes. - */ -export type FloatingMode = "always"|"click"|"hover"|"focus"|"managed"; - -/** - * Role of a floating element. - */ -export type FloatRole = "tooltip" | "dialog" | "alertdialog" | "menu" | "listbox" | "grid" | "tree" | "select" | "label" | "combobox"; - -/** - * Type of the element on which the floating element is based. - */ -export type FloatChild = (React.ReactElement & React.ClassAttributes)|Managed<(React.ReactElement & React.ClassAttributes)>; - -/** - * Properties of the Float component. - */ -export interface FloatProperties -{ - children: FloatChild; - content?: React.ReactNode|Managed; - className?: string; - mode?: FloatingMode; - dismissible?: boolean; - role?: FloatRole; - floatingOptions?: UseFloatingOptions; -} - -/** - * A component to show something floating next to an element. - */ -export const Float = React.forwardRef(({children, content, className, mode, dismissible, role, floatingOptions}: FloatProperties, ref): React.ReactElement => { - // By default, use "always" mode. - if (!mode) mode = "always"; - if (dismissible === undefined && (mode != "always" && mode != "managed")) dismissible = true; - - // Followed show status. - const [shown, setShown] = useState(false); - - // Create show / hide functions. - const show = useCallback(() => setShown(true), [setShown]); - const hide = useCallback(() => setShown(false), [setShown]); - - // If show mode is "always", always show the floating part after render. - if (mode == "always") - { - setTimeout(() => { - setShown(true); - }, 0); - } - - // Floating initialization. - const { refs, floatingStyles, context, placement } = useFloating( - useMemo(() => (Object.assign({ - open: shown, - onOpenChange: setShown, - middleware: [shift(), flip()], - } as UseFloatingOptions, floatingOptions)), [floatingOptions, shown, setShown]) - ); - - // Interactions initialization. - const hover = useHover(context, useMemo(() => ({ enabled: mode == "hover" }), [mode])); - const focus = useFocus(context, useMemo(() => ({ enabled: mode == "focus", visibleOnly: false }), [mode])); - const click = useClick(context, useMemo(() => ({ enabled: mode == "click" }), [mode])); - const dismiss = useDismiss(context, useMemo(() => ({ enabled: !!dismissible && mode != "click" }), [dismissible])); - const roleProps = useRole(context, { - role: role, - enabled: !!role, - }); - const {getReferenceProps, getFloatingProps} = useInteractions([roleProps, dismiss, hover, focus, click]); - - // Transition configuration. - const {isMounted, styles: transitionStyles} = useTransitionStyles(context, { - duration: 200, - common: ({side}) => ({ - transformOrigin: { - top: "bottom", - bottom: "top", - left: "right", - right: "left", - }[side], - }), - initial: { - transform: "scale(0.66)", - opacity: "0", - }, - }); - - // Change the child element to use the reference and the interactions properties. - const referencedChild = useMemo(() => { - // Render the children if a managed floating function is passed. - const child = typeof children == "function" ? children(show, hide) : children; - - return React.cloneElement(child, - Object.assign( - { - // Pass references. - ref: mergeRefs([ref, refs.setReference, child?.ref]), - }, - // Get interaction properties. - getReferenceProps(), - ), - ); - }, [children, show, hide, ref, refs.setReference, getReferenceProps]); - - // Update floating content. - const floatingContent = useMemo(() => ( - // Render the children if a managed floating function is passed. - typeof content == "function" ? content(show, hide) : content - ), [shown, show, hide, content]); - - return ( - <> - {referencedChild} - - { // Showing floating element if the state says to do so. - isMounted && -
- - {floatingContent} - -
- } - - ); -}) diff --git a/src/Components/Floating/Tooltip.tsx b/src/Components/Floating/Tooltip.tsx deleted file mode 100644 index 23bd239..0000000 --- a/src/Components/Floating/Tooltip.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import {Float} from "./Float"; - -export function Tooltip({children, content}: { - children: React.ReactElement; - content: React.ReactNode; -}): React.ReactElement -{ - return ( - - {children} - - ); -} diff --git a/src/Components/Forms/Checkbox.tsx b/src/Components/Forms/Checkbox.tsx deleted file mode 100644 index 3fd9fc6..0000000 --- a/src/Components/Forms/Checkbox.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import {Check} from "@phosphor-icons/react"; -import {classes} from "../../Utils"; - -export function Checkbox({children, className, type, ...inputProps}: React.PropsWithChildren>): React.ReactElement -{ - return ( - - ); -} diff --git a/src/Components/Forms/CustomValidationRule.tsx b/src/Components/Forms/CustomValidationRule.tsx deleted file mode 100644 index 47b6b38..0000000 --- a/src/Components/Forms/CustomValidationRule.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React, {useEffect, useRef} from "react"; - -/** - * Custom validation rule in a form. - */ -export function CustomValidationRule({valid, errorMessage}: { - valid: boolean; - errorMessage: string; -}) -{ - // HTML virtual input ref. - const ref = useRef(); - - // When the validation is invalid, set a custom error message, set the custom error message. - useEffect(() => { - ref.current.setCustomValidity(valid ? "" : errorMessage); - }, [ref, valid, errorMessage]); - - return ( - {}} /> - ); -} diff --git a/src/Components/Forms/DatepickerInput.tsx b/src/Components/Forms/DatepickerInput.tsx deleted file mode 100644 index a5fd2b2..0000000 --- a/src/Components/Forms/DatepickerInput.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import React, {useCallback, useEffect, useMemo, useRef, useState} from "react"; -import {classes, formatDate, Modify} from "../../Utils"; -import {Float} from "../Floating/Float"; -import {Datepicker} from "../Dates/Datepicker"; - -/** - * A form input for a date with a datepicker. - */ -export function DatepickerInput( - { - children, className, - value, onChange, - // Properties to pass down. - onKeyUp, onBlur, - // Already set properties. - type, placeholder, - ...props}: React.PropsWithChildren, { - /** - * The current date value. - */ - value?: Date|null; - - /** - * Called when picked date is changed. - * @param newDate The new date. - */ - onChange: (newDate: Date) => void; - - // Already set properties. - type?: never; - placeholder?: never; - }>>): React.ReactElement -{ - // Date text state. - const [dateText, setDateText] = useState(""); - - // Update date text when date value has changed. - useEffect(() => { - if (value && value instanceof Date && !isNaN(value.getTime())) - setDateText(formatDate(value)); - }, [value]); - - // Check if date is valid. - const invalidDate = useMemo(() => !(value && value instanceof Date && !isNaN(value.getTime())) && dateText.length > 0, [value, dateText]); - const dateValue = useMemo(() => invalidDate ? new Date() : (value ?? new Date()), [invalidDate, value]); - - const inputRef = useRef(); - - /** - * Submit a new date from its raw text. - */ - const submitDate = useCallback((customDateText?: string) => { - // Get the current date text status. - const dateTextMatch = (customDateText ?? dateText).match(/^([0-9]?[0-9])\/([0-9]?[0-9])\/([0-9]?[0-9]?[0-9]?[0-9])$/); - - if (dateTextMatch) - { - // Parse day. - let day = dateTextMatch[1]; - if (day.length < 2) day = "0" + day; - if (parseInt(day) <= 0) day = "01"; - - // Parse month. - let month = dateTextMatch[2]; - if (month.length < 2) month = "0" + month; - if (parseInt(month) <= 0) month = "01"; - - // Parse year. - let year = parseInt(dateTextMatch[3]); - if (year < 100) - { - year += 1900; - if ((new Date()).getFullYear() - year > 96) year += 100; - } - if (year < 1000) year += 1000; - - // Try to build the structurally valid date. - const date = new Date(year + "-" + month + "-" + day); - - if (!isNaN(date.getTime())) - { // Date is valid, checking that it uses the right month (to fix the behavior when we go change 31/03 to 31/02, we want 28/02 or 29/02 and not 01/03). - if ((date.getMonth() + 1) > parseInt(month)) - { // Current date month is not valid, we're getting back to it. - date.setDate(date.getDate() - 1); - } - if ((date.getMonth() + 1) < parseInt(month)) - { // Current date month is not valid, we're getting back to it. - date.setDate(date.getDate() + 1); - } - } - - // Try to keep original hours. - date.setHours(value?.getHours() ?? 0, value?.getMinutes() ?? 0, value?.getSeconds() ?? 0, value?.getMilliseconds() ?? 0); - - // Set the structurally valid date. - onChange?.(date); - } - else - // No structurally valid date, removing it. - onChange?.(null); - }, [dateText, onChange]); - - return ( - - ); -} diff --git a/src/Components/Forms/PasswordInput.tsx b/src/Components/Forms/PasswordInput.tsx deleted file mode 100644 index 4b57ee3..0000000 --- a/src/Components/Forms/PasswordInput.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React, {useState} from "react"; -import {Eye, EyeSlash} from "@phosphor-icons/react"; -import {classes} from "../../Utils"; - -export function PasswordInput({children, className, type, ...props}: React.PropsWithChildren>): React.ReactElement -{ - const [showPassword, setShowPassword] = useState(false); - - return ( - - ); -} diff --git a/src/Components/Forms/Radio.tsx b/src/Components/Forms/Radio.tsx deleted file mode 100644 index ea64198..0000000 --- a/src/Components/Forms/Radio.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import {Check} from "@phosphor-icons/react"; -import {classes} from "../../Utils"; - -export function Radio({children, className, type, ...inputProps}: React.PropsWithChildren>): React.ReactElement -{ - return ( - - ); -} diff --git a/src/Components/Forms/RequiredField.tsx b/src/Components/Forms/RequiredField.tsx deleted file mode 100644 index 741f9d1..0000000 --- a/src/Components/Forms/RequiredField.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from "react"; -import {classes} from "../../Utils"; - -export function RequiredField({className, ...props}: React.HTMLAttributes): React.ReactElement -{ - return ; -} diff --git a/src/Components/Forms/TimepickerInput.tsx b/src/Components/Forms/TimepickerInput.tsx deleted file mode 100644 index a86fa27..0000000 --- a/src/Components/Forms/TimepickerInput.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import React, {useCallback, useEffect, useMemo, useState} from "react"; -import {classes, formatTime, Modify} from "../../Utils"; - -export function TimepickerInput( - { - children, className, - value, onChange, - // Properties to pass down. - onKeyUp, onBlur, - // Already set properties. - type, placeholder, - ...props - }: React.PropsWithChildren, { - value?: Date|null; - - onChange: (newDateTime: Date) => void; - - // Already set properties. - type?: never; - placeholder?: never; - }>>): React.ReactElement -{ - // Time text state. - const [timeText, setTimeText] = useState(""); - - // Update time text when datetime value has changed. - useEffect(() => { - if (value && value instanceof Date && !isNaN(value.getTime())) - setTimeText(formatTime(value)); - }, [value]); - - // Check if time is valid. - const invalidTime = useMemo(() => !(value && value instanceof Date && !isNaN(value.getTime())) && timeText.length > 0, [value, timeText]); - const timeValue = useMemo(() => invalidTime ? new Date() : (value ?? new Date()), [invalidTime, value]); - - /** - * Submit a new time from its raw text. - */ - const submitTime = useCallback((customTimeText?: string) => { - // Get the current date text status. - const timeTextMatch = (customTimeText ?? timeText).match(/^([0-2]?[0-9]):([0-5]?[0-9])$/); - - if (timeTextMatch) - { - // Parse hours. - let rawHours = timeTextMatch[1]; - if (rawHours.length < 2) rawHours = "0" + rawHours; - let hours = parseInt(rawHours); - if (isNaN(hours)) hours = 0; - - // Parse minutes. - let rawMinutes = timeTextMatch[2]; - if (rawMinutes.length < 2) rawMinutes = "0" + rawMinutes; - let minutes = parseInt(rawMinutes); - if (isNaN(minutes)) minutes = 0; - - //TODO - // Parse seconds? - - // Try to build the structurally valid date with this time. - //TODO - const datetime = new Date(timeValue); - datetime.setHours(hours, minutes); - // Put the date back, if it changed to another day. - datetime.setFullYear(timeValue.getFullYear(), timeValue.getMonth(), timeValue.getDate()); - - // Set the structurally valid date. - onChange?.(datetime); - } - else - // No structurally valid date, removing it. - onChange?.(null); - }, [timeText, timeValue, onChange]); - - return ( - - ); -} diff --git a/src/Components/Forms/ToggleSwitch.tsx b/src/Components/Forms/ToggleSwitch.tsx deleted file mode 100644 index 25c8420..0000000 --- a/src/Components/Forms/ToggleSwitch.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import {Check} from "@phosphor-icons/react"; -import {classes} from "../../Utils"; - -export function ToggleSwitch({children, className, type, ...inputProps}: React.PropsWithChildren>): React.ReactElement -{ - return ( - - ); -} diff --git a/src/Components/Loaders/GenericLoader.tsx b/src/Components/Loaders/GenericLoader.tsx deleted file mode 100644 index 8ddc292..0000000 --- a/src/Components/Loaders/GenericLoader.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from "react"; - -export function GenericLoader({children}: React.PropsWithChildren<{}>) -{ - return ( -
- {children} -
- ); -} diff --git a/src/Components/Loaders/ListLoader.tsx b/src/Components/Loaders/ListLoader.tsx deleted file mode 100644 index 31c37dd..0000000 --- a/src/Components/Loaders/ListLoader.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React, {useCallback} from "react"; - -export function ListLoader({count, itemContent}: { - /** - * Sample items count. - * 3 by default. - */ - count?: number; - - /** - * Sample items content or content generator function. - */ - itemContent?: React.ReactNode|((key: number) => React.ReactNode); -}) -{ - // Sample items count. 3 by default. - count = count === undefined ? 3 : count; - - // Initialize the sample content generator. - const contentGenerator = useCallback((key: number) => ( - typeof itemContent != "function" - // No function given, return the given content or a sample text. - ? (itemContent ?? "Loading content...") - // A function have been given, just return its result. - : itemContent(key) - ), [itemContent]); - - return ( -
    - { // Render every sample item. - [...Array(count)].map((_, key) => ( -
  • {contentGenerator(key)}
  • - )) - } -
- ); -} diff --git a/src/Components/Loaders/SpinningLoader.tsx b/src/Components/Loaders/SpinningLoader.tsx deleted file mode 100644 index 2d7e162..0000000 --- a/src/Components/Loaders/SpinningLoader.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from "react"; -import {classes} from "../../Utils"; - -export function SpinningLoader({ inline }: { inline?: boolean; }) -{ - return ( -
- ); -} diff --git a/src/Components/Menus/AppsMenu.tsx b/src/Components/Menus/AppsMenu.tsx deleted file mode 100644 index ca33fdf..0000000 --- a/src/Components/Menus/AppsMenu.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import React from "react"; -import {classes} from "../../Utils"; -import {IconContext} from "@phosphor-icons/react"; -import {NavLink, NavLinkProps} from "react-router-dom"; - -/** - * Main apps menu component. - */ -export function AppsMenu({className, children, ...props}: React.HTMLAttributes) -{ - return ( - - {(value) => ( - - - - )} - - ); -} - -/** - * Component of an app item in apps menu. - */ -export function AppItem({className, children, ...props}: React.HTMLAttributes) -{ - return ( -
  • - - {children} - -
  • - ); -} - -/** - * Component of an app link in apps menu. - */ -export function AppLink({className, children, ...props}: NavLinkProps & React.HTMLAttributes) -{ - return ( -
  • - - {children} - -
  • - ); -} diff --git a/src/Components/Menus/MainMenu.tsx b/src/Components/Menus/MainMenu.tsx deleted file mode 100644 index 0933189..0000000 --- a/src/Components/Menus/MainMenu.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; -import {classes} from "../../Utils"; - -/** - * Main component of a main menu. - */ -export function MainMenu({children, className, ...props}: React.PropsWithChildren>) -{ - return ( - - ); -} diff --git a/src/Components/Menus/MainMenuItem.tsx b/src/Components/Menus/MainMenuItem.tsx deleted file mode 100644 index 278b569..0000000 --- a/src/Components/Menus/MainMenuItem.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React from "react"; -import {classes, Modify} from "../../Utils"; -import {SubmenuFloat} from "./SubmenuFloat"; -import {NavLink, NavLinkProps} from "react-router-dom"; - -/** - * Main menu item properties. - */ -export type MainMenuItemProperties = React.PropsWithChildren, { -}>>; - -/** - * Main component of a main menu item. - */ -export const MainMenuItem = React.forwardRef(function SubmenuItem({children, ...props}: MainMenuItemProperties, ref) -{ - return ( -
  • - {children} -
  • - ); -}); - -/** - * A main menu item link properties. - */ -export type MainMenuLinkProperties = React.PropsWithChildren, { -}>>; - -/** - * A main menu item link. - */ -export const MainMenuLink = React.forwardRef(function MainMenuLink({children, ...props}: MainMenuLinkProperties, ref) -{ - return ( -
  • - {children} -
  • - ); -}); - -/** - * A main menu item that open a submenu. - */ -export function MainMenuItemSubmenu({submenu, className, children, ...props}: Modify) -{ - return ( - - {children} - - ); -} diff --git a/src/Components/Menus/Submenu.tsx b/src/Components/Menus/Submenu.tsx deleted file mode 100644 index c2c2b19..0000000 --- a/src/Components/Menus/Submenu.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import {classes} from "../../Utils"; - -/** - * Main component of a submenu. - */ -export function Submenu({className, children, ...props}: React.PropsWithChildren>) -{ - return ( -
    - {children} -
    - ); -} diff --git a/src/Components/Menus/SubmenuFloat.tsx b/src/Components/Menus/SubmenuFloat.tsx deleted file mode 100644 index 908d278..0000000 --- a/src/Components/Menus/SubmenuFloat.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from "react"; -import {Float, FloatProperties} from "../Floating/Float"; -import {classes, Modify} from "../../Utils"; - -/** - * Add a submenu which opens on click on the child. - */ -export function SubmenuFloat({submenu, className, mode, dismissible, children, content, ...props}: Modify) -{ - return ( - - {children} - - ); -} diff --git a/src/Components/Menus/SubmenuItem.tsx b/src/Components/Menus/SubmenuItem.tsx deleted file mode 100644 index 0b750fa..0000000 --- a/src/Components/Menus/SubmenuItem.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from "react"; -import {classes, Modify} from "../../Utils"; -import {SubmenuFloat} from "./SubmenuFloat"; -import {NavLink, NavLinkProps} from "react-router-dom"; - -/** - * Submenu item properties. - */ -export type SubmenuItemProperties = React.PropsWithChildren, { -}>>; - -/** - * Main component of a submenu item. - */ -export const SubmenuItem = React.forwardRef(function SubmenuItem({className, children, ...props}: SubmenuItemProperties, ref) -{ - return ( - {children} - ); -}); - -/** - * A submenu item link properties. - */ -export type SubmenuLinkProperties = React.PropsWithChildren, { -}>>; - -/** - * A submenu item link. - */ -export const SubmenuLink = React.forwardRef(function SubmenuLink({className, children, ...props}: SubmenuLinkProperties, ref) -{ - return ( - {children} - ); -}); - -/** - * A submenu item that open a submenu. - */ -export function SubmenuItemSubmenu({submenu, className, children, ...props}: Modify) -{ - return ( - - {children} - - ); -} diff --git a/src/Components/Modals/Modals.tsx b/src/Components/Modals/Modals.tsx deleted file mode 100644 index 1e2c17c..0000000 --- a/src/Components/Modals/Modals.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React from "react"; -import {X} from "@phosphor-icons/react"; -import {useCurtains, useCallableCurtain} from "../Curtains/Curtains"; -import {classes, Modify} from "../../Utils"; -import {ModalType, ModalTypeIcon} from "./ModalsTypes"; -import {useCurtain} from "../Curtains/CurtainInstance"; - -/** - * More natural name of useCurtains for modals. - * @see useCurtains - */ -export const useModals = useCurtains; - -/** - * More natural name of useCurtain for modals. - * @see useCurtain - */ -export const useModal = useCurtain; - -/** - * More natural name of useCallableCurtain for modals. - * @see useCallableCurtain - */ -export const useCallableModal = useCallableCurtain; - -/** - * Modal main component. - */ -export function Modal({className, title, closable, type, children, ...props}: React.PropsWithChildren, { - /** - * Modal title. - */ - title?: string; - - /** - * Can disable close button. - */ - closable?: boolean; - - /** - * Modal type. None by default. - */ - type?: ModalType; -}>>) -{ - // Modal is closable by default. - closable = closable !== undefined ? closable : true; - - // Modal type is NONE by default. - type = type !== undefined ? type : ModalType.NONE; - - // Modal state. - const {close} = useModal(); - - return ( -
    -
    -

    {ModalTypeIcon[type]} {title ?? ""}

    - - -
    - -
    - {children} -
    -
    - ); -} diff --git a/src/Components/Modals/ModalsTypes.tsx b/src/Components/Modals/ModalsTypes.tsx deleted file mode 100644 index 9f08822..0000000 --- a/src/Components/Modals/ModalsTypes.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from "react"; -import {CheckCircle, Info, Record, Warning, WarningDiamond} from "@phosphor-icons/react"; - -/** - * Modal types enumeration. - */ -export enum ModalType -{ - INFO = "info", - SUCCESS = "success", - WARNING = "warning", - ERROR = "error", - NONE = "none", -} - -/** - * Icon for each modal type. - */ -export const ModalTypeIcon: Record = { - [ModalType.INFO]: , - [ModalType.SUCCESS]: , - [ModalType.WARNING]: , - [ModalType.ERROR]: , - [ModalType.NONE]: null, -}; diff --git a/src/Components/Notifications/Notification.tsx b/src/Components/Notifications/Notification.tsx deleted file mode 100644 index 0b85dd1..0000000 --- a/src/Components/Notifications/Notification.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React, {useCallback, useContext} from "react"; -import {classes} from "../../Utils"; -import {NotificationContext, NotificationsContext} from "./Notifications"; - -/** - * Notifications types enumeration. - */ -export enum NotificationType -{ - NONE = "none", - INFO = "info", - SUCCESS = "success", - WARNING = "warning", - ERROR = "error", -} - -/** - * Notification component. - */ -export function Notification({type, children}: React.PropsWithChildren<{ - type?: NotificationType; -}>) -{ - // Default type is NONE. - type = type ?? NotificationType.NONE; - - // Get notifications context. - const {close} = useContext(NotificationsContext); - - // Get current notification UUID. - const {uuid, closed} = useContext(NotificationContext); - - // Initialize close notification function. - const closeNotification = useCallback(() => { close(uuid); }, [uuid]); - - return ( -
  • - {children} -
  • - ); -} diff --git a/src/Components/Notifications/Notifications.tsx b/src/Components/Notifications/Notifications.tsx deleted file mode 100644 index b9704a2..0000000 --- a/src/Components/Notifications/Notifications.tsx +++ /dev/null @@ -1,217 +0,0 @@ -import React, {startTransition, useCallback, useContext, useEffect, useMemo, useRef, useState} from "react"; -import ReactDOM from "react-dom"; -import {v4 as uuidv4} from "uuid"; - -/** - * Notification UUID type. - */ -export type NotificationUuid = string; - -/** - * Notification data. - */ -export interface NotificationData -{ - /** - * The notification content. - */ - content: React.ReactNode; -} - -/** - * Type of notification emitter function. - */ -export type EmitNotificationFunction = (content: React.ReactNode) => void; - -/** - * Type of notification close function. - */ -export type RemoveNotificationFunction = (uuid: NotificationUuid) => void; - -/** - * Type of notification close function. - */ -export type CloseNotificationFunction = (uuid: NotificationUuid) => void; - -/** - * Type of notification closed state function. - */ -export type IsNotificationClosedFunction = (uuid: NotificationUuid) => boolean; - - -/** - * Interface of notifications state. - */ -export interface NotificationsContextState -{ - /** - * Notification function. - * @param content Notification content. - */ - notify: EmitNotificationFunction; - - /** - * Close notification function. - * @param uuid UUID of notification to close. - */ - close: CloseNotificationFunction; - - /** - * Is given notification closed? - * @param uuid UUID of notification to get closed state. - */ - isClosed: IsNotificationClosedFunction; -} - -export const NotificationsContext = React.createContext({ - notify() {}, - close() {}, - isClosed() { return false; }, -}); - -/** - * Hook to emit a notification. - */ -export function useNotify(): EmitNotificationFunction -{ - return useContext(NotificationsContext).notify; -} - - - -/** - * Notifications provider. - */ -export function NotificationsProvider({children}: React.PropsWithChildren<{}>) -{ - // Notifications. - const [notifications, setNotifications] = useState>({}); - // Keeping track of closed notifications that are still on (while transitioning out). - const [closedNotifications, setClosedNotifications] = useState>() - - // Initialize remove notification function. - const remove = useRef(); - remove.current = useCallback((uuid) => { - // Copy the notifications list. - const newNotifications = {...notifications}; - const newClosedNotifications = {...closedNotifications}; - // Remove the given notification from the list. - delete newNotifications[uuid]; - delete newClosedNotifications[uuid]; - // Set the new notifications list. - setNotifications(newNotifications); - setClosedNotifications(newClosedNotifications); - }, [notifications, setNotifications, closedNotifications, setClosedNotifications]); - - // Initialize close notification function with animation. - const close = useRef(); - close.current = useCallback((uuid) => { - // Add the given curtain UUID to the list of closed curtains. - setClosedNotifications({ - ...closedNotifications, - [uuid]: true, - }); - - // Remove the notification 300ms later. - window.setTimeout(() => { - // Remove the curtain. - remove.current(uuid); - }, 300); - }, [remove, closedNotifications, setClosedNotifications]); - - // Initialize isClosed notification function. - const isClosed = useRef(); - isClosed.current = useCallback((uuid) => (!!closedNotifications?.[uuid]), [closedNotifications]); - - // Initialize notify function. - const notify = useRef(); - notify.current = useCallback((content: React.ReactNode) => { - // Generate a new notification UUID for the new notification. - const notificationUuid = uuidv4(); - - // Add the notification to the list of notifications, with the generated UUID. - setNotifications({ - ...notifications, - [notificationUuid]: { - content: content, - }, - }); - - // Close notification 10s later. - setTimeout(() => { - close.current(notificationUuid); - }, 10000); - }, [notifications, setNotifications]); - - // Initialize context state from action functions. - const contextState = useMemo(() => ({ - notify: (content: React.ReactNode) => notify.current(content), - close: (uuid: NotificationUuid) => close.current(uuid), - isClosed: (uuid: NotificationUuid) => isClosed.current(uuid), - }), [notify, isClosed]); - - return ( - - {children} - - - ); -} - -/** - * Curtains portal manager. - */ -function NotificationsPortal({notifications}: { - notifications: Record; -}) -{ - return ReactDOM.createPortal(( -
      - { // Show notifications list. - Object.entries(notifications).map(([uuid, notificationData]) => ( - - {notificationData.content} - - )) - } -
    - ), document.body); -} - -/** - * A notification context. - */ -export const NotificationContext = React.createContext<{ - /** - * Notification UUID. - */ - uuid: NotificationUuid; - - /** - * Notification closed state. - */ - closed: boolean; -}>(undefined); - -/** - * Notification component. - */ -function NotificationInstance({uuid, children}: React.PropsWithChildren<{ - /** - * Notification UUID. - */ - uuid: NotificationUuid; -}>) -{ - // Get notifications context. - const {isClosed} = useContext(NotificationsContext); - - return ( - - {children} - - ); -} diff --git a/src/Components/Pagination/Paginate.tsx b/src/Components/Pagination/Paginate.tsx deleted file mode 100644 index 6b4b91c..0000000 --- a/src/Components/Pagination/Paginate.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import React, {useCallback, useState} from "react"; -import {Pagination} from "./Pagination"; -import {SpinningLoader} from "../Loaders/SpinningLoader"; -import {Await, useAsync} from "../../Async"; - -/** - * Paginated content component with custom page handling. - */ -export function Paginate({ page, onChange, count, children }: React.PropsWithChildren<{ - /** - * The current page. - */ - page: number; - - /** - * Called when a new page is selected. - * @param newPage The newly selected page. - */ - onChange: (newPage: number) => void; - - /** - * Pages count. - */ - count: number; -}>) -{ - return ( - <> - {children} - - - - ); -} - -/** - * Paginated content component. - */ -export function AutoPaginate({ count, children }: { - /** - * Pages count. - */ - count: number; - - /** - * Show the given page. - * @param page The page to show. - */ - children: (page: number) => React.ReactElement; -}) -{ - // The current page. - const [page, setPage] = useState(1); - - return ( - - {children(page)} - - ); -} - -/** - * Asynchronous paginated content component. - */ -export function AsyncPaginate({ count, getData, children }: { - /** - * Get pages count. - */ - count: () => Promise; - - /** - * Get data for the given page. - * @param page The page for which to get data. - */ - getData: (page: number) => Promise; - - /** - * Show the current page with its retrieved data. - * @param data Data of the page to show. - * @param page The page to show. - */ - children: (data: T, page: number) => React.ReactElement; -}) -{ - // Getting pages count. - const [asyncCount] = useAsync(count, []); - - return ( - }> - { - (count) => ( - - {(page) => } - - ) - } - - ); -} - -/** - * An async page to render. - */ -export function AsyncPage({page, getData, render}: { - /** - * The page number to show. - */ - page: number; - - /** - * Get data for the given page. - * @param page The page for which to get data. - */ - getData: (page: number) => Promise; - - /** - * Render the page with its retrieved data. - * @param data Data of the page to show. - * @param page The page to show. - */ - render: (data: T, page: number) => React.ReactElement; -}) -{ - // Store function to get page data. - const getPageData = useCallback(() => { - return getData(page); - }, [page]); - - // Getting page data. - const [asyncPageData] = useAsync(getPageData, [getPageData]); - - return ( - }> - {(pageData) => render(pageData, page)} - - ); -} diff --git a/src/Components/Pagination/Pagination.tsx b/src/Components/Pagination/Pagination.tsx deleted file mode 100644 index 271a08d..0000000 --- a/src/Components/Pagination/Pagination.tsx +++ /dev/null @@ -1,141 +0,0 @@ -import React, {useEffect, useState} from "react"; -import {CaretLeft, CaretRight} from "@phosphor-icons/react"; -import {Tooltip} from "../Floating/Tooltip"; -import {usePreviousValue} from "../../Utils"; - -/** - * Pagination component. - */ -export function Pagination({ page, onChange, count }: { - /** - * The current page. - */ - page: number; - - /** - * Called when a new page is selected. - * @param newPage The newly selected page. - */ - onChange: (newPage: number) => void; - - /** - * Pages count. - */ - count: number; -}) -{ - // Memorize previous page. - const previousPage = usePreviousValue(page); - - // The input text to use, when the currently entered value is not a number. - const [inputText, setInputText] = useState(undefined); - - useEffect(() => { - if (page != previousPage) - // If the page has changed, resetting the input text. - setInputText(undefined); - }, [previousPage, page]); - - return ( - - ); -} diff --git a/src/Components/Select/OptionsSuggestions.tsx b/src/Components/Select/OptionsSuggestions.tsx deleted file mode 100644 index 6e6a06d..0000000 --- a/src/Components/Select/OptionsSuggestions.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import React, {MutableRefObject, useCallback, useMemo, useRef, useState} from "react"; -import {classes} from "../../Utils"; -import {Check} from "@phosphor-icons/react"; - -/** - * Suggestions preselected options navigation configuration. - */ -export interface SuggestionsNavigation -{ - /** - * Return true if the preselected options navigation is initialized. - */ - initialized(): boolean; - - /** - * Preselect the next option in the suggestions. - */ - next(): void; - - /** - * Preselect the previous option in the suggestions. - */ - previous(): void; - - /** - * Select the currently preselected option. - */ - select(): void; -} - -/** - * Hook to get the preselected options navigation reference. - */ -export function useSuggestionsNavigation(): MutableRefObject -{ - return useRef({ - initialized(): boolean - { - return false; - }, - - next(): void - { - }, - - previous(): void - { - }, - - select(): void - { - }, - } as SuggestionsNavigation); -} - -export function OptionsSuggestions({options, onSelected, selectedOptions, renderOption, navigator}: { - /** - * Options to suggest. - */ - options: Record; - - /** - * Called when an option is selected. - * @param key - * @param option - */ - onSelected: (key: OptionKey, option: Option) => void; - - /** - * Already selected options that will be shown differently. - */ - selectedOptions?: Record; - - /** - * Render an option. - * @param option The option to render. - */ - renderOption?: (option: Option) => React.ReactNode; - - /** - * A reference to a preselected suggestions options navigation object. - */ - navigator?: MutableRefObject; -}): React.ReactNode -{ - // Initialize default option render function. - const defaultRenderOption = useCallback((option: Option) => (String(option)), []); - - const optionsArray = useMemo(() => (Object.entries(options) as [OptionKey, Option][]), [options]); - - const [preselectedOptionIndex, setPreselectedOptionIndex] = useState(0); - - const navigation = useMemo(() => ({ - initialized(): boolean - { - return true; - }, - - next(): void - { - // Preselect the next option in the options array, or the first one if it's the last element. - setPreselectedOptionIndex((optionsArray.length == (preselectedOptionIndex + 1)) ? 0 : (preselectedOptionIndex + 1)); - }, - - previous(): void - { - // Preselect the previous option in the options array, or the last one if it's the first element. - setPreselectedOptionIndex(((preselectedOptionIndex - 1) < 0) ? (optionsArray.length - 1) : (preselectedOptionIndex - 1)); - }, - - select(): void - { - // Get the currently preselected option. - const [optionKey, option] = optionsArray[preselectedOptionIndex]; - // Select the currently preselected option. - onSelected(optionKey, option); - }, - }), [optionsArray, preselectedOptionIndex, setPreselectedOptionIndex]); - - if (navigator) - // If navigator reference is set, assigning it. - navigator.current = navigation; - - return optionsArray.map(([key, option], index) => ( - { onSelected(key, option); }}> - {(renderOption ?? defaultRenderOption)(option)} - - - - )); -} diff --git a/src/Components/Select/Select.tsx b/src/Components/Select/Select.tsx deleted file mode 100644 index b23b738..0000000 --- a/src/Components/Select/Select.tsx +++ /dev/null @@ -1,250 +0,0 @@ -import React, {useCallback, useMemo, useRef} from "react"; -import {Suggestible} from "./Suggestible"; -import {OptionsSuggestions, useSuggestionsNavigation} from "./OptionsSuggestions"; -import {classes, Modify, normalizeString} from "../../Utils"; -import {CaretDown, Check, X} from "@phosphor-icons/react"; -import {CustomValidationRule} from "../Forms/CustomValidationRule"; - -/** - * Generic select component properties. - */ -export type SelectProperties = React.PropsWithChildren, { - /** - * The currently selected option(s). - */ - value: OptionKey|OptionKey[]; - - /** - * Called when new options are selected. - * @param newValue - */ - onChange: (newValue: OptionKey|OptionKey[]) => void; - - /** - * Options list or a way to get it from a given search. - */ - options: Record; - - /** - * Render an option. - * @param option The option to render. - */ - renderOption?: (option: Option) => React.ReactNode; - - /** - * Option match function. Return true if the given option matches the given search query. - * @param search The search query. - * @param option The option that should match the search query. - */ - match?: (search: string, option: Option) => boolean; - - /** - * Min count of options to allow to select. - * 0 by default, 1 when required is true. - */ - selectibleMinCount?: number; - - /** - * Max count of options to allow to select. - * 1 by default when multiple is false, infinity when multiple is true. - */ - selectibleMaxCount?: number; - - /** - * True to allow to select an infinite count of options. - * false by default. - */ - multiple?: boolean; - - /** - * When true, the select loses focus when a new option is selected (by clicking or pressing Enter). - * false by default. - */ - blurOnSelect?: boolean; - - /** - * When true, the select loses focus when the max count of selectible options have been reached (by clicking or pressing Enter). - * true by default. - */ - blurWhenMaxCountSelected?: boolean; - - // Already set properties. - type?: never; - role?: never; -}>>; - -/** - * Generic select component. - */ -export function Select( - { - className, - value, onChange, - options, renderOption, match, - required, selectibleMinCount, - selectibleMaxCount, multiple, - blurOnSelect, blurWhenMaxCountSelected, - // Properties to pass down. - onKeyDown, - // Already set properties. - type, role, - children, - ...props - }: SelectProperties): React.ReactElement -{ - const [search, setSearch] = React.useState(""); - - // By default, allow to select only one option. - // If `multiple` is set and `selectibleMaxCount` is not, allow an infinite count of options to select. - selectibleMaxCount = selectibleMaxCount ?? ((multiple === undefined ? false : multiple) ? Infinity : 1); - - // By default, allow to select no option. - // If `required` is set, `selectibleMinCount` will be set as 1 by default. - selectibleMinCount = selectibleMinCount ?? (required ? 1 : 0); - - // true by default. - blurOnSelect = blurOnSelect === undefined ? false : blurOnSelect; - blurWhenMaxCountSelected = blurWhenMaxCountSelected === undefined ? true : blurWhenMaxCountSelected; - - // Initialize default option render function. - const defaultRenderOption = useCallback((option: Option) => (String(option)), []); - - // Initialize default match option function. - const defaultMatchOption = useCallback((search: string, option: Option) => normalizeString(String(option)).includes(normalizeString(search)), []); - - // An array of the selected options. - const selectedOptions = useMemo(() => ( - // Normalize value to an array. - ((!Array.isArray(value) ? [value] : value) - // Try to get the corresponding option for each given value. - .map((optionKey) => [optionKey, options?.[optionKey]]) as [OptionKey, Option][]) - // Filter non-existing options. - .filter(([_, option]) => (option !== undefined)) - ), [value, options]); - - // A reference to the main search input. - const inputRef = useRef(); - - // The suggestions' navigator. - const suggestionsNavigator = useSuggestionsNavigation(); - - // Get all available options, filtered using search query. - const filteredOptions = useMemo(() => ( - !search || (search.length == 0) - // Nothing is searched, return all options. - ? options - // Filter options using search query and matching function. - : Object.fromEntries( - (Object.entries(options) as [OptionKey, Option][]).filter(([optionKey, option]) => ( - (match ?? defaultMatchOption)(search, option) - )) - ) as Record - ), [options, search, match, defaultMatchOption]); - - // Called when a new option is selected. - const handleSelectedOption = useCallback((selectedOption: OptionKey) => { - // Get an associative object from selected options. - const currentSelection = Object.fromEntries(selectedOptions) as Record; - - // Initialize the new selection variable. - let newSelection: OptionKey|OptionKey[] = Object.keys(currentSelection) as OptionKey[]; - - if (selectibleMaxCount == 1) - // Only one possible selection = the newly selected option is the new selection. - newSelection = selectedOption; - else - { // Multiple selections possible. - if (!currentSelection[selectedOption]) - { // The newly selected option wasn't selected, we should add it in the selection array. - // Add the newly selected option in the array. - newSelection = [...newSelection, selectedOption]; - if (newSelection.length > selectibleMaxCount) - // If the array is now too big, we remove the first options to match the max count of options. - newSelection.splice(0, newSelection.length - selectibleMaxCount); - } - else - { // The option was already selected, we should deselect it. - newSelection = newSelection.filter((key) => key != selectedOption); - } - } - - // Call onChange event with the new selection. - onChange(newSelection); - - // Reset search query. - setSearch(""); - - if ( - // Always blur on selection. - blurOnSelect - || - // Blur when the new selection now reach the max selectible count. - (blurWhenMaxCountSelected && ((selectibleMaxCount == 1 && !!newSelection) || (selectibleMaxCount == (newSelection as OptionKey[])?.length))) - ) // Try to lose focus, as a new selection has been made and blur conditions are reached. - window.setTimeout(() => { inputRef?.current?.blur(); }, 0); - }, [selectedOptions, onChange, setSearch]); - - // Called when an option is deselected. - const handleDeselectedOption = useCallback((deselectedOption: OptionKey) => { - // Call onChange event with the new selection. - onChange( - selectedOptions - // Remove deselected option if it was in the selected options array. - .filter(([optionKey]) => (optionKey != deselectedOption)) - .map(([optionKey]) => optionKey) - ); - }, [selectedOptions, onChange]); - - return ( - - ); -} diff --git a/src/Components/Select/SimpleSuggestions.tsx b/src/Components/Select/SimpleSuggestions.tsx deleted file mode 100644 index 2f70b69..0000000 --- a/src/Components/Select/SimpleSuggestions.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from "react"; - -export function SimpleSuggestions(): React.ReactElement -{ - return ( - <> - test - another - - ); -} diff --git a/src/Components/Select/Suggestible.tsx b/src/Components/Select/Suggestible.tsx deleted file mode 100644 index 492abc0..0000000 --- a/src/Components/Select/Suggestible.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -import {Float, FloatProperties} from "../Floating/Float"; -import {classes, Modify} from "../../Utils"; - -export function Suggestible({className, suggestions, mode, content, role, children, ...props}: Modify) -{ - // Default mode for showing suggestions is "focus". - mode = mode ?? "focus"; - - return ( - - {children} - - ); -} diff --git a/src/Components/Steps/Steps.tsx b/src/Components/Steps/Steps.tsx deleted file mode 100644 index 97426f0..0000000 --- a/src/Components/Steps/Steps.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import React, {useEffect} from "react"; -import { - GlobalStateProvider, - useGlobalStateReducers, useGlobalStateValue, -} from "../../GlobalState"; -import {usePreviousValue} from "../../Utils"; -import {StepKeyType, stepsGlobalState, useCurrentStepKey, useStepsNavigator} from "./StepsContext"; - - - -/** - * Main Steps component. - */ -export function Steps({children}: React.PropsWithChildren<{}>) -{ - return ( - -
    - - -
    - {children} -
    -
    -
    - ); -} - -/** - * Steps navigator component. - */ -export function StepsNavigatorComponent() -{ - // Get the steps navigator functions. - const stepsNavigator = useStepsNavigator(); - - // Get the current steps state. - const stepsState = useGlobalStateValue(stepsGlobalState); - - // Get the current step. - const currentStep = useCurrentStepKey(); - - return ( - - ); -} - - -/** - * Component of a step. - */ -export function Step({stepKey, stepTitle, children}: React.PropsWithChildren<{ - /** - * The current step unique key. - */ - stepKey: StepKeyType; - - /** - * The step title, to show in the navigator. - */ - stepTitle?: React.ReactNode; -}>) -{ - // Get the global state reducers class. - const stepsGlobalStateReducers = useGlobalStateReducers(stepsGlobalState); - - // Get the previous step key. - const previousStepKey = usePreviousValue(stepKey); - - useEffect(() => { - // Remove the previous step key, if there is one. - if (previousStepKey) stepsGlobalStateReducers.removeStep(previousStepKey); - - // Register the current step key. - stepsGlobalStateReducers.registerStep(stepKey, stepTitle); - - // Remove the step key when component is removed. - return () => stepsGlobalStateReducers.removeStep(stepKey); - }, [stepsGlobalStateReducers, previousStepKey, stepTitle]); - - // Get the current step key. - const currentStep = useCurrentStepKey(); - - if (currentStep != stepKey) - // If this step is not the current one, rendering nothing. - return undefined; - - // Rendering the current step. - return ( -
    - {children} -
    - ); -} diff --git a/src/Components/Steps/StepsContext.tsx b/src/Components/Steps/StepsContext.tsx deleted file mode 100644 index 79ed50b..0000000 --- a/src/Components/Steps/StepsContext.tsx +++ /dev/null @@ -1,165 +0,0 @@ -import React, {useMemo} from "react"; -import {GlobalState, GlobalStateReducers, useGlobalStateReducers, useGlobalStateValue} from "../../GlobalState"; - -/** - * Type of step key. - */ -export type StepKeyType = string; - -/** - * Steps global state data type. - */ -export interface StepsGlobalStateType -{ - /** - * Steps list, by their order of apparition. - */ - steps: { key: StepKeyType; title?: React.ReactNode; }[]; - - /** - * The index of the current step in the steps list. - */ - currentStepIndex: number; -} - -/** - * The steps global state modification functions. - */ -class StepsGlobalStateReducers extends GlobalStateReducers -{ - /** - * Register a new step with its step key. - * @param newStepKey The step key to register. - */ - registerStep(newStepKey: StepKeyType, newStepTitle?: React.ReactNode): void - { - this.setState({ - // Add the given step key to the steps array, ensuring that it will be there only once. - steps: [...this.state.steps.filter(({key: currentStepKey}) => currentStepKey != newStepKey), { key: newStepKey, title: newStepTitle }] - }); - } - - /** - * Remove an old step with its step key. - * @param oldStepKey The step key to remove. - */ - removeStep(oldStepKey: StepKeyType): void - { - this.setState({ - // Remove the given step key from the steps array. - steps: this.state.steps.filter(({key: currentStepKey}) => currentStepKey != oldStepKey) - }); - } - - /** - * Set the current step from its key. - * @param stepKey The step key to set as the current one. - */ - setCurrentStep(stepKey: StepKeyType): void - { - // Get the new step index. - const stepIndex = this.state.steps.findIndex(({key: currentStep}) => currentStep == stepKey); - - if (stepIndex >= 0) - { // If the new step index has been found, setting it as the current one. - this.setState({ - currentStepIndex: stepIndex, - }); - } - } - - /** - * Get the next step key. - */ - getNextStep(): StepKeyType - { - return this.state.steps[this.state.currentStepIndex + 1]?.key ?? this.state.steps[0]?.key; - } - - /** - * Get the previous step key. - */ - getPreviousStep(): StepKeyType - { - return this.state.steps[this.state.currentStepIndex - 1]?.key ?? this.state.steps[this.state.steps.length - 1]?.key; - } -} - -/** - * The steps global state. - */ -export const stepsGlobalState = new GlobalState({ - steps: [], - currentStepIndex: 0, -}, new StepsGlobalStateReducers); - -/** - * Hook of the current step key in a steps component. - */ -export function useCurrentStepKey(): StepKeyType -{ - // Get the current steps global state value. - const stepsState = useGlobalStateValue(stepsGlobalState); - - // Get the current step from the global state value. - return stepsState.steps.length > 0 - ? ( // If there are steps, getting the current one. - stepsState.currentStepIndex < stepsState.steps.length - ? ( // If the index is correctly defined, trying to get the corresponding state key - stepsState.currentStepIndex >= 0 ? (stepsState.steps[stepsState.currentStepIndex]?.key) : stepsState.steps[0]?.key - ) - // The current index is too high, taking the last step as the current one. - : stepsState.steps[stepsState.steps.length - 1]?.key - ) - // There are no steps, returning none. - : undefined; -} - -/** - * Steps navigator - */ -export interface StepsNavigator -{ - /** - * Go to the next step. - */ - next(): void; - - /** - * Return to the previous step. - */ - previous(): void; - - /** - * Go to the given step. - * @param stepKey The step key to join. - */ - set(stepKey: StepKeyType): void; -} - -/** - * Hook of the steps' navigator. - */ -export function useStepsNavigator(): StepsNavigator -{ - // Get the steps reducers instance. - const stepsReducers = useGlobalStateReducers(stepsGlobalState); - - // Create the steps navigator object. - return useMemo(() => ({ - next() - { - stepsReducers.setCurrentStep(stepsReducers.getNextStep()); - }, - - previous() - { - stepsReducers.setCurrentStep(stepsReducers.getPreviousStep()); - }, - - set(stepKey: StepKeyType) - { - stepsReducers.setCurrentStep(stepKey); - }, - }), [stepsReducers]); -} diff --git a/src/Components/Subapps/Subapps.tsx b/src/Components/Subapps/Subapps.tsx deleted file mode 100644 index 586f782..0000000 --- a/src/Components/Subapps/Subapps.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React from "react"; -import {X} from "@phosphor-icons/react"; -import {useCallableCurtain, useCurtains} from "../Curtains/Curtains"; -import {classes, Modify} from "../../Utils"; -import {useCurtain} from "../Curtains/CurtainInstance"; - -/** - * More natural name of useCurtains for subapps. - * @see useCurtains - */ -export const useSubapps = useCurtains; - -/** - * More natural name of useCurtain for subapps. - * @see useCurtain - */ -export const useSubapp = useCurtain; - -/** - * More natural name of useCallableCurtain for subapps. - * @see useCallableCurtain - */ -export const useCallableSubapp = useCallableCurtain; - -/** - * Subapp main component. - */ -export function Subapp({className, title, closable, children}: React.PropsWithChildren, { - /** - * Subapp title. - */ - title?: string; - - /** - * Can disable close button. - */ - closable?: boolean; -}>>) -{ - // Subapp is closable by default. - closable = closable !== undefined ? closable : true; - - // Subapp state. - const {close} = useSubapp(); - - return ( -
    -
    -

    {title ?? ""}

    - - -
    - -
    - {children} -
    -
    - ); -} diff --git a/src/Components/Tips/Tip.tsx b/src/Components/Tips/Tip.tsx deleted file mode 100644 index 4d984fd..0000000 --- a/src/Components/Tips/Tip.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; -import {classes} from "../../Utils"; -import {Info} from "@phosphor-icons/react"; - -/** - * Simple text tip component. - */ -export function Tip({className, children, ...props}: React.PropsWithChildren>) -{ - return ( -

    - - - {children} -

    - ); -} diff --git a/src/GlobalState.tsx b/src/GlobalState.tsx deleted file mode 100644 index 310cb36..0000000 --- a/src/GlobalState.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import React, {PropsWithChildren, useCallback, useContext, useState} from "react"; - -/** - * Global state modifiers functions. - */ -export class GlobalStateReducers -{ - /** - * The current state (readonly). - * @protected - */ - protected state: Readonly; - /** - * State update system. - * @private - */ - private stateUpdater: React.Dispatch; - - /** - * Assign changes to the current state. - * @param stateUpdate Changes to apply to the current state. - */ - setState(stateUpdate: Partial) - { - // Apply update object to the current state. - this.state = Object.assign({}, this.state, stateUpdate); - // Update the changed state. - this.stateUpdater(this.state); - } -} - -/** - * Reducers definition interface for easy type definition. - */ -interface ReducerHack -{ - /** - * The current state (readonly). - */ - state: Readonly; - /** - * State update system. - */ - stateUpdater: React.Dispatch; -} - -/** - * Main global state class. - */ -export class GlobalState> -{ - /** - * Global state context. - * @protected - */ - protected context: React.Context; - /** - * State update system, used in the reducers class. - * @protected - */ - protected stateUpdater: React.Dispatch; - - /** - * Create a new global state. - * @param defaultValue The default value of the global state. - * @param reducers Reducers class. - */ - constructor(protected defaultValue: S, protected reducers: R) - { - // Create a new context for the global state. - this.context = React.createContext(defaultValue); - } - - /** - * Get the context for the global state. - */ - getContext(): React.Context - { return this.context; } - - /** - * Get the default value of the global state. - */ - getDefaultValue(): S - { return this.defaultValue; } - - /** - * Assign the state update system, used in the reducers class. - * @param updater State update system instance. - */ - setStateUpdater(updater: React.Dispatch): void - { - this.stateUpdater = updater; - } - - /** - * Get the configured state reducers class for the current state. - * @param state The state on which the reducers should apply. - */ - getStateReducers(state: S): R - { - // Assign the given state. - (this.reducers as unknown as ReducerHack).state = state; - // Assign the current state updater. - (this.reducers as unknown as ReducerHack).stateUpdater = this.stateUpdater; - return this.reducers; - } -} - -/** - * Global state Provider hook. - * @param globalState Global state for which to get the global state Provider. - */ -export function useGlobalStateProvider>(globalState: GlobalState): React.FunctionComponent> -{ - // Get the provider from the given global state context. - const Provider = globalState.getContext().Provider; - - // Create the global state provider component. - return useCallback((props: PropsWithChildren<{}>) => { - // Get the current state of the global state. - const [state, setState] = useState(globalState.getDefaultValue()); - // Pass the state update system to the global state. - globalState.setStateUpdater(setState); - - // Use the context provider and render children. - return ( - - {props.children} - - ); - }, [Provider]); -} - -/** - * Global state Provider component - * @constructor - */ -export function GlobalStateProvider>({globalState, children}: React.PropsWithChildren<{ - /** - * Global state for which to get the global state Provider. - */ - globalState: GlobalState; -}>) -{ - // Get the current global state provider. - const Provider = useGlobalStateProvider(globalState); - - return ( - // Render the children inside the provider. - {children} - ); -} - -/** - * Get the global state and its reducers. - * @param globalState The global state to get. - */ -export function useGlobalState>(globalState: GlobalState): [S, R] -{ - // Get the global state data (from its context state). - const ctx = useContext(globalState.getContext()); - // Return the context state (global state data), and the global state reducers for this current state. - return [ctx, globalState.getStateReducers(ctx)]; -} - -/** - * Get the reducers of the global state. - * @param globalState The global state for which to get the reducers. - */ -export function useGlobalStateReducers>(globalState: GlobalState): R -{ - // Return the global state reducers for the current global state. - return globalState.getStateReducers(useContext(globalState.getContext())); -} - -/** - * Get the global state data. - * @param globalState The global state for which to get the data. - */ -export function useGlobalStateValue>(globalState: GlobalState): S -{ - // Return the global state data (from its context state). - return useContext(globalState.getContext()); -} diff --git a/src/KernelGlobalContext.tsx b/src/KernelGlobalContext.tsx deleted file mode 100644 index 2c1942b..0000000 --- a/src/KernelGlobalContext.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import React, {useCallback, useContext, useMemo, useState} from "react"; -import {v4 as uuidv4} from "uuid"; - -/** - * Create Kernel context. - * @param defaultValue Kernel context default value. - */ -export function createKernelContext(defaultValue: T): KernelContext -{ - return { - uuid: uuidv4(), - defaultValue: defaultValue, - }; -} - -/** - * Kernel context definition object. - */ -export interface KernelContext -{ - /** - * Kernel context UUID. - */ - uuid: string; - - /** - * Kernel context default value. - */ - defaultValue: T; -} - -/** - * Kernel context setter function type. - */ -export type KernelContextSetter = (identifier: IdentifierType, value: ValueType) => void; - -/** - * Kernel contexts type. - */ -export type KernelContexts = Record; - -/** - * Kernel context dispatcher function type. - */ -export type KernelContextDispatcher = (value: ValueType) => void; - -/** - * Kernel global context data. - */ -export interface KernelGlobalContextData -{ - contexts: KernelContexts; - setContext: KernelContextSetter; -} - -/** - * React Kernel global context. - */ -export const KernelGlobalContext = React.createContext({ - contexts: {}, - setContext: () => {}, -}); - -/** - * Kernel global context provider. - */ -export function KernelGlobalContextProvider({children}: React.PropsWithChildren<{}>) -{ - // Kernel contexts initialization. - const [kernelContexts, setKernelContexts] = useState({}); - - /** - * Change kernel contexts. - */ - const changeKernelContexts = useCallback((kernelContextsUpdate: Partial) => { - setKernelContexts({ - ...kernelContexts, - ...kernelContextsUpdate, - }); - }, [kernelContexts, setKernelContexts]); - - /** - * Kernel context setter function. - */ - const kernelContextSetter = useCallback((identifier: string, data: any) => ( - changeKernelContexts({ - [identifier]: data, - }) - ), [changeKernelContexts]); - - // Initialize kernel global context value. - const kernelContextValue = useMemo(() => ({ - contexts: kernelContexts, - setContext: kernelContextSetter, - }), [kernelContexts, kernelContextSetter]); - - return ( - - {children} - - ); -} - -/** - * Get kernel global context data. - */ -function useKernelGlobalContext(): KernelGlobalContextData -{ - return useContext(KernelGlobalContext); -} - -/** - * Initialize or get kernel context with given identifier. - * @param context Context object. - */ -export function useKernelContext(context: KernelContext): [T, KernelContextDispatcher] -{ - /** - * Get kernel global context. - */ - const kernelGlobalContext = useKernelGlobalContext(); - - /** - * Function to set kernel context. - */ - const setContext = useCallback( - (newValue: T) => kernelGlobalContext.setContext(context.uuid, newValue), - [kernelGlobalContext.setContext], - ); - - // Return kernel context and its dispatcher. - return [kernelGlobalContext.contexts?.[context.uuid] ?? context.defaultValue, setContext]; -} diff --git a/src/Utils.tsx b/src/Utils.tsx deleted file mode 100644 index 0eec34a..0000000 --- a/src/Utils.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React, {DependencyList, FormEvent, useCallback, useEffect, useRef} from "react"; - -export type Modify = Omit & R; - -/** - * Merge multiple class names to one full class name. - * @param className Class names. - */ -export function classes(...className: (string|null|undefined|false)[]): string -{ - return className.filter((className) => !!className).join(" "); -} - -export function formatDate(date: Date): string -{ - return ((date.getDate() < 10 ? "0" : "") + date.getDate()) + "/" + (((date.getMonth() + 1) < 10 ? "0" : "") + (date.getMonth() + 1)) + "/" + date.getFullYear(); -} - -export function formatTime(date: Date): string -{ - return (date.getHours() < 10 ? "0" : "") + date.getHours() + ":" + (date.getMinutes() < 10 ? "0" : "") + date.getMinutes(); -} - -/** - * Normalize a given string for searching. - * @param str The string to normalize. - */ -export function normalizeString(str: string): string -{ - return str - ? str.toLowerCase?.().normalize?.("NFD") - .replace?.(/[\u0300-\u036f]/g, "") - : ""; -} - -/** - * Get the previous value of a given value. - * @param currentValue The current value. - */ -export function usePreviousValue(currentValue: T): T -{ - // Get the reference to the previous value. - const ref = useRef(); - - // If the value has changed, saving it in the reference after rendering. - useEffect(() => { - ref.current = currentValue; - }, [currentValue]); - - // Get the previous value. - return ref?.current ?? undefined; -} - -/** - * Create a callback for a form submit function that fully overrides default form behavior. - * @param submitFunction The function to call on form submit. - * @param dependencies Submit function dependencies. - */ -export function useFormSubmit(submitFunction: () => void, dependencies: DependencyList = []): React.FormEventHandler -{ - // Use a memoized callback. - return useCallback((event: React.FormEvent) => { - // Prevent default behavior, then call submit function. - event.preventDefault(); - submitFunction(); - return false; - }, [submitFunction, ...dependencies]); -} diff --git a/src/styles/components/forms/_timepicker-input.less b/src/index.ts similarity index 100% rename from src/styles/components/forms/_timepicker-input.less rename to src/index.ts diff --git a/src/styles/_colors.less b/src/styles/_colors.less deleted file mode 100644 index f7b0cc6..0000000 --- a/src/styles/_colors.less +++ /dev/null @@ -1,91 +0,0 @@ -:root -{ - @background-lightest: #FFFFFF; --background-lightest: @background-lightest; - @background-lighter: #F7F7F7; --background-lighter: @background-lighter; - @background: #EFEFEF; --background: @background; - @background-darker: #E7E7E7; --background-darker: @background-darker; - @background-darkest: #D9D9D9; --background-darkest: @background-darkest; - - @neutral: #909090; --neutral: @neutral; - - @foreground-lightest: #1F1F1F; --foreground-lightest: @foreground-lightest; - @foreground-lighter: #171717; --foreground-lighter: @foreground-lighter; - @foreground: #0F0F0F; --foreground: @foreground; - @foreground-darker: #080808; --foreground-darker: @foreground-darker; - @foreground-darkest: #000000; --foreground-darkest: @foreground-darkest; - - @foreground-shadow: fade(@foreground, 33%); --foreground-shadow: @foreground-shadow; - @curtain-dim: fade(@foreground, 50%); --curtain-dim: @curtain-dim; - @curtain-inset: fade(@foreground, 20%); --curtain-inset: @curtain-inset; - - - - @green-lighter: #22BD12; --green-lighter: @green-lighter; - @green: #1DA90F; --green: @green; - @green-darker: #159308; --green-darker: @green-darker; - @green-background: #A9FFA0; --green-background: @green-background; - @green-background-darker: #86F37E; --green-background-darker: @green-background-darker; - - @red-lighter: #E32424; --red-lighter: @red-lighter; - @red: #D01212; --red: @red; - @red-darker: #AF0707; --red-darker: @red-darker; - @red-background: #FFBABA; --red-background: @red-background; - @red-background-darker: #FFA6A6; --red-background-darker: @red-background-darker; - - @blue-lighter: #378AFF; --blue-lighter: @blue-lighter; - @blue: #0D6DEE; --blue: @blue; - @blue-darker: #0657C5; --blue-darker: @blue-darker; - @blue-background: #9DC8FF; --blue-background: @blue-background; - @blue-background-darker: #7EA9E1; --blue-background-darker: @blue-background-darker; - @blue-gradient: linear-gradient(33deg, @blue 0%, @blue-lighter 100%), @blue; --blue-gradient: @blue-gradient; - - @orange-lighter: #E77220; --orange-lighter: @orange-lighter; - @orange: #D06112; --orange: @orange; - @orange-darker: #BB5308; --orange-darker: @orange-darker; - @orange-background: #FFC599; --orange-background: @orange-background; - @orange-background-darker: #FFB47D; --orange-background-darker: @orange-background-darker; - - @pink-lighter: #EF56DF; --pink-lighter: @pink-lighter; - @pink: #CE3EBF; --pink: @pink; - @pink-darker: #B927AB; --pink-darker: @pink-darker; - @pink-background: #FFABF4; --pink-background: @pink-background; - @pink-background-darker: #EF8CE1; --pink-background-darker: @pink-background-darker; - - @purple-lighter: #9752FF; --purple-lighter: @purple-lighter; - @purple: #7D2AFF; --purple: @purple; - @purple-darker: #6610EE; --purple-darker: @purple-darker; - @purple-background: #C8A5FF; --purple-background: @purple-background; - @purple-background-darker: #B489F6; --purple-background-darker: @purple-background-darker; - - @yellow-lighter: #F8DF3D; --yellow-lighter: @yellow-lighter; - @yellow: #EACD0D; --yellow: @yellow; - @yellow-darker: #D3B803; --yellow-darker: @yellow-darker; - @yellow-background: #FFF195; --yellow-background: @yellow-background; - @yellow-background-darker: #ECDB71; --yellow-background-darker: @yellow-background-darker; - - @brown-lighter: #5E2617; --brown-lighter: @brown-lighter; - @brown: #4B190C; --brown: @brown; - @brown-darker: #3B1105; --brown-darker: @brown-darker; - @brown-background: #B6968F; --brown-background: @brown-background; - @brown-background-darker: #A97E74; --brown-background-darker: @brown-background-darker; - - - - @primary-lighter: @blue-lighter; --primary-lighter: @primary-lighter; - @primary: @blue; --primary: @primary; - @primary-darker: @blue-darker; --primary-darker: @primary-darker; - @primary-background: @blue-background; --primary-background: @primary-background; - @primary-background-darker: @blue-background-darker; --primary-background-darker: @primary-background-darker; - @primary-gradient: @blue-gradient; --primary-gradient: @primary-gradient; - - @secondary-lighter: @orange-lighter; --secondary-lighter: @secondary-lighter; - @secondary: @orange; --secondary: @secondary; - @secondary-darker: @orange-darker; --secondary-darker: @secondary-darker; - @secondary-background: @orange-background; --secondary-background: @secondary-background; - @secondary-background-darker: @orange-background-darker; --secondary-background-darker: @secondary-background-darker; - - - - @menu-hover: rgba(255, 255, 255, 0.15); --menu-hover: @menu-hover; - @menu-active: rgba(0, 0, 0, 0.125); --menu-active: @menu-active; -} diff --git a/src/styles/_common.less b/src/styles/_common.less deleted file mode 100644 index 055dc73..0000000 --- a/src/styles/_common.less +++ /dev/null @@ -1,38 +0,0 @@ -html, body -{ - margin: 0; - padding: 0; -} - -html, body, input, button, textarea -{ - font-size: 1em; - font-family: var(--sans-serif-fonts); - font-weight: 500; -} - -pre, code -{ - font-family: var(--monospace-fonts); -} - -body -{ - background: var(--background); - color: var(--foreground); -} - -p -{ - margin: 0.75em auto; - line-height: 1.6em; -} - -.virtual -{ - position: absolute; - display: block; - height: 0; - opacity: 0; - pointer-events: none; -} diff --git a/src/styles/_components.less b/src/styles/_components.less deleted file mode 100644 index 8d4a577..0000000 --- a/src/styles/_components.less +++ /dev/null @@ -1,23 +0,0 @@ - -@import "components/_box"; -@import "components/_button"; -@import "components/_card"; -@import "components/_curtains"; -@import "components/_dates"; -@import "components/_errors"; -@import "components/_floating"; -@import "components/_form"; -@import "components/_headings"; -@import "components/_link"; -@import "components/_list"; -@import "components/_loaders"; -@import "components/_menus"; -@import "components/_modal"; -@import "components/_notifications"; -@import "components/_pagination"; -@import "components/_select"; -@import "components/_steps"; -@import "components/_steps-counter"; -@import "components/_subapp"; -@import "components/_table"; -@import "components/_tip"; diff --git a/src/styles/_fonts.less b/src/styles/_fonts.less deleted file mode 100644 index 75f27ea..0000000 --- a/src/styles/_fonts.less +++ /dev/null @@ -1,14 +0,0 @@ -@import "@fontsource-variable/manrope"; -@import "@fontsource-variable/source-serif-4"; -@import "@fontsource-variable/jetbrains-mono"; - -:root -{ - @sans-serif-fonts: "Manrope Variable", sans-serif; - @serif-fonts: "Source Serif 4 Variable", serif; - @monospace-fonts: "Jetbrains Mono Variable", monospace; - - --sans-serif-fonts: @sans-serif-fonts; - --serif-fonts: @serif-fonts; - --monospace-fonts: @monospace-fonts; -} diff --git a/src/styles/_footer.less b/src/styles/_footer.less deleted file mode 100644 index 0f090a2..0000000 --- a/src/styles/_footer.less +++ /dev/null @@ -1,6 +0,0 @@ -footer -{ - margin: 4em auto; - color: var(--foreground-lightest); - text-align: center; -} diff --git a/src/styles/components/_box.less b/src/styles/components/_box.less deleted file mode 100644 index 1ebc5d6..0000000 --- a/src/styles/components/_box.less +++ /dev/null @@ -1,12 +0,0 @@ -div.box -{ - margin: 0.5em auto; - width: 50em; - max-width: 95%; - box-sizing: border-box; - - h1, h2, h3, h4, h5, h6 - { - margin: 0.33em 0 0.5em 0; - } -} diff --git a/src/styles/components/_button.less b/src/styles/components/_button.less deleted file mode 100644 index 8acfcad..0000000 --- a/src/styles/components/_button.less +++ /dev/null @@ -1,198 +0,0 @@ -a.button, button, input[type="submit"], input[type="reset"] -{ - transition: background 0.2s ease, outline 0.2s ease, transform 0.1s ease; - - display: inline-block; - - margin: 0.2em 0.33em; - padding: 0.45em 0.66em; - width: fit-content; - border-radius: 0.25em; - box-sizing: border-box; - - box-shadow: 0 0 0.3em 0 var(--foreground-shadow); - outline: solid 2px transparent; - outline-offset: 2px; - border: solid var(--primary-darker) thin; - background: var(--primary); - color: var(--background); - - font-weight: 600; - text-decoration: none; - vertical-align: middle; - text-align: center; - - cursor: pointer; - - transform: scale(1); - transform-origin: center; - - &:hover - { - background: var(--primary-lighter); - } - &:focus - { - outline: solid 2px var(--primary); - outline-offset: 2px; - } - - &:active - { - transform: scale(0.95); - } - - &:disabled - { - opacity: 60%; - } - - &.flat - { - box-shadow: 0 0 0 0 transparent; - border-color: var(--background-darkest); - background: var(--background-lighter); - color: var(--foreground); - - &:hover - { - background: var(--background-lightest); - } - &:focus - { - outline-color: var(--neutral); - } - } - - &.green, &.validation, &.ok, &.save, &.positive, &.good, &.success - { - border-color: var(--green-darker); - background: var(--green); - - &:hover - { - background: var(--green-lighter); - } - &:focus - { - outline-color: var(--green); - } - - &.flat - { - border-color: var(--green-background); - background: var(--green-background); - color: var(--green); - - &:hover - { - background: var(--green-background-darker); - } - &:focus - { - outline-color: var(--green-background-darker); - } - } - } - - &.orange, &.cancel, &.back, &.return, &.warning - { - border-color: var(--orange-darker); - background: var(--orange); - - &:hover - { - background: var(--orange-lighter); - } - &:focus - { - outline-color: var(--orange); - } - - &.flat - { - border-color: var(--orange-background); - background: var(--orange-background); - color: var(--orange); - - &:hover - { - background: var(--orange-background-darker); - } - &:focus - { - outline-color: var(--orange-background-darker); - } - } - } - - &.red, &.delete, &.remove, &.close, &.no, &.negative, &.bad, &.error - { - border-color: var(--red-darker); - background: var(--red); - - &:hover - { - background: var(--red-lighter); - } - &:focus - { - outline-color: var(--red); - } - - &.flat - { - border-color: var(--red-background); - background: var(--red-background); - color: var(--red); - - &:hover - { - background: var(--red-background-darker); - } - &:focus - { - outline-color: var(--red-background-darker); - } - } - } - - svg - { // Icon style. - display: inline-block; - margin-top: -0.2em; - margin-right: 0.2em; - vertical-align: middle; - } - &.icon-only svg - { - margin-right: 0.05em; - } -} - -div.buttons -{ - display: flex; - flex-direction: row; - gap: 0.5em; - - margin: 0.25em auto; - - &.right - { - justify-content: flex-end; - } - &.left - { - justify-content: flex-start; - } - &.center - { - justify-content: center; - } - - button, .button - { - margin: 0; - } -} diff --git a/src/styles/components/_card.less b/src/styles/components/_card.less deleted file mode 100644 index 2cf5cd2..0000000 --- a/src/styles/components/_card.less +++ /dev/null @@ -1,30 +0,0 @@ -.card -{ - margin: 0.5em auto; - padding: 1.4em; - width: 50em; - max-width: 92%; - box-sizing: border-box; - border-radius: 0.25em; - - border: solid var(--background-darkest) thin; - background: var(--background-lighter); - - h1, h2, h3, h4, h5, h6 - { - margin: 0.33em 0 0.5em 0; - } - - > p - { - &:first-child - { margin-top: auto; } - &:last-child - { margin-bottom: auto; } - } - - &.floating - { - width: 20em; - } -} diff --git a/src/styles/components/_curtains.less b/src/styles/components/_curtains.less deleted file mode 100644 index b05f19c..0000000 --- a/src/styles/components/_curtains.less +++ /dev/null @@ -1,57 +0,0 @@ -body > .curtain -{ // Position the curtain on top of everything and dim the background. - position: fixed; - top: 0; - left: 0; - width: 100vw; - height: 100vh; - - box-shadow: inset 0 0 5em 0 var(--curtain-inset); - background: var(--curtain-dim); - - // Show an animation when entering screen. - animation: curtain-in 0.4s ease-in; - transform-origin: center; - - z-index: 1000; // On top of main content. - - &.closed - { // Added when the curtain is closing and will soon be removed from DOM. - transition: transform 0.4s ease-out, filter 0.4s ease-out, opacity 0.4s ease-out; - - transform: scale(1.2); - filter: blur(0.5em); - opacity: 0; - - pointer-events: none; - } -} - -body.dimmed -{ // Disable scroll and blur the content when the body is dimmed. - overflow: hidden; - - > *:not(.curtain):not(.notifications) - { - transition: filter 0.4s ease-in; - - filter: blur(0.25em); - } -} - -@keyframes curtain-in -{ // Screen enter animation. - from - { - transform: scale(1.2); - filter: blur(0.5em); - opacity: 0; - } - - to - { - transform: scale(1); - filter: blur(0); - opacity: 1; - } -} diff --git a/src/styles/components/_dates.less b/src/styles/components/_dates.less deleted file mode 100644 index e60406d..0000000 --- a/src/styles/components/_dates.less +++ /dev/null @@ -1,3 +0,0 @@ - -@import "dates/_calendar"; -@import "dates/_datepicker"; diff --git a/src/styles/components/_errors.less b/src/styles/components/_errors.less deleted file mode 100644 index 94fffb6..0000000 --- a/src/styles/components/_errors.less +++ /dev/null @@ -1,60 +0,0 @@ -main.error -{ - font-size: 1.2em; - - > svg - { - display: block; - margin: 1em auto; - color: var(--red); - } - - hr - { - margin: 1em auto; - - width: 20em; - max-width: 50%; - height: 0.25em; - border-radius: 0.1em; - - - border: none; - background: var(--red); - } - - h1, h2, h3, h4, h5, h6 - { - margin: auto; - text-align: center; - } - - p, pre - { - margin: 1em auto; - width: 40em; - max-width: 95%; - text-align: center; - } - - button - { - display: block; - margin: 1em auto; - padding: 0.66em 1em; - } - - .details - { - font-size: 0.8em; - - button - {} - - pre - { - width: auto; - text-align: left; - } - } -} diff --git a/src/styles/components/_floating.less b/src/styles/components/_floating.less deleted file mode 100644 index fd2d7cd..0000000 --- a/src/styles/components/_floating.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "floating/_floating"; -@import "floating/_tooltip"; diff --git a/src/styles/components/_form.less b/src/styles/components/_form.less deleted file mode 100644 index 6ac2505..0000000 --- a/src/styles/components/_form.less +++ /dev/null @@ -1,6 +0,0 @@ - -@import "forms/_box"; -@import "forms/_datepicker-input"; -@import "forms/_input"; -@import "forms/_label"; -@import "forms/_password-input"; diff --git a/src/styles/components/_headings.less b/src/styles/components/_headings.less deleted file mode 100644 index b7dd266..0000000 --- a/src/styles/components/_headings.less +++ /dev/null @@ -1,49 +0,0 @@ -h1, h2, h3, h4, h5, h6 -{ - margin: 0.8em auto; - - &.center, &.main - { text-align: center; } - - > svg - { - position: relative; - bottom: -0.15em; - } -} - -h1 -{ - font-size: 2.5em; - font-weight: 800; -} - -h2 -{ - font-size: 2em; - font-weight: 800; -} - -h3 -{ - font-size: 1.7em; - font-weight: 700; -} - -h4 -{ - font-size: 1.5em; - font-weight: 600; -} - -h5 -{ - font-size: 1.3em; - font-weight: 600; -} - -h6 -{ - font-size: 1.15em; - font-weight: 600; -} diff --git a/src/styles/components/_link.less b/src/styles/components/_link.less deleted file mode 100644 index c9c43a6..0000000 --- a/src/styles/components/_link.less +++ /dev/null @@ -1,4 +0,0 @@ -a -{ - color: var(--primary); -} diff --git a/src/styles/components/_list.less b/src/styles/components/_list.less deleted file mode 100644 index c01d4b8..0000000 --- a/src/styles/components/_list.less +++ /dev/null @@ -1,15 +0,0 @@ -ul -{ - list-style: "–"; - padding: 0 2em; - - > li - { - padding: 0 0 0 0.5em; - } -} - -ul, ol -{ - margin: 1em auto; -} diff --git a/src/styles/components/_loaders.less b/src/styles/components/_loaders.less deleted file mode 100644 index f0106c9..0000000 --- a/src/styles/components/_loaders.less +++ /dev/null @@ -1,5 +0,0 @@ -@import "loaders/_animated-background"; - -@import "loaders/_generic"; -@import "loaders/_list"; -@import "loaders/_spinning"; diff --git a/src/styles/components/_menus.less b/src/styles/components/_menus.less deleted file mode 100644 index a1c45f2..0000000 --- a/src/styles/components/_menus.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "menus/_apps-menu"; -@import "menus/_main-menu"; -@import "menus/_submenu"; diff --git a/src/styles/components/_modal.less b/src/styles/components/_modal.less deleted file mode 100644 index 621e5db..0000000 --- a/src/styles/components/_modal.less +++ /dev/null @@ -1,99 +0,0 @@ -.curtain > .modal -{ - position: absolute; - - top: 0; - bottom: 0; - left: 0; - right: 0; - - margin: auto; - width: 45em; max-width: 95%; - height: fit-content; max-height: 95%; - border-radius: 0.25em; - box-sizing: border-box; - - background: var(--background); - - overflow: auto; - - > header - { - display: flex; - flex-direction: row; - align-items: center; - - > h1 - { - flex: 1; - margin: auto; - padding: 1em 1em; - - font-size: 1.33em; - font-weight: 650; - - vertical-align: middle; - - svg - { - margin-top: -0.2em; - margin-right: 0.1em; - vertical-align: middle; - } - } - - > .close - { - transition: opacity 0.2s ease; - - width: 2em; - height: 2em; - margin: auto 1em; - padding: 0; - border-radius: 2em; - - box-shadow: 0 0 0 0 transparent; - outline: none; - border: none; - background: none; - color: var(--foreground-lightest); - - opacity: 0.6; - - &:hover - { - opacity: 1; - } - - &:disabled - { - opacity: 0.33; - } - } - } - - > main - { - padding: 1em; - } - - &.info - { - > header > h1 { color: var(--primary); } - } - - &.success - { - > header > h1 { color: var(--green); } - } - - &.warning - { - > header > h1 { color: var(--orange); } - } - - &.error - { - > header > h1 { color: var(--red); } - } -} diff --git a/src/styles/components/_notifications.less b/src/styles/components/_notifications.less deleted file mode 100644 index 7dc9697..0000000 --- a/src/styles/components/_notifications.less +++ /dev/null @@ -1,86 +0,0 @@ -body > ul.notifications -{ // Notifications list. - position: fixed; - top: 0; - right: 0; - - margin: 0 1em 1em; - padding: 0; - width: 20em; - max-width: 66%; - - list-style: none; - - z-index: 2000; - - > li.notification - { // A single notification. - margin: 1em auto; - padding: 1em; - - border-radius: 0.25em; - - box-shadow: 0 0 0.5em 0 var(--foreground-shadow); - background: var(--background); - - // Show an animation when entering screen. - animation: notification-in 0.3s ease-in; - transform-origin: center; - - &.closed - { // Added when the notification is closing and will soon be removed from DOM. - transition: transform 0.3s ease-out, filter 0.3s ease-out, opacity 0.3s ease-out; - - transform: scale(1.15); - filter: blur(0.25em); - opacity: 0; - - pointer-events: none; - } - - &.info - { - border: solid var(--primary-darker) thin; - background: var(--primary); - color: var(--background); - } - - &.success - { - border: solid var(--green-darker) thin; - background: var(--green); - color: var(--background); - } - - &.warning - { - border: solid var(--orange-darker) thin; - background: var(--orange); - color: var(--background); - } - - &.error - { - border: solid var(--red-darker) thin; - background: var(--red); - color: var(--background); - } - } -} - -@keyframes notification-in -{ // Screen enter animation. - from - { - transform: scale(1.15); - filter: blur(0.25em); - opacity: 0; - } - - to - { - transform: scale(1); - filter: blur(0); - opacity: 1; - } -} diff --git a/src/styles/components/_pagination.less b/src/styles/components/_pagination.less deleted file mode 100644 index bb700da..0000000 --- a/src/styles/components/_pagination.less +++ /dev/null @@ -1 +0,0 @@ -@import "pagination/_nav"; diff --git a/src/styles/components/_select.less b/src/styles/components/_select.less deleted file mode 100644 index 54bf34f..0000000 --- a/src/styles/components/_select.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "select/_input"; -@import "select/_selected"; -@import "select/_suggestions"; diff --git a/src/styles/components/_steps-counter.less b/src/styles/components/_steps-counter.less deleted file mode 100644 index a3b291d..0000000 --- a/src/styles/components/_steps-counter.less +++ /dev/null @@ -1,24 +0,0 @@ -.steps-counter -{ - counter-reset: steps-count 0; - - .step - { - &::before - { - content: counter(steps-count); - - display: inline-block; - margin: 0 0.2em; - - color: var(--primary); - - font-family: var(--monospace-fonts); - font-size: 1.5em; - font-weight: 700; - vertical-align: baseline; - } - - counter-increment: steps-count; - } -} diff --git a/src/styles/components/_steps.less b/src/styles/components/_steps.less deleted file mode 100644 index fefff52..0000000 --- a/src/styles/components/_steps.less +++ /dev/null @@ -1,90 +0,0 @@ -div.steps -{ - display: flex; - flex-direction: row; - - > nav.steps - { - position: sticky; - top: 1em; - bottom: 1em; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - margin: auto 0.5em; - - > ul - { - margin: 0; - padding: 0; - list-style: none; - - > li - { - margin: auto; - padding: 0; - text-align: center; - - > button - { - padding: 0; - - box-shadow: 0 0 0 0 transparent; - outline: none; - border: none; - background: none; - color: var(--foreground-lightest); - - &:focus::before - { - outline-color: var(--primary); - } - - &::before - { - transition: all 0.2s ease; - - content: ""; - - display: block; - margin: auto auto 0.4em auto; - width: 2em; - height: 2em; - border-radius: 2em; - - box-shadow: 0 0 0 0 transparent; - outline: solid 2px transparent; - outline-offset: 2px; - border: solid var(--background-darkest) thin; - background: var(--background-lightest); - - transform: scale(0.75); - } - } - - &.active - { - > button - { - &::before - { - box-shadow: 0 0 0.3em 0 var(--foreground-shadow); - border-color: var(--primary-darker); - background: var(--primary); - - transform: scale(1); - } - } - } - } - } - } - - > :not(nav) - { - flex: 1; - } -} diff --git a/src/styles/components/_subapp.less b/src/styles/components/_subapp.less deleted file mode 100644 index 0534c3a..0000000 --- a/src/styles/components/_subapp.less +++ /dev/null @@ -1,76 +0,0 @@ - -@subapp-margin: 1.5em; - -.curtain > .subapp -{ - position: absolute; - top: @subapp-margin; - left: @subapp-margin; - - display: flex; - flex-direction: column; - - width: calc(100% - (2 * @subapp-margin)); - height: calc(100% - (2 * @subapp-margin)); - border-radius: 0.25em; - box-sizing: border-box; - - background: var(--background); - - overflow: auto; - - > header - { - display: flex; - flex-direction: row; - align-items: center; - - > h1 - { - flex: 1; - margin: auto; - padding: 1em 1em; - - font-size: 1.66em; - font-weight: 650; - } - - > .close - { - transition: opacity 0.2s ease; - - width: 3em; - height: 3em; - margin: auto 1em; - padding: 0; - border-radius: 2em; - - box-shadow: 0 0 0 0 transparent; - outline: none; - border: none; - background: none; - color: var(--foreground-lightest); - - opacity: 0.6; - - &:hover - { - opacity: 1; - } - - &:disabled - { - opacity: 0.33; - } - } - } - - > main - { - flex: 1; - - padding: 1em; - - overflow: auto; - } -} diff --git a/src/styles/components/_table.less b/src/styles/components/_table.less deleted file mode 100644 index 54644d5..0000000 --- a/src/styles/components/_table.less +++ /dev/null @@ -1,44 +0,0 @@ -table -{ - margin: auto; - - border-collapse: collapse; - - background: var(--background-lighter); - //border: solid var(--background-darkest) thin; - border-radius: 0.25em; - - thead - { - } - - tbody - { - tr - { - &:nth-child(even) - { - background: var(--background-lightest); - } - &:hover - { - background: var(--background-darker); - } - - &:last-child { border-bottom: none; } - } - } - - tr - { - transition: background 0.1s ease; - border-bottom: solid var(--background-darkest) thin; - background: transparent; - } - - th, td - { - padding: 0.4em 0.6em; - text-align: left; - } -} diff --git a/src/styles/components/_tip.less b/src/styles/components/_tip.less deleted file mode 100644 index 535e673..0000000 --- a/src/styles/components/_tip.less +++ /dev/null @@ -1,28 +0,0 @@ -p.tip -{ - position: relative; - - margin: auto; - width: 30em; - padding: 0.3em 0.5em 0.3em 3em; - border-radius: 0.3em; - box-sizing: border-box; - - border: solid var(--background-darkest) thin; - color: var(--foreground-lightest); - - svg - { - position: absolute; - top: 0.3em; - left: 0.5em; - - display: inline-block; - margin: 0; - - color: var(--primary); - font-size: 1.5em; - - vertical-align: middle; - } -} diff --git a/src/styles/components/dates/_calendar.less b/src/styles/components/dates/_calendar.less deleted file mode 100644 index b605be7..0000000 --- a/src/styles/components/dates/_calendar.less +++ /dev/null @@ -1,57 +0,0 @@ -table.calendar -{ - thead th - { - text-align: center; - } - - tbody > tr - { - border-bottom: none; - - &:nth-child(even) { background: transparent; } - &:hover { background: transparent; } - - > td - { - padding: 0; - text-align: center; - } - } - - a.day - { - transition: background 0.15s ease; - - display: inline-flex; - align-items: center; - justify-content: center; - - width: 2.2em; - height: 2.2em; - border-radius: 50%; - - background: transparent; - color: var(--foreground); - - font-weight: 400; - text-align: center; - cursor: pointer; - - &:hover - { - background: var(--background-darker); - } - - &.selected - { - background: var(--primary); - color: var(--background); - } - - &.faded - { - opacity: 0.4; - } - } -} diff --git a/src/styles/components/dates/_datepicker.less b/src/styles/components/dates/_datepicker.less deleted file mode 100644 index d2f440a..0000000 --- a/src/styles/components/dates/_datepicker.less +++ /dev/null @@ -1,44 +0,0 @@ -.datepicker -{ - position: relative; - padding: 0 1em; - background: var(--background-lighter); - font-size: 0.9em; - - .year-month - { - font-size: 1.1em; - text-align: center; - } - - button - { - &.previous-month, &.next-month - { - position: absolute; - top: 0; - bottom: 0; - - display: flex; - align-items: center; - justify-content: center; - - margin: auto; - padding: 0; - width: 2em; - height: 2em; - - svg - { margin: 0; } - } - - &.previous-month - { - left: -1.1em; - } - &.next-month - { - right: -1.1em; - } - } -} diff --git a/src/styles/components/floating/_floating.less b/src/styles/components/floating/_floating.less deleted file mode 100644 index 180e66c..0000000 --- a/src/styles/components/floating/_floating.less +++ /dev/null @@ -1,12 +0,0 @@ -:not(.card).floating -{ - display: flex; - align-self: center; - justify-content: center; - z-index: 1; - - > .card.floating - { - margin: 0.4em; - } -} diff --git a/src/styles/components/floating/_tooltip.less b/src/styles/components/floating/_tooltip.less deleted file mode 100644 index d8897ca..0000000 --- a/src/styles/components/floating/_tooltip.less +++ /dev/null @@ -1,13 +0,0 @@ -.card.floating.tooltip -{ - width: unset; - max-width: 20em; - padding: 0.5em; - - border-color: var(--foreground-darker); - background: var(--foreground-lightest); - color: var(--background); - - font-size: 0.9em; - text-align: center; -} diff --git a/src/styles/components/forms/_box.less b/src/styles/components/forms/_box.less deleted file mode 100644 index 95c4603..0000000 --- a/src/styles/components/forms/_box.less +++ /dev/null @@ -1,84 +0,0 @@ -label.box, label.toggleswitch -{ - display: block; - - &::before - { - content: unset; - } - - > input - { - position: absolute; - pointer-events: none; - opacity: 0; - } - - > input[type="radio"] + .button - { - border-radius: 50%; - } - - > .button - { - margin: 0 0.6em 0.12em 0; - width: 1.5em; - height: 1.5em; - padding: 0; - - border: none; - - color: var(--background-darkest); - - > svg - { - display: block; - margin: 0.22em auto 0; - vertical-align: middle; - } - - vertical-align: middle; - } - - &:focus-within > .button - { - outline-color: var(--primary); - } - - > input:not(:checked) + .button - { - background: var(--background-lighter); - } -} - -label.toggleswitch -{ - > .button - { - display: inline-flex; - align-items: center; - width: 2.5em; - - > .switch - { - transition: margin-left 0.25s ease, box-shadow 0.25s ease; - - display: inline-block; - - margin: auto 0.25em; - width: 0.9em; - height: 0.8em; - border-radius: 0.25em; - box-shadow: 0 0 0 0 var(--foreground-shadow); - border: solid var(--background-darkest) thin; - background: var(--background); - } - } - - > input:checked + .button > .switch - { - margin-left: 1.2em; - border-color: transparent; - box-shadow: 0 0 0.4em 0 var(--foreground-shadow); - } -} diff --git a/src/styles/components/forms/_datepicker-input.less b/src/styles/components/forms/_datepicker-input.less deleted file mode 100644 index 02a5315..0000000 --- a/src/styles/components/forms/_datepicker-input.less +++ /dev/null @@ -1,9 +0,0 @@ -label.datepicker-input -{ - .card.datepicker - { - padding: 0.2em; - width: fit-content; - max-width: unset; - } -} diff --git a/src/styles/components/forms/_input.less b/src/styles/components/forms/_input.less deleted file mode 100644 index ab11b59..0000000 --- a/src/styles/components/forms/_input.less +++ /dev/null @@ -1,39 +0,0 @@ -input, textarea, select -{ - transition: outline 0.2s ease; - display: block; - - width: 20em; - padding: 0.5em; - border-radius: 0.25em; - box-sizing: border-box; - - border: solid var(--background-darkest) thin; - outline: solid 2px transparent; - outline-offset: 2px; - background: var(--background-lighter); - - &:focus - { - outline: solid 2px var(--primary); - outline-offset: 2px; - } - - &::placeholder - { - color: var(--neutral); - opacity: 1; - } - - &:disabled - { - background: var(--background); - opacity: 0.8; - } -} - -textarea -{ - min-height: 2.5em; - resize: vertical; -} diff --git a/src/styles/components/forms/_label.less b/src/styles/components/forms/_label.less deleted file mode 100644 index 3e26938..0000000 --- a/src/styles/components/forms/_label.less +++ /dev/null @@ -1,37 +0,0 @@ -label -{ - display: block; - margin: 0.75em auto; - width: fit-content; - - &::before { content: ""; display: inline-block; width: 0.5em; } - input, textarea, select { margin-top: 0.25em; } - - span.required - { - &::after { content: "*"; color: var(--red); font-weight: 600; } - } - - &.error - { - input, textarea, select { border-color: var(--red); } - } - - span.subtext - { - display: block; - font-size: 0.9em; - text-align: center; - - &.error - { - color: var(--red); - } - } - - span.description - { - color: var(--foreground-lightest); - font-size: 0.9em; - } -} diff --git a/src/styles/components/forms/_password-input.less b/src/styles/components/forms/_password-input.less deleted file mode 100644 index deb5eb0..0000000 --- a/src/styles/components/forms/_password-input.less +++ /dev/null @@ -1,44 +0,0 @@ -label.password -{ - > div - { - position: relative; - - > input - { - padding-right: 2.5em; - } - - a.button - { - position: absolute; - top: 0; - bottom: 0; - right: 0.45em; - - margin: auto; - padding: 0; - width: 1.75em; - height: 1.75em; - - box-shadow: 0 0 0 0 transparent; - border: none; - background: transparent; - color: var(--foreground-lightest); - - &:hover - { - background: var(--background-darker); - } - - > svg - { - display: block; - margin: 0.4em auto 0; - vertical-align: middle; - } - - vertical-align: middle; - } - } -} diff --git a/src/styles/components/loaders/_animated-background.less b/src/styles/components/loaders/_animated-background.less deleted file mode 100644 index c71795a..0000000 --- a/src/styles/components/loaders/_animated-background.less +++ /dev/null @@ -1,21 +0,0 @@ -@loaders-animated-background-color: linear-gradient(111deg, var(--background-darkest) 0%, var(--background-lightest) 50%, var(--background-darkest) 100%), var(--background-darkest); - -@keyframes loaders-animated-background -{ - 0% - { - background: @loaders-animated-background-color 10% 0; - background-size: 300% 300%; - } - - 50% - { - background-position: 91% 100%; - } - - 100% - { - background-size: 300% 300%; - background-position: 10% 0; - } -} diff --git a/src/styles/components/loaders/_generic.less b/src/styles/components/loaders/_generic.less deleted file mode 100644 index c69ee7d..0000000 --- a/src/styles/components/loaders/_generic.less +++ /dev/null @@ -1,13 +0,0 @@ -.generic.loader -{ - margin: auto; - width: fit-content; - border-radius: 0.25em; - border: solid var(--background) thin; - background: @loaders-animated-background-color; - color: transparent; - - * { background: none; color: transparent; border: none; box-shadow: 0 0 0 0 transparent; outline: none; } - - animation: loaders-animated-background 4s linear infinite alternate; -} diff --git a/src/styles/components/loaders/_list.less b/src/styles/components/loaders/_list.less deleted file mode 100644 index 530b64b..0000000 --- a/src/styles/components/loaders/_list.less +++ /dev/null @@ -1,49 +0,0 @@ -ul.list.loader -{ - margin: 1em auto; - padding: 0; - list-style: none; - - > li - { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: stretch; - - margin: 1em auto; - - &::before - { - content: ""; - display: inline-block; - align-self: center; - margin: 0 0.66em 0 0; - width: 2em; - height: 2em; - border-radius: 2em; - - border: solid var(--background) thin; - background: @loaders-animated-background-color; - animation: loaders-animated-background 4s linear infinite alternate; - - vertical-align: middle; - } - - .content - { - flex: 1; - - position: relative; - - padding: 0.5em 1em; - border-radius: 2em; - - border: solid var(--background) thin; - background: @loaders-animated-background-color; - color: transparent; - - animation: loaders-animated-background 4s linear infinite alternate; - } - } -} diff --git a/src/styles/components/loaders/_spinning.less b/src/styles/components/loaders/_spinning.less deleted file mode 100644 index 9a50c7c..0000000 --- a/src/styles/components/loaders/_spinning.less +++ /dev/null @@ -1,47 +0,0 @@ -.spinning.loader -{ - position: relative; - display: block; - margin: 1em auto; - width: 2.5em; - height: 2.5em; - border-radius: 50%; - box-sizing: border-box; - - border: 0.3em solid var(--foreground); - - animation: spinning-loader-rotation 1s linear infinite; - - &::after - { - content: ""; - box-sizing: border-box; - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - width: 3.5em; - height: 3.5em; - border-radius: 50%; - border: 0.3em solid transparent; - border-bottom-color: var(--primary); - } - - &.inline - { - display: inline-block; - margin: 1em; - } -} - -@keyframes spinning-loader-rotation -{ - 0% - { - transform: rotate(0deg); - } - 100% - { - transform: rotate(360deg); - } -} diff --git a/src/styles/components/menus/_apps-menu.less b/src/styles/components/menus/_apps-menu.less deleted file mode 100644 index 851f42c..0000000 --- a/src/styles/components/menus/_apps-menu.less +++ /dev/null @@ -1,49 +0,0 @@ -nav.apps.menu -{ - > ul - { - display: flex; - flex-direction: row; - align-items: flex-start; - justify-content: center; - gap: 0.66em; - - margin: auto; - padding: 0; - - list-style: none; - - > li - { - padding: 0; - } - } - - a.app - { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - margin: auto; - padding: 1em; - min-width: 10em; - - font-size: 1.1em; - - svg - { - display: block; - margin: 0 auto 0.5em auto; - - color: var(--primary); - } - - &.active - { - outline: solid 2px var(--primary); - outline-offset: 2px; - } - } -} diff --git a/src/styles/components/menus/_main-menu.less b/src/styles/components/menus/_main-menu.less deleted file mode 100644 index f49e922..0000000 --- a/src/styles/components/menus/_main-menu.less +++ /dev/null @@ -1,97 +0,0 @@ -nav.main.menu -{ - position: sticky; - top: 0; - - background: var(--primary-gradient); - color: var(--background); - - z-index: 2; - - .floating - { - justify-content: flex-start; - } - .floating[data-placement="left-start"] - { - justify-content: flex-end; - } - - > ul - { - display: flex; - flex-direction: row; - align-items: center; - justify-content: flex-start; - - margin: 0; - padding: 0; - - list-style: none; - - > li - { - margin: 0; - padding: 0; - - > a - { - transition: background 0.2s ease; - display: block; - - padding: 0.75em 1em; - - background: transparent; - color: var(--background); - - text-align: center; - text-decoration: none; - cursor: pointer; - - &:hover - { - background: var(--menu-hover); - } - - &.active - { - background: var(--menu-active); - } - - svg - { // Icon style. - display: inline-block; - margin-top: -0.2em; - margin-right: 0.2em; - vertical-align: middle; - } - } - } - } - - - .submenu.card - { - box-shadow: 0 0 0.15em 0 var(--foreground-shadow); - border: none; - background: var(--primary-gradient); - - .submenu - { - > .item - { - color: var(--background); - - &:hover - { - background: var(--menu-hover); - } - - &.active - { - background: var(--menu-active); - } - } - } - } -} diff --git a/src/styles/components/menus/_submenu.less b/src/styles/components/menus/_submenu.less deleted file mode 100644 index d002b13..0000000 --- a/src/styles/components/menus/_submenu.less +++ /dev/null @@ -1,45 +0,0 @@ -.submenu.card -{ - margin: -1px!important; - padding: 0; - - .floating - { - justify-content: flex-start; - } - .floating[data-placement="left-start"] - { - justify-content: flex-end; - } - - > .submenu - { - display: flex; - flex-direction: column; - - > .item - { - transition: background 0.2s ease; - - padding: 0.75em; - - color: var(--foreground); - - text-decoration: none; - cursor: pointer; - - &:hover - { - background: var(--background-darker); - } - - svg - { // Icon style. - display: inline-block; - margin-top: -0.2em; - margin-right: 0.2em; - vertical-align: middle; - } - } - } -} diff --git a/src/styles/components/pagination/_nav.less b/src/styles/components/pagination/_nav.less deleted file mode 100644 index c90a2be..0000000 --- a/src/styles/components/pagination/_nav.less +++ /dev/null @@ -1,67 +0,0 @@ -nav.pages -{ - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - - margin: auto; - padding: 0.25em; - width: 50em; - max-width: 95%; - box-sizing: border-box; - border-radius: 0.25em; - - border: solid var(--background-darkest) thin; - background: var(--background-lighter); - - button, .button - { - margin: auto; - border: none; - - &:hover - { - background: var(--background-darker); - } - } - - input - { - transition: background 0.2s ease; - width: 5em; - border-color: var(--background-darker); - outline: none; - - text-align: center; - - &:focus - { - background: var(--background-darker); - } - } - - > ul - { - flex: 1; - - margin: 0; - padding: 0; - list-style: none; - - text-align: center; - vertical-align: middle; - - > li - { - display: inline-block; - padding: 0; - vertical-align: middle; - - button, .button - { - margin: auto 0.25em; - } - } - } -} diff --git a/src/styles/components/select/_input.less b/src/styles/components/select/_input.less deleted file mode 100644 index 4244a15..0000000 --- a/src/styles/components/select/_input.less +++ /dev/null @@ -1,67 +0,0 @@ -label.select -{ - display: flex; - flex-direction: column-reverse; - align-items: stretch; - - > .label - { - margin: 0 0.5em; - } - - > div - { - position: relative; - - > input - { - margin: auto; - padding-right: 2.5em; - } - - > a.button - { - transition: transform 0.2s ease, background 0.2s ease; - - position: absolute; - top: 0; - bottom: 0; - right: 0.35em; - - display: flex; - align-items: center; - justify-content: center; - - margin: auto; - padding: 0; - width: 1.75em; - height: 1.75em; - - box-shadow: 0 0 0 0 transparent; - border: none; - background: transparent; - color: var(--foreground-lightest); - - transform: rotate(0deg); - transform-origin: center; - - &:hover - { - background: var(--background-darker); - } - - > svg - { margin: 0; } - } - - &:focus-within - { - > a.button - { - transform: rotate(180deg); - - &:hover { background: transparent; } - } - } - } -} diff --git a/src/styles/components/select/_selected.less b/src/styles/components/select/_selected.less deleted file mode 100644 index 80de964..0000000 --- a/src/styles/components/select/_selected.less +++ /dev/null @@ -1,45 +0,0 @@ -label.select ul.selected -{ - display: flex; - flex-direction: column; - gap: 0.25em; - - margin: 0.25em 0; - padding: 0; - list-style: none; - - > li - { - display: flex; - align-items: center; - - padding: 0; - border-radius: 0.25em; - border: solid var(--background-darkest) thin; - background: var(--background-lighter); - - > svg - { - margin: auto 0.3em; - color: var(--neutral); - ;} - - > .option - { - flex: 1; - } - - > button - { - display: flex; - align-items: center; - justify-content: center; - - padding: 0; - width: 1.5em; - height: 1.5em; - - > svg { margin: auto; } - } - } -} diff --git a/src/styles/components/select/_suggestions.less b/src/styles/components/select/_suggestions.less deleted file mode 100644 index 9a58b2a..0000000 --- a/src/styles/components/select/_suggestions.less +++ /dev/null @@ -1,54 +0,0 @@ -.floating.suggestions -{ - max-height: ~"min(90vh, 18em)"; - padding: 0.5em 0; - - overflow-y: auto; - - .suggestion - { - transition: background 0.2s ease; - - position: relative; - - display: block; - padding: 0.5em 1em; - - background: transparent; - color: var(--foreground); - - cursor: pointer; - - &.preselected - { - background: var(--background); - } - - &:hover - { - background: var(--background-darker); - } - - > .selected - { - position: absolute; - top: 0; - right: 0.5em; - bottom: 0; - - display: flex; - align-items: center; - justify-content: center; - margin: auto; - width: 1.4em; - height: 1.4em; - border-radius: 1.4em; - - color: var(--green); - } - &:not(.selected) > .selected - { - display: none; - } - } -} diff --git a/src/styles/main.less b/src/styles/main.less deleted file mode 100644 index 1d43e11..0000000 --- a/src/styles/main.less +++ /dev/null @@ -1,9 +0,0 @@ - -@import "_fonts"; -@import "_colors"; - -@import "_common"; - -@import "_components"; - -@import "_footer"; diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..213a1d9 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json index 273345f..1ffef60 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,28 +1,7 @@ { - "ts-node": { - "compilerOptions": { - "module": "ESNext", - "types": ["node"] - } - }, - "compilerOptions": { - "outDir": "./lib", - "incremental": true, - "sourceMap": true, - "noImplicitAny": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "resolveJsonModule": true, - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "module": "ES6", - "target": "ES6", - "moduleResolution": "Bundler", - "lib": [ - "ESNext", - "DOM" - ], - "jsx": "react", - "allowJs": true - } + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] } diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..f85a399 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts index 8c2e9b7..9d58d38 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,11 +1,11 @@ -import {ConfigEnv, defineConfig, UserConfig} from "vite"; +import { type ConfigEnv, defineConfig, type UserConfig } from "vite"; import dts from "vite-plugin-dts"; import react from "@vitejs/plugin-react"; // https://vitejs.dev/config/ export default defineConfig(({ mode }: ConfigEnv): UserConfig => { - return ({ + return { build: { outDir: "lib", sourcemap: true, @@ -16,7 +16,12 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => { fileName: "index", }, rollupOptions: { - external: ["react", "react-dom", "react-router-dom", "@phosphor-icons/react"], + external: [ + "react", + "react-dom", + "react-router-dom", + "@phosphor-icons/react", + ], }, }, @@ -27,6 +32,6 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => { insertTypesEntry: true, exclude: ["demo", "node_modules"], }), - ] - }); + ], + }; }); diff --git a/yarn.lock b/yarn.lock index f70d4b8..6f61088 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,110 +5,114 @@ __metadata: version: 8 cacheKey: 10c0 -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed +"@adobe/css-tools@npm:^4.4.0": + version: 4.4.4 + resolution: "@adobe/css-tools@npm:4.4.4" + checksum: 10c0/8f3e6cfaa5e6286e6f05de01d91d060425be2ebaef490881f5fe6da8bbdb336835c5d373ea337b0c3b0a1af4be048ba18780f0f6021d30809b4545922a7e13d9 languageName: node linkType: hard -"@babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": - version: 7.26.2 - resolution: "@babel/code-frame@npm:7.26.2" +"@babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.27.1" js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.9": - version: 7.26.2 - resolution: "@babel/compat-data@npm:7.26.2" - checksum: 10c0/c9b5f3724828d17f728a778f9d66c19b55c018d0d76de6d731178cca64f182c22b71400a73bf2b65dcc4fcfe52b630088a94d5902911b54206aa90e3ffe07d12 +"@babel/compat-data@npm:^7.27.2": + version: 7.28.4 + resolution: "@babel/compat-data@npm:7.28.4" + checksum: 10c0/9d346471e0a016641df9a325f42ad1e8324bbdc0243ce4af4dd2b10b974128590da9eb179eea2c36647b9bb987343119105e96773c1f6981732cd4f87e5a03b9 languageName: node linkType: hard -"@babel/core@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/core@npm:7.26.0" +"@babel/core@npm:^7.28.0, @babel/core@npm:^7.28.3": + version: 7.28.4 + resolution: "@babel/core@npm:7.28.4" dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.26.0" - "@babel/generator": "npm:^7.26.0" - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-module-transforms": "npm:^7.26.0" - "@babel/helpers": "npm:^7.26.0" - "@babel/parser": "npm:^7.26.0" - "@babel/template": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.26.0" + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.28.3" + "@babel/helpers": "npm:^7.28.4" + "@babel/parser": "npm:^7.28.4" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.4" + "@babel/types": "npm:^7.28.4" + "@jridgewell/remapping": "npm:^2.3.5" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/91de73a7ff5c4049fbc747930aa039300e4d2670c2a91f5aa622f1b4868600fc89b01b6278385fbcd46f9574186fa3d9b376a9e7538e50f8d118ec13cfbcb63e + checksum: 10c0/ef5a6c3c6bf40d3589b5593f8118cfe2602ce737412629fb6e26d595be2fcbaae0807b43027a5c42ec4fba5b895ff65891f2503b5918c8a3ea3542ab44d4c278 languageName: node linkType: hard -"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": - version: 7.26.2 - resolution: "@babel/generator@npm:7.26.2" +"@babel/generator@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/generator@npm:7.28.3" dependencies: - "@babel/parser": "npm:^7.26.2" - "@babel/types": "npm:^7.26.0" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" + "@babel/parser": "npm:^7.28.3" + "@babel/types": "npm:^7.28.2" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/167ebce8977142f5012fad6bd91da51ac52bcd752f2261a54b7ab605d928aebe57e21636cdd2a9c7757e552652c68d9fcb5d40b06fcb66e02d9ee7526e118a5c + checksum: 10c0/0ff58bcf04f8803dcc29479b547b43b9b0b828ec1ee0668e92d79f9e90f388c28589056637c5ff2fd7bcf8d153c990d29c448d449d852bf9d1bc64753ca462bc languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-compilation-targets@npm:7.25.9" +"@babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" dependencies: - "@babel/compat-data": "npm:^7.25.9" - "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-validator-option": "npm:^7.27.1" browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/a6b26a1e4222e69ef8e62ee19374308f060b007828bc11c65025ecc9e814aba21ff2175d6d3f8bf53c863edd728ee8f94ba7870f8f90a37d39552ad9933a8aaa + checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-imports@npm:7.25.9" - dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/078d3c2b45d1f97ffe6bb47f61961be4785d2342a4156d8b42c92ee4e1b7b9e365655dd6cb25329e8fe1a675c91eeac7e3d04f0c518b67e417e29d6e27b6aa70 +"@babel/helper-globals@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/helper-globals@npm:7.28.0" + checksum: 10c0/5a0cd0c0e8c764b5f27f2095e4243e8af6fa145daea2b41b53c0c1414fe6ff139e3640f4e2207ae2b3d2153a1abd346f901c26c290ee7cb3881dd922d4ee9232 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/helper-module-transforms@npm:7.26.0" +"@babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-module-transforms@npm:7.28.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/ee111b68a5933481d76633dad9cdab30c41df4479f0e5e1cc4756dc9447c1afd2c9473b5ba006362e35b17f4ebddd5fca090233bef8dfc84dca9d9127e56ec3a + checksum: 10c0/549be62515a6d50cd4cfefcab1b005c47f89bd9135a22d602ee6a5e3a01f27571868ada10b75b033569f24dc4a2bb8d04bfa05ee75c16da7ade2d0db1437fcdb languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-plugin-utils@npm:7.25.9" - checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d +"@babel/helper-plugin-utils@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b languageName: node linkType: hard @@ -119,10 +123,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-string-parser@npm:7.25.9" - checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 languageName: node linkType: hard @@ -133,31 +137,31 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-identifier@npm:7.25.9" - checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-option@npm:7.25.9" - checksum: 10c0/27fb195d14c7dcb07f14e58fe77c44eea19a6a40a74472ec05c441478fa0bb49fa1c32b2d64be7a38870ee48ef6601bdebe98d512f0253aea0b39756c4014f3e +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 languageName: node linkType: hard -"@babel/helpers@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/helpers@npm:7.26.0" +"@babel/helpers@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/helpers@npm:7.28.4" dependencies: - "@babel/template": "npm:^7.25.9" - "@babel/types": "npm:^7.26.0" - checksum: 10c0/343333cced6946fe46617690a1d0789346960910225ce359021a88a60a65bc0d791f0c5d240c0ed46cf8cc63b5fd7df52734ff14e43b9c32feae2b61b1647097 + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.4" + checksum: 10c0/aaa5fb8098926dfed5f223adf2c5e4c7fbba4b911b73dfec2d7d3083f8ba694d201a206db673da2d9b3ae8c01793e795767654558c450c8c14b4c2175b4fcb44 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.3": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7": version: 7.25.6 resolution: "@babel/parser@npm:7.25.6" dependencies: @@ -168,71 +172,62 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": - version: 7.26.2 - resolution: "@babel/parser@npm:7.26.2" +"@babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.3, @babel/parser@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/parser@npm:7.28.4" dependencies: - "@babel/types": "npm:^7.26.0" + "@babel/types": "npm:^7.28.4" bin: parser: ./bin/babel-parser.js - checksum: 10c0/751a743087b3a9172a7599f1421830d44c38f065ef781588d2bfb1c98f9b461719a226feb13c868d7a284783eee120c88ea522593118f2668f46ebfb1105c4d7 + checksum: 10c0/58b239a5b1477ac7ed7e29d86d675cc81075ca055424eba6485872626db2dc556ce63c45043e5a679cd925e999471dba8a3ed4864e7ab1dbf64306ab72c52707 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" +"@babel/plugin-transform-react-jsx-self@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ce0e289f6af93d7c4dc6b385512199c5bb138ae61507b4d5117ba88b6a6b5092f704f1bdf80080b7d69b1b8c36649f2a0b250e8198667d4d30c08bbb1546bd99 + checksum: 10c0/00a4f917b70a608f9aca2fb39aabe04a60aa33165a7e0105fd44b3a8531630eb85bf5572e9f242f51e6ad2fa38c2e7e780902176c863556c58b5ba6f6e164031 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" +"@babel/plugin-transform-react-jsx-source@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/fc9ee08efc9be7cbd2cc6788bbf92579adf3cab37912481f1b915221be3d22b0613b5b36a721df5f4c0ab65efe8582fcf8673caab83e6e1ce4cc04ceebf57dfa + checksum: 10c0/5e67b56c39c4d03e59e03ba80692b24c5a921472079b63af711b1d250fc37c1733a17069b63537f750f3e937ec44a42b1ee6a46cd23b1a0df5163b17f741f7f2 languageName: node linkType: hard -"@babel/runtime@npm:^7.12.5": - version: 7.25.6 - resolution: "@babel/runtime@npm:7.25.6" +"@babel/template@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" dependencies: - regenerator-runtime: "npm:^0.14.0" - checksum: 10c0/d6143adf5aa1ce79ed374e33fdfd74fa975055a80bc6e479672ab1eadc4e4bfd7484444e17dd063a1d180e051f3ec62b357c7a2b817e7657687b47313158c3d2 + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 languageName: node linkType: hard -"@babel/template@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/template@npm:7.25.9" +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/traverse@npm:7.28.4" dependencies: - "@babel/code-frame": "npm:^7.25.9" - "@babel/parser": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/traverse@npm:7.25.9" - dependencies: - "@babel/code-frame": "npm:^7.25.9" - "@babel/generator": "npm:^7.25.9" - "@babel/parser": "npm:^7.25.9" - "@babel/template": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.3" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.4" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.4" debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/e90be586a714da4adb80e6cb6a3c5cfcaa9b28148abdafb065e34cc109676fc3db22cf98cd2b2fff66ffb9b50c0ef882cab0f466b6844be0f6c637b82719bba1 + checksum: 10c0/ee678fdd49c9f54a32e07e8455242390d43ce44887cea6567b233fe13907b89240c377e7633478a32c6cf1be0e17c2f7f3b0c59f0666e39c5074cc47b968489c languageName: node linkType: hard @@ -247,254 +242,328 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/types@npm:7.26.0" +"@babel/types@npm:^7.27.1, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/types@npm:7.28.4" dependencies: - "@babel/helper-string-parser": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8 + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + checksum: 10c0/ac6f909d6191319e08c80efbfac7bd9a25f80cc83b43cd6d82e7233f7a6b9d6e7b90236f3af7400a3f83b576895bcab9188a22b584eb0f224e80e6d4e95f4517 languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/aix-ppc64@npm:0.24.0" +"@esbuild/aix-ppc64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/aix-ppc64@npm:0.25.9" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm64@npm:0.24.0" +"@esbuild/android-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-arm64@npm:0.25.9" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm@npm:0.24.0" +"@esbuild/android-arm@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-arm@npm:0.25.9" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-x64@npm:0.24.0" +"@esbuild/android-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-x64@npm:0.25.9" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-arm64@npm:0.24.0" +"@esbuild/darwin-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/darwin-arm64@npm:0.25.9" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-x64@npm:0.24.0" +"@esbuild/darwin-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/darwin-x64@npm:0.25.9" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-arm64@npm:0.24.0" +"@esbuild/freebsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/freebsd-arm64@npm:0.25.9" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-x64@npm:0.24.0" +"@esbuild/freebsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/freebsd-x64@npm:0.25.9" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm64@npm:0.24.0" +"@esbuild/linux-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-arm64@npm:0.25.9" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm@npm:0.24.0" +"@esbuild/linux-arm@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-arm@npm:0.25.9" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ia32@npm:0.24.0" +"@esbuild/linux-ia32@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-ia32@npm:0.25.9" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-loong64@npm:0.24.0" +"@esbuild/linux-loong64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-loong64@npm:0.25.9" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-mips64el@npm:0.24.0" +"@esbuild/linux-mips64el@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-mips64el@npm:0.25.9" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ppc64@npm:0.24.0" +"@esbuild/linux-ppc64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-ppc64@npm:0.25.9" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-riscv64@npm:0.24.0" +"@esbuild/linux-riscv64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-riscv64@npm:0.25.9" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-s390x@npm:0.24.0" +"@esbuild/linux-s390x@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-s390x@npm:0.25.9" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-x64@npm:0.24.0" +"@esbuild/linux-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-x64@npm:0.25.9" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/netbsd-x64@npm:0.24.0" +"@esbuild/netbsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/netbsd-arm64@npm:0.25.9" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/netbsd-x64@npm:0.25.9" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-arm64@npm:0.24.0" +"@esbuild/openbsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openbsd-arm64@npm:0.25.9" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-x64@npm:0.24.0" +"@esbuild/openbsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openbsd-x64@npm:0.25.9" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/sunos-x64@npm:0.24.0" +"@esbuild/openharmony-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openharmony-arm64@npm:0.25.9" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/sunos-x64@npm:0.25.9" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-arm64@npm:0.24.0" +"@esbuild/win32-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-arm64@npm:0.25.9" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-ia32@npm:0.24.0" +"@esbuild/win32-ia32@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-ia32@npm:0.25.9" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-x64@npm:0.24.0" +"@esbuild/win32-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-x64@npm:0.25.9" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@floating-ui/core@npm:^1.6.0": - version: 1.6.8 - resolution: "@floating-ui/core@npm:1.6.8" +"@eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" dependencies: - "@floating-ui/utils": "npm:^0.2.8" - checksum: 10c0/d6985462aeccae7b55a2d3f40571551c8c42bf820ae0a477fc40ef462e33edc4f3f5b7f11b100de77c9b58ecb581670c5c3f46d0af82b5e30aa185c735257eb9 - languageName: node - linkType: hard - -"@floating-ui/dom@npm:^1.0.0": - version: 1.6.11 - resolution: "@floating-ui/dom@npm:1.6.11" - dependencies: - "@floating-ui/core": "npm:^1.6.0" - "@floating-ui/utils": "npm:^0.2.8" - checksum: 10c0/02ef34a75a515543c772880338eea7b66724997bd5ec7cd58d26b50325709d46d480a306b84e7d5509d734434411a4bcf23af5680c2e461e6e6a8bf45d751df8 - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^2.1.2": - version: 2.1.2 - resolution: "@floating-ui/react-dom@npm:2.1.2" - dependencies: - "@floating-ui/dom": "npm:^1.0.0" + eslint-visitor-keys: "npm:^3.4.3" peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 10c0/e855131c74e68cab505f7f44f92cd4e2efab1c125796db3116c54c0859323adae4bf697bf292ee83ac77b9335a41ad67852193d7aeace90aa2e1c4a640cafa60 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 languageName: node linkType: hard -"@floating-ui/react@npm:^0.26.17": - version: 0.26.24 - resolution: "@floating-ui/react@npm:0.26.24" +"@eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.21.0": + version: 0.21.0 + resolution: "@eslint/config-array@npm:0.21.0" dependencies: - "@floating-ui/react-dom": "npm:^2.1.2" - "@floating-ui/utils": "npm:^0.2.8" - tabbable: "npm:^6.0.0" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 10c0/c5c3ac265802087673a69b0e08b3bea1ee02de9da4cdbc40bb1c9e06823be72628a82f1655b40d56a4383715b4ab3b6deddff4e69146f513970ee592e1dd8f92 + "@eslint/object-schema": "npm:^2.1.6" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10c0/0ea801139166c4aa56465b309af512ef9b2d3c68f9198751bbc3e21894fe70f25fbf26e1b0e9fffff41857bc21bfddeee58649ae6d79aadcd747db0c5dca771f languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.8": - version: 0.2.8 - resolution: "@floating-ui/utils@npm:0.2.8" - checksum: 10c0/a8cee5f17406c900e1c3ef63e3ca89b35e7a2ed645418459a73627b93b7377477fc888081011c6cd177cac45ec2b92a6cab018c14ea140519465498dddd2d3f9 +"@eslint/config-helpers@npm:^0.3.1": + version: 0.3.1 + resolution: "@eslint/config-helpers@npm:0.3.1" + checksum: 10c0/f6c5b3a0b76a0d7d84cc93e310c259e6c3e0792ddd0a62c5fc0027796ffae44183432cb74b2c2b1162801ee1b1b34a6beb5d90a151632b4df7349f994146a856 languageName: node linkType: hard -"@fontsource-variable/jetbrains-mono@npm:^5.0.21": - version: 5.1.0 - resolution: "@fontsource-variable/jetbrains-mono@npm:5.1.0" - checksum: 10c0/829f45bebd7162c2db34960b0a7c5f18ed44aab4f0963e1647c5a13bd1c5ef5629708e7b4a637312fe92a81cdfb3e813853ba7d0309745055ee0e72db67cbcc3 +"@eslint/core@npm:^0.15.2": + version: 0.15.2 + resolution: "@eslint/core@npm:0.15.2" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/c17a6dc4f5a6006ecb60165cc38bcd21fefb4a10c7a2578a0cfe5813bbd442531a87ed741da5adab5eb678e8e693fda2e2b14555b035355537e32bcec367ea17 languageName: node linkType: hard -"@fontsource-variable/manrope@npm:^5.0.20": - version: 5.1.0 - resolution: "@fontsource-variable/manrope@npm:5.1.0" - checksum: 10c0/1a588103626458368b25ecc4c60683a4605e8938e6f1fe32d71c02ec2a6ebb62fa0a016ac5e6dad89bd34bb84acc3d8930b4179a1d12317844bd32b8aef2ca8e +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.1 + resolution: "@eslint/eslintrc@npm:3.3.1" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/b0e63f3bc5cce4555f791a4e487bf999173fcf27c65e1ab6e7d63634d8a43b33c3693e79f192cbff486d7df1be8ebb2bd2edc6e70ddd486cbfa84a359a3e3b41 languageName: node linkType: hard -"@fontsource-variable/source-serif-4@npm:^5.0.19": - version: 5.1.0 - resolution: "@fontsource-variable/source-serif-4@npm:5.1.0" - checksum: 10c0/9fddb90a7255ae6f6d7cca9c02bb6d129a03a2b6dd1180d3bd69f0be41535b9b56ff3507d2a3384bd5287ade69fe30793e877322c28653c946cceb802f7e6eba +"@eslint/js@npm:9.35.0": + version: 9.35.0 + resolution: "@eslint/js@npm:9.35.0" + checksum: 10c0/d40fe38724bc76c085c0b753cdf937fa35c0d6807ae76b2632e3f5f66c3040c91adcf1aff2ce70b4f45752e60629fadc415eeec9af3be3c274bae1cac54b9840 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.6": + version: 2.1.6 + resolution: "@eslint/object-schema@npm:2.1.6" + checksum: 10c0/b8cdb7edea5bc5f6a96173f8d768d3554a628327af536da2fc6967a93b040f2557114d98dbcdbf389d5a7b290985ad6a9ce5babc547f36fc1fde42e674d11a56 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.3.5": + version: 0.3.5 + resolution: "@eslint/plugin-kit@npm:0.3.5" + dependencies: + "@eslint/core": "npm:^0.15.2" + levn: "npm:^0.4.1" + checksum: 10c0/c178c1b58c574200c0fd125af3e4bc775daba7ce434ba6d1eeaf9bcb64b2e9fea75efabffb3ed3ab28858e55a016a5efa95f509994ee4341b341199ca630b89e + languageName: node + linkType: hard + +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.7 + resolution: "@humanfs/node@npm:0.16.7" + dependencies: + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.4.0" + checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 + languageName: node + linkType: hard + +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": "npm:^4.0.1" + checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 languageName: node linkType: hard @@ -512,6 +581,33 @@ __metadata: languageName: node linkType: hard +"@joshwooding/vite-plugin-react-docgen-typescript@npm:0.6.1": + version: 0.6.1 + resolution: "@joshwooding/vite-plugin-react-docgen-typescript@npm:0.6.1" + dependencies: + glob: "npm:^10.0.0" + magic-string: "npm:^0.30.0" + react-docgen-typescript: "npm:^2.2.2" + peerDependencies: + typescript: ">= 4.3.x" + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/0bcc2adbb49158018102bd9d84cd8572c770daee3d46733157933ef0330953bd5b9e102c26f2338ee7dfb8f21a7bb937134d23f8a7935d5dc88525a253557467 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.12": + version: 0.3.13 + resolution: "@jridgewell/gen-mapping@npm:0.3.13" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" @@ -523,6 +619,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" @@ -544,7 +650,14 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.24": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -554,69 +667,88 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.28": + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 + languageName: node + linkType: hard + "@kernelui/core@workspace:.": version: 0.0.0-use.local resolution: "@kernelui/core@workspace:." dependencies: - "@floating-ui/react": "npm:^0.26.17" - "@fontsource-variable/jetbrains-mono": "npm:^5.0.21" - "@fontsource-variable/manrope": "npm:^5.0.20" - "@fontsource-variable/source-serif-4": "npm:^5.0.19" - "@phosphor-icons/react": "npm:^2.1.7" - "@types/node": "npm:^22.7.4" - "@types/react": "npm:^18.3.12" - "@types/react-dom": "npm:^18.3.1" - "@types/uuid": "npm:^10" - "@vitejs/plugin-react": "npm:^4.3.4" - less: "npm:^4.2.0" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-error-boundary: "npm:^4.0.13" - react-merge-refs: "npm:^2.1.1" - react-router-dom: "npm:^7.0.1" - typescript: "npm:^5.6.2" - uuid: "npm:^10.0.0" - vite: "npm:^6.0.1" - vite-plugin-dts: "npm:^4.3.0" + "@phosphor-icons/react": "npm:^2.1.10" + "@storybook/addon-docs": "npm:^9.1.5" + "@storybook/react-vite": "npm:^9.1.5" + "@types/node": "npm:^24.3.1" + "@types/react": "npm:^19.1.12" + "@types/react-dom": "npm:^19.1.9" + "@vitejs/plugin-react": "npm:^5.0.2" + eslint: "npm:^9.35.0" + eslint-plugin-storybook: "npm:^9.1.5" + prettier: "npm:^3.6.2" + react: "npm:^19.1.1" + react-dom: "npm:^19.1.1" + react-router-dom: "npm:^7.8.2" + storybook: "npm:^9.1.5" + typescript: "npm:^5.9.2" + vite: "npm:^7.1.5" + vite-plugin-dts: "npm:^4.5.4" peerDependencies: - "@phosphor-icons/react": ^2.1.7 - react: ^18.3.1 - react-dom: ^18.3.1 - react-router-dom: ^7.0.1 + "@phosphor-icons/react": ^2.1.10 + react: ^19.1.1 + react-dom: ^19.1.1 + react-router-dom: ^7.8.2 languageName: unknown linkType: soft -"@microsoft/api-extractor-model@npm:7.30.0": - version: 7.30.0 - resolution: "@microsoft/api-extractor-model@npm:7.30.0" +"@mdx-js/react@npm:^3.0.0": + version: 3.1.1 + resolution: "@mdx-js/react@npm:3.1.1" dependencies: - "@microsoft/tsdoc": "npm:~0.15.1" - "@microsoft/tsdoc-config": "npm:~0.17.1" - "@rushstack/node-core-library": "npm:5.10.0" - checksum: 10c0/845ef107a88de9918e23a22cda95597401751512672c832d6d8a4cc63134e2415ee960d7d4ba7409d1a81569bc1d40f8dbbda76e2655f743a3e7c0595f07c118 + "@types/mdx": "npm:^2.0.0" + peerDependencies: + "@types/react": ">=16" + react: ">=16" + checksum: 10c0/34ca98bc2a0f969894ea144dc5c8a5294690505458cd24965cd9be854d779c193ad9192bf9143c4c18438fafd1902e100d99067e045c69319288562d497558c6 languageName: node linkType: hard -"@microsoft/api-extractor@npm:^7.47.11": - version: 7.48.0 - resolution: "@microsoft/api-extractor@npm:7.48.0" +"@microsoft/api-extractor-model@npm:7.30.7": + version: 7.30.7 + resolution: "@microsoft/api-extractor-model@npm:7.30.7" dependencies: - "@microsoft/api-extractor-model": "npm:7.30.0" "@microsoft/tsdoc": "npm:~0.15.1" "@microsoft/tsdoc-config": "npm:~0.17.1" - "@rushstack/node-core-library": "npm:5.10.0" + "@rushstack/node-core-library": "npm:5.14.0" + checksum: 10c0/e6e5d194f79efe0be47655a9f32e18f807ae6cffeddcd59795f442706d16d241e83b186a4943f252d9fa0f927dd431f270645e3f9fcdf978f85769a5314995ca + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:^7.50.1": + version: 7.52.11 + resolution: "@microsoft/api-extractor@npm:7.52.11" + dependencies: + "@microsoft/api-extractor-model": "npm:7.30.7" + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.14.0" "@rushstack/rig-package": "npm:0.5.3" - "@rushstack/terminal": "npm:0.14.3" - "@rushstack/ts-command-line": "npm:4.23.1" + "@rushstack/terminal": "npm:0.15.4" + "@rushstack/ts-command-line": "npm:5.0.2" lodash: "npm:~4.17.15" - minimatch: "npm:~3.0.3" + minimatch: "npm:10.0.3" resolve: "npm:~1.22.1" semver: "npm:~7.5.4" source-map: "npm:~0.6.1" - typescript: "npm:5.4.2" + typescript: "npm:5.8.2" bin: api-extractor: bin/api-extractor - checksum: 10c0/cc7e582c8b98156033064cb0363d40f4f9bd3bae57506358ce878deefa15655e93502f908e6d697356f3a50207787a874de56c6a357e2964adaebada4d4898cc + checksum: 10c0/a632feed560d4bfb0bb5949b05666f5be7e261a72c048214b0f4f308f83650b46c72680e374bb9f2e953bd34df56ea5b250641cfdad32cd78b0b8efa31616496 languageName: node linkType: hard @@ -639,6 +771,33 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + "@npmcli/agent@npm:^2.0.0": version: 2.2.2 resolution: "@npmcli/agent@npm:2.2.2" @@ -661,13 +820,13 @@ __metadata: languageName: node linkType: hard -"@phosphor-icons/react@npm:^2.1.7": - version: 2.1.7 - resolution: "@phosphor-icons/react@npm:2.1.7" +"@phosphor-icons/react@npm:^2.1.10": + version: 2.1.10 + resolution: "@phosphor-icons/react@npm:2.1.10" peerDependencies: react: ">= 16.8" react-dom: ">= 16.8" - checksum: 10c0/8e5c42056f606c5efdfa113174de4c312a084b1ca117262f9bb3063cb68ec58fa9e4ebb414d99372213a23924e064add34bcc917177b2f092f42e90c683e0dbd + checksum: 10c0/9a469e1bdcabcd3db02eda13142d57be250847ebbeb82b33c8900580a6a23ed4f411dbb9b9deacef726ff3fa8ffc960c8868b518e448bd2cee654cedf3fa4bda languageName: node linkType: hard @@ -678,156 +837,184 @@ __metadata: languageName: node linkType: hard -"@rollup/pluginutils@npm:^5.1.0": - version: 5.1.2 - resolution: "@rollup/pluginutils@npm:5.1.2" +"@rolldown/pluginutils@npm:1.0.0-beta.34": + version: 1.0.0-beta.34 + resolution: "@rolldown/pluginutils@npm:1.0.0-beta.34" + checksum: 10c0/96565287991825ecd90b60607dae908ebfdde233661fc589c98547a75c1fd0282b2e2a7849c3eb0c9941e2fba34667a8d5cdb8d597370815c19c2f29b4c157b4 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^5.0.2, @rollup/pluginutils@npm:^5.1.4": + version: 5.3.0 + resolution: "@rollup/pluginutils@npm:5.3.0" dependencies: "@types/estree": "npm:^1.0.0" estree-walker: "npm:^2.0.2" - picomatch: "npm:^2.3.1" + picomatch: "npm:^4.0.2" peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - checksum: 10c0/30f4a98e91a8699b6666b64ecdc665439bd53dddbe964bbeca56da81ff889cfde3a3e059144b80c5a2d9b48aa158df18a45e9a847a33b757d3e8336b278b8836 + checksum: 10c0/001834bf62d7cf5bac424d2617c113f7f7d3b2bf3c1778cbcccb72cdc957b68989f8e7747c782c2b911f1dde8257f56f8ac1e779e29e74e638e3f1e2cac2bcd0 languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.4" +"@rollup/rollup-android-arm-eabi@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.50.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-android-arm64@npm:4.27.4" +"@rollup/rollup-android-arm64@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-android-arm64@npm:4.50.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.27.4" +"@rollup/rollup-darwin-arm64@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.50.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.27.4" +"@rollup/rollup-darwin-x64@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.50.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.4" +"@rollup/rollup-freebsd-arm64@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.50.1" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-freebsd-x64@npm:4.27.4" +"@rollup/rollup-freebsd-x64@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.50.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.4" +"@rollup/rollup-linux-arm-musleabihf@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.50.1" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.4" +"@rollup/rollup-linux-arm64-gnu@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.50.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.4" +"@rollup/rollup-linux-arm64-musl@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.50.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-ppc64-gnu@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.50.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.4" +"@rollup/rollup-linux-riscv64-gnu@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.50.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.4" +"@rollup/rollup-linux-riscv64-musl@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.50.1" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.50.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.4" +"@rollup/rollup-linux-x64-gnu@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.50.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.4" +"@rollup/rollup-linux-x64-musl@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.50.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.4" +"@rollup/rollup-openharmony-arm64@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.50.1" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.50.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.4" +"@rollup/rollup-win32-ia32-msvc@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.50.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.4" +"@rollup/rollup-win32-x64-msvc@npm:4.50.1": + version: 4.50.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.50.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rushstack/node-core-library@npm:5.10.0": - version: 5.10.0 - resolution: "@rushstack/node-core-library@npm:5.10.0" +"@rushstack/node-core-library@npm:5.14.0": + version: 5.14.0 + resolution: "@rushstack/node-core-library@npm:5.14.0" dependencies: ajv: "npm:~8.13.0" ajv-draft-04: "npm:~1.0.0" ajv-formats: "npm:~3.0.1" - fs-extra: "npm:~7.0.1" + fs-extra: "npm:~11.3.0" import-lazy: "npm:~4.0.0" jju: "npm:~1.4.0" resolve: "npm:~1.22.1" @@ -837,7 +1024,7 @@ __metadata: peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/ef379432f1aeea1b19047a3e347e90b03e04331012e5df9cc8233fd6400bdcf801ed4e50ab3e36c211cd3266bbe4c3224205645b5909872a1f29a04a8d8ff3fd + checksum: 10c0/1312c4e04e7e3319d03a5959b9bb09d5fc4f9fc3484b39192a85eefc8f30635a5689c4c08c86d8fe4f5817a0445fa00c0faf444ca3f72df3496c5651a000ebd4 languageName: node linkType: hard @@ -851,30 +1038,162 @@ __metadata: languageName: node linkType: hard -"@rushstack/terminal@npm:0.14.3": - version: 0.14.3 - resolution: "@rushstack/terminal@npm:0.14.3" +"@rushstack/terminal@npm:0.15.4": + version: 0.15.4 + resolution: "@rushstack/terminal@npm:0.15.4" dependencies: - "@rushstack/node-core-library": "npm:5.10.0" + "@rushstack/node-core-library": "npm:5.14.0" supports-color: "npm:~8.1.1" peerDependencies: "@types/node": "*" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/0eba093d22c6a4d43b3ed9088ee8c354b63f5f28c059f5872251009231bf521ef1a415d33fed0a6572f52a450264de7d73313b0a41c65ab3b5e8c7baf5a82c1e + checksum: 10c0/058c92cc0e70b6038339d32a0ab15014a1f3cd267a3e3e3ef416f8f8698b470294eae9cf6d9c205bb3a3dd0598cceeb73f01d933e0b8346db56385290cbde90c languageName: node linkType: hard -"@rushstack/ts-command-line@npm:4.23.1": - version: 4.23.1 - resolution: "@rushstack/ts-command-line@npm:4.23.1" +"@rushstack/ts-command-line@npm:5.0.2": + version: 5.0.2 + resolution: "@rushstack/ts-command-line@npm:5.0.2" dependencies: - "@rushstack/terminal": "npm:0.14.3" + "@rushstack/terminal": "npm:0.15.4" "@types/argparse": "npm:1.0.38" argparse: "npm:~1.0.9" string-argv: "npm:~0.3.1" - checksum: 10c0/dc69f502cd3ffbce190e5d6a9a1b85054680d3622933aecd9ef0e81de0aeabb44adcf193586b305733950afa6c36a84a9bacf4382adafd42ba48cb0f003687e7 + checksum: 10c0/b6c08ec8309164c2fa5b85804d1a23a98ea8f6348499378e0561565f34bdff0ba0d605c8fc5c7ad704b7fc0f28fd3933b226fb6349362b4d8b7d944866c6d874 + languageName: node + linkType: hard + +"@storybook/addon-docs@npm:^9.1.5": + version: 9.1.5 + resolution: "@storybook/addon-docs@npm:9.1.5" + dependencies: + "@mdx-js/react": "npm:^3.0.0" + "@storybook/csf-plugin": "npm:9.1.5" + "@storybook/icons": "npm:^1.4.0" + "@storybook/react-dom-shim": "npm:9.1.5" + react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^9.1.5 + checksum: 10c0/aba51eedcfaf385b9af3d80ebace2c4139764b17389b7584312b24c9e5100e9168147fcce254044cd9e45109a24b64623b6552eb34dda097bac688c19382befa + languageName: node + linkType: hard + +"@storybook/builder-vite@npm:9.1.5": + version: 9.1.5 + resolution: "@storybook/builder-vite@npm:9.1.5" + dependencies: + "@storybook/csf-plugin": "npm:9.1.5" + ts-dedent: "npm:^2.0.0" + peerDependencies: + storybook: ^9.1.5 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + checksum: 10c0/1a64f276012f224ee3224f56fab9b5a3c6e28ac6bbf135a3490d58e4fe2f9a76b127a5e642e0e3331917e78391542704f5b92e1ce3d244e7bdb2f7cd1b3d21fb + languageName: node + linkType: hard + +"@storybook/csf-plugin@npm:9.1.5": + version: 9.1.5 + resolution: "@storybook/csf-plugin@npm:9.1.5" + dependencies: + unplugin: "npm:^1.3.1" + peerDependencies: + storybook: ^9.1.5 + checksum: 10c0/03d3ad19b1fd3375c1fdd64acfaf903ec81b3626098f421e57bf9f0551924d50c2a8668bf547da25dee90e4b89a03dd06827db16718e81f7008a6c1bf74ce890 + languageName: node + linkType: hard + +"@storybook/global@npm:^5.0.0": + version: 5.0.0 + resolution: "@storybook/global@npm:5.0.0" + checksum: 10c0/8f1b61dcdd3a89584540896e659af2ecc700bc740c16909a7be24ac19127ea213324de144a141f7caf8affaed017d064fea0618d453afbe027cf60f54b4a6d0b + languageName: node + linkType: hard + +"@storybook/icons@npm:^1.4.0": + version: 1.4.0 + resolution: "@storybook/icons@npm:1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + checksum: 10c0/fd0514fb3fa431a8b5939fe1d9fc336b253ef2c25b34792d2d4ee59e13321108d34f8bf223a0981482f54f83c5ef47ffd1a98c376ca9071011c1b8afe2b01d43 + languageName: node + linkType: hard + +"@storybook/react-dom-shim@npm:9.1.5": + version: 9.1.5 + resolution: "@storybook/react-dom-shim@npm:9.1.5" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^9.1.5 + checksum: 10c0/2a4d7d6f2da28f00f6bf242b4ca62a1068f5ba511fb5af08516a18e7d3cd4cfe1ee12cd7cd6776e3461c3c239381e0c43e9296c68d591ba33b3f11294ab210d4 + languageName: node + linkType: hard + +"@storybook/react-vite@npm:^9.1.5": + version: 9.1.5 + resolution: "@storybook/react-vite@npm:9.1.5" + dependencies: + "@joshwooding/vite-plugin-react-docgen-typescript": "npm:0.6.1" + "@rollup/pluginutils": "npm:^5.0.2" + "@storybook/builder-vite": "npm:9.1.5" + "@storybook/react": "npm:9.1.5" + find-up: "npm:^7.0.0" + magic-string: "npm:^0.30.0" + react-docgen: "npm:^8.0.0" + resolve: "npm:^1.22.8" + tsconfig-paths: "npm:^4.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^9.1.5 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + checksum: 10c0/3da19db0361833033cb0b978b3bba08bc93929d52dd31c72b2438011e55e65d272da5d8dcc68d5aa63eeb47cbf83876acfce176546325c31a0e3fb1e0878ea71 + languageName: node + linkType: hard + +"@storybook/react@npm:9.1.5": + version: 9.1.5 + resolution: "@storybook/react@npm:9.1.5" + dependencies: + "@storybook/global": "npm:^5.0.0" + "@storybook/react-dom-shim": "npm:9.1.5" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^9.1.5 + typescript: ">= 4.9.x" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/f9dc6d2f715480f4defa2d80b0f181a9c92b718214a61cb31130d57750e4c1616ccd8cbfdf4765ab2bfd2dde1e959a86d32c9270e25ad06de27644e0c40fd94c + languageName: node + linkType: hard + +"@testing-library/jest-dom@npm:^6.6.3": + version: 6.8.0 + resolution: "@testing-library/jest-dom@npm:6.8.0" + dependencies: + "@adobe/css-tools": "npm:^4.4.0" + aria-query: "npm:^5.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.6.3" + picocolors: "npm:^1.1.1" + redent: "npm:^3.0.0" + checksum: 10c0/4c5b8b433e0339e0399b940ae901a99ae00f1d5ffb7cbb295460b2c44aaad0bc7befcca7b06ceed7aa68a524970077468046c9fe52836ee26f45b807c80a7ff1 + languageName: node + linkType: hard + +"@testing-library/user-event@npm:^14.6.1": + version: 14.6.1 + resolution: "@testing-library/user-event@npm:14.6.1" + peerDependencies: + "@testing-library/dom": ">=7.21.4" + checksum: 10c0/75fea130a52bf320d35d46ed54f3eec77e71a56911b8b69a3fe29497b0b9947b2dc80d30f04054ad4ce7f577856ae3e5397ea7dff0ef14944d3909784c7a93fe languageName: node linkType: hard @@ -926,124 +1245,308 @@ __metadata: languageName: node linkType: hard -"@types/cookie@npm:^0.6.0": - version: 0.6.0 - resolution: "@types/cookie@npm:0.6.0" - checksum: 10c0/5b326bd0188120fb32c0be086b141b1481fec9941b76ad537f9110e10d61ee2636beac145463319c71e4be67a17e85b81ca9e13ceb6e3bb63b93d16824d6c149 +"@types/babel__traverse@npm:^7.20.7": + version: 7.28.0 + resolution: "@types/babel__traverse@npm:7.28.0" + dependencies: + "@babel/types": "npm:^7.28.2" + checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 languageName: node linkType: hard -"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0": +"@types/chai@npm:^5.2.2": + version: 5.2.2 + resolution: "@types/chai@npm:5.2.2" + dependencies: + "@types/deep-eql": "npm:*" + checksum: 10c0/49282bf0e8246800ebb36f17256f97bd3a8c4fb31f92ad3c0eaa7623518d7e87f1eaad4ad206960fcaf7175854bdff4cb167e4fe96811e0081b4ada83dd533ec + languageName: node + linkType: hard + +"@types/deep-eql@npm:*": + version: 4.0.2 + resolution: "@types/deep-eql@npm:4.0.2" + checksum: 10c0/bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844 + languageName: node + linkType: hard + +"@types/doctrine@npm:^0.0.9": + version: 0.0.9 + resolution: "@types/doctrine@npm:0.0.9" + checksum: 10c0/cdaca493f13c321cf0cacd1973efc0ae74569633145d9e6fc1128f32217a6968c33bea1f858275239fe90c98f3be57ec8f452b416a9ff48b8e8c1098b20fa51c + languageName: node + linkType: hard + +"@types/estree@npm:1.0.8, @types/estree@npm:^1.0.6": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 + languageName: node + linkType: hard + +"@types/estree@npm:^1.0.0": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a languageName: node linkType: hard -"@types/node@npm:^22.7.4": - version: 22.7.4 - resolution: "@types/node@npm:22.7.4" +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/mdx@npm:^2.0.0": + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 10c0/5edf1099505ac568da55f9ae8a93e7e314e8cbc13d3445d0be61b75941226b005e1390d9b95caecf5dcb00c9d1bab2f1f60f6ff9876dc091a48b547495007720 + languageName: node + linkType: hard + +"@types/node@npm:^24.3.1": + version: 24.3.1 + resolution: "@types/node@npm:24.3.1" dependencies: - undici-types: "npm:~6.19.2" - checksum: 10c0/c22bf54515c78ff3170142c1e718b90e2a0003419dc2d55f79c9c9362edd590a6ab1450deb09ff6e1b32d1b4698da407930b16285e8be3a009ea6cd2695cac01 + undici-types: "npm:~7.10.0" + checksum: 10c0/99b86fc32294fcd61136ca1f771026443a1e370e9f284f75e243b29299dd878e18c193deba1ce29a374932db4e30eb80826e1049b9aad02d36f5c30b94b6f928 languageName: node linkType: hard -"@types/prop-types@npm:*": - version: 15.7.13 - resolution: "@types/prop-types@npm:15.7.13" - checksum: 10c0/1b20fc67281902c6743379960247bc161f3f0406ffc0df8e7058745a85ea1538612109db0406290512947f9632fe9e10e7337bf0ce6338a91d6c948df16a7c61 - languageName: node - linkType: hard - -"@types/react-dom@npm:^18.3.1": - version: 18.3.1 - resolution: "@types/react-dom@npm:18.3.1" - dependencies: - "@types/react": "npm:*" - checksum: 10c0/8b416551c60bb6bd8ec10e198c957910cfb271bc3922463040b0d57cf4739cdcd24b13224f8d68f10318926e1ec3cd69af0af79f0291b599a992f8c80d47f1eb - languageName: node - linkType: hard - -"@types/react@npm:*, @types/react@npm:^18.3.12": - version: 18.3.12 - resolution: "@types/react@npm:18.3.12" - dependencies: - "@types/prop-types": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10c0/8bae8d9a41619804561574792e29112b413044eb0d53746dde2b9720c1f9a59f71c895bbd7987cd8ce9500b00786e53bc032dced38cddf42910458e145675290 - languageName: node - linkType: hard - -"@types/uuid@npm:^10": - version: 10.0.0 - resolution: "@types/uuid@npm:10.0.0" - checksum: 10c0/9a1404bf287164481cb9b97f6bb638f78f955be57c40c6513b7655160beb29df6f84c915aaf4089a1559c216557dc4d2f79b48d978742d3ae10b937420ddac60 - languageName: node - linkType: hard - -"@vitejs/plugin-react@npm:^4.3.4": - version: 4.3.4 - resolution: "@vitejs/plugin-react@npm:4.3.4" - dependencies: - "@babel/core": "npm:^7.26.0" - "@babel/plugin-transform-react-jsx-self": "npm:^7.25.9" - "@babel/plugin-transform-react-jsx-source": "npm:^7.25.9" - "@types/babel__core": "npm:^7.20.5" - react-refresh: "npm:^0.14.2" +"@types/react-dom@npm:^19.1.9": + version: 19.1.9 + resolution: "@types/react-dom@npm:19.1.9" peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - checksum: 10c0/38a47a1dbafae0b97142943d83ee3674cb3331153a60b1a3fd29d230c12c9dfe63b7c345b231a3450168ed8a9375a9a1a253c3d85e9efdc19478c0d56b98496c + "@types/react": ^19.0.0 + checksum: 10c0/34c8dda86c1590b3ef0e7ecd38f9663a66ba2dd69113ba74fb0adc36b83bbfb8c94c1487a2505282a5f7e5e000d2ebf36f4c0fd41b3b672f5178fd1d4f1f8f58 languageName: node linkType: hard -"@volar/language-core@npm:2.4.5, @volar/language-core@npm:~2.4.1": - version: 2.4.5 - resolution: "@volar/language-core@npm:2.4.5" +"@types/react@npm:^19.1.12": + version: 19.1.12 + resolution: "@types/react@npm:19.1.12" dependencies: - "@volar/source-map": "npm:2.4.5" - checksum: 10c0/aea4b6e5874aede72e6f49892ebd6d09412e3bee70f38e2668729be566f2861d57caf0ef43921f591ef37b01a3b56c2837268295e3027e2d2dc30c8977328c8c + csstype: "npm:^3.0.2" + checksum: 10c0/e35912b43da0caaab5252444bab87a31ca22950cde2822b3b3dc32e39c2d42dad1a4cf7b5dde9783aa2d007f0b2cba6ab9563fc6d2dbcaaa833b35178118767c languageName: node linkType: hard -"@volar/source-map@npm:2.4.5": - version: 2.4.5 - resolution: "@volar/source-map@npm:2.4.5" - checksum: 10c0/f18dadca0db3b9fcf25e4b3e69d820a183ba449c54a70bba0b33a752ab659b713109b1be7f1e379370cdb47f4e171e84d827e2276f834730decd5cf8c68de79d +"@types/resolve@npm:^1.20.2": + version: 1.20.6 + resolution: "@types/resolve@npm:1.20.6" + checksum: 10c0/a9b0549d816ff2c353077365d865a33655a141d066d0f5a3ba6fd4b28bc2f4188a510079f7c1f715b3e7af505a27374adce2a5140a3ece2a059aab3d6e1a4244 languageName: node linkType: hard -"@volar/typescript@npm:^2.4.4": - version: 2.4.5 - resolution: "@volar/typescript@npm:2.4.5" +"@typescript-eslint/project-service@npm:8.43.0": + version: 8.43.0 + resolution: "@typescript-eslint/project-service@npm:8.43.0" dependencies: - "@volar/language-core": "npm:2.4.5" + "@typescript-eslint/tsconfig-utils": "npm:^8.43.0" + "@typescript-eslint/types": "npm:^8.43.0" + debug: "npm:^4.3.4" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/c9058b5fbf9642c35a303641e4ff2d0df1ddac337275bab84b56167f1019fbcb7e69959239fed82e53c747f58d6ee4c1859cf5b018803cba1b1aab430439d728 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:8.43.0": + version: 8.43.0 + resolution: "@typescript-eslint/scope-manager@npm:8.43.0" + dependencies: + "@typescript-eslint/types": "npm:8.43.0" + "@typescript-eslint/visitor-keys": "npm:8.43.0" + checksum: 10c0/f87b3c3a5d3ad18326945288fa5b9b9fa662d87f466dc159e1514e00e359e830b80557f213acb3d23d5d600826b4cc4cfa5d2d479f8aba1b9834df19a640a779 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.43.0, @typescript-eslint/tsconfig-utils@npm:^8.43.0": + version: 8.43.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.43.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/b3a472368ad31e31e58ef019f6afec7387f5885e3fd423c71f3910b6d6b767324fde8bd60bec2e7505cc130317ece7fbc91314c44cdfea74ff76b5039bf26d52 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.43.0, @typescript-eslint/types@npm:^8.43.0": + version: 8.43.0 + resolution: "@typescript-eslint/types@npm:8.43.0" + checksum: 10c0/60d19b695affce128fe1076ebe4cff7e05d38dd50155d653fc9e995eafa56c299fd49ad4d9d2997f118a75fb57e3ca18001623bc3ef3fa0111f863079203e4b2 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.43.0": + version: 8.43.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.43.0" + dependencies: + "@typescript-eslint/project-service": "npm:8.43.0" + "@typescript-eslint/tsconfig-utils": "npm:8.43.0" + "@typescript-eslint/types": "npm:8.43.0" + "@typescript-eslint/visitor-keys": "npm:8.43.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/184ba925067d7fbcb377450195a89511f030a49d080e27058fa78078a069d86c1936b1a82ce6f19ff24c30c4de8b779deb050c36b06db5372c95fc7e5be7115a + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^8.8.1": + version: 8.43.0 + resolution: "@typescript-eslint/utils@npm:8.43.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.7.0" + "@typescript-eslint/scope-manager": "npm:8.43.0" + "@typescript-eslint/types": "npm:8.43.0" + "@typescript-eslint/typescript-estree": "npm:8.43.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/42fc8c60551361d80b5c53b303ba8cd20cf914665168416ad0a278cd44aae587311af9e4461f92ed28b5f36091d275a0e9974482d5e9ba95fc00108a537cdd36 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:8.43.0": + version: 8.43.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.43.0" + dependencies: + "@typescript-eslint/types": "npm:8.43.0" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/5d576eaf7bea41933ba726f4b24410bd3fc2521ef286967c3dc630c6a90fabff2a2d7c4d12cb841d3f946d2e5e6fb2605e7edd84e3360308fe379dbf2b8dc2fa + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:^5.0.2": + version: 5.0.2 + resolution: "@vitejs/plugin-react@npm:5.0.2" + dependencies: + "@babel/core": "npm:^7.28.3" + "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" + "@rolldown/pluginutils": "npm:1.0.0-beta.34" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.17.0" + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + checksum: 10c0/6b02478498d8095b4c5b688b457f8ff35c3274489399f79cf412c2d68213c5e7796d245de27093ccf91b4fb4b644a31e9a759d91caa1ba62da105be3875fc6dd + languageName: node + linkType: hard + +"@vitest/expect@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/expect@npm:3.2.4" + dependencies: + "@types/chai": "npm:^5.2.2" + "@vitest/spy": "npm:3.2.4" + "@vitest/utils": "npm:3.2.4" + chai: "npm:^5.2.0" + tinyrainbow: "npm:^2.0.0" + checksum: 10c0/7586104e3fd31dbe1e6ecaafb9a70131e4197dce2940f727b6a84131eee3decac7b10f9c7c72fa5edbdb68b6f854353bd4c0fa84779e274207fb7379563b10db + languageName: node + linkType: hard + +"@vitest/mocker@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/mocker@npm:3.2.4" + dependencies: + "@vitest/spy": "npm:3.2.4" + estree-walker: "npm:^3.0.3" + magic-string: "npm:^0.30.17" + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 10c0/f7a4aea19bbbf8f15905847ee9143b6298b2c110f8b64789224cb0ffdc2e96f9802876aa2ca83f1ec1b6e1ff45e822abb34f0054c24d57b29ab18add06536ccd + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/pretty-format@npm:3.2.4" + dependencies: + tinyrainbow: "npm:^2.0.0" + checksum: 10c0/5ad7d4278e067390d7d633e307fee8103958806a419ca380aec0e33fae71b44a64415f7a9b4bc11635d3c13d4a9186111c581d3cef9c65cc317e68f077456887 + languageName: node + linkType: hard + +"@vitest/spy@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/spy@npm:3.2.4" + dependencies: + tinyspy: "npm:^4.0.3" + checksum: 10c0/6ebf0b4697dc238476d6b6a60c76ba9eb1dd8167a307e30f08f64149612fd50227682b876420e4c2e09a76334e73f72e3ebf0e350714dc22474258292e202024 + languageName: node + linkType: hard + +"@vitest/utils@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/utils@npm:3.2.4" + dependencies: + "@vitest/pretty-format": "npm:3.2.4" + loupe: "npm:^3.1.4" + tinyrainbow: "npm:^2.0.0" + checksum: 10c0/024a9b8c8bcc12cf40183c246c244b52ecff861c6deb3477cbf487ac8781ad44c68a9c5fd69f8c1361878e55b97c10d99d511f2597f1f7244b5e5101d028ba64 + languageName: node + linkType: hard + +"@volar/language-core@npm:2.4.23, @volar/language-core@npm:~2.4.11": + version: 2.4.23 + resolution: "@volar/language-core@npm:2.4.23" + dependencies: + "@volar/source-map": "npm:2.4.23" + checksum: 10c0/1b8d60c7c0faa29ef5ec46dd2b673227592d0697753767e4df088f7c2d93843828116fe59472bb9d604ba653400be32a538e985730844b1af4f42a7075e62049 + languageName: node + linkType: hard + +"@volar/source-map@npm:2.4.23": + version: 2.4.23 + resolution: "@volar/source-map@npm:2.4.23" + checksum: 10c0/08af690093b811d0a37bdd8d306755b4e7f1535b67625c26f6fa6eb9ae081e24c55dabc8231ce8856aa1b731a5ac137b3f0449b34c093923c3545afdbe462c7a + languageName: node + linkType: hard + +"@volar/typescript@npm:^2.4.11": + version: 2.4.23 + resolution: "@volar/typescript@npm:2.4.23" + dependencies: + "@volar/language-core": "npm:2.4.23" path-browserify: "npm:^1.0.1" vscode-uri: "npm:^3.0.8" - checksum: 10c0/c29acf9ed78c83f1f8bc579d7fff7f5d52d4021cb4f6a72f14832ba8b957c29511711c78a796ca57bd1ee4ef475659a58b0de4948d29c4d1217cc08f0bf181ff + checksum: 10c0/dbb449b66e627a75f8f6df98b3210c32edff62747a12d1e6237a6dc2a75f26432833d4d3646d6fbd60ed21fa52d7e342437377973b80cf4bbeacee1980ffd0cb languageName: node linkType: hard -"@vue/compiler-core@npm:3.5.10": - version: 3.5.10 - resolution: "@vue/compiler-core@npm:3.5.10" +"@vue/compiler-core@npm:3.5.21": + version: 3.5.21 + resolution: "@vue/compiler-core@npm:3.5.21" dependencies: - "@babel/parser": "npm:^7.25.3" - "@vue/shared": "npm:3.5.10" + "@babel/parser": "npm:^7.28.3" + "@vue/shared": "npm:3.5.21" entities: "npm:^4.5.0" estree-walker: "npm:^2.0.2" - source-map-js: "npm:^1.2.0" - checksum: 10c0/fb84f4cca8d9890289ac2e880edab8bd07231b0255cbc5578d99a6c07c299ae80a328eb0be1f1ab1d211d80d7d5fe156e573c81b3b30956257eb78f1ac7ecf8c + source-map-js: "npm:^1.2.1" + checksum: 10c0/b8fa1003551815a27381fb242cf4e52cbb22571009506be91264e288a6b69c24a9d31f8aa76087fffce44d56a71f742953c765d32e55c5b4defd97be904b45b1 languageName: node linkType: hard -"@vue/compiler-dom@npm:^3.4.0": - version: 3.5.10 - resolution: "@vue/compiler-dom@npm:3.5.10" +"@vue/compiler-dom@npm:^3.5.0": + version: 3.5.21 + resolution: "@vue/compiler-dom@npm:3.5.21" dependencies: - "@vue/compiler-core": "npm:3.5.10" - "@vue/shared": "npm:3.5.10" - checksum: 10c0/30c9a0ee414b5d77d8479a17f7cf2e613a351e322edf039ffa827bb93d97750a1002089747f85cf93a9155748df898287417f52473cab17caf6507716cff570e + "@vue/compiler-core": "npm:3.5.21" + "@vue/shared": "npm:3.5.21" + checksum: 10c0/84c5eb1a99f2c73dfc5596bce3ce3672b30712393b4399e5906d391939e85c0e0c756e344e8d8fdd4b853186fd9ae64786927ecf8b76e12ad47b783c92bcbe55 languageName: node linkType: hard @@ -1057,15 +1560,15 @@ __metadata: languageName: node linkType: hard -"@vue/language-core@npm:2.1.6": - version: 2.1.6 - resolution: "@vue/language-core@npm:2.1.6" +"@vue/language-core@npm:2.2.0": + version: 2.2.0 + resolution: "@vue/language-core@npm:2.2.0" dependencies: - "@volar/language-core": "npm:~2.4.1" - "@vue/compiler-dom": "npm:^3.4.0" + "@volar/language-core": "npm:~2.4.11" + "@vue/compiler-dom": "npm:^3.5.0" "@vue/compiler-vue2": "npm:^2.7.16" - "@vue/shared": "npm:^3.4.0" - computeds: "npm:^0.0.1" + "@vue/shared": "npm:^3.5.0" + alien-signals: "npm:^0.4.9" minimatch: "npm:^9.0.3" muggle-string: "npm:^0.4.1" path-browserify: "npm:^1.0.1" @@ -1074,14 +1577,14 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/bad09d54929f09d0d809f13ac1a3ccf0ab0d848c11c420e83a951f7fecfe15537caf95fc55756770a4d79f1fa6b4488bf2846afaba6854746fbb349cbb294bed + checksum: 10c0/1c44cc4067266bbc825af358a867aed455963a08c160cd9df9a47571fd917a87d9de9bdea6149877e0c8309a6cf39f263e7cf2fbadeceba47a5a158f392151b2 languageName: node linkType: hard -"@vue/shared@npm:3.5.10, @vue/shared@npm:^3.4.0": - version: 3.5.10 - resolution: "@vue/shared@npm:3.5.10" - checksum: 10c0/cb3d06b6ba2026b6baa57a1f60110546cb1530e81d970fc770901c6a61adfe8a705d43cafb317f3b9b7c8f8f152b640a1a7a56e964bee7777c646c69b15e1e3f +"@vue/shared@npm:3.5.21, @vue/shared@npm:^3.5.0": + version: 3.5.21 + resolution: "@vue/shared@npm:3.5.21" + checksum: 10c0/fbaf2e973d232ccd6d9afd3440510e2436c5e918f6634eb3e0f95d148041f7b9347bcb349db6265f2ee92e5ffd0e6751bdc649698c52f9179b45d93f68473706 languageName: node linkType: hard @@ -1092,12 +1595,21 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.3": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn@npm:^8.14.0, acorn@npm:^8.15.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" bin: acorn: bin/acorn - checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 + checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec languageName: node linkType: hard @@ -1146,6 +1658,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + "ajv@npm:^8.0.0": version: 8.17.1 resolution: "ajv@npm:8.17.1" @@ -1182,6 +1706,13 @@ __metadata: languageName: node linkType: hard +"alien-signals@npm:^0.4.9": + version: 0.4.14 + resolution: "alien-signals@npm:0.4.14" + checksum: 10c0/5abb3377bcaf6b3819e950084b3ebd022ad90210105afb450c89dc347e80e28da441bf34858a57ea122abe7603e552ddbad80dc597c8f02a0a5206c5fb9c20cb + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -1196,7 +1727,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^4.0.0": +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: @@ -1212,6 +1743,13 @@ __metadata: languageName: node linkType: hard +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + "argparse@npm:~1.0.9": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -1221,6 +1759,29 @@ __metadata: languageName: node linkType: hard +"aria-query@npm:^5.0.0": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e + languageName: node + linkType: hard + +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: 10c0/bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8 + languageName: node + linkType: hard + +"ast-types@npm:^0.16.1": + version: 0.16.1 + resolution: "ast-types@npm:0.16.1" + dependencies: + tslib: "npm:^2.0.1" + checksum: 10c0/abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -1228,13 +1789,22 @@ __metadata: languageName: node linkType: hard +"better-opn@npm:^3.0.2": + version: 3.0.2 + resolution: "better-opn@npm:3.0.2" + dependencies: + open: "npm:^8.0.4" + checksum: 10c0/911ef25d44da75aabfd2444ce7a4294a8000ebcac73068c04a60298b0f7c7506b60421aa4cd02ac82502fb42baaff7e4892234b51e6923eded44c5a11185f2f5 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 languageName: node linkType: hard @@ -1247,6 +1817,15 @@ __metadata: languageName: node linkType: hard +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + "browserslist@npm:^4.24.0": version: 4.24.2 resolution: "browserslist@npm:4.24.2" @@ -1281,6 +1860,13 @@ __metadata: languageName: node linkType: hard +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001669": version: 1.0.30001684 resolution: "caniuse-lite@npm:1.0.30001684" @@ -1288,6 +1874,36 @@ __metadata: languageName: node linkType: hard +"chai@npm:^5.2.0": + version: 5.3.3 + resolution: "chai@npm:5.3.3" + dependencies: + assertion-error: "npm:^2.0.1" + check-error: "npm:^2.1.1" + deep-eql: "npm:^5.0.1" + loupe: "npm:^3.1.0" + pathval: "npm:^2.0.0" + checksum: 10c0/b360fd4d38861622e5010c2f709736988b05c7f31042305fa3f4e9911f6adb80ccfb4e302068bf8ed10e835c2e2520cba0f5edc13d878b886987e5aa62483f53 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"check-error@npm:^2.1.1": + version: 2.1.1 + resolution: "check-error@npm:2.1.1" + checksum: 10c0/979f13eccab306cf1785fa10941a590b4e7ea9916ea2a4f8c87f0316fc3eab07eabefb6e587424ef0f88cbcd3805791f172ea739863ca3d7ce2afc54641c7f0e + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -1325,13 +1941,6 @@ __metadata: languageName: node linkType: hard -"computeds@npm:^0.0.1": - version: 0.0.1 - resolution: "computeds@npm:0.0.1" - checksum: 10c0/8a8736f1f43e4a99286519785d71a10ece8f444a2fa1fc2fe1f03dedf63f3477b45094002c85a2826f7631759c9f5a00b4ace47456997f253073fc525e8983de - languageName: node - linkType: hard - "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -1339,10 +1948,17 @@ __metadata: languageName: node linkType: hard -"confbox@npm:^0.1.7": - version: 0.1.7 - resolution: "confbox@npm:0.1.7" - checksum: 10c0/18b40c2f652196a833f3f1a5db2326a8a579cd14eacabfe637e4fc8cb9b68d7cf296139a38c5e7c688ce5041bf46f9adce05932d43fde44cf7e012840b5da111 +"confbox@npm:^0.1.8": + version: 0.1.8 + resolution: "confbox@npm:0.1.8" + checksum: 10c0/fc2c68d97cb54d885b10b63e45bd8da83a8a71459d3ecf1825143dd4c7f9f1b696b3283e07d9d12a144c1301c2ebc7842380bdf0014e55acc4ae1c9550102418 + languageName: node + linkType: hard + +"confbox@npm:^0.2.2": + version: 0.2.2 + resolution: "confbox@npm:0.2.2" + checksum: 10c0/7c246588d533d31e8cdf66cb4701dff6de60f9be77ab54c0d0338e7988750ac56863cc0aca1b3f2046f45ff223a765d3e5d4977a7674485afcd37b6edf3fd129 languageName: node linkType: hard @@ -1360,15 +1976,6 @@ __metadata: languageName: node linkType: hard -"copy-anything@npm:^2.0.1": - version: 2.0.6 - resolution: "copy-anything@npm:2.0.6" - dependencies: - is-what: "npm:^3.14.1" - checksum: 10c0/2702998a8cc015f9917385b7f16b0d85f1f6e5e2fd34d99f14df584838f492f49aa0c390d973684c687e895c5c58d08b308a0400ac3e1e3d6fa1e5884a5402ad - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.0": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -1380,6 +1987,24 @@ __metadata: languageName: node linkType: hard +"cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"css.escape@npm:^1.5.1": + version: 1.5.1 + resolution: "css.escape@npm:1.5.1" + checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 + languageName: node + linkType: hard + "csstype@npm:^3.0.2": version: 3.1.3 resolution: "csstype@npm:3.1.3" @@ -1394,7 +2019,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.4, debug@npm:^4.3.6": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.4": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -1406,6 +2031,55 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.3.2, debug@npm:^4.4.0": + version: 4.4.1 + resolution: "debug@npm:4.4.1" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 + languageName: node + linkType: hard + +"deep-eql@npm:^5.0.1": + version: 5.0.2 + resolution: "deep-eql@npm:5.0.2" + checksum: 10c0/7102cf3b7bb719c6b9c0db2e19bf0aa9318d141581befe8c7ce8ccd39af9eaa4346e5e05adef7f9bd7015da0f13a3a25dcfe306ef79dc8668aedbecb658dd247 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.6.3": + version: 0.6.3 + resolution: "dom-accessibility-api@npm:0.6.3" + checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -1464,45 +2138,47 @@ __metadata: languageName: node linkType: hard -"errno@npm:^0.1.1": - version: 0.1.8 - resolution: "errno@npm:0.1.8" +"esbuild-register@npm:^3.5.0": + version: 3.6.0 + resolution: "esbuild-register@npm:3.6.0" dependencies: - prr: "npm:~1.0.1" - bin: - errno: cli.js - checksum: 10c0/83758951967ec57bf00b5f5b7dc797e6d65a6171e57ea57adcf1bd1a0b477fd9b5b35fae5be1ff18f4090ed156bce1db749fe7e317aac19d485a5d150f6a4936 + debug: "npm:^4.3.4" + peerDependencies: + esbuild: ">=0.12 <1" + checksum: 10c0/77193b7ca32ba9f81b35ddf3d3d0138efb0b1429d71b39480cfee932e1189dd2e492bd32bf04a4d0bc3adfbc7ec7381ceb5ffd06efe35f3e70904f1f686566d5 languageName: node linkType: hard -"esbuild@npm:^0.24.0": - version: 0.24.0 - resolution: "esbuild@npm:0.24.0" +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0, esbuild@npm:^0.25.0": + version: 0.25.9 + resolution: "esbuild@npm:0.25.9" dependencies: - "@esbuild/aix-ppc64": "npm:0.24.0" - "@esbuild/android-arm": "npm:0.24.0" - "@esbuild/android-arm64": "npm:0.24.0" - "@esbuild/android-x64": "npm:0.24.0" - "@esbuild/darwin-arm64": "npm:0.24.0" - "@esbuild/darwin-x64": "npm:0.24.0" - "@esbuild/freebsd-arm64": "npm:0.24.0" - "@esbuild/freebsd-x64": "npm:0.24.0" - "@esbuild/linux-arm": "npm:0.24.0" - "@esbuild/linux-arm64": "npm:0.24.0" - "@esbuild/linux-ia32": "npm:0.24.0" - "@esbuild/linux-loong64": "npm:0.24.0" - "@esbuild/linux-mips64el": "npm:0.24.0" - "@esbuild/linux-ppc64": "npm:0.24.0" - "@esbuild/linux-riscv64": "npm:0.24.0" - "@esbuild/linux-s390x": "npm:0.24.0" - "@esbuild/linux-x64": "npm:0.24.0" - "@esbuild/netbsd-x64": "npm:0.24.0" - "@esbuild/openbsd-arm64": "npm:0.24.0" - "@esbuild/openbsd-x64": "npm:0.24.0" - "@esbuild/sunos-x64": "npm:0.24.0" - "@esbuild/win32-arm64": "npm:0.24.0" - "@esbuild/win32-ia32": "npm:0.24.0" - "@esbuild/win32-x64": "npm:0.24.0" + "@esbuild/aix-ppc64": "npm:0.25.9" + "@esbuild/android-arm": "npm:0.25.9" + "@esbuild/android-arm64": "npm:0.25.9" + "@esbuild/android-x64": "npm:0.25.9" + "@esbuild/darwin-arm64": "npm:0.25.9" + "@esbuild/darwin-x64": "npm:0.25.9" + "@esbuild/freebsd-arm64": "npm:0.25.9" + "@esbuild/freebsd-x64": "npm:0.25.9" + "@esbuild/linux-arm": "npm:0.25.9" + "@esbuild/linux-arm64": "npm:0.25.9" + "@esbuild/linux-ia32": "npm:0.25.9" + "@esbuild/linux-loong64": "npm:0.25.9" + "@esbuild/linux-mips64el": "npm:0.25.9" + "@esbuild/linux-ppc64": "npm:0.25.9" + "@esbuild/linux-riscv64": "npm:0.25.9" + "@esbuild/linux-s390x": "npm:0.25.9" + "@esbuild/linux-x64": "npm:0.25.9" + "@esbuild/netbsd-arm64": "npm:0.25.9" + "@esbuild/netbsd-x64": "npm:0.25.9" + "@esbuild/openbsd-arm64": "npm:0.25.9" + "@esbuild/openbsd-x64": "npm:0.25.9" + "@esbuild/openharmony-arm64": "npm:0.25.9" + "@esbuild/sunos-x64": "npm:0.25.9" + "@esbuild/win32-arm64": "npm:0.25.9" + "@esbuild/win32-ia32": "npm:0.25.9" + "@esbuild/win32-x64": "npm:0.25.9" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -1538,12 +2214,16 @@ __metadata: optional: true "@esbuild/linux-x64": optional: true + "@esbuild/netbsd-arm64": + optional: true "@esbuild/netbsd-x64": optional: true "@esbuild/openbsd-arm64": optional: true "@esbuild/openbsd-x64": optional: true + "@esbuild/openharmony-arm64": + optional: true "@esbuild/sunos-x64": optional: true "@esbuild/win32-arm64": @@ -1554,7 +2234,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/9f1aadd8d64f3bff422ae78387e66e51a5e09de6935a6f987b6e4e189ed00fdc2d1bc03d2e33633b094008529c8b6e06c7ad1a9782fb09fec223bf95998c0683 + checksum: 10c0/aaa1284c75fcf45c82f9a1a117fe8dc5c45628e3386bda7d64916ae27730910b51c5aec7dd45a6ba19256be30ba2935e64a8f011a3f0539833071e06bf76d5b3 languageName: node linkType: hard @@ -1565,6 +2245,145 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"eslint-plugin-storybook@npm:^9.1.5": + version: 9.1.5 + resolution: "eslint-plugin-storybook@npm:9.1.5" + dependencies: + "@typescript-eslint/utils": "npm:^8.8.1" + peerDependencies: + eslint: ">=8" + storybook: ^9.1.5 + checksum: 10c0/aa8f0a3a7b4d8e90c958889603351ca62837af13f8ac596c643a47f7197d586f93a8d9525d1e11b449d7579dc1de5315fdb8f97c0d6a18eac81fdb4e815961df + languageName: node + linkType: hard + +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + +"eslint@npm:^9.35.0": + version: 9.35.0 + resolution: "eslint@npm:9.35.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.8.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.21.0" + "@eslint/config-helpers": "npm:^0.3.1" + "@eslint/core": "npm:^0.15.2" + "@eslint/eslintrc": "npm:^3.3.1" + "@eslint/js": "npm:9.35.0" + "@eslint/plugin-kit": "npm:^0.3.5" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.6" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^8.4.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" + esquery: "npm:^1.5.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10c0/798c527520ccf62106f8cd210bd1db1f8eb1b0e7a56feb0a8b322bf3a1e6a0bc6dc3a414542c22b1b393d58d5e3cd0252c44c023049de9067b836450503a2f03 + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: "npm:^8.15.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b + languageName: node + linkType: hard + +"esprima@npm:~4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + "estree-walker@npm:^2.0.2": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" @@ -1572,6 +2391,22 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -1579,6 +2414,13 @@ __metadata: languageName: node linkType: hard +"exsolve@npm:^1.0.7": + version: 1.0.7 + resolution: "exsolve@npm:1.0.7" + checksum: 10c0/4479369d0bd84bb7e0b4f5d9bc18d26a89b6dbbbccd73f9d383d14892ef78ddbe159e01781055342f83dc00ebe90044036daf17ddf55cc21e2cac6609aa15631 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -1586,6 +2428,33 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + "fast-uri@npm:^3.0.1": version: 3.0.2 resolution: "fast-uri@npm:3.0.2" @@ -1593,6 +2462,83 @@ __metadata: languageName: node linkType: hard +"fastq@npm:^1.6.0": + version: 1.19.1 + resolution: "fastq@npm:1.19.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630 + languageName: node + linkType: hard + +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f + languageName: node + linkType: hard + +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"find-up@npm:^7.0.0": + version: 7.0.0 + resolution: "find-up@npm:7.0.0" + dependencies: + locate-path: "npm:^7.2.0" + path-exists: "npm:^5.0.0" + unicorn-magic: "npm:^0.1.0" + checksum: 10c0/e6ee3e6154560bc0ab3bc3b7d1348b31513f9bdf49a5dd2e952495427d559fa48cdf33953e85a309a323898b43fa1bfbc8b80c880dfc16068384783034030008 + languageName: node + linkType: hard + +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 + languageName: node + linkType: hard + "foreground-child@npm:^3.1.0": version: 3.3.0 resolution: "foreground-child@npm:3.3.0" @@ -1603,14 +2549,14 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:~7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" +"fs-extra@npm:~11.3.0": + version: 11.3.1 + resolution: "fs-extra@npm:11.3.1" dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10c0/1943bb2150007e3739921b8d13d4109abdc3cc481e53b97b7ea7f77eda1c3c642e27ae49eac3af074e3496ea02fde30f411ef410c760c70a38b92e656e5da784 + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/61e5b7285b1ca72c68dfe1058b2514294a922683afac2a80aa90540f9bd85370763d675e3b408ef500077d355956fece3bd24b546790e261c3d3015967e2b2d9 languageName: node linkType: hard @@ -1665,7 +2611,25 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -1681,14 +2645,14 @@ __metadata: languageName: node linkType: hard -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -1747,7 +2711,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": +"iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -1756,12 +2720,20 @@ __metadata: languageName: node linkType: hard -"image-size@npm:~0.5.0": - version: 0.5.5 - resolution: "image-size@npm:0.5.5" - bin: - image-size: bin/image-size.js - checksum: 10c0/655204163af06732f483a9fe7cce9dff4a29b7b2e88f5c957a5852e8143fa750f5e54b1955a2ca83de99c5220dbd680002d0d4e09140b01433520f4d5a0b1f4c +"ignore@npm:^5.2.0": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec languageName: node linkType: hard @@ -1805,6 +2777,31 @@ __metadata: languageName: node linkType: hard +"is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -1812,6 +2809,15 @@ __metadata: languageName: node linkType: hard +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -1819,10 +2825,19 @@ __metadata: languageName: node linkType: hard -"is-what@npm:^3.14.1": - version: 3.14.1 - resolution: "is-what@npm:3.14.1" - checksum: 10c0/4b770b85454c877b6929a84fd47c318e1f8c2ff70fd72fd625bc3fde8e0c18a6e57345b6e7aa1ee9fbd1c608d27cfe885df473036c5c2e40cd2187250804a2c7 +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: "npm:^2.0.0" + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e languageName: node linkType: hard @@ -1860,13 +2875,24 @@ __metadata: languageName: node linkType: hard -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": +"js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed languageName: node linkType: hard +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + "jsbn@npm:1.1.0": version: 1.1.0 resolution: "jsbn@npm:1.1.0" @@ -1883,6 +2909,20 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + "json-schema-traverse@npm:^1.0.0": version: 1.0.0 resolution: "json-schema-traverse@npm:1.0.0" @@ -1890,7 +2930,14 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.3": +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -1899,15 +2946,25 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" +"jsonfile@npm:^6.0.1": + version: 6.2.0 + resolution: "jsonfile@npm:6.2.0" dependencies: graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" dependenciesMeta: graceful-fs: optional: true - checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 + checksum: 10c0/7f4f43b08d1869ded8a6822213d13ae3b99d651151d77efd1557ced0889c466296a7d9684e397bd126acf5eb2cfcb605808c3e681d0fdccd2fe5a04b47e76c0d + languageName: node + linkType: hard + +"keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e languageName: node linkType: hard @@ -1918,48 +2975,49 @@ __metadata: languageName: node linkType: hard -"less@npm:^4.2.0": - version: 4.2.0 - resolution: "less@npm:4.2.0" +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" dependencies: - copy-anything: "npm:^2.0.1" - errno: "npm:^0.1.1" - graceful-fs: "npm:^4.1.2" - image-size: "npm:~0.5.0" - make-dir: "npm:^2.1.0" - mime: "npm:^1.4.1" - needle: "npm:^3.1.0" - parse-node-version: "npm:^1.0.1" - source-map: "npm:~0.6.0" - tslib: "npm:^2.3.0" - dependenciesMeta: - errno: - optional: true - graceful-fs: - optional: true - image-size: - optional: true - make-dir: - optional: true - mime: - optional: true - needle: - optional: true - source-map: - optional: true - bin: - lessc: bin/lessc - checksum: 10c0/8593d547a3e7651555a2c51bac8b148b37ec14e75e6e28ee4ddf27eb49cbcb4b558e50cdefa97d6942a8120fc744ace0d61c43d4c246e098c8828269b14cf5fb + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e languageName: node linkType: hard -"local-pkg@npm:^0.5.0": - version: 0.5.0 - resolution: "local-pkg@npm:0.5.0" +"local-pkg@npm:^1.0.0": + version: 1.1.2 + resolution: "local-pkg@npm:1.1.2" dependencies: - mlly: "npm:^1.4.2" - pkg-types: "npm:^1.0.3" - checksum: 10c0/f61cbd00d7689f275558b1a45c7ff2a3ddf8472654123ed880215677b9adfa729f1081e50c27ffb415cdb9fa706fb755fec5e23cdd965be375c8059e87ff1cc9 + mlly: "npm:^1.7.4" + pkg-types: "npm:^2.3.0" + quansync: "npm:^0.2.11" + checksum: 10c0/1bcfcc5528dea95cba3caa478126a348d3985aad9f69ecf7802c13efef90897e1c5ff7851974332c5e6d4a4698efe610fef758a068c8bc3feb5322aeb35d5993 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"locate-path@npm:^7.2.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: "npm:^6.0.0" + checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 languageName: node linkType: hard @@ -1970,14 +3028,10 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.1.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: "npm:^3.0.0 || ^4.0.0" - bin: - loose-envify: cli.js - checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e +"loupe@npm:^3.1.0, loupe@npm:^3.1.4": + version: 3.2.1 + resolution: "loupe@npm:3.2.1" + checksum: 10c0/910c872cba291309664c2d094368d31a68907b6f5913e989d301b5c25f30e97d76d77f23ab3bf3b46d0f601ff0b6af8810c10c31b91d2c6b2f132809ca2cc705 languageName: node linkType: hard @@ -2006,22 +3060,12 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.11": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.17": + version: 0.30.19 + resolution: "magic-string@npm:0.30.19" dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/b9eb370773d0bd90ca11a848753409d8e5309b1ad56d2a1aa49d6649da710a6d2fe7237ad1a643c5a5d3800de2b9946ed9690acdfc00e6cc1aeafff3ab1752c4 - languageName: node - linkType: hard - -"make-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "make-dir@npm:2.1.0" - dependencies: - pify: "npm:^4.0.1" - semver: "npm:^5.6.0" - checksum: 10c0/ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c0/db23fd2e2ee98a1aeb88a4cdb2353137fcf05819b883c856dd79e4c7dfb25151e2a5a4d5dbd88add5e30ed8ae5c51bcf4accbc6becb75249d924ec7b4fbcae27 languageName: node linkType: hard @@ -2045,12 +3089,45 @@ __metadata: languageName: node linkType: hard -"mime@npm:^1.4.1": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"min-indent@npm:^1.0.0, min-indent@npm:^1.0.1": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c + languageName: node + linkType: hard + +"minimatch@npm:10.0.3": + version: 10.0.3 + resolution: "minimatch@npm:10.0.3" + dependencies: + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10c0/e43e4a905c5d70ac4cec8530ceaeccb9c544b1ba8ac45238e2a78121a01c17ff0c373346472d221872563204eabe929ad02669bb575cb1f0cc30facab369f70f + languageName: node + linkType: hard + +"minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 languageName: node linkType: hard @@ -2063,12 +3140,10 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:~3.0.3": - version: 3.0.8 - resolution: "minimatch@npm:3.0.8" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c0/72b226f452dcfb5075255f53534cb83fc25565b909e79b9be4fad463d735cb1084827f7013ff41d050e77ee6e474408c6073473edd2fb72c2fd630cfb0acc6ad +"minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 languageName: node linkType: hard @@ -2165,15 +3240,15 @@ __metadata: languageName: node linkType: hard -"mlly@npm:^1.4.2, mlly@npm:^1.7.1": - version: 1.7.1 - resolution: "mlly@npm:1.7.1" +"mlly@npm:^1.7.4": + version: 1.8.0 + resolution: "mlly@npm:1.8.0" dependencies: - acorn: "npm:^8.11.3" - pathe: "npm:^1.1.2" - pkg-types: "npm:^1.1.1" - ufo: "npm:^1.5.3" - checksum: 10c0/d836a7b0adff4d118af41fb93ad4d9e57f80e694a681185280ba220a4607603c19e86c80f9a6c57512b04280567f2599e3386081705c5b5fd74c9ddfd571d0fa + acorn: "npm:^8.15.0" + pathe: "npm:^2.0.3" + pkg-types: "npm:^1.3.1" + ufo: "npm:^1.6.1" + checksum: 10c0/f174b844ae066c71e9b128046677868e2e28694f0bbeeffbe760b2a9d8ff24de0748d0fde6fabe706700c1d2e11d3c0d7a53071b5ea99671592fac03364604ab languageName: node linkType: hard @@ -2191,24 +3266,19 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" +"nanoid@npm:^3.3.11": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" bin: nanoid: bin/nanoid.cjs - checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b languageName: node linkType: hard -"needle@npm:^3.1.0": - version: 3.3.1 - resolution: "needle@npm:3.3.1" - dependencies: - iconv-lite: "npm:^0.6.3" - sax: "npm:^1.2.4" - bin: - needle: bin/needle - checksum: 10c0/233b9315d47b735867d03e7a018fb665ee6cacf3a83b991b19538019cf42b538a3e85ca745c840b4c5e9a0ffdca76472f941363bf7c166214ae8cbc650fd4d39 +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 languageName: node linkType: hard @@ -2257,6 +3327,67 @@ __metadata: languageName: node linkType: hard +"open@npm:^8.0.4": + version: 8.4.2 + resolution: "open@npm:8.4.2" + dependencies: + define-lazy-prop: "npm:^2.0.0" + is-docker: "npm:^2.1.1" + is-wsl: "npm:^2.2.0" + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: "npm:^4.0.0" + checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -2273,10 +3404,12 @@ __metadata: languageName: node linkType: hard -"parse-node-version@npm:^1.0.1": +"parent-module@npm:^1.0.0": version: 1.0.1 - resolution: "parse-node-version@npm:1.0.1" - checksum: 10c0/999cd3d7da1425c2e182dce82b226c6dc842562d3ed79ec47f5c719c32a7f6c1a5352495b894fc25df164be7f2ede4224758255da9902ddef81f2b77ba46bb2c + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 languageName: node linkType: hard @@ -2287,6 +3420,20 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -2311,14 +3458,21 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.2": - version: 1.1.2 - resolution: "pathe@npm:1.1.2" - checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 +"pathe@npm:^2.0.1, pathe@npm:^2.0.3": + version: 2.0.3 + resolution: "pathe@npm:2.0.3" + checksum: 10c0/c118dc5a8b5c4166011b2b70608762e260085180bb9e33e80a50dcdb1e78c010b1624f4280c492c92b05fc276715a4c357d1f9edc570f8f1b3d90b6839ebaca1 languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": +"pathval@npm:^2.0.0": + version: 2.0.1 + resolution: "pathval@npm:2.0.1" + checksum: 10c0/460f4709479fbf2c45903a65655fc8f0a5f6d808f989173aeef5fdea4ff4f303dc13f7870303999add60ec49d4c14733895c0a869392e9866f1091fa64fd7581 + languageName: node + linkType: hard + +"picocolors@npm:^1.1.0": version: 1.1.0 resolution: "picocolors@npm:1.1.0" checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 @@ -2339,32 +3493,59 @@ __metadata: languageName: node linkType: hard -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf +"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 languageName: node linkType: hard -"pkg-types@npm:^1.0.3, pkg-types@npm:^1.1.1": - version: 1.2.0 - resolution: "pkg-types@npm:1.2.0" +"pkg-types@npm:^1.3.1": + version: 1.3.1 + resolution: "pkg-types@npm:1.3.1" dependencies: - confbox: "npm:^0.1.7" - mlly: "npm:^1.7.1" - pathe: "npm:^1.1.2" - checksum: 10c0/111cf6ad4235438821ea195a0d70570b1bd36a71d094d258349027c9c304dea8b4f9669c9f7ce813f9a48a02942fb0d7fe9809127dbe7bb4b18a8de71583a081 + confbox: "npm:^0.1.8" + mlly: "npm:^1.7.4" + pathe: "npm:^2.0.1" + checksum: 10c0/19e6cb8b66dcc66c89f2344aecfa47f2431c988cfa3366bdfdcfb1dd6695f87dcce37fbd90fe9d1605e2f4440b77f391e83c23255347c35cf84e7fd774d7fcea languageName: node linkType: hard -"postcss@npm:^8.4.49": - version: 8.4.49 - resolution: "postcss@npm:8.4.49" +"pkg-types@npm:^2.3.0": + version: 2.3.0 + resolution: "pkg-types@npm:2.3.0" dependencies: - nanoid: "npm:^3.3.7" + confbox: "npm:^0.2.2" + exsolve: "npm:^1.0.7" + pathe: "npm:^2.0.3" + checksum: 10c0/d2bbddc5b81bd4741e1529c08ef4c5f1542bbdcf63498b73b8e1d84cff71806d1b8b1577800549bb569cb7aa20056257677b979bff48c97967cba7e64f72ae12 + languageName: node + linkType: hard + +"postcss@npm:^8.5.6": + version: 8.5.6 + resolution: "postcss@npm:8.5.6" + dependencies: + nanoid: "npm:^3.3.11" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c0/f1b3f17aaf36d136f59ec373459f18129908235e65dbdc3aee5eef8eba0756106f52de5ec4682e29a2eab53eb25170e7e871b3e4b52a8f1de3d344a514306be3 + checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier@npm:^3.6.2": + version: 3.6.2 + resolution: "prettier@npm:3.6.2" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/488cb2f2b99ec13da1e50074912870217c11edaddedeadc649b1244c749d15ba94e846423d062e2c4c9ae683e2d65f754de28889ba06e697ac4f988d44f45812 languageName: node linkType: hard @@ -2385,13 +3566,6 @@ __metadata: languageName: node linkType: hard -"prr@npm:~1.0.1": - version: 1.0.1 - resolution: "prr@npm:1.0.1" - checksum: 10c0/5b9272c602e4f4472a215e58daff88f802923b84bc39c8860376bb1c0e42aaf18c25d69ad974bd06ec6db6f544b783edecd5502cd3d184748d99080d68e4be5f - languageName: node - linkType: hard - "punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -2399,86 +3573,120 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^18.3.1": - version: 18.3.1 - resolution: "react-dom@npm:18.3.1" - dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.2" +"quansync@npm:^0.2.11": + version: 0.2.11 + resolution: "quansync@npm:0.2.11" + checksum: 10c0/cb9a1f8ebce074069f2f6a78578873ffedd9de9f6aa212039b44c0870955c04a71c3b1311b5d97f8ac2f2ec476de202d0a5c01160cb12bc0a11b7ef36d22ef56 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"react-docgen-typescript@npm:^2.2.2": + version: 2.4.0 + resolution: "react-docgen-typescript@npm:2.4.0" peerDependencies: - react: ^18.3.1 - checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 + typescript: ">= 4.3.x" + checksum: 10c0/18e3e1c80d28abcdd72e62261d2f70b0904d9b088f9c2ebe485ffee5e46f5735208bc174a20ed2772112b3ca6432b5f3d5f0ac345872fe76e541f84543e49e50 languageName: node linkType: hard -"react-error-boundary@npm:^4.0.13": - version: 4.0.13 - resolution: "react-error-boundary@npm:4.0.13" +"react-docgen@npm:^8.0.0": + version: 8.0.1 + resolution: "react-docgen@npm:8.0.1" dependencies: - "@babel/runtime": "npm:^7.12.5" + "@babel/core": "npm:^7.28.0" + "@babel/traverse": "npm:^7.28.0" + "@babel/types": "npm:^7.28.2" + "@types/babel__core": "npm:^7.20.5" + "@types/babel__traverse": "npm:^7.20.7" + "@types/doctrine": "npm:^0.0.9" + "@types/resolve": "npm:^1.20.2" + doctrine: "npm:^3.0.0" + resolve: "npm:^1.22.1" + strip-indent: "npm:^4.0.0" + checksum: 10c0/bf7c4e12b4945433cf2a948021b661279bac75da50eb51dc5fd0acfa9b9e97c608614b474effc574b72df6acb956341b9d68e73945ece20bd6a384634f5924e7 + languageName: node + linkType: hard + +"react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0, react-dom@npm:^19.1.1": + version: 19.1.1 + resolution: "react-dom@npm:19.1.1" + dependencies: + scheduler: "npm:^0.26.0" peerDependencies: - react: ">=16.13.1" - checksum: 10c0/6f3e0e4d7669f680ccf49c08c9571519c6e31f04dcfc30a765a7136c7e6fbbbe93423dd5a9fce12107f8166e54133e9dd5c2079a00c7a38201ac811f7a28b8e7 + react: ^19.1.1 + checksum: 10c0/8c91198510521299c56e4e8d5e3a4508b2734fb5e52f29eeac33811de64e76fe586ad32c32182e2e84e070d98df67125da346c3360013357228172dbcd20bcdd languageName: node linkType: hard -"react-merge-refs@npm:^2.1.1": - version: 2.1.1 - resolution: "react-merge-refs@npm:2.1.1" - checksum: 10c0/b68cbc4ea51fd96f77247733388738630769d928f32958e63262ce43dff10c6b20f18a0483c6a640a1ffba48f32be26059d4ee9711881cacc63297b01311c8f6 +"react-refresh@npm:^0.17.0": + version: 0.17.0 + resolution: "react-refresh@npm:0.17.0" + checksum: 10c0/002cba940384c9930008c0bce26cac97a9d5682bc623112c2268ba0c155127d9c178a9a5cc2212d560088d60dfd503edd808669a25f9b377f316a32361d0b23c languageName: node linkType: hard -"react-refresh@npm:^0.14.2": - version: 0.14.2 - resolution: "react-refresh@npm:0.14.2" - checksum: 10c0/875b72ef56b147a131e33f2abd6ec059d1989854b3ff438898e4f9310bfcc73acff709445b7ba843318a953cb9424bcc2c05af2b3d80011cee28f25aef3e2ebb - languageName: node - linkType: hard - -"react-router-dom@npm:^7.0.1": - version: 7.0.1 - resolution: "react-router-dom@npm:7.0.1" +"react-router-dom@npm:^7.8.2": + version: 7.8.2 + resolution: "react-router-dom@npm:7.8.2" dependencies: - react-router: "npm:7.0.1" + react-router: "npm:7.8.2" peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 10c0/aebc0af4ea4ac4e9482b0501c06f3af42adc68b4064c556b00954dcb7a6ec233d41f3eac86e388b9a8068e8ba5d44b854b7e29c806af9ed6a8798682d6984b46 + checksum: 10c0/b285182ffa1b26df5025f6e7952edca066928d5688d3447b02e4a7e699ca16941e8a42ecad65ab505914e27fed04a2023c92ae3ebf838226b4381a2e3a69ae01 languageName: node linkType: hard -"react-router@npm:7.0.1": - version: 7.0.1 - resolution: "react-router@npm:7.0.1" +"react-router@npm:7.8.2": + version: 7.8.2 + resolution: "react-router@npm:7.8.2" dependencies: - "@types/cookie": "npm:^0.6.0" cookie: "npm:^1.0.1" set-cookie-parser: "npm:^2.6.0" - turbo-stream: "npm:2.4.0" peerDependencies: react: ">=18" react-dom: ">=18" peerDependenciesMeta: react-dom: optional: true - checksum: 10c0/aac4c9989ae6b9cf989b5ddcda88f505ba0704a4e4b37ae04c819c2bd02f080361f9eb1793695e3ecf41080d91b79aee454c3163b586d1b19ceca13f6eacec0e + checksum: 10c0/e3122c2949bcad5e9c990cfb88e9cbd139e5a2a5c1d29664732623907a488634c0ddbf673d07af8f113d418f66270c174f014de8b885996722f431d09f5734be languageName: node linkType: hard -"react@npm:^18.3.1": - version: 18.3.1 - resolution: "react@npm:18.3.1" +"react@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0, react@npm:^19.1.1": + version: 19.1.1 + resolution: "react@npm:19.1.1" + checksum: 10c0/8c9769a2dfd02e603af6445058325e6c8a24b47b185d0e461f66a6454765ddcaecb3f0a90184836c68bb509f3c38248359edbc42f0d07c23eb500a5c30c87b4e + languageName: node + linkType: hard + +"recast@npm:^0.23.5": + version: 0.23.11 + resolution: "recast@npm:0.23.11" dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 + ast-types: "npm:^0.16.1" + esprima: "npm:~4.0.0" + source-map: "npm:~0.6.1" + tiny-invariant: "npm:^1.3.3" + tslib: "npm:^2.0.1" + checksum: 10c0/45b520a8f0868a5a24ecde495be9de3c48e69a54295d82a7331106554b75cfba75d16c909959d056e9ceed47a1be5e061e2db8b9ecbcd6ba44c2f3ef9a47bd18 languageName: node linkType: hard -"regenerator-runtime@npm:^0.14.0": - version: 0.14.1 - resolution: "regenerator-runtime@npm:0.14.1" - checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: "npm:^4.0.0" + strip-indent: "npm:^3.0.0" + checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae languageName: node linkType: hard @@ -2489,6 +3697,26 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve@npm:^1.22.1, resolve@npm:^1.22.8": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + languageName: node + linkType: hard + "resolve@npm:~1.22.1, resolve@npm:~1.22.2": version: 1.22.8 resolution: "resolve@npm:1.22.8" @@ -2502,6 +3730,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + languageName: node + linkType: hard + "resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" @@ -2522,29 +3763,39 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.23.0": - version: 4.27.4 - resolution: "rollup@npm:4.27.4" +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + +"rollup@npm:^4.43.0": + version: 4.50.1 + resolution: "rollup@npm:4.50.1" dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.27.4" - "@rollup/rollup-android-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-x64": "npm:4.27.4" - "@rollup/rollup-freebsd-arm64": "npm:4.27.4" - "@rollup/rollup-freebsd-x64": "npm:4.27.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.27.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-musl": "npm:4.27.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.27.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.27.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.27.4" - "@types/estree": "npm:1.0.6" + "@rollup/rollup-android-arm-eabi": "npm:4.50.1" + "@rollup/rollup-android-arm64": "npm:4.50.1" + "@rollup/rollup-darwin-arm64": "npm:4.50.1" + "@rollup/rollup-darwin-x64": "npm:4.50.1" + "@rollup/rollup-freebsd-arm64": "npm:4.50.1" + "@rollup/rollup-freebsd-x64": "npm:4.50.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.50.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.50.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.50.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.50.1" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.50.1" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.50.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.50.1" + "@rollup/rollup-linux-riscv64-musl": "npm:4.50.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.50.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.50.1" + "@rollup/rollup-linux-x64-musl": "npm:4.50.1" + "@rollup/rollup-openharmony-arm64": "npm:4.50.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.50.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.50.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.50.1" + "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -2567,16 +3818,22 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true - "@rollup/rollup-linux-powerpc64le-gnu": + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-ppc64-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true "@rollup/rollup-linux-s390x-gnu": optional: true "@rollup/rollup-linux-x64-gnu": optional: true "@rollup/rollup-linux-x64-musl": optional: true + "@rollup/rollup-openharmony-arm64": + optional: true "@rollup/rollup-win32-arm64-msvc": optional: true "@rollup/rollup-win32-ia32-msvc": @@ -2587,7 +3844,16 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/1442650cfea5e4617ce14743784f6f578817e31db56f9c8aaf96a82daa9bc20b6ccd66c0d677dbf302a4da3e70664dc3bef11a1aec85e6aff3cecccb945b1d35 + checksum: 10c0/2029282826d5fb4e308be261b2c28329a4d2bd34304cc3960da69fd21d5acccd0267d6770b1656ffc8f166203ef7e865b4583d5f842a519c8ef059ac71854205 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 languageName: node linkType: hard @@ -2598,28 +3864,10 @@ __metadata: languageName: node linkType: hard -"sax@npm:^1.2.4": - version: 1.4.1 - resolution: "sax@npm:1.4.1" - checksum: 10c0/6bf86318a254c5d898ede6bd3ded15daf68ae08a5495a2739564eb265cd13bcc64a07ab466fb204f67ce472bb534eb8612dac587435515169593f4fffa11de7c - languageName: node - linkType: hard - -"scheduler@npm:^0.23.2": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 - languageName: node - linkType: hard - -"semver@npm:^5.6.0": - version: 5.7.2 - resolution: "semver@npm:5.7.2" - bin: - semver: bin/semver - checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 +"scheduler@npm:^0.26.0": + version: 0.26.0 + resolution: "scheduler@npm:0.26.0" + checksum: 10c0/5b8d5bfddaae3513410eda54f2268e98a376a429931921a81b5c3a2873aab7ca4d775a8caac5498f8cbc7d0daeab947cf923dbd8e215d61671f9f4e392d34356 languageName: node linkType: hard @@ -2641,6 +3889,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.6.0, semver@npm:^7.6.2": + version: 7.7.2 + resolution: "semver@npm:7.7.2" + bin: + semver: bin/semver.js + checksum: 10c0/aca305edfbf2383c22571cb7714f48cadc7ac95371b4b52362fb8eeffdfbc0de0669368b82b2b15978f8848f01d7114da65697e56cd8c37b0dab8c58e543f9ea + languageName: node + linkType: hard + "semver@npm:~7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" @@ -2710,14 +3967,14 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": +"source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf languageName: node linkType: hard -"source-map@npm:~0.6.0, source-map@npm:~0.6.1": +"source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 @@ -2747,6 +4004,33 @@ __metadata: languageName: node linkType: hard +"storybook@npm:^9.1.5": + version: 9.1.5 + resolution: "storybook@npm:9.1.5" + dependencies: + "@storybook/global": "npm:^5.0.0" + "@testing-library/jest-dom": "npm:^6.6.3" + "@testing-library/user-event": "npm:^14.6.1" + "@vitest/expect": "npm:3.2.4" + "@vitest/mocker": "npm:3.2.4" + "@vitest/spy": "npm:3.2.4" + better-opn: "npm:^3.0.2" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0" + esbuild-register: "npm:^3.5.0" + recast: "npm:^0.23.5" + semver: "npm:^7.6.2" + ws: "npm:^8.18.0" + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + bin: + storybook: ./bin/index.cjs + checksum: 10c0/041f2cef5fd72cc3ce40e9638c10d85ea2b34b3613793e9ed5b2399c0928d76eccc7b64c45b5ee582d22bafd68e299e64a040c4d2a814ec1276fe4a1a2dccf5f + languageName: node + linkType: hard + "string-argv@npm:~0.3.1": version: 0.3.2 resolution: "string-argv@npm:0.3.2" @@ -2794,13 +4078,47 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:~3.1.1": +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: "npm:^1.0.0" + checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 + languageName: node + linkType: hard + +"strip-indent@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-indent@npm:4.0.0" + dependencies: + min-indent: "npm:^1.0.1" + checksum: 10c0/6b1fb4e22056867f5c9e7a6f3f45922d9a2436cac758607d58aeaac0d3b16ec40b1c43317de7900f1b8dd7a4107352fa47fb960f2c23566538c51e8585c8870e + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd languageName: node linkType: hard +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + "supports-color@npm:~8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" @@ -2817,13 +4135,6 @@ __metadata: languageName: node linkType: hard -"tabbable@npm:^6.0.0": - version: 6.2.0 - resolution: "tabbable@npm:6.2.0" - checksum: 10c0/ced8b38f05f2de62cd46836d77c2646c42b8c9713f5bd265daf0e78ff5ac73d3ba48a7ca45f348bafeef29b23da7187c72250742d37627883ef89cbd7fa76898 - languageName: node - linkType: hard - "tar@npm:^6.1.11, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" @@ -2838,6 +4149,37 @@ __metadata: languageName: node linkType: hard +"tiny-invariant@npm:^1.3.3": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 10c0/65af4a07324b591a059b35269cd696aba21bef2107f29b9f5894d83cc143159a204b299553435b03874ebb5b94d019afa8b8eff241c8a4cfee95872c2e1c1c4a + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 + languageName: node + linkType: hard + +"tinyrainbow@npm:^2.0.0": + version: 2.0.0 + resolution: "tinyrainbow@npm:2.0.0" + checksum: 10c0/c83c52bef4e0ae7fb8ec6a722f70b5b6fa8d8be1c85792e829f56c0e1be94ab70b293c032dc5048d4d37cfe678f1f5babb04bdc65fd123098800148ca989184f + languageName: node + linkType: hard + +"tinyspy@npm:^4.0.3": + version: 4.0.3 + resolution: "tinyspy@npm:4.0.3" + checksum: 10c0/0a92a18b5350945cc8a1da3a22c9ad9f4e2945df80aaa0c43e1b3a3cfb64d8501e607ebf0305e048e3c3d3e0e7f8eb10cea27dc17c21effb73e66c4a3be36373 + languageName: node + linkType: hard + "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -2845,71 +4187,116 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.3.0": - version: 2.7.0 - resolution: "tslib@npm:2.7.0" - checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 languageName: node linkType: hard -"turbo-stream@npm:2.4.0": - version: 2.4.0 - resolution: "turbo-stream@npm:2.4.0" - checksum: 10c0/e68b2569f1f16e6e9633d090c6024b2ae9f0e97bfeacb572451ca3732e120ebbb546f3bc4afc717c46cb57b5aea6104e04ef497f9912eef6a7641e809518e98a +"ts-api-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10c0/9806a38adea2db0f6aa217ccc6bc9c391ddba338a9fe3080676d0d50ed806d305bb90e8cef0276e793d28c8a929f400abb184ddd7ff83a416959c0f4d2ce754f languageName: node linkType: hard -"typescript@npm:5.4.2": - version: 5.4.2 - resolution: "typescript@npm:5.4.2" +"ts-dedent@npm:^2.0.0": + version: 2.2.0 + resolution: "ts-dedent@npm:2.2.0" + checksum: 10c0/175adea838468cc2ff7d5e97f970dcb798bbcb623f29c6088cb21aa2880d207c5784be81ab1741f56b9ac37840cbaba0c0d79f7f8b67ffe61c02634cafa5c303 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^4.2.0": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: "npm:^2.2.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea + languageName: node + linkType: hard + +"tslib@npm:^2.0.1": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"typescript@npm:5.8.2": + version: 5.8.2 + resolution: "typescript@npm:5.8.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/583ff68cafb0c076695f72d61df6feee71689568179fb0d3a4834dac343df6b6ed7cf7b6f6c801fa52d43cd1d324e2f2d8ae4497b09f9e6cfe3d80a6d6c9ca52 + checksum: 10c0/5c4f6fbf1c6389b6928fe7b8fcd5dc73bb2d58cd4e3883f1d774ed5bd83b151cbac6b7ecf11723de56d4676daeba8713894b1e9af56174f2f9780ae7848ec3c6 languageName: node linkType: hard -"typescript@npm:^5.6.2": - version: 5.6.2 - resolution: "typescript@npm:5.6.2" +"typescript@npm:^5.9.2": + version: 5.9.2 + resolution: "typescript@npm:5.9.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/3ed8297a8c7c56b7fec282532503d1ac795239d06e7c4966b42d4330c6cf433a170b53bcf93a130a7f14ccc5235de5560df4f1045eb7f3550b46ebed16d3c5e5 + checksum: 10c0/cd635d50f02d6cf98ed42de2f76289701c1ec587a363369255f01ed15aaf22be0813226bff3c53e99d971f9b540e0b3cc7583dbe05faded49b1b0bed2f638a18 languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.4.2#optional!builtin": - version: 5.4.2 - resolution: "typescript@patch:typescript@npm%3A5.4.2#optional!builtin::version=5.4.2&hash=5adc0c" +"typescript@patch:typescript@npm%3A5.8.2#optional!builtin": + version: 5.8.2 + resolution: "typescript@patch:typescript@npm%3A5.8.2#optional!builtin::version=5.8.2&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/fcf6658073d07283910d9a0e04b1d5d0ebc822c04dbb7abdd74c3151c7aa92fcddbac7d799404e358197222006ccdc4c0db219d223d2ee4ccd9e2b01333b49be + checksum: 10c0/5448a08e595cc558ab321e49d4cac64fb43d1fa106584f6ff9a8d8e592111b373a995a1d5c7f3046211c8a37201eb6d0f1566f15cdb7a62a5e3be01d087848e2 languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.6.2#optional!builtin": - version: 5.6.2 - resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40" +"typescript@patch:typescript@npm%3A^5.9.2#optional!builtin": + version: 5.9.2 + resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/94eb47e130d3edd964b76da85975601dcb3604b0c848a36f63ac448d0104e93819d94c8bdf6b07c00120f2ce9c05256b8b6092d23cf5cf1c6fa911159e4d572f + checksum: 10c0/34d2a8e23eb8e0d1875072064d5e1d9c102e0bdce56a10a25c0b917b8aa9001a9cf5c225df12497e99da107dc379360bc138163c66b55b95f5b105b50578067e languageName: node linkType: hard -"ufo@npm:^1.5.3": - version: 1.5.4 - resolution: "ufo@npm:1.5.4" - checksum: 10c0/b5dc4dc435c49c9ef8890f1b280a19ee4d0954d1d6f9ab66ce62ce64dd04c7be476781531f952a07c678d51638d02ad4b98e16237be29149295b0f7c09cda765 +"ufo@npm:^1.6.1": + version: 1.6.1 + resolution: "ufo@npm:1.6.1" + checksum: 10c0/5a9f041e5945fba7c189d5410508cbcbefef80b253ed29aa2e1f8a2b86f4bd51af44ee18d4485e6d3468c92be9bf4a42e3a2b72dcaf27ce39ce947ec994f1e6b languageName: node linkType: hard -"undici-types@npm:~6.19.2": - version: 6.19.8 - resolution: "undici-types@npm:6.19.8" - checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 +"undici-types@npm:~7.10.0": + version: 7.10.0 + resolution: "undici-types@npm:7.10.0" + checksum: 10c0/8b00ce50e235fe3cc601307f148b5e8fb427092ee3b23e8118ec0a5d7f68eca8cee468c8fc9f15cbb2cf2a3797945ebceb1cbd9732306a1d00e0a9b6afa0f635 + languageName: node + linkType: hard + +"unicorn-magic@npm:^0.1.0": + version: 0.1.0 + resolution: "unicorn-magic@npm:0.1.0" + checksum: 10c0/e4ed0de05b0a05e735c7d8a2930881e5efcfc3ec897204d5d33e7e6247f4c31eac92e383a15d9a6bccb7319b4271ee4bea946e211bf14951fec6ff2cbbb66a92 languageName: node linkType: hard @@ -2931,10 +4318,20 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + +"unplugin@npm:^1.3.1": + version: 1.16.1 + resolution: "unplugin@npm:1.16.1" + dependencies: + acorn: "npm:^8.14.0" + webpack-virtual-modules: "npm:^0.6.2" + checksum: 10c0/dd5f8c5727d0135847da73cf03fb199107f1acf458167034886fda3405737dab871ad3926431b4f70e1e82cdac482ac1383cea4019d782a68515c8e3e611b6cc languageName: node linkType: hard @@ -2961,55 +4358,49 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" - bin: - uuid: dist/bin/uuid - checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe - languageName: node - linkType: hard - -"vite-plugin-dts@npm:^4.3.0": - version: 4.3.0 - resolution: "vite-plugin-dts@npm:4.3.0" +"vite-plugin-dts@npm:^4.5.4": + version: 4.5.4 + resolution: "vite-plugin-dts@npm:4.5.4" dependencies: - "@microsoft/api-extractor": "npm:^7.47.11" - "@rollup/pluginutils": "npm:^5.1.0" - "@volar/typescript": "npm:^2.4.4" - "@vue/language-core": "npm:2.1.6" + "@microsoft/api-extractor": "npm:^7.50.1" + "@rollup/pluginutils": "npm:^5.1.4" + "@volar/typescript": "npm:^2.4.11" + "@vue/language-core": "npm:2.2.0" compare-versions: "npm:^6.1.1" - debug: "npm:^4.3.6" + debug: "npm:^4.4.0" kolorist: "npm:^1.8.0" - local-pkg: "npm:^0.5.0" - magic-string: "npm:^0.30.11" + local-pkg: "npm:^1.0.0" + magic-string: "npm:^0.30.17" peerDependencies: typescript: "*" vite: "*" peerDependenciesMeta: vite: optional: true - checksum: 10c0/e200fa54b985e99b64b882380bb1f669d7f0a05ba9f5f2de717b5d1b7d35921344e12e03bce3aadb455c706879ae10c8997ebe79bd0aa47e9dc51ca79d040372 + checksum: 10c0/5fcb7f3739d115f36195a692c0e9f9fca4e504bbbbabe29e71ee06630dd05ea2920169371e80e548eb4779d2eca14107277497838d7df588d53e1fadf84be861 languageName: node linkType: hard -"vite@npm:^6.0.1": - version: 6.0.1 - resolution: "vite@npm:6.0.1" +"vite@npm:^7.1.5": + version: 7.1.5 + resolution: "vite@npm:7.1.5" dependencies: - esbuild: "npm:^0.24.0" + esbuild: "npm:^0.25.0" + fdir: "npm:^6.5.0" fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.49" - rollup: "npm:^4.23.0" + picomatch: "npm:^4.0.3" + postcss: "npm:^8.5.6" + rollup: "npm:^4.43.0" + tinyglobby: "npm:^0.2.15" peerDependencies: - "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + "@types/node": ^20.19.0 || >=22.12.0 jiti: ">=1.21.0" - less: "*" + less: ^4.0.0 lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 @@ -3041,7 +4432,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/e4d853eb9042ff29fa4d7cee1484738faaee4b1d9dcf786a94783bebb736b39af0afa7ac1a209000530638098d0a1b240b51f509d32addb028b222453f862916 + checksum: 10c0/782d2f20c25541b26d1fb39bef5f194149caff39dc25b7836e25f049ca919f2e2ce186bddb21f3f20f6195354b3579ec637a8ca08d65b117f8b6f81e3e730a9c languageName: node linkType: hard @@ -3052,6 +4443,13 @@ __metadata: languageName: node linkType: hard +"webpack-virtual-modules@npm:^0.6.2": + version: 0.6.2 + resolution: "webpack-virtual-modules@npm:0.6.2" + checksum: 10c0/5ffbddf0e84bf1562ff86cf6fcf039c74edf09d78358a6904a09bbd4484e8bb6812dc385fe14330b715031892dcd8423f7a88278b57c9f5002c84c2860179add + languageName: node + linkType: hard + "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -3074,6 +4472,13 @@ __metadata: languageName: node linkType: hard +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -3096,6 +4501,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^8.18.0": + version: 8.18.3 + resolution: "ws@npm:8.18.3" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 + languageName: node + linkType: hard + "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" @@ -3109,3 +4529,17 @@ __metadata: checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a languageName: node linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"yocto-queue@npm:^1.0.0": + version: 1.2.1 + resolution: "yocto-queue@npm:1.2.1" + checksum: 10c0/5762caa3d0b421f4bdb7a1926b2ae2189fc6e4a14469258f183600028eb16db3e9e0306f46e8ebf5a52ff4b81a881f22637afefbef5399d6ad440824e9b27f9f + languageName: node + linkType: hard