From a2d1310780e6d3d61266d201726f5fdd6e8dc2a6 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 19 May 2025 20:13:50 +0200 Subject: [PATCH] Migrate to vite & new structure Signed-off-by: Bryan Frimin Signed-off-by: Sacha Al Himdani --- GNUmakefile | 22 +- TODO.md | 5 + apps/console/index.html | 47 + apps/console/relay.config.json | 6 + apps/console/src/vite-env.d.ts | 11 + apps/console/tsconfig.app.json | 30 + apps/console/tsconfig.node.json | 25 + apps/console/vite.config.ts | 23 + apps/console2/.env | 1 + apps/console2/.gitattributes | 2 + apps/console2/.gitignore | 25 + apps/console2/README.md | 54 + apps/console2/eslint.config.js | 28 + apps/console2/index.html | 13 + apps/console2/package.json | 44 + apps/console2/public/vite.svg | 1 + apps/console2/relay.config.json | 6 + apps/console2/src/App.tsx | 7 + apps/console2/src/assets/react.svg | 1 + apps/console2/src/index.css | 4 + apps/console2/src/layouts/MainLayout.tsx | 118 + .../__generated__/MainLayoutQuery.graphql.ts | 132 + apps/console2/src/main.tsx | 16 + apps/console2/src/pages/auth/LoginPage.tsx | 73 + .../console2/src/providers/RelayProviders.tsx | 131 + .../src/providers/TranslatorProvider.tsx | 18 + apps/console2/src/routes.tsx | 38 + apps/console2/src/vite-env.d.ts | 9 + apps/console2/tsconfig.app.json | 27 + apps/console2/tsconfig.json | 7 + apps/console2/tsconfig.node.json | 25 + apps/console2/vite.config.ts | 14 + package-lock.json | 8447 +++++++++++------ package.json | 5 +- packages/helpers/package.json | 21 + packages/helpers/src/index.ts | 1 + packages/helpers/src/object.ts | 6 + packages/helpers/tsconfig.json | 5 + packages/i18n/TranslatorProvider.tsx | 60 + packages/i18n/package.json | 19 + packages/prettier/package.json | 12 + packages/prettier/prettier.config.js | 3 + packages/ui/.gitignore | 26 + packages/ui/.storybook/main.ts | 28 + packages/ui/.storybook/preview.css | 3 + packages/ui/.storybook/preview.tsx | 27 + packages/ui/README.md | 54 + packages/ui/eslint.config.js | 28 + packages/ui/index.html | 12 + packages/ui/package.json | 66 + .../ui/src/Atoms/Avatar/Avatar.stories.tsx | 16 + packages/ui/src/Atoms/Avatar/Avatar.tsx | 36 + .../ui/src/Atoms/Button/Button.stories.tsx | 54 + packages/ui/src/Atoms/Button/Button.tsx | 83 + .../src/Atoms/Dropdown/Dropdown.stories.tsx | 35 + packages/ui/src/Atoms/Dropdown/Dropdown.tsx | 79 + packages/ui/src/Atoms/Icons/Frame-1.svg | 3 + packages/ui/src/Atoms/Icons/Frame-2.svg | 3 + packages/ui/src/Atoms/Icons/Frame.svg | 3 + .../ui/src/Atoms/Icons/IconArrowBoxLeft.tsx | 8 + .../Atoms/Icons/IconArrowCornerDownLeft.tsx | 8 + packages/ui/src/Atoms/Icons/IconArrowDown.tsx | 8 + .../ui/src/Atoms/Icons/IconArrowInbox.tsx | 8 + .../ui/src/Atoms/Icons/IconArrowInbox1.tsx | 8 + packages/ui/src/Atoms/Icons/IconArrowLink.tsx | 9 + packages/ui/src/Atoms/Icons/IconArrowUp.tsx | 8 + packages/ui/src/Atoms/Icons/IconBank.tsx | 8 + packages/ui/src/Atoms/Icons/IconBell2.tsx | 8 + packages/ui/src/Atoms/Icons/IconBlock.tsx | 8 + packages/ui/src/Atoms/Icons/IconBlock1.tsx | 8 + packages/ui/src/Atoms/Icons/IconBook.tsx | 8 + packages/ui/src/Atoms/Icons/IconCalendar1.tsx | 9 + packages/ui/src/Atoms/Icons/IconCalendar2.tsx | 8 + .../ui/src/Atoms/Icons/IconCheckmark1.tsx | 8 + .../src/Atoms/Icons/IconCheckmark2Small.tsx | 8 + .../ui/src/Atoms/Icons/IconChevronDown.tsx | 8 + .../Icons/IconChevronGrabberVertical.tsx | 8 + .../ui/src/Atoms/Icons/IconChevronLeft.tsx | 8 + .../ui/src/Atoms/Icons/IconChevronRight.tsx | 8 + .../Icons/IconChevronTriangleDownSmall.tsx | 8 + packages/ui/src/Atoms/Icons/IconChevronUp.tsx | 8 + .../ui/src/Atoms/Icons/IconCircleCheck.tsx | 9 + .../ui/src/Atoms/Icons/IconCircleCheck1.tsx | 9 + .../ui/src/Atoms/Icons/IconCircleInfo.tsx | 8 + .../ui/src/Atoms/Icons/IconCircleProgress.tsx | 8 + .../Atoms/Icons/IconCircleQuestionmark.tsx | 10 + .../Atoms/Icons/IconCircleQuestionmark1.tsx | 8 + .../Icons/IconCircleQuestionmarkSolid.tsx | 8 + packages/ui/src/Atoms/Icons/IconCircleX.tsx | 8 + packages/ui/src/Atoms/Icons/IconCollapse.tsx | 8 + .../ui/src/Atoms/Icons/IconCrossLargeX.tsx | 8 + .../Atoms/Icons/IconDotGrid1x3Horizontal.tsx | 10 + packages/ui/src/Atoms/Icons/IconExpand.tsx | 10 + packages/ui/src/Atoms/Icons/IconFilter.tsx | 10 + packages/ui/src/Atoms/Icons/IconFire3.tsx | 8 + packages/ui/src/Atoms/Icons/IconFolder2.tsx | 8 + .../ui/src/Atoms/Icons/IconFolderUpload.tsx | 8 + packages/ui/src/Atoms/Icons/IconFrame.tsx | 8 + packages/ui/src/Atoms/Icons/IconFrame1.tsx | 8 + packages/ui/src/Atoms/Icons/IconFrame2.tsx | 8 + packages/ui/src/Atoms/Icons/IconGroup1.tsx | 8 + packages/ui/src/Atoms/Icons/IconGroup11.tsx | 11 + packages/ui/src/Atoms/Icons/IconHome.tsx | 8 + packages/ui/src/Atoms/Icons/IconImage.tsx | 10 + packages/ui/src/Atoms/Icons/IconImport2.tsx | 9 + .../ui/src/Atoms/Icons/IconInProgress.tsx | 9 + .../ui/src/Atoms/Icons/IconInboxEmpty.tsx | 8 + packages/ui/src/Atoms/Icons/IconListStack.tsx | 10 + .../src/Atoms/Icons/IconMagnifyingGlass.tsx | 8 + .../ui/src/Atoms/Icons/IconNotStarted.tsx | 8 + packages/ui/src/Atoms/Icons/IconPageCheck.tsx | 9 + .../ui/src/Atoms/Icons/IconPageCheck1.tsx | 9 + packages/ui/src/Atoms/Icons/IconPageCross.tsx | 9 + .../ui/src/Atoms/Icons/IconPageTextLine.tsx | 8 + .../ui/src/Atoms/Icons/IconPageTextSolid.tsx | 8 + packages/ui/src/Atoms/Icons/IconPencil.tsx | 8 + packages/ui/src/Atoms/Icons/IconPeopleAdd.tsx | 10 + .../ui/src/Atoms/Icons/IconPeopleAdd2Line.tsx | 8 + packages/ui/src/Atoms/Icons/IconPlusLarge.tsx | 8 + packages/ui/src/Atoms/Icons/IconPlusSmall.tsx | 8 + packages/ui/src/Atoms/Icons/IconPriority.tsx | 10 + .../ui/src/Atoms/Icons/IconRadioUnchecked.tsx | 8 + .../ui/src/Atoms/Icons/IconRecKeyframe.tsx | 8 + packages/ui/src/Atoms/Icons/IconSend.tsx | 8 + .../ui/src/Atoms/Icons/IconSettingsGear2.tsx | 8 + packages/ui/src/Atoms/Icons/IconShield.tsx | 8 + packages/ui/src/Atoms/Icons/IconSignature.tsx | 8 + .../Atoms/Icons/IconSquareBehindSquare2.tsx | 8 + packages/ui/src/Atoms/Icons/IconStore.tsx | 10 + packages/ui/src/Atoms/Icons/IconSun.tsx | 16 + packages/ui/src/Atoms/Icons/IconTodo.tsx | 9 + packages/ui/src/Atoms/Icons/IconTodo2.tsx | 12 + packages/ui/src/Atoms/Icons/IconTrashCan.tsx | 12 + .../ui/src/Atoms/Icons/IconTrashCanSolid.tsx | 8 + packages/ui/src/Atoms/Icons/IconUpload.tsx | 9 + packages/ui/src/Atoms/Icons/Image.svg | 5 + packages/ui/src/Atoms/Icons/Send.svg | 3 + packages/ui/src/Atoms/Icons/Todo.tsx | 9 + packages/ui/src/Atoms/Icons/Todo2.tsx | 12 + .../ui/src/Atoms/Icons/arrow-box-left.svg | 3 + .../Atoms/Icons/arrow-corner-down-left.svg | 3 + packages/ui/src/Atoms/Icons/arrow-down.svg | 3 + packages/ui/src/Atoms/Icons/arrow-inbox-1.svg | 3 + packages/ui/src/Atoms/Icons/arrow-inbox.svg | 3 + packages/ui/src/Atoms/Icons/arrow-link.svg | 4 + packages/ui/src/Atoms/Icons/arrow-up.svg | 3 + packages/ui/src/Atoms/Icons/bank.svg | 3 + packages/ui/src/Atoms/Icons/bell-2.svg | 3 + packages/ui/src/Atoms/Icons/block-1.svg | 3 + packages/ui/src/Atoms/Icons/block.svg | 3 + packages/ui/src/Atoms/Icons/book.svg | 3 + packages/ui/src/Atoms/Icons/calendar-1.svg | 4 + packages/ui/src/Atoms/Icons/calendar-2.svg | 3 + packages/ui/src/Atoms/Icons/checkmark-1.svg | 3 + .../ui/src/Atoms/Icons/checkmark-2-small.svg | 3 + packages/ui/src/Atoms/Icons/chevron-down.svg | 3 + .../Atoms/Icons/chevron-grabber-vertical.svg | 3 + packages/ui/src/Atoms/Icons/chevron-left.svg | 3 + packages/ui/src/Atoms/Icons/chevron-right.svg | 3 + .../Icons/chevron-triangle-down-small.svg | 3 + packages/ui/src/Atoms/Icons/chevron-up.svg | 3 + .../ui/src/Atoms/Icons/circle-check-1.svg | 4 + packages/ui/src/Atoms/Icons/circle-check.svg | 4 + packages/ui/src/Atoms/Icons/circle-info.svg | 3 + .../ui/src/Atoms/Icons/circle-progress.svg | 3 + .../src/Atoms/Icons/circle-questionmark-1.svg | 3 + .../Atoms/Icons/circle-questionmark-solid.svg | 3 + .../src/Atoms/Icons/circle-questionmark.svg | 5 + packages/ui/src/Atoms/Icons/circle-x.svg | 3 + packages/ui/src/Atoms/Icons/collapse.svg | 3 + packages/ui/src/Atoms/Icons/cross-large-x.svg | 3 + .../Atoms/Icons/dot-grid-1x3-horizontal.svg | 5 + packages/ui/src/Atoms/Icons/expand.svg | 5 + packages/ui/src/Atoms/Icons/filter.svg | 5 + packages/ui/src/Atoms/Icons/fire-3.svg | 3 + packages/ui/src/Atoms/Icons/folder-2.svg | 3 + packages/ui/src/Atoms/Icons/folder-upload.svg | 3 + packages/ui/src/Atoms/Icons/generator.ts | 58 + packages/ui/src/Atoms/Icons/group-1-1.svg | 6 + packages/ui/src/Atoms/Icons/group-1.svg | 3 + packages/ui/src/Atoms/Icons/home.svg | 3 + packages/ui/src/Atoms/Icons/import-2.svg | 4 + packages/ui/src/Atoms/Icons/in-progress.svg | 4 + packages/ui/src/Atoms/Icons/inbox-empty.svg | 3 + packages/ui/src/Atoms/Icons/index.tsx | 76 + packages/ui/src/Atoms/Icons/list-stack.svg | 5 + .../ui/src/Atoms/Icons/magnifying-glass.svg | 3 + packages/ui/src/Atoms/Icons/not-started.svg | 3 + packages/ui/src/Atoms/Icons/page-check-1.svg | 4 + packages/ui/src/Atoms/Icons/page-check.svg | 4 + packages/ui/src/Atoms/Icons/page-cross.svg | 4 + .../ui/src/Atoms/Icons/page-text-line.svg | 3 + .../ui/src/Atoms/Icons/page-text-solid.svg | 3 + packages/ui/src/Atoms/Icons/pencil.svg | 3 + .../ui/src/Atoms/Icons/people-add-2-line.svg | 3 + packages/ui/src/Atoms/Icons/people-add.svg | 5 + packages/ui/src/Atoms/Icons/plus-large.svg | 3 + packages/ui/src/Atoms/Icons/plus-small.svg | 3 + packages/ui/src/Atoms/Icons/priority.svg | 5 + .../ui/src/Atoms/Icons/radio-unchecked.svg | 3 + packages/ui/src/Atoms/Icons/rec-keyframe.svg | 3 + .../ui/src/Atoms/Icons/settings-gear-2.svg | 3 + packages/ui/src/Atoms/Icons/shield.svg | 3 + packages/ui/src/Atoms/Icons/signature.svg | 3 + .../Atoms/Icons/square-behind-square-2.svg | 3 + packages/ui/src/Atoms/Icons/store.svg | 5 + packages/ui/src/Atoms/Icons/sun.svg | 11 + packages/ui/src/Atoms/Icons/todo.svg | 4 + packages/ui/src/Atoms/Icons/todo2.svg | 7 + .../ui/src/Atoms/Icons/trash-can-solid.svg | 3 + packages/ui/src/Atoms/Icons/trash-can.svg | 7 + packages/ui/src/Atoms/Icons/type.ts | 4 + packages/ui/src/Atoms/Icons/upload.svg | 4 + packages/ui/src/Atoms/Input/Input.stories.tsx | 18 + packages/ui/src/Atoms/Input/Input.tsx | 54 + packages/ui/src/Atoms/Link/Link.tsx | 0 packages/ui/src/Atoms/Logo/Logo.stories.tsx | 12 + packages/ui/src/Atoms/Logo/Logo.tsx | 21 + .../ui/src/Atoms/Sidebar/Sidebar.stories.tsx | 21 + packages/ui/src/Atoms/Sidebar/Sidebar.tsx | 40 + packages/ui/src/Atoms/Sidebar/SidebarItem.tsx | 45 + .../ui/src/Atoms/Toasts/Toasts.stories.tsx | 48 + packages/ui/src/Atoms/Toasts/Toasts.tsx | 77 + packages/ui/src/Foundation.stories.tsx | 185 + .../ui/src/Layouts/AuthLayout.stories.tsx | 19 + packages/ui/src/Layouts/AuthLayout.tsx | 27 + .../ui/src/Layouts/ErrorLayout.stories.tsx | 17 + packages/ui/src/Layouts/ErrorLayout.tsx | 18 + packages/ui/src/Layouts/Layout.stories.tsx | 15 + packages/ui/src/Layouts/Layout.tsx | 27 + .../PageHeader/PageHeader.stories.tsx | 19 + .../src/Molecules/PageHeader/PageHeader.tsx | 20 + .../UserDropdown/UserDropdown.stories.tsx | 47 + .../Molecules/UserDropdown/UserDropdown.tsx | 61 + .../ui/src/assets/android-chrome-512x512.png | Bin 0 -> 287088 bytes packages/ui/src/index.ts | 27 + packages/ui/src/lib/utils.ts | 6 + packages/ui/src/main.tsx | 10 + packages/ui/src/theme.css | 166 + packages/ui/src/vite-env.d.ts | 1 + packages/ui/tsconfig.app.json | 27 + packages/ui/tsconfig.json | 7 + packages/ui/tsconfig.node.json | 25 + packages/ui/vite.config.ts | 9 + 244 files changed, 9153 insertions(+), 3096 deletions(-) create mode 100644 TODO.md create mode 100644 apps/console/index.html create mode 100644 apps/console/relay.config.json create mode 100644 apps/console/src/vite-env.d.ts create mode 100644 apps/console/tsconfig.app.json create mode 100644 apps/console/tsconfig.node.json create mode 100644 apps/console/vite.config.ts create mode 100644 apps/console2/.env create mode 100644 apps/console2/.gitattributes create mode 100644 apps/console2/.gitignore create mode 100644 apps/console2/README.md create mode 100644 apps/console2/eslint.config.js create mode 100644 apps/console2/index.html create mode 100644 apps/console2/package.json create mode 100644 apps/console2/public/vite.svg create mode 100644 apps/console2/relay.config.json create mode 100644 apps/console2/src/App.tsx create mode 100644 apps/console2/src/assets/react.svg create mode 100644 apps/console2/src/index.css create mode 100644 apps/console2/src/layouts/MainLayout.tsx create mode 100644 apps/console2/src/layouts/__generated__/MainLayoutQuery.graphql.ts create mode 100644 apps/console2/src/main.tsx create mode 100644 apps/console2/src/pages/auth/LoginPage.tsx create mode 100644 apps/console2/src/providers/RelayProviders.tsx create mode 100644 apps/console2/src/providers/TranslatorProvider.tsx create mode 100644 apps/console2/src/routes.tsx create mode 100644 apps/console2/src/vite-env.d.ts create mode 100644 apps/console2/tsconfig.app.json create mode 100644 apps/console2/tsconfig.json create mode 100644 apps/console2/tsconfig.node.json create mode 100644 apps/console2/vite.config.ts create mode 100644 packages/helpers/package.json create mode 100644 packages/helpers/src/index.ts create mode 100644 packages/helpers/src/object.ts create mode 100644 packages/helpers/tsconfig.json create mode 100644 packages/i18n/TranslatorProvider.tsx create mode 100644 packages/i18n/package.json create mode 100644 packages/prettier/package.json create mode 100644 packages/prettier/prettier.config.js create mode 100644 packages/ui/.gitignore create mode 100644 packages/ui/.storybook/main.ts create mode 100644 packages/ui/.storybook/preview.css create mode 100644 packages/ui/.storybook/preview.tsx create mode 100644 packages/ui/README.md create mode 100644 packages/ui/eslint.config.js create mode 100644 packages/ui/index.html create mode 100644 packages/ui/package.json create mode 100644 packages/ui/src/Atoms/Avatar/Avatar.stories.tsx create mode 100644 packages/ui/src/Atoms/Avatar/Avatar.tsx create mode 100644 packages/ui/src/Atoms/Button/Button.stories.tsx create mode 100644 packages/ui/src/Atoms/Button/Button.tsx create mode 100644 packages/ui/src/Atoms/Dropdown/Dropdown.stories.tsx create mode 100644 packages/ui/src/Atoms/Dropdown/Dropdown.tsx create mode 100644 packages/ui/src/Atoms/Icons/Frame-1.svg create mode 100644 packages/ui/src/Atoms/Icons/Frame-2.svg create mode 100644 packages/ui/src/Atoms/Icons/Frame.svg create mode 100644 packages/ui/src/Atoms/Icons/IconArrowBoxLeft.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconArrowCornerDownLeft.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconArrowDown.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconArrowInbox.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconArrowInbox1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconArrowLink.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconArrowUp.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconBank.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconBell2.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconBlock.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconBlock1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconBook.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCalendar1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCalendar2.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCheckmark1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCheckmark2Small.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconChevronDown.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconChevronGrabberVertical.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconChevronLeft.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconChevronRight.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconChevronTriangleDownSmall.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconChevronUp.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCircleCheck.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCircleCheck1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCircleInfo.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCircleProgress.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCircleQuestionmark.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCircleQuestionmark1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCircleQuestionmarkSolid.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCircleX.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCollapse.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconCrossLargeX.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconDotGrid1x3Horizontal.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconExpand.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconFilter.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconFire3.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconFolder2.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconFolderUpload.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconFrame.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconFrame1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconFrame2.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconGroup1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconGroup11.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconHome.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconImage.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconImport2.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconInProgress.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconInboxEmpty.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconListStack.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconMagnifyingGlass.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconNotStarted.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPageCheck.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPageCheck1.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPageCross.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPageTextLine.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPageTextSolid.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPencil.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPeopleAdd.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPeopleAdd2Line.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPlusLarge.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPlusSmall.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconPriority.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconRadioUnchecked.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconRecKeyframe.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconSend.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconSettingsGear2.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconShield.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconSignature.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconSquareBehindSquare2.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconStore.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconSun.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconTodo.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconTodo2.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconTrashCan.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconTrashCanSolid.tsx create mode 100644 packages/ui/src/Atoms/Icons/IconUpload.tsx create mode 100644 packages/ui/src/Atoms/Icons/Image.svg create mode 100644 packages/ui/src/Atoms/Icons/Send.svg create mode 100644 packages/ui/src/Atoms/Icons/Todo.tsx create mode 100644 packages/ui/src/Atoms/Icons/Todo2.tsx create mode 100644 packages/ui/src/Atoms/Icons/arrow-box-left.svg create mode 100644 packages/ui/src/Atoms/Icons/arrow-corner-down-left.svg create mode 100644 packages/ui/src/Atoms/Icons/arrow-down.svg create mode 100644 packages/ui/src/Atoms/Icons/arrow-inbox-1.svg create mode 100644 packages/ui/src/Atoms/Icons/arrow-inbox.svg create mode 100644 packages/ui/src/Atoms/Icons/arrow-link.svg create mode 100644 packages/ui/src/Atoms/Icons/arrow-up.svg create mode 100644 packages/ui/src/Atoms/Icons/bank.svg create mode 100644 packages/ui/src/Atoms/Icons/bell-2.svg create mode 100644 packages/ui/src/Atoms/Icons/block-1.svg create mode 100644 packages/ui/src/Atoms/Icons/block.svg create mode 100644 packages/ui/src/Atoms/Icons/book.svg create mode 100644 packages/ui/src/Atoms/Icons/calendar-1.svg create mode 100644 packages/ui/src/Atoms/Icons/calendar-2.svg create mode 100644 packages/ui/src/Atoms/Icons/checkmark-1.svg create mode 100644 packages/ui/src/Atoms/Icons/checkmark-2-small.svg create mode 100644 packages/ui/src/Atoms/Icons/chevron-down.svg create mode 100644 packages/ui/src/Atoms/Icons/chevron-grabber-vertical.svg create mode 100644 packages/ui/src/Atoms/Icons/chevron-left.svg create mode 100644 packages/ui/src/Atoms/Icons/chevron-right.svg create mode 100644 packages/ui/src/Atoms/Icons/chevron-triangle-down-small.svg create mode 100644 packages/ui/src/Atoms/Icons/chevron-up.svg create mode 100644 packages/ui/src/Atoms/Icons/circle-check-1.svg create mode 100644 packages/ui/src/Atoms/Icons/circle-check.svg create mode 100644 packages/ui/src/Atoms/Icons/circle-info.svg create mode 100644 packages/ui/src/Atoms/Icons/circle-progress.svg create mode 100644 packages/ui/src/Atoms/Icons/circle-questionmark-1.svg create mode 100644 packages/ui/src/Atoms/Icons/circle-questionmark-solid.svg create mode 100644 packages/ui/src/Atoms/Icons/circle-questionmark.svg create mode 100644 packages/ui/src/Atoms/Icons/circle-x.svg create mode 100644 packages/ui/src/Atoms/Icons/collapse.svg create mode 100644 packages/ui/src/Atoms/Icons/cross-large-x.svg create mode 100644 packages/ui/src/Atoms/Icons/dot-grid-1x3-horizontal.svg create mode 100644 packages/ui/src/Atoms/Icons/expand.svg create mode 100644 packages/ui/src/Atoms/Icons/filter.svg create mode 100644 packages/ui/src/Atoms/Icons/fire-3.svg create mode 100644 packages/ui/src/Atoms/Icons/folder-2.svg create mode 100644 packages/ui/src/Atoms/Icons/folder-upload.svg create mode 100644 packages/ui/src/Atoms/Icons/generator.ts create mode 100644 packages/ui/src/Atoms/Icons/group-1-1.svg create mode 100644 packages/ui/src/Atoms/Icons/group-1.svg create mode 100644 packages/ui/src/Atoms/Icons/home.svg create mode 100644 packages/ui/src/Atoms/Icons/import-2.svg create mode 100644 packages/ui/src/Atoms/Icons/in-progress.svg create mode 100644 packages/ui/src/Atoms/Icons/inbox-empty.svg create mode 100644 packages/ui/src/Atoms/Icons/index.tsx create mode 100644 packages/ui/src/Atoms/Icons/list-stack.svg create mode 100644 packages/ui/src/Atoms/Icons/magnifying-glass.svg create mode 100644 packages/ui/src/Atoms/Icons/not-started.svg create mode 100644 packages/ui/src/Atoms/Icons/page-check-1.svg create mode 100644 packages/ui/src/Atoms/Icons/page-check.svg create mode 100644 packages/ui/src/Atoms/Icons/page-cross.svg create mode 100644 packages/ui/src/Atoms/Icons/page-text-line.svg create mode 100644 packages/ui/src/Atoms/Icons/page-text-solid.svg create mode 100644 packages/ui/src/Atoms/Icons/pencil.svg create mode 100644 packages/ui/src/Atoms/Icons/people-add-2-line.svg create mode 100644 packages/ui/src/Atoms/Icons/people-add.svg create mode 100644 packages/ui/src/Atoms/Icons/plus-large.svg create mode 100644 packages/ui/src/Atoms/Icons/plus-small.svg create mode 100644 packages/ui/src/Atoms/Icons/priority.svg create mode 100644 packages/ui/src/Atoms/Icons/radio-unchecked.svg create mode 100644 packages/ui/src/Atoms/Icons/rec-keyframe.svg create mode 100644 packages/ui/src/Atoms/Icons/settings-gear-2.svg create mode 100644 packages/ui/src/Atoms/Icons/shield.svg create mode 100644 packages/ui/src/Atoms/Icons/signature.svg create mode 100644 packages/ui/src/Atoms/Icons/square-behind-square-2.svg create mode 100644 packages/ui/src/Atoms/Icons/store.svg create mode 100644 packages/ui/src/Atoms/Icons/sun.svg create mode 100644 packages/ui/src/Atoms/Icons/todo.svg create mode 100644 packages/ui/src/Atoms/Icons/todo2.svg create mode 100644 packages/ui/src/Atoms/Icons/trash-can-solid.svg create mode 100644 packages/ui/src/Atoms/Icons/trash-can.svg create mode 100644 packages/ui/src/Atoms/Icons/type.ts create mode 100644 packages/ui/src/Atoms/Icons/upload.svg create mode 100644 packages/ui/src/Atoms/Input/Input.stories.tsx create mode 100644 packages/ui/src/Atoms/Input/Input.tsx create mode 100644 packages/ui/src/Atoms/Link/Link.tsx create mode 100644 packages/ui/src/Atoms/Logo/Logo.stories.tsx create mode 100644 packages/ui/src/Atoms/Logo/Logo.tsx create mode 100644 packages/ui/src/Atoms/Sidebar/Sidebar.stories.tsx create mode 100644 packages/ui/src/Atoms/Sidebar/Sidebar.tsx create mode 100644 packages/ui/src/Atoms/Sidebar/SidebarItem.tsx create mode 100644 packages/ui/src/Atoms/Toasts/Toasts.stories.tsx create mode 100644 packages/ui/src/Atoms/Toasts/Toasts.tsx create mode 100644 packages/ui/src/Foundation.stories.tsx create mode 100644 packages/ui/src/Layouts/AuthLayout.stories.tsx create mode 100644 packages/ui/src/Layouts/AuthLayout.tsx create mode 100644 packages/ui/src/Layouts/ErrorLayout.stories.tsx create mode 100644 packages/ui/src/Layouts/ErrorLayout.tsx create mode 100644 packages/ui/src/Layouts/Layout.stories.tsx create mode 100644 packages/ui/src/Layouts/Layout.tsx create mode 100644 packages/ui/src/Molecules/PageHeader/PageHeader.stories.tsx create mode 100644 packages/ui/src/Molecules/PageHeader/PageHeader.tsx create mode 100644 packages/ui/src/Molecules/UserDropdown/UserDropdown.stories.tsx create mode 100644 packages/ui/src/Molecules/UserDropdown/UserDropdown.tsx create mode 100644 packages/ui/src/assets/android-chrome-512x512.png create mode 100644 packages/ui/src/index.ts create mode 100644 packages/ui/src/lib/utils.ts create mode 100644 packages/ui/src/main.tsx create mode 100644 packages/ui/src/theme.css create mode 100644 packages/ui/src/vite-env.d.ts create mode 100644 packages/ui/tsconfig.app.json create mode 100644 packages/ui/tsconfig.json create mode 100644 packages/ui/tsconfig.node.json create mode 100644 packages/ui/vite.config.ts diff --git a/GNUmakefile b/GNUmakefile index 6e218e301..d36bf82cd 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -54,32 +54,40 @@ pkg/server/api/console/v1/types/types.go \ pkg/server/api/console/v1/v1_resolver.go: pkg/server/api/console/v1/gqlgen.yaml pkg/server/api/console/v1/schema.graphql $(GO_GENERATE) ./pkg/server/api/console/v1 +.PHONY: help +help: ## Show this help + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +.PHONY:dev +dev: ## Start the development server + parallel -j 2 --line-buffer ::: "gow -r=false run cmd/probod/main.go" "cd apps/console && npm run dev" + .PHONY: fmt -fmt: fmt-go +fmt: fmt-go ## Format Go code .PHONY: fmt-go -fmt-go: +fmt-go: ## Format Go code go fmt ./... .PHONY: clean -clean: +clean: ## Clean the project (node_modules and build artifacts) $(RM) -rf bin/* $(RM) -rf node_modules $(RM) -rf apps/console/{dist,node_modules} .PHONY: stack-up -stack-up: +stack-up: ## Start the docker stack as a deamon $(DOCKER_COMPOSE) up -d .PHONY: stack-down -stack-down: +stack-down: ## Stop the docker stack $(DOCKER_COMPOSE) down .PHONY: stack-ps -stack-ps: +stack-ps: ## List the docker stack containers $(DOCKER_COMPOSE) ps .PHONY: psql -psql: +psql: ## Open a psql shell to the postgres container $(DOCKER_COMPOSE) exec postgres psql -U probod -d probod diff --git a/TODO.md b/TODO.md new file mode 100644 index 000000000..fa4fd2a0a --- /dev/null +++ b/TODO.md @@ -0,0 +1,5 @@ +# TODO + +## Packages/ui + +- [ ] Design the toast element diff --git a/apps/console/index.html b/apps/console/index.html new file mode 100644 index 000000000..e591b5868 --- /dev/null +++ b/apps/console/index.html @@ -0,0 +1,47 @@ + + + + + + Probo - Console + + + + + + + + + + + + + + + +
+ + + diff --git a/apps/console/relay.config.json b/apps/console/relay.config.json new file mode 100644 index 000000000..89f9e7e73 --- /dev/null +++ b/apps/console/relay.config.json @@ -0,0 +1,6 @@ +{ + "src": "./src", + "schema": "./schema.graphql", + "language": "typescript", + "eagerEsModules": true +} diff --git a/apps/console/src/vite-env.d.ts b/apps/console/src/vite-env.d.ts new file mode 100644 index 000000000..8f2d26486 --- /dev/null +++ b/apps/console/src/vite-env.d.ts @@ -0,0 +1,11 @@ +/// + +interface ImportMetaEnv { + readonly POSTHOG_KEY: string; + readonly POSTHOG_HOST: string; + readonly API_SERVER_HOST: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/apps/console/tsconfig.app.json b/apps/console/tsconfig.app.json new file mode 100644 index 000000000..e2afd2d77 --- /dev/null +++ b/apps/console/tsconfig.app.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"] +} diff --git a/apps/console/tsconfig.node.json b/apps/console/tsconfig.node.json new file mode 100644 index 000000000..9728af2d8 --- /dev/null +++ b/apps/console/tsconfig.node.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/apps/console/vite.config.ts b/apps/console/vite.config.ts new file mode 100644 index 000000000..bee1d7666 --- /dev/null +++ b/apps/console/vite.config.ts @@ -0,0 +1,23 @@ +import {defineConfig} from 'vite' +import react from '@vitejs/plugin-react' +import {resolve} from 'node:path'; +import tailwindcss from '@tailwindcss/vite' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [ + react({babel: {plugins: ["relay"]}}), + tailwindcss(), + ], + server: { + cors: { + // the origin you will be accessing via browser + origin: 'http://localhost:8080', + }, + }, + resolve: { + alias: { + '@': resolve(__dirname, './src'), + }, + }, +}) diff --git a/apps/console2/.env b/apps/console2/.env new file mode 100644 index 000000000..ca9963a03 --- /dev/null +++ b/apps/console2/.env @@ -0,0 +1 @@ +VITE_API_URL=http://localhost:8080 \ No newline at end of file diff --git a/apps/console2/.gitattributes b/apps/console2/.gitattributes new file mode 100644 index 000000000..7a1fb9a7a --- /dev/null +++ b/apps/console2/.gitattributes @@ -0,0 +1,2 @@ +__generated__/*.graphql linguist-generated +__generated__/*.js linguist-generated diff --git a/apps/console2/.gitignore b/apps/console2/.gitignore new file mode 100644 index 000000000..0e4727357 --- /dev/null +++ b/apps/console2/.gitignore @@ -0,0 +1,25 @@ +# Logs +old +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/apps/console2/README.md b/apps/console2/README.md new file mode 100644 index 000000000..da9844432 --- /dev/null +++ b/apps/console2/README.md @@ -0,0 +1,54 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default tseslint.config({ + extends: [ + // Remove ...tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + ], + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default tseslint.config({ + plugins: { + // Add the react-x and react-dom plugins + 'react-x': reactX, + 'react-dom': reactDom, + }, + rules: { + // other rules... + // Enable its recommended typescript rules + ...reactX.configs['recommended-typescript'].rules, + ...reactDom.configs.recommended.rules, + }, +}) +``` diff --git a/apps/console2/eslint.config.js b/apps/console2/eslint.config.js new file mode 100644 index 000000000..092408a9f --- /dev/null +++ b/apps/console2/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/apps/console2/index.html b/apps/console2/index.html new file mode 100644 index 000000000..e4b78eae1 --- /dev/null +++ b/apps/console2/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/apps/console2/package.json b/apps/console2/package.json new file mode 100644 index 000000000..960211f4a --- /dev/null +++ b/apps/console2/package.json @@ -0,0 +1,44 @@ +{ + "name": "console2", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "relay": "npx relay-compiler", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@probo/i18n": "1.0.0", + "@probo/ui": "1.0.0", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-error-boundary": "^6.0.0", + "react-relay": "^19.0.0", + "react-router": "^7.6.0", + "relay-runtime": "^19.0.0" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@tailwindcss/vite": "^4.1.7", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@types/react-relay": "^18.2.1", + "@types/relay-runtime": "^19.0.1", + "@vitejs/plugin-react": "^4.4.1", + "babel-plugin-relay": "^19.0.0", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "graphql": "^16.11.0", + "prettier": "^3.5.3", + "relay-compiler": "^19.0.0", + "tailwindcss": "^4.1.7", + "typescript": "~5.8.3", + "typescript-eslint": "^8.30.1", + "vite": "^6.3.5" + } +} diff --git a/apps/console2/public/vite.svg b/apps/console2/public/vite.svg new file mode 100644 index 000000000..e7b8dfb1b --- /dev/null +++ b/apps/console2/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/console2/relay.config.json b/apps/console2/relay.config.json new file mode 100644 index 000000000..4e160c620 --- /dev/null +++ b/apps/console2/relay.config.json @@ -0,0 +1,6 @@ +{ + "src": "./src", + "schema": "../../pkg/server/api/console/v1/schema.graphql", + "language": "typescript", + "eagerEsModules": true +} diff --git a/apps/console2/src/App.tsx b/apps/console2/src/App.tsx new file mode 100644 index 000000000..cb1c1a9c3 --- /dev/null +++ b/apps/console2/src/App.tsx @@ -0,0 +1,7 @@ +import { ErrorBoundary } from "react-error-boundary"; +import { RouterProvider } from "react-router"; +import { routes } from "./routes"; + +export function App() { + return ; +} diff --git a/apps/console2/src/assets/react.svg b/apps/console2/src/assets/react.svg new file mode 100644 index 000000000..6c87de9bb --- /dev/null +++ b/apps/console2/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/console2/src/index.css b/apps/console2/src/index.css new file mode 100644 index 000000000..47f694ebd --- /dev/null +++ b/apps/console2/src/index.css @@ -0,0 +1,4 @@ +@import url("https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap"); +@import "tailwindcss"; +@import "@probo/ui/src/theme.css"; +@source '../../../packages/ui/src'; diff --git a/apps/console2/src/layouts/MainLayout.tsx b/apps/console2/src/layouts/MainLayout.tsx new file mode 100644 index 000000000..9c585893b --- /dev/null +++ b/apps/console2/src/layouts/MainLayout.tsx @@ -0,0 +1,118 @@ +import { Outlet, useParams } from "react-router"; +import { + DropdownSeparator, + IconArrowBoxLeft, + IconBank, + IconCircleQuestionmark, + IconFire3, + IconGroup1, + IconInboxEmpty, + IconPageTextLine, + IconSettingsGear2, + IconStore, + IconTodo, + Layout, + SidebarItem, + UserDropdown, + UserDropdownItem, +} from "@probo/ui"; +import { useTranslate } from "@probo/i18n"; +import { graphql } from "relay-runtime"; +import { useLazyLoadQuery } from "react-relay"; +import type { MainLayoutQuery as MainLayoutQueryType } from "./__generated__/MainLayoutQuery.graphql"; + +const MainLayoutQuery = graphql` + query MainLayoutQuery { + viewer { + id + user { + fullName + email + } + } + } +`; + +export function MainLayout() { + const { organizationId } = useParams(); + const { __ } = useTranslate(); + const user = useLazyLoadQuery(MainLayoutQuery, {}).viewer + .user; + + const prefix = `/organizations/${organizationId}`; + + return ( + +
+ + + + + + + + } + sidebar={ +
    + + + + + + + + +
+ } + > + +
+ ); +} diff --git a/apps/console2/src/layouts/__generated__/MainLayoutQuery.graphql.ts b/apps/console2/src/layouts/__generated__/MainLayoutQuery.graphql.ts new file mode 100644 index 000000000..ac3c6ab60 --- /dev/null +++ b/apps/console2/src/layouts/__generated__/MainLayoutQuery.graphql.ts @@ -0,0 +1,132 @@ +/** + * @generated SignedSource<<998d88d8fcb28932ec470d6afdb49b8e>> + * @lightSyntaxTransform + * @nogrep + */ + +/* tslint:disable */ +/* eslint-disable */ +// @ts-nocheck + +import { ConcreteRequest } from 'relay-runtime'; +export type MainLayoutQuery$variables = Record; +export type MainLayoutQuery$data = { + readonly viewer: { + readonly id: string; + readonly user: { + readonly email: string; + readonly fullName: string; + }; + }; +}; +export type MainLayoutQuery = { + response: MainLayoutQuery$data; + variables: MainLayoutQuery$variables; +}; + +const node: ConcreteRequest = (function(){ +var v0 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "id", + "storageKey": null +}, +v1 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "fullName", + "storageKey": null +}, +v2 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "email", + "storageKey": null +}; +return { + "fragment": { + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "MainLayoutQuery", + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "Viewer", + "kind": "LinkedField", + "name": "viewer", + "plural": false, + "selections": [ + (v0/*: any*/), + { + "alias": null, + "args": null, + "concreteType": "User", + "kind": "LinkedField", + "name": "user", + "plural": false, + "selections": [ + (v1/*: any*/), + (v2/*: any*/) + ], + "storageKey": null + } + ], + "storageKey": null + } + ], + "type": "Query", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [], + "kind": "Operation", + "name": "MainLayoutQuery", + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "Viewer", + "kind": "LinkedField", + "name": "viewer", + "plural": false, + "selections": [ + (v0/*: any*/), + { + "alias": null, + "args": null, + "concreteType": "User", + "kind": "LinkedField", + "name": "user", + "plural": false, + "selections": [ + (v1/*: any*/), + (v2/*: any*/), + (v0/*: any*/) + ], + "storageKey": null + } + ], + "storageKey": null + } + ] + }, + "params": { + "cacheID": "4b5a08e03bcb26d2edadb57cd94aa7d1", + "id": null, + "metadata": {}, + "name": "MainLayoutQuery", + "operationKind": "query", + "text": "query MainLayoutQuery {\n viewer {\n id\n user {\n fullName\n email\n id\n }\n }\n}\n" + } +}; +})(); + +(node as any).hash = "785f7a3ca19b673a157ef0f649de5c1b"; + +export default node; diff --git a/apps/console2/src/main.tsx b/apps/console2/src/main.tsx new file mode 100644 index 000000000..afb7c0c1e --- /dev/null +++ b/apps/console2/src/main.tsx @@ -0,0 +1,16 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import "./index.css"; +import { App } from "./App.tsx"; +import { RelayProvider } from "./providers/RelayProviders.tsx"; +import { TranslatorProvider } from "./providers/TranslatorProvider.tsx"; + +createRoot(document.getElementById("root")!).render( + + + + + + + +); diff --git a/apps/console2/src/pages/auth/LoginPage.tsx b/apps/console2/src/pages/auth/LoginPage.tsx new file mode 100644 index 000000000..468f04978 --- /dev/null +++ b/apps/console2/src/pages/auth/LoginPage.tsx @@ -0,0 +1,73 @@ +import { useTranslate } from "@probo/i18n"; +import { Button, Input, useToast } from "@probo/ui"; +import type { FormEventHandler } from "react"; +import { Link, useLocation, useNavigate } from "react-router"; + +export function LoginPage() { + const { __ } = useTranslate(); + const navigate = useNavigate(); + const { toast } = useToast(); + + const handleSubmit: FormEventHandler = async (e) => { + e.preventDefault(); + const formData = new FormData(e.currentTarget); + const email = formData.get("email")?.toString(); + const password = formData.get("password")?.toString(); + + fetch(import.meta.env.VITE_API_URL + "/api/console/v1/auth/login", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ email, password }), + }) + .then(async (res) => { + if (!res.ok) { + const error = await res.json(); + throw new Error(error.message || __("Failed to login")); + } + + navigate("/"); + }) + .catch((e) => { + toast({ + title: __("Error"), + description: e.message as string, + variant: "error", + }); + }); + }; + + return ( +
+

+ {__("Login to your account")} +

+

+ {__("Enter your email below to login to your account")} +

+ + + + +
+ {__("Don't have an account ?")}{" "} + + {__("Register")} + +
+
+ ); +} diff --git a/apps/console2/src/providers/RelayProviders.tsx b/apps/console2/src/providers/RelayProviders.tsx new file mode 100644 index 000000000..c5e89f721 --- /dev/null +++ b/apps/console2/src/providers/RelayProviders.tsx @@ -0,0 +1,131 @@ +import { + Environment, + type FetchFunction, + Network, + RecordSource, + Store, +} from "relay-runtime"; +import { GraphQLError } from "graphql"; +import type { PropsWithChildren } from "react"; +import { RelayEnvironmentProvider } from "react-relay"; + +export class UnAuthenticatedError extends Error { + constructor() { + super("UNAUTHENTICATED"); + this.name = "UnAuthenticatedError"; + } +} + +export class InternalServerError extends Error { + constructor() { + super("INTERNAL_SERVER_ERROR"); + this.name = "InternalServerError"; + } +} + +const hasUnauthenticatedError = (error: GraphQLError) => + error.extensions?.code == "UNAUTHENTICATED"; + +const fetchRelay: FetchFunction = async ( + request, + variables, + _, + uploadables +) => { + const requestInit: RequestInit = { + method: "POST", + credentials: "include", + headers: {}, + }; + + if (uploadables) { + const formData = new FormData(); + formData.append( + "operations", + JSON.stringify({ + operationName: request.name, + query: request.text, + variables: variables, + }) + ); + + const uploadableMap: { + [key: string]: string[]; + } = {}; + + Object.keys(uploadables).forEach((key, index) => { + uploadableMap[index] = [`variables.${key}`]; + }); + + formData.append("map", JSON.stringify(uploadableMap)); + + Object.keys(uploadables).forEach((key, index) => { + formData.append(index.toString(), uploadables[key]); + }); + + requestInit.body = formData; + } else { + requestInit.headers = { + Accept: + "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", + "Content-Type": "application/json", + }; + + requestInit.body = JSON.stringify({ + operationName: request.name, + query: request.text, + variables, + }); + } + + const response = await fetch( + import.meta.env.VITE_API_URL + "/api/console/v1/query", + requestInit + ); + + if (response.status === 500) { + throw new InternalServerError(); + } + + const json = await response.json(); + + if (json.errors) { + const errors = json.errors as GraphQLError[]; + + if (errors.find(hasUnauthenticatedError)) { + throw new UnAuthenticatedError(); + } + + throw new Error( + `Error fetching GraphQL query '${ + request.name + }' with variables '${JSON.stringify(variables)}': ${JSON.stringify( + json.errors + )}` + ); + } + + return json; +}; + +const source = new RecordSource(); +const store = new Store(source, { + queryCacheExpirationTime: 1 * 60 * 1000, + gcReleaseBufferSize: 20, +}); + +const environment = new Environment({ + network: Network.create(fetchRelay), + store, +}); + +/** + * Provider for relay with the probo environment + */ +export const RelayProvider = ({ children }: PropsWithChildren) => { + return ( + + {children} + + ); +}; diff --git a/apps/console2/src/providers/TranslatorProvider.tsx b/apps/console2/src/providers/TranslatorProvider.tsx new file mode 100644 index 000000000..e2e104a0b --- /dev/null +++ b/apps/console2/src/providers/TranslatorProvider.tsx @@ -0,0 +1,18 @@ +import type { PropsWithChildren } from "react"; +import { TranslatorProvider as ProboTranslatorProvider } from "@probo/i18n"; + +// TODO : implement a way to retrieve translations strings +const loader = () => { + return Promise.resolve({} as Record); +}; + +/** + * Provider for the translator + */ +export function TranslatorProvider({ children }: PropsWithChildren) { + return ( + + {children} + + ); +} diff --git a/apps/console2/src/routes.tsx b/apps/console2/src/routes.tsx new file mode 100644 index 000000000..855d23aef --- /dev/null +++ b/apps/console2/src/routes.tsx @@ -0,0 +1,38 @@ +import { createBrowserRouter, useRouteError } from "react-router"; +import { MainLayout } from "./layouts/MainLayout"; +import { UnAuthenticatedError } from "./providers/RelayProviders"; +import { AuthLayout } from "@probo/ui"; +import { LoginPage } from "./pages/auth/LoginPage"; + +function Demo() { + const error = useRouteError(); + if (error instanceof UnAuthenticatedError) { + return
; + } + console.log(error); + return
error
; +} + +export const routes = createBrowserRouter([ + { + path: "/auth", + Component: AuthLayout, + children: [ + { + path: "login", + element: , + }, + ], + }, + { + path: "/", + Component: MainLayout, + ErrorBoundary: Demo, + children: [ + { + path: "/", + element:
Home
, + }, + ], + }, +]); diff --git a/apps/console2/src/vite-env.d.ts b/apps/console2/src/vite-env.d.ts new file mode 100644 index 000000000..5697923dd --- /dev/null +++ b/apps/console2/src/vite-env.d.ts @@ -0,0 +1,9 @@ +/// + +interface ImportMetaEnv { + readonly API_URL: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/apps/console2/tsconfig.app.json b/apps/console2/tsconfig.app.json new file mode 100644 index 000000000..c9ccbd4c5 --- /dev/null +++ b/apps/console2/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/apps/console2/tsconfig.json b/apps/console2/tsconfig.json new file mode 100644 index 000000000..1ffef600d --- /dev/null +++ b/apps/console2/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/apps/console2/tsconfig.node.json b/apps/console2/tsconfig.node.json new file mode 100644 index 000000000..9728af2d8 --- /dev/null +++ b/apps/console2/tsconfig.node.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/apps/console2/vite.config.ts b/apps/console2/vite.config.ts new file mode 100644 index 000000000..282dbb459 --- /dev/null +++ b/apps/console2/vite.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import tailwindcss from "@tailwindcss/vite"; +import { resolve } from "node:path"; + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react({ babel: { plugins: ["relay"] } }), tailwindcss()], + resolve: { + alias: { + "@": resolve(__dirname, "./src"), + }, + }, +}); diff --git a/package-lock.json b/package-lock.json index b0e17ba34..60dac4012 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,6 +38,7 @@ "@radix-ui/react-toast": "^1.2.6", "@radix-ui/react-tooltip": "^1.1.8", "@tailwindcss/typography": "^0.5.16", + "@tailwindcss/vite": "^4.1.6", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.0.4", @@ -45,62 +46,937 @@ "fuse.js": "^7.1.0", "lucide-react": "^0.475.0", "posthog-js": "^1.215.1", - "react": "^18.3.1", - "react-dom": "^18.3.1", + "react": "^19.1.0", + "react-dom": "^19.1.0", "react-helmet-async": "^2.0.5", "react-markdown": "^10.1.0", - "react-relay": "^18.2.0", - "react-router": "^7.1.5", + "react-relay": "^19.0.0", + "react-router": "^7.6.0", "rehype-raw": "^7.0.0", - "relay-runtime": "^18.2.0", + "relay-runtime": "^19.0.0", "remark-gfm": "^4.0.1", "tailwind-merge": "^3.0.2", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "@babel/core": "^7.26.7", - "@babel/preset-env": "^7.26.7", - "@babel/preset-typescript": "^7.26.0", - "@eslint/js": "^9.21.0", - "@probo/esbuild-plugin-postcss": "^0.0.1", - "@probo/tsconfig": "^0.0.1", - "@tailwindcss/postcss": "^4.0.9", + "@eslint/js": "^9.25.0", "@types/babel-core": "^6.25.10", "@types/node": "^22.13.0", - "@types/react": "^18.3.18", - "@types/react-dom": "^18.3.5", - "@types/react-relay": "^18.2.0", - "@types/relay-runtime": "^18.2.5", - "autoprefixer": "^10.4.20", - "babel-plugin-relay": "^18.2.0", - "esbuild": "^0.25.0", - "eslint": "^9.21.0", - "eslint-plugin-react": "^7.37.4", + "@types/react": "^19.1.4", + "@types/react-dom": "^19.1.5", + "@vitejs/plugin-react": "^4.4.1", + "babel-plugin-relay": "^19.0.0", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", "globals": "^16.0.0", - "relay-compiler": "^18.2.0", - "tailwindcss": "^4.0.9", + "graphql": "^16.11.0", + "relay-compiler": "^19.0.0", + "tailwindcss": "^4.1.6", "typescript": "^5.8.3", - "typescript-eslint": "^8.25.0" + "typescript-eslint": "^8.30.1", + "vite": "^6.3.5" } }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "apps/console/node_modules/@tailwindcss/vite": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.6.tgz", + "integrity": "sha512-zjtqjDeY1w3g2beYQtrMAf51n5G7o+UwmyOjtsDMP7t6XyoRMOidcoKP32ps7AkNOHIXEOK0bhIC05dj8oJp4w==", + "dependencies": { + "@tailwindcss/node": "4.1.6", + "@tailwindcss/oxide": "4.1.6", + "tailwindcss": "4.1.6" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "apps/console/node_modules/@types/react": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.4.tgz", + "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", "dev": true, - "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "apps/console/node_modules/@types/react-dom": { + "version": "19.1.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", + "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", + "dev": true, + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "apps/console/node_modules/@vitejs/plugin-react": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz", + "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==", + "dev": true, + "dependencies": { + "@babel/core": "^7.26.10", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, "engines": { - "node": ">=10" + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "apps/console/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "apps/console/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, + "apps/console/node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "engines": { + "node": ">=0.10.0" + } + }, + "apps/console/node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "apps/console/node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" + }, + "apps/console/node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "apps/console/node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "apps/console2": { + "version": "0.0.0", + "dependencies": { + "@probo/i18n": "1.0.0", + "@probo/ui": "1.0.0", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-error-boundary": "^6.0.0", + "react-relay": "^19.0.0", + "react-router": "^7.6.0", + "relay-runtime": "^19.0.0" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@tailwindcss/vite": "^4.1.7", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@types/react-relay": "^18.2.1", + "@types/relay-runtime": "^19.0.1", + "@vitejs/plugin-react": "^4.4.1", + "babel-plugin-relay": "^19.0.0", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "graphql": "^16.11.0", + "prettier": "^3.5.3", + "relay-compiler": "^19.0.0", + "tailwindcss": "^4.1.7", + "typescript": "~5.8.3", + "typescript-eslint": "^8.30.1", + "vite": "^6.3.5" + } + }, + "apps/console2/node_modules/@tailwindcss/node": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.7.tgz", + "integrity": "sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.7" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.7.tgz", + "integrity": "sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-x64": "4.1.7", + "@tailwindcss/oxide-freebsd-x64": "4.1.7", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.7", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.7", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-x64-musl": "4.1.7", + "@tailwindcss/oxide-wasm32-wasi": "4.1.7", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.7", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.7" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.7.tgz", + "integrity": "sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.7.tgz", + "integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.7.tgz", + "integrity": "sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.7.tgz", + "integrity": "sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.7.tgz", + "integrity": "sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.7.tgz", + "integrity": "sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.7.tgz", + "integrity": "sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.7.tgz", + "integrity": "sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.7.tgz", + "integrity": "sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.7.tgz", + "integrity": "sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.9", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.7.tgz", + "integrity": "sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.7.tgz", + "integrity": "sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "apps/console2/node_modules/@tailwindcss/vite": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.7.tgz", + "integrity": "sha512-tYa2fO3zDe41I7WqijyVbRd8oWT0aEID1Eokz5hMT6wShLIHj3yvwj9XbfuloHP9glZ6H+aG2AN/+ZrxJ1Y5RQ==", + "dev": true, + "dependencies": { + "@tailwindcss/node": "4.1.7", + "@tailwindcss/oxide": "4.1.7", + "tailwindcss": "4.1.7" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "apps/console2/node_modules/@types/react": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.4.tgz", + "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", + "dev": true, + "dependencies": { + "csstype": "^3.0.2" + } + }, + "apps/console2/node_modules/@types/react-dom": { + "version": "19.1.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", + "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", + "dev": true, + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "apps/console2/node_modules/@vitejs/plugin-react": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz", + "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==", + "dev": true, + "dependencies": { + "@babel/core": "^7.26.10", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "apps/console2/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "apps/console2/node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "apps/console2/node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "apps/console2/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "apps/console2/node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "engines": { + "node": ">=0.10.0" + } + }, + "apps/console2/node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "apps/console2/node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" + }, + "apps/console2/node_modules/tailwindcss": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.7.tgz", + "integrity": "sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==", + "dev": true + }, + "apps/console2/node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "apps/console2/node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", + "dev": true + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -183,19 +1059,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz", - "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz", @@ -213,77 +1076,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", - "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", - "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "regexpu-core": "^6.2.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", - "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", @@ -316,19 +1108,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", @@ -339,56 +1118,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", - "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -419,21 +1148,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", - "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helpers": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", @@ -464,109 +1178,11 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", - "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", - "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", - "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", - "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", - "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", - "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -577,12 +1193,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { + "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -593,1040 +1208,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", - "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", - "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", - "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz", - "integrity": "sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", - "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", - "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", - "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz", - "integrity": "sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", - "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", - "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", - "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", - "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", - "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", - "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", - "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", - "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", - "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", - "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", - "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", - "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", - "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", - "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.1.tgz", - "integrity": "sha512-/sSliVc9gHE20/7D5qsdGlq7RG5NCDTWsAhyqzGuq174EtWJoGzIu1BQ7G56eDsTcy1jseBZwv50olSdXOlGuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", - "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", - "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", - "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", - "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", - "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", - "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz", - "integrity": "sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", - "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", - "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", - "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", - "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", - "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", - "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", - "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", - "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", - "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", - "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", - "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", - "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.1.tgz", - "integrity": "sha512-TZ5USxFpLgKDpdEt8YWBR7p6g+bZo6sHaXLqP2BY/U0acaoI8FTVflcYCr/v94twM1C5IWFdZ/hscq9WjUeLXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.27.1", - "@babel/plugin-transform-async-to-generator": "^7.27.1", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.27.1", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-classes": "^7.27.1", - "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.1", - "@babel/plugin-transform-dotall-regex": "^7.27.1", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-exponentiation-operator": "^7.27.1", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.27.1", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.27.1", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.27.1", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.40.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", - "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", @@ -1694,6 +1275,35 @@ "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@chromatic-com/storybook": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-3.2.6.tgz", + "integrity": "sha512-FDmn5Ry2DzQdik+eq2sp/kJMMT36Ewe7ONXUXM2Izd97c7r6R/QyGli8eyh/F0iyqVvbLveNYFyF0dBOJNwLqw==", + "dev": true, + "dependencies": { + "chromatic": "^11.15.0", + "filesize": "^10.0.12", + "jsonfile": "^6.1.0", + "react-confetti": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16.0.0", + "yarn": ">=1.22.18" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.3", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", @@ -1701,7 +1311,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1718,7 +1327,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1735,7 +1343,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1752,7 +1359,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1769,7 +1375,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1786,7 +1391,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1803,7 +1407,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1820,7 +1423,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1837,7 +1439,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1854,7 +1455,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1871,7 +1471,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1888,7 +1487,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1905,7 +1503,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1922,7 +1519,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1939,7 +1535,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1956,7 +1551,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1973,7 +1567,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1990,7 +1583,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2007,7 +1599,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2024,7 +1615,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2041,7 +1631,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2058,7 +1647,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2075,7 +1663,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2092,7 +1679,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2109,7 +1695,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2421,11 +2006,47 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -2440,7 +2061,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2450,7 +2070,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2460,20 +2079,35 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mdx-js/react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", + "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", + "dev": true, + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2512,6 +2146,22 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true + }, "node_modules/@probo/console": { "resolved": "apps/console", "link": true @@ -2520,6 +2170,18 @@ "resolved": "packages/esbuild-plugin-postcss", "link": true }, + "node_modules/@probo/helpers": { + "resolved": "packages/helpers", + "link": true + }, + "node_modules/@probo/i18n": { + "resolved": "packages/i18n", + "link": true + }, + "node_modules/@probo/prettier": { + "resolved": "packages/prettier", + "link": true + }, "node_modules/@probo/react-lazy": { "resolved": "packages/react-lazy", "link": true @@ -2528,6 +2190,10 @@ "resolved": "packages/tsconfig", "link": true }, + "node_modules/@probo/ui": { + "resolved": "packages/ui", + "link": true + }, "node_modules/@probo/vendors": { "resolved": "packages/vendors", "link": true @@ -2795,17 +2461,16 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.12.tgz", - "integrity": "sha512-VJoMs+BWWE7YhzEQyVwvF9n22Eiyr83HotCVrMQzla/OwRovXCgah7AcaEr4hMNj4gJxSdtIbcHGvmJXOoJVHA==", - "license": "MIT", + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.14.tgz", + "integrity": "sha512-lzuyNjoWOoaMFE/VC5FnAAYM16JmQA8ZmucOXtlhm2kKR5TSU95YLAueQ4JYuRmUJmBvSqXaVFGIfuukybwZJQ==", "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-menu": "2.1.12", - "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-menu": "2.1.14", + "@radix-ui/react-primitive": "2.1.2", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { @@ -2823,6 +2488,45 @@ } } }, + "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-primitive": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.2.tgz", + "integrity": "sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==", + "dependencies": { + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-slot": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.2.tgz", + "integrity": "sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-focus-guards": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", @@ -2905,26 +2609,25 @@ } }, "node_modules/@radix-ui/react-menu": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.12.tgz", - "integrity": "sha512-+qYq6LfbiGo97Zz9fioX83HCiIYYFNs8zAsVCMQrIakoNYylIzWuoD/anAD3UzvvR6cnswmfRFJFq/zYYq/k7Q==", - "license": "MIT", + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.14.tgz", + "integrity": "sha512-0zSiBAIFq9GSKoSH5PdEaQeRB3RnEGxC+H2P0egtnKoKKLNBH8VBHyVO6/jskhjAezhOIplyRUj7U2lds9A+Yg==", "dependencies": { "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-collection": "1.1.4", + "@radix-ui/react-collection": "1.1.6", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.7", + "@radix-ui/react-dismissable-layer": "1.1.9", "@radix-ui/react-focus-guards": "1.1.2", - "@radix-ui/react-focus-scope": "1.1.4", + "@radix-ui/react-focus-scope": "1.1.6", "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.4", - "@radix-ui/react-portal": "1.1.6", + "@radix-ui/react-popper": "1.2.6", + "@radix-ui/react-portal": "1.1.8", "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.0", - "@radix-ui/react-roving-focus": "1.1.7", - "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-roving-focus": "1.1.9", + "@radix-ui/react-slot": "1.2.2", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" @@ -2944,6 +2647,226 @@ } } }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-arrow": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.6.tgz", + "integrity": "sha512-2JMfHJf/eVnwq+2dewT3C0acmCWD3XiVA1Da+jTDqo342UlU13WvXtqHhG+yJw5JeQmu4ue2eMy6gcEArLBlcw==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-collection": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.6.tgz", + "integrity": "sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.9.tgz", + "integrity": "sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.6.tgz", + "integrity": "sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-popper": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.6.tgz", + "integrity": "sha512-7iqXaOWIjDBfIG7aq8CUEeCSsQMLFdn7VEE8TaFz704DtEzpPHR7w/uuzRflvKgltqSAImgcmxQ7fFX3X7wasg==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-portal": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.8.tgz", + "integrity": "sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-primitive": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.2.tgz", + "integrity": "sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==", + "dependencies": { + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.9.tgz", + "integrity": "sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.2.tgz", + "integrity": "sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-popover": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.11.tgz", @@ -3565,52 +3488,815 @@ "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", "license": "MIT" }, - "node_modules/@tailwindcss/node": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.5.tgz", - "integrity": "sha512-CBhSWo0vLnWhXIvpD0qsPephiaUYfHUX3U9anwDaHZAeuGpTiB3XmsxPAN6qX7bFhipyGBqOa1QYQVVhkOUGxg==", + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", "dev": true, - "license": "MIT", "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz", + "integrity": "sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz", + "integrity": "sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz", + "integrity": "sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz", + "integrity": "sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz", + "integrity": "sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz", + "integrity": "sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz", + "integrity": "sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz", + "integrity": "sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz", + "integrity": "sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz", + "integrity": "sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz", + "integrity": "sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz", + "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz", + "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz", + "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz", + "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz", + "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz", + "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz", + "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz", + "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", + "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@storybook/addon-actions": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.13.tgz", + "integrity": "sha512-wy9KqFsIKS0J+yuIR5RsLLBWqSonKgJUKnyKHlVovGgecOiJsVMDnustGMp7GCv9h1U6ggLwAcXB3NMMoQ2+tg==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "@types/uuid": "^9.0.1", + "dequal": "^2.0.2", + "polished": "^4.2.2", + "uuid": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-backgrounds": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.13.tgz", + "integrity": "sha512-uG87eazzyVz84zHx3WvRfw6I/YKHpUwceecZKi9/cf2ketff7ixm19iogOatLGuZMibWk6HJzCxwDnRKw0ckgw==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-controls": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.13.tgz", + "integrity": "sha512-e8M7YOsRhFrZEnBCRTWh4PMRVOWyQeA/mz4bbD3VlW8L6JPcT9GFZC64dxYTNlczWN10xZVsiaK1WhJ8w2t7RA==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "dequal": "^2.0.2", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-docs": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.13.tgz", + "integrity": "sha512-BuR960xK9VFIRFB7hLNGgO1YjlcZeP2zZxvTRIPX+4ir9/yBte+W45qXrcdb+h50GkkSBjHKtUgoXhNxW4Xi9g==", + "dev": true, + "dependencies": { + "@mdx-js/react": "^3.0.0", + "@storybook/blocks": "8.6.13", + "@storybook/csf-plugin": "8.6.13", + "@storybook/react-dom-shim": "8.6.13", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-essentials": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.13.tgz", + "integrity": "sha512-gxpRLpptHhS+wbNWttG7Z/ss773zK04JYoYR6LVplcdEIZ3rtcqSVhg/ljCwAJpSNjRTl/vbM6xAoLHwWUfGBA==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "8.6.13", + "@storybook/addon-backgrounds": "8.6.13", + "@storybook/addon-controls": "8.6.13", + "@storybook/addon-docs": "8.6.13", + "@storybook/addon-highlight": "8.6.13", + "@storybook/addon-measure": "8.6.13", + "@storybook/addon-outline": "8.6.13", + "@storybook/addon-toolbars": "8.6.13", + "@storybook/addon-viewport": "8.6.13", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-highlight": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.13.tgz", + "integrity": "sha512-XDf3l/1Cg53UkbOpWTtWm1LIim2lFpwmz7WDHsTkdckWGh8Z7wLNXZAhe2C0a5YekVlKIKFiuZpWasfsMVcikQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-measure": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.13.tgz", + "integrity": "sha512-Io8DwW633CBPNxarSb2JYhu5XFovPl0uPtjbffC7QM2zDzbzHJqejK9wKZsXKHfBUw/3wS9Kg3QP6q6hF9dbVw==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-onboarding": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.6.13.tgz", + "integrity": "sha512-ayaRIhB8XkHORC/N0c3xvpBUN9L8s7jqL1erbfXhohQQAvj5K3JWue2GXUt0a8kIXxCpDBESFAmVUU1FwDkMIg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-outline": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.13.tgz", + "integrity": "sha512-OZvdQlNQ5YEZx6kq+CYf6WYv8EUrE7x8z/PFFF7oJB/NQrLR9HeqDjtRocOyHSHiuOlkvlfVxutgtXQ3co7e2Q==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-toolbars": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.13.tgz", + "integrity": "sha512-RUXfpjFNjTJVt/FhixV1hba+L2CR6VIbA74sQs4ZrXkTrTZ0Ucr6WVcysOVNgPsxAVXDjUH31jltSZFmPRxZ8A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/addon-viewport": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.13.tgz", + "integrity": "sha512-NbpR5EBvIexa/aUMURpXjnzkW4m5fnAq0iEpbQPA+A//slPWMU79Gs5hOogYVstGARptALxnk47TvWs0Yxf5gQ==", + "dev": true, + "dependencies": { + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/blocks": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.13.tgz", + "integrity": "sha512-YeCjj5ltBubX2jYJZU97FfJEGlVt4omXgA1eSjhXQVl8kZ+uc9Oihu0MjoV7/Ojnd1MFijZbiq95fbgjiGByMg==", + "dev": true, + "dependencies": { + "@storybook/icons": "^1.2.12", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "storybook": "^8.6.13" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@storybook/components": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.13.tgz", + "integrity": "sha512-aMuvH0j0bk50+bzsShXCItMvag5BKjA3JTD4y4CmjCcn3rib6y35dQEDLiJOf0YVqcXvWZ0XcQxXtHMrxsYT4Q==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/core": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.13.tgz", + "integrity": "sha512-KGoCEDdc7L2eZMvuedlf/uX8oGFlNsWMsYrzvzriKl8KBwlfDixPxC6R668LPi54NwCY8d3HxGOMOTf7Y0jyVQ==", + "dev": true, + "dependencies": { + "@storybook/theming": "8.6.13", + "better-opn": "^3.0.2", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", + "esbuild-register": "^3.5.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "process": "^0.11.10", + "recast": "^0.23.5", + "semver": "^7.6.2", + "util": "^0.12.5", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, + "node_modules/@storybook/core/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/csf": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.13.tgz", + "integrity": "sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==", + "dev": true, + "dependencies": { + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/csf-plugin": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.13.tgz", + "integrity": "sha512-YvrjhBZJYJ2HEqsrBG4WjVgGYcoEfcSpmB+6gCitIkH0RDWuFGKagqtGDH3A9rePsZWVOELVkBCRlkqZC+1IMw==", + "dev": true, + "dependencies": { + "unplugin": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/experimental-addon-test": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/experimental-addon-test/-/experimental-addon-test-8.6.13.tgz", + "integrity": "sha512-I8L6j8H0CY7EoS/OJ1W/NDCb0zirWU8X590FHBIe9PJY9FAwboOtHidkkmn4DR23UMuEJBXaXHJyHtWtikE3kw==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.2.12", + "@storybook/instrumenter": "8.6.13", + "@storybook/test": "8.6.13", + "polished": "^4.2.2", + "prompts": "^2.4.0", + "ts-dedent": "^2.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@vitest/browser": "^2.1.1 || ^3.0.0", + "@vitest/runner": "^2.1.1 || ^3.0.0", + "storybook": "^8.6.13", + "vitest": "^2.1.1 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + }, + "@vitest/runner": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true + }, + "node_modules/@storybook/icons": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz", + "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==", + "dev": true, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" + } + }, + "node_modules/@storybook/instrumenter": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.13.tgz", + "integrity": "sha512-xCmrBB2tIYkpjCn9OhIJapiJUSRfA9XfbfBUgaEPov6336k/TApMTN98Zh08tng2TCGk4YuTeMrfDOoIZW8Z4g==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "@vitest/utils": "^2.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/manager-api": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.13.tgz", + "integrity": "sha512-jdpLud4tryxItqurzFgVDoHRSGMvGo5TMNeV1+heyTib2HSPfxYpb9cYJW0MZQjN4kXaDP7YS/4kjO+HTn+nNw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/preview-api": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.13.tgz", + "integrity": "sha512-+Rz+RZVm28mATIXlSre/1zhgv4NOUoQ3/B9aAyI7/hX73XEwFWiRcuB6o+oJ06sJfxghXBrEfIpSriyS40lOsA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/react": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.13.tgz", + "integrity": "sha512-N7jrBHsYP6SuA7ghBxwrSbtTaMlNyzXZmxS1rF5uH8ZEw4rd0wjra+xFy1eyIdNacYhaSgYE1Oi+R5aWOOjBpw==", + "dev": true, + "dependencies": { + "@storybook/components": "8.6.13", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "8.6.13", + "@storybook/preview-api": "8.6.13", + "@storybook/react-dom-shim": "8.6.13", + "@storybook/theming": "8.6.13" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@storybook/test": "8.6.13", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.6.13", + "typescript": ">= 4.2.x" + }, + "peerDependenciesMeta": { + "@storybook/test": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/react-dom-shim": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.13.tgz", + "integrity": "sha512-FdQahPIUxBsx/nL9RiU1439M0mP8hSdeQ1iMxXy5TZPPxk745njzrqshsuROB4Grqsgtk1AdDQ4WCpQqkhVarQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/test": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.13.tgz", + "integrity": "sha512-qPLlS6LV2seEQzNPV3rDlFT2HIjsSM4NGbkEpDqbfnVZy4OIyEWyek4zcAN+l3i6+vKnRuz/OKI8mjODtaM3/g==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.6.13", + "@testing-library/dom": "10.4.0", + "@testing-library/jest-dom": "6.5.0", + "@testing-library/user-event": "14.5.2", + "@vitest/expect": "2.0.5", + "@vitest/spy": "2.0.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13" + } + }, + "node_modules/@storybook/theming": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.13.tgz", + "integrity": "sha512-wedypFtCNtatWLAbqnVqChrI8fCsJbu6oAIt5M9zakiSqwI+w1WPZjgkTJ0/jzqAb2bQ+9kjgZu4eK+01NETSw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.6.tgz", + "integrity": "sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==", + "dependencies": { + "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.29.2", - "tailwindcss": "4.1.5" + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.6" } }, "node_modules/@tailwindcss/oxide": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.5.tgz", - "integrity": "sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA==", - "dev": true, - "license": "MIT", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.6.tgz", + "integrity": "sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==", + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, "engines": { "node": ">= 10" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.5", - "@tailwindcss/oxide-darwin-arm64": "4.1.5", - "@tailwindcss/oxide-darwin-x64": "4.1.5", - "@tailwindcss/oxide-freebsd-x64": "4.1.5", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.5", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.5", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.5", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.5", - "@tailwindcss/oxide-linux-x64-musl": "4.1.5", - "@tailwindcss/oxide-wasm32-wasi": "4.1.5", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.5", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.5" + "@tailwindcss/oxide-android-arm64": "4.1.6", + "@tailwindcss/oxide-darwin-arm64": "4.1.6", + "@tailwindcss/oxide-darwin-x64": "4.1.6", + "@tailwindcss/oxide-freebsd-x64": "4.1.6", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.6", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.6", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.6", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.6", + "@tailwindcss/oxide-linux-x64-musl": "4.1.6", + "@tailwindcss/oxide-wasm32-wasi": "4.1.6", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.6", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.6" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.5.tgz", - "integrity": "sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.6.tgz", + "integrity": "sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==", "cpu": [ "arm64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -3620,14 +4306,12 @@ } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.5.tgz", - "integrity": "sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.6.tgz", + "integrity": "sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==", "cpu": [ "arm64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -3637,14 +4321,12 @@ } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.5.tgz", - "integrity": "sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.6.tgz", + "integrity": "sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==", "cpu": [ "x64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -3654,14 +4336,12 @@ } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.5.tgz", - "integrity": "sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.6.tgz", + "integrity": "sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==", "cpu": [ "x64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -3671,14 +4351,12 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.5.tgz", - "integrity": "sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.6.tgz", + "integrity": "sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==", "cpu": [ "arm" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3688,14 +4366,12 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.5.tgz", - "integrity": "sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.6.tgz", + "integrity": "sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==", "cpu": [ "arm64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3705,14 +4381,12 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.5.tgz", - "integrity": "sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.6.tgz", + "integrity": "sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==", "cpu": [ "arm64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3722,14 +4396,12 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.5.tgz", - "integrity": "sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.6.tgz", + "integrity": "sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==", "cpu": [ "x64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3739,14 +4411,12 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.5.tgz", - "integrity": "sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.6.tgz", + "integrity": "sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==", "cpu": [ "x64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3756,9 +4426,9 @@ } }, "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.5.tgz", - "integrity": "sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.6.tgz", + "integrity": "sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==", "bundleDependencies": [ "@napi-rs/wasm-runtime", "@emnapi/core", @@ -3770,8 +4440,6 @@ "cpu": [ "wasm32" ], - "dev": true, - "license": "MIT", "optional": true, "dependencies": { "@emnapi/core": "^1.4.3", @@ -3786,14 +4454,12 @@ } }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.5.tgz", - "integrity": "sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.6.tgz", + "integrity": "sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==", "cpu": [ "arm64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -3803,14 +4469,12 @@ } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.5.tgz", - "integrity": "sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.6.tgz", + "integrity": "sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==", "cpu": [ "x64" ], - "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -3819,20 +4483,6 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/postcss": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.5.tgz", - "integrity": "sha512-5lAC2/pzuyfhsFgk6I58HcNy6vPK3dV/PoPxSDuOTVbDvCddYHzHiJZZInGIY0venvzzfrTEUAXJFULAfFmObg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.5", - "@tailwindcss/oxide": "4.1.5", - "postcss": "^8.4.41", - "tailwindcss": "4.1.5" - } - }, "node_modules/@tailwindcss/typography": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", @@ -3848,6 +4498,124 @@ "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", + "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true + }, + "node_modules/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "dev": true, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, "node_modules/@types/babel-core": { "version": "6.25.10", "resolved": "https://registry.npmjs.org/@types/babel-core/-/babel-core-6.25.10.tgz", @@ -3919,6 +4687,12 @@ "@types/ms": "*" } }, + "node_modules/@types/doctrine": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", + "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", + "dev": true + }, "node_modules/@types/estree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", @@ -3959,6 +4733,12 @@ "@types/unist": "*" } }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "dev": true + }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", @@ -3969,7 +4749,7 @@ "version": "22.15.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz", "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -3979,8 +4759,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/prop-types": { "version": "15.7.14", @@ -4002,29 +4781,34 @@ "version": "18.3.7", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "devOptional": true, "license": "MIT", + "optional": true, + "peer": true, "peerDependencies": { "@types/react": "^18.0.0" } }, "node_modules/@types/react-relay": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@types/react-relay/-/react-relay-18.2.0.tgz", - "integrity": "sha512-F1QvwX9nnK33hzvsQfkAfDtwTWp195LpFXuArdmZFor9ELPu7SuxO6dlJGjRvXLRvBz3oJILniKL/8mGYPAZdA==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@types/react-relay/-/react-relay-18.2.1.tgz", + "integrity": "sha512-KgmFapsxAylhxcFfaAv5GZZJhTHnDvV8IDZVsUm5afpJUvgZC1Y68ssfOGsFfiFY/2EhxHM/YPfpdKbfmF3Ecg==", "dev": true, - "license": "MIT", "dependencies": { "@types/react": "*", "@types/relay-runtime": "*" } }, "node_modules/@types/relay-runtime": { - "version": "18.2.5", - "resolved": "https://registry.npmjs.org/@types/relay-runtime/-/relay-runtime-18.2.5.tgz", - "integrity": "sha512-2ukE6xQMIpa3kG8F33kXZMcGl/VJdDjNW3eKjQVe1AZQaYnIpNX8vXpcRD6pc+No2rOwVFLbQ6thaPSXPs8ouQ==", - "dev": true, - "license": "MIT" + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/@types/relay-runtime/-/relay-runtime-19.0.1.tgz", + "integrity": "sha512-CL+qytiGVqWDi3mLSKpwxnTFQbVq0Z0ejWWeutquqnNfSxwxN0p+FyoG6lb2ZIjzxBJazdLW2iX4NGAKS1LM0Q==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true }, "node_modules/@types/unist": { "version": "3.0.3", @@ -4032,6 +4816,12 @@ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.31.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.1.tgz", @@ -4257,6 +5047,349 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, + "node_modules/@vitest/browser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-3.1.3.tgz", + "integrity": "sha512-Dgyez9LbHJHl9ObZPo5mu4zohWLo7SMv8zRWclMF+dxhQjmOtEP0raEX13ac5ygcvihNoQPBZXdya5LMSbcCDQ==", + "dev": true, + "dependencies": { + "@testing-library/dom": "^10.4.0", + "@testing-library/user-event": "^14.6.1", + "@vitest/mocker": "3.1.3", + "@vitest/utils": "3.1.3", + "magic-string": "^0.30.17", + "sirv": "^3.0.1", + "tinyrainbow": "^2.0.0", + "ws": "^8.18.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "playwright": "*", + "vitest": "3.1.3", + "webdriverio": "^7.0.0 || ^8.0.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/@vitest/browser/node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "dev": true, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@vitest/browser/node_modules/@vitest/mocker": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.3.tgz", + "integrity": "sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==", + "dev": true, + "dependencies": { + "@vitest/spy": "3.1.3", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/browser/node_modules/@vitest/pretty-format": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz", + "integrity": "sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==", + "dev": true, + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/browser/node_modules/@vitest/spy": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.3.tgz", + "integrity": "sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==", + "dev": true, + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/browser/node_modules/@vitest/utils": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz", + "integrity": "sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "3.1.3", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/browser/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/browser/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@vitest/coverage-v8": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.3.tgz", + "integrity": "sha512-cj76U5gXCl3g88KSnf80kof6+6w+K4BjOflCl7t6yRJPDuCrHtVu0SgNYOUARJOL5TI8RScDbm5x4s1/P9bvpw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "debug": "^4.4.0", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.1.3", + "vitest": "3.1.3" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/coverage-v8/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@vitest/expect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", + "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", + "dev": true, + "dependencies": { + "@vitest/spy": "2.0.5", + "@vitest/utils": "2.0.5", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", + "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", + "dev": true, + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/@vitest/utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", + "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "2.0.5", + "estree-walker": "^3.0.3", + "loupe": "^3.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/expect/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "dev": true, + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.3.tgz", + "integrity": "sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==", + "dev": true, + "dependencies": { + "@vitest/utils": "3.1.3", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/@vitest/pretty-format": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz", + "integrity": "sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==", + "dev": true, + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/@vitest/utils": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz", + "integrity": "sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "3.1.3", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.3.tgz", + "integrity": "sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "3.1.3", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz", + "integrity": "sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==", + "dev": true, + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@vitest/spy": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", + "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", + "dev": true, + "dependencies": { + "tinyspy": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "2.1.9", + "loupe": "^3.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -4297,6 +5430,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4318,7 +5460,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -4335,156 +5476,39 @@ "node": ">=10" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dequal": "^2.0.3" } }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=12" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/autoprefixer": { @@ -4530,7 +5554,6 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, - "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -4546,7 +5569,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", @@ -4558,7 +5580,6 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", @@ -4575,7 +5596,6 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4592,7 +5612,6 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -4611,65 +5630,30 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", - "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.4", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", - "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", - "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.4" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/babel-plugin-relay": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-relay/-/babel-plugin-relay-18.2.0.tgz", - "integrity": "sha512-icTICGxKvlmhOvw+MESI/xBsY3J+vsNzgyq6/FL2c/hMnsYJ10IIM6Nps4M3cdUxQfS9CCUTXsbz2/kfmYLzhQ==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-relay/-/babel-plugin-relay-19.0.0.tgz", + "integrity": "sha512-7K0UnVyagSgzexy28KcEGu18/ms8wgJd2AufZshiKEaZXH/5XwtK2sh+6wKj/8U7xTGSudBuze39Se+CxSlxsw==", "dev": true, - "license": "MIT", "dependencies": { "babel-plugin-macros": "^2.0.0", "cosmiconfig": "^5.0.5", "graphql": "15.3.0" } }, + "node_modules/babel-plugin-relay/node_modules/graphql": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.3.0.tgz", + "integrity": "sha512-GTCJtzJmkFLWRfFJuoo9RWWa/FfamUHgiFosxi/X1Ani4AVWbeyBenZTNX6dM+7WSbbFfTo/25eh0LLkwHMw2w==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -4687,6 +5671,18 @@ "dev": true, "license": "MIT" }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4711,6 +5707,12 @@ "node": ">=8" } }, + "node_modules/browser-assert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", + "dev": true + }, "node_modules/browserslist": { "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", @@ -4744,12 +5746,20 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -4768,7 +5778,6 @@ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -4782,7 +5791,6 @@ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -4799,7 +5807,6 @@ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^2.0.0" }, @@ -4812,7 +5819,6 @@ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", "dev": true, - "license": "MIT", "dependencies": { "caller-callsite": "^2.0.0" }, @@ -4825,7 +5831,6 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -4861,6 +5866,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dev": true, + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4918,11 +5939,50 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "engines": { + "node": ">= 16" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "engines": { + "node": ">=18" + } + }, + "node_modules/chromatic": { + "version": "11.28.2", + "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.28.2.tgz", + "integrity": "sha512-aCmUPcZUs4/p9zRZdMreOoO/5JqO2DiJC3md1/vRx8dlMRcmR/YI5ZbgXZcai2absVR+6hsXZ5XiPxV2sboTuQ==", + "dev": true, + "bin": { + "chroma": "dist/bin.js", + "chromatic": "dist/bin.js", + "chromatic-cli": "dist/bin.js" + }, + "peerDependencies": { + "@chromatic-com/cypress": "^0.*.* || ^1.0.0", + "@chromatic-com/playwright": "^0.*.* || ^1.0.0" + }, + "peerDependenciesMeta": { + "@chromatic-com/cypress": { + "optional": true + }, + "@chromatic-com/playwright": { + "optional": true + } + } + }, "node_modules/class-variance-authority": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", "dependencies": { "clsx": "^2.1.1" }, @@ -4934,7 +5994,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -4992,6 +6051,10 @@ "dev": true, "license": "MIT" }, + "node_modules/console2": { + "resolved": "apps/console2", + "link": true + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -5019,26 +6082,11 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat": { - "version": "3.42.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz", - "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.24.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, - "license": "MIT", "dependencies": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", @@ -5053,7 +6101,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", - "license": "MIT", "dependencies": { "node-fetch": "^2.7.0" } @@ -5073,6 +6120,12 @@ "node": ">= 8" } }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -5091,60 +6144,6 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/date-fns": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", @@ -5185,6 +6184,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5197,7 +6205,6 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, - "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -5210,22 +6217,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, "node_modules/dequal": { @@ -5241,7 +6239,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -5267,24 +6264,28 @@ } }, "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -5294,6 +6295,12 @@ "node": ">= 0.4" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/electron-to-chromium": { "version": "1.5.147", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.147.tgz", @@ -5301,12 +6308,16 @@ "dev": true, "license": "ISC" }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "node_modules/enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5332,83 +6343,15 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.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", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -5418,45 +6361,21 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "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.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -5464,58 +6383,10 @@ "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/esbuild": { "version": "0.25.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -5552,6 +6423,18 @@ "@esbuild/win32-x64": "0.25.3" } }, + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -5636,55 +6519,42 @@ } } }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "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", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "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" - }, "engines": { - "node": ">=4" + "node": ">=10" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-plugin-storybook": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.12.0.tgz", + "integrity": "sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==", "dev": true, - "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "@storybook/csf": "^0.1.11", + "@typescript-eslint/utils": "^8.8.1", + "ts-dedent": "^2.2.0" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">= 18" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": ">=8" } }, "node_modules/eslint-scope": { @@ -5740,7 +6610,6 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5795,6 +6664,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -5805,6 +6680,15 @@ "node": ">=0.10.0" } }, + "node_modules/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5876,7 +6760,6 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", - "license": "MIT", "dependencies": { "cross-fetch": "^3.1.5", "fbjs-css-vars": "^1.0.0", @@ -5890,8 +6773,7 @@ "node_modules/fbjs-css-vars": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "license": "MIT" + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, "node_modules/fflate": { "version": "0.4.8", @@ -5912,6 +6794,15 @@ "node": ">=16.0.0" } }, + "node_modules/filesize": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", + "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", + "dev": true, + "engines": { + "node": ">= 10.4.0" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -5968,7 +6859,6 @@ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.2.7" }, @@ -5979,6 +6869,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -5993,43 +6899,24 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6058,7 +6945,6 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -6092,7 +6978,6 @@ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, - "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -6101,22 +6986,24 @@ "node": ">= 0.4" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { @@ -6132,6 +7019,30 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { "version": "16.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", @@ -6145,29 +7056,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6178,9 +7071,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -6190,26 +7081,12 @@ "license": "MIT" }, "node_modules/graphql": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.3.0.tgz", - "integrity": "sha512-GTCJtzJmkFLWRfFJuoo9RWWa/FfamUHgiFosxi/X1Ani4AVWbeyBenZTNX6dM+7WSbbFfTo/25eh0LLkwHMw2w==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", + "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 10.x" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, "node_modules/has-flag": { @@ -6227,7 +7104,6 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, - "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -6235,28 +7111,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6269,7 +7128,6 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -6285,7 +7143,6 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -6437,6 +7294,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "node_modules/html-url-attributes": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", @@ -6472,7 +7335,6 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "dev": true, - "license": "MIT", "dependencies": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" @@ -6491,27 +7353,27 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "node_modules/inline-style-parser": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", "license": "MIT" }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -6545,16 +7407,14 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6567,68 +7427,13 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6641,7 +7446,6 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -6652,41 +7456,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", @@ -6702,11 +7471,25 @@ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -6717,20 +7500,13 @@ "node": ">=0.10.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, "node_modules/is-generator-function": { @@ -6738,7 +7514,6 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", @@ -6775,19 +7550,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6798,23 +7560,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -6832,7 +7577,6 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -6846,76 +7590,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, - "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" }, @@ -6926,59 +7605,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "is-docker": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -6986,29 +7624,75 @@ "dev": true, "license": "ISC" }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jiti": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "dev": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -7025,7 +7709,6 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -7034,6 +7717,15 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -7058,15 +7750,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -7095,20 +7785,16 @@ "node": ">=6" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=4.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, "node_modules/keyv": { @@ -7121,6 +7807,15 @@ "json-buffer": "3.0.1" } }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -7139,7 +7834,6 @@ "version": "1.29.2", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", - "dev": true, "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -7171,7 +7865,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7192,7 +7885,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7213,7 +7905,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7234,7 +7925,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7255,7 +7945,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7276,7 +7965,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7297,7 +7985,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7318,7 +8005,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7339,7 +8025,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7360,7 +8045,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7378,8 +8062,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/locate-path": { "version": "6.0.0", @@ -7397,19 +8080,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/lodash.castarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", "license": "MIT" }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -7444,6 +8126,12 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "dev": true + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -7463,6 +8151,67 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -7478,7 +8227,6 @@ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -7765,6 +8513,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "dev": true, + "dependencies": { + "map-or-similar": "^1.5.0" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -8352,6 +9109,15 @@ "node": ">=8.6" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -8365,6 +9131,57 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8400,7 +9217,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8443,107 +9259,25 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, - "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { @@ -8564,24 +9298,6 @@ "node": ">= 0.8.0" } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -8614,6 +9330,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8667,7 +9389,6 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, - "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -8712,19 +9433,54 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "license": "MIT" + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "engines": { + "node": ">= 14.16" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -8744,12 +9500,67 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/playwright": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", + "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", + "dev": true, + "dependencies": { + "playwright-core": "1.52.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", + "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/polished": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -8846,25 +9657,75 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "license": "MIT", "dependencies": { "asap": "~2.0.3" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "license": "MIT", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" } }, "node_modules/property-information": { @@ -8920,6 +9781,66 @@ "node": ">=0.10.0" } }, + "node_modules/react-confetti": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.4.0.tgz", + "integrity": "sha512-5MdGUcqxrTU26I2EU7ltkWPwxvucQTuqMm8dUz72z2YMqTD6s9vMcDUysk7n9jnC+lXuCPeJJ7Knf98VEYE9Rg==", + "dev": true, + "dependencies": { + "tween-functions": "^1.2.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-docgen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz", + "integrity": "sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.18.9", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "@types/babel__core": "^7.18.0", + "@types/babel__traverse": "^7.18.0", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", + "doctrine": "^3.0.0", + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/react-docgen-typescript": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", + "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", + "dev": true, + "peerDependencies": { + "typescript": ">= 4.3.x" + } + }, + "node_modules/react-docgen/node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -8933,6 +9854,17 @@ "react": "^18.3.1" } }, + "node_modules/react-error-boundary": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-6.0.0.tgz", + "integrity": "sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", @@ -8954,11 +9886,10 @@ } }, "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "node_modules/react-markdown": { "version": "10.1.0", @@ -8987,20 +9918,28 @@ "react": ">=18" } }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-relay": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-relay/-/react-relay-18.2.0.tgz", - "integrity": "sha512-/yHlv4pj3IQQPtDzYLfVk6P4wrOSvYPu/5ySPcRp4xV3pn9xoVOHVczSLcZkRVf72lJu8CIjoT8rn3roaGoFyQ==", - "license": "MIT", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-relay/-/react-relay-19.0.0.tgz", + "integrity": "sha512-OaUISVLUTjfBL1tGBtmt3eDZC+KFnP4QIHq0HDacm7ntiZPgAt+udYs3zapuc8hN65wlRruaLKrWc6P/ZQRlSg==", "dependencies": { "@babel/runtime": "^7.25.0", "fbjs": "^3.0.2", "invariant": "^2.2.4", "nullthrows": "^1.1.1", - "relay-runtime": "18.2.0" + "relay-runtime": "19.0.0" }, "peerDependencies": { - "react": "^16.9.0 || ^17 || ^18" + "react": "^16.9.0 || ^17 || ^18 || ^19" } }, "node_modules/react-remove-scroll": { @@ -9051,14 +9990,12 @@ } }, "node_modules/react-router": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.5.3.tgz", - "integrity": "sha512-3iUDM4/fZCQ89SXlDa+Ph3MevBrozBAI655OAfWQlTm9nBR0IKlrmNwFow5lPHttbwvITZfkeeeZFP6zt3F7pw==", - "license": "MIT", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.0.tgz", + "integrity": "sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==", "dependencies": { "cookie": "^1.0.1", - "set-cookie-parser": "^2.6.0", - "turbo-stream": "2.4.0" + "set-cookie-parser": "^2.6.0" }, "engines": { "node": ">=20.0.0" @@ -9095,119 +10032,33 @@ } } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 4" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", - "dev": true, - "license": "MIT", "dependencies": { - "regenerate": "^1.4.2" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/rehype-raw": { @@ -9226,20 +10077,18 @@ } }, "node_modules/relay-compiler": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-18.2.0.tgz", - "integrity": "sha512-P3o5/Gv/oLC9hckUaz/a+KvDgbFERpjtz5lgsJSIQILg9paaF3k1yaX9qSxErGuU4icZvjoK5G82a/bfPgGZpA==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-19.0.0.tgz", + "integrity": "sha512-DwyNWPUkzdggT3oBuNTS18bL6KCU3Sg/oSW/q+pqOQNHLo+RUZOWAx44ALy5XoBrsXjQVBr0EiNqJ4A8G1skOw==", "dev": true, - "license": "MIT", "bin": { "relay-compiler": "cli.js" } }, "node_modules/relay-runtime": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-18.2.0.tgz", - "integrity": "sha512-r4FYWlx1dPwFW+KQnuF1ugwVKR4toIFduCGheEf2paRc6nEEcCIgd2p2Jx2gRF+4niO3mCbRZvqdCoKaznUDzg==", - "license": "MIT", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-19.0.0.tgz", + "integrity": "sha512-uQqizN6d/7ZkTm2C0sTUAFfHk65BQEFLkfp0IBsXPTsXLL3fAJ2iHkemA621vuphtiKsF06C5ZKxypmC5lduFg==", "dependencies": { "@babel/runtime": "^7.25.0", "fbjs": "^3.0.2", @@ -9317,7 +10166,6 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -9338,7 +10186,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -9354,6 +10201,44 @@ "node": ">=0.10.0" } }, + "node_modules/rollup": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.2.tgz", + "integrity": "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.2", + "@rollup/rollup-android-arm64": "4.40.2", + "@rollup/rollup-darwin-arm64": "4.40.2", + "@rollup/rollup-darwin-x64": "4.40.2", + "@rollup/rollup-freebsd-arm64": "4.40.2", + "@rollup/rollup-freebsd-x64": "4.40.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", + "@rollup/rollup-linux-arm-musleabihf": "4.40.2", + "@rollup/rollup-linux-arm64-gnu": "4.40.2", + "@rollup/rollup-linux-arm64-musl": "4.40.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", + "@rollup/rollup-linux-riscv64-gnu": "4.40.2", + "@rollup/rollup-linux-riscv64-musl": "4.40.2", + "@rollup/rollup-linux-s390x-gnu": "4.40.2", + "@rollup/rollup-linux-x64-gnu": "4.40.2", + "@rollup/rollup-linux-x64-musl": "4.40.2", + "@rollup/rollup-win32-arm64-msvc": "4.40.2", + "@rollup/rollup-win32-ia32-msvc": "4.40.2", + "@rollup/rollup-win32-x64-msvc": "4.40.2", + "fsevents": "~2.3.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9378,49 +10263,11 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -9463,7 +10310,6 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -9476,42 +10322,10 @@ "node": ">= 0.4" } }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "license": "MIT" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/shallowequal": { "version": "1.1.0", @@ -9542,80 +10356,51 @@ "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "node_modules/sirv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", "dev": true, - "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, "node_modules/source-map-js": { @@ -9641,105 +10426,94 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" + "dev": true }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "dev": true + }, + "node_modules/storybook": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.13.tgz", + "integrity": "sha512-RUPf8PHQcaK6k6/jyE0yyUbhQoghxoemvs4mQ75Wl0sZ36JF4TiLvW+618++6eTOwxe+oIu2EUavkaNQTn8xnw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" + "@storybook/core": "8.6.13" }, - "engines": { - "node": ">= 0.4" + "bin": { + "getstorybook": "bin/index.cjs", + "sb": "bin/index.cjs", + "storybook": "bin/index.cjs" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, "node_modules/stringify-entities": { @@ -9756,6 +10530,67 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -9805,7 +10640,6 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9814,20 +10648,42 @@ } }, "node_modules/tailwind-merge": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", - "integrity": "sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==", - "license": "MIT", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.0.tgz", + "integrity": "sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-1.0.0.tgz", + "integrity": "sha512-2WSbv4ulEEyuBKomOunut65D8UZwxrHoRfYnxGcQNnHqlSCp2+B7Yz2W+yrNDrxRodOXtGD/1oCcKGNBnUqMqA==", + "dependencies": { + "tailwind-merge": "3.0.2" + }, + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwindcss": "*" + } + }, + "node_modules/tailwind-variants/node_modules/tailwind-merge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz", + "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==", "funding": { "type": "github", "url": "https://github.com/sponsors/dcastil" } }, "node_modules/tailwindcss": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz", - "integrity": "sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==", - "license": "MIT" + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.6.tgz", + "integrity": "sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==" }, "node_modules/tailwindcss-animate": { "version": "1.0.7", @@ -9842,12 +10698,156 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "engines": { + "node": ">=18" + } + }, + "node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9861,11 +10861,19 @@ "node": ">=8.0" } }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/trim-lines": { "version": "3.0.1", @@ -9900,17 +10908,48 @@ "typescript": ">=4.8.4" } }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, + "engines": { + "node": ">=6.10" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, - "node_modules/turbo-stream": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", - "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", - "license": "ISC" + "node_modules/tw-animate-css": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.0.tgz", + "integrity": "sha512-jrJ0XenzS9KVuDThJDvnhalbl4IYiMQ/XvpA0a2FL8KmlK+6CSMviO7ROY/I7z1NnUs5NnDhlM6fXmF40xPxzw==", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/tween-functions": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", + "integrity": "sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", @@ -9925,82 +10964,16 @@ "node": ">= 0.8.0" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" + "node": ">=12.20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typescript": { @@ -10058,7 +11031,6 @@ "url": "https://github.com/sponsors/faisalman" } ], - "license": "MIT", "bin": { "ua-parser-js": "script/cli.js" }, @@ -10066,76 +11038,13 @@ "node": "*" } }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", @@ -10223,6 +11132,28 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unplugin": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", + "dev": true, + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -10316,12 +11247,38 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -10364,6 +11321,423 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/vite-node": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.3.tgz", + "integrity": "sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-node/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite-node/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite-node/node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node/node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/vitest": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.3.tgz", + "integrity": "sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==", + "dev": true, + "dependencies": { + "@vitest/expect": "3.1.3", + "@vitest/mocker": "3.1.3", + "@vitest/pretty-format": "^3.1.3", + "@vitest/runner": "3.1.3", + "@vitest/snapshot": "3.1.3", + "@vitest/spy": "3.1.3", + "@vitest/utils": "3.1.3", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.13", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.3", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.3", + "@vitest/ui": "3.1.3", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/@vitest/expect": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz", + "integrity": "sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==", + "dev": true, + "dependencies": { + "@vitest/spy": "3.1.3", + "@vitest/utils": "3.1.3", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest/node_modules/@vitest/mocker": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.3.tgz", + "integrity": "sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==", + "dev": true, + "dependencies": { + "@vitest/spy": "3.1.3", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/@vitest/pretty-format": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz", + "integrity": "sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==", + "dev": true, + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest/node_modules/@vitest/spy": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.3.tgz", + "integrity": "sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==", + "dev": true, + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest/node_modules/@vitest/utils": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz", + "integrity": "sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==", + "dev": true, + "dependencies": { + "@vitest/pretty-format": "3.1.3", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/vitest/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vitest/node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", @@ -10383,14 +11757,18 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -10412,79 +11790,11 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/which-typed-array": { "version": "1.1.19", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -10501,6 +11811,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -10511,6 +11837,106 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -10523,7 +11949,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } @@ -10541,6 +11966,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zustand": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.4.tgz", + "integrity": "sha512-39VFTN5InDtMd28ZhjLyuTnlytDr9HfwO512Ai4I8ZABCoyAj4F1+sr7sD1jP/+p7k77Iko0Pb5NhgBFDCX0kQ==", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", @@ -10565,6 +12018,45 @@ "esbuild": "^0.25.0" } }, + "packages/helpers": { + "name": "@probo/helpers", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@probo/prettier": "1.0.0", + "prettier": "^3.5.3", + "typescript": "^5.8.3", + "vitest": "^3.1.3" + } + }, + "packages/i18n": { + "name": "@probo/i18n", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "date-fns": "^3.6.0" + }, + "devDependencies": { + "@types/react": "^18.2.78" + }, + "peerDependencies": { + "react": "^18.0" + } + }, + "packages/i18n/node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "packages/prettier": { + "name": "@probo/prettier", + "version": "1.0.0", + "license": "ISC" + }, "packages/react-lazy": { "name": "@probo/react-lazy", "version": "0.1.0", @@ -10578,6 +12070,785 @@ "version": "0.0.1", "license": "MIT" }, + "packages/ui": { + "name": "@probo/ui", + "version": "1.0.0", + "dependencies": { + "@probo/helpers": "1.0.0", + "@probo/i18n": "1.0.0", + "@radix-ui/react-dropdown-menu": "^2.1.14", + "@tailwindcss/vite": "^4.1.7", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "tailwind-merge": "^3.3.0", + "tailwind-variants": "^1.0.0", + "tailwindcss": "^4.1.7", + "tw-animate-css": "^1.3.0", + "zustand": "^5.0.4" + }, + "devDependencies": { + "@chromatic-com/storybook": "^3.2.6", + "@eslint/js": "^9.25.0", + "@probo/prettier": "1.0.0", + "@storybook/addon-essentials": "^8.6.13", + "@storybook/addon-onboarding": "^8.6.13", + "@storybook/blocks": "^8.6.13", + "@storybook/experimental-addon-test": "^8.6.13", + "@storybook/react": "^8.6.13", + "@storybook/react-vite": "^8.6.13", + "@storybook/test": "^8.6.13", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "@vitest/browser": "^3.1.3", + "@vitest/coverage-v8": "^3.1.3", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "eslint-plugin-storybook": "^0.12.0", + "globals": "^16.0.0", + "playwright": "^1.52.0", + "prettier": "^3.5.3", + "react-router": "^7.6.0", + "storybook": "^8.6.13", + "typescript": "~5.8.3", + "typescript-eslint": "^8.30.1", + "vite": "^6.3.5", + "vitest": "^3.1.3" + }, + "peerDependencies": { + "react-router": "^7.6.0" + } + }, + "packages/ui/node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.5.0.tgz", + "integrity": "sha512-qYDdL7fPwLRI+bJNurVcis+tNgJmvWjH4YTBGXTA8xMuxFrnAz6E5o35iyzyKbq5J5Lr8mJGfrR5GXl+WGwhgQ==", + "dev": true, + "dependencies": { + "glob": "^10.0.0", + "magic-string": "^0.27.0", + "react-docgen-typescript": "^2.2.2" + }, + "peerDependencies": { + "typescript": ">= 4.3.x", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/ui/node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "packages/ui/node_modules/@storybook/builder-vite": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.13.tgz", + "integrity": "sha512-t3K9N0qk4yAHSDZPLwy50h/rNanbhIv/9WuNF0RPTSwJwBpCZsPZ8I3kxIyiF0fRPQmoGxyL1c6Fd5jMx3eClw==", + "dev": true, + "dependencies": { + "@storybook/csf-plugin": "8.6.13", + "browser-assert": "^1.2.1", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.6.13", + "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" + } + }, + "packages/ui/node_modules/@storybook/react-vite": { + "version": "8.6.13", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.13.tgz", + "integrity": "sha512-XsTRiDEECHLabdXi9k96MIA5jYB+A2wT8Bw2rXueem4ISFwksDIh4H1Xd712pFqMA6J1lLC00BC3fuwRWwa4tw==", + "dev": true, + "dependencies": { + "@joshwooding/vite-plugin-react-docgen-typescript": "0.5.0", + "@rollup/pluginutils": "^5.0.2", + "@storybook/builder-vite": "8.6.13", + "@storybook/react": "8.6.13", + "find-up": "^5.0.0", + "magic-string": "^0.30.0", + "react-docgen": "^7.0.0", + "resolve": "^1.22.8", + "tsconfig-paths": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@storybook/test": "8.6.13", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.6.13", + "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "@storybook/test": { + "optional": true + } + } + }, + "packages/ui/node_modules/@tailwindcss/node": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.7.tgz", + "integrity": "sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.7" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.7.tgz", + "integrity": "sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==", + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-x64": "4.1.7", + "@tailwindcss/oxide-freebsd-x64": "4.1.7", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.7", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.7", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-x64-musl": "4.1.7", + "@tailwindcss/oxide-wasm32-wasi": "4.1.7", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.7", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.7" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.7.tgz", + "integrity": "sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.7.tgz", + "integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.7.tgz", + "integrity": "sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.7.tgz", + "integrity": "sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.7.tgz", + "integrity": "sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.7.tgz", + "integrity": "sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.7.tgz", + "integrity": "sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.7.tgz", + "integrity": "sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.7.tgz", + "integrity": "sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.7.tgz", + "integrity": "sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.9", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.7.tgz", + "integrity": "sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.7.tgz", + "integrity": "sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "packages/ui/node_modules/@tailwindcss/vite": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.7.tgz", + "integrity": "sha512-tYa2fO3zDe41I7WqijyVbRd8oWT0aEID1Eokz5hMT6wShLIHj3yvwj9XbfuloHP9glZ6H+aG2AN/+ZrxJ1Y5RQ==", + "dependencies": { + "@tailwindcss/node": "4.1.7", + "@tailwindcss/oxide": "4.1.7", + "tailwindcss": "4.1.7" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "packages/ui/node_modules/@types/react": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.4.tgz", + "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", + "dev": true, + "dependencies": { + "csstype": "^3.0.2" + } + }, + "packages/ui/node_modules/@types/react-dom": { + "version": "19.1.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", + "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", + "dev": true, + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "packages/ui/node_modules/@vitejs/plugin-react": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz", + "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==", + "dev": true, + "dependencies": { + "@babel/core": "^7.26.10", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "packages/ui/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "packages/ui/node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "packages/ui/node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "packages/ui/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "packages/ui/node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "engines": { + "node": ">=0.10.0" + } + }, + "packages/ui/node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "packages/ui/node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" + }, + "packages/ui/node_modules/tailwindcss": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.7.tgz", + "integrity": "sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==" + }, + "packages/ui/node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "packages/ui/node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "packages/vendors": { "name": "@probo/vendors", "version": "0.0.1", diff --git a/package.json b/package.json index f37c7a2c5..aa5db896a 100644 --- a/package.json +++ b/package.json @@ -15,5 +15,8 @@ "test": "npm run test --workspaces --if-present", "lint": "npm run lint --workspaces --if-present" }, - "license": "MIT" + "license": "MIT", + "volta": { + "node": "22.15.0" + } } diff --git a/packages/helpers/package.json b/packages/helpers/package.json new file mode 100644 index 000000000..420f5a72b --- /dev/null +++ b/packages/helpers/package.json @@ -0,0 +1,21 @@ +{ + "name": "@probo/helpers", + "version": "1.0.0", + "description": "", + "main": "./src/index.ts", + "scripts": { + "test": "vitest run", + "test:watch": "vitest", + "format": "prettier --write ./src" + }, + "prettier": "@probo/prettier", + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@probo/prettier": "1.0.0", + "prettier": "^3.5.3", + "typescript": "^5.8.3", + "vitest": "^3.1.3" + } +} diff --git a/packages/helpers/src/index.ts b/packages/helpers/src/index.ts new file mode 100644 index 000000000..a675cb8ee --- /dev/null +++ b/packages/helpers/src/index.ts @@ -0,0 +1 @@ +export { objectKeys } from "./object"; diff --git a/packages/helpers/src/object.ts b/packages/helpers/src/object.ts new file mode 100644 index 000000000..79dae6d71 --- /dev/null +++ b/packages/helpers/src/object.ts @@ -0,0 +1,6 @@ +/** + * A type safe version of Object.keys + */ +export function objectKeys(object: T) { + return Object.keys(object) as (keyof T)[]; +} diff --git a/packages/helpers/tsconfig.json b/packages/helpers/tsconfig.json new file mode 100644 index 000000000..59aa2100a --- /dev/null +++ b/packages/helpers/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "lib": ["ES2021", "dom"] + } +} diff --git a/packages/i18n/TranslatorProvider.tsx b/packages/i18n/TranslatorProvider.tsx new file mode 100644 index 000000000..3e359fe5e --- /dev/null +++ b/packages/i18n/TranslatorProvider.tsx @@ -0,0 +1,60 @@ +import { + createContext, + PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from "react"; + +const defaultValue = { + lang: "en" as "en" | "fr", + translations: {} as Record, + translate: (s: string) => s, +}; + +type Context = typeof defaultValue; + +const TranslatorContext = createContext(defaultValue); + +type Props = { + lang: "en" | "fr"; + loader: (lang: string) => Promise>; +}; + +export function TranslatorProvider({ + lang, + loader, + children, +}: PropsWithChildren) { + const [translations, setTranslations] = useState( + {} as Record, + ); + const translate = useCallback( + (s) => { + return translations[s] ? translations[s] : s; + }, + [translations], + ); + + useEffect(() => { + loader(lang).then(setTranslations); + }, [lang]); + + return ( + + {children} + + ); +} + +export function useTranslate() { + const { translate, lang } = + useContext(TranslatorContext); + return { + lang, + __: translate, + }; +} diff --git a/packages/i18n/package.json b/packages/i18n/package.json new file mode 100644 index 000000000..a3369910d --- /dev/null +++ b/packages/i18n/package.json @@ -0,0 +1,19 @@ +{ + "name": "@probo/i18n", + "version": "1.0.0", + "description": "", + "main": "./TranslatorProvider.tsx", + "scripts": {}, + "peerDependencies": { + "react": "^18.0" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@types/react": "^18.2.78" + }, + "dependencies": { + "date-fns": "^3.6.0" + } +} diff --git a/packages/prettier/package.json b/packages/prettier/package.json new file mode 100644 index 000000000..d45fc2dcb --- /dev/null +++ b/packages/prettier/package.json @@ -0,0 +1,12 @@ +{ + "name": "@probo/prettier", + "private": true, + "version": "1.0.0", + "description": "", + "main": "prettier.config.js", + "scripts": { + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/packages/prettier/prettier.config.js b/packages/prettier/prettier.config.js new file mode 100644 index 000000000..13c75b8f4 --- /dev/null +++ b/packages/prettier/prettier.config.js @@ -0,0 +1,3 @@ +module.exports = { + tabWidth: 4, +}; diff --git a/packages/ui/.gitignore b/packages/ui/.gitignore new file mode 100644 index 000000000..f940a995d --- /dev/null +++ b/packages/ui/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*storybook.log diff --git a/packages/ui/.storybook/main.ts b/packages/ui/.storybook/main.ts new file mode 100644 index 000000000..665e7fc14 --- /dev/null +++ b/packages/ui/.storybook/main.ts @@ -0,0 +1,28 @@ +import type { StorybookConfig } from '@storybook/react-vite'; + +import { join, dirname } from "path" + +/** +* This function is used to resolve the absolute path of a package. +* It is needed in projects that use Yarn PnP or are set up within a monorepo. +*/ +function getAbsolutePath(value: string): any { + return dirname(require.resolve(join(value, 'package.json'))) +} +const config: StorybookConfig = { + "stories": [ + "../src/**/*.mdx", + "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)" + ], + "addons": [ + getAbsolutePath('@storybook/addon-essentials'), + getAbsolutePath('@storybook/addon-onboarding'), + getAbsolutePath('@chromatic-com/storybook'), + getAbsolutePath("@storybook/experimental-addon-test") + ], + "framework": { + "name": getAbsolutePath('@storybook/react-vite'), + "options": {} + } +}; +export default config; \ No newline at end of file diff --git a/packages/ui/.storybook/preview.css b/packages/ui/.storybook/preview.css new file mode 100644 index 000000000..1552a5844 --- /dev/null +++ b/packages/ui/.storybook/preview.css @@ -0,0 +1,3 @@ +@import url("https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap"); +@import 'tailwindcss'; +@import '../src/theme.css'; diff --git a/packages/ui/.storybook/preview.tsx b/packages/ui/.storybook/preview.tsx new file mode 100644 index 000000000..b7a536614 --- /dev/null +++ b/packages/ui/.storybook/preview.tsx @@ -0,0 +1,27 @@ +import type { Preview } from "@storybook/react"; + +import "../src/theme.css"; +import "./preview.css"; +import { BrowserRouter } from "react-router"; + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, + decorators: [ + (Story, { parameters }) => { + return ( + + + + ); + }, + ], +}; + +export default preview; diff --git a/packages/ui/README.md b/packages/ui/README.md new file mode 100644 index 000000000..da9844432 --- /dev/null +++ b/packages/ui/README.md @@ -0,0 +1,54 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default tseslint.config({ + extends: [ + // Remove ...tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + ], + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default tseslint.config({ + plugins: { + // Add the react-x and react-dom plugins + 'react-x': reactX, + 'react-dom': reactDom, + }, + rules: { + // other rules... + // Enable its recommended typescript rules + ...reactX.configs['recommended-typescript'].rules, + ...reactDom.configs.recommended.rules, + }, +}) +``` diff --git a/packages/ui/eslint.config.js b/packages/ui/eslint.config.js new file mode 100644 index 000000000..092408a9f --- /dev/null +++ b/packages/ui/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/packages/ui/index.html b/packages/ui/index.html new file mode 100644 index 000000000..1bd99ac0f --- /dev/null +++ b/packages/ui/index.html @@ -0,0 +1,12 @@ + + + + + + Vite + React + TS + + +
+ + + diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 000000000..de554c73d --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,66 @@ +{ + "name": "@probo/ui", + "version": "1.0.0", + "private": true, + "type": "module", + "main": "src/index.ts", + "scripts": { + "lint": "eslint .", + "dev": "storybook dev -p 6006", + "build": "storybook build" + }, + "prettier": "@probo/prettier", + "dependencies": { + "@probo/helpers": "1.0.0", + "@probo/i18n": "1.0.0", + "@radix-ui/react-dropdown-menu": "^2.1.14", + "@tailwindcss/vite": "^4.1.7", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "tailwind-merge": "^3.3.0", + "tailwind-variants": "^1.0.0", + "tailwindcss": "^4.1.7", + "tw-animate-css": "^1.3.0", + "zustand": "^5.0.4" + }, + "devDependencies": { + "@chromatic-com/storybook": "^3.2.6", + "@eslint/js": "^9.25.0", + "@probo/prettier": "1.0.0", + "@storybook/addon-essentials": "^8.6.13", + "@storybook/addon-onboarding": "^8.6.13", + "@storybook/blocks": "^8.6.13", + "@storybook/experimental-addon-test": "^8.6.13", + "@storybook/react": "^8.6.13", + "@storybook/react-vite": "^8.6.13", + "@storybook/test": "^8.6.13", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "@vitest/browser": "^3.1.3", + "@vitest/coverage-v8": "^3.1.3", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "eslint-plugin-storybook": "^0.12.0", + "globals": "^16.0.0", + "playwright": "^1.52.0", + "prettier": "^3.5.3", + "react-router": "^7.6.0", + "storybook": "^8.6.13", + "typescript": "~5.8.3", + "typescript-eslint": "^8.30.1", + "vite": "^6.3.5", + "vitest": "^3.1.3" + }, + "peerDependencies": { + "react-router": "^7.6.0" + }, + "eslintConfig": { + "extends": [ + "plugin:storybook/recommended" + ] + } +} diff --git a/packages/ui/src/Atoms/Avatar/Avatar.stories.tsx b/packages/ui/src/Atoms/Avatar/Avatar.stories.tsx new file mode 100644 index 000000000..9c9bfba4e --- /dev/null +++ b/packages/ui/src/Atoms/Avatar/Avatar.stories.tsx @@ -0,0 +1,16 @@ +import { Avatar } from "./Avatar"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Atoms/Avatar", + component: Avatar, + argTypes: {}, +} satisfies Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + fullName: "John Doe", + }, +}; diff --git a/packages/ui/src/Atoms/Avatar/Avatar.tsx b/packages/ui/src/Atoms/Avatar/Avatar.tsx new file mode 100644 index 000000000..75b03db47 --- /dev/null +++ b/packages/ui/src/Atoms/Avatar/Avatar.tsx @@ -0,0 +1,36 @@ +import { tv } from "tailwind-variants"; + +type Props = { + fullName: string; + size?: "s" | "m" | "l" | "xl"; +}; + +const avatar = tv({ + base: "bg-txt-success text-sm text-invert rounded-full text-xxs font-semibold flex items-center justify-center", + variants: { + size: { + s: "size-5", + m: "size-6", + l: "size-8", + xl: "size-16", + }, + }, + defaultVariants: { + size: "m", + }, +}); + +export function Avatar({ fullName, size = "m" }: Props) { + return
{extractInitials(fullName)}
; +} + +function extractInitials(name: string) { + const words = name.split(" "); + if (words.length === 2) { + return words + .map((word) => word[0]) + .join("") + .toUpperCase(); + } + return name.substring(0, 2).toUpperCase(); +} diff --git a/packages/ui/src/Atoms/Button/Button.stories.tsx b/packages/ui/src/Atoms/Button/Button.stories.tsx new file mode 100644 index 000000000..02b602457 --- /dev/null +++ b/packages/ui/src/Atoms/Button/Button.stories.tsx @@ -0,0 +1,54 @@ +import { IconPlusLarge } from "../Icons"; +import { Button } from "./Button"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Atoms/Button", + component: Button, + argTypes: {}, +} satisfies Meta; + +type Story = StoryObj; + +const variants = [ + "primary", + "secondary", + "tertiary", + "quaternary", + "danger", +] as const; + +export const Default: Story = { + render() { + return ( +
+ {variants.map((variant) => ( +
+ + +
+ ))} +
+ ); + }, +}; diff --git a/packages/ui/src/Atoms/Button/Button.tsx b/packages/ui/src/Atoms/Button/Button.tsx new file mode 100644 index 000000000..ba5945cb5 --- /dev/null +++ b/packages/ui/src/Atoms/Button/Button.tsx @@ -0,0 +1,83 @@ +import type { + AnchorHTMLAttributes, + ButtonHTMLAttributes, + FC, + PropsWithChildren, +} from "react"; +import { forwardRef } from "react"; +import { Link } from "react-router"; +import { tv, type VariantProps } from "tailwind-variants"; + +const button = tv({ + base: "flex items-center justify-center gap-[6px] px-3 py-2 rounded-full cursor-pointer text-sm font-medium h-8", + variants: { + variant: { + primary: + "bg-primary text-invert hover:bg-primary-hover shadow-base hover:shadow-hover active:bg-primary-pressed focus:shadow-focus", + secondary: + "bg-secondary text-txt-primary hover:bg-secondary-hover shadow-base hover:shadow-hover active:bg-secondary-pressed focus:shadow-focus border border-border-low", + tertiary: + "bg-tertiary text-txt-primary hover:bg-tertiary-hover active:bg-tertiary-pressed focus:shadow-focus", + quaternary: + "bg-highlight text-txt-primary hover:bg-highlight-hover active:bg-highlight-pressed", + danger: "bg-danger-plain text-invert hover:bg-danger-hover shadow-base hover:shadow-hover active:bg-danger-pressed focus:shadow-focus border border-border-danger", + }, + disabled: { + true: "opacity-60 cursor-default", + }, + empty: { + true: "p-2 size-8", + }, + }, + defaultVariants: { + variant: "primary", + icon: false, + children: undefined, + }, +}); + +type Props = PropsWithChildren< + { + icon?: FC<{ size: number }>; + iconAfter?: FC<{ size: number }>; + disabled?: boolean; + onClick?: () => void; + variant?: + | "primary" + | "secondary" + | "tertiary" + | "quaternary" + | "danger"; + to?: string; + } & VariantProps +> & + ( + | ButtonHTMLAttributes + | AnchorHTMLAttributes + ); + +export const Button = forwardRef( + (props, ref) => { + const Component = props.to ? Link : "button"; + const { + icon: IconComponent, + iconAfter: IconAfterComponent, + children, + onClick, + ...componentProps + } = props; + return ( + + {IconComponent && } + {children} + {IconAfterComponent && } + + ); + }, +); diff --git a/packages/ui/src/Atoms/Dropdown/Dropdown.stories.tsx b/packages/ui/src/Atoms/Dropdown/Dropdown.stories.tsx new file mode 100644 index 000000000..e7dbaafc3 --- /dev/null +++ b/packages/ui/src/Atoms/Dropdown/Dropdown.stories.tsx @@ -0,0 +1,35 @@ +import { Button } from "../Button/Button"; +import { IconCircleQuestionmark1 } from "../Icons"; +import { Dropdown, DropdownItem, DropdownSeparator } from "./Dropdown"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Atoms/Dropdown", + component: Dropdown, + argTypes: {}, + subcomponents: { + DropdownItem, + DropdownSeparator, + }, +} satisfies Meta; + +type Story = StoryObj; + +export const Default: Story = { + render: () => { + return ( + Dropdown}> + + Item 1 + + + + Item 2 + + + Item 3 + + + ); + }, +}; diff --git a/packages/ui/src/Atoms/Dropdown/Dropdown.tsx b/packages/ui/src/Atoms/Dropdown/Dropdown.tsx new file mode 100644 index 000000000..4f212a50f --- /dev/null +++ b/packages/ui/src/Atoms/Dropdown/Dropdown.tsx @@ -0,0 +1,79 @@ +import type { FC, PropsWithChildren, ReactNode } from "react"; +import * as DropdownMenu from "@radix-ui/react-dropdown-menu"; +import { clsx } from "clsx"; +import type { IconProps } from "../Icons/type.ts"; +import { tv } from "tailwind-variants"; + +type Props = PropsWithChildren<{ + toggle: ReactNode; + className?: string; +}>; + +export function Dropdown({ children, toggle, className }: Props) { + return ( + + {toggle} + + + {children} + + + + ); +} + +export function DropdownSeparator() { + return ; +} + +type DropdownItemProps = PropsWithChildren<{ + className?: string; + icon?: FC; + asChild?: boolean; + variant?: "primary" | "tertiary" | "danger"; +}>; + +const dropdownItem = tv({ + base: "text-txt-primary flex items-center gap-2 hover:bg-tertiary-hover active:bg-tertiary-pressed cursor-pointer p-2", + variants: { + variant: { + primary: "text-txt-primary", + tertiary: "text-txt-tertiary", + danger: "text-txt-danger", + }, + }, + defaultVariants: { + variant: "primary", + }, +}); + +export function DropdownItem({ + icon: IconComponent, + variant, + className, + children, + asChild, +}: DropdownItemProps) { + return ( + + {asChild ? ( + children + ) : ( + <> + {IconComponent && } + {children} + + )} + + ); +} diff --git a/packages/ui/src/Atoms/Icons/Frame-1.svg b/packages/ui/src/Atoms/Icons/Frame-1.svg new file mode 100644 index 000000000..c68462645 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/Frame-1.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/Frame-2.svg b/packages/ui/src/Atoms/Icons/Frame-2.svg new file mode 100644 index 000000000..0b2a32f6e --- /dev/null +++ b/packages/ui/src/Atoms/Icons/Frame-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/Frame.svg b/packages/ui/src/Atoms/Icons/Frame.svg new file mode 100644 index 000000000..c53d1c0c8 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/Frame.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/IconArrowBoxLeft.tsx b/packages/ui/src/Atoms/Icons/IconArrowBoxLeft.tsx new file mode 100644 index 000000000..5712f535e --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconArrowBoxLeft.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconArrowBoxLeft({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconArrowCornerDownLeft.tsx b/packages/ui/src/Atoms/Icons/IconArrowCornerDownLeft.tsx new file mode 100644 index 000000000..e41823362 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconArrowCornerDownLeft.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconArrowCornerDownLeft({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconArrowDown.tsx b/packages/ui/src/Atoms/Icons/IconArrowDown.tsx new file mode 100644 index 000000000..48c597334 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconArrowDown.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconArrowDown({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconArrowInbox.tsx b/packages/ui/src/Atoms/Icons/IconArrowInbox.tsx new file mode 100644 index 000000000..facd25b15 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconArrowInbox.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconArrowInbox({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconArrowInbox1.tsx b/packages/ui/src/Atoms/Icons/IconArrowInbox1.tsx new file mode 100644 index 000000000..869ed7bde --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconArrowInbox1.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconArrowInbox1({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconArrowLink.tsx b/packages/ui/src/Atoms/Icons/IconArrowLink.tsx new file mode 100644 index 000000000..b0110a079 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconArrowLink.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconArrowLink({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconArrowUp.tsx b/packages/ui/src/Atoms/Icons/IconArrowUp.tsx new file mode 100644 index 000000000..ab2fc3531 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconArrowUp.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconArrowUp({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconBank.tsx b/packages/ui/src/Atoms/Icons/IconBank.tsx new file mode 100644 index 000000000..23d576a76 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconBank.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconBank({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconBell2.tsx b/packages/ui/src/Atoms/Icons/IconBell2.tsx new file mode 100644 index 000000000..b2e3d3465 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconBell2.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconBell2({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconBlock.tsx b/packages/ui/src/Atoms/Icons/IconBlock.tsx new file mode 100644 index 000000000..e1412a35c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconBlock.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconBlock({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconBlock1.tsx b/packages/ui/src/Atoms/Icons/IconBlock1.tsx new file mode 100644 index 000000000..74e34de65 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconBlock1.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconBlock1({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconBook.tsx b/packages/ui/src/Atoms/Icons/IconBook.tsx new file mode 100644 index 000000000..a65e001d9 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconBook.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconBook({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCalendar1.tsx b/packages/ui/src/Atoms/Icons/IconCalendar1.tsx new file mode 100644 index 000000000..3169bb681 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCalendar1.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconCalendar1({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCalendar2.tsx b/packages/ui/src/Atoms/Icons/IconCalendar2.tsx new file mode 100644 index 000000000..50664a4ea --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCalendar2.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCalendar2({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCheckmark1.tsx b/packages/ui/src/Atoms/Icons/IconCheckmark1.tsx new file mode 100644 index 000000000..14af36c6f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCheckmark1.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCheckmark1({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCheckmark2Small.tsx b/packages/ui/src/Atoms/Icons/IconCheckmark2Small.tsx new file mode 100644 index 000000000..8890ef4c4 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCheckmark2Small.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCheckmark2Small({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconChevronDown.tsx b/packages/ui/src/Atoms/Icons/IconChevronDown.tsx new file mode 100644 index 000000000..3e43a98fe --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconChevronDown.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconChevronDown({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconChevronGrabberVertical.tsx b/packages/ui/src/Atoms/Icons/IconChevronGrabberVertical.tsx new file mode 100644 index 000000000..805873648 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconChevronGrabberVertical.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconChevronGrabberVertical({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconChevronLeft.tsx b/packages/ui/src/Atoms/Icons/IconChevronLeft.tsx new file mode 100644 index 000000000..3c7b43d3c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconChevronLeft.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconChevronLeft({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconChevronRight.tsx b/packages/ui/src/Atoms/Icons/IconChevronRight.tsx new file mode 100644 index 000000000..6e71029cd --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconChevronRight.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconChevronRight({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconChevronTriangleDownSmall.tsx b/packages/ui/src/Atoms/Icons/IconChevronTriangleDownSmall.tsx new file mode 100644 index 000000000..c8a6851b3 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconChevronTriangleDownSmall.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconChevronTriangleDownSmall({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconChevronUp.tsx b/packages/ui/src/Atoms/Icons/IconChevronUp.tsx new file mode 100644 index 000000000..395e865f0 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconChevronUp.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconChevronUp({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCircleCheck.tsx b/packages/ui/src/Atoms/Icons/IconCircleCheck.tsx new file mode 100644 index 000000000..69e574b77 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCircleCheck.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconCircleCheck({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCircleCheck1.tsx b/packages/ui/src/Atoms/Icons/IconCircleCheck1.tsx new file mode 100644 index 000000000..48e5d1093 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCircleCheck1.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconCircleCheck1({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCircleInfo.tsx b/packages/ui/src/Atoms/Icons/IconCircleInfo.tsx new file mode 100644 index 000000000..20b7c0220 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCircleInfo.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCircleInfo({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCircleProgress.tsx b/packages/ui/src/Atoms/Icons/IconCircleProgress.tsx new file mode 100644 index 000000000..861a2ae21 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCircleProgress.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCircleProgress({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCircleQuestionmark.tsx b/packages/ui/src/Atoms/Icons/IconCircleQuestionmark.tsx new file mode 100644 index 000000000..a0cf8b898 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCircleQuestionmark.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconCircleQuestionmark({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCircleQuestionmark1.tsx b/packages/ui/src/Atoms/Icons/IconCircleQuestionmark1.tsx new file mode 100644 index 000000000..d3160a6e5 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCircleQuestionmark1.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCircleQuestionmark1({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCircleQuestionmarkSolid.tsx b/packages/ui/src/Atoms/Icons/IconCircleQuestionmarkSolid.tsx new file mode 100644 index 000000000..0574cedb7 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCircleQuestionmarkSolid.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCircleQuestionmarkSolid({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCircleX.tsx b/packages/ui/src/Atoms/Icons/IconCircleX.tsx new file mode 100644 index 000000000..d832dad0d --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCircleX.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCircleX({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCollapse.tsx b/packages/ui/src/Atoms/Icons/IconCollapse.tsx new file mode 100644 index 000000000..03623fd0f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCollapse.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCollapse({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconCrossLargeX.tsx b/packages/ui/src/Atoms/Icons/IconCrossLargeX.tsx new file mode 100644 index 000000000..f89a1ad31 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconCrossLargeX.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconCrossLargeX({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconDotGrid1x3Horizontal.tsx b/packages/ui/src/Atoms/Icons/IconDotGrid1x3Horizontal.tsx new file mode 100644 index 000000000..6f8a75438 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconDotGrid1x3Horizontal.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconDotGrid1x3Horizontal({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconExpand.tsx b/packages/ui/src/Atoms/Icons/IconExpand.tsx new file mode 100644 index 000000000..102b87237 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconExpand.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconExpand({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconFilter.tsx b/packages/ui/src/Atoms/Icons/IconFilter.tsx new file mode 100644 index 000000000..f266d5ed8 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconFilter.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconFilter({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconFire3.tsx b/packages/ui/src/Atoms/Icons/IconFire3.tsx new file mode 100644 index 000000000..75879cf90 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconFire3.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconFire3({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconFolder2.tsx b/packages/ui/src/Atoms/Icons/IconFolder2.tsx new file mode 100644 index 000000000..e398bf642 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconFolder2.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconFolder2({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconFolderUpload.tsx b/packages/ui/src/Atoms/Icons/IconFolderUpload.tsx new file mode 100644 index 000000000..c39fa5755 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconFolderUpload.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconFolderUpload({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconFrame.tsx b/packages/ui/src/Atoms/Icons/IconFrame.tsx new file mode 100644 index 000000000..6e26ed38d --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconFrame.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconFrame({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconFrame1.tsx b/packages/ui/src/Atoms/Icons/IconFrame1.tsx new file mode 100644 index 000000000..3a8afdb81 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconFrame1.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconFrame1({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconFrame2.tsx b/packages/ui/src/Atoms/Icons/IconFrame2.tsx new file mode 100644 index 000000000..d56db7d93 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconFrame2.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconFrame2({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconGroup1.tsx b/packages/ui/src/Atoms/Icons/IconGroup1.tsx new file mode 100644 index 000000000..6186e0ece --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconGroup1.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconGroup1({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconGroup11.tsx b/packages/ui/src/Atoms/Icons/IconGroup11.tsx new file mode 100644 index 000000000..31508a85f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconGroup11.tsx @@ -0,0 +1,11 @@ +import type {IconProps} from "./type.ts"; + +export function IconGroup11({size = 24, className}: IconProps) { + return + + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconHome.tsx b/packages/ui/src/Atoms/Icons/IconHome.tsx new file mode 100644 index 000000000..1746476df --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconHome.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconHome({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconImage.tsx b/packages/ui/src/Atoms/Icons/IconImage.tsx new file mode 100644 index 000000000..1559d420e --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconImage.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconImage({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconImport2.tsx b/packages/ui/src/Atoms/Icons/IconImport2.tsx new file mode 100644 index 000000000..77e4f0c70 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconImport2.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconImport2({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconInProgress.tsx b/packages/ui/src/Atoms/Icons/IconInProgress.tsx new file mode 100644 index 000000000..617605ec1 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconInProgress.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconInProgress({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconInboxEmpty.tsx b/packages/ui/src/Atoms/Icons/IconInboxEmpty.tsx new file mode 100644 index 000000000..ceb608570 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconInboxEmpty.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconInboxEmpty({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconListStack.tsx b/packages/ui/src/Atoms/Icons/IconListStack.tsx new file mode 100644 index 000000000..af3dea2c8 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconListStack.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconListStack({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconMagnifyingGlass.tsx b/packages/ui/src/Atoms/Icons/IconMagnifyingGlass.tsx new file mode 100644 index 000000000..aef85be9d --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconMagnifyingGlass.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconMagnifyingGlass({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconNotStarted.tsx b/packages/ui/src/Atoms/Icons/IconNotStarted.tsx new file mode 100644 index 000000000..5131a4d44 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconNotStarted.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconNotStarted({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPageCheck.tsx b/packages/ui/src/Atoms/Icons/IconPageCheck.tsx new file mode 100644 index 000000000..712022942 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPageCheck.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconPageCheck({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPageCheck1.tsx b/packages/ui/src/Atoms/Icons/IconPageCheck1.tsx new file mode 100644 index 000000000..e51233302 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPageCheck1.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconPageCheck1({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPageCross.tsx b/packages/ui/src/Atoms/Icons/IconPageCross.tsx new file mode 100644 index 000000000..97734d727 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPageCross.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconPageCross({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPageTextLine.tsx b/packages/ui/src/Atoms/Icons/IconPageTextLine.tsx new file mode 100644 index 000000000..56740718e --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPageTextLine.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconPageTextLine({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPageTextSolid.tsx b/packages/ui/src/Atoms/Icons/IconPageTextSolid.tsx new file mode 100644 index 000000000..f1c8a2a96 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPageTextSolid.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconPageTextSolid({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPencil.tsx b/packages/ui/src/Atoms/Icons/IconPencil.tsx new file mode 100644 index 000000000..2e17a778b --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPencil.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconPencil({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPeopleAdd.tsx b/packages/ui/src/Atoms/Icons/IconPeopleAdd.tsx new file mode 100644 index 000000000..37f737308 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPeopleAdd.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconPeopleAdd({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPeopleAdd2Line.tsx b/packages/ui/src/Atoms/Icons/IconPeopleAdd2Line.tsx new file mode 100644 index 000000000..756572950 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPeopleAdd2Line.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconPeopleAdd2Line({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPlusLarge.tsx b/packages/ui/src/Atoms/Icons/IconPlusLarge.tsx new file mode 100644 index 000000000..fea8580ab --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPlusLarge.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconPlusLarge({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPlusSmall.tsx b/packages/ui/src/Atoms/Icons/IconPlusSmall.tsx new file mode 100644 index 000000000..8fabfffea --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPlusSmall.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconPlusSmall({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconPriority.tsx b/packages/ui/src/Atoms/Icons/IconPriority.tsx new file mode 100644 index 000000000..126ce20d2 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconPriority.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconPriority({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconRadioUnchecked.tsx b/packages/ui/src/Atoms/Icons/IconRadioUnchecked.tsx new file mode 100644 index 000000000..42c2cc004 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconRadioUnchecked.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconRadioUnchecked({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconRecKeyframe.tsx b/packages/ui/src/Atoms/Icons/IconRecKeyframe.tsx new file mode 100644 index 000000000..5a2885a8f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconRecKeyframe.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconRecKeyframe({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconSend.tsx b/packages/ui/src/Atoms/Icons/IconSend.tsx new file mode 100644 index 000000000..881000123 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconSend.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconSend({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconSettingsGear2.tsx b/packages/ui/src/Atoms/Icons/IconSettingsGear2.tsx new file mode 100644 index 000000000..61994562b --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconSettingsGear2.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconSettingsGear2({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconShield.tsx b/packages/ui/src/Atoms/Icons/IconShield.tsx new file mode 100644 index 000000000..4d6cb0c5b --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconShield.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconShield({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconSignature.tsx b/packages/ui/src/Atoms/Icons/IconSignature.tsx new file mode 100644 index 000000000..3d667cddc --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconSignature.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconSignature({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconSquareBehindSquare2.tsx b/packages/ui/src/Atoms/Icons/IconSquareBehindSquare2.tsx new file mode 100644 index 000000000..d5de52e6b --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconSquareBehindSquare2.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconSquareBehindSquare2({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconStore.tsx b/packages/ui/src/Atoms/Icons/IconStore.tsx new file mode 100644 index 000000000..5b13061c4 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconStore.tsx @@ -0,0 +1,10 @@ +import type {IconProps} from "./type.ts"; + +export function IconStore({size = 24, className}: IconProps) { + return + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconSun.tsx b/packages/ui/src/Atoms/Icons/IconSun.tsx new file mode 100644 index 000000000..5e975b0ea --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconSun.tsx @@ -0,0 +1,16 @@ +import type {IconProps} from "./type.ts"; + +export function IconSun({size = 24, className}: IconProps) { + return + + + + + + + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconTodo.tsx b/packages/ui/src/Atoms/Icons/IconTodo.tsx new file mode 100644 index 000000000..022e67c9a --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconTodo.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconTodo({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconTodo2.tsx b/packages/ui/src/Atoms/Icons/IconTodo2.tsx new file mode 100644 index 000000000..ca7cb347f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconTodo2.tsx @@ -0,0 +1,12 @@ +import type {IconProps} from "./type.ts"; + +export function IconTodo2({size = 24, className}: IconProps) { + return + + + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconTrashCan.tsx b/packages/ui/src/Atoms/Icons/IconTrashCan.tsx new file mode 100644 index 000000000..568e190f6 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconTrashCan.tsx @@ -0,0 +1,12 @@ +import type {IconProps} from "./type.ts"; + +export function IconTrashCan({size = 24, className}: IconProps) { + return + + + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconTrashCanSolid.tsx b/packages/ui/src/Atoms/Icons/IconTrashCanSolid.tsx new file mode 100644 index 000000000..2befc66c1 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconTrashCanSolid.tsx @@ -0,0 +1,8 @@ +import type {IconProps} from "./type.ts"; + +export function IconTrashCanSolid({size = 24, className}: IconProps) { + return + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/IconUpload.tsx b/packages/ui/src/Atoms/Icons/IconUpload.tsx new file mode 100644 index 000000000..9545feb9c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/IconUpload.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconUpload({size = 24, className}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/Image.svg b/packages/ui/src/Atoms/Icons/Image.svg new file mode 100644 index 000000000..44440122c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/Image.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/Send.svg b/packages/ui/src/Atoms/Icons/Send.svg new file mode 100644 index 000000000..97eb34760 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/Send.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/Todo.tsx b/packages/ui/src/Atoms/Icons/Todo.tsx new file mode 100644 index 000000000..13cb10e3f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/Todo.tsx @@ -0,0 +1,9 @@ +import type {IconProps} from "./type.ts"; + +export function IconTodo({size = 24}: IconProps) { + return + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/Todo2.tsx b/packages/ui/src/Atoms/Icons/Todo2.tsx new file mode 100644 index 000000000..fc6c4c9e0 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/Todo2.tsx @@ -0,0 +1,12 @@ +import type {IconProps} from "./type.ts"; + +export function IconTodo2({size = 24}: IconProps) { + return + + + + + + + +} \ No newline at end of file diff --git a/packages/ui/src/Atoms/Icons/arrow-box-left.svg b/packages/ui/src/Atoms/Icons/arrow-box-left.svg new file mode 100644 index 000000000..1e4bc130a --- /dev/null +++ b/packages/ui/src/Atoms/Icons/arrow-box-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/arrow-corner-down-left.svg b/packages/ui/src/Atoms/Icons/arrow-corner-down-left.svg new file mode 100644 index 000000000..f9fa083f7 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/arrow-corner-down-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/arrow-down.svg b/packages/ui/src/Atoms/Icons/arrow-down.svg new file mode 100644 index 000000000..9348a7a53 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/arrow-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/arrow-inbox-1.svg b/packages/ui/src/Atoms/Icons/arrow-inbox-1.svg new file mode 100644 index 000000000..bc36e8844 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/arrow-inbox-1.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/arrow-inbox.svg b/packages/ui/src/Atoms/Icons/arrow-inbox.svg new file mode 100644 index 000000000..7c9f76e24 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/arrow-inbox.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/arrow-link.svg b/packages/ui/src/Atoms/Icons/arrow-link.svg new file mode 100644 index 000000000..75a2eb34c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/arrow-link.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/arrow-up.svg b/packages/ui/src/Atoms/Icons/arrow-up.svg new file mode 100644 index 000000000..e8208a8c0 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/arrow-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/bank.svg b/packages/ui/src/Atoms/Icons/bank.svg new file mode 100644 index 000000000..c4aedb364 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/bank.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/bell-2.svg b/packages/ui/src/Atoms/Icons/bell-2.svg new file mode 100644 index 000000000..8f692ce24 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/bell-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/block-1.svg b/packages/ui/src/Atoms/Icons/block-1.svg new file mode 100644 index 000000000..4580b79d3 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/block-1.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/block.svg b/packages/ui/src/Atoms/Icons/block.svg new file mode 100644 index 000000000..c55d24462 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/block.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/book.svg b/packages/ui/src/Atoms/Icons/book.svg new file mode 100644 index 000000000..96695a558 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/book.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/calendar-1.svg b/packages/ui/src/Atoms/Icons/calendar-1.svg new file mode 100644 index 000000000..a533ac85d --- /dev/null +++ b/packages/ui/src/Atoms/Icons/calendar-1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/calendar-2.svg b/packages/ui/src/Atoms/Icons/calendar-2.svg new file mode 100644 index 000000000..12ae0009c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/calendar-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/checkmark-1.svg b/packages/ui/src/Atoms/Icons/checkmark-1.svg new file mode 100644 index 000000000..6fe15fe43 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/checkmark-1.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/checkmark-2-small.svg b/packages/ui/src/Atoms/Icons/checkmark-2-small.svg new file mode 100644 index 000000000..a8264ebe0 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/checkmark-2-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/chevron-down.svg b/packages/ui/src/Atoms/Icons/chevron-down.svg new file mode 100644 index 000000000..6077bd3e2 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/chevron-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/chevron-grabber-vertical.svg b/packages/ui/src/Atoms/Icons/chevron-grabber-vertical.svg new file mode 100644 index 000000000..a0ab5ddb2 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/chevron-grabber-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/chevron-left.svg b/packages/ui/src/Atoms/Icons/chevron-left.svg new file mode 100644 index 000000000..e5145d888 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/chevron-right.svg b/packages/ui/src/Atoms/Icons/chevron-right.svg new file mode 100644 index 000000000..53861cf1b --- /dev/null +++ b/packages/ui/src/Atoms/Icons/chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/chevron-triangle-down-small.svg b/packages/ui/src/Atoms/Icons/chevron-triangle-down-small.svg new file mode 100644 index 000000000..afae78b2c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/chevron-triangle-down-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/chevron-up.svg b/packages/ui/src/Atoms/Icons/chevron-up.svg new file mode 100644 index 000000000..97a5b333f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/chevron-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/circle-check-1.svg b/packages/ui/src/Atoms/Icons/circle-check-1.svg new file mode 100644 index 000000000..7ffc640eb --- /dev/null +++ b/packages/ui/src/Atoms/Icons/circle-check-1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/circle-check.svg b/packages/ui/src/Atoms/Icons/circle-check.svg new file mode 100644 index 000000000..8923d3105 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/circle-check.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/circle-info.svg b/packages/ui/src/Atoms/Icons/circle-info.svg new file mode 100644 index 000000000..df970b8b9 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/circle-info.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/circle-progress.svg b/packages/ui/src/Atoms/Icons/circle-progress.svg new file mode 100644 index 000000000..f9a0d5146 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/circle-progress.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/circle-questionmark-1.svg b/packages/ui/src/Atoms/Icons/circle-questionmark-1.svg new file mode 100644 index 000000000..9fb1c05a3 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/circle-questionmark-1.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/circle-questionmark-solid.svg b/packages/ui/src/Atoms/Icons/circle-questionmark-solid.svg new file mode 100644 index 000000000..bb71a709f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/circle-questionmark-solid.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/circle-questionmark.svg b/packages/ui/src/Atoms/Icons/circle-questionmark.svg new file mode 100644 index 000000000..24eba8cad --- /dev/null +++ b/packages/ui/src/Atoms/Icons/circle-questionmark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/circle-x.svg b/packages/ui/src/Atoms/Icons/circle-x.svg new file mode 100644 index 000000000..934dc263e --- /dev/null +++ b/packages/ui/src/Atoms/Icons/circle-x.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/collapse.svg b/packages/ui/src/Atoms/Icons/collapse.svg new file mode 100644 index 000000000..1c1c899aa --- /dev/null +++ b/packages/ui/src/Atoms/Icons/collapse.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/cross-large-x.svg b/packages/ui/src/Atoms/Icons/cross-large-x.svg new file mode 100644 index 000000000..7e966c9a4 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/cross-large-x.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/dot-grid-1x3-horizontal.svg b/packages/ui/src/Atoms/Icons/dot-grid-1x3-horizontal.svg new file mode 100644 index 000000000..ea7d6b883 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/dot-grid-1x3-horizontal.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/expand.svg b/packages/ui/src/Atoms/Icons/expand.svg new file mode 100644 index 000000000..e7edcc6dd --- /dev/null +++ b/packages/ui/src/Atoms/Icons/expand.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/filter.svg b/packages/ui/src/Atoms/Icons/filter.svg new file mode 100644 index 000000000..ce12d347d --- /dev/null +++ b/packages/ui/src/Atoms/Icons/filter.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/fire-3.svg b/packages/ui/src/Atoms/Icons/fire-3.svg new file mode 100644 index 000000000..45bb911f3 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/fire-3.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/folder-2.svg b/packages/ui/src/Atoms/Icons/folder-2.svg new file mode 100644 index 000000000..de4b55f99 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/folder-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/folder-upload.svg b/packages/ui/src/Atoms/Icons/folder-upload.svg new file mode 100644 index 000000000..dc9ee5dde --- /dev/null +++ b/packages/ui/src/Atoms/Icons/folder-upload.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/generator.ts b/packages/ui/src/Atoms/Icons/generator.ts new file mode 100644 index 000000000..a3d5e411f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/generator.ts @@ -0,0 +1,58 @@ +/* +Generates Icon components from SVG files + */ + +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const svgFiles = fs + .readdirSync(path.join(__dirname)) + .filter((file) => file.endsWith(".svg")); + +function camelCase(s: string) { + return s.replace(/-([a-z0-9])/g, (g) => g[1].toUpperCase()); +} + +function capitalize(s: string) { + return s.charAt(0).toUpperCase() + s.slice(1); +} + +const exports = []; + +for (const svgFile of svgFiles) { + const iconName = svgFile.replace(".svg", ""); + const componentName = capitalize(camelCase(iconName)); + let svgContent = fs.readFileSync(path.join(__dirname, svgFile), "utf-8"); + + svgContent = svgContent.replace(/width="[^"]*"/, "width={size}"); + svgContent = svgContent.replace(/height="[^"]*"/, "height={size}"); + svgContent = svgContent.replace(/fill="[^"]*"/g, 'fill="currentColor"'); + svgContent = svgContent.replace(/xmlns=/g, "className={className} xmlns="); + svgContent = svgContent.replace(/([a-z]+-[a-z]+)="/g, function (_, attr) { + return `${camelCase(attr)}="`; + }); + + const componentContent = `import type {IconProps} from "./type.ts"; + +export function Icon${componentName}({size = 24, className}: IconProps) { + return ${svgContent} +}`; + + fs.writeFileSync( + path.join(__dirname, `Icon${componentName}.tsx`), + componentContent, + ); + exports.push( + `export { Icon${componentName} } from "./Icon${componentName}.tsx"`, + ); +} + +// Write exports in the index.ts file +fs.writeFileSync( + path.join(__dirname, "index.tsx"), + `${exports.join(";\n")};\n`, +); diff --git a/packages/ui/src/Atoms/Icons/group-1-1.svg b/packages/ui/src/Atoms/Icons/group-1-1.svg new file mode 100644 index 000000000..b05a4b80a --- /dev/null +++ b/packages/ui/src/Atoms/Icons/group-1-1.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/ui/src/Atoms/Icons/group-1.svg b/packages/ui/src/Atoms/Icons/group-1.svg new file mode 100644 index 000000000..bf045ad96 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/group-1.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/home.svg b/packages/ui/src/Atoms/Icons/home.svg new file mode 100644 index 000000000..9d8b1f824 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/home.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/import-2.svg b/packages/ui/src/Atoms/Icons/import-2.svg new file mode 100644 index 000000000..1f5f6632a --- /dev/null +++ b/packages/ui/src/Atoms/Icons/import-2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/in-progress.svg b/packages/ui/src/Atoms/Icons/in-progress.svg new file mode 100644 index 000000000..1d7c9c114 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/in-progress.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/inbox-empty.svg b/packages/ui/src/Atoms/Icons/inbox-empty.svg new file mode 100644 index 000000000..ebf243e12 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/inbox-empty.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/index.tsx b/packages/ui/src/Atoms/Icons/index.tsx new file mode 100644 index 000000000..85ac7c53c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/index.tsx @@ -0,0 +1,76 @@ +export { IconArrowUp } from "./IconArrowUp.tsx"; +export { IconBell2 } from "./IconBell2.tsx"; +export { IconArrowInbox1 } from "./IconArrowInbox1.tsx"; +export { IconCircleX } from "./IconCircleX.tsx"; +export { IconFire3 } from "./IconFire3.tsx"; +export { IconMagnifyingGlass } from "./IconMagnifyingGlass.tsx"; +export { IconBank } from "./IconBank.tsx"; +export { IconImage } from "./IconImage.tsx"; +export { IconSend } from "./IconSend.tsx"; +export { IconArrowCornerDownLeft } from "./IconArrowCornerDownLeft.tsx"; +export { IconCrossLargeX } from "./IconCrossLargeX.tsx"; +export { IconUpload } from "./IconUpload.tsx"; +export { IconListStack } from "./IconListStack.tsx"; +export { IconCircleCheck1 } from "./IconCircleCheck1.tsx"; +export { IconImport2 } from "./IconImport2.tsx"; +export { IconChevronTriangleDownSmall } from "./IconChevronTriangleDownSmall.tsx"; +export { IconCheckmark1 } from "./IconCheckmark1.tsx"; +export { IconStore } from "./IconStore.tsx"; +export { IconPageCheck } from "./IconPageCheck.tsx"; +export { IconCircleQuestionmark1 } from "./IconCircleQuestionmark1.tsx"; +export { IconNotStarted } from "./IconNotStarted.tsx"; +export { IconPeopleAdd2Line } from "./IconPeopleAdd2Line.tsx"; +export { IconCircleCheck } from "./IconCircleCheck.tsx"; +export { IconGroup1 } from "./IconGroup1.tsx"; +export { IconShield } from "./IconShield.tsx"; +export { IconCheckmark2Small } from "./IconCheckmark2Small.tsx"; +export { IconSignature } from "./IconSignature.tsx"; +export { IconTodo } from "./IconTodo.tsx"; +export { IconFrame2 } from "./IconFrame2.tsx"; +export { IconInProgress } from "./IconInProgress.tsx"; +export { IconPeopleAdd } from "./IconPeopleAdd.tsx"; +export { IconChevronLeft } from "./IconChevronLeft.tsx"; +export { IconSun } from "./IconSun.tsx"; +export { IconChevronGrabberVertical } from "./IconChevronGrabberVertical.tsx"; +export { IconCollapse } from "./IconCollapse.tsx"; +export { IconSquareBehindSquare2 } from "./IconSquareBehindSquare2.tsx"; +export { IconGroup11 } from "./IconGroup11.tsx"; +export { IconPageTextLine } from "./IconPageTextLine.tsx"; +export { IconPlusLarge } from "./IconPlusLarge.tsx"; +export { IconArrowLink } from "./IconArrowLink.tsx"; +export { IconCircleProgress } from "./IconCircleProgress.tsx"; +export { IconRadioUnchecked } from "./IconRadioUnchecked.tsx"; +export { IconCircleInfo } from "./IconCircleInfo.tsx"; +export { IconCalendar2 } from "./IconCalendar2.tsx"; +export { IconChevronRight } from "./IconChevronRight.tsx"; +export { IconTrashCanSolid } from "./IconTrashCanSolid.tsx"; +export { IconTrashCan } from "./IconTrashCan.tsx"; +export { IconFrame } from "./IconFrame.tsx"; +export { IconArrowInbox } from "./IconArrowInbox.tsx"; +export { IconFilter } from "./IconFilter.tsx"; +export { IconFolder2 } from "./IconFolder2.tsx"; +export { IconInboxEmpty } from "./IconInboxEmpty.tsx"; +export { IconDotGrid1x3Horizontal } from "./IconDotGrid1x3Horizontal.tsx"; +export { IconPageTextSolid } from "./IconPageTextSolid.tsx"; +export { IconTodo2 } from "./IconTodo2.tsx"; +export { IconRecKeyframe } from "./IconRecKeyframe.tsx"; +export { IconExpand } from "./IconExpand.tsx"; +export { IconArrowBoxLeft } from "./IconArrowBoxLeft.tsx"; +export { IconPlusSmall } from "./IconPlusSmall.tsx"; +export { IconHome } from "./IconHome.tsx"; +export { IconCalendar1 } from "./IconCalendar1.tsx"; +export { IconArrowDown } from "./IconArrowDown.tsx"; +export { IconFolderUpload } from "./IconFolderUpload.tsx"; +export { IconPencil } from "./IconPencil.tsx"; +export { IconCircleQuestionmark } from "./IconCircleQuestionmark.tsx"; +export { IconFrame1 } from "./IconFrame1.tsx"; +export { IconPriority } from "./IconPriority.tsx"; +export { IconPageCheck1 } from "./IconPageCheck1.tsx"; +export { IconSettingsGear2 } from "./IconSettingsGear2.tsx"; +export { IconBook } from "./IconBook.tsx"; +export { IconCircleQuestionmarkSolid } from "./IconCircleQuestionmarkSolid.tsx"; +export { IconBlock1 } from "./IconBlock1.tsx"; +export { IconChevronUp } from "./IconChevronUp.tsx"; +export { IconBlock } from "./IconBlock.tsx"; +export { IconChevronDown } from "./IconChevronDown.tsx"; +export { IconPageCross } from "./IconPageCross.tsx"; diff --git a/packages/ui/src/Atoms/Icons/list-stack.svg b/packages/ui/src/Atoms/Icons/list-stack.svg new file mode 100644 index 000000000..726542168 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/list-stack.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/magnifying-glass.svg b/packages/ui/src/Atoms/Icons/magnifying-glass.svg new file mode 100644 index 000000000..18450cf2d --- /dev/null +++ b/packages/ui/src/Atoms/Icons/magnifying-glass.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/not-started.svg b/packages/ui/src/Atoms/Icons/not-started.svg new file mode 100644 index 000000000..b848ce9f1 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/not-started.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/page-check-1.svg b/packages/ui/src/Atoms/Icons/page-check-1.svg new file mode 100644 index 000000000..52600bb3a --- /dev/null +++ b/packages/ui/src/Atoms/Icons/page-check-1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/page-check.svg b/packages/ui/src/Atoms/Icons/page-check.svg new file mode 100644 index 000000000..b1a7be091 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/page-check.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/page-cross.svg b/packages/ui/src/Atoms/Icons/page-cross.svg new file mode 100644 index 000000000..daa32892e --- /dev/null +++ b/packages/ui/src/Atoms/Icons/page-cross.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/page-text-line.svg b/packages/ui/src/Atoms/Icons/page-text-line.svg new file mode 100644 index 000000000..c6abed23f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/page-text-line.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/page-text-solid.svg b/packages/ui/src/Atoms/Icons/page-text-solid.svg new file mode 100644 index 000000000..19dc06415 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/page-text-solid.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/pencil.svg b/packages/ui/src/Atoms/Icons/pencil.svg new file mode 100644 index 000000000..cd510b65e --- /dev/null +++ b/packages/ui/src/Atoms/Icons/pencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/people-add-2-line.svg b/packages/ui/src/Atoms/Icons/people-add-2-line.svg new file mode 100644 index 000000000..06adfdd29 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/people-add-2-line.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/people-add.svg b/packages/ui/src/Atoms/Icons/people-add.svg new file mode 100644 index 000000000..45fbe26a3 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/people-add.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/plus-large.svg b/packages/ui/src/Atoms/Icons/plus-large.svg new file mode 100644 index 000000000..38fe572a5 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/plus-large.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/plus-small.svg b/packages/ui/src/Atoms/Icons/plus-small.svg new file mode 100644 index 000000000..4cf246917 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/plus-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/priority.svg b/packages/ui/src/Atoms/Icons/priority.svg new file mode 100644 index 000000000..0d2d59422 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/priority.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/radio-unchecked.svg b/packages/ui/src/Atoms/Icons/radio-unchecked.svg new file mode 100644 index 000000000..2b36ecc96 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/radio-unchecked.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/rec-keyframe.svg b/packages/ui/src/Atoms/Icons/rec-keyframe.svg new file mode 100644 index 000000000..7f8e0656c --- /dev/null +++ b/packages/ui/src/Atoms/Icons/rec-keyframe.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/settings-gear-2.svg b/packages/ui/src/Atoms/Icons/settings-gear-2.svg new file mode 100644 index 000000000..2ad9ac8fe --- /dev/null +++ b/packages/ui/src/Atoms/Icons/settings-gear-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/shield.svg b/packages/ui/src/Atoms/Icons/shield.svg new file mode 100644 index 000000000..c460d1af9 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/shield.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/signature.svg b/packages/ui/src/Atoms/Icons/signature.svg new file mode 100644 index 000000000..56893cd5f --- /dev/null +++ b/packages/ui/src/Atoms/Icons/signature.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/square-behind-square-2.svg b/packages/ui/src/Atoms/Icons/square-behind-square-2.svg new file mode 100644 index 000000000..758f95a38 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/square-behind-square-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/store.svg b/packages/ui/src/Atoms/Icons/store.svg new file mode 100644 index 000000000..c15fa61e0 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/store.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/Atoms/Icons/sun.svg b/packages/ui/src/Atoms/Icons/sun.svg new file mode 100644 index 000000000..815ae9d39 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/sun.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/ui/src/Atoms/Icons/todo.svg b/packages/ui/src/Atoms/Icons/todo.svg new file mode 100644 index 000000000..4e9f88b64 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/todo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Icons/todo2.svg b/packages/ui/src/Atoms/Icons/todo2.svg new file mode 100644 index 000000000..642d0e48b --- /dev/null +++ b/packages/ui/src/Atoms/Icons/todo2.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/packages/ui/src/Atoms/Icons/trash-can-solid.svg b/packages/ui/src/Atoms/Icons/trash-can-solid.svg new file mode 100644 index 000000000..580f06ea5 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/trash-can-solid.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/Atoms/Icons/trash-can.svg b/packages/ui/src/Atoms/Icons/trash-can.svg new file mode 100644 index 000000000..b31f128d1 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/trash-can.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/packages/ui/src/Atoms/Icons/type.ts b/packages/ui/src/Atoms/Icons/type.ts new file mode 100644 index 000000000..eb1932499 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/type.ts @@ -0,0 +1,4 @@ +export type IconProps = { + size?: number; + className?: string; +}; diff --git a/packages/ui/src/Atoms/Icons/upload.svg b/packages/ui/src/Atoms/Icons/upload.svg new file mode 100644 index 000000000..7fde469d4 --- /dev/null +++ b/packages/ui/src/Atoms/Icons/upload.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/Atoms/Input/Input.stories.tsx b/packages/ui/src/Atoms/Input/Input.stories.tsx new file mode 100644 index 000000000..1dc2774ab --- /dev/null +++ b/packages/ui/src/Atoms/Input/Input.stories.tsx @@ -0,0 +1,18 @@ +import { Input } from "./Input"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Atoms/Form/Input", + component: Input, + argTypes: {}, +} satisfies Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + label: "Label", + name: "id", + help: "e.g. This is a hint", + }, +}; diff --git a/packages/ui/src/Atoms/Input/Input.tsx b/packages/ui/src/Atoms/Input/Input.tsx new file mode 100644 index 000000000..ae244bc1e --- /dev/null +++ b/packages/ui/src/Atoms/Input/Input.tsx @@ -0,0 +1,54 @@ +import { tv } from "tailwind-variants"; + +type Props = { + label?: string; + help?: string; + name?: string; + placeholder?: string; + type?: string; + required?: boolean; +}; + +const input = tv({ + slots: { + base: "flex flex-col", + label: "text-sm font-medium text-txt-primary mb-[6px]", + input: "py-[6px] bg-secondary border border-border-mid rounded-[10px] hover:border-border-strong focus:shadow-focus text-sm px-3", + help: "text-xs font-semibold text-txt-tertiary mt-1", + }, +}); + +const { + base: baseClass, + label: labelClass, + input: inputClass, + help: helpClass, +} = input(); + +export function Input({ + label, + help, + name, + placeholder, + type, + required, +}: Props) { + return ( +
+ {label && ( + + )} + + {help && {help}} +
+ ); +} diff --git a/packages/ui/src/Atoms/Link/Link.tsx b/packages/ui/src/Atoms/Link/Link.tsx new file mode 100644 index 000000000..e69de29bb diff --git a/packages/ui/src/Atoms/Logo/Logo.stories.tsx b/packages/ui/src/Atoms/Logo/Logo.stories.tsx new file mode 100644 index 000000000..c47a92c45 --- /dev/null +++ b/packages/ui/src/Atoms/Logo/Logo.stories.tsx @@ -0,0 +1,12 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { Logo } from "./Logo"; + +const meta = { + title: "Atoms/Logo", + component: Logo, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/ui/src/Atoms/Logo/Logo.tsx b/packages/ui/src/Atoms/Logo/Logo.tsx new file mode 100644 index 000000000..5929f6f51 --- /dev/null +++ b/packages/ui/src/Atoms/Logo/Logo.tsx @@ -0,0 +1,21 @@ +type Props = { + className?: string; +}; + +export function Logo({ className }: Props) { + return ( + + + + ); +} diff --git a/packages/ui/src/Atoms/Sidebar/Sidebar.stories.tsx b/packages/ui/src/Atoms/Sidebar/Sidebar.stories.tsx new file mode 100644 index 000000000..0f80da8eb --- /dev/null +++ b/packages/ui/src/Atoms/Sidebar/Sidebar.stories.tsx @@ -0,0 +1,21 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import { Sidebar } from "./Sidebar"; +import { SidebarItem } from "./SidebarItem"; +import { IconBank } from "../Icons/IconBank.tsx"; + +const meta: Meta = { + component: Sidebar, + subcomponents: { SidebarItem }, +}; +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + render: (args) => ( + + + + ), +}; diff --git a/packages/ui/src/Atoms/Sidebar/Sidebar.tsx b/packages/ui/src/Atoms/Sidebar/Sidebar.tsx new file mode 100644 index 000000000..fb4f62615 --- /dev/null +++ b/packages/ui/src/Atoms/Sidebar/Sidebar.tsx @@ -0,0 +1,40 @@ +import { + createContext, + type PropsWithChildren, + useContext, + useState, +} from "react"; +import { clsx } from "clsx"; +import { IconCollapse, IconExpand } from "../Icons"; + +const sidebarContext = createContext({ open: true }); + +export function Sidebar({ children }: PropsWithChildren) { + const [open, setOpen] = useState(true); + return ( + + + + ); +} + +export function useSidebarCollapsed(): boolean { + return !useContext(sidebarContext).open; +} diff --git a/packages/ui/src/Atoms/Sidebar/SidebarItem.tsx b/packages/ui/src/Atoms/Sidebar/SidebarItem.tsx new file mode 100644 index 000000000..4e44c9c6a --- /dev/null +++ b/packages/ui/src/Atoms/Sidebar/SidebarItem.tsx @@ -0,0 +1,45 @@ +import type { FC, PropsWithChildren } from "react"; +import { tv } from "tailwind-variants"; +import { NavLink } from "react-router"; +import { useSidebarCollapsed } from "./Sidebar.tsx"; + +const sidebarItem = tv({ + base: "flex items-center gap-2 w-full py-2 rounded-full", + variants: { + active: { + true: "bg-active hover:bg-active-hover active:bg-active-pressed text-txt-primary", + false: "hover:bg-subtle-hover active:bg-subtle-pressed text-txt-tertiary", + }, + isCollapsed: { + true: "px-[10px]", + false: "px-3", + }, + }, + defaultVariants: { + active: false, + }, +}); + +type Props = PropsWithChildren<{ + icon?: FC<{ size: number }>; + label: string; + to?: string; +}>; + +export function SidebarItem(props: Props) { + const isCollapsed = useSidebarCollapsed(); + return ( +
  • + + sidebarItem({ ...props, active: isActive, isCollapsed }) + } + > + {props.icon && } + {isCollapsed ? null : props.label} + + {props.children &&
      {props.children}
    } +
  • + ); +} diff --git a/packages/ui/src/Atoms/Toasts/Toasts.stories.tsx b/packages/ui/src/Atoms/Toasts/Toasts.stories.tsx new file mode 100644 index 000000000..7dcc5231e --- /dev/null +++ b/packages/ui/src/Atoms/Toasts/Toasts.stories.tsx @@ -0,0 +1,48 @@ +import { Button } from "../Button/Button"; +import { Toast, Toasts, useToast } from "./Toasts"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Atoms/Toasts", + component: Toasts, + argTypes: {}, +} satisfies Meta; + +type Story = StoryObj; + +export const Default: Story = { + render() { + const { toast } = useToast(); + return ( + <> + + +
    + {(["success", "error", "warning", "info"] as const).map( + (variant) => ( + {}} + /> + ), + )} +
    + + + ); + }, +}; diff --git a/packages/ui/src/Atoms/Toasts/Toasts.tsx b/packages/ui/src/Atoms/Toasts/Toasts.tsx new file mode 100644 index 000000000..b44594caf --- /dev/null +++ b/packages/ui/src/Atoms/Toasts/Toasts.tsx @@ -0,0 +1,77 @@ +import { create } from "zustand"; +import { combine } from "zustand/middleware"; +import { tv } from "tailwind-variants"; + +type Toast = { + title: string; + description: string; + variant?: "success" | "error" | "warning" | "info"; + id: string; +}; + +const useToasts = create( + combine({ toasts: [] as Toast[] }, (set) => ({ + add: (toast: Pick) => + set((state) => ({ + toasts: [ + { ...toast, id: Date.now().toString() }, + ...state.toasts, + ], + })), + remove: (id: string) => + set((state) => ({ + toasts: state.toasts.filter((toast) => toast.id !== id), + })), + })), +); + +/** + * Hook used to trigger toasts + */ +export function useToast() { + return { + toast: useToasts().add, + }; +} + +/** + * Toasts displayed at the bottom right of the screen. + */ +export function Toasts() { + const { toasts, remove } = useToasts(); + return ( +
    + {toasts.map((toast) => ( +
    + remove(toast.id)} /> +
    + ))} +
    + ); +} + +const toast = tv({ + base: "p-2 border rounded relative animate-in slide-in-from-right w-full cursor-pointer", + variants: { + variant: { + success: + "bg-success text-invert text-txt-success border-border-success", + error: "bg-danger text-invert text-txt-danger border-border-danger", + warning: + "bg-warning text-invert text-txt-warning border-border-warning", + info: "bg-info text-invert text-txt-info border-border-info", + }, + }, + defaultVariants: { + variant: "success", + }, +}); + +export function Toast({ onClose, ...props }: Toast & { onClose: () => void }) { + return ( +
    +
    {props.title}
    +
    {props.description}
    +
    + ); +} diff --git a/packages/ui/src/Foundation.stories.tsx b/packages/ui/src/Foundation.stories.tsx new file mode 100644 index 000000000..c5b20205d --- /dev/null +++ b/packages/ui/src/Foundation.stories.tsx @@ -0,0 +1,185 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import * as icons from "./Atoms/Icons"; +import { objectKeys } from "@probo/helpers"; + +const meta = { + title: "Foundations", +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Colors: Story = { + render() { + const colors = [ + ["Surface", ["level-0", "level-1", "level-2", "level-3"]], + [ + "Text", + [ + "txt-primary", + "txt-invert", + "txt-secondary", + "txt-tertiary", + "txt-quaternary", + "txt-disabled", + "txt-accent", + "txt-danger", + "txt-success", + "txt-info", + "txt-warning", + ], + ], + [ + "Background", + [ + "bg-primary", + "bg-invert", + "bg-secondary", + "bg-tertiary", + "bg-subtle", + "bg-highlight", + "bg-active", + "bg-accent", + "bg-danger", + "bg-success", + "bg-info", + "bg-warning", + ], + ], + [ + "Border", + [ + "border-solid", + "border-low", + "border-mid", + "border-strong", + "border-active", + "border-accent", + "border-danger", + "border-success", + "border-warning", + "border-info", + ], + ], + [ + "Hover", + [ + "bg-primary-hover", + "bg-invert-hover", + "bg-secondary-hover", + "bg-tertiary-hover", + "bg-subtle-hover", + "bg-highlight-hover", + "bg-active-hover", + "bg-accent-hover", + "bg-danger-hover", + "bg-success-hover", + "bg-info-hover", + "bg-warning-hover", + ], + ], + [ + "Pressed", + [ + "bg-primary-pressed", + "bg-invert-pressed", + "bg-secondary-pressed", + "bg-tertiary-pressed", + "bg-subtle-pressed", + "bg-highlight-pressed", + "bg-active-pressed", + "bg-accent-pressed", + "bg-danger-pressed", + "bg-success-pressed", + "bg-info-pressed", + "bg-warning-pressed", + ], + ], + ] as [string, string[]][]; + return ( +
    + {colors.map(([name, variants]) => ( +
    +

    {name}

    +
    + {variants.map((variant) => ( +
    +
    +
    + {variant} +
    +
    + ))} +
    +
    + ))} +
    + ); + }, +}; + +export const Typography: Story = { + render() { + const textVariants = [ + "text-5xl", + "text-4xl", + "text-3xl", + "text-2xl", + "text-xl", + "text-xl-medium", + "text-lg", + "text-lg-bold", + "text-base", + "text-base-link", + "text-sm", + "text-xs", + "text-xxs", + ]; + return ( +
    + {textVariants.map((variant) => ( +
    +
    + {variant} +
    +
    This is a text {variant}
    +
    + ))} +
    + ); + }, +}; + +export const Icons: Story = { + render() { + console.log(); + return ( +
    + {objectKeys(icons).map((k) => { + const IconComponent = icons[k]; + return ( + + ); + })} +
    + ); + }, +}; diff --git a/packages/ui/src/Layouts/AuthLayout.stories.tsx b/packages/ui/src/Layouts/AuthLayout.stories.tsx new file mode 100644 index 000000000..01631acc4 --- /dev/null +++ b/packages/ui/src/Layouts/AuthLayout.stories.tsx @@ -0,0 +1,19 @@ +import { AuthLayout } from "./AuthLayout"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Layouts/AuthLayout", + component: AuthLayout, + argTypes: {}, + parameters: { + layout: "full", + }, +} satisfies Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + children: "Text goes here", + }, +}; diff --git a/packages/ui/src/Layouts/AuthLayout.tsx b/packages/ui/src/Layouts/AuthLayout.tsx new file mode 100644 index 000000000..a9835759b --- /dev/null +++ b/packages/ui/src/Layouts/AuthLayout.tsx @@ -0,0 +1,27 @@ +import logo from "../assets/android-chrome-512x512.png"; +import { useTranslate } from "@probo/i18n"; +import { Outlet } from "react-router"; +import { Toasts } from "../Atoms/Toasts/Toasts"; + +export function AuthLayout() { + const { __ } = useTranslate(); + return ( +
    +
    +
    + +
    +
    +
    +
    + Probo logo + + {__("Navigate compliance with confidence thanks to")} + probo + +
    +
    + +
    + ); +} diff --git a/packages/ui/src/Layouts/ErrorLayout.stories.tsx b/packages/ui/src/Layouts/ErrorLayout.stories.tsx new file mode 100644 index 000000000..0bf06ab5f --- /dev/null +++ b/packages/ui/src/Layouts/ErrorLayout.stories.tsx @@ -0,0 +1,17 @@ +import { ErrorLayout } from "./ErrorLayout"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Layouts/ErrorLayout", + component: ErrorLayout, + argTypes: {}, +} satisfies Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + title: "Something went wrong", + description: "An unexpected error occurred. Please try again later.", + }, +}; diff --git a/packages/ui/src/Layouts/ErrorLayout.tsx b/packages/ui/src/Layouts/ErrorLayout.tsx new file mode 100644 index 000000000..8e85103d1 --- /dev/null +++ b/packages/ui/src/Layouts/ErrorLayout.tsx @@ -0,0 +1,18 @@ +import type { PropsWithChildren } from "react"; +import { IconCircleInfo } from "../Atoms/Icons"; + +type Props = PropsWithChildren<{ + title?: string; + description?: string; +}>; + +export function ErrorLayout({ title, description, children }: Props) { + return ( +
    + +

    {title}

    +

    {description}

    + {children} +
    + ); +} diff --git a/packages/ui/src/Layouts/Layout.stories.tsx b/packages/ui/src/Layouts/Layout.stories.tsx new file mode 100644 index 000000000..97aa3dd45 --- /dev/null +++ b/packages/ui/src/Layouts/Layout.stories.tsx @@ -0,0 +1,15 @@ +import { Layout } from "./Layout"; +import type { Meta, StoryObj } from "@storybook/react"; + +const meta = { + title: "Layouts/Base", + component: Layout, + parameters: { + layout: "full", + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/ui/src/Layouts/Layout.tsx b/packages/ui/src/Layouts/Layout.tsx new file mode 100644 index 000000000..024219d9a --- /dev/null +++ b/packages/ui/src/Layouts/Layout.tsx @@ -0,0 +1,27 @@ +import type { PropsWithChildren, ReactNode } from "react"; +import { Sidebar } from "../Atoms/Sidebar/Sidebar.tsx"; +import { Logo } from "../Atoms/Logo/Logo.tsx"; +import { Toasts } from "../Atoms/Toasts/Toasts.tsx"; + +type Props = PropsWithChildren<{ + header: ReactNode; + sidebar: ReactNode; +}>; + +export function Layout({ header, sidebar, children }: Props) { + return ( +
    +
    + + {header} +
    +
    + {sidebar} +
    + {children} +
    +
    + +
    + ); +} diff --git a/packages/ui/src/Molecules/PageHeader/PageHeader.stories.tsx b/packages/ui/src/Molecules/PageHeader/PageHeader.stories.tsx new file mode 100644 index 000000000..db8fca6d4 --- /dev/null +++ b/packages/ui/src/Molecules/PageHeader/PageHeader.stories.tsx @@ -0,0 +1,19 @@ +import { Button } from "../../Atoms/Button/Button.tsx"; +import { PageHeader } from "./PageHeader"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Molecules/PageHeader", + component: PageHeader, + argTypes: {}, +} satisfies Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + title: "Page Header", + description: "This is a page header", + children: , + }, +}; diff --git a/packages/ui/src/Molecules/PageHeader/PageHeader.tsx b/packages/ui/src/Molecules/PageHeader/PageHeader.tsx new file mode 100644 index 000000000..88484aca7 --- /dev/null +++ b/packages/ui/src/Molecules/PageHeader/PageHeader.tsx @@ -0,0 +1,20 @@ +import type { PropsWithChildren } from "react"; + +type Props = PropsWithChildren<{ + title: string; + description?: string; +}>; + +export function PageHeader({ title, description, children }: Props) { + return ( +
    +
    +

    {title}

    + {description && ( +

    {description}

    + )} +
    +
    {children}
    +
    + ); +} diff --git a/packages/ui/src/Molecules/UserDropdown/UserDropdown.stories.tsx b/packages/ui/src/Molecules/UserDropdown/UserDropdown.stories.tsx new file mode 100644 index 000000000..85f0b1c78 --- /dev/null +++ b/packages/ui/src/Molecules/UserDropdown/UserDropdown.stories.tsx @@ -0,0 +1,47 @@ +import { DropdownSeparator } from "../../Atoms/Dropdown/Dropdown"; +import { + IconArrowBoxLeft, + IconCircleQuestionmark, + IconSettingsGear2, +} from "../../Atoms/Icons"; +import { UserDropdown, UserDropdownItem } from "./UserDropdown"; +import type { Meta, StoryObj } from "@storybook/react"; + +export default { + title: "Molecules/UserDropdown", + component: UserDropdown, + argTypes: {}, + subcomponents: { + UserDropdownItem, + }, +} satisfies Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + fullName: "John Doe", + email: "john.doe@example.com", + children: ( + <> + + + + + + ), + }, +}; diff --git a/packages/ui/src/Molecules/UserDropdown/UserDropdown.tsx b/packages/ui/src/Molecules/UserDropdown/UserDropdown.tsx new file mode 100644 index 000000000..f7c44d08e --- /dev/null +++ b/packages/ui/src/Molecules/UserDropdown/UserDropdown.tsx @@ -0,0 +1,61 @@ +import { Avatar } from "../../Atoms/Avatar/Avatar"; +import { Button } from "../../Atoms/Button/Button"; +import { + Dropdown, + DropdownItem, + DropdownSeparator, +} from "../../Atoms/Dropdown/Dropdown"; +import { IconChevronDown } from "../../Atoms/Icons"; +import type { FC, PropsWithChildren } from "react"; +import type { IconProps } from "../../Atoms/Icons/type"; +import { Link } from "react-router"; + +type Props = PropsWithChildren<{ fullName: string; email: string }>; + +export function UserDropdown({ fullName, children, email }: Props) { + return ( + + + {fullName} + + + } + > +
    + +
    +

    + {fullName} +

    +

    {email}

    +
    +
    + + {children} +
    + ); +} + +export function UserDropdownItem({ + to, + icon: IconComponent, + label, + variant = "tertiary", +}: { + to: string; + icon: FC; + label: string; + variant?: "tertiary" | "danger"; +}) { + return ( + + + {IconComponent && } + {label} + + + ); +} diff --git a/packages/ui/src/assets/android-chrome-512x512.png b/packages/ui/src/assets/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..42045624158637d7db427e39c22c335a26ea1178 GIT binary patch literal 287088 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 z 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 z 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%0A<>mtsq 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

    l@qe5;-~ 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 A8~^|S literal 0 HcmV?d00001 diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts new file mode 100644 index 000000000..ecf9336e6 --- /dev/null +++ b/packages/ui/src/index.ts @@ -0,0 +1,27 @@ +// Layouts +export { Layout } from "./Layouts/Layout"; +export { AuthLayout } from "./Layouts/AuthLayout"; +export { ErrorLayout } from "./Layouts/ErrorLayout"; + +// Atoms +export * from "./Atoms/Icons"; +export { Logo } from "./Atoms/Logo/Logo"; +export { SidebarItem } from "./Atoms/Sidebar/SidebarItem"; +export { Button } from "./Atoms/Button/Button"; +export { + Dropdown, + DropdownSeparator, + DropdownItem, +} from "./Atoms/Dropdown/Dropdown"; +export { Avatar } from "./Atoms/Avatar/Avatar"; +export { Input } from "./Atoms/Input/Input"; + +// Molecules +export { + UserDropdown, + UserDropdownItem, +} from "./Molecules/UserDropdown/UserDropdown"; +export { PageHeader } from "./Molecules/PageHeader/PageHeader"; + +// Hooks +export { useToast } from "./Atoms/Toasts/Toasts"; diff --git a/packages/ui/src/lib/utils.ts b/packages/ui/src/lib/utils.ts new file mode 100644 index 000000000..e6a8be071 --- /dev/null +++ b/packages/ui/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/packages/ui/src/main.tsx b/packages/ui/src/main.tsx new file mode 100644 index 000000000..ee093978b --- /dev/null +++ b/packages/ui/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import "./theme.css"; +import App from "./App.tsx"; + +createRoot(document.getElementById("root")!).render( + + + , +); diff --git a/packages/ui/src/theme.css b/packages/ui/src/theme.css new file mode 100644 index 000000000..ed52f748b --- /dev/null +++ b/packages/ui/src/theme.css @@ -0,0 +1,166 @@ +@theme { + --font-sans: "Geist", "sans-serif"; + --color-*: initial; + + --color-level-0: #fffffb; + --color-level-1: #ffffff; + --color-level-2: #ffffff; + --color-level-3: #141e12; + + /* Text colors */ + --color-txt-primary: #141e12; + --color-invert: #fcfdfc; + --color-txt-secondary: #6b716a; + --color-txt-tertiary: #818780; + --color-txt-quaternary: #d8dcd8; + --color-txt-disabled: #000000; + --color-txt-accent: #93c926; + --color-txt-danger: #cd2b31; + --color-txt-success: #5d770d; + --color-txt-info: #006adc; + --color-txt-warning: #ad5700; + + /* Backgrounds */ + --color-primary: #141e12; + --color-invert: #ffffff; + --color-secondary: #ffffff; + --color-tertiary: #ffffff; + --color-subtle: #054d0507; + --color-highlight: #0027000d; + --color-active: #e4f7c7; + --color-accent: #141e12; + --color-danger: #ffefef; + --color-danger-plain: #dc3d43; + --color-danger-dark: #dc3d43; + --color-success: #eefadc; + --color-info: #edf6ff; + --color-warning: #fff4d5; + --color-dialog: #141e12; + + /* Borders */ + --color-border-solid: #ecefec; + --color-border-low: #022a0213; + --color-border-mid: #001a0027; + --color-border-strong: #051a013d; + --color-border-active: #141e12; + --color-border-accent: #93c926; + --color-border-danger: #dc3d43; + --color-border-success: #93c926; + --color-border-warning: #ffa01c; + --color-border-info: #0081f1; + + /* Hover */ + --color-primary-hover: #273025; + --color-invert-hover: #f8faf8; + --color-secondary-hover: #f8faf8; + --color-tertiary-hover: #054d0507; + --color-subtle-hover: #0027000d; + --color-highlight-hover: #022a0213; + --color-accent-hover: #1e2c1c; + --color-active-hover: #d7f2b0; + --color-danger-hover: #cf393f; + + /* Pressed */ + --color-primary-pressed: #30392e; + --color-invert-pressed: #f2f4f2; + --color-secondary-pressed: #f2f4f2; + --color-tertiary-pressed: #0027000d; + --color-subtle-pressed: #022a0213; + --color-highlight-pressed: #02210219; + --color-accent-pressed: #293a25; + --color-active-pressed: #c9e894; + --color-danger-pressed: #c6373c; + + /* text-5xl */ + --text-5xl: 3rem; + --text-5xl--line-height: 3rem; + --text-5xl--letter-spacing: -1.6px; + --text-5xl--font-weight: 600; + + /* text-4xl */ + --text-4xl: 2.25rem; + --text-4xl--line-height: 2.5rem; + --text-4xl--letter-spacing: -1.2px; + --text-4xl--font-weight: 600; + + /* text-3xl */ + --text-3xl: 1.875rem; + --text-3xl--line-height: 2.25rem; + --text-3xl--letter-spacing: -1px; + --text-3xl--font-weight: 600; + + /* text-2xl */ + --text-2xl: 1.5rem; + --text-2xl--line-height: 2rem; + --text-2xl--letter-spacing: -0.6px; + --text-2xl--font-weight: 600; + + /* text-xl */ + --text-xl: 1.25rem; + --text-xl--line-height: 1.75rem; + --text-xl--letter-spacing: -0.4px; + --text-xl--font-weight: 600; + + /* text-xl-medium */ + --text-xl-medium: 1.25rem; + --text-xl-medium--line-height: 1.75rem; + --text-xl-medium--letter-spacing: -0.4px; + --text-xl-medium--font-weight: 500; + + /* text-lg */ + --text-lg: 1.125rem; + --text-lg--line-height: 1.75rem; + --text-lg--letter-spacing: 0px; + --text-lg--font-weight: 400; + + /* text-base */ + --text-base: 1rem; + --text-base--line-height: 1.5rem; + --text-base--letter-spacing: 0px; + --text-base--font-weight: 400; + + /* text-base-link */ + --text-base-link: 1rem; + --text-base-link--line-height: 1.5rem; + --text-base-link--letter-spacing: 0px; + --text-base-link--font-weight: 400; + + /* text-sm */ + --text-sm: 0.875rem; + --text-sm--line-height: 1.25rem; + --text-sm--letter-spacing: 0px; + --text-sm--font-weight: 400; + + /* text-sm-link */ + --text-sm-link: 0.875rem; + --text-sm-link--line-height: 1.25rem; + --text-sm-link--letter-spacing: 0px; + --text-sm-link--font-weight: 500; + + /* text-xs */ + --text-xs: 0.75rem; + --text-xs--line-height: 1rem; + --text-xs--letter-spacing: 0px; + --text-xs--font-weight: 400; + + /* text-xxs */ + --text-xxs: 0.6875rem; + --text-xxs--line-height: 0.875rem; + --text-xxs--letter-spacing: 0px; + --text-xxs--font-weight: 400; + + /* Shadows */ + --shadow-*: initial; + --shadow-base: + 0px 1px 3px 0px rgba(11, 19, 36, 0.1), + 0px -1px 0px 0px rgba(0, 0, 0, 0.1) inset; + --shadow-hover: + 0px 2px 6px 0px rgba(11, 19, 36, 0.1), + 0px -1px 0px 0px rgba(0, 0, 0, 0.1) inset; + --shadow-focus: 0px 0px 0px 4px rgba(135, 190, 34, 0.5); + --shadow-mid: + 0px 2px 4px 0px rgba(0, 0, 0, 0.08), + 0px 2px 12px 0px rgba(0, 0, 0, 0.06); +} + +@import "tw-animate-css"; diff --git a/packages/ui/src/vite-env.d.ts b/packages/ui/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/packages/ui/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/ui/tsconfig.app.json b/packages/ui/tsconfig.app.json new file mode 100644 index 000000000..c9ccbd4c5 --- /dev/null +++ b/packages/ui/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json new file mode 100644 index 000000000..1ffef600d --- /dev/null +++ b/packages/ui/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/packages/ui/tsconfig.node.json b/packages/ui/tsconfig.node.json new file mode 100644 index 000000000..9728af2d8 --- /dev/null +++ b/packages/ui/tsconfig.node.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts new file mode 100644 index 000000000..977e97a5b --- /dev/null +++ b/packages/ui/vite.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import tailwindcss from "@tailwindcss/vite"; + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react(), + tailwindcss()], +})