From 4b65dfa6ea503acaf0f5a8e107d0b89a31807081 Mon Sep 17 00:00:00 2001 From: MyPrototypeWhat Date: Sun, 7 Sep 2025 16:49:30 +0800 Subject: [PATCH] feat: integrate HeroUI and Tailwind CSS for enhanced styling (#9973) --- .github/workflows/auto-i18n.yml | 4 +- .prettierrc | 4 +- components.json | 21 + electron.vite.config.ts | 1 + eslint.config.mjs | 4 +- package.json | 10 +- packages/aiCore/package.json | 2 +- resources/cherry-studio/license.html | 54 +- resources/cherry-studio/releases.html | 20 +- scripts/update-languages.ts | 2 +- src/renderer/src/App.tsx | 35 +- .../src/assets/styles/CommandListPopover.css | 60 + .../src/assets/styles/CommandListPopover.scss | 59 - .../styles/{animation.scss => animation.css} | 8 +- src/renderer/src/assets/styles/ant.css | 238 ++ src/renderer/src/assets/styles/ant.scss | 234 -- .../assets/styles/{color.scss => color.css} | 2 +- src/renderer/src/assets/styles/container.css | 9 + src/renderer/src/assets/styles/container.scss | 11 - .../src/assets/styles/{font.scss => font.css} | 2 +- .../assets/styles/{index.scss => index.css} | 130 +- src/renderer/src/assets/styles/markdown.css | 388 ++ src/renderer/src/assets/styles/markdown.scss | 379 -- .../{responsive.scss => responsive.css} | 4 +- src/renderer/src/assets/styles/richtext.css | 522 +++ src/renderer/src/assets/styles/richtext.scss | 508 --- .../styles/{scrollbar.scss => scrollbar.css} | 21 +- .../src/assets/styles/selection-toolbar.css | 72 + .../src/assets/styles/selection-toolbar.scss | 72 - src/renderer/src/assets/styles/tailwind.css | 156 + src/renderer/src/components/ErrorBoundary.tsx | 8 +- src/renderer/src/components/Icons/SVGIcon.tsx | 2 +- .../RichEditor/CommandListPopover.tsx | 2 +- src/renderer/src/components/ToastPortal.tsx | 27 + src/renderer/src/components/TopView/index.tsx | 8 + src/renderer/src/context/ThemeProvider.tsx | 7 + src/renderer/src/entryPoint.tsx | 3 +- src/renderer/src/env.d.ts | 11 + src/renderer/src/hero.ts | 2 + src/renderer/src/hooks/useMinappPopup.ts | 2 +- .../pages/home/Messages/Blocks/ErrorBlock.tsx | 17 +- src/renderer/src/utils/motionVariants.ts | 5 +- src/renderer/src/windows/mini/entryPoint.tsx | 2 +- .../action/components/WindowFooter.tsx | 2 +- .../windows/selection/action/entryPoint.tsx | 2 +- .../selection/toolbar/SelectionToolbar.tsx | 2 +- tsconfig.json | 6 +- tsconfig.node.json | 4 +- vitest.config.ts | 2 +- yarn.lock | 3519 ++++++++++++++++- 50 files changed, 5043 insertions(+), 1622 deletions(-) create mode 100644 components.json create mode 100644 src/renderer/src/assets/styles/CommandListPopover.css delete mode 100644 src/renderer/src/assets/styles/CommandListPopover.scss rename src/renderer/src/assets/styles/{animation.scss => animation.css} (94%) create mode 100644 src/renderer/src/assets/styles/ant.css delete mode 100644 src/renderer/src/assets/styles/ant.scss rename src/renderer/src/assets/styles/{color.scss => color.css} (98%) create mode 100644 src/renderer/src/assets/styles/container.css delete mode 100644 src/renderer/src/assets/styles/container.scss rename src/renderer/src/assets/styles/{font.scss => font.css} (96%) rename src/renderer/src/assets/styles/{index.scss => index.css} (54%) create mode 100644 src/renderer/src/assets/styles/markdown.css delete mode 100644 src/renderer/src/assets/styles/markdown.scss rename src/renderer/src/assets/styles/{responsive.scss => responsive.css} (92%) create mode 100644 src/renderer/src/assets/styles/richtext.css delete mode 100644 src/renderer/src/assets/styles/richtext.scss rename src/renderer/src/assets/styles/{scrollbar.scss => scrollbar.css} (87%) create mode 100644 src/renderer/src/assets/styles/selection-toolbar.css delete mode 100644 src/renderer/src/assets/styles/selection-toolbar.scss create mode 100644 src/renderer/src/assets/styles/tailwind.css create mode 100644 src/renderer/src/components/ToastPortal.tsx create mode 100644 src/renderer/src/hero.ts diff --git a/.github/workflows/auto-i18n.yml b/.github/workflows/auto-i18n.yml index 054dea40e..29cfd1fda 100644 --- a/.github/workflows/auto-i18n.yml +++ b/.github/workflows/auto-i18n.yml @@ -1,7 +1,7 @@ name: Auto I18N env: - API_KEY: ${{ secrets.TRANSLATE_API_KEY}} + API_KEY: ${{ secrets.TRANSLATE_API_KEY }} MODEL: ${{ vars.MODEL || 'deepseek/deepseek-v3.1'}} BASE_URL: ${{ vars.BASE_URL || 'https://api.ppinfra.com/openai'}} @@ -35,7 +35,7 @@ jobs: # 在临时目录安装依赖 mkdir -p /tmp/translation-deps cd /tmp/translation-deps - echo '{"dependencies": {"openai": "^5.12.2", "cli-progress": "^3.12.0", "tsx": "^4.20.3", "prettier": "^3.5.3", "prettier-plugin-sort-json": "^4.1.1"}}' > package.json + echo '{"dependencies": {"openai": "^5.12.2", "cli-progress": "^3.12.0", "tsx": "^4.20.3", "prettier": "^3.5.3", "prettier-plugin-sort-json": "^4.1.1", "prettier-plugin-tailwindcss": "^0.6.14"}}' > package.json npm install --no-package-lock # 设置 NODE_PATH 让项目能找到这些依赖 diff --git a/.prettierrc b/.prettierrc index 85e2eb0ca..7a0676110 100644 --- a/.prettierrc +++ b/.prettierrc @@ -3,9 +3,11 @@ "endOfLine": "lf", "jsonRecursiveSort": true, "jsonSortOrder": "{\"*\": \"lexical\"}", - "plugins": ["prettier-plugin-sort-json"], + "plugins": ["prettier-plugin-sort-json", "prettier-plugin-tailwindcss"], "printWidth": 120, "semi": false, "singleQuote": true, + "tailwindFunctions": ["clsx"], + "tailwindStylesheet": "./src/renderer/src/assets/styles/tailwind.css", "trailingComma": "none" } diff --git a/components.json b/components.json new file mode 100644 index 000000000..c5aceeb3c --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "aliases": { + "components": "@renderer/ui/third-party", + "hooks": "@renderer/hooks", + "lib": "@renderer/lib", + "ui": "@renderer/ui", + "utils": "@renderer/utils" + }, + "iconLibrary": "lucide", + "rsc": false, + "style": "new-york", + "tailwind": { + "baseColor": "zinc", + "config": "", + "css": "src/renderer/src/assets/styles/tailwind.css", + "cssVariables": true, + "prefix": "" + }, + "tsx": true +} diff --git a/electron.vite.config.ts b/electron.vite.config.ts index dff0a94a3..83f82b5f4 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -60,6 +60,7 @@ export default defineConfig({ }, renderer: { plugins: [ + (async () => (await import('@tailwindcss/vite')).default())(), react({ tsDecorators: true, plugins: [ diff --git a/eslint.config.mjs b/eslint.config.mjs index 133025b1f..6863613c1 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -123,7 +123,9 @@ export default defineConfig([ '.gitignore', 'scripts/cloudflare-worker.js', 'src/main/integration/nutstore/sso/lib/**', - 'src/main/integration/cherryin/index.js' + 'src/main/integration/cherryin/index.js', + 'src/main/integration/nutstore/sso/lib/**', + 'src/renderer/src/ui/**' ] } ]) diff --git a/package.json b/package.json index f5c4e7103..9936eaca9 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ "@eslint/js": "^9.22.0", "@google/genai": "patch:@google/genai@npm%3A1.0.1#~/.yarn/patches/@google-genai-npm-1.0.1-e26f0f9af7.patch", "@hello-pangea/dnd": "^18.0.1", + "@heroui/react": "^2.8.3", "@kangfenmao/keyv-storage": "^0.1.0", "@langchain/community": "^0.3.50", "@langchain/core": "^0.3.68", @@ -148,6 +149,7 @@ "@reduxjs/toolkit": "^2.2.5", "@shikijs/markdown-it": "^3.12.0", "@swc/plugin-styled-components": "^8.0.4", + "@tailwindcss/vite": "^4.1.13", "@tanstack/react-query": "^5.85.5", "@tanstack/react-virtual": "^3.13.12", "@testing-library/dom": "^10.4.0", @@ -210,6 +212,7 @@ "cheerio": "^1.1.2", "chokidar": "^4.0.3", "cli-progress": "^3.12.0", + "clsx": "^2.1.1", "code-inspector-plugin": "^0.20.14", "color": "^5.0.0", "concurrently": "^9.2.1", @@ -238,6 +241,7 @@ "fast-diff": "^1.3.0", "fast-xml-parser": "^5.2.0", "fetch-socks": "1.3.2", + "framer-motion": "^12.23.12", "franc-min": "^6.2.0", "fs-extra": "^11.2.0", "google-auth-library": "^9.15.1", @@ -272,6 +276,7 @@ "playwright": "^1.52.0", "prettier": "^3.5.3", "prettier-plugin-sort-json": "^4.1.1", + "prettier-plugin-tailwindcss": "^0.6.14", "proxy-agent": "^6.5.0", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -301,17 +306,18 @@ "remark-math": "^6.0.0", "remove-markdown": "^0.6.2", "rollup-plugin-visualizer": "^5.12.0", - "sass": "^1.88.0", "shiki": "^3.12.0", "strict-url-sanitise": "^0.0.1", "string-width": "^7.2.0", "striptags": "^3.2.0", "styled-components": "^6.1.11", + "tailwindcss": "^4.1.13", "tar": "^7.4.3", "tiny-pinyin": "^1.3.2", "tokenx": "^1.1.0", "tsx": "^4.20.3", "turndown-plugin-gfm": "^1.0.2", + "tw-animate-css": "^1.3.8", "typescript": "^5.6.2", "undici": "6.21.2", "unified": "^11.0.5", @@ -356,7 +362,7 @@ "prettier --write", "eslint --fix" ], - "*.{json,yml,yaml,css,scss,html}": [ + "*.{json,yml,yaml,css,html}": [ "prettier --write" ] } diff --git a/packages/aiCore/package.json b/packages/aiCore/package.json index 020c95d7c..16d9af76a 100644 --- a/packages/aiCore/package.json +++ b/packages/aiCore/package.json @@ -1,6 +1,6 @@ { "name": "@cherrystudio/ai-core", - "version": "1.0.0-alpha.11", + "version": "1.0.0-alpha.12", "description": "Cherry Studio AI Core - Unified AI Provider Interface Based on Vercel AI SDK", "main": "dist/index.js", "module": "dist/index.mjs", diff --git a/resources/cherry-studio/license.html b/resources/cherry-studio/license.html index ce3079a32..1df611e47 100644 --- a/resources/cherry-studio/license.html +++ b/resources/cherry-studio/license.html @@ -8,18 +8,18 @@ -
+
-

许可协议

+

许可协议

本项目采用区分用户的双重许可 (User-Segmented Dual Licensing) 模式。

-

核心原则

-
    +

    核心原则

    +
    • 个人用户 和 10人及以下企业/组织: 默认适用 GNU Affero 通用公共许可证 v3.0 (AGPLv3)。 @@ -32,7 +32,7 @@
-

定义:"10人及以下"

+

定义:"10人及以下"

指在您的组织(包括公司、非营利组织、政府机构、教育机构等任何实体)中,能够访问、使用或以任何方式直接或间接受益于本软件(Cherry Studio)功能的个人总数不超过10人。这包括但不限于开发者、测试人员、运营人员、最终用户、通过集成系统间接使用者等。 @@ -40,10 +40,10 @@

-

+

1. 开源许可证 (Open Source License): AGPLv3 - 适用于个人及10人及以下组织

-
    +
    • 如果您是个人用户,或者您的组织满足上述"10人及以下"的定义,您可以在 AGPLv3 的条款下自由使用、修改和分发 Cherry Studio。AGPLv3 的完整文本可以访问 @@ -62,10 +62,10 @@
-

+

2. 商业许可证 (Commercial License) - 适用于超过10人的组织,或希望规避 AGPLv3 义务的用户

-
    +
    • 强制要求: 如果您的组织满足上述"10人及以下"的定义(即有11人或更多人可以访问、使用或受益于本软件),您必须联系我们获取并签署一份商业许可证才能使用 @@ -80,7 +80,7 @@
    • 需要商业许可证的常见情况包括(但不限于): -
        +
        • 您的组织规模超过10人。
        • (无论组织规模)您希望分发修改过的 Cherry Studio 版本,但不希望根据 AGPLv3 @@ -104,8 +104,8 @@
-

3. 贡献 (Contributions)

-
    +

    3. 贡献 (Contributions)

    +
    • 我们欢迎社区对 Cherry Studio 的贡献。所有向本项目提交的贡献都将被视为在 AGPLv3 许可证下提供。 @@ -119,8 +119,8 @@
-

4. 其他条款 (Other Terms)

-
    +

    4. 其他条款 (Other Terms)

    +
    • 关于商业许可证的具体条款和条件,以双方签署的正式商业许可协议为准。
    • 项目维护者保留根据需要更新本许可政策(包括用户规模定义和阈值)的权利。相关更新将通过项目官方渠道(如代码仓库、官方网站)进行通知。 @@ -133,13 +133,13 @@
      -

      Licensing

      +

      Licensing

      This project employs a User-Segmented Dual Licensing model.

      -

      Core Principle

      -
        +

        Core Principle

        +
        • Individual Users and Organizations with 10 or Fewer Individuals: Governed by default under the GNU Affero General Public License v3.0 (AGPLv3). @@ -152,7 +152,7 @@
      -

      Definition: "10 or Fewer Individuals"

      +

      Definition: "10 or Fewer Individuals"

      Refers to any organization (including companies, non-profits, government agencies, educational institutions, etc.) where the total number of individuals who can access, use, or in any way directly or indirectly @@ -162,10 +162,10 @@

      -

      +

      1. Open Source License: AGPLv3 - For Individuals and Organizations of 10 or Fewer

      -
        +
        • If you are an individual user, or if your organization meets the "10 or Fewer Individuals" definition above, you are free to use, modify, and distribute Cherry Studio under the terms of the @@ -186,11 +186,11 @@
      -

      +

      2. Commercial License - For Organizations with More Than 10 Individuals, or Users Needing to Avoid AGPLv3 Obligations

      -
        +
        • Mandatory Requirement: If your organization does not meet the "10 or Fewer Individuals" definition above (i.e., 11 or more individuals can access, use, or benefit from the @@ -207,7 +207,7 @@
        • Common scenarios requiring a Commercial License include (but are not limited to): -
            +
            • Your organization has more than 10 individuals who can access, use, or benefit from the software.
            • @@ -236,8 +236,8 @@
      -

      3. Contributions

      -
        +

        3. Contributions

        +
        • We welcome community contributions to Cherry Studio. All contributions submitted to this project are considered to be offered under the AGPLv3 license. @@ -255,8 +255,8 @@
      -

      4. Other Terms

      -
        +

        4. Other Terms

        +
        • The specific terms and conditions of the Commercial License are governed by the formal commercial license agreement signed by both parties. diff --git a/resources/cherry-studio/releases.html b/resources/cherry-studio/releases.html index 551564582..13edca06f 100644 --- a/resources/cherry-studio/releases.html +++ b/resources/cherry-studio/releases.html @@ -12,18 +12,18 @@
          -
          -

          Release Timeline

          +
          +

          Release Timeline

          -
          +
          -
          {{ error }}
          +
          {{ error }}
          @@ -32,21 +32,21 @@ :key="release.id" class="relative pl-8" :class="isDark ? 'border-l-2 border-gray-700' : 'border-l-2 border-gray-200'"> -
          +
          -
          +

          {{ release.name || release.tag_name }}

          -

          +

          {{ formatDate(release.published_at) }}

          {{ release.tag_name }} diff --git a/scripts/update-languages.ts b/scripts/update-languages.ts index 91416a973..58640637b 100644 --- a/scripts/update-languages.ts +++ b/scripts/update-languages.ts @@ -1,6 +1,6 @@ import { exec } from 'child_process' import * as fs from 'fs/promises' -import linguistLanguages from 'linguist-languages' +import * as linguistLanguages from 'linguist-languages' import * as path from 'path' import { promisify } from 'util' diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index 703015e30..096e908c9 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -1,11 +1,13 @@ import '@renderer/databases' +import { HeroUIProvider } from '@heroui/react' import { loggerService } from '@logger' import store, { persistor } from '@renderer/store' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { Provider } from 'react-redux' import { PersistGate } from 'redux-persist/integration/react' +import { ToastPortal } from './components/ToastPortal' import TopViewContainer from './components/TopView' import AntdProvider from './context/AntdProvider' import { CodeStyleProvider } from './context/CodeStyleProvider' @@ -32,21 +34,24 @@ function App(): React.ReactElement { return ( - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + ) diff --git a/src/renderer/src/assets/styles/CommandListPopover.css b/src/renderer/src/assets/styles/CommandListPopover.css new file mode 100644 index 000000000..a1bb27ec5 --- /dev/null +++ b/src/renderer/src/assets/styles/CommandListPopover.css @@ -0,0 +1,60 @@ +.command-list-popover { + /* Base styles are handled inline for theme support */ + + /* Arrow styles based on placement */ +} + +.command-list-popover[data-placement^='bottom'] { + transform-origin: top center; + animation: slideDownAndFadeIn 0.15s ease-out; +} + +.command-list-popover[data-placement^='top'] { + transform-origin: bottom center; + animation: slideUpAndFadeIn 0.15s ease-out; +} + +.command-list-popover[data-placement*='start'] { + transform-origin: left center; +} + +.command-list-popover[data-placement*='end'] { + transform-origin: right center; +} + +@keyframes slideDownAndFadeIn { + 0% { + opacity: 0; + transform: translateY(-8px) scale(0.95); + } + 100% { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +@keyframes slideUpAndFadeIn { + 0% { + opacity: 0; + transform: translateY(8px) scale(0.95); + } + 100% { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +/* Ensure smooth scrolling in virtual list */ +.command-list-popover .dynamic-virtual-list { + scroll-behavior: smooth; +} + +/* Better focus indicators */ +.command-list-popover [data-index] { + position: relative; +} + +.command-list-popover [data-index]:focus-visible { + outline: 2px solid var(--color-primary, #1677ff); + outline-offset: -2px; +} diff --git a/src/renderer/src/assets/styles/CommandListPopover.scss b/src/renderer/src/assets/styles/CommandListPopover.scss deleted file mode 100644 index e2521c57b..000000000 --- a/src/renderer/src/assets/styles/CommandListPopover.scss +++ /dev/null @@ -1,59 +0,0 @@ -.command-list-popover { - // Base styles are handled inline for theme support - - // Arrow styles based on placement - &[data-placement^='bottom'] { - transform-origin: top center; - animation: slideDownAndFadeIn 0.15s ease-out; - } - - &[data-placement^='top'] { - transform-origin: bottom center; - animation: slideUpAndFadeIn 0.15s ease-out; - } - - &[data-placement*='start'] { - transform-origin: left center; - } - - &[data-placement*='end'] { - transform-origin: right center; - } -} - -@keyframes slideDownAndFadeIn { - 0% { - opacity: 0; - transform: translateY(-8px) scale(0.95); - } - 100% { - opacity: 1; - transform: translateY(0) scale(1); - } -} - -@keyframes slideUpAndFadeIn { - 0% { - opacity: 0; - transform: translateY(8px) scale(0.95); - } - 100% { - opacity: 1; - transform: translateY(0) scale(1); - } -} - -// Ensure smooth scrolling in virtual list -.command-list-popover .dynamic-virtual-list { - scroll-behavior: smooth; -} - -// Better focus indicators -.command-list-popover [data-index] { - position: relative; - - &:focus-visible { - outline: 2px solid var(--color-primary, #1677ff); - outline-offset: -2px; - } -} diff --git a/src/renderer/src/assets/styles/animation.scss b/src/renderer/src/assets/styles/animation.css similarity index 94% rename from src/renderer/src/assets/styles/animation.scss rename to src/renderer/src/assets/styles/animation.css index 9b8b428c5..13ca0be75 100644 --- a/src/renderer/src/assets/styles/animation.scss +++ b/src/renderer/src/assets/styles/animation.css @@ -10,14 +10,14 @@ } } -// 电磁波扩散效果 +/* 电磁波扩散效果 */ .animation-pulse { --pulse-color: 59, 130, 246; --pulse-size: 8px; animation: animation-pulse 1.5s infinite; } -// Modal动画 +/* Modal动画 */ @keyframes animation-move-down-in { 0% { transform: translate3d(0, 100%, 0); @@ -54,7 +54,7 @@ animation-duration: 0.25s; } -// 旋转动画 +/* 旋转动画 */ @keyframes animation-rotate { from { transform: rotate(0deg); @@ -69,7 +69,7 @@ animation: animation-rotate 0.75s linear infinite; } -// 定位高亮动画 +/* 定位高亮动画 */ @keyframes animation-locate-highlight { 0% { background-color: transparent; diff --git a/src/renderer/src/assets/styles/ant.css b/src/renderer/src/assets/styles/ant.css new file mode 100644 index 000000000..30005ff73 --- /dev/null +++ b/src/renderer/src/assets/styles/ant.css @@ -0,0 +1,238 @@ +@import './container.css'; + +/* Modal 关闭按钮不应该可拖拽,以确保点击正常 */ +.ant-modal-close { + -webkit-app-region: no-drag; +} + +/* 普通 Drawer 内容不应该可拖拽 */ +.ant-drawer-content { + -webkit-app-region: no-drag; +} + +/* minapp-drawer 有自己的拖拽规则 */ + +/* 下拉菜单和弹出框内容不应该可拖拽 */ +.ant-dropdown, +.ant-dropdown-menu, +.ant-popover-content, +.ant-tooltip-content, +.ant-popconfirm { + -webkit-app-region: no-drag; +} + +#inputbar { + resize: none; +} + +.ant-image-preview-switch-left { + -webkit-app-region: no-drag; +} + +.ant-btn:not(:disabled):focus-visible { + outline: none; +} + +/* Align lucide icon in Button */ +.ant-btn .ant-btn-icon { + display: inline-flex; + align-items: center; + justify-content: center; +} + +.ant-tabs-tabpane:focus-visible { + outline: none; +} + +.ant-tabs-tab-btn { + outline: none !important; +} + +.ant-segmented-group { + gap: 4px; +} + +.minapp-drawer .ant-drawer-content-wrapper { + box-shadow: none; +} + +.minapp-drawer .ant-drawer-header { + position: absolute; + -webkit-app-region: drag; + min-height: calc(var(--navbar-height) + 0.5px); + margin-top: -0.5px; + border-bottom: none; +} + +.minapp-drawer .ant-drawer-body { + padding: 0; + margin-top: var(--navbar-height); + overflow: hidden; + /* 手动展开 @extend #content-container 的内容 */ + background-color: var(--color-background); +} + +.minapp-drawer .minapp-mask { + background-color: transparent !important; +} + +[navbar-position='left'] .minapp-drawer { + max-width: calc(100vw - var(--sidebar-width)); +} + +[navbar-position='left'] .minapp-drawer .ant-drawer-header { + width: calc(100vw - var(--sidebar-width)); +} + +[navbar-position='top'] .minapp-drawer { + max-width: 100vw; +} + +[navbar-position='top'] .minapp-drawer .ant-drawer-header { + width: 100vw; +} + +.ant-drawer-header { + /* 普通 drawer header 不应该可拖拽,除非被 minapp-drawer 覆盖 */ + -webkit-app-region: no-drag; +} + +.message-attachments .ant-upload-list-item:hover { + background-color: initial !important; +} + +.ant-dropdown-menu .ant-dropdown-menu-sub { + max-height: 80vh; + width: max-content; + overflow-y: auto; + overflow-x: hidden; + border: 0.5px solid var(--color-border); +} + +.ant-dropdown { + background-color: var(--ant-color-bg-elevated); + overflow: hidden; + border-radius: var(--ant-border-radius-lg); + user-select: none; +} + +.ant-dropdown .ant-dropdown-menu { + max-height: 80vh; + overflow-y: auto; + border: 0.5px solid var(--color-border); +} + +/* Align lucide icon in dropdown menu item extra */ +.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-expand-icon, +.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-extra { + display: inline-flex; + align-items: center; + justify-content: center; +} + +.ant-dropdown .ant-dropdown-arrow + .ant-dropdown-menu { + border: none; +} + +.ant-select-dropdown { + border: 0.5px solid var(--color-border); +} + +.ant-dropdown-menu-submenu { + background-color: var(--ant-color-bg-elevated); + overflow: hidden; + border-radius: var(--ant-border-radius-lg); +} + +.ant-dropdown-menu-submenu .ant-dropdown-menu-submenu-title { + align-items: center; +} + +.ant-popover .ant-popover-inner { + border: 0.5px solid var(--color-border); +} + +.ant-popover .ant-popover-inner .ant-popover-inner-content { + max-height: 70vh; + overflow-y: auto; +} + +.ant-popover .ant-popover-arrow + .ant-popover-content .ant-popover-inner { + border: none; +} + +.ant-modal:not(.ant-modal-confirm) .ant-modal-confirm-body-has-title { + padding: 16px 0 0 0; +} + +.ant-modal:not(.ant-modal-confirm) .ant-modal-content { + border-radius: 10px; + border: 0.5px solid var(--color-border); + padding: 0 0 8px 0; +} + +.ant-modal:not(.ant-modal-confirm) .ant-modal-content .ant-modal-close { + margin-right: 2px; +} + +.ant-modal:not(.ant-modal-confirm) .ant-modal-content .ant-modal-header { + padding: 16px 16px 0 16px; + border-radius: 10px; +} + +.ant-modal:not(.ant-modal-confirm) .ant-modal-content .ant-modal-body { + /* 保持 body 在视口内,使用标准的最大高度 */ + max-height: 80vh; + overflow-y: auto; + padding: 0 16px 0 16px; +} + +.ant-modal:not(.ant-modal-confirm) .ant-modal-content .ant-modal-footer { + padding: 0 16px 8px 16px; +} + +.ant-modal:not(.ant-modal-confirm) .ant-modal-content .ant-modal-confirm-btns { + margin-bottom: 8px; +} + +.ant-modal.ant-modal-confirm.ant-modal-confirm-confirm .ant-modal-content { + padding: 16px; +} + +.ant-collapse:not(.ant-collapse-ghost) { + border: 1px solid var(--color-border); +} + +.ant-color-picker .ant-collapse:not(.ant-collapse-ghost) { + border: none; +} + +.ant-collapse:not(.ant-collapse-ghost) .ant-collapse-content { + border-top: 0.5px solid var(--color-border) !important; +} + +.ant-color-picker .ant-collapse:not(.ant-collapse-ghost) .ant-collapse-content { + border-top: none !important; +} + +.ant-slider .ant-slider-handle::after { + box-shadow: 0 1px 4px 0px rgb(128 128 128 / 50%) !important; +} + +.ant-splitter-bar .ant-splitter-bar-dragger::before { + background-color: var(--color-border) !important; + transition: + background-color 0.15s ease, + width 0.15s ease; +} + +.ant-splitter-bar .ant-splitter-bar-dragger:hover::before { + width: 4px !important; + background-color: var(--color-primary) !important; + transition-delay: 0.15s; +} + +.ant-splitter-bar .ant-splitter-bar-dragger-active::before { + width: 4px !important; + background-color: var(--color-primary) !important; +} diff --git a/src/renderer/src/assets/styles/ant.scss b/src/renderer/src/assets/styles/ant.scss deleted file mode 100644 index ad6d1e0ea..000000000 --- a/src/renderer/src/assets/styles/ant.scss +++ /dev/null @@ -1,234 +0,0 @@ -@use './container.scss'; - -/* Modal 关闭按钮不应该可拖拽,以确保点击正常 */ -.ant-modal-close { - -webkit-app-region: no-drag; -} - -/* 普通 Drawer 内容不应该可拖拽 */ -.ant-drawer-content { - -webkit-app-region: no-drag; -} - -/* minapp-drawer 有自己的拖拽规则 */ - -/* 下拉菜单和弹出框内容不应该可拖拽 */ -.ant-dropdown, -.ant-dropdown-menu, -.ant-popover-content, -.ant-tooltip-content, -.ant-popconfirm { - -webkit-app-region: no-drag; -} - -#inputbar { - resize: none; -} - -.ant-image-preview-switch-left { - -webkit-app-region: no-drag; -} - -.ant-btn:not(:disabled):focus-visible { - outline: none; -} - -// Align lucide icon in Button -.ant-btn .ant-btn-icon { - display: inline-flex; - align-items: center; - justify-content: center; -} - -.ant-tabs-tabpane:focus-visible { - outline: none; -} - -.ant-tabs-tab-btn { - outline: none !important; -} - -.ant-segmented-group { - gap: 4px; -} - -.minapp-drawer { - [navbar-position='left'] & { - max-width: calc(100vw - var(--sidebar-width)); - .ant-drawer-header { - width: calc(100vw - var(--sidebar-width)); - } - } - [navbar-position='top'] & { - max-width: 100vw; - .ant-drawer-header { - width: 100vw; - } - } - .ant-drawer-content-wrapper { - box-shadow: none; - } - .ant-drawer-header { - position: absolute; - -webkit-app-region: drag; - min-height: calc(var(--navbar-height) + 0.5px); - margin-top: -0.5px; - border-bottom: none; - } - .ant-drawer-body { - padding: 0; - margin-top: var(--navbar-height); - overflow: hidden; - @extend #content-container; - } - .minapp-mask { - background-color: transparent !important; - } -} - -.ant-drawer-header { - /* 普通 drawer header 不应该可拖拽,除非被 minapp-drawer 覆盖 */ - -webkit-app-region: no-drag; -} - -.message-attachments { - .ant-upload-list-item:hover { - background-color: initial !important; - } -} - -.ant-dropdown-menu .ant-dropdown-menu-sub { - max-height: 80vh; - width: max-content; - overflow-y: auto; - overflow-x: hidden; - border: 0.5px solid var(--color-border); -} -.ant-dropdown { - background-color: var(--ant-color-bg-elevated); - overflow: hidden; - border-radius: var(--ant-border-radius-lg); - user-select: none; - .ant-dropdown-menu { - max-height: 80vh; - overflow-y: auto; - border: 0.5px solid var(--color-border); - - // Align lucide icon in dropdown menu item extra - .ant-dropdown-menu-submenu-expand-icon, - .ant-dropdown-menu-item-extra { - display: inline-flex; - align-items: center; - justify-content: center; - } - } - .ant-dropdown-arrow + .ant-dropdown-menu { - border: none; - } -} -.ant-select-dropdown { - border: 0.5px solid var(--color-border); -} -.ant-dropdown-menu-submenu { - background-color: var(--ant-color-bg-elevated); - overflow: hidden; - border-radius: var(--ant-border-radius-lg); - - .ant-dropdown-menu-submenu-title { - align-items: center; - } -} - -.ant-popover { - .ant-popover-inner { - border: 0.5px solid var(--color-border); - .ant-popover-inner-content { - max-height: 70vh; - overflow-y: auto; - } - } - .ant-popover-arrow + .ant-popover-content { - .ant-popover-inner { - border: none; - } - } -} - -.ant-modal:not(.ant-modal-confirm) { - .ant-modal-confirm-body-has-title { - padding: 16px 0 0 0; - } - .ant-modal-content { - border-radius: 10px; - border: 0.5px solid var(--color-border); - padding: 0 0 8px 0; - .ant-modal-close { - margin-right: 2px; - } - .ant-modal-header { - padding: 16px 16px 0 16px; - border-radius: 10px; - } - .ant-modal-body { - /* 保持 body 在视口内,使用标准的最大高度 */ - max-height: 80vh; - overflow-y: auto; - padding: 0 16px 0 16px; - } - .ant-modal-footer { - padding: 0 16px 8px 16px; - } - .ant-modal-confirm-btns { - margin-bottom: 8px; - } - } -} -.ant-modal.ant-modal-confirm.ant-modal-confirm-confirm { - .ant-modal-content { - padding: 16px; - } -} - -.ant-collapse:not(.ant-collapse-ghost) { - border: 1px solid var(--color-border); - .ant-color-picker & { - border: none; - } - .ant-collapse-content { - border-top: 0.5px solid var(--color-border) !important; - .ant-color-picker & { - border-top: none !important; - } - } -} - -.ant-slider { - .ant-slider-handle::after { - box-shadow: 0 1px 4px 0px rgb(128 128 128 / 50%) !important; - } -} - -.ant-splitter-bar { - .ant-splitter-bar-dragger { - &::before { - background-color: var(--color-border) !important; - transition: - background-color 0.15s ease, - width 0.15s ease; - } - &:hover { - &::before { - width: 4px !important; - background-color: var(--color-primary) !important; - transition-delay: 0.15s; - } - } - } - - .ant-splitter-bar-dragger-active { - &::before { - width: 4px !important; - background-color: var(--color-primary) !important; - } - } -} diff --git a/src/renderer/src/assets/styles/color.scss b/src/renderer/src/assets/styles/color.css similarity index 98% rename from src/renderer/src/assets/styles/color.scss rename to src/renderer/src/assets/styles/color.css index 96eb426be..5d625937e 100644 --- a/src/renderer/src/assets/styles/color.scss +++ b/src/renderer/src/assets/styles/color.css @@ -19,7 +19,7 @@ --color-background-soft: var(--color-black-soft); --color-background-mute: var(--color-black-mute); --color-background-opacity: rgba(34, 34, 34, 0.7); - --inner-glow-opacity: 0.3; // For the glassmorphism effect in the dropdown menu + --inner-glow-opacity: 0.3; /* For the glassmorphism effect in the dropdown menu */ --color-primary: #00b96b; --color-primary-soft: #00b96b99; diff --git a/src/renderer/src/assets/styles/container.css b/src/renderer/src/assets/styles/container.css new file mode 100644 index 000000000..a8a1852e6 --- /dev/null +++ b/src/renderer/src/assets/styles/container.css @@ -0,0 +1,9 @@ +#content-container { + background-color: var(--color-background); +} + +[navbar-position='left'] #content-container { + border-top: 0.5px solid var(--color-border); + border-top-left-radius: 10px; + border-left: 0.5px solid var(--color-border); +} diff --git a/src/renderer/src/assets/styles/container.scss b/src/renderer/src/assets/styles/container.scss deleted file mode 100644 index fd2d7f9ae..000000000 --- a/src/renderer/src/assets/styles/container.scss +++ /dev/null @@ -1,11 +0,0 @@ -#content-container { - background-color: var(--color-background); -} - -[navbar-position='left'] { - #content-container { - border-top: 0.5px solid var(--color-border); - border-top-left-radius: 10px; - border-left: 0.5px solid var(--color-border); - } -} diff --git a/src/renderer/src/assets/styles/font.scss b/src/renderer/src/assets/styles/font.css similarity index 96% rename from src/renderer/src/assets/styles/font.scss rename to src/renderer/src/assets/styles/font.css index 02d8fee66..be71cef96 100644 --- a/src/renderer/src/assets/styles/font.scss +++ b/src/renderer/src/assets/styles/font.css @@ -11,7 +11,7 @@ --code-font-family: 'Cascadia Code', 'Fira Code', 'Consolas', Menlo, Courier, monospace; } -// Windows系统专用字体配置 +/* Windows系统专用字体配置 */ body[os='windows'] { --font-family: 'Twemoji Country Flags', Ubuntu, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, Roboto, Oxygen, diff --git a/src/renderer/src/assets/styles/index.scss b/src/renderer/src/assets/styles/index.css similarity index 54% rename from src/renderer/src/assets/styles/index.scss rename to src/renderer/src/assets/styles/index.css index 9efd4b67e..d687804fa 100644 --- a/src/renderer/src/assets/styles/index.scss +++ b/src/renderer/src/assets/styles/index.css @@ -1,12 +1,12 @@ -@use './color.scss'; -@use './font.scss'; -@use './markdown.scss'; -@use './ant.scss'; -@use './scrollbar.scss'; -@use './container.scss'; -@use './animation.scss'; -@use './richtext.scss'; -@use './responsive.scss'; +@import './color.css'; +@import './font.css'; +@import './markdown.css'; +@import './ant.css'; +@import './scrollbar.css'; +@import './container.css'; +@import './animation.css'; +@import './richtext.css'; +@import './responsive.css'; @import '../fonts/icon-fonts/iconfont.css'; @import '../fonts/ubuntu/ubuntu.css'; @import '../fonts/country-flag-fonts/flag.css'; @@ -15,7 +15,7 @@ *::before, *::after { box-sizing: border-box; - margin: 0; + /* margin: 0; */ font-weight: normal; } @@ -35,11 +35,11 @@ body, margin: 0; } -#root { +/* #root { display: flex; flex-direction: row; flex: 1; -} +} */ body { display: flex; @@ -114,62 +114,62 @@ ul { word-wrap: break-word; } -.bubble:not(.multi-select-mode) { - .block-wrapper { - display: flow-root; - } +.bubble:not(.multi-select-mode) .block-wrapper { + display: flow-root; +} - .block-wrapper:last-child > *:last-child { - margin-bottom: 0; - } +.bubble:not(.multi-select-mode) .block-wrapper:last-child > *:last-child { + margin-bottom: 0; +} - .message-content-container > *:last-child { - margin-bottom: 0; - } +.bubble:not(.multi-select-mode) .message-content-container > *:last-child { + margin-bottom: 0; +} - .message-thought-container { - margin-top: 8px; - } +.bubble:not(.multi-select-mode) .message-thought-container { + margin-top: 8px; +} - .message-user { - .message-header { - flex-direction: row-reverse; - text-align: right; - .message-header-info-wrap { - flex-direction: row-reverse; - text-align: right; - } - } - .message-content-container { - border-radius: 10px; - padding: 10px 16px 10px 16px; - background-color: var(--chat-background-user); - align-self: self-end; - } - .MessageFooter { - margin-top: 2px; - align-self: self-end; - } - } +.bubble:not(.multi-select-mode) .message-user .message-header { + flex-direction: row-reverse; + text-align: right; +} - .message-assistant { - .message-content-container { - padding-left: 0; - } - .MessageFooter { - margin-left: 0; - } - } +.bubble:not(.multi-select-mode) .message-user .message-header .message-header-info-wrap { + flex-direction: row-reverse; + text-align: right; +} - code { - color: var(--color-text); - } - .markdown { - display: flow-root; - *:last-child { - margin-bottom: 0; - } - } +.bubble:not(.multi-select-mode) .message-user .message-content-container { + border-radius: 10px; + padding: 10px 16px 10px 16px; + background-color: var(--chat-background-user); + align-self: self-end; +} + +.bubble:not(.multi-select-mode) .message-user .MessageFooter { + margin-top: 2px; + align-self: self-end; +} + +.bubble:not(.multi-select-mode) .message-assistant .message-content-container { + padding-left: 0; +} + +.bubble:not(.multi-select-mode) .message-assistant .MessageFooter { + margin-left: 0; +} + +.bubble:not(.multi-select-mode) code { + color: var(--color-text); +} + +.bubble:not(.multi-select-mode) .markdown { + display: flow-root; +} + +.bubble:not(.multi-select-mode) .markdown *:last-child { + margin-bottom: 0; } .lucide:not(.lucide-custom) { @@ -185,8 +185,6 @@ ul { background-color: var(--color-background-highlight-accent); } -textarea { - &::-webkit-resizer { - display: none; - } +textarea::-webkit-resizer { + display: none; } diff --git a/src/renderer/src/assets/styles/markdown.css b/src/renderer/src/assets/styles/markdown.css new file mode 100644 index 000000000..5a1ca236d --- /dev/null +++ b/src/renderer/src/assets/styles/markdown.css @@ -0,0 +1,388 @@ +.markdown { + color: var(--color-text); + line-height: 1.6; + user-select: text; + word-break: break-word; +} + +.markdown h1:first-child, +.markdown h2:first-child, +.markdown h3:first-child, +.markdown h4:first-child, +.markdown h5:first-child, +.markdown h6:first-child { + margin-top: 0; +} + +.markdown h1, +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.markdown h6 { + margin: 1.5em 0 1em 0; + line-height: 1.3; + font-weight: bold; +} + +.markdown h1 { + margin-top: 0; + font-size: 2em; + border-bottom: 0.5px solid var(--color-border); + padding-bottom: 0.3em; +} + +.markdown h2 { + font-size: 1.5em; + border-bottom: 0.5px solid var(--color-border); + padding-bottom: 0.3em; +} + +.markdown h3 { + font-size: 1.2em; +} + +.markdown h4 { + font-size: 1em; +} + +.markdown h5 { + font-size: 0.9em; +} + +.markdown h6 { + font-size: 0.8em; +} + +.markdown p { + margin: 1.3em 0; + white-space: pre-wrap; + line-height: 1.6; +} + +.markdown p:last-child { + margin-bottom: 5px; +} + +.markdown p:first-child { + margin-top: 0; +} + +.markdown p:has(+ ul) { + margin-bottom: 0; +} + +.markdown ul { + list-style: initial; +} + +.markdown ul, +.markdown ol { + padding-left: 1.5em; + margin: 1em 0; +} + +.markdown li { + margin-bottom: 0.5em; +} + +.markdown li pre { + margin: 1.5em 0 !important; +} + +.markdown li::marker { + color: var(--color-text-3); +} + +.markdown li > ul, +.markdown li > ol { + margin: 0.5em 0; +} + +.markdown hr { + border: none; + border-top: 0.5px solid var(--color-border); + margin: 20px 0; +} + +.markdown span { + white-space: pre-wrap; +} + +.markdown .katex span { + white-space: pre; +} + +.markdown p code, +.markdown li code { + background: var(--color-background-mute); + padding: 3px 5px; + margin: 0 2px; + border-radius: 5px; + word-break: keep-all; + white-space: pre; +} + +.markdown code { + font-family: var(--code-font-family); +} + +.markdown pre { + border-radius: 8px; + overflow-x: auto; + font-family: var(--code-font-family); + background-color: var(--color-background-mute); +} + +.markdown pre:has(.special-preview) { + background-color: transparent; +} + +.markdown pre:not(pre pre) > code:not(pre pre > code) { + padding: 15px; + display: block; +} + +.markdown pre pre { + margin: 0 !important; +} + +.markdown pre pre code { + background: none; + padding: 0; + border-radius: 0; +} + +.markdown pre + pre { + margin-top: 10px; +} + +.markdown .markdown-alert, +.markdown blockquote { + margin: 1.5em 0; + padding: 1em 1.5em; + background-color: var(--color-background-soft); + border-left: 4px solid var(--color-primary); + border-radius: 0 8px 8px 0; + font-style: italic; + position: relative; +} + +.markdown table { + --table-border-radius: 8px; + margin: 2em 0; + font-size: 0.9em; + width: 100%; + border-radius: var(--table-border-radius); + overflow: hidden; + border-collapse: separate; + border: 0.5px solid var(--color-border); + border-spacing: 0; +} + +.markdown th, +.markdown td { + border-right: 0.5px solid var(--color-border); + border-bottom: 0.5px solid var(--color-border); + padding: 0.5em; +} + +.markdown th:last-child, +.markdown td:last-child { + border-right: none; +} + +.markdown tr:last-child td { + border-bottom: none; +} + +.markdown th { + background-color: var(--color-background-mute); + font-weight: 600; + text-align: left; +} + +.markdown tr:hover { + background-color: var(--color-background-soft); +} + +.markdown img { + max-width: 100%; + height: auto; + margin: 1em 0; +} + +.markdown a, +.markdown .link { + color: var(--color-link); + text-decoration: none; + cursor: pointer; +} + +.markdown a:hover, +.markdown .link:hover { + text-decoration: underline; +} + +.markdown strong { + font-weight: bold; +} + +.markdown em { + font-style: italic; +} + +.markdown del { + text-decoration: line-through; +} + +.markdown sup, +.markdown sub { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown sup { + top: -0.5em; + border-radius: 50%; + background-color: var(--color-reference); + color: var(--color-reference-text); + padding: 2px 5px; + zoom: 0.8; +} + +.markdown sup > span.link { + color: var(--color-reference-text); +} + +.markdown sub { + bottom: -0.25em; +} + +.markdown .footnote-ref { + font-size: 0.8em; + vertical-align: super; + line-height: 0; + margin: 0 2px; + color: var(--color-primary); + text-decoration: none; +} + +.markdown .footnote-ref:hover { + text-decoration: underline; +} + +.footnotes { + margin-top: 1em; + margin-bottom: 1em; + padding-top: 1em; + + background-color: var(--color-reference-background); + border-radius: 8px; + padding: 8px 12px; +} + +.footnotes h4 { + margin-bottom: 5px; + font-size: 12px; +} + +.footnotes a { + color: var(--color-link); +} + +.footnotes ol { + padding-left: 1em; + margin: 0; +} + +.footnotes ol li:last-child { + margin-bottom: 0; +} + +.footnotes li { + font-size: 0.9em; + margin-bottom: 0.5em; + color: var(--color-text-light); +} + +.footnotes li p { + display: inline; + margin: 0; +} + +.footnotes .footnote-backref { + font-size: 0.8em; + vertical-align: super; + line-height: 0; + margin-left: 5px; + color: var(--color-primary); + text-decoration: none; +} + +.footnotes .footnote-backref:hover { + text-decoration: underline; +} + +emoji-picker { + --border-size: 0; +} + +.block-wrapper + .block-wrapper { + margin-top: 1em; +} + +.katex, +mjx-container { + display: inline-block; + overflow-x: auto; + overflow-y: hidden; + overflow-wrap: break-word; + vertical-align: middle; + max-width: 100%; + padding: 1px 2px; + margin-top: -2px; +} + +/* Shiki 相关样式 */ +.shiki { + font-family: var(--code-font-family); + /* 保持行高为初始值,在 shiki 代码块中处理 */ + line-height: initial; +} + +/* CodeMirror 相关样式 */ +.cm-editor { + border-radius: inherit; +} + +.cm-editor.cm-focused { + outline: none; +} + +.cm-editor .cm-scroller { + font-family: var(--code-font-family); + border-radius: inherit; +} + +.cm-editor .cm-scroller .cm-gutters { + line-height: 1.6; + border-right: none; +} + +.cm-editor .cm-scroller .cm-content { + line-height: 1.6; + padding-left: 0.25em; +} + +.cm-editor .cm-scroller .cm-lineWrapping * { + word-wrap: break-word; + white-space: pre-wrap; +} + +.cm-editor .cm-announced { + position: absolute; + display: none; +} diff --git a/src/renderer/src/assets/styles/markdown.scss b/src/renderer/src/assets/styles/markdown.scss deleted file mode 100644 index 7d4dbf0ce..000000000 --- a/src/renderer/src/assets/styles/markdown.scss +++ /dev/null @@ -1,379 +0,0 @@ -.markdown { - color: var(--color-text); - line-height: 1.6; - user-select: text; - word-break: break-word; - - h1:first-child, - h2:first-child, - h3:first-child, - h4:first-child, - h5:first-child, - h6:first-child { - margin-top: 0; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - margin: 1.5em 0 1em 0; - line-height: 1.3; - font-weight: bold; - } - - h1 { - margin-top: 0; - font-size: 2em; - border-bottom: 0.5px solid var(--color-border); - padding-bottom: 0.3em; - } - - h2 { - font-size: 1.5em; - border-bottom: 0.5px solid var(--color-border); - padding-bottom: 0.3em; - } - - h3 { - font-size: 1.2em; - } - - h4 { - font-size: 1em; - } - - h5 { - font-size: 0.9em; - } - - h6 { - font-size: 0.8em; - } - - p { - margin: 1.3em 0; - white-space: pre-wrap; - line-height: 1.6; - - &:last-child { - margin-bottom: 5px; - } - - &:first-child { - margin-top: 0; - } - - &:has(+ ul) { - margin-bottom: 0; - } - } - - ul { - list-style: initial; - } - - ul, - ol { - padding-left: 1.5em; - margin: 1em 0; - } - - li { - margin-bottom: 0.5em; - pre { - margin: 1.5em 0 !important; - } - &::marker { - color: var(--color-text-3); - } - } - - li > ul, - li > ol { - margin: 0.5em 0; - } - - hr { - border: none; - border-top: 0.5px solid var(--color-border); - margin: 20px 0; - } - - span { - white-space: pre-wrap; - } - - .katex span { - white-space: pre; - } - - p code, - li code { - background: var(--color-background-mute); - padding: 3px 5px; - margin: 0 2px; - border-radius: 5px; - word-break: keep-all; - white-space: pre; - } - - code { - font-family: var(--code-font-family); - } - - pre { - border-radius: 8px; - overflow-x: auto; - font-family: var(--code-font-family); - background-color: var(--color-background-mute); - &:has(.special-preview) { - background-color: transparent; - } - &:not(pre pre) { - > code:not(pre pre > code) { - padding: 15px; - display: block; - } - } - pre { - margin: 0 !important; - code { - background: none; - padding: 0; - border-radius: 0; - } - } - } - - pre + pre { - margin-top: 10px; - } - - .markdown-alert, - blockquote { - margin: 1.5em 0; - padding: 1em 1.5em; - background-color: var(--color-background-soft); - border-left: 4px solid var(--color-primary); - border-radius: 0 8px 8px 0; - font-style: italic; - position: relative; - } - - table { - --table-border-radius: 8px; - margin: 2em 0; - font-size: 0.9em; - width: 100%; - border-radius: var(--table-border-radius); - overflow: hidden; - border-collapse: separate; - border: 0.5px solid var(--color-border); - border-spacing: 0; - } - - th, - td { - border-right: 0.5px solid var(--color-border); - border-bottom: 0.5px solid var(--color-border); - padding: 0.5em; - &:last-child { - border-right: none; - } - } - - tr:last-child td { - border-bottom: none; - } - - th { - background-color: var(--color-background-mute); - font-weight: 600; - text-align: left; - } - - tr:hover { - background-color: var(--color-background-soft); - } - - img { - max-width: 100%; - height: auto; - margin: 1em 0; - } - - a, - .link { - color: var(--color-link); - text-decoration: none; - cursor: pointer; - - &:hover { - text-decoration: underline; - } - } - - strong { - font-weight: bold; - } - - em { - font-style: italic; - } - - del { - text-decoration: line-through; - } - - sup, - sub { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - } - - sup { - top: -0.5em; - border-radius: 50%; - background-color: var(--color-reference); - color: var(--color-reference-text); - padding: 2px 5px; - zoom: 0.8; - & > span.link { - color: var(--color-reference-text); - } - } - - sub { - bottom: -0.25em; - } - - .footnote-ref { - font-size: 0.8em; - vertical-align: super; - line-height: 0; - margin: 0 2px; - color: var(--color-primary); - text-decoration: none; - - &:hover { - text-decoration: underline; - } - } -} - -.footnotes { - margin-top: 1em; - margin-bottom: 1em; - padding-top: 1em; - - background-color: var(--color-reference-background); - border-radius: 8px; - padding: 8px 12px; - - h4 { - margin-bottom: 5px; - font-size: 12px; - } - - a { - color: var(--color-link); - } - - ol { - padding-left: 1em; - margin: 0; - li:last-child { - margin-bottom: 0; - } - } - - li { - font-size: 0.9em; - margin-bottom: 0.5em; - color: var(--color-text-light); - - p { - display: inline; - margin: 0; - } - } - - .footnote-backref { - font-size: 0.8em; - vertical-align: super; - line-height: 0; - margin-left: 5px; - color: var(--color-primary); - text-decoration: none; - - &:hover { - text-decoration: underline; - } - } -} - -emoji-picker { - --border-size: 0; -} - -.block-wrapper + .block-wrapper { - margin-top: 1em; -} - -.katex, -mjx-container { - display: inline-block; - overflow-x: auto; - overflow-y: hidden; - overflow-wrap: break-word; - vertical-align: middle; - max-width: 100%; - padding: 1px 2px; - margin-top: -2px; -} - -/* Shiki 相关样式 */ -.shiki { - font-family: var(--code-font-family); - // 保持行高为初始值,在 shiki 代码块中处理 - line-height: initial; -} - -/* CodeMirror 相关样式 */ -.cm-editor { - border-radius: inherit; - - &.cm-focused { - outline: none; - } - - .cm-scroller { - font-family: var(--code-font-family); - border-radius: inherit; - - .cm-gutters { - line-height: 1.6; - border-right: none; - } - - .cm-content { - line-height: 1.6; - padding-left: 0.25em; - } - - .cm-lineWrapping * { - word-wrap: break-word; - white-space: pre-wrap; - } - } - - .cm-announced { - position: absolute; - display: none; - } -} diff --git a/src/renderer/src/assets/styles/responsive.scss b/src/renderer/src/assets/styles/responsive.css similarity index 92% rename from src/renderer/src/assets/styles/responsive.scss rename to src/renderer/src/assets/styles/responsive.css index c5ed80433..e84cc1e69 100644 --- a/src/renderer/src/assets/styles/responsive.scss +++ b/src/renderer/src/assets/styles/responsive.css @@ -1,4 +1,4 @@ -// xl, xxl, default style +/* xl, xxl, default style */ :root { --navbar-height: 44px; --sidebar-width: 50px; @@ -17,7 +17,7 @@ --list-item-border-radius: 20px; } -// lg +/* lg */ @media (max-width: 1080px) { :root { --assistants-width: 210px; diff --git a/src/renderer/src/assets/styles/richtext.css b/src/renderer/src/assets/styles/richtext.css new file mode 100644 index 000000000..c6afcf401 --- /dev/null +++ b/src/renderer/src/assets/styles/richtext.css @@ -0,0 +1,522 @@ +.tiptap { + /* 预留5px给scrollbar */ + padding: 12px 55px 12px 60px; + outline: none; + min-height: 120px; + overflow-wrap: break-word; + word-break: break-word; +} + +.tiptap:focus { + outline: none; +} + +.tiptap :first-child { + margin-top: 0; +} + +.tiptap h1:first-child, +.tiptap h2:first-child, +.tiptap h3:first-child, +.tiptap h4:first-child, +.tiptap h5:first-child, +.tiptap h6:first-child { + margin-top: 0; +} + +.tiptap h1, +.tiptap h2, +.tiptap h3, +.tiptap h4, +.tiptap h5, +.tiptap h6 { + margin: 1.5rem 0 1rem 0; + line-height: 1.1; + text-wrap: pretty; + font-weight: 600; +} + +.tiptap h1 code, +.tiptap h2 code, +.tiptap h3 code, +.tiptap h4 code, +.tiptap h5 code, +.tiptap h6 code { + font-size: inherit; + font-weight: inherit; +} + +.tiptap h1 { + margin-top: 0; + font-size: 2rem; +} + +.tiptap h2 { + font-size: 1.5rem; +} + +.tiptap h3 { + font-size: 1.2rem; +} + +.tiptap h4, +.tiptap h5, +.tiptap h6 { + font-size: 1rem; +} + +.tiptap p { + margin: 1.1rem 0 0.5rem 0; + white-space: normal; + overflow-wrap: break-word; + word-break: break-word; + width: 100%; + line-height: 1.6; + hyphens: auto; +} + +.tiptap p:has(+ ul) { + margin-bottom: 0; +} + +.tiptap a { + color: var(--color-link); + text-decoration: none; + cursor: pointer; +} + +.tiptap a:hover { + text-decoration: underline; +} + +.tiptap blockquote { + border-left: 4px solid var(--color-primary); + margin: 1.5rem 0; + padding-left: 1rem; +} + +.tiptap code { + background-color: var(--color-inline-code-background); + border-radius: 0.4rem; + color: var(--color-inline-code-text); + font-size: 0.85rem; + padding: 0.25em 0.3em; + font-family: var(--code-font-family); +} + +.tiptap pre { + background: var(--color-code-background); + border-radius: 0.5rem; + color: var(--color-text); + font-family: var(--code-font-family); + margin: 1.5rem 0; + padding: 0.75rem 1rem; + border: 1px solid var(--color-border-soft); +} + +.tiptap pre code { + background: none; + color: inherit; + font-size: 0.8rem; + padding: 0; + border: none; +} + +.tiptap hr { + border: none; + border-top: 1px solid var(--color-gray-2); + margin: 2rem 0; +} + +.tiptap em { + font-style: italic; +} + +.tiptap u { + text-decoration: underline; +} + +.tiptap strong, +.tiptap strong * { + font-weight: 600; +} + +.tiptap .placeholder { + position: relative; +} + +.tiptap .placeholder:before { + content: attr(data-placeholder); + position: absolute; + color: var(--color-text-secondary); + opacity: 0.6; + pointer-events: none; + font-style: italic; + left: 0; + right: 0; +} + +/* Ensure drag handles and plus buttons remain interactive */ +.tiptap .placeholder .drag-handle, +.tiptap .placeholder .plus-button { + pointer-events: auto; +} + +/* Show placeholder only when focused or when it's the only empty node */ +.tiptap .placeholder.has-focus:before { + opacity: 0.8; +} + +.tiptap img { + max-width: 800px; + width: 100%; + height: auto; +} + +.tiptap table { + border-collapse: collapse; + margin: 0; + /* Allow action endpoints (rendered as decorations) to slightly overflow table edges */ + overflow: visible; + table-layout: fixed; + width: 100%; +} + +.tiptap td, +.tiptap th { + border: 1px solid var(--color-border-soft); + box-sizing: border-box; + display: table-cell; + min-width: 120px; + padding: 6px 8px; + position: relative; + vertical-align: top; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.tiptap td > *, +.tiptap th > * { + margin-bottom: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.tiptap th, +.tiptap th * { + background-color: var(--color-gray-3); + font-weight: bold; + text-align: left; +} + +.tiptap .selectedCell { + position: relative; /* 确保伪元素定位 */ +} + +.tiptap .selectedCell::after { + content: ''; + position: absolute; + inset: 0; + pointer-events: none; + border: 0 solid var(--color-primary); + border-radius: 0; +} + +.tiptap .selectedCell.selection-top::after { + border-top-width: 2px; +} + +.tiptap .selectedCell.selection-bottom::after { + border-bottom-width: 2px; +} + +.tiptap .selectedCell.selection-left::after { + border-left-width: 2px; +} + +.tiptap .selectedCell.selection-right::after { + border-right-width: 2px; +} + +.tiptap .column-resize-handle { + background-color: var(--color-primary); + bottom: -2px; + pointer-events: none; + position: absolute; + right: -2px; + top: 0; + width: 4px; +} + +.tiptap table:has(.selectedCell) { + caret-color: transparent !important; + user-select: none !important; +} + +.tiptap table:has(.selectedCell) *::selection { + background: transparent !important; +} + +.tiptap table:has(.selectedCell) .column-resize-handle { + display: none; +} + +/* Position row action buttons relative to first column cells */ +.tiptap table tbody tr td:first-child, +.tiptap table tbody tr th:first-child { + position: relative; +} + +/* Position column action buttons relative to first row cells */ +.tiptap table tbody tr:first-child td, +.tiptap table tbody tr:first-child th { + position: relative; +} + +.tiptap .tableWrapper { + position: relative; + margin: 1rem 0; + display: grid; + grid-template-columns: 1fr 25px; + grid-template-rows: 1fr 25px; + grid-template-areas: + 'table column-btn' + 'row-btn corner'; + gap: 5px; +} + +.tiptap .tableWrapper .table-container { + grid-area: table; + overflow-x: auto; + overflow-y: visible; +} + +.tiptap .tableWrapper .table-container::-webkit-scrollbar { + cursor: default; +} + +.tiptap .tableWrapper .table-container::-webkit-scrollbar:horizontal { + cursor: default; +} + +.tiptap .tableWrapper .table-container::-webkit-scrollbar-thumb { + cursor: default; +} + +.tiptap .tableWrapper .table-container::-webkit-scrollbar-track { + cursor: default; +} + +.tiptap .tableWrapper .table-container table { + width: max-content; + min-width: 100%; +} + +.tiptap .tableWrapper .add-row-button, +.tiptap .tableWrapper .add-column-button { + border: 1px solid var(--color-border); + background: var(--color-bg-base); + border-radius: 4px; + font-size: 12px; + line-height: 1; + cursor: pointer; + display: none; + align-items: center; + justify-content: center; + color: var(--color-text); + z-index: 20; + transition: all 0.2s ease; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + pointer-events: auto; +} + +.tiptap .tableWrapper .add-row-button:hover, +.tiptap .tableWrapper .add-column-button:hover { + background: var(--color-primary); + color: white; + border-color: var(--color-primary); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.tiptap .tableWrapper .add-row-button:active, +.tiptap .tableWrapper .add-column-button:active { + transform: scale(0.98); +} + +.tiptap .tableWrapper .add-row-button::before, +.tiptap .tableWrapper .add-column-button::before { + content: '+'; + font-weight: bold; +} + +.tiptap .tableWrapper .add-row-button { + grid-area: row-btn; +} + +.tiptap .tableWrapper .add-column-button { + grid-area: column-btn; +} + +.tiptap .tableWrapper:hover .add-row-button, +.tiptap .tableWrapper:has(.add-row-button:hover) .add-row-button, +.tiptap .tableWrapper:has(.add-column-button:hover) .add-row-button, +.tiptap .tableWrapper:hover .add-column-button, +.tiptap .tableWrapper:has(.add-row-button:hover) .add-column-button, +.tiptap .tableWrapper:has(.add-column-button:hover) .add-column-button { + display: flex; +} + +/* Do not show in readonly even on hover */ +.tiptap .tableWrapper.is-readonly .add-row-button, +.tiptap .tableWrapper.is-readonly:hover .add-row-button, +.tiptap .tableWrapper.is-readonly .add-column-button, +.tiptap .tableWrapper.is-readonly:hover .add-column-button { + display: none !important; +} + +.tiptap .tableWrapper .add-row-button:hover, +.tiptap .tableWrapper .add-column-button:hover { + display: flex !important; +} + +/* Row/Column action triggers (visible on cell selection) */ +.tiptap .tableWrapper .row-action-trigger, +.tiptap .tableWrapper .column-action-trigger { + position: absolute; + height: 20px; + border-radius: 8px; + background: var(--color-primary); + color: #fff; + border: 1px solid var(--color-primary); + display: none; + align-items: center; + justify-content: center; + font-size: 12px; + line-height: 1; + z-index: 30; + pointer-events: auto; +} + +.tiptap .tableWrapper .row-action-trigger::before, +.tiptap .tableWrapper .column-action-trigger::before { + content: '•••'; +} + +.tiptap.resize-cursor { + cursor: ew-resize; + cursor: col-resize; +} + +.tiptap ul, +.tiptap ol { + padding: 0 1rem; + margin: 1.25rem 1rem 1.25rem 0.4rem; +} + +.tiptap ul li p, +.tiptap ol li p { + margin-top: 0.25em; + margin-bottom: 0.25em; +} + +/* Reduce spacing for nested lists */ +.tiptap ul ul, +.tiptap ul ol, +.tiptap ol ul, +.tiptap ol ol { + margin: 0.5rem 0.5rem 0.5rem 0.2rem; +} + +.tiptap ul { + list-style: disc; +} + +.tiptap ol { + list-style: decimal; +} + +.tiptap ul[data-type='taskList'] { + list-style: none; + margin-left: 0; + padding: 0; +} + +.tiptap ul[data-type='taskList'] li { + align-items: center; + display: flex; +} + +.tiptap ul[data-type='taskList'] li > label { + flex: 0 0 auto; + margin-right: 0.5rem; + user-select: none; + display: flex; + align-items: center; +} + +.tiptap ul[data-type='taskList'] li > div { + flex: 1 1 auto; +} + +.tiptap ul[data-type='taskList'] li > div p { + margin: 0; +} + +/* Checked task item appearance */ +.tiptap ul[data-type='taskList'] li[data-checked='true'] > div { + color: var(--color-text-2); + text-decoration: line-through; +} + +.tiptap ul[data-type='taskList'] input[type='checkbox'] { + cursor: pointer; +} + +/* Use primary color for checked checkbox */ +.tiptap ul[data-type='taskList'] input[type='checkbox']:checked { + accent-color: var(--color-primary); + background-color: var(--color-primary); + border-color: var(--color-primary); +} + +.tiptap ul[data-type='taskList'] ul[data-type='taskList'] { + margin: 0; +} + +/* Math block */ +.tiptap .block-math-inner { + display: flex; + justify-content: center; + align-items: center; + font-size: 1.2rem; +} + +/* Bottom spacer to create viewport padding */ +.tiptap::after { + content: ''; + display: block; + height: 50px; + pointer-events: none; +} + +/* Code block wrapper and header styles */ +.code-block-wrapper { + position: relative; +} + +.code-block-wrapper .code-block-header { + display: flex; + align-items: center; + gap: 6px; + position: absolute; + top: 4px; + right: 6px; + opacity: 0; + transition: opacity 0.2s; +} + +.code-block-wrapper:hover .code-block-header { + opacity: 1; +} diff --git a/src/renderer/src/assets/styles/richtext.scss b/src/renderer/src/assets/styles/richtext.scss deleted file mode 100644 index 7b4e4bdad..000000000 --- a/src/renderer/src/assets/styles/richtext.scss +++ /dev/null @@ -1,508 +0,0 @@ -.tiptap { - // 预留5px给scrollbar - padding: 12px 55px 12px 60px; - outline: none; - min-height: 120px; - overflow-wrap: break-word; - word-break: break-word; - - &:focus { - outline: none; - } - - :first-child { - margin-top: 0; - } - - h1:first-child, - h2:first-child, - h3:first-child, - h4:first-child, - h5:first-child, - h6:first-child { - margin-top: 0; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - margin: 1.5rem 0 1rem 0; - line-height: 1.1; - text-wrap: pretty; - font-weight: 600; - - code { - font-size: inherit; - font-weight: inherit; - } - } - - h1 { - margin-top: 0; - font-size: 2rem; - } - - h2 { - font-size: 1.5rem; - } - - h3 { - font-size: 1.2rem; - } - - h4, - h5, - h6 { - font-size: 1rem; - } - - p { - margin: 1.1rem 0 0.5rem 0; - white-space: normal; - overflow-wrap: break-word; - word-break: break-word; - width: 100%; - line-height: 1.6; - hyphens: auto; - - &:has(+ ul) { - margin-bottom: 0; - } - } - - a { - color: var(--color-link); - text-decoration: none; - cursor: pointer; - - &:hover { - text-decoration: underline; - } - } - - blockquote { - border-left: 4px solid var(--color-primary); - margin: 1.5rem 0; - padding-left: 1rem; - } - - code { - background-color: var(--color-inline-code-background); - border-radius: 0.4rem; - color: var(--color-inline-code-text); - font-size: 0.85rem; - padding: 0.25em 0.3em; - font-family: var(--code-font-family); - } - - pre { - background: var(--color-code-background); - border-radius: 0.5rem; - color: var(--color-text); - font-family: var(--code-font-family); - margin: 1.5rem 0; - padding: 0.75rem 1rem; - border: 1px solid var(--color-border-soft); - - code { - background: none; - color: inherit; - font-size: 0.8rem; - padding: 0; - border: none; - } - } - - hr { - border: none; - border-top: 1px solid var(--color-gray-2); - margin: 2rem 0; - } - - em { - font-style: italic; - } - - u { - text-decoration: underline; - } - - strong, - strong * { - font-weight: 600; - } - - .placeholder { - position: relative; - - &:before { - content: attr(data-placeholder); - position: absolute; - color: var(--color-text-secondary); - opacity: 0.6; - pointer-events: none; - font-style: italic; - left: 0; - right: 0; - } - - /* Ensure drag handles and plus buttons remain interactive */ - .drag-handle, - .plus-button { - pointer-events: auto; - } - } - - /* Show placeholder only when focused or when it's the only empty node */ - .placeholder.has-focus:before { - opacity: 0.8; - } - - img { - max-width: 800px; - width: 100%; - height: auto; - } - - table { - border-collapse: collapse; - margin: 0; - /* Allow action endpoints (rendered as decorations) to slightly overflow table edges */ - overflow: visible; - table-layout: fixed; - width: 100%; - - td, - th { - border: 1px solid var(--color-border-soft); - box-sizing: border-box; - display: table-cell; - min-width: 120px; - padding: 6px 8px; - position: relative; - vertical-align: top; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - - > * { - margin-bottom: 0; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - } - - th, - th * { - background-color: var(--color-gray-3); - font-weight: bold; - text-align: left; - } - - .selectedCell { - position: relative; // 确保伪元素定位 - } - .selectedCell::after { - content: ''; - position: absolute; - inset: 0; - pointer-events: none; - border: 0 solid var(--color-primary); - border-radius: 0; - } - .selectedCell.selection-top::after { - border-top-width: 2px; - } - .selectedCell.selection-bottom::after { - border-bottom-width: 2px; - } - .selectedCell.selection-left::after { - border-left-width: 2px; - } - .selectedCell.selection-right::after { - border-right-width: 2px; - } - - .column-resize-handle { - background-color: var(--color-primary); - bottom: -2px; - pointer-events: none; - position: absolute; - right: -2px; - top: 0; - width: 4px; - } - - &:has(.selectedCell) { - caret-color: transparent !important; - user-select: none !important; - - *::selection { - background: transparent !important; - } - - .column-resize-handle { - display: none; - } - } - - // Position row action buttons relative to first column cells - tbody tr td:first-child, - tbody tr th:first-child { - position: relative; - } - - // Position column action buttons relative to first row cells - tbody tr:first-child td, - tbody tr:first-child th { - position: relative; - } - } - - .tableWrapper { - position: relative; - margin: 1rem 0; - display: grid; - grid-template-columns: 1fr 25px; - grid-template-rows: 1fr 25px; - grid-template-areas: - 'table column-btn' - 'row-btn corner'; - gap: 5px; - - .table-container { - grid-area: table; - overflow-x: auto; - overflow-y: visible; - - &::-webkit-scrollbar { - cursor: default; - } - - &::-webkit-scrollbar:horizontal { - cursor: default; - } - - &::-webkit-scrollbar-thumb { - cursor: default; - } - - &::-webkit-scrollbar-track { - cursor: default; - } - - table { - width: max-content; - min-width: 100%; - } - } - - .add-row-button, - .add-column-button { - border: 1px solid var(--color-border); - background: var(--color-bg-base); - border-radius: 4px; - font-size: 12px; - line-height: 1; - cursor: pointer; - display: none; - align-items: center; - justify-content: center; - color: var(--color-text); - z-index: 20; - transition: all 0.2s ease; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - pointer-events: auto; - - &:hover { - background: var(--color-primary); - color: white; - border-color: var(--color-primary); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); - } - - &:active { - transform: scale(0.98); - } - - &::before { - content: '+'; - font-weight: bold; - } - } - - .add-row-button { - grid-area: row-btn; - } - - .add-column-button { - grid-area: column-btn; - } - - &:hover, - &:has(.add-row-button:hover), - &:has(.add-column-button:hover) { - .add-row-button, - .add-column-button { - display: flex; - } - } - - /* Do not show in readonly even on hover */ - &.is-readonly, - &.is-readonly:hover { - .add-row-button, - .add-column-button { - display: none !important; - } - } - - .add-row-button:hover, - .add-column-button:hover { - display: flex !important; - } - - /* Row/Column action triggers (visible on cell selection) */ - .row-action-trigger, - .column-action-trigger { - position: absolute; - height: 20px; - border-radius: 8px; - background: var(--color-primary); - color: #fff; - border: 1px solid var(--color-primary); - display: none; - align-items: center; - justify-content: center; - font-size: 12px; - line-height: 1; - z-index: 30; - pointer-events: auto; - } - - .row-action-trigger::before, - .column-action-trigger::before { - content: '•••'; - } - } - - &.resize-cursor { - cursor: ew-resize; - cursor: col-resize; - } - - ul, - ol { - padding: 0 1rem; - margin: 1.25rem 1rem 1.25rem 0.4rem; - - li p { - margin-top: 0.25em; - margin-bottom: 0.25em; - } - - // Reduce spacing for nested lists - ul, - ol { - margin: 0.5rem 0.5rem 0.5rem 0.2rem; - } - } - - ul { - list-style: disc; - } - - ol { - list-style: decimal; - } - - ul[data-type='taskList'] { - list-style: none; - margin-left: 0; - padding: 0; - - li { - align-items: center; - display: flex; - - > label { - flex: 0 0 auto; - margin-right: 0.5rem; - user-select: none; - display: flex; - align-items: center; - } - - > div { - flex: 1 1 auto; - - p { - margin: 0; - } - } - } - - /* Checked task item appearance */ - li[data-checked='true'] { - > div { - color: var(--color-text-2); - text-decoration: line-through; - } - } - - input[type='checkbox'] { - cursor: pointer; - } - - /* Use primary color for checked checkbox */ - input[type='checkbox']:checked { - accent-color: var(--color-primary); - background-color: var(--color-primary); - border-color: var(--color-primary); - } - - ul[data-type='taskList'] { - margin: 0; - } - } - - /* Math block */ - .block-math-inner { - display: flex; - justify-content: center; - align-items: center; - font-size: 1.2rem; - } - - /* Bottom spacer to create viewport padding */ - &::after { - content: ''; - display: block; - height: 50px; - pointer-events: none; - } -} - -// Code block wrapper and header styles -.code-block-wrapper { - position: relative; - - .code-block-header { - display: flex; - align-items: center; - gap: 6px; - position: absolute; - top: 4px; - right: 6px; - opacity: 0; - transition: opacity 0.2s; - } - - &:hover .code-block-header { - opacity: 1; - } -} diff --git a/src/renderer/src/assets/styles/scrollbar.scss b/src/renderer/src/assets/styles/scrollbar.css similarity index 87% rename from src/renderer/src/assets/styles/scrollbar.scss rename to src/renderer/src/assets/styles/scrollbar.css index 555e68f33..461384381 100644 --- a/src/renderer/src/assets/styles/scrollbar.scss +++ b/src/renderer/src/assets/styles/scrollbar.css @@ -31,17 +31,19 @@ body[theme-mode='light'] { ::-webkit-scrollbar-thumb { border-radius: var(--scrollbar-thumb-radius); background: var(--color-scrollbar-thumb); - &:hover { - background: var(--color-scrollbar-thumb-hover); - } +} + +::-webkit-scrollbar-thumb:hover { + background: var(--color-scrollbar-thumb-hover); } pre:not(.shiki)::-webkit-scrollbar-thumb { border-radius: 0; background: rgba(0, 0, 0, 0.08); - &:hover { - background: rgba(0, 0, 0, 0.15); - } +} + +pre:not(.shiki)::-webkit-scrollbar-thumb:hover { + background: rgba(0, 0, 0, 0.15); } .shiki-dark { @@ -71,7 +73,8 @@ pre:not(.shiki)::-webkit-scrollbar-thumb { .rc-virtual-list-scrollbar-thumb { border-radius: var(--scrollbar-thumb-radius) !important; background: var(--color-scrollbar-thumb) !important; - &:hover { - background: var(--color-scrollbar-thumb-hover) !important; - } +} + +.rc-virtual-list-scrollbar-thumb:hover { + background: var(--color-scrollbar-thumb-hover) !important; } diff --git a/src/renderer/src/assets/styles/selection-toolbar.css b/src/renderer/src/assets/styles/selection-toolbar.css new file mode 100644 index 000000000..6efcb57d1 --- /dev/null +++ b/src/renderer/src/assets/styles/selection-toolbar.css @@ -0,0 +1,72 @@ +@import './font.css'; + +html { + font-family: var(--font-family); +} + +:root { + /* Basic Colors */ + --color-error: #f44336; + + --selection-toolbar-color-error: var(--color-error); + + /* Toolbar */ + --selection-toolbar-height: 36px; /* default: 36px max: 42px */ + --selection-toolbar-font-size: 14px; /* default: 14px */ + + --selection-toolbar-logo-display: flex; /* values: flex | none */ + --selection-toolbar-logo-size: 22px; /* default: 22px */ + --selection-toolbar-logo-border-width: 0.5px 0 0.5px 0.5px; /* default: none */ + --selection-toolbar-logo-border-style: solid; /* default: none */ + --selection-toolbar-logo-border-color: rgba(255, 255, 255, 0.2); + --selection-toolbar-logo-margin: 0; /* default: 0 */ + --selection-toolbar-logo-padding: 0 6px 0 8px; /* default: 0 4px 0 8px */ + --selection-toolbar-logo-background: transparent; /* default: transparent */ + + /* DO NOT MODIFY THESE VALUES, IF YOU DON'T KNOW WHAT YOU ARE DOING */ + --selection-toolbar-padding: 0; /* default: 0 */ + --selection-toolbar-margin: 2px 3px 5px 3px; /* default: 2px 3px 5px 3px */ + /* ------------------------------------------------------------ */ + + --selection-toolbar-border-radius: 10px; + --selection-toolbar-border: none; + --selection-toolbar-box-shadow: 0px 2px 3px rgba(50, 50, 50, 0.3); + --selection-toolbar-background: rgba(20, 20, 20, 0.95); + + /* Buttons */ + --selection-toolbar-buttons-border-width: 0.5px 0.5px 0.5px 0; + --selection-toolbar-buttons-border-style: solid; + --selection-toolbar-buttons-border-color: rgba(255, 255, 255, 0.2); + --selection-toolbar-buttons-border-radius: 0 var(--selection-toolbar-border-radius) + var(--selection-toolbar-border-radius) 0; + + --selection-toolbar-button-icon-size: 16px; /* default: 16px */ + --selection-toolbar-button-direction: row; /* default: row | column */ + --selection-toolbar-button-text-margin: 0 0 0 0; /* default: 0 0 0 0 */ + --selection-toolbar-button-margin: 0; /* default: 0 */ + --selection-toolbar-button-padding: 0 8px; /* default: 0 8px */ + --selection-toolbar-button-last-padding: 0 12px 0 8px; + --selection-toolbar-button-border-radius: 0; /* default: 0 */ + --selection-toolbar-button-border: none; /* default: none */ + --selection-toolbar-button-box-shadow: none; /* default: none */ + + --selection-toolbar-button-text-color: rgba(255, 255, 245, 0.9); + --selection-toolbar-button-icon-color: var(--selection-toolbar-button-text-color); + --selection-toolbar-button-bgcolor: transparent; /* default: transparent */ + --selection-toolbar-button-bgcolor-hover: #333333; +} + +[theme-mode='light'] { + --selection-toolbar-border: none; + --selection-toolbar-box-shadow: 0px 2px 3px rgba(50, 50, 50, 0.1); + --selection-toolbar-background: rgba(245, 245, 245, 0.95); + + /* Buttons */ + --selection-toolbar-buttons-border-color: rgba(0, 0, 0, 0.08); + + --selection-toolbar-logo-border-color: rgba(0, 0, 0, 0.08); + + --selection-toolbar-button-text-color: rgba(0, 0, 0, 1); + --selection-toolbar-button-icon-color: var(--selection-toolbar-button-text-color); + --selection-toolbar-button-bgcolor-hover: rgba(0, 0, 0, 0.04); +} diff --git a/src/renderer/src/assets/styles/selection-toolbar.scss b/src/renderer/src/assets/styles/selection-toolbar.scss deleted file mode 100644 index cf3c672c4..000000000 --- a/src/renderer/src/assets/styles/selection-toolbar.scss +++ /dev/null @@ -1,72 +0,0 @@ -@use './font.scss'; - -html { - font-family: var(--font-family); -} - -:root { - // Basic Colors - --color-error: #f44336; - - --selection-toolbar-color-error: var(--color-error); - - // Toolbar - --selection-toolbar-height: 36px; // default: 36px max: 42px - --selection-toolbar-font-size: 14px; // default: 14px - - --selection-toolbar-logo-display: flex; // values: flex | none - --selection-toolbar-logo-size: 22px; // default: 22px - --selection-toolbar-logo-border-width: 0.5px 0 0.5px 0.5px; // default: none - --selection-toolbar-logo-border-style: solid; // default: none - --selection-toolbar-logo-border-color: rgba(255, 255, 255, 0.2); - --selection-toolbar-logo-margin: 0; // default: 0 - --selection-toolbar-logo-padding: 0 6px 0 8px; // default: 0 4px 0 8px - --selection-toolbar-logo-background: transparent; // default: transparent - - // DO NOT MODIFY THESE VALUES, IF YOU DON'T KNOW WHAT YOU ARE DOING - --selection-toolbar-padding: 0; // default: 0 - --selection-toolbar-margin: 2px 3px 5px 3px; // default: 2px 3px 5px 3px - // ------------------------------------------------------------ - - --selection-toolbar-border-radius: 10px; - --selection-toolbar-border: none; - --selection-toolbar-box-shadow: 0px 2px 3px rgba(50, 50, 50, 0.3); - --selection-toolbar-background: rgba(20, 20, 20, 0.95); - - // Buttons - --selection-toolbar-buttons-border-width: 0.5px 0.5px 0.5px 0; - --selection-toolbar-buttons-border-style: solid; - --selection-toolbar-buttons-border-color: rgba(255, 255, 255, 0.2); - --selection-toolbar-buttons-border-radius: 0 var(--selection-toolbar-border-radius) - var(--selection-toolbar-border-radius) 0; - - --selection-toolbar-button-icon-size: 16px; // default: 16px - --selection-toolbar-button-direction: row; // default: row | column - --selection-toolbar-button-text-margin: 0 0 0 0; // default: 0 0 0 0 - --selection-toolbar-button-margin: 0; // default: 0 - --selection-toolbar-button-padding: 0 8px; // default: 0 8px - --selection-toolbar-button-last-padding: 0 12px 0 8px; - --selection-toolbar-button-border-radius: 0; // default: 0 - --selection-toolbar-button-border: none; // default: none - --selection-toolbar-button-box-shadow: none; // default: none - - --selection-toolbar-button-text-color: rgba(255, 255, 245, 0.9); - --selection-toolbar-button-icon-color: var(--selection-toolbar-button-text-color); - --selection-toolbar-button-bgcolor: transparent; // default: transparent - --selection-toolbar-button-bgcolor-hover: #333333; -} - -[theme-mode='light'] { - --selection-toolbar-border: none; - --selection-toolbar-box-shadow: 0px 2px 3px rgba(50, 50, 50, 0.1); - --selection-toolbar-background: rgba(245, 245, 245, 0.95); - - // Buttons - --selection-toolbar-buttons-border-color: rgba(0, 0, 0, 0.08); - - --selection-toolbar-logo-border-color: rgba(0, 0, 0, 0.08); - - --selection-toolbar-button-text-color: rgba(0, 0, 0, 1); - --selection-toolbar-button-icon-color: var(--selection-toolbar-button-text-color); - --selection-toolbar-button-bgcolor-hover: rgba(0, 0, 0, 0.04); -} diff --git a/src/renderer/src/assets/styles/tailwind.css b/src/renderer/src/assets/styles/tailwind.css new file mode 100644 index 000000000..481f7e0cf --- /dev/null +++ b/src/renderer/src/assets/styles/tailwind.css @@ -0,0 +1,156 @@ +@import 'tailwindcss' source('../../../../renderer'); +@import 'tw-animate-css'; + +/* heroui */ +@plugin '../../hero.ts'; +@source '../../../../../node_modules/@heroui/theme/dist/**/*.{js,ts,jsx,tsx}'; + +@custom-variant dark (&:is(.dark *)); + +/* 如需自定义: +1. 清晰地组织自定义 CSS 到相应的层中。 +2. 基础样式(如全局重置、链接样式)放入 base 层; +3. 可复用的组件样式(如果仍使用 @apply 或原生 CSS 嵌套创建)放入 components 层; +4. 新的自定义工具类放入 utilities 层。 +*/ +/*To customize: +1. Clearly organize custom CSS into the corresponding layers. +2. Place basic styles (such as global reset and link styles) in the base layer; +3. Put reusable component styles (if still created using @ apply or native CSS nesting) into the components layer; +4. Put the new custom utility class into the utilities layer. +*/ + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.141 0.005 285.823); + --card: oklch(1 0 0); + --card-foreground: oklch(0.141 0.005 285.823); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.141 0.005 285.823); + --primary: oklch(0.21 0.006 285.885); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.967 0.001 286.375); + --secondary-foreground: oklch(0.21 0.006 285.885); + --muted: oklch(0.967 0.001 286.375); + --muted-foreground: oklch(0.552 0.016 285.938); + --accent: oklch(0.967 0.001 286.375); + --accent-foreground: oklch(0.21 0.006 285.885); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.92 0.004 286.32); + --input: oklch(0.92 0.004 286.32); + --ring: oklch(0.705 0.015 286.067); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.141 0.005 285.823); + --sidebar-primary: oklch(0.21 0.006 285.885); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.967 0.001 286.375); + --sidebar-accent-foreground: oklch(0.21 0.006 285.885); + --sidebar-border: oklch(0.92 0.004 286.32); + --sidebar-ring: oklch(0.705 0.015 286.067); +} + +.dark { + --background: oklch(0.141 0.005 285.823); + --foreground: oklch(0.985 0 0); + --card: oklch(0.21 0.006 285.885); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.21 0.006 285.885); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.92 0.004 286.32); + --primary-foreground: oklch(0.21 0.006 285.885); + --secondary: oklch(0.274 0.006 286.033); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.274 0.006 286.033); + --muted-foreground: oklch(0.705 0.015 286.067); + --accent: oklch(0.274 0.006 286.033); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.552 0.016 285.938); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.21 0.006 285.885); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.274 0.006 286.033); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.552 0.016 285.938); +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); + --animate-marquee: marquee var(--duration) infinite linear; + --animate-marquee-vertical: marquee-vertical var(--duration) linear infinite; + @keyframes marquee { + from { + transform: translateX(0); + } + to { + transform: translateX(calc(-100% - var(--gap))); + } + } + @keyframes marquee-vertical { + from { + transform: translateY(0); + } + to { + transform: translateY(calc(-100% - var(--gap))); + } + } +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/src/renderer/src/components/ErrorBoundary.tsx b/src/renderer/src/components/ErrorBoundary.tsx index 5bfeaeb62..1ee3967e9 100644 --- a/src/renderer/src/components/ErrorBoundary.tsx +++ b/src/renderer/src/components/ErrorBoundary.tsx @@ -1,10 +1,10 @@ +import { Button } from '@heroui/button' import { formatErrorMessage } from '@renderer/utils/error' -import { Alert, Button, Space } from 'antd' +import { Alert, Space } from 'antd' import { ComponentType, ReactNode } from 'react' import { ErrorBoundary, FallbackProps } from 'react-error-boundary' import { useTranslation } from 'react-i18next' import styled from 'styled-components' - const DefaultFallback: ComponentType = (props: FallbackProps): ReactNode => { const { t } = useTranslation() const { error } = props @@ -23,10 +23,10 @@ const DefaultFallback: ComponentType = (props: FallbackProps): Re type="error" action={ - - diff --git a/src/renderer/src/components/Icons/SVGIcon.tsx b/src/renderer/src/components/Icons/SVGIcon.tsx index a83685e4d..b17f7397c 100644 --- a/src/renderer/src/components/Icons/SVGIcon.tsx +++ b/src/renderer/src/components/Icons/SVGIcon.tsx @@ -1,5 +1,5 @@ import { lightbulbVariants } from '@renderer/utils/motionVariants' -import { motion } from 'framer-motion' +import { motion } from 'motion/react' import { SVGProps } from 'react' export const StreamlineGoodHealthAndWellBeing = ( diff --git a/src/renderer/src/components/RichEditor/CommandListPopover.tsx b/src/renderer/src/components/RichEditor/CommandListPopover.tsx index f75e65186..4f8df4d20 100644 --- a/src/renderer/src/components/RichEditor/CommandListPopover.tsx +++ b/src/renderer/src/components/RichEditor/CommandListPopover.tsx @@ -1,4 +1,4 @@ -import '@renderer/assets/styles/CommandListPopover.scss' +import '@renderer/assets/styles/CommandListPopover.css' import { DynamicVirtualList, type DynamicVirtualListRef } from '@renderer/components/VirtualList' import { useTheme } from '@renderer/context/ThemeProvider' diff --git a/src/renderer/src/components/ToastPortal.tsx b/src/renderer/src/components/ToastPortal.tsx new file mode 100644 index 000000000..655dafccf --- /dev/null +++ b/src/renderer/src/components/ToastPortal.tsx @@ -0,0 +1,27 @@ +import { ToastProvider } from '@heroui/toast' +import { useEffect, useState } from 'react' +import { createPortal } from 'react-dom' + +export const ToastPortal = () => { + const [mounted, setMounted] = useState(false) + + useEffect(() => { + setMounted(true) + return () => setMounted(false) + }, []) + + if (!mounted) return null + + return createPortal( + , + document.body + ) +} diff --git a/src/renderer/src/components/TopView/index.tsx b/src/renderer/src/components/TopView/index.tsx index 8c2cb4a3b..a3e6da2bb 100644 --- a/src/renderer/src/components/TopView/index.tsx +++ b/src/renderer/src/components/TopView/index.tsx @@ -1,4 +1,5 @@ // import { loggerService } from '@logger' +import { addToast, closeAll, closeToast, getToastQueue, isToastClosing } from '@heroui/toast' import TopViewMinappContainer from '@renderer/components/MinApp/TopViewMinappContainer' import { useAppInit } from '@renderer/hooks/useAppInit' import { useShortcuts } from '@renderer/hooks/useShortcuts' @@ -43,6 +44,13 @@ const TopViewContainer: React.FC = ({ children }) => { useEffect(() => { window.message = messageApi window.modal = modal + window.toast = { + getToastQueue: getToastQueue, + addToast: addToast, + closeToast: closeToast, + closeAll: closeAll, + isToastClosing: isToastClosing + } }, [messageApi, modal]) onPop = () => { diff --git a/src/renderer/src/context/ThemeProvider.tsx b/src/renderer/src/context/ThemeProvider.tsx index 71755a0dc..82683b13d 100644 --- a/src/renderer/src/context/ThemeProvider.tsx +++ b/src/renderer/src/context/ThemeProvider.tsx @@ -23,6 +23,12 @@ interface ThemeProviderProps extends PropsWithChildren { defaultTheme?: ThemeMode } +const tailwindThemeChange = (theme: ThemeMode) => { + const root = window.document.documentElement + root.classList.remove('light', 'dark') + root.classList.add(theme) +} + export const ThemeProvider: React.FC = ({ children }) => { // 用户设置的主题 const { theme: settedTheme, setTheme: setSettedTheme } = useSettings() @@ -63,6 +69,7 @@ export const ThemeProvider: React.FC = ({ children }) => { }, [actualTheme, initUserTheme, navbarPosition, setSettedTheme, settedTheme]) useEffect(() => { + tailwindThemeChange(settedTheme) window.api.setTheme(settedTheme) }, [settedTheme]) diff --git a/src/renderer/src/entryPoint.tsx b/src/renderer/src/entryPoint.tsx index bf6a3cb6a..2eddc0681 100644 --- a/src/renderer/src/entryPoint.tsx +++ b/src/renderer/src/entryPoint.tsx @@ -1,4 +1,5 @@ -import './assets/styles/index.scss' +import './assets/styles/index.css' +import './assets/styles/tailwind.css' import '@ant-design/v5-patch-for-react-19' import { createRoot } from 'react-dom/client' diff --git a/src/renderer/src/env.d.ts b/src/renderer/src/env.d.ts index 7674f15ef..a306534e9 100644 --- a/src/renderer/src/env.d.ts +++ b/src/renderer/src/env.d.ts @@ -1,5 +1,6 @@ /// +import { addToast, closeAll, closeToast, getToastQueue, isToastClosing } from '@heroui/toast' import type KeyvStorage from '@kangfenmao/keyv-storage' import { MessageInstance } from 'antd/es/message/interface' import { HookAPI } from 'antd/es/modal/useModal' @@ -16,10 +17,20 @@ interface ImportMeta { declare global { interface Window { root: HTMLElement + /** + * @deprecated + */ message: MessageInstance modal: HookAPI keyv: KeyvStorage store: any navigate: NavigateFunction + toast: { + getToastQueue: typeof getToastQueue + addToast: typeof addToast + closeToast: typeof closeToast + closeAll: typeof closeAll + isToastClosing: typeof isToastClosing + } } } diff --git a/src/renderer/src/hero.ts b/src/renderer/src/hero.ts new file mode 100644 index 000000000..93a081c30 --- /dev/null +++ b/src/renderer/src/hero.ts @@ -0,0 +1,2 @@ +import { heroui } from '@heroui/react' +export default heroui() diff --git a/src/renderer/src/hooks/useMinappPopup.ts b/src/renderer/src/hooks/useMinappPopup.ts index 25d43399a..e8765267a 100644 --- a/src/renderer/src/hooks/useMinappPopup.ts +++ b/src/renderer/src/hooks/useMinappPopup.ts @@ -37,7 +37,7 @@ export const useMinappPopup = () => { const createLRUCache = useCallback(() => { return new LRUCache({ - max: maxKeepAliveMinapps, + max: maxKeepAliveMinapps ?? 10, disposeAfter: (_value, key) => { // Clean up WebView state when app is disposed from cache clearWebviewState(key) diff --git a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx index 9fa635947..bcac629bf 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx @@ -1,3 +1,4 @@ +import { Button } from '@heroui/button' import CodeViewer from '@renderer/components/CodeViewer' import { useTimer } from '@renderer/hooks/useTimer' import { getHttpMessageLabel, getProviderLabel } from '@renderer/i18n/label' @@ -33,7 +34,7 @@ import { } from '@renderer/types/error' import type { ErrorMessageBlock, Message } from '@renderer/types/newMessage' import { formatAiSdkError, formatError, safeToString } from '@renderer/utils/error' -import { Alert as AntdAlert, Button, Modal } from 'antd' +import { Alert as AntdAlert, Modal } from 'antd' import React, { useState } from 'react' import { Trans, useTranslation } from 'react-i18next' import { Link } from 'react-router-dom' @@ -143,13 +144,7 @@ const MessageErrorInfo: React.FC<{ block: ErrorMessageBlock; message: Message }> onClick={showErrorDetail} style={{ cursor: 'pointer' }} action={ - } @@ -181,7 +176,7 @@ const ErrorDetailModal: React.FC = ({ open, onClose, erro } navigator.clipboard.writeText(errorText) - window.message.success(t('message.copied')) + window.toast.addToast({ title: t('message.copied') }) } const renderErrorDetails = (error?: SerializedError) => { @@ -203,10 +198,10 @@ const ErrorDetailModal: React.FC = ({ open, onClose, erro open={open} onCancel={onClose} footer={[ - , - ]} diff --git a/src/renderer/src/utils/motionVariants.ts b/src/renderer/src/utils/motionVariants.ts index 8d5d25ade..73afaa634 100644 --- a/src/renderer/src/utils/motionVariants.ts +++ b/src/renderer/src/utils/motionVariants.ts @@ -1,4 +1,5 @@ -export const lightbulbVariants = { +import type { Variants } from 'motion/react' +export const lightbulbVariants: Variants = { active: { opacity: [1, 0.2, 1], transition: { @@ -17,7 +18,7 @@ export const lightbulbVariants = { } } -export const lightbulbSoftVariants = { +export const lightbulbSoftVariants: Variants = { active: { opacity: [1, 0.5, 1], transition: { diff --git a/src/renderer/src/windows/mini/entryPoint.tsx b/src/renderer/src/windows/mini/entryPoint.tsx index cc4da3f94..c2d6bb7ff 100644 --- a/src/renderer/src/windows/mini/entryPoint.tsx +++ b/src/renderer/src/windows/mini/entryPoint.tsx @@ -1,4 +1,4 @@ -import '@renderer/assets/styles/index.scss' +import '@renderer/assets/styles/index.css' import '@ant-design/v5-patch-for-react-19' import KeyvStorage from '@kangfenmao/keyv-storage' diff --git a/src/renderer/src/windows/selection/action/components/WindowFooter.tsx b/src/renderer/src/windows/selection/action/components/WindowFooter.tsx index 53f3d7818..30832190b 100644 --- a/src/renderer/src/windows/selection/action/components/WindowFooter.tsx +++ b/src/renderer/src/windows/selection/action/components/WindowFooter.tsx @@ -169,7 +169,7 @@ const WindowFooter: FC = ({ diff --git a/src/renderer/src/windows/selection/action/entryPoint.tsx b/src/renderer/src/windows/selection/action/entryPoint.tsx index bbbe2aff0..4dcdd916f 100644 --- a/src/renderer/src/windows/selection/action/entryPoint.tsx +++ b/src/renderer/src/windows/selection/action/entryPoint.tsx @@ -1,4 +1,4 @@ -import '@renderer/assets/styles/index.scss' +import '@renderer/assets/styles/index.css' import '@ant-design/v5-patch-for-react-19' import KeyvStorage from '@kangfenmao/keyv-storage' diff --git a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx index 6e54d2618..2d00b127b 100644 --- a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx +++ b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx @@ -1,4 +1,4 @@ -import '@renderer/assets/styles/selection-toolbar.scss' +import '@renderer/assets/styles/selection-toolbar.css' import { loggerService } from '@logger' import { AppLogo } from '@renderer/config/env' diff --git a/tsconfig.json b/tsconfig.json index 903c7e60a..16d6bfb9f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,6 +12,10 @@ "compilerOptions": { "experimentalDecorators": true, "emitDecoratorMetadata": true, - "useDefineForClassFields": true + "useDefineForClassFields": true, + "baseUrl": ".", + "paths": { + "@renderer/*": ["src/renderer/src/*"] + } } } diff --git a/tsconfig.node.json b/tsconfig.node.json index 9159069b3..0e9a295f9 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -13,6 +13,7 @@ "compilerOptions": { "composite": true, "incremental": true, + "moduleResolution": "bundler", "tsBuildInfoFile": ".tsbuildinfo/tsconfig.node.tsbuildinfo", "types": [ "electron-vite/node", @@ -24,7 +25,8 @@ "@main/*": ["src/main/*"], "@types": ["src/renderer/src/types/index.ts"], "@shared/*": ["packages/shared/*"], - "@mcp-trace/*": ["packages/mcp-trace/*"] + "@mcp-trace/*": ["packages/mcp-trace/*"], + "@modelcontextprotocol/sdk/*": ["node_modules/@modelcontextprotocol/sdk/dist/esm/*"] }, "experimentalDecorators": true, "emitDecoratorMetadata": true, diff --git a/vitest.config.ts b/vitest.config.ts index 80e9a455d..b4440a246 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -25,7 +25,7 @@ export default defineConfig({ // 渲染进程单元测试配置 { extends: true, - plugins: rendererConfig.plugins, + plugins: rendererConfig.plugins.filter((plugin: any) => plugin.name !== 'tailwindcss'), resolve: { alias: rendererConfig.resolve.alias }, diff --git a/yarn.lock b/yarn.lock index de965b531..b74e2782a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3277,6 +3277,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/wasi-threads@npm:^1.0.4": + version: 1.1.0 + resolution: "@emnapi/wasi-threads@npm:1.1.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/e6d54bf2b1e64cdd83d2916411e44e579b6ae35d5def0dea61a3c452d9921373044dff32a8b8473ae60c80692bdc39323e98b96a3f3d87ba6886b24dd0ef7ca1 + languageName: node + linkType: hard + "@emotion/hash@npm:^0.8.0": version: 0.8.0 resolution: "@emotion/hash@npm:0.8.0" @@ -3742,6 +3751,57 @@ __metadata: languageName: node linkType: hard +"@formatjs/ecma402-abstract@npm:2.3.4": + version: 2.3.4 + resolution: "@formatjs/ecma402-abstract@npm:2.3.4" + dependencies: + "@formatjs/fast-memoize": "npm:2.2.7" + "@formatjs/intl-localematcher": "npm:0.6.1" + decimal.js: "npm:^10.4.3" + tslib: "npm:^2.8.0" + checksum: 10c0/2644bc618a34dc610ef9691281eeb45ae6175e6982cf19f1bd140672fc95c748747ce3c85b934649ea7e4a304f7ae0060625fd53d5df76f92ca3acf743e1eb0a + languageName: node + linkType: hard + +"@formatjs/fast-memoize@npm:2.2.7": + version: 2.2.7 + resolution: "@formatjs/fast-memoize@npm:2.2.7" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/f5eabb0e4ab7162297df8252b4cfde194b23248120d9df267592eae2be2d2f7c4f670b5a70523d91b4ecdc35d40e65823bb8eeba8dd79fbf8601a972bf3b8866 + languageName: node + linkType: hard + +"@formatjs/icu-messageformat-parser@npm:2.11.2": + version: 2.11.2 + resolution: "@formatjs/icu-messageformat-parser@npm:2.11.2" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.3.4" + "@formatjs/icu-skeleton-parser": "npm:1.8.14" + tslib: "npm:^2.8.0" + checksum: 10c0/a121f2d2c6b36a1632ffd64c3545e2500c8ee0f7fee5db090318c035d635c430ab123faedb5d000f18d9423a7b55fbf670b84e2e2dd72cc307a38aed61d3b2e0 + languageName: node + linkType: hard + +"@formatjs/icu-skeleton-parser@npm:1.8.14": + version: 1.8.14 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.14" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.3.4" + tslib: "npm:^2.8.0" + checksum: 10c0/a1807ed6e90b8a2e8d0e5b5125e6f9a2c057d3cff377fb031d2333af7cfaa6de4ed3a15c23da7294d4c3557f8b28b2163246434a19720f26b5db0497d97e9b58 + languageName: node + linkType: hard + +"@formatjs/intl-localematcher@npm:0.6.1": + version: 0.6.1 + resolution: "@formatjs/intl-localematcher@npm:0.6.1" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/bacbedd508519c1bb5ca2620e89dc38f12101be59439aa14aa472b222915b462cb7d679726640f6dcf52a05dd218b5aa27ccd60f2e5010bb96f1d4929848cde0 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -3826,6 +3886,1449 @@ __metadata: languageName: node linkType: hard +"@heroui/accordion@npm:2.2.22": + version: 2.2.22 + resolution: "@heroui/accordion@npm:2.2.22" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/divider": "npm:2.2.18" + "@heroui/dom-animation": "npm:2.1.10" + "@heroui/framer-utils": "npm:2.1.21" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-aria-accordion": "npm:2.2.17" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-stately/tree": "npm:3.9.2" + "@react-types/accordion": "npm:3.0.0-alpha.26" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/4af7d1968ead37260ec909ee23d4e8f3275b2ab450ab07f10aa91bcd7dbff5e78de5f7c795c0d6e75eee3a7ed390741ef55cf9f377c3880addcdf1a75ef1da95 + languageName: node + linkType: hard + +"@heroui/alert@npm:2.2.25": + version: 2.2.25 + resolution: "@heroui/alert@npm:2.2.25" + dependencies: + "@heroui/button": "npm:2.2.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@react-stately/utils": "npm:3.10.8" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.19" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/feb8c493d7e77e646f4094faaca8382d966b9e39be88db9b806a71e58bebe91f60ed0ee808810affe802f6cc5887a048c3d36b56652d0c14cafc64668249aa79 + languageName: node + linkType: hard + +"@heroui/aria-utils@npm:2.2.22": + version: 2.2.22 + resolution: "@heroui/aria-utils@npm:2.2.22" + dependencies: + "@heroui/system": "npm:2.4.21" + "@react-aria/utils": "npm:3.30.1" + "@react-stately/collections": "npm:3.12.7" + "@react-types/overlays": "npm:3.9.1" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/48c95d3453223a073d4a6920ad3904e2046d5808906c32fdbb009745081a52501d6cda4cab0e109c82dab30f5a419665bc3c049200c343e5233754979c73fd61 + languageName: node + linkType: hard + +"@heroui/autocomplete@npm:2.3.27": + version: 2.3.27 + resolution: "@heroui/autocomplete@npm:2.3.27" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/button": "npm:2.2.25" + "@heroui/form": "npm:2.1.25" + "@heroui/input": "npm:2.4.26" + "@heroui/listbox": "npm:2.3.24" + "@heroui/popover": "npm:2.3.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/scroll-shadow": "npm:2.3.17" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + "@react-aria/combobox": "npm:3.13.1" + "@react-aria/i18n": "npm:3.12.12" + "@react-stately/combobox": "npm:3.11.1" + "@react-types/combobox": "npm:3.13.8" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/22a03a60463f35b80905b1bd8494f1075df4711dff454d7bb86618399f79c456a960d5114a1179ffc8255e31d4c9dd0dc1a697e315e12ad11f777a57091f442f + languageName: node + linkType: hard + +"@heroui/avatar@npm:2.2.21": + version: 2.2.21 + resolution: "@heroui/avatar@npm:2.2.21" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-image": "npm:2.1.12" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/8d5840992820206971ae6982fe93489901015199cc3754d051fd63f975c8e371c947b55afc0ff9ce6ff0e57ea85b2681808302d410c88f0ff0bd59f9f1c06d24 + languageName: node + linkType: hard + +"@heroui/badge@npm:2.2.16": + version: 2.2.16 + resolution: "@heroui/badge@npm:2.2.16" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/49673eafd445d27b03d62444934983d54fa6e505471710884eb2129bde02563f09a38f78155eeac336160dc8b488199b675238516f1ec8059ba1896b7913f516 + languageName: node + linkType: hard + +"@heroui/breadcrumbs@npm:2.2.21": + version: 2.2.21 + resolution: "@heroui/breadcrumbs@npm:2.2.21" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@react-aria/breadcrumbs": "npm:3.5.28" + "@react-aria/focus": "npm:3.21.1" + "@react-types/breadcrumbs": "npm:3.7.16" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/50914678bbcaae8ca9c216fe616730a8a89b30f72aab10ec6bf8c41f58512874ea038852c2a0b76e47161ca4a8d305133b81110113d7f57db31787dae41f8d6e + languageName: node + linkType: hard + +"@heroui/button@npm:2.2.25": + version: 2.2.25 + resolution: "@heroui/button@npm:2.2.25" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/ripple": "npm:2.2.19" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/spinner": "npm:2.2.22" + "@heroui/use-aria-button": "npm:2.2.19" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/80ff5a30177c8acdcd102e695da6966cbc893c67d52af87b2f81d34e625164aee084cce75ccdeb6b3766d621db7bcb829aaccb862b6a669f564ab9a889b664ae + languageName: node + linkType: hard + +"@heroui/calendar@npm:2.2.25": + version: 2.2.25 + resolution: "@heroui/calendar@npm:2.2.25" + dependencies: + "@heroui/button": "npm:2.2.25" + "@heroui/dom-animation": "npm:2.1.10" + "@heroui/framer-utils": "npm:2.1.21" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-aria-button": "npm:2.2.19" + "@internationalized/date": "npm:3.9.0" + "@react-aria/calendar": "npm:3.9.1" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/i18n": "npm:3.12.12" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/visually-hidden": "npm:3.8.27" + "@react-stately/calendar": "npm:3.8.4" + "@react-stately/utils": "npm:3.10.8" + "@react-types/button": "npm:3.14.0" + "@react-types/calendar": "npm:3.7.4" + "@react-types/shared": "npm:3.32.0" + scroll-into-view-if-needed: "npm:3.0.10" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/5894b2eac33a7a6df7e977bd10a3a290969c897d661458d8de997a057e3b1ce7748e271bc1e2cd67e57747ea0b46ebe19cc55343989f3d8eebc0affe528765f1 + languageName: node + linkType: hard + +"@heroui/card@npm:2.2.24": + version: 2.2.24 + resolution: "@heroui/card@npm:2.2.24" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/ripple": "npm:2.2.19" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-aria-button": "npm:2.2.19" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/65cdd7631939d3aaa1f8f0bdbc5fa2a4469d4449a255ed0185adbdd9d9a271832cf43cfe64f2efadeec5953e5021e1b73e29572ef493fa2a1c30d9b96b6f04be + languageName: node + linkType: hard + +"@heroui/checkbox@npm:2.3.25": + version: 2.3.25 + resolution: "@heroui/checkbox@npm:2.3.25" + dependencies: + "@heroui/form": "npm:2.1.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-callback-ref": "npm:2.1.8" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + "@react-aria/checkbox": "npm:3.16.1" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-stately/checkbox": "npm:3.7.1" + "@react-stately/toggle": "npm:3.9.1" + "@react-types/checkbox": "npm:3.10.1" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/50bf5dc0e7bf74066f2f96ae65d0d3f21a234596a57d3e4a3cfb6a816eef974a5bfbf3091db03eac56508d99e5d0dbc3f03b963f92ab63a22075e31e901d452b + languageName: node + linkType: hard + +"@heroui/chip@npm:2.2.21": + version: 2.2.21 + resolution: "@heroui/chip@npm:2.2.21" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/737fb5e6e846f61928fd3f25cf4a29c377f082819155838cf0b45a3ba84ba7abba49f781b4598b320765de9ea02bc84ced2af91961f1ffa4926612ff1de921cc + languageName: node + linkType: hard + +"@heroui/code@npm:2.2.19": + version: 2.2.19 + resolution: "@heroui/code@npm:2.2.19" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/system-rsc": "npm:2.3.18" + peerDependencies: + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/678e37b3c89f3d402ca9907f1b6c8e8dc1eb03dd24088d9020ea7fa3f29052832b52528150e4a71a77ca38d6dec931515b8a2deabd7f3a914a1d45ba959b8d73 + languageName: node + linkType: hard + +"@heroui/date-input@npm:2.3.25": + version: 2.3.25 + resolution: "@heroui/date-input@npm:2.3.25" + dependencies: + "@heroui/form": "npm:2.1.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@internationalized/date": "npm:3.9.0" + "@react-aria/datepicker": "npm:3.15.1" + "@react-aria/i18n": "npm:3.12.12" + "@react-stately/datepicker": "npm:3.15.1" + "@react-types/datepicker": "npm:3.13.1" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/ca1ab109611181234b7a3c819574977eba47cda857eecf2d4d7c2b49a30fa24dae95162acb7ae9c289ec1f79d8f9a66428bfdce435d2f85fa4249ed495c4710c + languageName: node + linkType: hard + +"@heroui/date-picker@npm:2.3.26": + version: 2.3.26 + resolution: "@heroui/date-picker@npm:2.3.26" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/button": "npm:2.2.25" + "@heroui/calendar": "npm:2.2.25" + "@heroui/date-input": "npm:2.3.25" + "@heroui/form": "npm:2.1.25" + "@heroui/popover": "npm:2.3.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@internationalized/date": "npm:3.9.0" + "@react-aria/datepicker": "npm:3.15.1" + "@react-aria/i18n": "npm:3.12.12" + "@react-stately/datepicker": "npm:3.15.1" + "@react-stately/utils": "npm:3.10.8" + "@react-types/datepicker": "npm:3.13.1" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/b3dc76b8f15fdf9e58ea64de5c5a574c78d1e1b7bf634144ae313341f72a8702251337fb71deb13a76c948bd5d5037f85defde3cef5c6d7074fa55dbd09e1656 + languageName: node + linkType: hard + +"@heroui/divider@npm:2.2.18": + version: 2.2.18 + resolution: "@heroui/divider@npm:2.2.18" + dependencies: + "@heroui/react-rsc-utils": "npm:2.1.9" + "@heroui/system-rsc": "npm:2.3.18" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/4c62a43e423c9d1f947c4ae5e30198d21daf16c72d91057ca6898b012bb88b8851d25b3fd76957bf7dbdd896510a06ae69754dc8a5b51f380df1dd48bedde987 + languageName: node + linkType: hard + +"@heroui/dom-animation@npm:2.1.10": + version: 2.1.10 + resolution: "@heroui/dom-animation@npm:2.1.10" + peerDependencies: + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + checksum: 10c0/dc111d80b4364109f45610cd9f3ff8ed75b92ef97b86f74685d626ac27d9a58d59ab1c8505d53830aad4ebd2fd22587213dcfde9d2d126a4c0e61071b6291300 + languageName: node + linkType: hard + +"@heroui/drawer@npm:2.2.22": + version: 2.2.22 + resolution: "@heroui/drawer@npm:2.2.22" + dependencies: + "@heroui/framer-utils": "npm:2.1.21" + "@heroui/modal": "npm:2.2.22" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/6e848f2059d796b7645d3f42b54baef792a5b59fc9c256ce603451736a7129ed34d76c5eaae37f3761467f13a2b05e1184de068d13ff925dbac34f969f5a0f7b + languageName: node + linkType: hard + +"@heroui/dropdown@npm:2.3.25": + version: 2.3.25 + resolution: "@heroui/dropdown@npm:2.3.25" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/menu": "npm:2.2.24" + "@heroui/popover": "npm:2.3.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/menu": "npm:3.19.1" + "@react-stately/menu": "npm:3.9.7" + "@react-types/menu": "npm:3.10.4" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/3ba6c767f131bdc752affc7521f19222b2a4180ebeeab3099885177df941d6cb4af1f953eab6cee220d54410e03a3c95b588354ee4c9d3be1d62c2c466618130 + languageName: node + linkType: hard + +"@heroui/form@npm:2.1.25": + version: 2.1.25 + resolution: "@heroui/form@npm:2.1.25" + dependencies: + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/system": "npm:2.4.21" + "@heroui/theme": "npm:2.4.21" + "@react-stately/form": "npm:3.2.1" + "@react-types/form": "npm:3.7.15" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18" + react-dom: ">=18" + checksum: 10c0/cab1290c49b40572e58e1fc415b67b6f1255e1d6c076a2f98f09ded2b07695e9df79852a246c655ab89124af339ec7b50ab04da2f3a79de674cd3484e5944848 + languageName: node + linkType: hard + +"@heroui/framer-utils@npm:2.1.21": + version: 2.1.21 + resolution: "@heroui/framer-utils@npm:2.1.21" + dependencies: + "@heroui/system": "npm:2.4.21" + "@heroui/use-measure": "npm:2.1.8" + peerDependencies: + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/294b9239b0c509a49dfae3964c9aacc39cac6784e5f8aa767d3a7f783e438df26dc2c413ee3b0514c8b70acb372708270af451684171345fe30ec91604ec5ffd + languageName: node + linkType: hard + +"@heroui/image@npm:2.2.16": + version: 2.2.16 + resolution: "@heroui/image@npm:2.2.16" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-image": "npm:2.1.12" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/347d9969cc6fc3774b4d32d7b8658f37df6969f3899463b9aeeeb107c0fdd4797614abe31f59e22641d38856287fe686cfd0af04a340da101c6ec84228ef71d5 + languageName: node + linkType: hard + +"@heroui/input-otp@npm:2.1.25": + version: 2.1.25 + resolution: "@heroui/input-otp@npm:2.1.25" + dependencies: + "@heroui/form": "npm:2.1.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-form-reset": "npm:2.0.1" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/form": "npm:3.1.1" + "@react-stately/form": "npm:3.2.1" + "@react-stately/utils": "npm:3.10.8" + "@react-types/textfield": "npm:3.12.5" + input-otp: "npm:1.4.1" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18" + react-dom: ">=18" + checksum: 10c0/3daa95392ee39bdb1429287b9785dbc035267beab8be14c47b2ea588e98537d7e526e111c8b895c000b6a1fa2b2bdb7505b0113fa7adbd47482d86bfbf9bf918 + languageName: node + linkType: hard + +"@heroui/input@npm:2.4.26": + version: 2.4.26 + resolution: "@heroui/input@npm:2.4.26" + dependencies: + "@heroui/form": "npm:2.1.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/textfield": "npm:3.18.1" + "@react-stately/utils": "npm:3.10.8" + "@react-types/shared": "npm:3.32.0" + "@react-types/textfield": "npm:3.12.5" + react-textarea-autosize: "npm:^8.5.3" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.19" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/ceb2ef6bef30108b296f85db8a18ad9d866dd1ccb900eae6a82f18aca9f8c9f98e9c95ad114078f416c5f1d79e9801edbd418cbfd416cd68d74895f04e4ce400 + languageName: node + linkType: hard + +"@heroui/kbd@npm:2.2.20": + version: 2.2.20 + resolution: "@heroui/kbd@npm:2.2.20" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/system-rsc": "npm:2.3.18" + peerDependencies: + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/79fc8d8b5b5ca643cf6660c6ca298b53129649f81e47b1281eaf5b95b3f5363aba69609c25a764292f5b09ddc0971d33b2b05abd867046d55611636981a81f25 + languageName: node + linkType: hard + +"@heroui/link@npm:2.2.22": + version: 2.2.22 + resolution: "@heroui/link@npm:2.2.22" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-aria-link": "npm:2.2.20" + "@react-aria/focus": "npm:3.21.1" + "@react-types/link": "npm:3.6.4" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/2680f2e008e21b38e02a321537ff2870829da333ec20925739a801d33c3e13dbe79500743b02d4855b26aa7285c034355dcca22f1f0b2365c1ab8e29fcfe5c9a + languageName: node + linkType: hard + +"@heroui/listbox@npm:2.3.24": + version: 2.3.24 + resolution: "@heroui/listbox@npm:2.3.24" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/divider": "npm:2.2.18" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-is-mobile": "npm:2.2.12" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/listbox": "npm:3.14.8" + "@react-stately/list": "npm:3.13.0" + "@react-types/shared": "npm:3.32.0" + "@tanstack/react-virtual": "npm:3.11.3" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/53c4a1724bcc03dab8ad28a60c0b82b5e94813dfdd6f297450e7a14fd1392e6ed0c5c8fc8f49b53b9d6b6ba2a12a8f9f70104c757e6503372bf4552e5e0563d6 + languageName: node + linkType: hard + +"@heroui/menu@npm:2.2.24": + version: 2.2.24 + resolution: "@heroui/menu@npm:2.2.24" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/divider": "npm:2.2.18" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-is-mobile": "npm:2.2.12" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/menu": "npm:3.19.1" + "@react-stately/tree": "npm:3.9.2" + "@react-types/menu": "npm:3.10.4" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/68d3c563f7ac38c84e6ef38299db7b0ffb51c40b5b45eb386192b8f7c138d5101464fd25247f5838b3259dc8f9bf03954238503280465f0bf68b358e39b25015 + languageName: node + linkType: hard + +"@heroui/modal@npm:2.2.22": + version: 2.2.22 + resolution: "@heroui/modal@npm:2.2.22" + dependencies: + "@heroui/dom-animation": "npm:2.1.10" + "@heroui/framer-utils": "npm:2.1.21" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-aria-button": "npm:2.2.19" + "@heroui/use-aria-modal-overlay": "npm:2.2.18" + "@heroui/use-disclosure": "npm:2.2.16" + "@heroui/use-draggable": "npm:2.1.17" + "@heroui/use-viewport-size": "npm:2.0.1" + "@react-aria/dialog": "npm:3.5.29" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/overlays": "npm:3.29.0" + "@react-stately/overlays": "npm:3.6.19" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/7792c9455a46ce3c27a2c3936655e881c74a052b35645dea62cc43473d1699ab941a072fd1d8985e18ead002800781efc2b00c9bdaadd0edf9f56aaed59b48e5 + languageName: node + linkType: hard + +"@heroui/navbar@npm:2.2.23": + version: 2.2.23 + resolution: "@heroui/navbar@npm:2.2.23" + dependencies: + "@heroui/dom-animation": "npm:2.1.10" + "@heroui/framer-utils": "npm:2.1.21" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-resize": "npm:2.1.8" + "@heroui/use-scroll-position": "npm:2.1.8" + "@react-aria/button": "npm:3.14.1" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/overlays": "npm:3.29.0" + "@react-stately/toggle": "npm:3.9.1" + "@react-stately/utils": "npm:3.10.8" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/5bc66029cb081151ccbd97081665dcbae43e31b4b04918f4e506df869d3254495b110ca04b3880fedd25e4eb55cd2ea6b4efb4ce309876bc8170226e69465724 + languageName: node + linkType: hard + +"@heroui/number-input@npm:2.0.16": + version: 2.0.16 + resolution: "@heroui/number-input@npm:2.0.16" + dependencies: + "@heroui/button": "npm:2.2.25" + "@heroui/form": "npm:2.1.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/i18n": "npm:3.12.12" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/numberfield": "npm:3.12.1" + "@react-stately/numberfield": "npm:3.10.1" + "@react-types/button": "npm:3.14.0" + "@react-types/numberfield": "npm:3.8.14" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.19" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/5cbbba5c96cc4816ca60f8585909733b860d46ff21f6e9f615558c1644ecc4f63312dc40e197c2ec6de8640bfab957bc8174a760bdf1d619cb9205664740132d + languageName: node + linkType: hard + +"@heroui/pagination@npm:2.2.23": + version: 2.2.23 + resolution: "@heroui/pagination@npm:2.2.23" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-intersection-observer": "npm:2.2.14" + "@heroui/use-pagination": "npm:2.2.17" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/i18n": "npm:3.12.12" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/utils": "npm:3.30.1" + scroll-into-view-if-needed: "npm:3.0.10" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/af007cfd586061572f7886a8039c14fb2455f3f022013d972457171b1adfdd1ba9d2a1c78e81b5a92faf7e47cb8a78484eebd76595bce9a18cbc6f09f234a3d4 + languageName: node + linkType: hard + +"@heroui/popover@npm:2.3.25": + version: 2.3.25 + resolution: "@heroui/popover@npm:2.3.25" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/button": "npm:2.2.25" + "@heroui/dom-animation": "npm:2.1.10" + "@heroui/framer-utils": "npm:2.1.21" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-aria-button": "npm:2.2.19" + "@heroui/use-aria-overlay": "npm:2.0.3" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + "@react-aria/dialog": "npm:3.5.29" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/overlays": "npm:3.29.0" + "@react-stately/overlays": "npm:3.6.19" + "@react-types/overlays": "npm:3.9.1" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/25e1eb95f6fa9637a4540b786250e38283698e60fe56db0ce445841d805269f3e84fde65828b59c82e329fdc08dd3528fba732948cfa7ab433f80ddb93dcc23b + languageName: node + linkType: hard + +"@heroui/progress@npm:2.2.21": + version: 2.2.21 + resolution: "@heroui/progress@npm:2.2.21" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-is-mounted": "npm:2.1.8" + "@react-aria/progress": "npm:3.4.26" + "@react-types/progress": "npm:3.5.15" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/4895fcc20c71087125d11c2a94613b7b549d086ad1158ba186b1976637a5b0fe0385480264b23f56d5d1c7fffcd5d17e9b4e8892268940bbd1499c7b1ea1a40b + languageName: node + linkType: hard + +"@heroui/radio@npm:2.3.25": + version: 2.3.25 + resolution: "@heroui/radio@npm:2.3.25" + dependencies: + "@heroui/form": "npm:2.1.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/radio": "npm:3.12.1" + "@react-aria/visually-hidden": "npm:3.8.27" + "@react-stately/radio": "npm:3.11.1" + "@react-types/radio": "npm:3.9.1" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/1fbb0405a5622ecc82a70cc54103d29f86790b410b2ca525e9936403dd801156c6503c7e176f33ae85eb2a6b8701f63930a1f952e03a4a7dad2a102a95e95cf7 + languageName: node + linkType: hard + +"@heroui/react-rsc-utils@npm:2.1.9": + version: 2.1.9 + resolution: "@heroui/react-rsc-utils@npm:2.1.9" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/b3b400c4ae701a89d9bd7301d41f49861eb2cf891dd1b6ce5f9b31260197beb9ac947fa434ec26d91d4214f88e1c049c84a0d50846530081de0dd81a01cfdcb2 + languageName: node + linkType: hard + +"@heroui/react-utils@npm:2.1.13": + version: 2.1.13 + resolution: "@heroui/react-utils@npm:2.1.13" + dependencies: + "@heroui/react-rsc-utils": "npm:2.1.9" + "@heroui/shared-utils": "npm:2.1.11" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/41154da9d82f2d2b9f275c7a7cb146f88362690d34813a96ee7d88ff970b15e0db9b845cb8a56c7021d4ae19a7402f4193f400be1a4ccb3a4ce8bc1d1f9bf7b8 + languageName: node + linkType: hard + +"@heroui/react@npm:^2.8.3": + version: 2.8.3 + resolution: "@heroui/react@npm:2.8.3" + dependencies: + "@heroui/accordion": "npm:2.2.22" + "@heroui/alert": "npm:2.2.25" + "@heroui/autocomplete": "npm:2.3.27" + "@heroui/avatar": "npm:2.2.21" + "@heroui/badge": "npm:2.2.16" + "@heroui/breadcrumbs": "npm:2.2.21" + "@heroui/button": "npm:2.2.25" + "@heroui/calendar": "npm:2.2.25" + "@heroui/card": "npm:2.2.24" + "@heroui/checkbox": "npm:2.3.25" + "@heroui/chip": "npm:2.2.21" + "@heroui/code": "npm:2.2.19" + "@heroui/date-input": "npm:2.3.25" + "@heroui/date-picker": "npm:2.3.26" + "@heroui/divider": "npm:2.2.18" + "@heroui/drawer": "npm:2.2.22" + "@heroui/dropdown": "npm:2.3.25" + "@heroui/form": "npm:2.1.25" + "@heroui/framer-utils": "npm:2.1.21" + "@heroui/image": "npm:2.2.16" + "@heroui/input": "npm:2.4.26" + "@heroui/input-otp": "npm:2.1.25" + "@heroui/kbd": "npm:2.2.20" + "@heroui/link": "npm:2.2.22" + "@heroui/listbox": "npm:2.3.24" + "@heroui/menu": "npm:2.2.24" + "@heroui/modal": "npm:2.2.22" + "@heroui/navbar": "npm:2.2.23" + "@heroui/number-input": "npm:2.0.16" + "@heroui/pagination": "npm:2.2.23" + "@heroui/popover": "npm:2.3.25" + "@heroui/progress": "npm:2.2.21" + "@heroui/radio": "npm:2.3.25" + "@heroui/ripple": "npm:2.2.19" + "@heroui/scroll-shadow": "npm:2.3.17" + "@heroui/select": "npm:2.4.26" + "@heroui/skeleton": "npm:2.2.16" + "@heroui/slider": "npm:2.4.22" + "@heroui/snippet": "npm:2.2.26" + "@heroui/spacer": "npm:2.2.19" + "@heroui/spinner": "npm:2.2.22" + "@heroui/switch": "npm:2.2.23" + "@heroui/system": "npm:2.4.21" + "@heroui/table": "npm:2.2.25" + "@heroui/tabs": "npm:2.2.22" + "@heroui/theme": "npm:2.4.21" + "@heroui/toast": "npm:2.0.15" + "@heroui/tooltip": "npm:2.2.22" + "@heroui/user": "npm:2.2.21" + "@react-aria/visually-hidden": "npm:3.8.27" + peerDependencies: + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/96f46e29e38bbd1b3182c016f20508cf17e0ef4b6301547375eb6fb4f69242d631a802df65053d464cc88f88079f5c8c17733cfc5b029a5561cc37961e94a2d2 + languageName: node + linkType: hard + +"@heroui/ripple@npm:2.2.19": + version: 2.2.19 + resolution: "@heroui/ripple@npm:2.2.19" + dependencies: + "@heroui/dom-animation": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/9d1da41a6147fed07f01016036aab649915772f12f8293aa97c9ea419a70854b88c66a72622ee85a61fd33eb91a509a71363f9055719216c00307a7691796626 + languageName: node + linkType: hard + +"@heroui/scroll-shadow@npm:2.3.17": + version: 2.3.17 + resolution: "@heroui/scroll-shadow@npm:2.3.17" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-data-scroll-overflow": "npm:2.2.12" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/6a8386e69ef985a55277948ee7ed10115649ad162d7d9d0c44cf4d4db2eccc05e3d4cbb4c68688778f7ca3fe0e275ddae861b40451a24587c7e8f6b1c5e65426 + languageName: node + linkType: hard + +"@heroui/select@npm:2.4.26": + version: 2.4.26 + resolution: "@heroui/select@npm:2.4.26" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/form": "npm:2.1.25" + "@heroui/listbox": "npm:2.3.24" + "@heroui/popover": "npm:2.3.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/scroll-shadow": "npm:2.3.17" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/spinner": "npm:2.2.22" + "@heroui/use-aria-button": "npm:2.2.19" + "@heroui/use-aria-multiselect": "npm:2.4.18" + "@heroui/use-form-reset": "npm:2.0.1" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/form": "npm:3.1.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/overlays": "npm:3.29.0" + "@react-aria/visually-hidden": "npm:3.8.27" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/19d77fd4cd233a4411069b6561d1f2c995a86dd56e51f3067d165f829132b90174fd26afad0555ce0beb8ac58227e69e9deeff1c0019ee93f6dc73c2b9cc8a2c + languageName: node + linkType: hard + +"@heroui/shared-icons@npm:2.1.10": + version: 2.1.10 + resolution: "@heroui/shared-icons@npm:2.1.10" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/69525f7e85364bc202981ca2d3e8c321435bf153b14b158577bc55e61c41be6e1962b951c61a1aba6b6adf7954ddd712f2330e5846612179520387cd045c9878 + languageName: node + linkType: hard + +"@heroui/shared-utils@npm:2.1.11": + version: 2.1.11 + resolution: "@heroui/shared-utils@npm:2.1.11" + checksum: 10c0/572b4a02d979ce438fe43967abfa0cded98558445ef888d47dc85d1c0d7b7146b798027258ce6549d81bed009424d0522110fd6ed774ed6279e252f9c3845e43 + languageName: node + linkType: hard + +"@heroui/skeleton@npm:2.2.16": + version: 2.2.16 + resolution: "@heroui/skeleton@npm:2.2.16" + dependencies: + "@heroui/shared-utils": "npm:2.1.11" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/b54907eba33661481739264695cf96d796f2b4114cf511ee5bbadddaacd1c6bdd8db262e7c13c0a2944d969bef57e5e20ee64157e3a4090dfb00f30da89c5ec0 + languageName: node + linkType: hard + +"@heroui/slider@npm:2.4.22": + version: 2.4.22 + resolution: "@heroui/slider@npm:2.4.22" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/tooltip": "npm:2.2.22" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/i18n": "npm:3.12.12" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/slider": "npm:3.8.1" + "@react-aria/visually-hidden": "npm:3.8.27" + "@react-stately/slider": "npm:3.7.1" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.19" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/5e81039ef43e14aa9d5492bf5b9df93426a8b1745a840968916759db936e5262e99c1f7c670d6349783c2b1d08f14d3b958135e635b3fc13a73c4f4e84f4fe4a + languageName: node + linkType: hard + +"@heroui/snippet@npm:2.2.26": + version: 2.2.26 + resolution: "@heroui/snippet@npm:2.2.26" + dependencies: + "@heroui/button": "npm:2.2.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/tooltip": "npm:2.2.22" + "@heroui/use-clipboard": "npm:2.1.9" + "@react-aria/focus": "npm:3.21.1" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/12b8e3861b70d8b792a9ba9cb7ef72f4bbd8a244065408a74538008283e323eeb7d083e2ab9c5d68d26e87f75446a018d4396a16a6a2d43ffc404b550779f57b + languageName: node + linkType: hard + +"@heroui/spacer@npm:2.2.19": + version: 2.2.19 + resolution: "@heroui/spacer@npm:2.2.19" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/system-rsc": "npm:2.3.18" + peerDependencies: + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/819ba8fa3789a22533a395cd0bba032f7eba19ebf5c3591ca87a403fddfd3cce4ab67f4c509e3d61b87e0812a9f8abc860ff7afd7c46b24dc4afcb8e14fa90d5 + languageName: node + linkType: hard + +"@heroui/spinner@npm:2.2.22": + version: 2.2.22 + resolution: "@heroui/spinner@npm:2.2.22" + dependencies: + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/system": "npm:2.4.21" + "@heroui/system-rsc": "npm:2.3.18" + peerDependencies: + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/0537f75e652ad797a5091af0ca24e3eff723a90dcf7d3badb3044cf1a2123abf6cd2eeaf45adca6d20aca035f14f5661741fc693c2d6bb5874cfa7cee54f05ac + languageName: node + linkType: hard + +"@heroui/switch@npm:2.2.23": + version: 2.2.23 + resolution: "@heroui/switch@npm:2.2.23" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/switch": "npm:3.7.7" + "@react-aria/visually-hidden": "npm:3.8.27" + "@react-stately/toggle": "npm:3.9.1" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/36494776a51f064731afa42d57449d3dc5a36238cdad1aa8b5bd40d7b89fc126f3b7fbe9065d0acc5e7d0bc5568f5ece5f59965b648396b5fee74b24ed84d47c + languageName: node + linkType: hard + +"@heroui/system-rsc@npm:2.3.18": + version: 2.3.18 + resolution: "@heroui/system-rsc@npm:2.3.18" + dependencies: + "@react-types/shared": "npm:3.32.0" + clsx: "npm:^1.2.1" + peerDependencies: + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/4e45d84ca16940081ee2c828885ae87d1f8a8818930546169ff264637d9e1ca53a24e7bb135b5e8a53fc15fb1d3c006c0a7b361fbcb51efacf058df671454c86 + languageName: node + linkType: hard + +"@heroui/system@npm:2.4.21": + version: 2.4.21 + resolution: "@heroui/system@npm:2.4.21" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/system-rsc": "npm:2.3.18" + "@react-aria/i18n": "npm:3.12.12" + "@react-aria/overlays": "npm:3.29.0" + "@react-aria/utils": "npm:3.30.1" + peerDependencies: + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/8419c946204968d0e85253654ba7c9b93e5b8ae60198a1b19b34367757f402a4f1c414c41849c6f48a019690ce701f75f867bfa679e5a57fac34ba4aa21b9d06 + languageName: node + linkType: hard + +"@heroui/table@npm:2.2.25": + version: 2.2.25 + resolution: "@heroui/table@npm:2.2.25" + dependencies: + "@heroui/checkbox": "npm:2.3.25" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/spacer": "npm:2.2.19" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/table": "npm:3.17.7" + "@react-aria/visually-hidden": "npm:3.8.27" + "@react-stately/table": "npm:3.15.0" + "@react-stately/virtualizer": "npm:4.4.3" + "@react-types/grid": "npm:3.3.5" + "@react-types/table": "npm:3.13.3" + "@tanstack/react-virtual": "npm:3.11.3" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/cb6e5f7f37a1de38a1b797e129a23d41775e747405796e4ecd5b5989752b819555138f76418c7bc039efc0d98b378e50c14c68be79d1192383aaf850b7b11b08 + languageName: node + linkType: hard + +"@heroui/tabs@npm:2.2.22": + version: 2.2.22 + resolution: "@heroui/tabs@npm:2.2.22" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-is-mounted": "npm:2.1.8" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/tabs": "npm:3.10.7" + "@react-stately/tabs": "npm:3.8.5" + "@react-types/shared": "npm:3.32.0" + scroll-into-view-if-needed: "npm:3.0.10" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/2b6e164e2e9ed17e61faa13913f00bd85ede5ba2cc13f42786f224270c2d694a98832201df28296bd792669271226162f891502b5a39f423d5bcba584426a9a9 + languageName: node + linkType: hard + +"@heroui/theme@npm:2.4.21": + version: 2.4.21 + resolution: "@heroui/theme@npm:2.4.21" + dependencies: + "@heroui/shared-utils": "npm:2.1.11" + clsx: "npm:^1.2.1" + color: "npm:^4.2.3" + color2k: "npm:^2.0.3" + deepmerge: "npm:4.3.1" + flat: "npm:^5.0.2" + tailwind-merge: "npm:3.3.1" + tailwind-variants: "npm:3.1.0" + peerDependencies: + tailwindcss: ">=4.0.0" + checksum: 10c0/d0263bdf563fb22a4cfd557875b06c01aa3f0b1521d58075eae9304e842f53088d6cfe3bba905df12c2bb1928ca79420c916f77376bbb55d4ee6c40e5a867237 + languageName: node + linkType: hard + +"@heroui/toast@npm:2.0.15": + version: 2.0.15 + resolution: "@heroui/toast@npm:2.0.15" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-icons": "npm:2.1.10" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/spinner": "npm:2.2.22" + "@heroui/use-is-mobile": "npm:2.2.12" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/toast": "npm:3.0.7" + "@react-stately/toast": "npm:3.1.2" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/f2b30d32cddf69ca1a52ce124d5f57db8dc25b1a9332a4bcafbc115c5c0de1285fdc136c862d40780da8926993891bb741e8a6bc72d8938d3c3f9d0ed2eea14a + languageName: node + linkType: hard + +"@heroui/tooltip@npm:2.2.22": + version: 2.2.22 + resolution: "@heroui/tooltip@npm:2.2.22" + dependencies: + "@heroui/aria-utils": "npm:2.2.22" + "@heroui/dom-animation": "npm:2.1.10" + "@heroui/framer-utils": "npm:2.1.21" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@heroui/use-aria-overlay": "npm:2.0.3" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + "@react-aria/overlays": "npm:3.29.0" + "@react-aria/tooltip": "npm:3.8.7" + "@react-stately/tooltip": "npm:3.5.7" + "@react-types/overlays": "npm:3.9.1" + "@react-types/tooltip": "npm:3.4.20" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + framer-motion: ">=11.5.6 || >=12.0.0-alpha.1" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/838d0fea7e05802800ad1bac9e3801cb14089e59e8d9243b72cd5c79628388dbd4a159366f8e9da8794cd778fd23664f0ee746ec9fea1a4801fcb7f17cb8ab53 + languageName: node + linkType: hard + +"@heroui/use-aria-accordion@npm:2.2.17": + version: 2.2.17 + resolution: "@heroui/use-aria-accordion@npm:2.2.17" + dependencies: + "@react-aria/button": "npm:3.14.1" + "@react-aria/focus": "npm:3.21.1" + "@react-aria/selection": "npm:3.25.1" + "@react-stately/tree": "npm:3.9.2" + "@react-types/accordion": "npm:3.0.0-alpha.26" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/80da8821f43165e2aaea77569b140eeca930fa57dce481e4861ddd10ffac9991bda30b7643aa4223c8e9a241e8bb78aa60c418438e989b7511ece374f89ae427 + languageName: node + linkType: hard + +"@heroui/use-aria-button@npm:2.2.19": + version: 2.2.19 + resolution: "@heroui/use-aria-button@npm:2.2.19" + dependencies: + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/utils": "npm:3.30.1" + "@react-types/button": "npm:3.14.0" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/8baee9398e5dcd24aa7bbead259757beb81afc91b0ab11853528c13f397fb7eaec4b0396335b6d39340acd8bfc885d861f31a4bd8d20368e661ce917e1db1fb1 + languageName: node + linkType: hard + +"@heroui/use-aria-link@npm:2.2.20": + version: 2.2.20 + resolution: "@heroui/use-aria-link@npm:2.2.20" + dependencies: + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/utils": "npm:3.30.1" + "@react-types/link": "npm:3.6.4" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/c64528f2269056d475ae041bfac49905f31fc535cad454c96627b1a36920a8691c7fb2b079a3a5fde02bacfbf009c78db60c2f2e4e3707f31b23944344380a22 + languageName: node + linkType: hard + +"@heroui/use-aria-modal-overlay@npm:2.2.18": + version: 2.2.18 + resolution: "@heroui/use-aria-modal-overlay@npm:2.2.18" + dependencies: + "@heroui/use-aria-overlay": "npm:2.0.3" + "@react-aria/overlays": "npm:3.29.0" + "@react-aria/utils": "npm:3.30.1" + "@react-stately/overlays": "npm:3.6.19" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/06cafd540170f3db03a6c3527289f189ea12febbd395190688d8f3be77240f0e8f9686f3846dec92b8e17c74a15e2bfacba8933395e9d48bdd580c94bd2b2c3a + languageName: node + linkType: hard + +"@heroui/use-aria-multiselect@npm:2.4.18": + version: 2.4.18 + resolution: "@heroui/use-aria-multiselect@npm:2.4.18" + dependencies: + "@react-aria/i18n": "npm:3.12.12" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/label": "npm:3.7.21" + "@react-aria/listbox": "npm:3.14.8" + "@react-aria/menu": "npm:3.19.1" + "@react-aria/selection": "npm:3.25.1" + "@react-aria/utils": "npm:3.30.1" + "@react-stately/form": "npm:3.2.1" + "@react-stately/list": "npm:3.13.0" + "@react-stately/menu": "npm:3.9.7" + "@react-types/button": "npm:3.14.0" + "@react-types/overlays": "npm:3.9.1" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/899e5dec690db0630bc8743897a3170333fe516c9af82900271f41e0bf442e069a59e7acd9af9ebc9fe987bfc516479c19c34615c94529be1429cf5d8bd6d3d2 + languageName: node + linkType: hard + +"@heroui/use-aria-overlay@npm:2.0.3": + version: 2.0.3 + resolution: "@heroui/use-aria-overlay@npm:2.0.3" + dependencies: + "@react-aria/focus": "npm:3.21.1" + "@react-aria/interactions": "npm:3.25.5" + "@react-aria/overlays": "npm:3.29.0" + "@react-types/shared": "npm:3.32.0" + peerDependencies: + react: ">=18" + react-dom: ">=18" + checksum: 10c0/a9e16f3d2a71ab2b73440ce648d32ce9b3fc2cf7f9be9db7e8a04f6bc4f1f242f1640e6abefb5c0ad6cb14277da947fe8ad1d9864660fb27de21ae7a35da601a + languageName: node + linkType: hard + +"@heroui/use-callback-ref@npm:2.1.8": + version: 2.1.8 + resolution: "@heroui/use-callback-ref@npm:2.1.8" + dependencies: + "@heroui/use-safe-layout-effect": "npm:2.1.8" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/a1ab39bed0b9f58e890b9f3c6f9a58049d13510c618f8685ebceb60655a29969babe09c44a4480c086b69c5014058688801319f8a534197a71f000da6e05f440 + languageName: node + linkType: hard + +"@heroui/use-clipboard@npm:2.1.9": + version: 2.1.9 + resolution: "@heroui/use-clipboard@npm:2.1.9" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/82c5f1573891fe37b94affcfce4dbd24cce01089e854c7d6414a7d45e979459d17d950068ad052926f4fc2e38ed3b8404a33bc03403ac5895594bae5ef8f50a4 + languageName: node + linkType: hard + +"@heroui/use-data-scroll-overflow@npm:2.2.12": + version: 2.2.12 + resolution: "@heroui/use-data-scroll-overflow@npm:2.2.12" + dependencies: + "@heroui/shared-utils": "npm:2.1.11" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/6e02546f08437f3fe4afdb6d4103b2679fd6c9cccea2e560fab5e473456fb276e51e7cb04e2e7d245fe9b6d176b02f2ba700ed4f3bfdd1895e6ad4c4898e3faf + languageName: node + linkType: hard + +"@heroui/use-disclosure@npm:2.2.16": + version: 2.2.16 + resolution: "@heroui/use-disclosure@npm:2.2.16" + dependencies: + "@heroui/use-callback-ref": "npm:2.1.8" + "@react-aria/utils": "npm:3.30.1" + "@react-stately/utils": "npm:3.10.8" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/70c49cb48b19d3a02e33630082aaeac29763f466c13c9c7162aa6ac63ba46e46d2c08e3a297653c82d76317db743a747f0e0880e521b76501d459eca6a927599 + languageName: node + linkType: hard + +"@heroui/use-draggable@npm:2.1.17": + version: 2.1.17 + resolution: "@heroui/use-draggable@npm:2.1.17" + dependencies: + "@react-aria/interactions": "npm:3.25.5" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/5e15926980da5857ca986aa8ad4de1c508cc88b46fbec20b06da01c83a871ffc1936e65cef9905f2c9c316a2d3c0eae3ed06a38214fe91dee6462e25ba616d50 + languageName: node + linkType: hard + +"@heroui/use-form-reset@npm:2.0.1": + version: 2.0.1 + resolution: "@heroui/use-form-reset@npm:2.0.1" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/6c8ae0171b86cdf64cc6450005bdda9b0a944ba705aef0a2e42c9ca9f605353caa20a157ad445fef5f8402d25d140e31acd8a4e8fd147a7e802740a83577f996 + languageName: node + linkType: hard + +"@heroui/use-image@npm:2.1.12": + version: 2.1.12 + resolution: "@heroui/use-image@npm:2.1.12" + dependencies: + "@heroui/react-utils": "npm:2.1.13" + "@heroui/use-safe-layout-effect": "npm:2.1.8" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/6b68282d83a988dfeb849819358c00b6fe1e493c81c3c3b6e96725a1a4009c87befd844bde068f838d5b1135cd387591bdd2e7e700f50afcfbc3dbd554ecd040 + languageName: node + linkType: hard + +"@heroui/use-intersection-observer@npm:2.2.14": + version: 2.2.14 + resolution: "@heroui/use-intersection-observer@npm:2.2.14" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/dd291622142b93406d7faa1f881af469de2700905fb23e6d1b0f53c327c95cba6a67169f3beffb4c718a00ba0ef512e2977e2b5580c66d23ce1dd52b450bd51a + languageName: node + linkType: hard + +"@heroui/use-is-mobile@npm:2.2.12": + version: 2.2.12 + resolution: "@heroui/use-is-mobile@npm:2.2.12" + dependencies: + "@react-aria/ssr": "npm:3.9.10" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/aa8229eee8da564804d03edbaef35d6bf65425535237ba5ff12ec44890e367795b8f74a2ebd720fd1a77161758e34817d9281bfcbfb37e7fa54e699f12ce6715 + languageName: node + linkType: hard + +"@heroui/use-is-mounted@npm:2.1.8": + version: 2.1.8 + resolution: "@heroui/use-is-mounted@npm:2.1.8" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/95a0cb6f180961ccea35b27049ea2f8e0da055a9085abcf632cfdc52aa2d549e5adbceb01f51116be628e6f35b46f16685a56e2b978fc9e1a6e9f4aa3f099800 + languageName: node + linkType: hard + +"@heroui/use-measure@npm:2.1.8": + version: 2.1.8 + resolution: "@heroui/use-measure@npm:2.1.8" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/4e0f86c51718c5cfe8eccd8160e4a0fbeb3315b29643c1364eec09d6a78fb8d2dd865b192c3433dd25696b5b38d085c927c2d2c8f744b02beb854ec70195e8f5 + languageName: node + linkType: hard + +"@heroui/use-pagination@npm:2.2.17": + version: 2.2.17 + resolution: "@heroui/use-pagination@npm:2.2.17" + dependencies: + "@heroui/shared-utils": "npm:2.1.11" + "@react-aria/i18n": "npm:3.12.12" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/38fed5e5ba15a1fba4acb6d287ec669606627361a8f0fa797c42b651454eedaa162ac6443fe76b2e52cc72fa543c1044d2c0b06572a1dd124494263b3f01ddea + languageName: node + linkType: hard + +"@heroui/use-resize@npm:2.1.8": + version: 2.1.8 + resolution: "@heroui/use-resize@npm:2.1.8" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/5fc91c50ef344246e668465189ce182c62089d1b46ea5c2c7fa5c9cc85dbd53441e9ceb02cea87da0955f93c56567a0ea80b02d835c255ed04da813159b5d393 + languageName: node + linkType: hard + +"@heroui/use-safe-layout-effect@npm:2.1.8": + version: 2.1.8 + resolution: "@heroui/use-safe-layout-effect@npm:2.1.8" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/f29195426b0941f9f5c8a91840121e753a9927fa8ae3675249751c7911ac8aa1caf1426cbf2ae06a3afea18509ee87669c2d0030ec9c59e34e4bde60af097fb1 + languageName: node + linkType: hard + +"@heroui/use-scroll-position@npm:2.1.8": + version: 2.1.8 + resolution: "@heroui/use-scroll-position@npm:2.1.8" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/dd49b8151fd771496cf228205325e3647b265a0862676bf5c01f8f0ca029e120a99eefd7da534e6e92a9a2d6e18e0270a26df43587cbfd303902b93c03f5ff15 + languageName: node + linkType: hard + +"@heroui/use-viewport-size@npm:2.0.1": + version: 2.0.1 + resolution: "@heroui/use-viewport-size@npm:2.0.1" + peerDependencies: + react: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/c394ebb862e5ce0124a5b4c74c5a191d390a0bdc48328815700b2d6a48c641d02737ac653c4987e5d753f7810482a7e1253bb83f4a223b7e967e336c1918ef90 + languageName: node + linkType: hard + +"@heroui/user@npm:2.2.21": + version: 2.2.21 + resolution: "@heroui/user@npm:2.2.21" + dependencies: + "@heroui/avatar": "npm:2.2.21" + "@heroui/react-utils": "npm:2.1.13" + "@heroui/shared-utils": "npm:2.1.11" + "@react-aria/focus": "npm:3.21.1" + peerDependencies: + "@heroui/system": ">=2.4.18" + "@heroui/theme": ">=2.4.17" + react: ">=18 || >=19.0.0-rc.0" + react-dom: ">=18 || >=19.0.0-rc.0" + checksum: 10c0/2d627202909d9796d903f5b953049f4a764f6e3717a7c9b47106d0a85086a00a01d90b7b021b8e0ceb460cd7351bfd93cb0fe7094e8c90213116a543cf97b46c + languageName: node + linkType: hard + "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" @@ -4088,6 +5591,43 @@ __metadata: languageName: node linkType: hard +"@internationalized/date@npm:3.9.0, @internationalized/date@npm:^3.9.0": + version: 3.9.0 + resolution: "@internationalized/date@npm:3.9.0" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/8f2bf54c407aa95ab9922759c27f19bd9185bc6c4bde936fb5cc7a99bf764de8483102a61d53afa0598eefa11711617d3c05a65e8a5cb8bfac10c2c0800e488a + languageName: node + linkType: hard + +"@internationalized/message@npm:^3.1.8": + version: 3.1.8 + resolution: "@internationalized/message@npm:3.1.8" + dependencies: + "@swc/helpers": "npm:^0.5.0" + intl-messageformat: "npm:^10.1.0" + checksum: 10c0/91019d66d62ab6733fa46ed495fac6878bcc98f082e51be9fd0e4b5836a4df0f488c8dcd218f2e566c713e59cc68ef3aa5fc45e5b9bca8cca458d0990765b77a + languageName: node + linkType: hard + +"@internationalized/number@npm:^3.6.5": + version: 3.6.5 + resolution: "@internationalized/number@npm:3.6.5" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/f87d710863a8dbf057aac311193c82f3c42e862abdd99e5b71034f1022926036552620eab5dd00c23e975f28b9e41e830cb342ba0264436749d9cdc5ae031d44 + languageName: node + linkType: hard + +"@internationalized/string@npm:^3.2.7": + version: 3.2.7 + resolution: "@internationalized/string@npm:3.2.7" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/8f7bea379ce047026ef20d535aa1bd7612a5e5a5108d1e514965696a46bce34e38111411943b688d00dae2c81eae7779ae18343961310696d32ebb463a19b94a + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -4128,6 +5668,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/remapping@npm:^2.3.4": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" @@ -4142,6 +5692,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28": version: 0.3.29 resolution: "@jridgewell/trace-mapping@npm:0.3.29" @@ -5223,7 +6780,7 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^0.2.4": +"@napi-rs/wasm-runtime@npm:^0.2.12, @napi-rs/wasm-runtime@npm:^0.2.4": version: 0.2.12 resolution: "@napi-rs/wasm-runtime@npm:0.2.12" dependencies: @@ -5577,150 +7134,6 @@ __metadata: languageName: node linkType: hard -"@parcel/watcher-android-arm64@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-android-arm64@npm:2.5.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@parcel/watcher-darwin-arm64@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-darwin-arm64@npm:2.5.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@parcel/watcher-darwin-x64@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-darwin-x64@npm:2.5.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@parcel/watcher-freebsd-x64@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-freebsd-x64@npm:2.5.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@parcel/watcher-linux-arm-glibc@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-linux-arm-glibc@npm:2.5.1" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - -"@parcel/watcher-linux-arm-musl@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-linux-arm-musl@npm:2.5.1" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - -"@parcel/watcher-linux-arm64-glibc@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.5.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@parcel/watcher-linux-arm64-musl@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-linux-arm64-musl@npm:2.5.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@parcel/watcher-linux-x64-glibc@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-linux-x64-glibc@npm:2.5.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@parcel/watcher-linux-x64-musl@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-linux-x64-musl@npm:2.5.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@parcel/watcher-win32-arm64@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-win32-arm64@npm:2.5.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@parcel/watcher-win32-ia32@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-win32-ia32@npm:2.5.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@parcel/watcher-win32-x64@npm:2.5.1": - version: 2.5.1 - resolution: "@parcel/watcher-win32-x64@npm:2.5.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@parcel/watcher@npm:^2.4.1": - version: 2.5.1 - resolution: "@parcel/watcher@npm:2.5.1" - dependencies: - "@parcel/watcher-android-arm64": "npm:2.5.1" - "@parcel/watcher-darwin-arm64": "npm:2.5.1" - "@parcel/watcher-darwin-x64": "npm:2.5.1" - "@parcel/watcher-freebsd-x64": "npm:2.5.1" - "@parcel/watcher-linux-arm-glibc": "npm:2.5.1" - "@parcel/watcher-linux-arm-musl": "npm:2.5.1" - "@parcel/watcher-linux-arm64-glibc": "npm:2.5.1" - "@parcel/watcher-linux-arm64-musl": "npm:2.5.1" - "@parcel/watcher-linux-x64-glibc": "npm:2.5.1" - "@parcel/watcher-linux-x64-musl": "npm:2.5.1" - "@parcel/watcher-win32-arm64": "npm:2.5.1" - "@parcel/watcher-win32-ia32": "npm:2.5.1" - "@parcel/watcher-win32-x64": "npm:2.5.1" - detect-libc: "npm:^1.0.3" - is-glob: "npm:^4.0.3" - micromatch: "npm:^4.0.5" - node-addon-api: "npm:^7.0.0" - node-gyp: "npm:latest" - dependenciesMeta: - "@parcel/watcher-android-arm64": - optional: true - "@parcel/watcher-darwin-arm64": - optional: true - "@parcel/watcher-darwin-x64": - optional: true - "@parcel/watcher-freebsd-x64": - optional: true - "@parcel/watcher-linux-arm-glibc": - optional: true - "@parcel/watcher-linux-arm-musl": - optional: true - "@parcel/watcher-linux-arm64-glibc": - optional: true - "@parcel/watcher-linux-arm64-musl": - optional: true - "@parcel/watcher-linux-x64-glibc": - optional: true - "@parcel/watcher-linux-x64-musl": - optional: true - "@parcel/watcher-win32-arm64": - optional: true - "@parcel/watcher-win32-ia32": - optional: true - "@parcel/watcher-win32-x64": - optional: true - checksum: 10c0/8f35073d0c0b34a63d4c8d2213482f0ebc6a25de7b2cdd415d19cb929964a793cb285b68d1d50bfb732b070b3c82a2fdb4eb9c250eab709a1cd9d63345455a82 - languageName: node - linkType: hard - "@pdf-lib/standard-fonts@npm:^1.0.0": version: 1.0.0 resolution: "@pdf-lib/standard-fonts@npm:1.0.0" @@ -5991,6 +7404,1348 @@ __metadata: languageName: node linkType: hard +"@react-aria/breadcrumbs@npm:3.5.28": + version: 3.5.28 + resolution: "@react-aria/breadcrumbs@npm:3.5.28" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/link": "npm:^3.8.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/breadcrumbs": "npm:^3.7.16" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ce0948f36a4944b59788d10d34a1cda81ba8d48f9bef9959c4c0dd1e05a24c86f9d0c014b398b804fbe50909334e86801a20f4e559a7faa69a1252881653d506 + languageName: node + linkType: hard + +"@react-aria/button@npm:3.14.1": + version: 3.14.1 + resolution: "@react-aria/button@npm:3.14.1" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/toolbar": "npm:3.0.0-beta.20" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/toggle": "npm:^3.9.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/fde6d70cbc95966094b513de5d2959143e7f027ee88d53bbcca638b0be7c355e79206be1cedce122a890dac74cc49695a9cadf4fba5cc91af37d2a6dfc97176f + languageName: node + linkType: hard + +"@react-aria/calendar@npm:3.9.1": + version: 3.9.1 + resolution: "@react-aria/calendar@npm:3.9.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/calendar": "npm:^3.8.4" + "@react-types/button": "npm:^3.14.0" + "@react-types/calendar": "npm:^3.7.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/0df71500322aad5cded31f1728947cdd4affc4b1199d6b443a0e4132b6c0c0ddc241dc85624e35d6fed658773088d6679e807e2bf3672d4b5891c50e0a0d73a0 + languageName: node + linkType: hard + +"@react-aria/checkbox@npm:3.16.1": + version: 3.16.1 + resolution: "@react-aria/checkbox@npm:3.16.1" + dependencies: + "@react-aria/form": "npm:^3.1.1" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/toggle": "npm:^3.12.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/checkbox": "npm:^3.7.1" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/toggle": "npm:^3.9.1" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ab7d10874bd0b0608b9fb8e47985ff5c6bcb810b1ea09ba187a0e8b0840c1d9a03b5d116308698efca84b9b2483517f50d2113d5920cd377c45bebd8e0902d9b + languageName: node + linkType: hard + +"@react-aria/combobox@npm:3.13.1": + version: 3.13.1 + resolution: "@react-aria/combobox@npm:3.13.1" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/listbox": "npm:^3.14.8" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/menu": "npm:^3.19.1" + "@react-aria/overlays": "npm:^3.29.0" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/combobox": "npm:^3.11.1" + "@react-stately/form": "npm:^3.2.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/combobox": "npm:^3.13.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/13f835503635b24fcc6c227501fe668946db3484c2d5e91b8bf90b22089956f137a19b8e994ee06520e2a6cc1c133b4dd2a18ccd21ba6fa5c8ba95e014282ca3 + languageName: node + linkType: hard + +"@react-aria/datepicker@npm:3.15.1": + version: 3.15.1 + resolution: "@react-aria/datepicker@npm:3.15.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@internationalized/number": "npm:^3.6.5" + "@internationalized/string": "npm:^3.2.7" + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/form": "npm:^3.1.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/spinbutton": "npm:^3.6.18" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/datepicker": "npm:^3.15.1" + "@react-stately/form": "npm:^3.2.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/calendar": "npm:^3.7.4" + "@react-types/datepicker": "npm:^3.13.1" + "@react-types/dialog": "npm:^3.5.21" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/36bed73eb30ac3a24ae5bb3866dc2b25f9362be45ae3dca0cc30f122dd8787ee8aa2e3279846abee26940b68e471466db9e3acd321a39f59c046f8abda7681b1 + languageName: node + linkType: hard + +"@react-aria/dialog@npm:3.5.29": + version: 3.5.29 + resolution: "@react-aria/dialog@npm:3.5.29" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/overlays": "npm:^3.29.0" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/dialog": "npm:^3.5.21" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/7f982b17a9fcc21e5bd5146b913df9c5f9eb017cd8a1c6ce6baa47ccf0cec79cc7f4301b090ebaaa2d83820d354ae8bf1651c7fdd1ef085677e147b9102393b1 + languageName: node + linkType: hard + +"@react-aria/focus@npm:3.21.1, @react-aria/focus@npm:^3.21.1": + version: 3.21.1 + resolution: "@react-aria/focus@npm:3.21.1" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9271132d9b215f916a19fa72a8a15eb68dc15a73ed8f9fc41096166c703a27336a1d908e3d55cd95de7eac234037abe3ff1fe2a33f15fc48934e9dd8cb97ff48 + languageName: node + linkType: hard + +"@react-aria/form@npm:3.1.1, @react-aria/form@npm:^3.1.1": + version: 3.1.1 + resolution: "@react-aria/form@npm:3.1.1" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/form": "npm:^3.2.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/34872e8b30e2e407311e94bc6104af360f8795eaf7c66600c0de2a7c842d5aacc65628493fde92be0b578206761d720088150b12c2b9243032795c5a0b50d3fe + languageName: node + linkType: hard + +"@react-aria/grid@npm:^3.14.4": + version: 3.14.4 + resolution: "@react-aria/grid@npm:3.14.4" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/grid": "npm:^3.11.5" + "@react-stately/selection": "npm:^3.20.5" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/f7cf1586b2c1da0b3e1e3ea66bc1b94d54329815ffba38d069c129fb3c1e724d39d3a1b37f6f7fa3dc58e6203ad3692ac35524d7b9dad926111446fc00fa4985 + languageName: node + linkType: hard + +"@react-aria/i18n@npm:3.12.12, @react-aria/i18n@npm:^3.12.12": + version: 3.12.12 + resolution: "@react-aria/i18n@npm:3.12.12" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@internationalized/message": "npm:^3.1.8" + "@internationalized/number": "npm:^3.6.5" + "@internationalized/string": "npm:^3.2.7" + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/83e1c4d0f246951ca9da6adf2e2825d50668b31f2de62a23ac04a0d9dd3e874a17e4616c72321a3fca6a99e22460f79fb15dee86637b6c7bea5c00835a076f8a + languageName: node + linkType: hard + +"@react-aria/interactions@npm:3.25.5, @react-aria/interactions@npm:^3.25.5": + version: 3.25.5 + resolution: "@react-aria/interactions@npm:3.25.5" + dependencies: + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/flags": "npm:^3.1.2" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/056875ecc08b085134cc8298d5824ed55ff11433cd240320e14f8514e517d64f02f6a95e414a5304f46488c83090e3d1c138b0cf9cbe5d6fdab4e5a4bad5d727 + languageName: node + linkType: hard + +"@react-aria/label@npm:3.7.21, @react-aria/label@npm:^3.7.21": + version: 3.7.21 + resolution: "@react-aria/label@npm:3.7.21" + dependencies: + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/34d55f423cd0ca6061453b2feee0dacc6ad70f7ddea7922615287a11283c8fc053e89e7425b2f2ca3d7e1a077b1bcedf5a2b4c6e95e8c7a203756b6703ffbd78 + languageName: node + linkType: hard + +"@react-aria/landmark@npm:^3.0.6": + version: 3.0.6 + resolution: "@react-aria/landmark@npm:3.0.6" + dependencies: + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ab5413e32d2fc21090ae39fd4414d00b37d56afec715d8715ad285d59f41f454547bf94919f386aa4c447723c1f817a0b47f4cb39c03c64b5211f4c105270453 + languageName: node + linkType: hard + +"@react-aria/link@npm:^3.8.5": + version: 3.8.5 + resolution: "@react-aria/link@npm:3.8.5" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/link": "npm:^3.6.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/cda1ac2c75f950745510bcc536ce4aab5f9f95e0310ad040070ff21ae2c42409eaab262ea4f69ad419f0044d78fcfe91e7224c8b87e779afc106dab7457e5d9a + languageName: node + linkType: hard + +"@react-aria/listbox@npm:3.14.8, @react-aria/listbox@npm:^3.14.8": + version: 3.14.8 + resolution: "@react-aria/listbox@npm:3.14.8" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/list": "npm:^3.13.0" + "@react-types/listbox": "npm:^3.7.3" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/48f64c99047a94bb272027891f8840587b7e889d5c17bf772baea28d945d21a5d8e63217fa61bf45cc21e4c70f7dbcb759d4d97761318b402ba025ff42208c60 + languageName: node + linkType: hard + +"@react-aria/live-announcer@npm:^3.4.4": + version: 3.4.4 + resolution: "@react-aria/live-announcer@npm:3.4.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/1598372e773ee8dbb2f1d2a946652384f5140ab54106416e2a182c72eaabc1b3739e624bac7aea3d95429ba16487074c782ff90db093be36dd1d4cf84f9f9a17 + languageName: node + linkType: hard + +"@react-aria/menu@npm:3.19.1": + version: 3.19.1 + resolution: "@react-aria/menu@npm:3.19.1" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/overlays": "npm:^3.29.0" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/menu": "npm:^3.9.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/tree": "npm:^3.9.2" + "@react-types/button": "npm:^3.14.0" + "@react-types/menu": "npm:^3.10.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/cab389ddfb15d02adfa2133addbf55427df07195e82bdc57dcb566689008ddbfb46d9923b4fe596f3c4f92a7472c7f963914b0ce4e8c4316059d360a036d6809 + languageName: node + linkType: hard + +"@react-aria/menu@npm:^3.19.1": + version: 3.19.2 + resolution: "@react-aria/menu@npm:3.19.2" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/overlays": "npm:^3.29.1" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/menu": "npm:^3.9.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/tree": "npm:^3.9.2" + "@react-types/button": "npm:^3.14.0" + "@react-types/menu": "npm:^3.10.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/3592ff723178ec8f98f8cfde9bb8d4626daf553c5683b88b435e3275713b9b0ff0f26e9df00d8957423f0712e61799aa4a606f9f610950ae6e9ab72ab8772ed3 + languageName: node + linkType: hard + +"@react-aria/numberfield@npm:3.12.1": + version: 3.12.1 + resolution: "@react-aria/numberfield@npm:3.12.1" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/spinbutton": "npm:^3.6.18" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/numberfield": "npm:^3.10.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/numberfield": "npm:^3.8.14" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/333f860a5c12692fb7904515950959e2b9bf175a1db5acddbbd206081ad1106ea41e46d94336704a9bf199b0fca0faf591fda79682ed59cb6fd340d0f3bb2fae + languageName: node + linkType: hard + +"@react-aria/overlays@npm:3.29.0": + version: 3.29.0 + resolution: "@react-aria/overlays@npm:3.29.0" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/visually-hidden": "npm:^3.8.27" + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/button": "npm:^3.14.0" + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/64f0bcb887b0ff8dfb320221a1751b588fb037aed70f1259ee5b9794de8d57ed254771a90854754cbe97d3e5a0f6f74cc2650733b244a6de6b63553696130402 + languageName: node + linkType: hard + +"@react-aria/overlays@npm:^3.29.0, @react-aria/overlays@npm:^3.29.1": + version: 3.29.1 + resolution: "@react-aria/overlays@npm:3.29.1" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/visually-hidden": "npm:^3.8.27" + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/button": "npm:^3.14.0" + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e69f2178cbbd30bd43373ca4dcb68edf275dae57926912c2845bd109b0ddf5820e28e8882df049ce188a42a1690ae7a31795d0be8895318b80478c61baf8af4c + languageName: node + linkType: hard + +"@react-aria/progress@npm:3.4.26": + version: 3.4.26 + resolution: "@react-aria/progress@npm:3.4.26" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/progress": "npm:^3.5.15" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1d41424898c39c8c20b3943d3572367f2d3c937a48c8d4167f4874b31e03c4e894a21314729f44cfcbf6283c95a260111152b07d5fc570d86b6bbde785f7f1bf + languageName: node + linkType: hard + +"@react-aria/radio@npm:3.12.1": + version: 3.12.1 + resolution: "@react-aria/radio@npm:3.12.1" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/form": "npm:^3.1.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/radio": "npm:^3.11.1" + "@react-types/radio": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/2c8625ce2214142c09af2f5a751a5d390dda6ef3148055973dc8ea71504e631ca0dc5e7d7202e557235c3175dad74b75a4c9440ce3de15d8f07a3b5a55571773 + languageName: node + linkType: hard + +"@react-aria/selection@npm:3.25.1, @react-aria/selection@npm:^3.25.1": + version: 3.25.1 + resolution: "@react-aria/selection@npm:3.25.1" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/selection": "npm:^3.20.5" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/7212dfc3280167c5f87256bbc580c3f05e1a8388d93ce5d66090778b67b7a3bcb49c522172a1a062c0c237204e1d85e6a9cb8ae6095725ed7f1e194ba277ed0e + languageName: node + linkType: hard + +"@react-aria/slider@npm:3.8.1": + version: 3.8.1 + resolution: "@react-aria/slider@npm:3.8.1" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/slider": "npm:^3.7.1" + "@react-types/shared": "npm:^3.32.0" + "@react-types/slider": "npm:^3.8.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1282cc395fcc531b35a94bb769d5cc462224f20fd876d96fabc432a40201eae9d01a87d6f8fdedc7382d3a1928eac9579aa9f6cc875461abd5bc8ae1c0bffd62 + languageName: node + linkType: hard + +"@react-aria/spinbutton@npm:^3.6.18": + version: 3.6.18 + resolution: "@react-aria/spinbutton@npm:3.6.18" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/c9fdd24fe563e450130bb1e3ae7f09f9fc2728120feea965be413d4b1cf10eb2790bf13783dbf8247fc241d9691d12bcb77ea88f656966092f520d22c9eb6da5 + languageName: node + linkType: hard + +"@react-aria/ssr@npm:3.9.10, @react-aria/ssr@npm:^3.9.10": + version: 3.9.10 + resolution: "@react-aria/ssr@npm:3.9.10" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/44acb4c441d9c5d65aab94aa81fd8368413cf2958ab458582296dd78f6ba4783583f2311fa986120060e5c26b54b1f01e8910ffd17e4f41ccc5fc8c357d84089 + languageName: node + linkType: hard + +"@react-aria/switch@npm:3.7.7": + version: 3.7.7 + resolution: "@react-aria/switch@npm:3.7.7" + dependencies: + "@react-aria/toggle": "npm:^3.12.1" + "@react-stately/toggle": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@react-types/switch": "npm:^3.5.14" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/386dd60efad6544e8bb03393c13d712e47aa68e3169a3d865375831e5353c8e5e849903ea51af09ae40eb1ae206df5c9b8854ce8601e81a7d21fd952bc18c8a2 + languageName: node + linkType: hard + +"@react-aria/table@npm:3.17.7": + version: 3.17.7 + resolution: "@react-aria/table@npm:3.17.7" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/grid": "npm:^3.14.4" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/visually-hidden": "npm:^3.8.27" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/flags": "npm:^3.1.2" + "@react-stately/table": "npm:^3.15.0" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@react-types/table": "npm:^3.13.3" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ee09d8827929df9be0fdf313c22518f82a7e91669c2e6bb6754f6fbd4f656366d9fa86afc290c73e827ec8fb0574bcab19b35b385e7c16d28713569e20c91b6b + languageName: node + linkType: hard + +"@react-aria/tabs@npm:3.10.7": + version: 3.10.7 + resolution: "@react-aria/tabs@npm:3.10.7" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/tabs": "npm:^3.8.5" + "@react-types/shared": "npm:^3.32.0" + "@react-types/tabs": "npm:^3.3.18" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ace9e245e0d8d9bf8a1e79a6e31a48dcc8c4604d8c3143c456a29a499eb39c484d4b2470b025f2c0adf86e531140f1c673df44ec012bd32704eb573fcd5a3ee1 + languageName: node + linkType: hard + +"@react-aria/textfield@npm:3.18.1, @react-aria/textfield@npm:^3.18.1": + version: 3.18.1 + resolution: "@react-aria/textfield@npm:3.18.1" + dependencies: + "@react-aria/form": "npm:^3.1.1" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@react-types/textfield": "npm:^3.12.5" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/c596e2414fd64d2354e7dc5f56c959ed033f465e4dce20b602efab9c35bbabe27bcc2e80ef213ab1aa2ff541adcb33c0c967b530f32dd3280a627c317331f5b8 + languageName: node + linkType: hard + +"@react-aria/toast@npm:3.0.7": + version: 3.0.7 + resolution: "@react-aria/toast@npm:3.0.7" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/landmark": "npm:^3.0.6" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/toast": "npm:^3.1.2" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/83f2dc36c312150724bc4b669917374bf042156a8e4c9cd67a9c8a7e3250c43f97d7e75ddeaa4190474606323ee1239431b929019b919a8645273770c7c2d803 + languageName: node + linkType: hard + +"@react-aria/toggle@npm:^3.12.1": + version: 3.12.1 + resolution: "@react-aria/toggle@npm:3.12.1" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/toggle": "npm:^3.9.1" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/3ace07768327c7d86f57d7bcf22a60d64c84f7d9adef66e80db2194d237f82016a635903417289eaa7408caca74fee094b8e9dc7ac7d923823b63eabcc094b38 + languageName: node + linkType: hard + +"@react-aria/toolbar@npm:3.0.0-beta.20": + version: 3.0.0-beta.20 + resolution: "@react-aria/toolbar@npm:3.0.0-beta.20" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/af186a16ba6d55b6fd80988ae95031e04bcfcd20bdedb02f12007f5f3c4ef1ace515a0d71d0191544c333bb181df8dfe33f89e52fde7ad83148172561d0c4049 + languageName: node + linkType: hard + +"@react-aria/tooltip@npm:3.8.7": + version: 3.8.7 + resolution: "@react-aria/tooltip@npm:3.8.7" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/tooltip": "npm:^3.5.7" + "@react-types/shared": "npm:^3.32.0" + "@react-types/tooltip": "npm:^3.4.20" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/481ec2ee3d43ecae62c01f0c0a1122c735dfaddffbc8db5e4d38963201d4ecc2f66df50d27c97cc93b5480998d545480ec962282f3cf702f220e22ee3e443b73 + languageName: node + linkType: hard + +"@react-aria/utils@npm:3.30.1, @react-aria/utils@npm:^3.30.1": + version: 3.30.1 + resolution: "@react-aria/utils@npm:3.30.1" + dependencies: + "@react-aria/ssr": "npm:^3.9.10" + "@react-stately/flags": "npm:^3.1.2" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/3417a3ea7250c4ad23e6943117eb304a3708859fe8c738e0bee39edaefe7a7b82cedecc564f1a7f7fdf715ad13f57804a0b7c015a75fefdecbe3ecd7162f3e2f + languageName: node + linkType: hard + +"@react-aria/visually-hidden@npm:3.8.27, @react-aria/visually-hidden@npm:^3.8.27": + version: 3.8.27 + resolution: "@react-aria/visually-hidden@npm:3.8.27" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/b9c1e64c9560ec6ff5e186502cc4c89f366d17d8ccd0487c698b22358b0583385f404c567861497cb4c0b035b3906993f700fc219040519b0ce9be1f69d74b24 + languageName: node + linkType: hard + +"@react-stately/calendar@npm:3.8.4, @react-stately/calendar@npm:^3.8.4": + version: 3.8.4 + resolution: "@react-stately/calendar@npm:3.8.4" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/calendar": "npm:^3.7.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ce7d212735b94d2ad8a0a2bd6c552f2aa6883b6d4ce34a2d9c8989536845d15bc90aabb66665ff4932eb32d2b43fe15602c5503c35edd05fa567348582b8ab16 + languageName: node + linkType: hard + +"@react-stately/checkbox@npm:3.7.1, @react-stately/checkbox@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-stately/checkbox@npm:3.7.1" + dependencies: + "@react-stately/form": "npm:^3.2.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/283d7e5aa63761c956fc48c42d12e5dee779c362013afabd36e086f530b4b8137966e6769421951c28cbffa4e793c0ce857de5aea85403a42688f0898f2503fa + languageName: node + linkType: hard + +"@react-stately/collections@npm:3.12.7, @react-stately/collections@npm:^3.12.7": + version: 3.12.7 + resolution: "@react-stately/collections@npm:3.12.7" + dependencies: + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9f8e2f34a7e8a9630699ca91d8d5f215468b2a669df4e06bfd337d365d52df9b2e42b983d18f2023b746e30f0b06ee76e5838e1067299935ce78fab1c2c959c1 + languageName: node + linkType: hard + +"@react-stately/combobox@npm:3.11.1, @react-stately/combobox@npm:^3.11.1": + version: 3.11.1 + resolution: "@react-stately/combobox@npm:3.11.1" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/list": "npm:^3.13.0" + "@react-stately/overlays": "npm:^3.6.19" + "@react-stately/select": "npm:^3.7.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/combobox": "npm:^3.13.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/d89f22d54f96e829a70e6700904a163d30766767567964ab29b78772b6bbe4f2abbe85ccd0a25b5d8a54a6c60e1d653215699b19d82d84b6620c9e5d73f9fe10 + languageName: node + linkType: hard + +"@react-stately/datepicker@npm:3.15.1, @react-stately/datepicker@npm:^3.15.1": + version: 3.15.1 + resolution: "@react-stately/datepicker@npm:3.15.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@internationalized/string": "npm:^3.2.7" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/overlays": "npm:^3.6.19" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/datepicker": "npm:^3.13.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/65167c563757d30a80656081ac51335a1c3f5b7b587dd4702bd28983b5a9a9cb7ce24b34e9e4a77ec7b6cc5dcd59748e4ec067ebba93e3b1a2709f9625e5f13b + languageName: node + linkType: hard + +"@react-stately/flags@npm:^3.1.2": + version: 3.1.2 + resolution: "@react-stately/flags@npm:3.1.2" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/d86890ce662f04c7d8984e9560527f46c9779b97757abded9e1bf7e230a6900a0ea7a3e7c22534de8d2ff278abae194e4e4ad962d710f3b04c52a4e1011c2e5b + languageName: node + linkType: hard + +"@react-stately/form@npm:3.2.1, @react-stately/form@npm:^3.2.1": + version: 3.2.1 + resolution: "@react-stately/form@npm:3.2.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9aa4c38001ea7811fc65677f04ffdaecf03be75bd9da911754d2510ef30be1b83fc45ef023660727bfdaf2f24dcebaa5587ca1ca4f5e1bc7aeb2319b3768c2c2 + languageName: node + linkType: hard + +"@react-stately/grid@npm:^3.11.5": + version: 3.11.5 + resolution: "@react-stately/grid@npm:3.11.5" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/bacfde659d10815a435cf0c8333a15da9ff1629483fa32c2263ebb1975ee1b8de21e1768f136c0dc6db8e7e60fac6d7ae72f610915d1b147716d47022a1f35c9 + languageName: node + linkType: hard + +"@react-stately/list@npm:3.13.0, @react-stately/list@npm:^3.13.0": + version: 3.13.0 + resolution: "@react-stately/list@npm:3.13.0" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/d408513e6b984ce912bb744b4da04222c0fa1a57e11fe53976c42df6d7126d3945fc65caaf8d67587ccaf2dce147658de432ddaa80e5b2b0b49012f7b572f810 + languageName: node + linkType: hard + +"@react-stately/menu@npm:3.9.7, @react-stately/menu@npm:^3.9.7": + version: 3.9.7 + resolution: "@react-stately/menu@npm:3.9.7" + dependencies: + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/menu": "npm:^3.10.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/4ad5b7da2f6c09efcb459f77bab624be65d37ba6b72cf76c704e28361f9ee6f598365728f351aa15dc27bdb2dca8e1c634e0cf131f036fc5aafd308a2d0c111f + languageName: node + linkType: hard + +"@react-stately/numberfield@npm:3.10.1, @react-stately/numberfield@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-stately/numberfield@npm:3.10.1" + dependencies: + "@internationalized/number": "npm:^3.6.5" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/numberfield": "npm:^3.8.14" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1e7eb49fa1e135368bbc4f2e795be70f9db38d049139ce7efd988cddf0b01290527780ab0123b5c953a21991ffdafc76f5cc2cf1c09d68a91b18bdaec810f1ba + languageName: node + linkType: hard + +"@react-stately/overlays@npm:3.6.19, @react-stately/overlays@npm:^3.6.19": + version: 3.6.19 + resolution: "@react-stately/overlays@npm:3.6.19" + dependencies: + "@react-stately/utils": "npm:^3.10.8" + "@react-types/overlays": "npm:^3.9.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/bc6749850313185a927f3d2f72e8e155d8452a4ec9f19ff3df7c167c6a60a29d91dd97e0b5d5f78ed8fa1a0b275cbfc4f5b135dbd37412246e0cc647499d4cde + languageName: node + linkType: hard + +"@react-stately/radio@npm:3.11.1, @react-stately/radio@npm:^3.11.1": + version: 3.11.1 + resolution: "@react-stately/radio@npm:3.11.1" + dependencies: + "@react-stately/form": "npm:^3.2.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/radio": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/f9e59f90f54507da594ef54df96d99cc2baa36e999674aed1950288dc29a5c5ef5235e2f90e3c92fe8a63a4963a7b0ccee9652b55e2552865b3029e34c11eaf8 + languageName: node + linkType: hard + +"@react-stately/select@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-stately/select@npm:3.7.1" + dependencies: + "@react-stately/form": "npm:^3.2.1" + "@react-stately/list": "npm:^3.13.0" + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/select": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/807b870e1bc26ed05b152f10aac3d2c34e66aeab70f01eed472b75edafe10808b03dca45d7ed2273e79b55f7af646a745d0c6a4c61f63067a3a11c5f1f8378c6 + languageName: node + linkType: hard + +"@react-stately/selection@npm:^3.20.5": + version: 3.20.5 + resolution: "@react-stately/selection@npm:3.20.5" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/fa3e9440c10d836e48e019ce8811eab2bc38c15e807fec0d1f857ec30f180fa87005f882385259c48fa73d9793c292f3322c35b94df06535fe19eb7b0e715c76 + languageName: node + linkType: hard + +"@react-stately/slider@npm:3.7.1, @react-stately/slider@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-stately/slider@npm:3.7.1" + dependencies: + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@react-types/slider": "npm:^3.8.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/2efd3c3bb50cb5874975ae2019566fc3df443e5f838472b2e56428ecbf184c39710ddb774dc69c856767a95278699a857bcfd3fdd9926ca638d7e4ca80cccc05 + languageName: node + linkType: hard + +"@react-stately/table@npm:3.15.0, @react-stately/table@npm:^3.15.0": + version: 3.15.0 + resolution: "@react-stately/table@npm:3.15.0" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/flags": "npm:^3.1.2" + "@react-stately/grid": "npm:^3.11.5" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@react-types/table": "npm:^3.13.3" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/93813ef88a756755fdbb0a92f65d43b7cf83d2029290c34a2e0b337f1e2f25e9ebb7d54b122c4f280dc797ea82550bd0cc105072b7cdec836d5d48d175ea220e + languageName: node + linkType: hard + +"@react-stately/tabs@npm:3.8.5, @react-stately/tabs@npm:^3.8.5": + version: 3.8.5 + resolution: "@react-stately/tabs@npm:3.8.5" + dependencies: + "@react-stately/list": "npm:^3.13.0" + "@react-types/shared": "npm:^3.32.0" + "@react-types/tabs": "npm:^3.3.18" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/577f4640fbdedd2049c4b2b326ad32c8f9b89366c2e4bffbf5501713a8bc314623f72399ca3e0c112abdebc291d8733f381f34aabf304b87d30d5d29e09b63d9 + languageName: node + linkType: hard + +"@react-stately/toast@npm:3.1.2, @react-stately/toast@npm:^3.1.2": + version: 3.1.2 + resolution: "@react-stately/toast@npm:3.1.2" + dependencies: + "@swc/helpers": "npm:^0.5.0" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/5de06a2ca5830824a236f809e44a5084ae58a4f463c86aa2e72ec84c8ca632dfe1f5054248a9a1f6ee2aa213e22bfc186e0f4d5ef9a552eb369ee906686f8fec + languageName: node + linkType: hard + +"@react-stately/toggle@npm:3.9.1, @react-stately/toggle@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-stately/toggle@npm:3.9.1" + dependencies: + "@react-stately/utils": "npm:^3.10.8" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/d7a87f9b00f324cfd2cab13733ceebaf66df9514024bfa85f7f8bef27ac0037b0568f763e96a4a9b46798fbd90048d8afffc0a6ad38803e121a3251d13bf7113 + languageName: node + linkType: hard + +"@react-stately/tooltip@npm:3.5.7, @react-stately/tooltip@npm:^3.5.7": + version: 3.5.7 + resolution: "@react-stately/tooltip@npm:3.5.7" + dependencies: + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/tooltip": "npm:^3.4.20" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/fc180cd11b2ba557d64b30e495fc6ab60972b1fcc77924bf7d521d46a0973d8f0e3ff0dd846c031d604c66caac7a1654ad07505b0b577c6f2ac87b62f3e60a4d + languageName: node + linkType: hard + +"@react-stately/tree@npm:3.9.2, @react-stately/tree@npm:^3.9.2": + version: 3.9.2 + resolution: "@react-stately/tree@npm:3.9.2" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e2c3eb2eec5c0fdfc18e7cf09c3a866f0ebc261bf3398df7b54fa41c8b233e68ba4366c043896a101ddb72d2786adc5bad00f85eb61d0ff60afec34665de096f + languageName: node + linkType: hard + +"@react-stately/utils@npm:3.10.8, @react-stately/utils@npm:^3.10.8": + version: 3.10.8 + resolution: "@react-stately/utils@npm:3.10.8" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/a97cc292986e3eeb2ceb1626671ce60e8342a3ff35ab92bcfcb94bd6b28729836cc592e3fe4df2fba603e5fdd26291be77b7f60441920298c282bb93f424feba + languageName: node + linkType: hard + +"@react-stately/virtualizer@npm:4.4.3": + version: 4.4.3 + resolution: "@react-stately/virtualizer@npm:4.4.3" + dependencies: + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9e49131a18e968a3119b17bca6826a008ed23074751c2bc564cb6d812ae13825d1368830026b3afbe016a0747658d48997048e53332b500378c6c8a66bc94a30 + languageName: node + linkType: hard + +"@react-types/accordion@npm:3.0.0-alpha.26": + version: 3.0.0-alpha.26 + resolution: "@react-types/accordion@npm:3.0.0-alpha.26" + dependencies: + "@react-types/shared": "npm:^3.27.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/fe3dda6c148a815ea9e82d1ba0796f03954467290816e5b815bb26c7a503c1c46c0db8d43836b8da221bf1bc92e068f230509a93c2b30b912c2a2510f1798732 + languageName: node + linkType: hard + +"@react-types/breadcrumbs@npm:3.7.16, @react-types/breadcrumbs@npm:^3.7.16": + version: 3.7.16 + resolution: "@react-types/breadcrumbs@npm:3.7.16" + dependencies: + "@react-types/link": "npm:^3.6.4" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/af033fc8f5f47b926f15154e1f6cceb24a666004a1df058c7c8accb3bc0b916fc28a56a400f10bdb697425119584df7c4f10a985a6400633caa6d05f315d2593 + languageName: node + linkType: hard + +"@react-types/button@npm:3.14.0, @react-types/button@npm:^3.14.0": + version: 3.14.0 + resolution: "@react-types/button@npm:3.14.0" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/33891e850e0cccb5326cbd866c9bc7312611e7476ca82a83fee601a516a07a04da1eef1e9dbbf34f56a2f7cfcd546306ae91c088d99cdc548b49b80267e3f623 + languageName: node + linkType: hard + +"@react-types/calendar@npm:3.7.4, @react-types/calendar@npm:^3.7.4": + version: 3.7.4 + resolution: "@react-types/calendar@npm:3.7.4" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/0e05af84d55170792ae5f937bba3ae1534e25cafb9ff562b9b9485fc93631b887faf1400f2ef3b1fe764efbbdd999847494606cc770bc19c44d7d173601be2f0 + languageName: node + linkType: hard + +"@react-types/checkbox@npm:3.10.1, @react-types/checkbox@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-types/checkbox@npm:3.10.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/cb2e3d0f4a47c2f664cce06a0956825d80e30d8c30e4d80fd6d657822dbbdee0d46f49d93c1f31d4919bbe2d69b09556d8185b1e0d4ebd4f658fe431e6a6aa65 + languageName: node + linkType: hard + +"@react-types/combobox@npm:3.13.8, @react-types/combobox@npm:^3.13.8": + version: 3.13.8 + resolution: "@react-types/combobox@npm:3.13.8" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/539abb36dc9b9de407c80d832933bcf073dc0bd6b11ce5da6a8b2aa279e839dcea713335601fdf45fa9693cdd39b18e1a4b5bc5a19cf5cf780a0449013807e0d + languageName: node + linkType: hard + +"@react-types/datepicker@npm:3.13.1, @react-types/datepicker@npm:^3.13.1": + version: 3.13.1 + resolution: "@react-types/datepicker@npm:3.13.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@react-types/calendar": "npm:^3.7.4" + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e0d61abe97a3a40ce36a0814fb010509e47153416b3c3adb05cb55c6142703c8c837f2fa73fd8d52a19ce7812c3931e75a88818941908ff8a6eb24bf939a8053 + languageName: node + linkType: hard + +"@react-types/dialog@npm:^3.5.21": + version: 3.5.21 + resolution: "@react-types/dialog@npm:3.5.21" + dependencies: + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/129bbdca319ab5353361f861c973837b73f7ed21cc7a887acb1e528b781ccbf390292bf5c8ca48a425e8b5a14d59d45be708e40a5b5f3aca4404c816a14ad135 + languageName: node + linkType: hard + +"@react-types/form@npm:3.7.15": + version: 3.7.15 + resolution: "@react-types/form@npm:3.7.15" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/135ce29135bc66277a99840a01916b495dca98d4ce5854f3fa756c7bf891e897b325fc5777047c3e91ab938e73986be482b17ab3d669e083b8b815835c59fa1d + languageName: node + linkType: hard + +"@react-types/grid@npm:3.3.5, @react-types/grid@npm:^3.3.5": + version: 3.3.5 + resolution: "@react-types/grid@npm:3.3.5" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/4b49af54683ce73ed2ee9be2b6f7a03870ee461bf41f1943f5d88fc4a4cedf62091e9a7937245db10acc0a1e4feedffe579be7e8746a7d71f6483553eed08e55 + languageName: node + linkType: hard + +"@react-types/link@npm:3.6.4, @react-types/link@npm:^3.6.4": + version: 3.6.4 + resolution: "@react-types/link@npm:3.6.4" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/69fa28299af26bd1473933dffd55a932b1a5cbd263898efc16c0fc5cbef02d21201f947e739a63ee26a9f0a311c3ee77a60689004176517558ada4622cfd5f7f + languageName: node + linkType: hard + +"@react-types/listbox@npm:^3.7.3": + version: 3.7.3 + resolution: "@react-types/listbox@npm:3.7.3" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/94fce2d390bfb9beafcc5a241ffe32524512240c7980fafee3195c859973ba84e1df2afc8a55e679d797c74f5d33fa18162fbaeeda983187423f7ce9bfd6d74a + languageName: node + linkType: hard + +"@react-types/menu@npm:3.10.4, @react-types/menu@npm:^3.10.4": + version: 3.10.4 + resolution: "@react-types/menu@npm:3.10.4" + dependencies: + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/699da0cac2e31fdc362e8f5e227c2221187e4d883509ae242b1efd58ab28c55c2ee695c227ea04c3a4510354dc3348b409fa13a38b88a91544597cad63eb202b + languageName: node + linkType: hard + +"@react-types/numberfield@npm:3.8.14, @react-types/numberfield@npm:^3.8.14": + version: 3.8.14 + resolution: "@react-types/numberfield@npm:3.8.14" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1c9c4212a32e87d34eb1fff7a34dd1a7a4f616653087e8cdbe40ddafe6c6424b9a8d0a70076f6fdf88a2736a394de3f2cd697c955a6ca01c8d8c9a9133bc1f8d + languageName: node + linkType: hard + +"@react-types/overlays@npm:3.9.1, @react-types/overlays@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-types/overlays@npm:3.9.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/bf0e1c11251e2c6c79e12762d30e886ba5587cd7d38761d4174c3f512ace205cf7b3d7da44ca7fe3797af27ad32b844a6c4ecb3cf0a5c6b9784557cfaf035346 + languageName: node + linkType: hard + +"@react-types/progress@npm:3.5.15, @react-types/progress@npm:^3.5.15": + version: 3.5.15 + resolution: "@react-types/progress@npm:3.5.15" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/7a5f4b2690fdea608b8b6d8c0ea8c262fc303b0440102ec2873a80fec45558139aeac20c507e6fbbad77686fb7f6c50ee0c4ec26c18d7ea5c7595081bda9b426 + languageName: node + linkType: hard + +"@react-types/radio@npm:3.9.1, @react-types/radio@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-types/radio@npm:3.9.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1af8c2612cde155082797f225e995bdaab2d7e127edd9b8ec82bee925699c053a106b506022ee12cb0dd52509b10d00dba4d168c89886d58c7b22884ece615d0 + languageName: node + linkType: hard + +"@react-types/select@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-types/select@npm:3.10.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/b236419695ace9eb27e3f975d5b45bf6ff7c3c50a07ac7fbdc87ab1ec8bc977bf85187713656c14df1dd9da0b07b04a64b866bfc627e8d9f84bf709f1109f5aa + languageName: node + linkType: hard + +"@react-types/shared@npm:3.32.0, @react-types/shared@npm:^3.27.0, @react-types/shared@npm:^3.32.0": + version: 3.32.0 + resolution: "@react-types/shared@npm:3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/8484f310a8911ab01daa87f9bfdea0a9a76e152d13d8421c28560dc84d64a7df23cda956db59f7010d2e8eaea27d7644118bfbe60b603499903b5f7e6cdfe4fa + languageName: node + linkType: hard + +"@react-types/slider@npm:^3.8.1": + version: 3.8.1 + resolution: "@react-types/slider@npm:3.8.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/c57cd9e7a7e561eaf367ca733c315db2c4132a754a43dd44a4100068bc9e695dadc9b482737f0a11e2991baed79d80ea29bf1cd18df6563b7c54767012ab1bde + languageName: node + linkType: hard + +"@react-types/switch@npm:^3.5.14": + version: 3.5.14 + resolution: "@react-types/switch@npm:3.5.14" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/43318b370863fd9fbc2537c3773dba8e28fb1f4e0d2849f0c115f523f59d8d8e88f59c6ede436fa32f634211e96d7a75b2752ec4bcf87a1edc392b624fab7ddd + languageName: node + linkType: hard + +"@react-types/table@npm:3.13.3, @react-types/table@npm:^3.13.3": + version: 3.13.3 + resolution: "@react-types/table@npm:3.13.3" + dependencies: + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/f1d40064f28441ae0387467f29ff01c641a8eb134b0e2d0dcb3b97331bdf56ac8d619e000bbb5a6229a31ddc288884913fcefb1e255f0c2f1c37f30575170b72 + languageName: node + linkType: hard + +"@react-types/tabs@npm:^3.3.18": + version: 3.3.18 + resolution: "@react-types/tabs@npm:3.3.18" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/dd830c08a517e3932d8c694896d5585b639530a7bad2d103b85531b8b4d8bcfde2bba512410260837eb1a0f464cce85d67675d025d56c5c23b30815039e400a0 + languageName: node + linkType: hard + +"@react-types/textfield@npm:3.12.5, @react-types/textfield@npm:^3.12.5": + version: 3.12.5 + resolution: "@react-types/textfield@npm:3.12.5" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/4770454303a5b3d93afbc93e6d2e026eed62227a71474e791a598458880d2e06d681e9f3b1d586a8108cbb2e4f75ad64a77e5e71b9adb0e70d73bd8f0ee96bab + languageName: node + linkType: hard + +"@react-types/tooltip@npm:3.4.20, @react-types/tooltip@npm:^3.4.20": + version: 3.4.20 + resolution: "@react-types/tooltip@npm:3.4.20" + dependencies: + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/7fd8415658a140db98974225859fc355a81282563b61246897b98ed0afb398eaff1e770b1bafe246aaa2cc4a07485c501ebed9de9a0a3882a20c658ea29ffa6b + languageName: node + linkType: hard + "@reduxjs/toolkit@npm:^2.2.5": version: 2.6.1 resolution: "@reduxjs/toolkit@npm:2.6.1" @@ -7649,6 +10404,15 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:^0.5.0": + version: 0.5.17 + resolution: "@swc/helpers@npm:0.5.17" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/fe1f33ebb968558c5a0c595e54f2e479e4609bff844f9ca9a2d1ffd8dd8504c26f862a11b031f48f75c95b0381c2966c3dd156e25942f90089badd24341e7dbb + languageName: node + linkType: hard + "@swc/plugin-styled-components@npm:^8.0.4": version: 8.0.4 resolution: "@swc/plugin-styled-components@npm:8.0.4" @@ -7685,6 +10449,172 @@ __metadata: languageName: node linkType: hard +"@tailwindcss/node@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/node@npm:4.1.13" + dependencies: + "@jridgewell/remapping": "npm:^2.3.4" + enhanced-resolve: "npm:^5.18.3" + jiti: "npm:^2.5.1" + lightningcss: "npm:1.30.1" + magic-string: "npm:^0.30.18" + source-map-js: "npm:^1.2.1" + tailwindcss: "npm:4.1.13" + checksum: 10c0/969b2eaefced271655fdf53a07737103736115c6b55fa1559c78147d17871da988c165ab2236bf4da8cdbde1e50a5116b8df2225e20f63de981d43da5b69e3f1 + languageName: node + linkType: hard + +"@tailwindcss/oxide-android-arm64@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-android-arm64@npm:4.1.13" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-darwin-arm64@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-darwin-arm64@npm:4.1.13" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-darwin-x64@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-darwin-x64@npm:4.1.13" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-freebsd-x64@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-freebsd-x64@npm:4.1.13" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-arm-gnueabihf@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-linux-arm-gnueabihf@npm:4.1.13" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-arm64-gnu@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-linux-arm64-gnu@npm:4.1.13" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-arm64-musl@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-linux-arm64-musl@npm:4.1.13" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-x64-gnu@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-linux-x64-gnu@npm:4.1.13" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@tailwindcss/oxide-linux-x64-musl@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-linux-x64-musl@npm:4.1.13" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@tailwindcss/oxide-wasm32-wasi@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-wasm32-wasi@npm:4.1.13" + dependencies: + "@emnapi/core": "npm:^1.4.5" + "@emnapi/runtime": "npm:^1.4.5" + "@emnapi/wasi-threads": "npm:^1.0.4" + "@napi-rs/wasm-runtime": "npm:^0.2.12" + "@tybys/wasm-util": "npm:^0.10.0" + tslib: "npm:^2.8.0" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@tailwindcss/oxide-win32-arm64-msvc@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-win32-arm64-msvc@npm:4.1.13" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@tailwindcss/oxide-win32-x64-msvc@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide-win32-x64-msvc@npm:4.1.13" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@tailwindcss/oxide@npm:4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/oxide@npm:4.1.13" + dependencies: + "@tailwindcss/oxide-android-arm64": "npm:4.1.13" + "@tailwindcss/oxide-darwin-arm64": "npm:4.1.13" + "@tailwindcss/oxide-darwin-x64": "npm:4.1.13" + "@tailwindcss/oxide-freebsd-x64": "npm:4.1.13" + "@tailwindcss/oxide-linux-arm-gnueabihf": "npm:4.1.13" + "@tailwindcss/oxide-linux-arm64-gnu": "npm:4.1.13" + "@tailwindcss/oxide-linux-arm64-musl": "npm:4.1.13" + "@tailwindcss/oxide-linux-x64-gnu": "npm:4.1.13" + "@tailwindcss/oxide-linux-x64-musl": "npm:4.1.13" + "@tailwindcss/oxide-wasm32-wasi": "npm:4.1.13" + "@tailwindcss/oxide-win32-arm64-msvc": "npm:4.1.13" + "@tailwindcss/oxide-win32-x64-msvc": "npm:4.1.13" + detect-libc: "npm:^2.0.4" + tar: "npm:^7.4.3" + dependenciesMeta: + "@tailwindcss/oxide-android-arm64": + optional: true + "@tailwindcss/oxide-darwin-arm64": + optional: true + "@tailwindcss/oxide-darwin-x64": + optional: true + "@tailwindcss/oxide-freebsd-x64": + optional: true + "@tailwindcss/oxide-linux-arm-gnueabihf": + optional: true + "@tailwindcss/oxide-linux-arm64-gnu": + optional: true + "@tailwindcss/oxide-linux-arm64-musl": + optional: true + "@tailwindcss/oxide-linux-x64-gnu": + optional: true + "@tailwindcss/oxide-linux-x64-musl": + optional: true + "@tailwindcss/oxide-wasm32-wasi": + optional: true + "@tailwindcss/oxide-win32-arm64-msvc": + optional: true + "@tailwindcss/oxide-win32-x64-msvc": + optional: true + checksum: 10c0/7cc64827b0c854724a3b371a7f1484535db5cca9f53dda359631bce9c42b043f2822db6c5359f7ed9f1c8adbc48ecb52c414454f9330ffd25a9a679686d2a83e + languageName: node + linkType: hard + +"@tailwindcss/vite@npm:^4.1.13": + version: 4.1.13 + resolution: "@tailwindcss/vite@npm:4.1.13" + dependencies: + "@tailwindcss/node": "npm:4.1.13" + "@tailwindcss/oxide": "npm:4.1.13" + tailwindcss: "npm:4.1.13" + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + checksum: 10c0/4e9b1d54a64655b775f26816a7be52236d4716a35f88af6b835fcb4f7f466db3c9cbb6c052e5550a97b3e5cff821f337cd6d9ddefd480e71db21a2844719b20e + languageName: node + linkType: hard + "@tanstack/query-core@npm:5.85.5": version: 5.85.5 resolution: "@tanstack/query-core@npm:5.85.5" @@ -7703,6 +10633,18 @@ __metadata: languageName: node linkType: hard +"@tanstack/react-virtual@npm:3.11.3": + version: 3.11.3 + resolution: "@tanstack/react-virtual@npm:3.11.3" + dependencies: + "@tanstack/virtual-core": "npm:3.11.3" + 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 + checksum: 10c0/9718379045ecda92d2c59f3c25699c703d98509ea569d7bfb0dbf78f1e0f46f0023d7a5d3a373fb7cdd4507286c1cf47648b5c0f4b1bdb85b2d2a6c26814b884 + languageName: node + linkType: hard + "@tanstack/react-virtual@npm:^3.13.12": version: 3.13.12 resolution: "@tanstack/react-virtual@npm:3.13.12" @@ -7715,6 +10657,13 @@ __metadata: languageName: node linkType: hard +"@tanstack/virtual-core@npm:3.11.3": + version: 3.11.3 + resolution: "@tanstack/virtual-core@npm:3.11.3" + checksum: 10c0/94701b8d2da9167c8b4ba36bdaff22019b8ebb19224c357c1af16cbc375b39076ecc021a8c9581001607afc921d0a843019cb27168999065dda511c445a1a335 + languageName: node + linkType: hard + "@tanstack/virtual-core@npm:3.13.12": version: 3.13.12 resolution: "@tanstack/virtual-core@npm:3.13.12" @@ -9918,6 +12867,7 @@ __metadata: "@eslint/js": "npm:^9.22.0" "@google/genai": "patch:@google/genai@npm%3A1.0.1#~/.yarn/patches/@google-genai-npm-1.0.1-e26f0f9af7.patch" "@hello-pangea/dnd": "npm:^18.0.1" + "@heroui/react": "npm:^2.8.3" "@kangfenmao/keyv-storage": "npm:^0.1.0" "@langchain/community": "npm:^0.3.50" "@langchain/core": "npm:^0.3.68" @@ -9942,6 +12892,7 @@ __metadata: "@shikijs/markdown-it": "npm:^3.12.0" "@strongtz/win32-arm64-msvc": "npm:^0.4.7" "@swc/plugin-styled-components": "npm:^8.0.4" + "@tailwindcss/vite": "npm:^4.1.13" "@tanstack/react-query": "npm:^5.85.5" "@tanstack/react-virtual": "npm:^3.13.12" "@testing-library/dom": "npm:^10.4.0" @@ -10004,6 +12955,7 @@ __metadata: cheerio: "npm:^1.1.2" chokidar: "npm:^4.0.3" cli-progress: "npm:^3.12.0" + clsx: "npm:^2.1.1" code-inspector-plugin: "npm:^0.20.14" color: "npm:^5.0.0" concurrently: "npm:^9.2.1" @@ -10033,6 +12985,7 @@ __metadata: fast-diff: "npm:^1.3.0" fast-xml-parser: "npm:^5.2.0" fetch-socks: "npm:1.3.2" + framer-motion: "npm:^12.23.12" franc-min: "npm:^6.2.0" fs-extra: "npm:^11.2.0" google-auth-library: "npm:^9.15.1" @@ -10072,6 +13025,7 @@ __metadata: playwright: "npm:^1.52.0" prettier: "npm:^3.5.3" prettier-plugin-sort-json: "npm:^4.1.1" + prettier-plugin-tailwindcss: "npm:^0.6.14" proxy-agent: "npm:^6.5.0" react: "npm:^19.0.0" react-dom: "npm:^19.0.0" @@ -10101,7 +13055,6 @@ __metadata: remark-math: "npm:^6.0.0" remove-markdown: "npm:^0.6.2" rollup-plugin-visualizer: "npm:^5.12.0" - sass: "npm:^1.88.0" selection-hook: "npm:^1.0.11" sharp: "npm:^0.34.3" shiki: "npm:^3.12.0" @@ -10109,6 +13062,7 @@ __metadata: string-width: "npm:^7.2.0" striptags: "npm:^3.2.0" styled-components: "npm:^6.1.11" + tailwindcss: "npm:^4.1.13" tar: "npm:^7.4.3" tesseract.js: "patch:tesseract.js@npm%3A6.0.1#~/.yarn/patches/tesseract.js-npm-6.0.1-2562a7e46d.patch" tiny-pinyin: "npm:^1.3.2" @@ -10116,6 +13070,7 @@ __metadata: tsx: "npm:^4.20.3" turndown: "npm:7.2.0" turndown-plugin-gfm: "npm:^1.0.2" + tw-animate-css: "npm:^1.3.8" typescript: "npm:^5.6.2" undici: "npm:6.21.2" unified: "npm:^11.0.5" @@ -11514,7 +14469,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^4.0.0, chokidar@npm:^4.0.3": +"chokidar@npm:^4.0.3": version: 4.0.3 resolution: "chokidar@npm:4.0.3" dependencies: @@ -11667,6 +14622,20 @@ __metadata: languageName: node linkType: hard +"clsx@npm:^1.2.1": + version: 1.2.1 + resolution: "clsx@npm:1.2.1" + checksum: 10c0/34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 + languageName: node + linkType: hard + +"clsx@npm:^2.0.0, clsx@npm:^2.1.1": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + "code-inspector-core@npm:0.20.14": version: 0.20.14 resolution: "code-inspector-core@npm:0.20.14" @@ -11808,6 +14777,13 @@ __metadata: languageName: node linkType: hard +"color2k@npm:^2.0.3": + version: 2.0.3 + resolution: "color2k@npm:2.0.3" + checksum: 10c0/e7c13d212c9d1abb1690e378bbc0a6fb1751e4b02e9a73ba3b2ade9d54da673834597d342791d577d1ce400ec486c7f92c5098f9fa85cd113bcfde57420a2bb9 + languageName: node + linkType: hard + "color@npm:^3.1.3": version: 3.2.1 resolution: "color@npm:3.2.1" @@ -12752,6 +15728,13 @@ __metadata: languageName: node linkType: hard +"decimal.js@npm:^10.4.3": + version: 10.6.0 + resolution: "decimal.js@npm:10.6.0" + checksum: 10c0/07d69fbcc54167a340d2d97de95f546f9ff1f69d2b45a02fd7a5292412df3cd9eb7e23065e532a318f5474a2e1bccf8392fdf0443ef467f97f3bf8cb0477e5aa + languageName: node + linkType: hard + "decimal.js@npm:^10.5.0": version: 10.5.0 resolution: "decimal.js@npm:10.5.0" @@ -12882,7 +15865,7 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:^4.3.1": +"deepmerge@npm:4.3.1, deepmerge@npm:^4.3.1": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 @@ -13531,6 +16514,16 @@ __metadata: languageName: node linkType: hard +"enhanced-resolve@npm:^5.18.3": + version: 5.18.3 + resolution: "enhanced-resolve@npm:5.18.3" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/d413c23c2d494e4c1c9c9ac7d60b812083dc6d446699ed495e69c920988af0a3c66bf3f8d0e7a45cb1686c2d4c1df9f4e7352d973f5b56fe63d8d711dd0ccc54 + languageName: node + linkType: hard + "entities@npm:^4.2.0, entities@npm:^4.4.0, entities@npm:^4.5.0": version: 4.5.0 resolution: "entities@npm:4.5.0" @@ -14883,6 +17876,28 @@ __metadata: languageName: node linkType: hard +"framer-motion@npm:^12.23.12": + version: 12.23.12 + resolution: "framer-motion@npm:12.23.12" + dependencies: + motion-dom: "npm:^12.23.12" + motion-utils: "npm:^12.23.6" + tslib: "npm:^2.4.0" + peerDependencies: + "@emotion/is-prop-valid": "*" + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/is-prop-valid": + optional: true + react: + optional: true + react-dom: + optional: true + checksum: 10c0/40dfb57bf714075c4f6dd0bbe5b84dd11310114474ebf603846ef9b888ed475fa653271c1fd98ec57a6a1d0b781cdf8b3ebcd5e2c6a3620e934b46304ae0fd39 + languageName: node + linkType: hard + "franc-min@npm:^6.2.0": version: 6.2.0 resolution: "franc-min@npm:6.2.0" @@ -15342,7 +18357,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -15949,13 +18964,6 @@ __metadata: languageName: node linkType: hard -"immutable@npm:^5.0.2": - version: 5.1.2 - resolution: "immutable@npm:5.1.2" - checksum: 10c0/da5af92d2c70323c1f9a0e418832c9eef441feadaf6a295a4e07764bd2400c85186872e016071d9253549d58d364160d55dca8dcdf59fd4a6a06c6756fe61657 - languageName: node - linkType: hard - "import-fresh@npm:^3.2.1": version: 3.3.1 resolution: "import-fresh@npm:3.3.1" @@ -16027,6 +19035,16 @@ __metadata: languageName: node linkType: hard +"input-otp@npm:1.4.1": + version: 1.4.1 + resolution: "input-otp@npm:1.4.1" + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + checksum: 10c0/7630c5b2be54a0569d52579c8cc4a66dab5e17afff75adf889f878c2da35cebf391be5fd4f374884e2ca5514b563dfac46eb70f4047282ba8a3c91859ae8500b + languageName: node + linkType: hard + "internmap@npm:1 - 2": version: 2.0.3 resolution: "internmap@npm:2.0.3" @@ -16041,6 +19059,18 @@ __metadata: languageName: node linkType: hard +"intl-messageformat@npm:^10.1.0": + version: 10.7.16 + resolution: "intl-messageformat@npm:10.7.16" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.3.4" + "@formatjs/fast-memoize": "npm:2.2.7" + "@formatjs/icu-messageformat-parser": "npm:2.11.2" + tslib: "npm:^2.8.0" + checksum: 10c0/537735bf6439f0560f132895d117df6839957ac04cdd58d861f6da86803d40bfc19059e3d341ddb8de87214b73a6329b57f9acdb512bb0f745dcf08729507b9b + languageName: node + linkType: hard + "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -16472,7 +19502,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.4.2": +"jiti@npm:^2.4.2, jiti@npm:^2.5.1": version: 2.5.1 resolution: "jiti@npm:2.5.1" bin: @@ -17147,7 +20177,7 @@ __metadata: languageName: node linkType: hard -"lightningcss@npm:^1.30.1": +"lightningcss@npm:1.30.1, lightningcss@npm:^1.30.1": version: 1.30.1 resolution: "lightningcss@npm:1.30.1" dependencies: @@ -17534,6 +20564,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.18": + version: 0.30.18 + resolution: "magic-string@npm:0.30.18" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c0/80fba01e13ce1f5c474a0498a5aa462fa158eb56567310747089a0033e432d83a2021ee2c109ac116010cd9dcf90a5231d89fbe3858165f73c00a50a74dbefcd + languageName: node + linkType: hard + "magicast@npm:^0.3.5": version: 0.3.5 resolution: "magicast@npm:0.3.5" @@ -18630,7 +21669,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.5, micromatch@npm:^4.0.8": +"micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -18991,6 +22030,22 @@ __metadata: languageName: node linkType: hard +"motion-dom@npm:^12.23.12": + version: 12.23.12 + resolution: "motion-dom@npm:12.23.12" + dependencies: + motion-utils: "npm:^12.23.6" + checksum: 10c0/1b6a4b86c1aed5b5da7b8a5d1f8310ad169125235bdc1953b8c41cf9f4e2c460ee90bb48ffdae54daecb8db1d7006566ceb5f5c9ccdc82606d548c527cb2631e + languageName: node + linkType: hard + +"motion-utils@npm:^12.23.6": + version: 12.23.6 + resolution: "motion-utils@npm:12.23.6" + checksum: 10c0/c058e8ba6423b3baa63e985bcc669877ee7d9579d938f5348b4e60c5ea1b4b33dd7f4877434436a4a5807f3cf00370d3fd4079a6fdd6309c5c87aa62b311a897 + languageName: node + linkType: hard + "motion-utils@npm:^12.9.4": version: 12.9.4 resolution: "motion-utils@npm:12.9.4" @@ -19203,15 +22258,6 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^7.0.0": - version: 7.1.1 - resolution: "node-addon-api@npm:7.1.1" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/fb32a206276d608037fa1bcd7e9921e177fe992fc610d098aa3128baca3c0050fc1e014fa007e9b3874cf865ddb4f5bd9f43ccb7cbbbe4efaff6a83e920b17e9 - languageName: node - linkType: hard - "node-addon-api@npm:^8.4.0": version: 8.4.0 resolution: "node-addon-api@npm:8.4.0" @@ -20396,6 +23442,70 @@ __metadata: languageName: node linkType: hard +"prettier-plugin-tailwindcss@npm:^0.6.14": + version: 0.6.14 + resolution: "prettier-plugin-tailwindcss@npm:0.6.14" + peerDependencies: + "@ianvs/prettier-plugin-sort-imports": "*" + "@prettier/plugin-hermes": "*" + "@prettier/plugin-oxc": "*" + "@prettier/plugin-pug": "*" + "@shopify/prettier-plugin-liquid": "*" + "@trivago/prettier-plugin-sort-imports": "*" + "@zackad/prettier-plugin-twig": "*" + prettier: ^3.0 + prettier-plugin-astro: "*" + prettier-plugin-css-order: "*" + prettier-plugin-import-sort: "*" + prettier-plugin-jsdoc: "*" + prettier-plugin-marko: "*" + prettier-plugin-multiline-arrays: "*" + prettier-plugin-organize-attributes: "*" + prettier-plugin-organize-imports: "*" + prettier-plugin-sort-imports: "*" + prettier-plugin-style-order: "*" + prettier-plugin-svelte: "*" + peerDependenciesMeta: + "@ianvs/prettier-plugin-sort-imports": + optional: true + "@prettier/plugin-hermes": + optional: true + "@prettier/plugin-oxc": + optional: true + "@prettier/plugin-pug": + optional: true + "@shopify/prettier-plugin-liquid": + optional: true + "@trivago/prettier-plugin-sort-imports": + optional: true + "@zackad/prettier-plugin-twig": + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + checksum: 10c0/1bf635be28b30b3f171a184497eecf512601d19328e402dd2eb1ede52aa57b4f5b605eae2929f4916de9ba22526f3d730d9afa90334db09d17c59f463f7b26d8 + languageName: node + linkType: hard + "prettier@npm:^3.5.3": version: 3.5.3 resolution: "prettier@npm:3.5.3" @@ -21665,7 +24775,7 @@ __metadata: languageName: node linkType: hard -"react-textarea-autosize@npm:^8.3.2": +"react-textarea-autosize@npm:^8.3.2, react-textarea-autosize@npm:^8.5.3": version: 8.5.9 resolution: "react-textarea-autosize@npm:8.5.9" dependencies: @@ -22514,23 +25624,6 @@ __metadata: languageName: node linkType: hard -"sass@npm:^1.88.0": - version: 1.88.0 - resolution: "sass@npm:1.88.0" - dependencies: - "@parcel/watcher": "npm:^2.4.1" - chokidar: "npm:^4.0.0" - immutable: "npm:^5.0.2" - source-map-js: "npm:>=0.6.2 <2.0.0" - dependenciesMeta: - "@parcel/watcher": - optional: true - bin: - sass: sass.js - checksum: 10c0/dcb16dc29116bfa5a90485d24fd8020d2b0d95155bd2e31285901588729343b59fefe44365c5f146b2ba5a9ebadef90b23a7220b902507bdbd91ca2ba0a0b688 - languageName: node - linkType: hard - "sax@npm:1.2.1": version: 1.2.1 resolution: "sax@npm:1.2.1" @@ -22570,6 +25663,15 @@ __metadata: languageName: node linkType: hard +"scroll-into-view-if-needed@npm:3.0.10": + version: 3.0.10 + resolution: "scroll-into-view-if-needed@npm:3.0.10" + dependencies: + compute-scroll-into-view: "npm:^3.0.2" + checksum: 10c0/8bce433c0139cfd74d5b784113251f1c1783bcd4152c2f3a7e4ca6ff73d644eafd891747bdfb02456d7437835991b142ddd2cfa8c6ef78dd0d7fd6eb4c7c70b4 + languageName: node + linkType: hard + "scroll-into-view-if-needed@npm:^3.1.0": version: 3.1.0 resolution: "scroll-into-view-if-needed@npm:3.1.0" @@ -23055,7 +26157,7 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": +"source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf @@ -23547,6 +26649,40 @@ __metadata: languageName: node linkType: hard +"tailwind-merge@npm:3.3.1": + version: 3.3.1 + resolution: "tailwind-merge@npm:3.3.1" + checksum: 10c0/b84c6a78d4669fa12bf5ab8f0cdc4400a3ce0a7c006511af4af4be70bb664a27466dbe13ee9e3b31f50ddf6c51d380e8192ce0ec9effce23ca729d71a9f63818 + languageName: node + linkType: hard + +"tailwind-variants@npm:3.1.0": + version: 3.1.0 + resolution: "tailwind-variants@npm:3.1.0" + peerDependencies: + tailwind-merge: ">=3.0.0" + tailwindcss: "*" + peerDependenciesMeta: + tailwind-merge: + optional: true + checksum: 10c0/b196ccc7ff4a8e932d27ded3e4c88797ed92b94e7695b31fe0e32385d5a474eed151c7df688215bb03908afeffc7cfc1b027d01625f08d77f92b08ca2f51ec7f + languageName: node + linkType: hard + +"tailwindcss@npm:4.1.13, tailwindcss@npm:^4.1.13": + version: 4.1.13 + resolution: "tailwindcss@npm:4.1.13" + checksum: 10c0/2b80b4b11463818fd16063b7cc13fd0f6e18d7e3c3e54bbdc98742981be807884addb1dd657bc6816cb4085197b7d583f5064f619e1039a54221ffa36b7ed4c0 + languageName: node + linkType: hard + +"tapable@npm:^2.2.0": + version: 2.2.3 + resolution: "tapable@npm:2.2.3" + checksum: 10c0/e57fd8e2d756c317f8726a1bec8f2c904bc42e37fcbd4a78211daeab89f42c734b6a20e61774321f47be9a421da628a0c78b62d36c5ed186f4d5232d09ae15f2 + languageName: node + linkType: hard + "tar-fs@npm:^2.0.0": version: 2.1.3 resolution: "tar-fs@npm:2.1.3" @@ -24155,7 +27291,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.8.1": +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.8.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -24203,6 +27339,13 @@ __metadata: languageName: node linkType: hard +"tw-animate-css@npm:^1.3.8": + version: 1.3.8 + resolution: "tw-animate-css@npm:1.3.8" + checksum: 10c0/8b905ec319447e80444d88b475beb9d4bbe8f783ee4fa0f90e63c01aed3a77ab2585b25c2741ff2e741b7b9098a82268c2d30dc36f9716a9e83edfa4081be544 + languageName: node + linkType: hard + "twitch-video-element@npm:^0.1.2": version: 0.1.4 resolution: "twitch-video-element@npm:0.1.4"