From 3bb831306d724281347aca130c89dd16adec078a Mon Sep 17 00:00:00 2001 From: Izolda Date: Tue, 5 Aug 2025 00:24:39 +0300 Subject: [PATCH 1/3] [solid] rewritten from react to solid --- .eslintrc.cjs | 10 +- components.json | 12 + package.json | 36 ++- src/ui/assets/icons/help-icon.svg | 6 + src/ui/assets/icons/lurkers-icon.svg | 27 +++ src/ui/assets/icons/settings-icon.svg | 8 + src/ui/components/App.tsx | 37 ++- src/ui/components/AppContent.tsx | 82 +++---- src/ui/components/ColorIndicator.tsx | 86 ++++--- src/ui/components/ColorPreview.tsx | 47 ++-- src/ui/components/ContrastSample.tsx | 27 +-- src/ui/components/EmptySelectionMessage.tsx | 15 -- src/ui/components/HelpIcon.tsx | 12 - src/ui/components/HelpLink.tsx | 16 +- .../InvalidBackgroundSelectionMessage.tsx | 15 -- src/ui/components/LurkersIcon.tsx | 35 --- src/ui/components/LurkersLink.tsx | 20 +- src/ui/components/ProgressBar.tsx | 116 +++++----- .../components/RewardingAnimationBodyText.tsx | 12 +- .../RewardingAnimationContentText.tsx | 8 +- .../RewardingAnimationFluentText.tsx | 14 +- .../SegmentedFontStyleDefinition.tsx | 30 +-- src/ui/components/Selection.tsx | 104 ++++----- src/ui/components/SelectionContent.tsx | 96 +++----- src/ui/components/SelectionsList.tsx | 39 ++-- src/ui/components/SettingsButton.tsx | 54 +++-- src/ui/components/SettingsIcon.tsx | 14 -- src/ui/components/TextMetrics.tsx | 71 +++--- src/ui/components/ThemeVariablesProvider.tsx | 55 ++--- src/ui/components/Tooltip.tsx | 218 ++++-------------- .../UnprocessedBlendModesSelectionMessage.tsx | 15 -- .../BasicColorPreviewIcon.tsx | 15 +- .../LayeredColorPreviewIcon.tsx | 23 +- .../{ => dynamicIcons}/PictureIcon.tsx | 8 +- .../{ => dynamicIcons}/StopIcon.tsx | 8 +- .../{ => dynamicIcons}/WarningIcon.tsx | 8 +- .../infoMessages/CantCalculateMessage.tsx | 7 + .../infoMessages/EmptySelectionMessage.tsx | 13 ++ .../InvalidBackgroundSelectionMessage.tsx | 13 ++ .../UnprocessedBlendModesSelectionMessage.tsx | 13 ++ src/ui/index.tsx | 9 +- .../blend-modes/map-figma-blend-to-canvas.ts | 6 +- src/ui/stores/selected-nodes.ts | 19 +- src/ui/types/index.ts | 10 +- tsconfig.json | 3 +- vite.config.ui.ts | 6 +- 46 files changed, 641 insertions(+), 857 deletions(-) create mode 100644 components.json create mode 100644 src/ui/assets/icons/help-icon.svg create mode 100644 src/ui/assets/icons/lurkers-icon.svg create mode 100644 src/ui/assets/icons/settings-icon.svg delete mode 100644 src/ui/components/EmptySelectionMessage.tsx delete mode 100644 src/ui/components/HelpIcon.tsx delete mode 100644 src/ui/components/InvalidBackgroundSelectionMessage.tsx delete mode 100644 src/ui/components/LurkersIcon.tsx delete mode 100644 src/ui/components/SettingsIcon.tsx delete mode 100644 src/ui/components/UnprocessedBlendModesSelectionMessage.tsx rename src/ui/components/{ => dynamicIcons}/BasicColorPreviewIcon.tsx (68%) rename src/ui/components/{ => dynamicIcons}/LayeredColorPreviewIcon.tsx (80%) rename src/ui/components/{ => dynamicIcons}/PictureIcon.tsx (84%) rename src/ui/components/{ => dynamicIcons}/StopIcon.tsx (81%) rename src/ui/components/{ => dynamicIcons}/WarningIcon.tsx (82%) create mode 100644 src/ui/components/infoMessages/CantCalculateMessage.tsx create mode 100644 src/ui/components/infoMessages/EmptySelectionMessage.tsx create mode 100644 src/ui/components/infoMessages/InvalidBackgroundSelectionMessage.tsx create mode 100644 src/ui/components/infoMessages/UnprocessedBlendModesSelectionMessage.tsx diff --git a/.eslintrc.cjs b/.eslintrc.cjs index bdd1b7a..ce7affe 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -5,7 +5,7 @@ module.exports = { }, extends: [ 'standard-with-typescript', - 'plugin:react/recommended', + 'plugin:solid/typescript', 'prettier', 'plugin:perfectionist/recommended-alphabetical', 'plugin:tailwindcss/recommended', @@ -27,12 +27,14 @@ module.exports = { ecmaVersion: 'latest', sourceType: 'module', project: './tsconfig.json', + jsxPragma: "Solid" }, - plugins: ['react', 'prettier', 'jsx-a11y', 'boundaries'], + plugins: ['solid', 'prettier', 'jsx-a11y', 'boundaries'], rules: { 'import/no-default-export': 'error', 'func-style': ['error', 'expression'], - 'react/react-in-jsx-scope': 'off', + 'solid/react-in-jsx-scope': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', 'boundaries/element-types': [ 2, { @@ -67,7 +69,7 @@ module.exports = { ['~test-utils', './src/test-utils'], ], }, - react: { + solid: { version: 'detect', }, 'boundaries/elements': [ diff --git a/components.json b/components.json new file mode 100644 index 0000000..39f4b02 --- /dev/null +++ b/components.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://shadcn-solid.com/schema.json", + "tailwind": { + "config": "tailwind.config.js", + "css": { + "path": "src/app.css", + "variable": false + }, + "color": "slate", + "prefix": "" + } +} diff --git a/package.json b/package.json index 94623db..b842a7a 100644 --- a/package.json +++ b/package.json @@ -18,38 +18,27 @@ "lint:size": "size-limit" }, "dependencies": { - "@figma/plugin-typings": "^1.79.0", - "@floating-ui/react": "^0.25.2", - "@nanostores/react": "^0.7.1", - "@testing-library/react": "^14.0.0", + "@figma/plugin-typings": "^1.116.0", + "@kobalte/core": "^0.13.11", + "@nanostores/solid": "^1.0.0", "@types/apca-w3": "^0.1.0", "@types/culori": "^2.0.0", - "@types/react": "^18.2.14", - "@types/react-dom": "^18.2.6", - "@vitejs/plugin-react": "^4.0.1", "@vitest/coverage-v8": "^0.34.1", "apca-w3": "^0.1.9", "apcach": "^0.6.0", "autoprefixer": "^10.4.14", "bigint-conversion": "^2.4.2", - "clsx": "^2.0.0", + "copy-to-clipboard": "^3.3.3", "culori": "^3.2.0", - "eslint-plugin-boundaries": "^3.4.0", - "nanoid": "^4.0.2", + "nanoid": "5.0.9", "nanostores": "^0.9.3", "postcss": "^8.4.24", "postcss-loader": "^7.3.3", "postcss-preset-env": "^9.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-use-clipboard": "^1.0.9", + "solid-js": "^1.9.7", "tailwindcss": "^3.3.2", "typescript": "^5.0.2", - "uint8-to-hex": "^2.0.0", - "vite": "^4.4.0", - "vite-plugin-singlefile": "^0.13.5", - "vite-plugin-svgr": "^3.2.0", - "vitest": "^0.34.1" + "uint8-to-hex": "^2.0.0" }, "devDependencies": { "@size-limit/preset-small-lib": "^11.2.0", @@ -60,20 +49,23 @@ "eslint-config-prettier": "^8.8.0", "eslint-config-standard-with-typescript": "^36.0.0", "eslint-import-resolver-alias": "^1.1.2", + "eslint-plugin-boundaries": "^3.4.0", "eslint-plugin-import": "^2.25.2", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-n": "^15.0.0", "eslint-plugin-perfectionist": "^1.4.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.1", + "eslint-plugin-solid": "^0.14.5", "eslint-plugin-tailwindcss": "^3.13.0", "jsdom": "^22.1.0", "prettier": "^3.0.2", "size-limit": "^11.2.0", - "terser": "^5.19.0" + "vite": "^4.4.0", + "vite-plugin-singlefile": "^0.13.5", + "vite-plugin-solid": "^2.11.8", + "vite-plugin-solid-svg": "^0.8.1", + "vitest": "^0.34.1" }, "size-limit": [ { diff --git a/src/ui/assets/icons/help-icon.svg b/src/ui/assets/icons/help-icon.svg new file mode 100644 index 0000000..2a65240 --- /dev/null +++ b/src/ui/assets/icons/help-icon.svg @@ -0,0 +1,6 @@ + + + diff --git a/src/ui/assets/icons/lurkers-icon.svg b/src/ui/assets/icons/lurkers-icon.svg new file mode 100644 index 0000000..c5a58d2 --- /dev/null +++ b/src/ui/assets/icons/lurkers-icon.svg @@ -0,0 +1,27 @@ + + + + + + diff --git a/src/ui/assets/icons/settings-icon.svg b/src/ui/assets/icons/settings-icon.svg new file mode 100644 index 0000000..5caae69 --- /dev/null +++ b/src/ui/assets/icons/settings-icon.svg @@ -0,0 +1,8 @@ + + + diff --git a/src/ui/components/App.tsx b/src/ui/components/App.tsx index efc2dda..88ec842 100644 --- a/src/ui/components/App.tsx +++ b/src/ui/components/App.tsx @@ -1,55 +1,52 @@ -import { useStore } from '@nanostores/react'; +import { useStore } from '@nanostores/solid'; import { MessageTypes } from '~types/messages.ts'; import { AppContent } from '~ui/components/AppContent.tsx'; import { HelpLink } from '~ui/components/HelpLink.tsx'; import { LurkersLink } from '~ui/components/LurkersLink.tsx'; import { SettingsButton } from '~ui/components/SettingsButton.tsx'; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from '~ui/components/Tooltip.tsx'; -import React, { useEffect } from 'react'; +import { Tooltip, TooltipContent, TooltipTrigger } from '~ui/components/Tooltip.tsx'; +import { type JSX, onMount } from 'solid-js'; import { $isP3 } from '../stores/selected-nodes'; -export const App: React.FC = () => { +export const App = (): JSX.Element => { const isP3 = useStore($isP3); - useEffect(() => { + onMount(() => { parent.postMessage( { pluginMessage: { type: MessageTypes.UiReady, }, }, - '*' + '*', ); - }, []); + }); return ( -
+
-
+
-
- {isP3 && ( +
+ {isP3() && (
-

+

P3

- File color profile + File color profile
)} @@ -57,7 +54,7 @@ export const App: React.FC = () => {
-
+
diff --git a/src/ui/components/AppContent.tsx b/src/ui/components/AppContent.tsx index 250bf3e..51fa9bb 100644 --- a/src/ui/components/AppContent.tsx +++ b/src/ui/components/AppContent.tsx @@ -1,51 +1,55 @@ -import { useStore } from '@nanostores/react'; -import { EmptySelectionMessage } from '~ui/components/EmptySelectionMessage.tsx'; -import { InvalidBackgroundSelectionMessage } from '~ui/components/InvalidBackgroundSelectionMessage.tsx'; -import { Selection } from '~ui/components/Selection.tsx'; -import { SelectionsList } from '~ui/components/SelectionsList.tsx'; -import { UnprocessedBlendModesSelectionMessage } from '~ui/components/UnprocessedBlendModesSelectionMessage.tsx'; +import { useStore } from '@nanostores/solid'; +import { EmptySelectionMessage } from '~ui/components/infoMessages/EmptySelectionMessage'; +import { InvalidBackgroundSelectionMessage } from '~ui/components/infoMessages/InvalidBackgroundSelectionMessage'; +import { + UnprocessedBlendModesSelectionMessage, +} from '~ui/components/infoMessages/UnprocessedBlendModesSelectionMessage'; +import { Selection } from '~ui/components/Selection'; +import { SelectionsList } from '~ui/components/SelectionsList'; import { $contrastConclusion, $isEmptySelection, $isInvalidBackground, - $isMultiSelection, + $isMultiSelection, $isSingleSelection, $isUnprocessedBlendModes, -} from '~ui/stores/selected-nodes.ts'; +} from '~ui/stores/selected-nodes'; import { isEmpty } from '~utils/not-empty.ts'; -import { type ReactElement } from 'react'; +import { createMemo, type JSX, Match, Show, Switch } from 'solid-js'; -export const AppContent = (): ReactElement => { +export const AppContent = (): JSX.Element => { const isInvalidBackground = useStore($isInvalidBackground); - const isEmptySelection = useStore($isEmptySelection); - const isMultiSelection = useStore($isMultiSelection); const isUnprocessedBlendModes = useStore($isUnprocessedBlendModes); + const isMultiSelection = useStore($isMultiSelection); + const isSingleSelection = useStore($isSingleSelection); + const isEmptySelection = useStore($isEmptySelection); const contrastConclusion = useStore($contrastConclusion); - if (isInvalidBackground) { - return ; - } - - if (isUnprocessedBlendModes) { - return ; - } - - if (isEmptySelection) { - return ; - } - - if (isEmpty(contrastConclusion)) { - return ; - } - - if (isMultiSelection) { - return ; - } else { - const pair = contrastConclusion[0]; - - if (isEmpty(pair)) { - return ; - } - - return ; - } + const pair = createMemo(() => contrastConclusion()[0]); + + return ( + + + + + + + + + + + + } when={!isEmpty(pair())}> + + + + + + + + ); }; diff --git a/src/ui/components/ColorIndicator.tsx b/src/ui/components/ColorIndicator.tsx index cfa8bc9..526a556 100644 --- a/src/ui/components/ColorIndicator.tsx +++ b/src/ui/components/ColorIndicator.tsx @@ -1,74 +1,92 @@ -import { useStore } from '@nanostores/react'; +import { useStore } from '@nanostores/solid'; import { ColorPreview } from '~ui/components/ColorPreview.tsx'; import { ThemeVariablesKeys } from '~ui/components/ThemeVariablesProvider.tsx'; +import { Tooltip, TooltipContent, TooltipTrigger } from '~ui/components/Tooltip.tsx'; import { getFormatterForCSS, getFormatterForDisplaying, } from '~utils/colors/formatters.ts'; +import copy from 'copy-to-clipboard'; import { type Oklch } from 'culori/fn'; -import { type ReactElement } from 'react'; -import useClipboard from 'react-use-clipboard'; +import { createMemo, createSignal, type JSX } from 'solid-js'; import { $colorSpaceDisplayMode } from '../stores/color-space-display-mode.ts'; -import { Tooltip, TooltipContent, TooltipTrigger } from './Tooltip.tsx'; interface ColorIndicatorProps { borderColor: string; fill: { hex: string; oklch: Oklch }; + id: string; indicatorColor: string; isBlended: boolean; textColor: string; } -export const ColorIndicator = ({ - borderColor, - fill, - indicatorColor, - isBlended, - textColor, -}: ColorIndicatorProps): ReactElement => { +export const ColorIndicator = (props: ColorIndicatorProps): JSX.Element => { const colorSpaceDisplayMode = useStore($colorSpaceDisplayMode); - const formatColorForDisplay = getFormatterForDisplaying( - colorSpaceDisplayMode - ); - const displayValue = formatColorForDisplay(fill.oklch); + const [isOpen, setIsOpen] = createSignal(false); + const [isCopied, setIsCopied] = createSignal(false); + const [eventType, setEventType] = createSignal<'click' | 'pointerenter' | 'pointerleave'>('pointerenter'); + + const formatColorForDisplay = createMemo(() => getFormatterForDisplaying(colorSpaceDisplayMode())); + const displayValue = createMemo(() => formatColorForDisplay()(props.fill.oklch)); + + const formatColorForCSS = createMemo(() => getFormatterForCSS(colorSpaceDisplayMode())); + const cssValue = createMemo(() => formatColorForCSS()(props.fill.oklch)); + + const handleCopy = (): void => { + const result = copy(cssValue()); + setIsCopied(result); + }; + + const handleCustomOpen = (openState: boolean): void => { + if (eventType() === 'click' && !openState) { + setIsOpen(true); + } + + if (eventType() === 'pointerleave') { + setIsCopied(false); + setIsOpen(false); + } - const formatColorForCSS = getFormatterForCSS(colorSpaceDisplayMode); - const cssValue = formatColorForCSS(fill.oklch); + if (eventType() === 'pointerenter') { + setIsOpen(true); + } + }; - const [isCopied, setCopied] = useClipboard(cssValue, { - successDuration: 2000, - }); + const handleChangeEventType = (eventType: 'click' | 'pointerenter' | 'pointerleave') => (): void => { + setEventType(eventType); + }; return ( - - + + - {isCopied ? 'Copied!' : 'Copy as CSS'} + {isCopied() ? 'Copied!' : 'Copy as CSS'} ); }; diff --git a/src/ui/components/ColorPreview.tsx b/src/ui/components/ColorPreview.tsx index f424023..471b94c 100644 --- a/src/ui/components/ColorPreview.tsx +++ b/src/ui/components/ColorPreview.tsx @@ -1,6 +1,6 @@ -import { BasicColorPreviewIcon } from '~ui/components/BasicColorPreviewIcon.tsx'; -import { LayeredColorPreviewIcon } from '~ui/components/LayeredColorPreviewIcon.tsx'; -import { type ReactElement } from 'react'; +import { BasicColorPreviewIcon } from '~ui/components/dynamicIcons/BasicColorPreviewIcon.tsx'; +import { LayeredColorPreviewIcon } from '~ui/components/dynamicIcons/LayeredColorPreviewIcon.tsx'; +import { type JSX, Show } from 'solid-js'; interface Props { borderColor: string; @@ -8,26 +8,21 @@ interface Props { isBlended: boolean; } -export const ColorPreview = ({ - borderColor, - indicatorColor, - isBlended, -}: Props): ReactElement => { - if (isBlended) { - return ( -
- -
- ); - } - - return ( - - ); -}; +export const ColorPreview = (props: Props): JSX.Element => ( + + } + when={props.isBlended} + > +
+ +
+
+); diff --git a/src/ui/components/ContrastSample.tsx b/src/ui/components/ContrastSample.tsx index 9232c7b..5a34e8a 100644 --- a/src/ui/components/ContrastSample.tsx +++ b/src/ui/components/ContrastSample.tsx @@ -1,6 +1,5 @@ import { ThemeVariablesKeys } from '~ui/components/ThemeVariablesProvider.tsx'; -import clsx from 'clsx'; -import { type ReactElement } from 'react'; +import { type JSX } from 'solid-js'; interface Props { bgColor: string; @@ -11,31 +10,19 @@ interface Props { const exampleText = 'Aa'; -export const ContrastSample = ({ - bgColor, - color, - opacity, - size, -}: Props): ReactElement => { - return ( +export const ContrastSample = (props: Props): JSX.Element => (

{exampleText}

); -}; diff --git a/src/ui/components/EmptySelectionMessage.tsx b/src/ui/components/EmptySelectionMessage.tsx deleted file mode 100644 index 1ffa2ae..0000000 --- a/src/ui/components/EmptySelectionMessage.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import ufoImage from '~ui/assets/ufo@2x.webp'; -import { type ReactElement } from 'react'; - -export const EmptySelectionMessage = (): ReactElement => { - return ( -

- Select a layer with a solid fill -

- ); -}; diff --git a/src/ui/components/HelpIcon.tsx b/src/ui/components/HelpIcon.tsx deleted file mode 100644 index 47c8d38..0000000 --- a/src/ui/components/HelpIcon.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { type ReactElement } from 'react'; - -export const HelpIcon = (): ReactElement => { - return ( - - - - ); -}; diff --git a/src/ui/components/HelpLink.tsx b/src/ui/components/HelpLink.tsx index 530ce72..550ac47 100644 --- a/src/ui/components/HelpLink.tsx +++ b/src/ui/components/HelpLink.tsx @@ -1,19 +1,15 @@ -import { HelpIcon } from '~ui/components/HelpIcon.tsx'; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from '~ui/components/Tooltip.tsx'; -import { type ReactElement } from 'react'; +import HelpIcon from '~ui/assets/icons/help-icon.svg'; +import { Tooltip, TooltipContent, TooltipTrigger } from '~ui/components/Tooltip.tsx'; +import { type JSX } from 'solid-js'; import { APCADocumentationURL } from '../../constants.ts'; -export const HelpLink = (): ReactElement => { +export const HelpLink = (): JSX.Element => { return ( { - APCA in a Nutshell + APCA in a Nutshell ); }; diff --git a/src/ui/components/InvalidBackgroundSelectionMessage.tsx b/src/ui/components/InvalidBackgroundSelectionMessage.tsx deleted file mode 100644 index 776ff80..0000000 --- a/src/ui/components/InvalidBackgroundSelectionMessage.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import layersImage from '~ui/assets/layers@2x.webp'; -import { type ReactElement } from 'react'; - -export const InvalidBackgroundSelectionMessage = (): ReactElement => { - return ( -

- The background layer should be a solid fill -

- ); -}; diff --git a/src/ui/components/LurkersIcon.tsx b/src/ui/components/LurkersIcon.tsx deleted file mode 100644 index 3da9021..0000000 --- a/src/ui/components/LurkersIcon.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { type ReactElement } from 'react'; - -export const LurkersIcon = (): ReactElement => { - return ( -
- - - - - - -
- ); -}; diff --git a/src/ui/components/LurkersLink.tsx b/src/ui/components/LurkersLink.tsx index 953706e..2b3558d 100644 --- a/src/ui/components/LurkersLink.tsx +++ b/src/ui/components/LurkersLink.tsx @@ -1,27 +1,25 @@ -import { LurkersIcon } from '~ui/components/LurkersIcon.tsx'; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from '~ui/components/Tooltip.tsx'; -import { type ReactElement } from 'react'; +import LurkersIcon from '~ui/assets/icons/lurkers-icon.svg'; +import { Tooltip, TooltipContent, TooltipTrigger } from '~ui/components/Tooltip.tsx'; +import { type JSX } from 'solid-js'; import { evilMartiansSiteURL } from '../../constants.ts'; -export const LurkersLink = (): ReactElement => { +export const LurkersLink = (): JSX.Element => { return ( - +
+ +
- Evil Martians + Evil Martians
); }; diff --git a/src/ui/components/ProgressBar.tsx b/src/ui/components/ProgressBar.tsx index 27d457b..22e64db 100644 --- a/src/ui/components/ProgressBar.tsx +++ b/src/ui/components/ProgressBar.tsx @@ -1,4 +1,4 @@ -import { useStore } from '@nanostores/react'; +import { useStore } from '@nanostores/solid'; import { RewardingAnimationBodyText } from '~ui/components/RewardingAnimationBodyText.tsx'; import { RewardingAnimationContentText } from '~ui/components/RewardingAnimationContentText.tsx'; import { RewardingAnimationFluentText } from '~ui/components/RewardingAnimationFluentText.tsx'; @@ -6,8 +6,7 @@ import { ThemeVariablesKeys } from '~ui/components/ThemeVariablesProvider.tsx'; import { conclusions } from '~ui/services/apca/conclusion.ts'; import { $rewardAnimationLaunch } from '~ui/stores/selected-nodes.ts'; import { isEmpty } from '~utils/not-empty.ts'; -import clsx from 'clsx'; -import { type ReactElement } from 'react'; +import { createMemo, For, type JSX, Show } from 'solid-js'; interface Props { apca: number; @@ -19,94 +18,83 @@ const APCA_NEGATIVE_MAX_SCALE = 108; const APCA_POSITIVE_MAX_SCALE = 106; const SERIF_OFFSET = 2; -export const ProgressBar = ({ apca, height }: Props): ReactElement => { +const conclusionScores = Object.values(conclusions).reverse().slice(1); + +export const ProgressBar = (props: Props): JSX.Element => { const rewardAnimationLaunch = useStore($rewardAnimationLaunch); - const maxScale = apca > 0 ? APCA_POSITIVE_MAX_SCALE : APCA_NEGATIVE_MAX_SCALE; - const barWidth = maxScale * SCALE; - const filledSegmentWidth = Math.abs(apca) * SCALE; - const [, ...conclusionScores] = Object.values(conclusions).reverse(); + + const maxScale = createMemo(() => props.apca > 0 ? APCA_POSITIVE_MAX_SCALE : APCA_NEGATIVE_MAX_SCALE); + const barWidth = createMemo(() => maxScale() * SCALE); + const filledSegmentWidth = createMemo(() => Math.abs(props.apca) * SCALE); return ( -
-
+
+
0
- {Array.from({ length: conclusionScores.length }).map((_, i) => { - const value = conclusionScores[i]; - const isContextText = value === conclusions['Content Text']; - const isBodyText = value === conclusions['Body Text']; - const isFluentText = value === conclusions['Fluent Text']; - - if (isEmpty(value)) return null; + + {(value) => { + const isContextText = value === conclusions['Content Text']; + const isBodyText = value === conclusions['Body Text']; + const isFluentText = value === conclusions['Fluent Text']; - const position = value * SCALE - SERIF_OFFSET; + if (isEmpty(value)) return null; - return ( -
- {isContextText && - rewardAnimationLaunch.contentText === true && ( + const position = value * SCALE - SERIF_OFFSET; + console.table({position, value} ); + return ( +
+ - )} - - {isBodyText && rewardAnimationLaunch.bodyText === true && ( - - )} - - {isFluentText && - rewardAnimationLaunch.fluentText === true && ( + + + + + - )} -
- ); - })} + +
+ ); + }} +
- {maxScale} + {maxScale()}
diff --git a/src/ui/components/RewardingAnimationBodyText.tsx b/src/ui/components/RewardingAnimationBodyText.tsx index 36bb557..8c45062 100644 --- a/src/ui/components/RewardingAnimationBodyText.tsx +++ b/src/ui/components/RewardingAnimationBodyText.tsx @@ -1,11 +1,11 @@ -import { type ReactElement } from 'react'; +import { type JSX } from 'solid-js'; -export const RewardingAnimationBodyText = (): ReactElement => { +export const RewardingAnimationBodyText = (): JSX.Element => { return ( -
-
-
-
+
+
+
+
); }; diff --git a/src/ui/components/RewardingAnimationContentText.tsx b/src/ui/components/RewardingAnimationContentText.tsx index bae601f..4cdf271 100644 --- a/src/ui/components/RewardingAnimationContentText.tsx +++ b/src/ui/components/RewardingAnimationContentText.tsx @@ -1,9 +1,9 @@ -import { type ReactElement } from 'react'; +import { type JSX } from 'solid-js'; -export const RewardingAnimationContentText = (): ReactElement => { +export const RewardingAnimationContentText = (): JSX.Element => { return ( -
-
+
+
); }; diff --git a/src/ui/components/RewardingAnimationFluentText.tsx b/src/ui/components/RewardingAnimationFluentText.tsx index 0643fd7..18823f3 100644 --- a/src/ui/components/RewardingAnimationFluentText.tsx +++ b/src/ui/components/RewardingAnimationFluentText.tsx @@ -1,12 +1,12 @@ -import { type ReactElement } from 'react'; +import { type JSX } from 'solid-js'; -export const RewardingAnimationFluentText = (): ReactElement => { +export const RewardingAnimationFluentText = (): JSX.Element => { return ( -
-
-
-
-
+
+
+
+
+
); }; diff --git a/src/ui/components/SegmentedFontStyleDefinition.tsx b/src/ui/components/SegmentedFontStyleDefinition.tsx index 152e4c5..7d51c82 100644 --- a/src/ui/components/SegmentedFontStyleDefinition.tsx +++ b/src/ui/components/SegmentedFontStyleDefinition.tsx @@ -1,6 +1,6 @@ import { type UIColor } from '~types/common.ts'; import { formatColorForTheme } from '~ui/components/ThemeVariablesProvider.tsx'; -import { type ReactElement } from 'react'; +import { createMemo, type JSX } from 'solid-js'; interface Props { currentStyleNumber: number; @@ -9,35 +9,29 @@ interface Props { secondaryColor: UIColor; } -export const SegmentedFontStyleDefinition = ({ - currentStyleNumber, - id, - primaryColor, - secondaryColor, -}: Props): ReactElement => { - const formattedCurrentStyleNumber = currentStyleNumber.toLocaleString( - 'en-US', - { +export const SegmentedFontStyleDefinition = (props: Props): JSX.Element => { + const formattedCurrentStyleNumber = createMemo(() => + props.currentStyleNumber.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false, - } + }) ); - const primaryFormatted = formatColorForTheme(primaryColor); - const secondaryFormatted = formatColorForTheme(secondaryColor, 0.12); + const primaryFormatted = createMemo(() => formatColorForTheme(props.primaryColor)); + const secondaryFormatted = createMemo(() => formatColorForTheme(props.secondaryColor, 0.12)); return ( ); diff --git a/src/ui/components/WarningIcon.tsx b/src/ui/components/dynamicIcons/WarningIcon.tsx similarity index 82% rename from src/ui/components/WarningIcon.tsx rename to src/ui/components/dynamicIcons/WarningIcon.tsx index 73a0b61..1fe9ddf 100644 --- a/src/ui/components/WarningIcon.tsx +++ b/src/ui/components/dynamicIcons/WarningIcon.tsx @@ -1,14 +1,14 @@ import { ThemeVariablesKeys } from '~ui/components/ThemeVariablesProvider.tsx'; -import { type ReactElement } from 'react'; +import { type JSX } from 'solid-js'; -export const WarningIcon = (): ReactElement => { +export const WarningIcon = (): JSX.Element => { return ( ); diff --git a/src/ui/components/infoMessages/CantCalculateMessage.tsx b/src/ui/components/infoMessages/CantCalculateMessage.tsx new file mode 100644 index 0000000..373fec0 --- /dev/null +++ b/src/ui/components/infoMessages/CantCalculateMessage.tsx @@ -0,0 +1,7 @@ +import type { JSX } from 'solid-js'; + +export const CantCalculateMessage = (): JSX.Element => ( +

+ Can't calc +

+); diff --git a/src/ui/components/infoMessages/EmptySelectionMessage.tsx b/src/ui/components/infoMessages/EmptySelectionMessage.tsx new file mode 100644 index 0000000..4e41bea --- /dev/null +++ b/src/ui/components/infoMessages/EmptySelectionMessage.tsx @@ -0,0 +1,13 @@ +import ufoImage from '~ui/assets/ufo@2x.webp'; +import { type JSX } from 'solid-js'; + +export const EmptySelectionMessage = (): JSX.Element => ( +

+ Select a layer with a solid fill +

+ ); diff --git a/src/ui/components/infoMessages/InvalidBackgroundSelectionMessage.tsx b/src/ui/components/infoMessages/InvalidBackgroundSelectionMessage.tsx new file mode 100644 index 0000000..d524f6e --- /dev/null +++ b/src/ui/components/infoMessages/InvalidBackgroundSelectionMessage.tsx @@ -0,0 +1,13 @@ +import layersImage from '~ui/assets/layers@2x.webp'; +import { type JSX } from 'solid-js'; + +export const InvalidBackgroundSelectionMessage = (): JSX.Element => ( +

+ The background layer should be a solid fill +

+ ); diff --git a/src/ui/components/infoMessages/UnprocessedBlendModesSelectionMessage.tsx b/src/ui/components/infoMessages/UnprocessedBlendModesSelectionMessage.tsx new file mode 100644 index 0000000..2deb7f6 --- /dev/null +++ b/src/ui/components/infoMessages/UnprocessedBlendModesSelectionMessage.tsx @@ -0,0 +1,13 @@ +import layersImage from '~ui/assets/layers@2x.webp'; +import { type JSX } from 'solid-js'; + +export const UnprocessedBlendModesSelectionMessage = (): JSX.Element => ( +

+ The blending mode Plus Darker is not supported +

+ ); diff --git a/src/ui/index.tsx b/src/ui/index.tsx index e401bd8..773ce66 100644 --- a/src/ui/index.tsx +++ b/src/ui/index.tsx @@ -1,16 +1,15 @@ -import { createRoot } from 'react-dom/client'; +import { render } from 'solid-js/web'; import { notEmpty } from '../utils/not-empty.ts'; import { App } from './components/App'; import './style.css'; -document.addEventListener('DOMContentLoaded', function () { +document.addEventListener('DOMContentLoaded', () => { const container = document.getElementById('root'); if (notEmpty(container)) { - const root = createRoot(container); - root.render(); + render(() => , container); } else { - console.error('Failed to find container element for React root'); + console.error('Failed to find container element for Solid root'); } }); diff --git a/src/ui/services/blend-modes/map-figma-blend-to-canvas.ts b/src/ui/services/blend-modes/map-figma-blend-to-canvas.ts index 8e96afc..09afb0b 100644 --- a/src/ui/services/blend-modes/map-figma-blend-to-canvas.ts +++ b/src/ui/services/blend-modes/map-figma-blend-to-canvas.ts @@ -1,10 +1,10 @@ import { notEmpty } from '~utils/not-empty.ts'; -import { type CSSProperties } from 'react'; +import { type JSX } from 'solid-js'; export const mapFigmaBlendToCanvas = ( figmaBlend?: BlendMode -): CSSProperties['mixBlendMode'] => { - const mapping: Record = { +): JSX.CSSProperties['mix-blend-mode'] => { + const mapping: Record = { COLOR: 'color', COLOR_BURN: 'color-burn', COLOR_DODGE: 'color-dodge', diff --git a/src/ui/stores/selected-nodes.ts b/src/ui/stores/selected-nodes.ts index f20cf37..7d528b0 100644 --- a/src/ui/stores/selected-nodes.ts +++ b/src/ui/stores/selected-nodes.ts @@ -31,6 +31,12 @@ export const $isMultiSelection = computed($userSelection, (selection) => { : false; }); +export const $isSingleSelection = computed($userSelection, (selection) => { + return 'selectedNodePairs' in selection + ? selection.selectedNodePairs.length === 1 + : false; +}); + export const $isInvalidBackground = computed($userSelection, (selection) => { return ( 'text' in selection && @@ -50,7 +56,10 @@ export const $isUnprocessedBlendModes = computed( export const $isEmptySelection = computed( $contrastConclusion, - (selection) => selection?.length === 0 + (selection) => { + const arr = Array.isArray(selection) ? selection : Array.from(selection ?? []); + return arr.length === 0; + } ); onMount($userSelection, () => { @@ -82,14 +91,14 @@ onSet($userSelection, ({ newValue }) => { newValue.selectedNodePairs, newValue.colorSpace ); - - if (notEmpty(res)) $contrastConclusion.set(res); + if (notEmpty(res)) $contrastConclusion.set([...res]); + else $contrastConclusion.set([]); + } else { + $contrastConclusion.set([]); // <-- сбрасываем, если нет выделения } }; - void start(); }); - export const $rewardAnimationLaunch = map<{ bodyText: boolean | null; contentText: boolean | null; diff --git a/src/ui/types/index.ts b/src/ui/types/index.ts index 2b2a26f..6862ed5 100644 --- a/src/ui/types/index.ts +++ b/src/ui/types/index.ts @@ -1,8 +1,14 @@ import { type Oklch } from 'culori/fn'; +interface UIColor { + hex: string; + isBlended: boolean; + oklch: Oklch; +} + export interface ContrastConclusion { apca: number; - bg: { hex: string; isBlended: boolean; oklch: Oklch }; - fg: { hex: string; isBlended: boolean; oklch: Oklch }; + bg: UIColor; + fg: UIColor; id: string; } diff --git a/tsconfig.json b/tsconfig.json index 5cc2254..f4f8599 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,8 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx", + "jsx": "preserve", + "jsxImportSource": "solid-js", "noUncheckedIndexedAccess": true, diff --git a/vite.config.ui.ts b/vite.config.ui.ts index 2e1467e..06cb352 100644 --- a/vite.config.ui.ts +++ b/vite.config.ui.ts @@ -1,9 +1,9 @@ /// import { defineConfig } from 'vite'; import { resolve } from 'path'; -import react from '@vitejs/plugin-react'; +import solid from 'vite-plugin-solid'; import { viteSingleFile } from 'vite-plugin-singlefile'; -import svgr from 'vite-plugin-svgr'; +import solidSvg from 'vite-plugin-solid-svg' export default defineConfig({ resolve: { @@ -14,7 +14,7 @@ export default defineConfig({ '~utils': resolve(__dirname, 'src', 'utils'), }, }, - plugins: [react(), svgr(), viteSingleFile()], + plugins: [solid(), solidSvg({ defaultAsComponent: true }), viteSingleFile()], root: './src/ui', build: { emptyOutDir: false, From 6fd8c2b2d135bba2b73808a1011a699f0a643e59 Mon Sep 17 00:00:00 2001 From: Izolda Date: Tue, 5 Aug 2025 00:43:41 +0300 Subject: [PATCH 2/3] [solid] new pnpm-lock.yaml --- pnpm-lock.yaml | 1505 +++++++++++++++++++++++------------------------- 1 file changed, 716 insertions(+), 789 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 13c49ea..bb87bf2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,32 +9,20 @@ importers: .: dependencies: '@figma/plugin-typings': - specifier: ^1.79.0 + specifier: ^1.116.0 version: 1.116.0 - '@floating-ui/react': - specifier: ^0.25.2 - version: 0.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@nanostores/react': - specifier: ^0.7.1 - version: 0.7.3(nanostores@0.9.5)(react@18.3.1) - '@testing-library/react': - specifier: ^14.0.0 - version: 14.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@kobalte/core': + specifier: ^0.13.11 + version: 0.13.11(solid-js@1.9.7) + '@nanostores/solid': + specifier: ^1.0.0 + version: 1.0.0(nanostores@0.9.5)(solid-js@1.9.7) '@types/apca-w3': specifier: ^0.1.0 version: 0.1.3 '@types/culori': specifier: ^2.0.0 version: 2.1.1 - '@types/react': - specifier: ^18.2.14 - version: 18.3.23 - '@types/react-dom': - specifier: ^18.2.6 - version: 18.3.7(@types/react@18.3.23) - '@vitejs/plugin-react': - specifier: ^4.0.1 - version: 4.7.0(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) '@vitest/coverage-v8': specifier: ^0.34.1 version: 0.34.6(vitest@0.34.6(jsdom@22.1.0)(terser@5.43.1)) @@ -50,18 +38,15 @@ importers: bigint-conversion: specifier: ^2.4.2 version: 2.4.3 - clsx: - specifier: ^2.0.0 - version: 2.1.1 + copy-to-clipboard: + specifier: ^3.3.3 + version: 3.3.3 culori: specifier: ^3.2.0 version: 3.3.0 - eslint-plugin-boundaries: - specifier: ^3.4.0 - version: 3.4.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) nanoid: - specifier: ^4.0.2 - version: 4.0.2 + specifier: 5.0.9 + version: 5.0.9 nanostores: specifier: ^0.9.3 version: 0.9.5 @@ -70,40 +55,22 @@ importers: version: 8.5.6 postcss-loader: specifier: ^7.3.3 - version: 7.3.4(postcss@8.5.6)(typescript@5.8.3)(webpack@5.100.2) + version: 7.3.4(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.0) postcss-preset-env: specifier: ^9.0.0 version: 9.6.0(postcss@8.5.6) - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) - react-use-clipboard: - specifier: ^1.0.9 - version: 1.0.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + solid-js: + specifier: ^1.9.7 + version: 1.9.7 tailwindcss: specifier: ^3.3.2 version: 3.4.17 typescript: specifier: ^5.0.2 - version: 5.8.3 + version: 5.9.2 uint8-to-hex: specifier: ^2.0.0 version: 2.0.1 - vite: - specifier: ^4.4.0 - version: 4.5.14(@types/node@20.19.9)(terser@5.43.1) - vite-plugin-singlefile: - specifier: ^0.13.5 - version: 0.13.5(rollup@3.29.5)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) - vite-plugin-svgr: - specifier: ^3.2.0 - version: 3.3.0(rollup@3.29.5)(typescript@5.8.3)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) - vitest: - specifier: ^0.34.1 - version: 0.34.6(jsdom@22.1.0)(terser@5.43.1) devDependencies: '@size-limit/preset-small-lib': specifier: ^11.2.0 @@ -113,10 +80,10 @@ importers: version: 20.19.9 '@typescript-eslint/eslint-plugin': specifier: ^5.61.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^5.61.0 - version: 5.62.0(eslint@8.57.1)(typescript@5.8.3) + version: 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: specifier: ^8.44.0 version: 8.57.1 @@ -125,13 +92,16 @@ importers: version: 8.10.2(eslint@8.57.1) eslint-config-standard-with-typescript: specifier: ^36.0.0 - version: 36.1.1(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.8.3) + version: 36.1.1(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.2) eslint-import-resolver-alias: specifier: ^1.1.2 - version: 1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)) + version: 1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)) + eslint-plugin-boundaries: + specifier: ^3.4.0 + version: 3.4.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) eslint-plugin-import: specifier: ^2.25.2 - version: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) + version: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) eslint-plugin-jsx-a11y: specifier: ^6.7.1 version: 6.10.2(eslint@8.57.1) @@ -140,22 +110,16 @@ importers: version: 15.7.0(eslint@8.57.1) eslint-plugin-perfectionist: specifier: ^1.4.0 - version: 1.5.1(eslint@8.57.1)(typescript@5.8.3) + version: 1.5.1(eslint@8.57.1)(typescript@5.9.2) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.5(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) eslint-plugin-promise: specifier: ^6.0.0 version: 6.6.0(eslint@8.57.1) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.2(eslint@8.57.1) - eslint-plugin-react-refresh: - specifier: ^0.4.1 - version: 0.4.20(eslint@8.57.1) + eslint-plugin-solid: + specifier: ^0.14.5 + version: 0.14.5(eslint@8.57.1)(typescript@5.9.2) eslint-plugin-tailwindcss: specifier: ^3.13.0 version: 3.18.2(tailwindcss@3.4.17) @@ -168,9 +132,21 @@ importers: size-limit: specifier: ^11.2.0 version: 11.2.0 - terser: - specifier: ^5.19.0 - version: 5.43.1 + vite: + specifier: ^4.4.0 + version: 4.5.14(@types/node@20.19.9)(terser@5.43.1) + vite-plugin-singlefile: + specifier: ^0.13.5 + version: 0.13.5(rollup@3.29.5)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) + vite-plugin-solid: + specifier: ^2.11.8 + version: 2.11.8(solid-js@1.9.7)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) + vite-plugin-solid-svg: + specifier: ^0.8.1 + version: 0.8.1(solid-js@1.9.7)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) + vitest: + specifier: ^0.34.1 + version: 0.34.6(jsdom@22.1.0)(terser@5.43.1) packages: @@ -206,6 +182,10 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.18.6': + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} @@ -232,8 +212,8 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + '@babel/helpers@7.28.2': + resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} engines: {node: '>=6.9.0'} '@babel/parser@7.28.0': @@ -241,22 +221,12 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} - engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -265,13 +235,18 @@ packages: resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.1': - resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@corvu/utils@0.4.2': + resolution: {integrity: sha512-Ox2kYyxy7NoXdKWdHeDEjZxClwzO4SKM8plAaVwmAJPxHMqA0rLOoAsa+hBDwRLpctf+ZRnAd/ykguuJidnaTA==} + peerDependencies: + solid-js: ^1.8 + '@csstools/cascade-layer-name-parser@1.0.13': resolution: {integrity: sha512-MX0yLTwtZzr82sQ0zOjqimpZbzjMaK/h2pmlrLK7DCzlmiZLYFpoO94WmN1akRVo6ll/TdpHb53vihHLUMyvng==} engines: {node: ^14 || ^16 || >=18} @@ -821,26 +796,11 @@ packages: '@figma/plugin-typings@1.116.0': resolution: {integrity: sha512-jpn7Vq3uxgJF5oQ5PwkWGGIyCwIjB260UjtSzBck9LL1WzXJSaxBH1wo+vrU4XXbV//TURUGBYIQ2tU7cdyRYQ==} - '@floating-ui/core@1.7.2': - resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} - - '@floating-ui/dom@1.7.2': - resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} - - '@floating-ui/react-dom@2.1.4': - resolution: {integrity: sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react@0.25.4': - resolution: {integrity: sha512-lWRQ/UiTvSIBxohn0/2HFHEmnmOVRjl7j6XcRJuLH0ls6f/9AyHMWVzkAJFuwx0n9gaEeCmg9VccCSCJzbEJig==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - '@floating-ui/utils@0.1.6': - resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + '@floating-ui/dom@1.7.3': + resolution: {integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==} '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} @@ -858,6 +818,12 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead + '@internationalized/date@3.8.2': + resolution: {integrity: sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==} + + '@internationalized/number@3.6.4': + resolution: {integrity: sha512-P+/h+RDaiX8EGt3shB9AYM1+QgkvHmJ5rKi4/59k4sg9g58k9rqsRW0WxRO7jCoHyvVbFRRFKmVTdFYdehrxHg==} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -889,12 +855,21 @@ packages: '@juanelas/base64@1.1.5': resolution: {integrity: sha512-mjAF27LzwfYobdwqnxZgeucbKT5wRRNvILg3h5OvCWK+3F7mw/A1tnjHnNiTYtLmTvT/bM1jA5AX7eQawDGs1w==} - '@nanostores/react@0.7.3': - resolution: {integrity: sha512-/XuLAMENRu/Q71biW4AZ4qmU070vkZgiQ28gaTSNRPm2SZF5zGAR81zPE1MaMB4SeOp6ZTst92NBaG75XSspNg==} - engines: {node: ^18.0.0 || >=20.0.0} + '@kobalte/core@0.13.11': + resolution: {integrity: sha512-hK7TYpdib/XDb/r/4XDBFaO9O+3ZHz4ZWryV4/3BfES+tSQVgg2IJupDnztKXB0BqbSRy/aWlHKw1SPtNPYCFQ==} + peerDependencies: + solid-js: ^1.8.15 + + '@kobalte/utils@0.9.1': + resolution: {integrity: sha512-eeU60A3kprIiBDAfv9gUJX1tXGLuZiKMajUfSQURAF2pk4ZoMYiqIzmrMBvzcxP39xnYttgTyQEVLwiTZnrV4w==} + peerDependencies: + solid-js: ^1.8.8 + + '@nanostores/solid@1.0.0': + resolution: {integrity: sha512-H3P5mvHyX0oSlMMm4PF60zyUIhCCUoHeAJukdSjhYSAagxJUru7rde9/RfUH1tiMJ1Dt0o/c0DNX9QLUB+SvjA==} peerDependencies: - nanostores: ^0.9.0 || ^0.10.0 || ^0.11.0 - react: '>=18.0.0' + nanostores: '>=0.9.0 <2.0.0' + solid-js: ^1.6.0 '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -912,18 +887,6 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} @@ -947,95 +910,75 @@ packages: peerDependencies: size-limit: 11.2.0 - '@svgr/babel-plugin-add-jsx-attribute@8.0.0': - resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} - engines: {node: '>=14'} + '@solid-primitives/event-listener@2.4.3': + resolution: {integrity: sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} + '@solid-primitives/keyed@1.5.2': + resolution: {integrity: sha512-BgoEdqPw48URnI+L5sZIHdF4ua4Las1eWEBBPaoSFs42kkhnHue+rwCBPL2Z9ebOyQ75sUhUfOETdJfmv0D6Kg==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} + '@solid-primitives/map@0.4.13': + resolution: {integrity: sha512-B1zyFbsiTQvqPr+cuPCXO72sRuczG9Swncqk5P74NCGw1VE8qa/Ry9GlfI1e/VdeQYHjan+XkbE3rO2GW/qKew==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': - resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} - engines: {node: '>=14'} + '@solid-primitives/media@2.3.3': + resolution: {integrity: sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0': - resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} - engines: {node: '>=14'} + '@solid-primitives/props@3.2.2': + resolution: {integrity: sha512-lZOTwFJajBrshSyg14nBMEP0h8MXzPowGO0s3OeiR3z6nXHTfj0FhzDtJMv+VYoRJKQHG2QRnJTgCzK6erARAw==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0': - resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} - engines: {node: '>=14'} + '@solid-primitives/refs@1.1.2': + resolution: {integrity: sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0': - resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} - engines: {node: '>=14'} + '@solid-primitives/resize-observer@2.1.3': + resolution: {integrity: sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/babel-plugin-transform-svg-component@8.0.0': - resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} - engines: {node: '>=12'} + '@solid-primitives/rootless@1.5.2': + resolution: {integrity: sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/babel-preset@8.1.0': - resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} - engines: {node: '>=14'} + '@solid-primitives/static-store@0.1.2': + resolution: {integrity: sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw==} peerDependencies: - '@babel/core': ^7.0.0-0 + solid-js: ^1.6.12 - '@svgr/core@8.1.0': - resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} - engines: {node: '>=14'} - - '@svgr/hast-util-to-babel-ast@8.0.0': - resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} - engines: {node: '>=14'} - - '@svgr/plugin-jsx@8.1.0': - resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} - engines: {node: '>=14'} + '@solid-primitives/trigger@1.2.2': + resolution: {integrity: sha512-IWoptVc0SWYgmpBPpCMehS5b07+tpFcvw15tOQ3QbXedSYn6KP8zCjPkHNzMxcOvOicTneleeZDP7lqmz+PQ6g==} peerDependencies: - '@svgr/core': '*' - - '@testing-library/dom@9.3.4': - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} + solid-js: ^1.6.12 - '@testing-library/react@14.3.1': - resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} - engines: {node: '>=14'} + '@solid-primitives/utils@6.3.2': + resolution: {integrity: sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + solid-js: ^1.6.12 + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@types/apca-w3@0.1.3': resolution: {integrity: sha512-1C7e66xWCy1UOXHk/VXs4tjrY9hW3q3sykjJJxSC5TIIFt0lt9mh0ysdQxY0rVejTv4SW92G19j98PjqjCSz7Q==} - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -1045,8 +988,8 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/chai-subset@1.3.6': resolution: {integrity: sha512-m8lERkkQj+uek18hXOZuec3W/fCRTrU4hrnXjH3qhHy96ytuPaPiWGgu7sJb7tZxZonO75vYAjCvpe/e4VUwRw==} @@ -1080,17 +1023,6 @@ packages: '@types/node@20.19.9': resolution: {integrity: sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==} - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - - '@types/react-dom@18.3.7': - resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} - peerDependencies: - '@types/react': ^18.0.0 - - '@types/react@18.3.23': - resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} - '@types/semver@7.7.0': resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} @@ -1115,10 +1047,26 @@ packages: typescript: optional: true + '@typescript-eslint/project-service@8.39.0': + resolution: {integrity: sha512-CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@5.62.0': resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@8.39.0': + resolution: {integrity: sha512-8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.39.0': + resolution: {integrity: sha512-Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@5.62.0': resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1133,6 +1081,10 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@8.39.0': + resolution: {integrity: sha512-ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0Kg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@5.62.0': resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1142,25 +1094,36 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.39.0': + resolution: {integrity: sha512-ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@5.62.0': resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@8.39.0': + resolution: {integrity: sha512-4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@5.62.0': resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@8.39.0': + resolution: {integrity: sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vitejs/plugin-react@4.7.0': - resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@0.34.6': resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==} peerDependencies: @@ -1318,9 +1281,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -1337,10 +1297,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - array.prototype.findlastindex@1.2.6: resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} @@ -1353,10 +1309,6 @@ packages: resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} @@ -1393,6 +1345,16 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + babel-plugin-jsx-dom-expressions@0.39.8: + resolution: {integrity: sha512-/MVOIIjonylDXnrWmG23ZX82m9mtKATsVHB7zYlPfDR9Vdd/NBE48if+wv27bSkBtyO7EPMUlcUc4J63QwuACQ==} + peerDependencies: + '@babel/core': ^7.20.12 + + babel-preset-solid@1.9.6: + resolution: {integrity: sha512-HXTK9f93QxoH8dYn1M2mJdOlWgMsR88Lg/ul6QCZGkNTktjTE5HAf93YxQumHoCudLEtZrU1cFCMFOVho6GqFg==} + peerDependencies: + '@babel/core': ^7.0.0 + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1403,6 +1365,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -1452,12 +1417,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-lite@1.0.30001727: - resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + caniuse-lite@1.0.30001731: + resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} chai@4.5.0: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} @@ -1482,10 +1443,6 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1507,6 +1464,10 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -1550,6 +1511,21 @@ packages: peerDependencies: postcss: ^8.4 + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + cssdb@8.3.1: resolution: {integrity: sha512-XnDRQMXucLueX92yDe0LPKupXetWoFOgawr4O4X41l5TltgK2NVbJJVDnnOywDYfW1sTJ28AcXGKOqdRKwCcmQ==} @@ -1558,6 +1534,10 @@ packages: engines: {node: '>=4'} hasBin: true + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + cssstyle@3.0.0: resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} engines: {node: '>=14'} @@ -1612,10 +1592,6 @@ packages: resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} - deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1653,16 +1629,23 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} @@ -1671,8 +1654,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.187: - resolution: {integrity: sha512-cl5Jc9I0KGUoOoSbxvTywTa40uspGJt/BDBoDLoxJRSBpWh4FFXBsjNRHfQrONsV/OoEjDfHUmZQa2d6Ze4YgA==} + electron-to-chromium@1.5.194: + resolution: {integrity: sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1707,13 +1690,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} - engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -1884,22 +1860,12 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react-refresh@0.4.20: - resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} + eslint-plugin-solid@0.14.5: + resolution: {integrity: sha512-nfuYK09ah5aJG/oEN6P1qziy1zLgW4PDWe75VNPi4CEFYk1x2AEqwFeQfEPR7gNn0F2jOeqKhx2E+5oNCOBYWQ==} + engines: {node: '>=18.0.0'} peerDependencies: - eslint: '>=8.40' - - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + typescript: '>=4.8.4' eslint-plugin-tailwindcss@3.18.2: resolution: {integrity: sha512-QbkMLDC/OkkjFQ1iz/5jkMdHfiMu/uwujUHLAJK5iwNHD8RTxVTlsUezE0toTZ6VhybNBsk+gYGPDq2agfeRNA==} @@ -1937,6 +1903,10 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.1: resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1967,9 +1937,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2154,9 +2121,16 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} + html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -2188,14 +2162,13 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - is-arguments@1.2.0: - resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} - engines: {node: '>= 0.4'} - is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -2258,6 +2231,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-html@2.0.0: + resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==} + engines: {node: '>=8'} + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -2317,6 +2294,10 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -2339,10 +2320,6 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -2354,8 +2331,8 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true js-tokens@4.0.0: @@ -2407,9 +2384,15 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} + kebab-case@1.0.2: + resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -2443,26 +2426,15 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -2474,6 +2446,16 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + merge-anything@5.1.7: + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -2525,9 +2507,9 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@4.0.2: - resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} - engines: {node: ^14 || ^16 || >=18} + nanoid@5.0.9: + resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} + engines: {node: ^18 || >=20} hasBin: true nanoid@5.1.5: @@ -2551,9 +2533,6 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-buffer-encoding@1.0.3: resolution: {integrity: sha512-9hJZNChhQoCN1rCFScJiEwtzvWEJw2wSnu2nhDLD/YOYl1Ce8GbtnorsnjwwjpSk4sWE7zSp2etX6j7+bO7fVA==} @@ -2568,8 +2547,11 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nwsapi@2.2.21: + resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -2583,10 +2565,6 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -2595,10 +2573,6 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - object.fromentries@2.0.8: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} @@ -2920,17 +2894,10 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} @@ -2947,34 +2914,9 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-refresh@0.17.0: - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} - engines: {node: '>=0.10.0'} - - react-use-clipboard@1.0.9: - resolution: {integrity: sha512-OcMzc14usXhqQnAkvzmhCXAbW5WBT2LSgscVh2vKHXZfg72jFsSOsEearqdeC/nUj8YxEfLnziqe7AE7YkWFwA==} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - react-dom: ^16.8.0 || ^17 || ^18 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -3017,10 +2959,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3063,9 +3001,6 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - schema-utils@4.3.2: resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} @@ -3082,6 +3017,16 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + seroval-plugins@1.3.2: + resolution: {integrity: sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.3.2: + resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} + engines: {node: '>=10'} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -3134,8 +3079,23 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + solid-js@1.9.7: + resolution: {integrity: sha512-/saTKi8iWEM233n5OSi1YHCCuh66ZIQ7aK2hsToPe4tqGm7qAejU1SwNuTPivbWAYq7SjuHVVYxxuZQNRbICiw==} + + solid-presence@0.1.8: + resolution: {integrity: sha512-pWGtXUFWYYUZNbg5YpG5vkQJyOtzn2KXhxYaMx/4I+lylTLYkITOLevaCwMRN+liCVk0pqB6EayLWojNqBFECA==} + peerDependencies: + solid-js: ^1.8 + + solid-prevent-scroll@0.1.10: + resolution: {integrity: sha512-KplGPX2GHiWJLZ6AXYRql4M127PdYzfwvLJJXMkO+CMb8Np4VxqDAg5S8jLdwlEuBis/ia9DKw2M8dFx5u8Mhw==} + peerDependencies: + solid-js: ^1.8 + + solid-refresh@0.6.3: + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} + peerDependencies: + solid-js: ^1.3 source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} @@ -3170,13 +3130,6 @@ packages: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -3208,6 +3161,9 @@ packages: strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + style-to-object@1.0.9: + resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -3225,15 +3181,14 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svg-parser@2.0.4: - resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - tailwindcss@3.4.17: resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} engines: {node: '>=14.0.0'} @@ -3308,6 +3263,12 @@ packages: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -3354,8 +3315,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} hasBin: true @@ -3398,6 +3359,9 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} + validate-html-nesting@1.2.3: + resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==} + vite-node@0.34.6: resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} @@ -3410,10 +3374,21 @@ packages: rollup: '>=2.79.0' vite: '>=3.2.0' - vite-plugin-svgr@3.3.0: - resolution: {integrity: sha512-vWZMCcGNdPqgziYFKQ3Y95XP0d0YGp28+MM3Dp9cTa/px5CKcHHrIoPl2Jw81rgVm6/ZUNONzjXbZQZ7Kw66og==} + vite-plugin-solid-svg@0.8.1: + resolution: {integrity: sha512-ROGC2ae1eYUCMd+zfJtsbUtuZwsb6DZS0+Sy5/ZXDokOunGi0Ez/cL7OPdsixN3I0/rNYd/3hilo3kpRMAS+IA==} + peerDependencies: + solid-js: ^1 + vite: '>=4' + + vite-plugin-solid@2.11.8: + resolution: {integrity: sha512-hFrCxBfv3B1BmFqnJF4JOCYpjrmi/zwyeKjcomQ0khh8HFyQ8SbuBWQ7zGojfrz6HUOBFrJBNySDi/JgAHytWg==} peerDependencies: - vite: ^2.6.0 || 3 || 4 + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* + solid-js: ^1.7.2 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + '@testing-library/jest-dom': + optional: true vite@4.5.14: resolution: {integrity: sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==} @@ -3443,6 +3418,14 @@ packages: terser: optional: true + vitefu@1.1.1: + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + peerDependenciesMeta: + vite: + optional: true + vitest@0.34.6: resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} @@ -3493,8 +3476,8 @@ packages: resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} - webpack@5.100.2: - resolution: {integrity: sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==} + webpack@5.101.0: + resolution: {integrity: sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -3615,11 +3598,11 @@ snapshots: '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.27.6 + '@babel/helpers': 7.28.2 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -3631,7 +3614,7 @@ snapshots: '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 @@ -3646,10 +3629,14 @@ snapshots: '@babel/helper-globals@7.28.0': {} + '@babel/helper-module-imports@7.18.6': + dependencies: + '@babel/types': 7.28.2 + '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -3670,32 +3657,25 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.27.6': + '@babel/helpers@7.28.2': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.28.1 - - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.2 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.27.6': {} - '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/traverse@7.28.0': dependencies: @@ -3704,18 +3684,23 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 debug: 4.4.1 transitivePeerDependencies: - supports-color - '@babel/types@7.28.1': + '@babel/types@7.28.2': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 '@bcoe/v8-coverage@0.2.3': {} + '@corvu/utils@0.4.2(solid-js@1.9.7)': + dependencies: + '@floating-ui/dom': 1.7.3 + solid-js: 1.9.7 + '@csstools/cascade-layer-name-parser@1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)': dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) @@ -4123,31 +4108,15 @@ snapshots: '@figma/plugin-typings@1.116.0': {} - '@floating-ui/core@1.7.2': + '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.2': + '@floating-ui/dom@1.7.3': dependencies: - '@floating-ui/core': 1.7.2 + '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.7.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@floating-ui/react@0.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/utils': 0.1.6 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tabbable: 6.2.0 - - '@floating-ui/utils@0.1.6': {} - '@floating-ui/utils@0.2.10': {} '@humanwhocodes/config-array@0.13.0': @@ -4162,6 +4131,14 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@internationalized/date@3.8.2': + dependencies: + '@swc/helpers': 0.5.17 + + '@internationalized/number@3.6.4': + dependencies: + '@swc/helpers': 0.5.17 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -4198,10 +4175,33 @@ snapshots: '@juanelas/base64@1.1.5': {} - '@nanostores/react@0.7.3(nanostores@0.9.5)(react@18.3.1)': + '@kobalte/core@0.13.11(solid-js@1.9.7)': + dependencies: + '@floating-ui/dom': 1.7.3 + '@internationalized/date': 3.8.2 + '@internationalized/number': 3.6.4 + '@kobalte/utils': 0.9.1(solid-js@1.9.7) + '@solid-primitives/props': 3.2.2(solid-js@1.9.7) + '@solid-primitives/resize-observer': 2.1.3(solid-js@1.9.7) + solid-js: 1.9.7 + solid-presence: 0.1.8(solid-js@1.9.7) + solid-prevent-scroll: 0.1.10(solid-js@1.9.7) + + '@kobalte/utils@0.9.1(solid-js@1.9.7)': + dependencies: + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.7) + '@solid-primitives/keyed': 1.5.2(solid-js@1.9.7) + '@solid-primitives/map': 0.4.13(solid-js@1.9.7) + '@solid-primitives/media': 2.3.3(solid-js@1.9.7) + '@solid-primitives/props': 3.2.2(solid-js@1.9.7) + '@solid-primitives/refs': 1.1.2(solid-js@1.9.7) + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 + + '@nanostores/solid@1.0.0(nanostores@0.9.5)(solid-js@1.9.7)': dependencies: nanostores: 0.9.5 - react: 18.3.1 + solid-js: 1.9.7 '@nodelib/fs.scandir@2.1.5': dependencies: @@ -4218,16 +4218,6 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rolldown/pluginutils@1.0.0-beta.27': {} - - '@rollup/pluginutils@5.2.0(rollup@3.29.5)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 3.29.5 - '@rtsao/scc@1.1.0': {} '@sinclair/typebox@0.27.8': {} @@ -4248,123 +4238,95 @@ snapshots: '@size-limit/file': 11.2.0(size-limit@11.2.0) size-limit: 11.2.0 - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.0)': + '@solid-primitives/event-listener@2.4.3(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.28.0)': + '@solid-primitives/keyed@1.5.2(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 + solid-js: 1.9.7 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.28.0)': + '@solid-primitives/map@0.4.13(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 + '@solid-primitives/trigger': 1.2.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.28.0)': + '@solid-primitives/media@2.3.3(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.7) + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.7) + '@solid-primitives/static-store': 0.1.2(solid-js@1.9.7) + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.28.0)': + '@solid-primitives/props@3.2.2(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.28.0)': + '@solid-primitives/refs@1.1.2(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.28.0)': + '@solid-primitives/resize-observer@2.1.3(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.7) + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.7) + '@solid-primitives/static-store': 0.1.2(solid-js@1.9.7) + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.28.0)': + '@solid-primitives/rootless@1.5.2(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@svgr/babel-preset@8.1.0(@babel/core@7.28.0)': + '@solid-primitives/static-store@0.1.2(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.28.0) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.28.0) + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@svgr/core@8.1.0(typescript@5.8.3)': + '@solid-primitives/trigger@1.2.2(solid-js@1.9.7)': dependencies: - '@babel/core': 7.28.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) - camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.8.3) - snake-case: 3.0.4 - transitivePeerDependencies: - - supports-color - - typescript - - '@svgr/hast-util-to-babel-ast@8.0.0': - dependencies: - '@babel/types': 7.28.1 - entities: 4.5.0 - - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.8.3))': - dependencies: - '@babel/core': 7.28.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) - '@svgr/core': 8.1.0(typescript@5.8.3) - '@svgr/hast-util-to-babel-ast': 8.0.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 - '@testing-library/dom@9.3.4': + '@solid-primitives/utils@6.3.2(solid-js@1.9.7)': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.27.6 - '@types/aria-query': 5.0.4 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 + solid-js: 1.9.7 - '@testing-library/react@14.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@swc/helpers@0.5.17': dependencies: - '@babel/runtime': 7.27.6 - '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.3.7(@types/react@18.3.23) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@types/react' + tslib: 2.8.1 '@tootallnate/once@2.0.0': {} - '@types/apca-w3@0.1.3': {} + '@trysound/sax@0.2.0': {} - '@types/aria-query@5.0.4': {} + '@types/apca-w3@0.1.3': {} '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 + '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 - '@types/babel__traverse@7.20.7': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/chai-subset@1.3.6(@types/chai@4.3.20)': dependencies: @@ -4396,47 +4358,45 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/prop-types@15.7.15': {} - - '@types/react-dom@18.3.7(@types/react@18.3.23)': - dependencies: - '@types/react': 18.3.23 - - '@types/react@18.3.23': - dependencies: - '@types/prop-types': 15.7.15 - csstype: 3.1.3 - '@types/semver@7.7.0': {} - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) debug: 4.4.1 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare-lite: 1.4.0 semver: 7.7.2 - tsutils: 3.21.0(typescript@5.8.3) + tsutils: 3.21.0(typescript@5.9.2) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) debug: 4.4.1 eslint: 8.57.1 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.39.0(typescript@5.9.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) + '@typescript-eslint/types': 8.39.0 + debug: 4.4.1 + typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -4445,21 +4405,32 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/scope-manager@8.39.0': + dependencies: + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/visitor-keys': 8.39.0 + + '@typescript-eslint/tsconfig-utils@8.39.0(typescript@5.9.2)': + dependencies: + typescript: 5.9.2 + + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) debug: 4.4.1 eslint: 8.57.1 - tsutils: 3.21.0(typescript@5.8.3) + tsutils: 3.21.0(typescript@5.9.2) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - supports-color '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.8.3)': + '@typescript-eslint/types@8.39.0': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 @@ -4467,20 +4438,36 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 semver: 7.7.2 - tsutils: 3.21.0(typescript@5.8.3) + tsutils: 3.21.0(typescript@5.9.2) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.39.0(typescript@5.9.2)': + dependencies: + '@typescript-eslint/project-service': 8.39.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/visitor-keys': 8.39.0 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) '@types/json-schema': 7.0.15 '@types/semver': 7.7.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) eslint: 8.57.1 eslint-scope: 5.1.1 semver: 7.7.2 @@ -4488,24 +4475,28 @@ snapshots: - supports-color - typescript + '@typescript-eslint/utils@8.39.0(eslint@8.57.1)(typescript@5.9.2)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.39.0 + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) + eslint: 8.57.1 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.3.0': {} - - '@vitejs/plugin-react@4.7.0(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1))': + '@typescript-eslint/visitor-keys@8.39.0': dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 4.5.14(@types/node@20.19.9)(terser@5.43.1) - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types': 8.39.0 + eslint-visitor-keys: 4.2.1 + + '@ungap/structured-clone@1.3.0': {} '@vitest/coverage-v8@0.34.6(vitest@0.34.6(jsdom@22.1.0)(terser@5.43.1))': dependencies: @@ -4710,10 +4701,6 @@ snapshots: argparse@2.0.1: {} - aria-query@5.1.3: - dependencies: - deep-equal: 2.2.3 - aria-query@5.3.2: {} array-buffer-byte-length@1.0.2: @@ -4734,15 +4721,6 @@ snapshots: array-union@2.1.0: {} - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - array.prototype.findlastindex@1.2.6: dependencies: call-bind: 1.0.8 @@ -4767,14 +4745,6 @@ snapshots: es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 @@ -4796,7 +4766,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 + caniuse-lite: 1.0.30001731 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -4811,6 +4781,21 @@ snapshots: axobject-query@4.1.0: {} + babel-plugin-jsx-dom-expressions@0.39.8(@babel/core@7.28.0): + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/types': 7.28.2 + html-entities: 2.3.3 + parse5: 7.3.0 + validate-html-nesting: 1.2.3 + + babel-preset-solid@1.9.6(@babel/core@7.28.0): + dependencies: + '@babel/core': 7.28.0 + babel-plugin-jsx-dom-expressions: 0.39.8(@babel/core@7.28.0) + balanced-match@1.0.2: {} bigint-conversion@2.4.3: @@ -4819,6 +4804,8 @@ snapshots: binary-extensions@2.3.0: {} + boolbase@1.0.0: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -4834,8 +4821,8 @@ snapshots: browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.187 + caniuse-lite: 1.0.30001731 + electron-to-chromium: 1.5.194 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -4870,9 +4857,7 @@ snapshots: camelcase-css@2.0.1: {} - camelcase@6.3.0: {} - - caniuse-lite@1.0.30001727: {} + caniuse-lite@1.0.30001731: {} chai@4.5.0: dependencies: @@ -4911,8 +4896,6 @@ snapshots: chrome-trace-event@1.0.4: {} - clsx@2.1.1: {} - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -4929,6 +4912,8 @@ snapshots: commander@4.1.1: {} + commander@7.2.0: {} + concat-map@0.0.1: {} confbox@0.1.8: {} @@ -4939,14 +4924,14 @@ snapshots: dependencies: toggle-selection: 1.0.6 - cosmiconfig@8.3.6(typescript@5.8.3): + cosmiconfig@8.3.6(typescript@5.9.2): dependencies: import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 cross-spawn@7.0.6: dependencies: @@ -4970,10 +4955,34 @@ snapshots: dependencies: postcss: 8.5.6 + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-what@6.2.2: {} + cssdb@8.3.1: {} cssesc@3.0.0: {} + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + cssstyle@3.0.0: dependencies: rrweb-cssom: 0.6.0 @@ -5022,27 +5031,6 @@ snapshots: dependencies: type-detect: 4.1.0 - deep-equal@2.2.3: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - es-get-iterator: 1.1.3 - get-intrinsic: 1.3.0 - is-arguments: 1.2.0 - is-array-buffer: 3.0.5 - is-date-object: 1.1.0 - is-regex: 1.2.1 - is-shared-array-buffer: 1.0.4 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.7 - regexp.prototype.flags: 1.5.4 - side-channel: 1.1.0 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.19 - deep-is@0.1.4: {} define-data-property@1.1.4: @@ -5077,16 +5065,27 @@ snapshots: dependencies: esutils: 2.0.3 - dom-accessibility-api@0.5.16: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} domexception@4.0.0: dependencies: webidl-conversions: 7.0.0 - dot-case@3.0.4: + domhandler@5.0.3: dependencies: - no-case: 3.0.4 - tslib: 2.8.1 + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 dunder-proto@1.0.1: dependencies: @@ -5096,7 +5095,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.187: {} + electron-to-chromium@1.5.194: {} emoji-regex@8.0.0: {} @@ -5176,37 +5175,6 @@ snapshots: es-errors@1.3.0: {} - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - is-arguments: 1.2.0 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.1.1 - isarray: 2.0.5 - stop-iteration-iterator: 1.1.0 - - es-iterator-helpers@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - safe-array-concat: 1.1.3 - es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: @@ -5292,64 +5260,64 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-config-standard-with-typescript@36.1.1(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.8.3): + eslint-config-standard-with-typescript@36.1.1(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) eslint-plugin-n: 15.7.0(eslint@8.57.1) eslint-plugin-promise: 6.6.0(eslint@8.57.1) - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-config-standard@17.1.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1): + eslint-config-standard@17.1.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint-plugin-n@15.7.0(eslint@8.57.1))(eslint-plugin-promise@6.6.0(eslint@8.57.1))(eslint@8.57.1): dependencies: eslint: 8.57.1 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) eslint-plugin-n: 15.7.0(eslint@8.57.1) eslint-plugin-promise: 6.6.0(eslint@8.57.1) - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)): dependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.16.1 + is-core-module: 2.13.1 resolve: 1.22.10 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-boundaries@3.4.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1): + eslint-plugin-boundaries@3.4.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1): dependencies: chalk: 4.1.2 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) is-core-module: 2.13.1 micromatch: 4.0.5 transitivePeerDependencies: @@ -5364,7 +5332,7 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -5375,7 +5343,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -5387,7 +5355,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -5424,10 +5392,10 @@ snapshots: resolve: 1.22.10 semver: 7.7.2 - eslint-plugin-perfectionist@1.5.1(eslint@8.57.1)(typescript@5.8.3): + eslint-plugin-perfectionist@1.5.1(eslint@8.57.1)(typescript@5.9.2): dependencies: '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 is-core-module: 2.16.1 json5: 2.2.3 @@ -5449,35 +5417,18 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-react-refresh@0.4.20(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-react@7.37.5(eslint@8.57.1): + eslint-plugin-solid@0.14.5(eslint@8.57.1)(typescript@5.9.2): dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 + '@typescript-eslint/utils': 8.39.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 + is-html: 2.0.0 + kebab-case: 1.0.2 + known-css-properties: 0.30.0 + style-to-object: 1.0.9 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color eslint-plugin-tailwindcss@3.18.2(tailwindcss@3.4.17): dependencies: @@ -5510,6 +5461,8 @@ snapshots: eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@4.2.1: {} + eslint@8.57.1: dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) @@ -5573,8 +5526,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@2.0.2: {} - esutils@2.0.3: {} events@3.3.0: {} @@ -5774,8 +5725,12 @@ snapshots: dependencies: whatwg-encoding: 2.0.0 + html-entities@2.3.3: {} + html-escaper@2.0.2: {} + html-tags@3.3.1: {} + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 @@ -5811,17 +5766,14 @@ snapshots: inherits@2.0.4: {} + inline-style-parser@0.2.4: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.1.0 - is-arguments@1.2.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -5891,6 +5843,10 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-html@2.0.0: + dependencies: + html-tags: 3.3.1 + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -5945,6 +5901,8 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-what@4.1.16: {} + isarray@2.0.5: {} isexe@2.0.0: {} @@ -5970,15 +5928,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -5993,7 +5942,7 @@ snapshots: jiti@1.21.7: {} - jiti@2.4.2: {} + jiti@2.5.1: {} js-tokens@4.0.0: {} @@ -6013,7 +5962,7 @@ snapshots: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 + nwsapi: 2.2.21 parse5: 7.3.0 rrweb-cssom: 0.6.0 saxes: 6.0.0 @@ -6056,10 +6005,14 @@ snapshots: object.assign: 4.1.7 object.values: 1.2.1 + kebab-case@1.0.2: {} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + known-css-properties@0.30.0: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -6085,26 +6038,16 @@ snapshots: lodash.merge@4.6.2: {} - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - loupe@2.3.7: dependencies: get-func-name: 2.0.2 - lower-case@2.0.2: - dependencies: - tslib: 2.8.1 - lru-cache@10.4.3: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lz-string@1.5.0: {} - magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.4 @@ -6115,6 +6058,14 @@ snapshots: math-intrinsics@1.1.0: {} + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + merge-anything@5.1.7: + dependencies: + is-what: 4.1.16 + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -6164,7 +6115,7 @@ snapshots: nanoid@3.3.11: {} - nanoid@4.0.2: {} + nanoid@5.0.9: {} nanoid@5.1.5: {} @@ -6180,11 +6131,6 @@ snapshots: neo-async@2.6.2: {} - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.8.1 - node-buffer-encoding@1.0.3: {} node-releases@2.0.19: {} @@ -6193,7 +6139,11 @@ snapshots: normalize-range@0.1.2: {} - nwsapi@2.2.20: {} + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nwsapi@2.2.21: {} object-assign@4.1.1: {} @@ -6201,11 +6151,6 @@ snapshots: object-inspect@1.13.4: {} - object-is@1.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - object-keys@1.1.1: {} object.assign@4.1.7: @@ -6217,13 +6162,6 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.entries@1.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - object.fromentries@2.0.8: dependencies: call-bind: 1.0.8 @@ -6451,13 +6389,13 @@ snapshots: optionalDependencies: postcss: 8.5.6 - postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.8.3)(webpack@5.100.2): + postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.0): dependencies: - cosmiconfig: 8.3.6(typescript@5.8.3) + cosmiconfig: 8.3.6(typescript@5.9.2) jiti: 1.21.7 postcss: 8.5.6 semver: 7.7.2 - webpack: 5.100.2 + webpack: 5.101.0 transitivePeerDependencies: - typescript @@ -6596,24 +6534,12 @@ snapshots: prettier@3.6.2: {} - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - psl@1.15.0: dependencies: punycode: 2.3.1 @@ -6628,30 +6554,8 @@ snapshots: dependencies: safe-buffer: 5.2.1 - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-is@16.13.1: {} - - react-is@17.0.2: {} - react-is@18.3.1: {} - react-refresh@0.17.0: {} - - react-use-clipboard@1.0.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - copy-to-clipboard: 3.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - read-cache@1.0.0: dependencies: pify: 2.3.0 @@ -6700,12 +6604,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - reusify@1.1.0: {} rimraf@3.0.2: @@ -6749,10 +6647,6 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 @@ -6768,6 +6662,12 @@ snapshots: dependencies: randombytes: 2.1.0 + seroval-plugins@1.3.2(seroval@1.3.2): + dependencies: + seroval: 1.3.2 + + seroval@1.3.2: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -6832,7 +6732,7 @@ snapshots: dependencies: bytes-iec: 3.1.1 chokidar: 4.0.3 - jiti: 2.4.2 + jiti: 2.5.1 lilconfig: 3.1.3 nanospinner: 1.2.2 picocolors: 1.1.1 @@ -6840,10 +6740,30 @@ snapshots: slash@3.0.0: {} - snake-case@3.0.4: + solid-js@1.9.7: dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 + csstype: 3.1.3 + seroval: 1.3.2 + seroval-plugins: 1.3.2(seroval@1.3.2) + + solid-presence@0.1.8(solid-js@1.9.7): + dependencies: + '@corvu/utils': 0.4.2(solid-js@1.9.7) + solid-js: 1.9.7 + + solid-prevent-scroll@0.1.10(solid-js@1.9.7): + dependencies: + '@corvu/utils': 0.4.2(solid-js@1.9.7) + solid-js: 1.9.7 + + solid-refresh@0.6.3(solid-js@1.9.7): + dependencies: + '@babel/generator': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/types': 7.28.2 + solid-js: 1.9.7 + transitivePeerDependencies: + - supports-color source-map-js@1.2.1: {} @@ -6881,27 +6801,6 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.24.0 - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.0 - string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 @@ -6941,6 +6840,10 @@ snapshots: dependencies: acorn: 8.15.0 + style-to-object@1.0.9: + dependencies: + inline-style-parser: 0.2.4 + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.12 @@ -6961,12 +6864,18 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svg-parser@2.0.4: {} + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.2.2 + css-tree: 2.3.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 symbol-tree@3.2.4: {} - tabbable@6.2.0: {} - tailwindcss@3.4.17: dependencies: '@alloc/quick-lru': 5.2.0 @@ -6996,14 +6905,14 @@ snapshots: tapable@2.2.2: {} - terser-webpack-plugin@5.3.14(webpack@5.100.2): + terser-webpack-plugin@5.3.14(webpack@5.101.0): dependencies: '@jridgewell/trace-mapping': 0.3.29 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.43.1 - webpack: 5.100.2 + webpack: 5.101.0 terser@5.43.1: dependencies: @@ -7056,6 +6965,10 @@ snapshots: dependencies: punycode: 2.3.1 + ts-api-utils@2.1.0(typescript@5.9.2): + dependencies: + typescript: 5.9.2 + ts-interface-checker@0.1.13: {} tsconfig-paths@3.15.0: @@ -7069,10 +6982,10 @@ snapshots: tslib@2.8.1: {} - tsutils@3.21.0(typescript@5.8.3): + tsutils@3.21.0(typescript@5.9.2): dependencies: tslib: 1.14.1 - typescript: 5.8.3 + typescript: 5.9.2 type-check@0.4.0: dependencies: @@ -7115,7 +7028,7 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript@5.8.3: {} + typescript@5.9.2: {} ufo@1.6.1: {} @@ -7159,6 +7072,8 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + validate-html-nesting@1.2.3: {} + vite-node@0.34.6(@types/node@20.19.9)(terser@5.43.1): dependencies: cac: 6.7.14 @@ -7183,16 +7098,24 @@ snapshots: rollup: 3.29.5 vite: 4.5.14(@types/node@20.19.9)(terser@5.43.1) - vite-plugin-svgr@3.3.0(rollup@3.29.5)(typescript@5.8.3)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)): + vite-plugin-solid-svg@0.8.1(solid-js@1.9.7)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@3.29.5) - '@svgr/core': 8.1.0(typescript@5.8.3) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) + solid-js: 1.9.7 + svgo: 3.3.2 vite: 4.5.14(@types/node@20.19.9)(terser@5.43.1) + + vite-plugin-solid@2.11.8(solid-js@1.9.7)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)): + dependencies: + '@babel/core': 7.28.0 + '@types/babel__core': 7.20.5 + babel-preset-solid: 1.9.6(@babel/core@7.28.0) + merge-anything: 5.1.7 + solid-js: 1.9.7 + solid-refresh: 0.6.3(solid-js@1.9.7) + vite: 4.5.14(@types/node@20.19.9)(terser@5.43.1) + vitefu: 1.1.1(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) transitivePeerDependencies: - - rollup - supports-color - - typescript vite@4.5.14(@types/node@20.19.9)(terser@5.43.1): dependencies: @@ -7204,6 +7127,10 @@ snapshots: fsevents: 2.3.3 terser: 5.43.1 + vitefu@1.1.1(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)): + optionalDependencies: + vite: 4.5.14(@types/node@20.19.9)(terser@5.43.1) + vitest@0.34.6(jsdom@22.1.0)(terser@5.43.1): dependencies: '@types/chai': 4.3.20 @@ -7258,7 +7185,7 @@ snapshots: webpack-sources@3.3.3: {} - webpack@5.100.2: + webpack@5.101.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -7282,7 +7209,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From 751d55e74f960b4afb60d21ca7ad52883639ee11 Mon Sep 17 00:00:00 2001 From: Izolda Date: Tue, 5 Aug 2025 19:22:24 +0300 Subject: [PATCH 3/3] [solid] remove solid from tsconfig, lint, revert vite to deps --- .eslintrc.cjs | 5 +- package.json | 14 +++--- pnpm-lock.yaml | 46 ++++++++--------- .../figma/nodes/create-polychrom-node.ts | 2 +- src/ui/components/App.tsx | 15 ++++-- src/ui/components/AppContent.tsx | 7 ++- src/ui/components/ColorIndicator.tsx | 36 ++++++++++---- src/ui/components/ContrastSample.tsx | 26 +++++----- src/ui/components/HelpLink.tsx | 10 +++- src/ui/components/LurkersLink.tsx | 10 +++- src/ui/components/ProgressBar.tsx | 24 +++++++-- .../RewardingAnimationContentText.tsx | 2 +- .../SegmentedFontStyleDefinition.tsx | 8 ++- src/ui/components/Selection.tsx | 4 +- src/ui/components/SelectionContent.tsx | 30 ++++++++---- src/ui/components/SelectionsList.tsx | 2 +- src/ui/components/SettingsButton.tsx | 36 +++++++++----- src/ui/components/TextMetrics.tsx | 49 ++++++++++--------- src/ui/components/ThemeVariablesProvider.tsx | 3 +- src/ui/components/Tooltip.tsx | 19 ++++--- .../infoMessages/EmptySelectionMessage.tsx | 18 +++---- .../InvalidBackgroundSelectionMessage.tsx | 18 +++---- .../UnprocessedBlendModesSelectionMessage.tsx | 18 +++---- src/ui/services/blend/format-color-data.ts | 2 +- src/ui/stores/selected-nodes.ts | 13 +++-- vite.config.ui.ts | 2 +- 26 files changed, 245 insertions(+), 174 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index ce7affe..c50a719 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -27,7 +27,7 @@ module.exports = { ecmaVersion: 'latest', sourceType: 'module', project: './tsconfig.json', - jsxPragma: "Solid" + jsxPragma: 'Solid', }, plugins: ['solid', 'prettier', 'jsx-a11y', 'boundaries'], rules: { @@ -69,9 +69,6 @@ module.exports = { ['~test-utils', './src/test-utils'], ], }, - solid: { - version: 'detect', - }, 'boundaries/elements': [ { type: 'api', diff --git a/package.json b/package.json index b842a7a..a6c7818 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,12 @@ "solid-js": "^1.9.7", "tailwindcss": "^3.3.2", "typescript": "^5.0.2", - "uint8-to-hex": "^2.0.0" + "uint8-to-hex": "^2.0.0", + "vite": "^4.4.0", + "vite-plugin-singlefile": "^0.13.5", + "vite-plugin-solid": "^2.11.8", + "vite-plugin-solid-svg": "^0.8.1", + "vitest": "^0.34.1" }, "devDependencies": { "@size-limit/preset-small-lib": "^11.2.0", @@ -60,12 +65,7 @@ "eslint-plugin-tailwindcss": "^3.13.0", "jsdom": "^22.1.0", "prettier": "^3.0.2", - "size-limit": "^11.2.0", - "vite": "^4.4.0", - "vite-plugin-singlefile": "^0.13.5", - "vite-plugin-solid": "^2.11.8", - "vite-plugin-solid-svg": "^0.8.1", - "vitest": "^0.34.1" + "size-limit": "^11.2.0" }, "size-limit": [ { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb87bf2..c35f553 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,21 @@ importers: uint8-to-hex: specifier: ^2.0.0 version: 2.0.1 + vite: + specifier: ^4.4.0 + version: 4.5.14(@types/node@20.19.9)(terser@5.43.1) + vite-plugin-singlefile: + specifier: ^0.13.5 + version: 0.13.5(rollup@3.29.5)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) + vite-plugin-solid: + specifier: ^2.11.8 + version: 2.11.8(solid-js@1.9.7)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) + vite-plugin-solid-svg: + specifier: ^0.8.1 + version: 0.8.1(solid-js@1.9.7)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) + vitest: + specifier: ^0.34.1 + version: 0.34.6(jsdom@22.1.0)(terser@5.43.1) devDependencies: '@size-limit/preset-small-lib': specifier: ^11.2.0 @@ -132,21 +147,6 @@ importers: size-limit: specifier: ^11.2.0 version: 11.2.0 - vite: - specifier: ^4.4.0 - version: 4.5.14(@types/node@20.19.9)(terser@5.43.1) - vite-plugin-singlefile: - specifier: ^0.13.5 - version: 0.13.5(rollup@3.29.5)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) - vite-plugin-solid: - specifier: ^2.11.8 - version: 2.11.8(solid-js@1.9.7)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) - vite-plugin-solid-svg: - specifier: ^0.8.1 - version: 0.8.1(solid-js@1.9.7)(vite@4.5.14(@types/node@20.19.9)(terser@5.43.1)) - vitest: - specifier: ^0.34.1 - version: 0.34.6(jsdom@22.1.0)(terser@5.43.1) packages: @@ -1654,8 +1654,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.194: - resolution: {integrity: sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==} + electron-to-chromium@1.5.195: + resolution: {integrity: sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3561,8 +3561,8 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} hasBin: true @@ -4822,7 +4822,7 @@ snapshots: browserslist@4.25.1: dependencies: caniuse-lite: 1.0.30001731 - electron-to-chromium: 1.5.194 + electron-to-chromium: 1.5.195 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -5095,7 +5095,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.194: {} + electron-to-chromium@1.5.195: {} emoji-regex@8.0.0: {} @@ -6385,7 +6385,7 @@ snapshots: postcss-load-config@4.0.2(postcss@8.5.6): dependencies: lilconfig: 3.1.3 - yaml: 2.8.0 + yaml: 2.8.1 optionalDependencies: postcss: 8.5.6 @@ -7302,7 +7302,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.8.0: {} + yaml@2.8.1: {} yocto-queue@0.1.0: {} diff --git a/src/api/services/figma/nodes/create-polychrom-node.ts b/src/api/services/figma/nodes/create-polychrom-node.ts index f0e38ed..7f9b5b9 100644 --- a/src/api/services/figma/nodes/create-polychrom-node.ts +++ b/src/api/services/figma/nodes/create-polychrom-node.ts @@ -3,7 +3,7 @@ import { getNodeFills } from '~api/services/figma/nodes/get-node-fills.ts'; import { type PolychromNode } from '~types/common.ts'; import { formatHex, modeOklch, useMode } from 'culori/fn'; -const convertToOklch = useMode(modeOklch) +const convertToOklch = useMode(modeOklch); export const createPolychromNode = ( node: PageNode | SceneNode, diff --git a/src/ui/components/App.tsx b/src/ui/components/App.tsx index 88ec842..54bd5fd 100644 --- a/src/ui/components/App.tsx +++ b/src/ui/components/App.tsx @@ -4,7 +4,11 @@ import { AppContent } from '~ui/components/AppContent.tsx'; import { HelpLink } from '~ui/components/HelpLink.tsx'; import { LurkersLink } from '~ui/components/LurkersLink.tsx'; import { SettingsButton } from '~ui/components/SettingsButton.tsx'; -import { Tooltip, TooltipContent, TooltipTrigger } from '~ui/components/Tooltip.tsx'; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from '~ui/components/Tooltip.tsx'; import { type JSX, onMount } from 'solid-js'; import { $isP3 } from '../stores/selected-nodes'; @@ -19,7 +23,7 @@ export const App = (): JSX.Element => { type: MessageTypes.UiReady, }, }, - '*', + '*' ); }); @@ -40,13 +44,14 @@ export const App = (): JSX.Element => { }} class="flex items-center" > -

+

P3

- File color profile + + File color profile + )} diff --git a/src/ui/components/AppContent.tsx b/src/ui/components/AppContent.tsx index 51fa9bb..6348d89 100644 --- a/src/ui/components/AppContent.tsx +++ b/src/ui/components/AppContent.tsx @@ -1,16 +1,15 @@ import { useStore } from '@nanostores/solid'; import { EmptySelectionMessage } from '~ui/components/infoMessages/EmptySelectionMessage'; import { InvalidBackgroundSelectionMessage } from '~ui/components/infoMessages/InvalidBackgroundSelectionMessage'; -import { - UnprocessedBlendModesSelectionMessage, -} from '~ui/components/infoMessages/UnprocessedBlendModesSelectionMessage'; +import { UnprocessedBlendModesSelectionMessage } from '~ui/components/infoMessages/UnprocessedBlendModesSelectionMessage'; import { Selection } from '~ui/components/Selection'; import { SelectionsList } from '~ui/components/SelectionsList'; import { $contrastConclusion, $isEmptySelection, $isInvalidBackground, - $isMultiSelection, $isSingleSelection, + $isMultiSelection, + $isSingleSelection, $isUnprocessedBlendModes, } from '~ui/stores/selected-nodes'; import { isEmpty } from '~utils/not-empty.ts'; diff --git a/src/ui/components/ColorIndicator.tsx b/src/ui/components/ColorIndicator.tsx index 526a556..4b79c76 100644 --- a/src/ui/components/ColorIndicator.tsx +++ b/src/ui/components/ColorIndicator.tsx @@ -1,7 +1,11 @@ import { useStore } from '@nanostores/solid'; import { ColorPreview } from '~ui/components/ColorPreview.tsx'; import { ThemeVariablesKeys } from '~ui/components/ThemeVariablesProvider.tsx'; -import { Tooltip, TooltipContent, TooltipTrigger } from '~ui/components/Tooltip.tsx'; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from '~ui/components/Tooltip.tsx'; import { getFormatterForCSS, getFormatterForDisplaying, @@ -26,12 +30,20 @@ export const ColorIndicator = (props: ColorIndicatorProps): JSX.Element => { const [isOpen, setIsOpen] = createSignal(false); const [isCopied, setIsCopied] = createSignal(false); - const [eventType, setEventType] = createSignal<'click' | 'pointerenter' | 'pointerleave'>('pointerenter'); + const [eventType, setEventType] = createSignal< + 'click' | 'pointerenter' | 'pointerleave' + >('pointerenter'); - const formatColorForDisplay = createMemo(() => getFormatterForDisplaying(colorSpaceDisplayMode())); - const displayValue = createMemo(() => formatColorForDisplay()(props.fill.oklch)); + const formatColorForDisplay = createMemo(() => + getFormatterForDisplaying(colorSpaceDisplayMode()) + ); + const displayValue = createMemo(() => + formatColorForDisplay()(props.fill.oklch) + ); - const formatColorForCSS = createMemo(() => getFormatterForCSS(colorSpaceDisplayMode())); + const formatColorForCSS = createMemo(() => + getFormatterForCSS(colorSpaceDisplayMode()) + ); const cssValue = createMemo(() => formatColorForCSS()(props.fill.oklch)); const handleCopy = (): void => { @@ -54,16 +66,18 @@ export const ColorIndicator = (props: ColorIndicatorProps): JSX.Element => { } }; - const handleChangeEventType = (eventType: 'click' | 'pointerenter' | 'pointerleave') => (): void => { - setEventType(eventType); - }; + const handleChangeEventType = + (eventType: 'click' | 'pointerenter' | 'pointerleave') => (): void => { + setEventType(eventType); + }; return ( + onPointerLeave={handleChangeEventType('pointerleave')} + >
- {displayValue()} + + {displayValue()} +
diff --git a/src/ui/components/ContrastSample.tsx b/src/ui/components/ContrastSample.tsx index 5a34e8a..d24699d 100644 --- a/src/ui/components/ContrastSample.tsx +++ b/src/ui/components/ContrastSample.tsx @@ -11,18 +11,14 @@ interface Props { const exampleText = 'Aa'; export const ContrastSample = (props: Props): JSX.Element => ( -

- - {exampleText} - -

- ); +

+ {exampleText} +

+); diff --git a/src/ui/components/HelpLink.tsx b/src/ui/components/HelpLink.tsx index 550ac47..707ec60 100644 --- a/src/ui/components/HelpLink.tsx +++ b/src/ui/components/HelpLink.tsx @@ -1,5 +1,9 @@ import HelpIcon from '~ui/assets/icons/help-icon.svg'; -import { Tooltip, TooltipContent, TooltipTrigger } from '~ui/components/Tooltip.tsx'; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from '~ui/components/Tooltip.tsx'; import { type JSX } from 'solid-js'; import { APCADocumentationURL } from '../../constants.ts'; @@ -17,7 +21,9 @@ export const HelpLink = (): JSX.Element => { - APCA in a Nutshell + + APCA in a Nutshell + ); }; diff --git a/src/ui/components/LurkersLink.tsx b/src/ui/components/LurkersLink.tsx index 2b3558d..d193e9d 100644 --- a/src/ui/components/LurkersLink.tsx +++ b/src/ui/components/LurkersLink.tsx @@ -1,5 +1,9 @@ import LurkersIcon from '~ui/assets/icons/lurkers-icon.svg'; -import { Tooltip, TooltipContent, TooltipTrigger } from '~ui/components/Tooltip.tsx'; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from '~ui/components/Tooltip.tsx'; import { type JSX } from 'solid-js'; import { evilMartiansSiteURL } from '../../constants.ts'; @@ -19,7 +23,9 @@ export const LurkersLink = (): JSX.Element => {
- Evil Martians + + Evil Martians + ); }; diff --git a/src/ui/components/ProgressBar.tsx b/src/ui/components/ProgressBar.tsx index 22e64db..a6c7aac 100644 --- a/src/ui/components/ProgressBar.tsx +++ b/src/ui/components/ProgressBar.tsx @@ -23,7 +23,9 @@ const conclusionScores = Object.values(conclusions).reverse().slice(1); export const ProgressBar = (props: Props): JSX.Element => { const rewardAnimationLaunch = useStore($rewardAnimationLaunch); - const maxScale = createMemo(() => props.apca > 0 ? APCA_POSITIVE_MAX_SCALE : APCA_NEGATIVE_MAX_SCALE); + const maxScale = createMemo(() => + props.apca > 0 ? APCA_POSITIVE_MAX_SCALE : APCA_NEGATIVE_MAX_SCALE + ); const barWidth = createMemo(() => maxScale() * SCALE); const filledSegmentWidth = createMemo(() => Math.abs(props.apca) * SCALE); @@ -64,7 +66,7 @@ export const ProgressBar = (props: Props): JSX.Element => { if (isEmpty(value)) return null; const position = value * SCALE - SERIF_OFFSET; - console.table({position, value} ); + return (
{ }} class={`${isContextText ? 'h-1' : 'h-0.5'} absolute top-1/2 w-px -translate-y-1/2`} > - + - + - +
diff --git a/src/ui/components/RewardingAnimationContentText.tsx b/src/ui/components/RewardingAnimationContentText.tsx index 4cdf271..fb6cf8a 100644 --- a/src/ui/components/RewardingAnimationContentText.tsx +++ b/src/ui/components/RewardingAnimationContentText.tsx @@ -3,7 +3,7 @@ import { type JSX } from 'solid-js'; export const RewardingAnimationContentText = (): JSX.Element => { return (
-
+
); }; diff --git a/src/ui/components/SegmentedFontStyleDefinition.tsx b/src/ui/components/SegmentedFontStyleDefinition.tsx index 7d51c82..bf33e25 100644 --- a/src/ui/components/SegmentedFontStyleDefinition.tsx +++ b/src/ui/components/SegmentedFontStyleDefinition.tsx @@ -17,8 +17,12 @@ export const SegmentedFontStyleDefinition = (props: Props): JSX.Element => { }) ); - const primaryFormatted = createMemo(() => formatColorForTheme(props.primaryColor)); - const secondaryFormatted = createMemo(() => formatColorForTheme(props.secondaryColor, 0.12)); + const primaryFormatted = createMemo(() => + formatColorForTheme(props.primaryColor) + ); + const secondaryFormatted = createMemo(() => + formatColorForTheme(props.secondaryColor, 0.12) + ); return (