diff --git a/.github/.CONTRIBUTING.md b/.github/.CONTRIBUTING.md new file mode 100644 index 0000000..2452d34 --- /dev/null +++ b/.github/.CONTRIBUTING.md @@ -0,0 +1,52 @@ +# Contributing Guide + +Thank you for your interest in contributing to our project! Before you submit a pull request, we kindly ask you to review this guide thoroughly. + +## Development + +First, [fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) and clone the repository onto your local machine. Once you have your local copy of the repository, you can commence with development. This typically involves installing the required dependencies and executing the tests. + +### Install Dependencies + +After cloning the repository, navigate to its root directory and run the following command to install the necessary dependencies: + +``` +npm install +``` + +Once you have made your changes and verified they work correctly, you can submit a [pull request from your forked repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). + +## Pull Requests + +Before proposing changes, please open an [issue](https://github.com/@sheet-ui/sheet/issues/new) or [discussion](https://github.com/@sheet-ui/sheet/discussions/new/choose) for collaborative decision-making on solutions prior to submitting a pull request. This enhances the effectiveness of your contributions and promotes collective input. + +### Workflow + +1. **Open an [issue](https://github.com/@sheet-ui/sheet/issues/new)**: Start by opening an issue detailing the problem you want to solve or the feature you want to add. +1. **Fork and branch:** Fork the repository and create a new branch on your fork to work on the changes. +1. **Add commits:** Add new commits to your branch. Remember: + 1. Commits should be [concise, descriptive, and well formatted](https://cbea.ms/git-commit/#seven-rules). + 1. Commits should follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0) specification and use the [standard headings](https://github.com/googleapis/release-please/blob/cb0f936e598c5bfb8d3e0a9c0eeb57ae59a35140/src/changelog-notes.ts#L43-L54). + 1. This repository maintains a linear git history, so merge commits are not allowed. +1. **Open a pull request:** Open a [new pull request](https://github.com/@sheet-ui/sheet/compare) on GitHub, and [link](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) it to the issue you created in the first step. + +### Dependabot + +This repository employs [Dependabot 🤖](https://docs.github.com/en/code-security/dependabot) to [secure](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates) and [update](https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates#about-version-updates-for-dependencies) project dependencies by automatically initiating pull requests for package upgrades. The duty of project maintainers is to review, test, approve, and merge these Dependabot-generated pull requests. + +## Release + +Project maintainers are entrusted with the task of publishing new releases. Releases are automated with Google's [release-please](https://github.com/googleapis/release-please) GitHub action. Simply put, to publish a release, you simply need to merge the release pull request (PR) 🚀. + +The release-please GitHub action parses [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0) to help automate the release process. It automatically generates a release PR, which is continuously updated as new commits are merged into the main branch. Once maintainers decide that it's time to publish a new release, they can merge the release PR. + +Upon merging the release PR, the GitHub action initiates a series of tasks: + +1. Updates the `CHANGELOG.md` and `package.json` files. +1. Tags the commit associated with the release with the [version](https://semver.org) number. +1. Creates a new GitHub release based on this tag. +1. Publishes a new version of [the package](https://www.npmjs.com/package/@sheet-ui/sheet) to npm. + +## Versioning + +This project follows [Semantic Versioning 2.0](https://semver.org/) and the release tooling automatically parses the semantic version based on the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0). diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..347e67e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,55 @@ +name: Bug Report +description: File an issue +title: "[bug] " +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report. Please provide thorough context of the issue. + + - type: input + attributes: + label: Version + description: What version of @sheet-ui/sheet are you using? + placeholder: 0.0.x + validations: + required: true + + - type: textarea + attributes: + label: Unexpected behavior + description: A thorough description of the unexpected behavior. You can also attach images, videos, code snippets below. + validations: + required: true + + - type: textarea + attributes: + label: Expected behavior + description: A thorough description of the expected behavior. + validations: + required: true + + - type: textarea + attributes: + label: Steps to reproduce + description: Steps to reproduce the unexpected behavior. + validations: + required: false + + - type: input + attributes: + label: Minimal reproducible demo of issue + description: | + A link to a demo makes investigating the issue easier. Demos can be hosted on CodeSandbox or GitHub. + placeholder: https://codesandbox.io + validations: + required: false + + - type: textarea + attributes: + label: Anything else? + description: | + Anything that will provide more context about the issue. You can also attach images, videos, code snippets below. + + validations: + required: false diff --git a/.github/workflows/release-please.yaml b/.github/workflows/release-please.yaml new file mode 100644 index 0000000..6942ece --- /dev/null +++ b/.github/workflows/release-please.yaml @@ -0,0 +1,32 @@ +on: + push: + branches: + - main +name: release-please +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: google-github-actions/release-please-action@v3 + id: release + with: + release-type: node + package-name: test-release-please + # The logic below handles the npm publication: + - uses: actions/checkout@v3 + # these if statements ensure that a publication only occurs when + # a new release is created: + if: ${{ steps.release.outputs.release_created }} + - uses: actions/setup-node@v3 + with: + node-version: 20 + registry-url: "https://registry.npmjs.org" + if: ${{ steps.release.outputs.release_created }} + - run: npm ci + if: ${{ steps.release.outputs.release_created }} + - run: npm run build + if: ${{ steps.release.outputs.release_created }} + - run: npm publish --access public + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + if: ${{ steps.release.outputs.release_created }} diff --git a/.gitignore b/.gitignore index b512c09..beac976 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ -node_modules \ No newline at end of file +# dependencies +node_modules + +# artifacts +dist \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..beadd87 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) [2024] ⟠ henryzhu.eth ⟠ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..369ccb4 --- /dev/null +++ b/README.md @@ -0,0 +1,72 @@ +# Sheet + +A mobile web sheet that replicates the Apple-style [sheet experience](https://developer.apple.com/design/human-interface-guidelines/sheets), designed to be accessible to all users. + +
+ +         + +
+ +## Usage + +To use Sheet in your project follow these instructions. + +### Step 1: Install peer dependency + +First, make sure you have the required peer dependency [framer-motion](https://github.com/framer/motion) installed. If you haven't installed it yet, you can do so with the following command: + +``` +npm install framer-motion +``` + +### Step 2: Install the library + +After installing the peer dependency, proceed to install the [@sheet-ui/sheet](https://www.npmjs.com/package/@sheet-ui/sheet) package: + +``` +npm install @sheet-ui/sheet +``` + +### Step 3: Use the component + +The component API provides consumers with a high level of rendering control through a simple interface. + +```tsx +function Example() { + const [isOpen, setOpen] = useState(false); + const toggle = () => setOpen(!isOpen); + + return ( + + + + Title +
Some content goes here
+
+
+ ); +} +``` + +## Development + +To develop `@sheet-ui/sheet`, link the local library to a local test application created with [Next.js](https://nextjs.org) or [Remix](https://remix.run). You can achieve this using `npm link` to connect your library with the test app. + +To avoid issues caused by multiple React instances (such as hooks failing due to different React copies), ensure that both the library and the consumer app share the same React dependency. + +In the root directory of your library, run the following command to link React from your consumer app: + +```sh +npm link ../my-library-consumer/node_modules/react +``` + +Then in the root directory of the consumer app: + +```sh +npm link @sheet-ui/sheet +``` + +## Disclaimer + +Avoid using sheets on desktop platforms; instead, opt for regular [modals](https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal) in desktop applications. While drawing inspiration from Apple's operating system can be beneficial, it's important to remember that the web is a unique platform. Web design should respect its distinct nature, rather than always attempting to mimic native iOS or other operating systems entirely. Ensure you are following [web specifications](https://html.spec.whatwg.org) and [accessible web standards](https://www.w3.org/TR/wai-aria/). diff --git a/dist/index.cjs.js b/dist/index.cjs.js deleted file mode 100644 index baecb43..0000000 --- a/dist/index.cjs.js +++ /dev/null @@ -1,41 +0,0 @@ -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.tsx -var src_exports = {}; -__export(src_exports, { - MyComponent: () => MyComponent -}); -module.exports = __toCommonJS(src_exports); -var import_jsx_runtime = require("react/jsx-runtime"); -function MyComponent({ - children, - person -}) { - return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [ - children, - /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [ - /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { children: person.name }), - /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { children: person.age }) - ] }) - ] }); -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - MyComponent -}); diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index a07cc34..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import * as React from "react"; -export interface Person { - name: string; - age: number; -} -export declare function MyComponent({ children, person, }: { - children: React.ReactNode; - person: Person; -}): any; diff --git a/dist/index.esm.js b/dist/index.esm.js deleted file mode 100644 index 9c203a8..0000000 --- a/dist/index.esm.js +++ /dev/null @@ -1,17 +0,0 @@ -// src/index.tsx -import { Fragment, jsx, jsxs } from "react/jsx-runtime"; -function MyComponent({ - children, - person -}) { - return /* @__PURE__ */ jsxs(Fragment, { children: [ - children, - /* @__PURE__ */ jsxs("div", { children: [ - /* @__PURE__ */ jsx("h1", { children: person.name }), - /* @__PURE__ */ jsx("h2", { children: person.age }) - ] }) - ] }); -} -export { - MyComponent -}; diff --git a/esbuild.config.mjs b/esbuild.config.mjs index 8c13273..66fa6e3 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -2,26 +2,28 @@ import { build } from "esbuild"; const isProduction = process.env.NODE_ENV === "production"; -// Build for CommonJS build({ - entryPoints: ["src/index.tsx"], // or 'src/index.jsx' if not using TypeScript - bundle: true, - outfile: "dist/index.cjs.js", - platform: "node", - target: ["es6"], // Target ECMAScript 6 - format: "cjs", // CommonJS format - external: ["react", "react-dom"], // Don't bundle React and ReactDOM - sourcemap: !isProduction, + entryPoints: ["src/index.tsx"], + bundle: true, + outfile: "dist/index.cjs.js", + platform: "node", + target: ["es6"], + format: "cjs", + external: ["react", "react-dom", "framer-motion"], + sourcemap: !isProduction, + minify: isProduction, + treeShaking: isProduction, }).catch(() => process.exit(1)); -// Build for ESModule build({ - entryPoints: ["src/index.tsx"], - bundle: true, - outfile: "dist/index.esm.js", - platform: "neutral", - target: ["es6"], - format: "esm", // ESModule format - external: ["react", "react-dom"], - sourcemap: !isProduction, + entryPoints: ["src/index.tsx"], + bundle: true, + outfile: "dist/index.esm.js", + platform: "neutral", + target: ["es6"], + format: "esm", + external: ["react", "react-dom", "framer-motion"], + sourcemap: !isProduction, + minify: isProduction, + treeShaking: isProduction, }).catch(() => process.exit(1)); diff --git a/package-lock.json b/package-lock.json index 90be02c..0bbdb86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,505 +1,2350 @@ { - "name": "sheet", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "esbuild": "0.23.1", - "typescript": "^5.6.2" - }, - "peerDependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - } - } + "name": "@sheet-ui/sheet", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@sheet-ui/sheet", + "license": "MIT", + "dependencies": { + "react-aria-components": "^1.4.0" + }, + "devDependencies": { + "@types/react": "^18.3.11", + "esbuild": "0.24.0", + "typescript": "^5.6.2", + "vite": "^5.4.8" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "framer-motion": "^11.11.1", + "react": "^18.3.1", + "react-dom": "^18.3.1" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", + "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", + "dependencies": { + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.8", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", + "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/icu-skeleton-parser": "1.8.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", + "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@internationalized/date": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.6.tgz", + "integrity": "sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/message": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.5.tgz", + "integrity": "sha512-hjEpLKFlYA3m5apldLqzHqw531qqfOEq0HlTWdfyZmcloWiUbWsYXD6YTiUmQmOtarthzhdjCAwMVrB8a4E7uA==", + "dependencies": { + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.4.tgz", + "integrity": "sha512-h9huwWjNqYyE2FXZZewWqmCdkw1HeFds5q4Siuoms3hUQC5iPJK3aBmkFZoDSLN4UD0Bl8G22L/NdHpeOr+/7A==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/string": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.4.tgz", + "integrity": "sha512-BcyadXPn89Ae190QGZGDUZPqxLj/xsP4U1Br1oSy8yfIjmpJ8cJtGYleaodqW/EmzFjwELtwDojLkf3FhV6SjA==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-aria/accordion": { + "version": "3.0.0-alpha.34", + "resolved": "https://registry.npmjs.org/@react-aria/accordion/-/accordion-3.0.0-alpha.34.tgz", + "integrity": "sha512-3Qoj3StyQbdTYvAXVIbAIk11WtRyo3cdgn6OgwPAvN6c1r8R7X/J9DHTykZRrlF6TOGcdE0H0yrmPrlG92ObmA==", + "dependencies": { + "@react-aria/button": "^3.10.0", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/tree": "^3.8.5", + "@react-types/accordion": "3.0.0-alpha.24", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/breadcrumbs": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.17.tgz", + "integrity": "sha512-LJQ+u3TbPmtAWZ3/qC6VfLCzXiwVoB6GmI+HJ2pbjs6H9L8MoiLHsA4mgcz+P0rvx7SCs0Rhvy4JurV6R/R4xw==", + "dependencies": { + "@react-aria/i18n": "^3.12.3", + "@react-aria/link": "^3.7.5", + "@react-aria/utils": "^3.25.3", + "@react-types/breadcrumbs": "^3.7.8", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/button": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.10.0.tgz", + "integrity": "sha512-mhbn2tEsr991sjG6YMH6oN3ELWb4YvZZ8mnZHMNLa3l8T00PV0ClvQBsUndo6uSvuTHhpFzmMMkJFhYYUwCKlw==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-stately/toggle": "^3.7.8", + "@react-types/button": "^3.10.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/calendar": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.12.tgz", + "integrity": "sha512-C8VRjRwEVPaGoCtjOlC0lb3mVSz4ajbal8jfvcbp7LOqCcmOVTUbiM7EPTy60EfZRanFNSp2D1ZstEZDU+cqsg==", + "dependencies": { + "@internationalized/date": "^3.5.6", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/live-announcer": "^3.4.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/calendar": "^3.5.5", + "@react-types/button": "^3.10.0", + "@react-types/calendar": "^3.4.10", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/checkbox": { + "version": "3.14.7", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.7.tgz", + "integrity": "sha512-aqVxXcr/8P7pQ7R34DlJX2SdBvWtHof9lLTVBY/9tgMplcKIoVBdlVUYPtqWxT3tGan+rruPQHbzTx8zJRFJyg==", + "dependencies": { + "@react-aria/form": "^3.0.9", + "@react-aria/interactions": "^3.22.3", + "@react-aria/label": "^3.7.12", + "@react-aria/toggle": "^3.10.8", + "@react-aria/utils": "^3.25.3", + "@react-stately/checkbox": "^3.6.9", + "@react-stately/form": "^3.0.6", + "@react-stately/toggle": "^3.7.8", + "@react-types/checkbox": "^3.8.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/collections": { + "version": "3.0.0-alpha.5", + "resolved": "https://registry.npmjs.org/@react-aria/collections/-/collections-3.0.0-alpha.5.tgz", + "integrity": "sha512-8m8yZe1c5PYCylEN4lcG3ZL/1nyrON95nVsoknC8shY1uKP01oJd7w+f6hvVza0tJRQuVe4zW3gO4FVjv33a5g==", + "dependencies": { + "@react-aria/ssr": "^3.9.6", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.0.0.tgz", + "integrity": "sha512-IwHI4e2fUHUOZHRrL2MsxGZFp/RCR2cLjm39gT41jVSuH4zjxueUf96NDm6c7FD0mB5vfk0jo+KJMnShL1a2rg==", + "dependencies": { + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/numberfield": "^3.11.7", + "@react-aria/slider": "^3.7.12", + "@react-aria/spinbutton": "^3.6.9", + "@react-aria/textfield": "^3.14.9", + "@react-aria/utils": "^3.25.3", + "@react-aria/visually-hidden": "^3.8.16", + "@react-stately/color": "^3.8.0", + "@react-stately/form": "^3.0.6", + "@react-types/color": "^3.0.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/combobox": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.10.4.tgz", + "integrity": "sha512-jzLyRwpwH5SCfQl5giLSwLaw9EKlRiMG39kDZLRB4MQ1MN4sIdIP2TXBbdYcSLtYjduJm2JfRvs2ezI+QI+umA==", + "dependencies": { + "@react-aria/i18n": "^3.12.3", + "@react-aria/listbox": "^3.13.4", + "@react-aria/live-announcer": "^3.4.0", + "@react-aria/menu": "^3.15.4", + "@react-aria/overlays": "^3.23.3", + "@react-aria/selection": "^3.20.0", + "@react-aria/textfield": "^3.14.9", + "@react-aria/utils": "^3.25.3", + "@react-stately/collections": "^3.11.0", + "@react-stately/combobox": "^3.10.0", + "@react-stately/form": "^3.0.6", + "@react-types/button": "^3.10.0", + "@react-types/combobox": "^3.13.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/datepicker": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.11.3.tgz", + "integrity": "sha512-HwGxDctFry5ew3Cu7gWpUVodaCg//V6NCihSRjLvnW/TWG+UFLzTafxTqqm8eRbicT3DJlXCLOUPk8Ek0txW6A==", + "dependencies": { + "@internationalized/date": "^3.5.6", + "@internationalized/number": "^3.5.4", + "@internationalized/string": "^3.2.4", + "@react-aria/focus": "^3.18.3", + "@react-aria/form": "^3.0.9", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/label": "^3.7.12", + "@react-aria/spinbutton": "^3.6.9", + "@react-aria/utils": "^3.25.3", + "@react-stately/datepicker": "^3.10.3", + "@react-stately/form": "^3.0.6", + "@react-types/button": "^3.10.0", + "@react-types/calendar": "^3.4.10", + "@react-types/datepicker": "^3.8.3", + "@react-types/dialog": "^3.5.13", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/dialog": { + "version": "3.5.18", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.18.tgz", + "integrity": "sha512-j0x0OwDZKyW2GqBZl2Dw/pHl0uSCzhHOg5jNeulkZC8xQa8COuksQf5NFzPmgRPnzqpbgvSzCSs41ymS8spmFg==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/overlays": "^3.23.3", + "@react-aria/utils": "^3.25.3", + "@react-types/dialog": "^3.5.13", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/disclosure": { + "version": "3.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/@react-aria/disclosure/-/disclosure-3.0.0-alpha.0.tgz", + "integrity": "sha512-/tleriRORdkRJf2JXjiRfhLfXA5WY0nPT3DoodZJgD5Fj/aCjrWXarVGUQuEk9vsH5pwinQiQB5So+cA+xF+UQ==", + "dependencies": { + "@react-aria/button": "^3.10.0", + "@react-aria/selection": "^3.20.0", + "@react-aria/ssr": "^3.9.6", + "@react-aria/utils": "^3.25.3", + "@react-stately/disclosure": "3.0.0-alpha.0", + "@react-stately/toggle": "^3.7.8", + "@react-stately/tree": "^3.8.5", + "@react-types/button": "^3.10.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/dnd": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.7.3.tgz", + "integrity": "sha512-SF7v1AzpXr4CSf98pSzjcSBCaezpP6rsSnSJTz0j2jrYfdQhX0MPA2lyxS+kgU1AEzkK19THQeHuj8hxQc0bVw==", + "dependencies": { + "@internationalized/string": "^3.2.4", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/live-announcer": "^3.4.0", + "@react-aria/overlays": "^3.23.3", + "@react-aria/utils": "^3.25.3", + "@react-stately/dnd": "^3.4.3", + "@react-types/button": "^3.10.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.3.tgz", + "integrity": "sha512-WKUElg+5zS0D3xlVn8MntNnkzJql2J6MuzAMP8Sv5WTgFDse/XGR842dsxPTIyKKdrWVCRegCuwa4m3n/GzgJw==", + "dependencies": { + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/form": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.9.tgz", + "integrity": "sha512-9M6IfC5t47G19c8roHWnkKd275BrECTzyTsc4rzf5OepJfHfG4evST6x+4gGOFYi8soC9XoQdJl4TRh/mft+gw==", + "dependencies": { + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-stately/form": "^3.0.6", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/grid": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.10.4.tgz", + "integrity": "sha512-3AjJ0hwRhOCIHThIZrGWrjAuKDpaZuBkODW3dvgLqtsNm3tL46DI6U9O3vfp8lNbrWMsXJgjRXwvXvdv0/gwCA==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/live-announcer": "^3.4.0", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/collections": "^3.11.0", + "@react-stately/grid": "^3.9.3", + "@react-stately/selection": "^3.17.0", + "@react-types/checkbox": "^3.8.4", + "@react-types/grid": "^3.2.9", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/gridlist": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.9.4.tgz", + "integrity": "sha512-gGzS4ToSynn2KBycf9UCsWIJIbVl4RjoCjPF4NnukwzHmrXwbtZnlF0xsORQ5QxfqHH9UehTAHWFvOOHJSZZ2w==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/grid": "^3.10.4", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/collections": "^3.11.0", + "@react-stately/list": "^3.11.0", + "@react-stately/tree": "^3.8.5", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/i18n": { + "version": "3.12.3", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.3.tgz", + "integrity": "sha512-0Tp/4JwnCVNKDfuknPF+/xf3/woOc8gUjTU2nCjO3mCVb4FU7KFtjxQ2rrx+6hpIVG6g+N9qfMjRa/ggVH0CJg==", + "dependencies": { + "@internationalized/date": "^3.5.6", + "@internationalized/message": "^3.1.5", + "@internationalized/number": "^3.5.4", + "@internationalized/string": "^3.2.4", + "@react-aria/ssr": "^3.9.6", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.22.3", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.3.tgz", + "integrity": "sha512-RRUb/aG+P0IKTIWikY/SylB6bIbLZeztnZY2vbe7RAG5MgVaCgn5HQ45SI15GlTmhsFG8CnF6slJsUFJiNHpbQ==", + "dependencies": { + "@react-aria/ssr": "^3.9.6", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/label": { + "version": "3.7.12", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.12.tgz", + "integrity": "sha512-u9xT90lAlgb7xiv+p0md9QwCHz65XL7tjS5e29e88Rs3ptkv3aQubTqxVOUTEwzbNUT4A1QqTjUm1yfHewIRUw==", + "dependencies": { + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/link": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.5.tgz", + "integrity": "sha512-j0F1BIdNoE7Tl+0KzzjbrmYuxt4aWAmDZDHvJKiYg71Jb1BAPz71eE1O1ybMoO04+OG/6HrRZTragfSQLAJ58A==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-types/link": "^3.5.8", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/listbox": { + "version": "3.13.4", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.13.4.tgz", + "integrity": "sha512-2aG4jzlB+srYBeM9ap/BNZe0E04yMjY2dPGXcigkaSJt6/yYAHCygXuouf2MzvBfkdV4QWyHIIgWZmAXXl6reg==", + "dependencies": { + "@react-aria/interactions": "^3.22.3", + "@react-aria/label": "^3.7.12", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/collections": "^3.11.0", + "@react-stately/list": "^3.11.0", + "@react-types/listbox": "^3.5.2", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/live-announcer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.4.0.tgz", + "integrity": "sha512-VBxEdMq2SbtRbNTQNcDR2G6E3lEl5cJSBiHTTO8Ln1AL76LiazrylIXGgoktqzCfRQmyq0v8CHk1cNKDU9mvJg==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-aria/menu": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.15.4.tgz", + "integrity": "sha512-4wfq8Lb7AltgSzBHdtypiPOnsRm8hHv7PUuHhlq/VT9yAkEFk4Flc7vKVF6VSFqrnCfyCf66B5aeapjNInAONg==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/overlays": "^3.23.3", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/collections": "^3.11.0", + "@react-stately/menu": "^3.8.3", + "@react-stately/tree": "^3.8.5", + "@react-types/button": "^3.10.0", + "@react-types/menu": "^3.9.12", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/meter": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.17.tgz", + "integrity": "sha512-08wbQhfvVWzpWilhn/WD7cQ7TqafS/66umTk7+X6BW6TrS1//6loNNJV62IC3F7sskel4iEAtl2gW0WpW8zEdg==", + "dependencies": { + "@react-aria/progress": "^3.4.17", + "@react-types/meter": "^3.4.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/numberfield": { + "version": "3.11.7", + "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.7.tgz", + "integrity": "sha512-9bqg4sKqc5XLppHzJFRhgtkoeMu0N6Zg0AuVSiE/3CxE5Ad+y8tKpFEx9zh4o5BItyOWy18w5ZXnKjJGjd7waQ==", + "dependencies": { + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/spinbutton": "^3.6.9", + "@react-aria/textfield": "^3.14.9", + "@react-aria/utils": "^3.25.3", + "@react-stately/form": "^3.0.6", + "@react-stately/numberfield": "^3.9.7", + "@react-types/button": "^3.10.0", + "@react-types/numberfield": "^3.8.6", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/overlays": { + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.23.3.tgz", + "integrity": "sha512-vRW4DL466a27BBIP6dQqmmei4nX/nsur6DyF0Hmd46ygwOdvdA+5MwvXZUz9yUamB79UeS9BMQZuBVwhjoMwBQ==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/ssr": "^3.9.6", + "@react-aria/utils": "^3.25.3", + "@react-aria/visually-hidden": "^3.8.16", + "@react-stately/overlays": "^3.6.11", + "@react-types/button": "^3.10.0", + "@react-types/overlays": "^3.8.10", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/progress": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.17.tgz", + "integrity": "sha512-5+01WNibLoNS5KcfU5p6vg7Lhz17plqqzv/uITx28zzj3saaj0VLR7n57Ig2fXe8ZEQoUS89BS3sIEsIf96S1A==", + "dependencies": { + "@react-aria/i18n": "^3.12.3", + "@react-aria/label": "^3.7.12", + "@react-aria/utils": "^3.25.3", + "@react-types/progress": "^3.5.7", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/radio": { + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.8.tgz", + "integrity": "sha512-/vKQhKqpoCB/VqHuc46OOU+31HFtg6svcYzHBbz0wN/DSVCygYeTfB/36kY7x2GWWkT0pCsB4OcHJ+/0G3EfkQ==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/form": "^3.0.9", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/label": "^3.7.12", + "@react-aria/utils": "^3.25.3", + "@react-stately/radio": "^3.10.8", + "@react-types/radio": "^3.8.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/searchfield": { + "version": "3.7.9", + "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.7.9.tgz", + "integrity": "sha512-EHODG7HDFthwG5tx4fh+WP2hjNOp/rPAqdNScKBAN73nEf0F/qQpIwmdZF0EycCOzGSM5hhihjm0yMtTFYuzOQ==", + "dependencies": { + "@react-aria/i18n": "^3.12.3", + "@react-aria/textfield": "^3.14.9", + "@react-aria/utils": "^3.25.3", + "@react-stately/searchfield": "^3.5.7", + "@react-types/button": "^3.10.0", + "@react-types/searchfield": "^3.5.9", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/select": { + "version": "3.14.10", + "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.14.10.tgz", + "integrity": "sha512-xHkAJqvfKgnH5mVYwZj3ME7/Q3wUzgUZDK/iVuXUs3cAYap8ybM2d/2zOGcqv1keZHBUzwp9QtaN//FYK13jIA==", + "dependencies": { + "@react-aria/form": "^3.0.9", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/label": "^3.7.12", + "@react-aria/listbox": "^3.13.4", + "@react-aria/menu": "^3.15.4", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-aria/visually-hidden": "^3.8.16", + "@react-stately/select": "^3.6.8", + "@react-types/button": "^3.10.0", + "@react-types/select": "^3.9.7", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/selection": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.20.0.tgz", + "integrity": "sha512-h3giMcXo4SMZRL5HrqZvOLNTsdh5jCXwLUx0wpj/2EF0tcYQL6WDfn1iJ+rHARkUIs7X70fUV8iwlbUySZy1xg==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-stately/selection": "^3.17.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/separator": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.4.3.tgz", + "integrity": "sha512-L+eCmSGfRJ9jScHZqBkmOkp44LBARisDjRdYbGrLlsAEcOiHUXufnfpxz2rgkUGBdUgnI9hIk12q5kdy0UxGjg==", + "dependencies": { + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/slider": { + "version": "3.7.12", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.12.tgz", + "integrity": "sha512-yZWBGxDHBL5Gjjdnz+igdO7VfYND9iZsSqynadZthWtfy1jA+qBR25I+Soc0D9gkr/2/JUJkFgkllYF1RzWMUQ==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/label": "^3.7.12", + "@react-aria/utils": "^3.25.3", + "@react-stately/slider": "^3.5.8", + "@react-types/shared": "^3.25.0", + "@react-types/slider": "^3.7.6", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/spinbutton": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.9.tgz", + "integrity": "sha512-m+uVJdiIc2LrLVDGjU7p8P2O2gUvTN26GR+NgH4rl+tUSuAB0+T1rjls/C+oXEqQjCpQihEB9Bt4M+VHpzmyjA==", + "dependencies": { + "@react-aria/i18n": "^3.12.3", + "@react-aria/live-announcer": "^3.4.0", + "@react-aria/utils": "^3.25.3", + "@react-types/button": "^3.10.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.6.tgz", + "integrity": "sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/switch": { + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.8.tgz", + "integrity": "sha512-6Q0w7o+liB0ztKPL9UaRfX+hPPuy71AL3SuVCMK7RKfPqZwcmlwUDp2gr3j5fvs8gLev0r42XtEBqmGwkHTkEw==", + "dependencies": { + "@react-aria/toggle": "^3.10.8", + "@react-stately/toggle": "^3.7.8", + "@react-types/shared": "^3.25.0", + "@react-types/switch": "^3.5.6", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/table": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.15.4.tgz", + "integrity": "sha512-t4+vtUF63i6OrXmZ0AA/RmWyIt8cieUm7cSXhQMooAgUjkvVqTNkQQRsntVOb+UNI5KmiGSe4jB3H4GVXz2X9w==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/grid": "^3.10.4", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/live-announcer": "^3.4.0", + "@react-aria/utils": "^3.25.3", + "@react-aria/visually-hidden": "^3.8.16", + "@react-stately/collections": "^3.11.0", + "@react-stately/flags": "^3.0.4", + "@react-stately/table": "^3.12.3", + "@react-types/checkbox": "^3.8.4", + "@react-types/grid": "^3.2.9", + "@react-types/shared": "^3.25.0", + "@react-types/table": "^3.10.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/tabs": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.6.tgz", + "integrity": "sha512-iPQ2Im+srnSB06xIdVNHZZDJnZmUR0IG0MZAp6FXmbkCeLAd9tZQHgSFYwswBfgAStNnyFQHP5aSBJOJMRCACg==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/i18n": "^3.12.3", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/tabs": "^3.6.10", + "@react-types/shared": "^3.25.0", + "@react-types/tabs": "^3.3.10", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/tag": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.4.6.tgz", + "integrity": "sha512-Uf1sPabwJx99diyXJTaVguiYozS49opjQxmK1PPbb87ipNN1YlSDVbP05IelVMbnbxXHudsRmzPOBmmblcj1GQ==", + "dependencies": { + "@react-aria/gridlist": "^3.9.4", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/label": "^3.7.12", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/list": "^3.11.0", + "@react-types/button": "^3.10.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/textfield": { + "version": "3.14.9", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.9.tgz", + "integrity": "sha512-LPwZhthDVLyvnzXWco4eyYCD2pFmQ4Vw9ha9tb3QkZUIP6j8E52y76j0c59Nq7XYus3IHatVe7yYQk7kbo8Zrg==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/form": "^3.0.9", + "@react-aria/label": "^3.7.12", + "@react-aria/utils": "^3.25.3", + "@react-stately/form": "^3.0.6", + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", + "@react-types/textfield": "^3.9.7", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toggle": { + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.8.tgz", + "integrity": "sha512-N6WTgE8ByMYY+ZygUUPGON2vW5NrxwU91H98+Nozl+Rq6ZYR2fD9i8oRtLtrYPxjU2HmaFwDyQdWvmMJZuDxig==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-stately/toggle": "^3.7.8", + "@react-types/checkbox": "^3.8.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/toolbar": { + "version": "3.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.9.tgz", + "integrity": "sha512-P80zgbPb0aIg22fHlgHRXXUSpNSAOnh1ljsLiSHAGdXPrC5nRijYwwKi7DNRsXqD+ljEJwF6ekZPo95dXXeYAA==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/i18n": "^3.12.3", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/tooltip": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.8.tgz", + "integrity": "sha512-dlWfS3w8E6dw5Xoist4cVX2GQE5oh3VQr88dRyLto7BAPLFrp3I+8c9mZCVUobLS/f5QcQzLkqw750s4ENCyiw==", + "dependencies": { + "@react-aria/focus": "^3.18.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-stately/tooltip": "^3.4.13", + "@react-types/shared": "^3.25.0", + "@react-types/tooltip": "^3.4.12", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/tree": { + "version": "3.0.0-beta.0", + "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.0.0-beta.0.tgz", + "integrity": "sha512-bF9sp7x+Ciy0N2KJwy8epmDoNblyVmeB4vR/KWLVIKMjANCpzTbvhWZUBpQxkpO0eupInU2uN+FMNr0WKMyd7Q==", + "dependencies": { + "@react-aria/gridlist": "^3.9.4", + "@react-aria/i18n": "^3.12.3", + "@react-aria/selection": "^3.20.0", + "@react-aria/utils": "^3.25.3", + "@react-stately/tree": "^3.8.5", + "@react-types/button": "^3.10.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.25.3", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.3.tgz", + "integrity": "sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA==", + "dependencies": { + "@react-aria/ssr": "^3.9.6", + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/virtualizer": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-4.0.3.tgz", + "integrity": "sha512-neSf+EXtqmQiccHcp9CS2RbH3xA6FuZggLzGsM1NoqDdXIL7TLfc7lhaqi8VAZ03e1FCUSye08BCRk3DdpUiyA==", + "dependencies": { + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-stately/virtualizer": "^4.1.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/visually-hidden": { + "version": "3.8.16", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.16.tgz", + "integrity": "sha512-3zThVIzEprez4A/GajOut6/JQ4WCu2ROHGZ1xH1+2GFjBJQaTfPBIjg6UIwaT7sgHRQIik8QidogLqXHbp81yA==", + "dependencies": { + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/calendar": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.5.tgz", + "integrity": "sha512-HzaiDRhrmaYIly8hRsjjIrydLkldiw1Ws6T/130NLQOt+VPwRW/x0R+nil42mA9LZ6oV0XN0NpmG5tn7TaKRGw==", + "dependencies": { + "@internationalized/date": "^3.5.6", + "@react-stately/utils": "^3.10.4", + "@react-types/calendar": "^3.4.10", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/checkbox": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.9.tgz", + "integrity": "sha512-JrY3ecnK/SSJPxw+qhGhg3YV4e0CpUcPDrVwY3mSiAE932DPd19xr+qVCknJ34H7JYYt/q0l2z0lmgPnl96RTg==", + "dependencies": { + "@react-stately/form": "^3.0.6", + "@react-stately/utils": "^3.10.4", + "@react-types/checkbox": "^3.8.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/collections": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.11.0.tgz", + "integrity": "sha512-TiJeJjHMPSbbeAhmCXLJNSCk0fa5XnCvEuYw6HtQzDnYiq1AD7KAwkpjC5NfKkjqF3FLXs/v9RDm/P69q6rYzw==", + "dependencies": { + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/color": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.8.0.tgz", + "integrity": "sha512-lBH91HEStZeayhE/FkDMt9WC0UISQiAn8DoD2hfpTGeeWscX/soyxZA7oVL7zBOG9RfDBMNzF+CybVROrWSKAQ==", + "dependencies": { + "@internationalized/number": "^3.5.4", + "@internationalized/string": "^3.2.4", + "@react-aria/i18n": "^3.12.3", + "@react-stately/form": "^3.0.6", + "@react-stately/numberfield": "^3.9.7", + "@react-stately/slider": "^3.5.8", + "@react-stately/utils": "^3.10.4", + "@react-types/color": "^3.0.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/combobox": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.10.0.tgz", + "integrity": "sha512-4W4HCCjjoddW/LZM3pSSeLoV7ncYXlaICKmqlBcbtLR5jY4U5Kx+pPpy3oJ1vCdjDHatIxZ0tVKEBP7vBQVeGQ==", + "dependencies": { + "@react-stately/collections": "^3.11.0", + "@react-stately/form": "^3.0.6", + "@react-stately/list": "^3.11.0", + "@react-stately/overlays": "^3.6.11", + "@react-stately/select": "^3.6.8", + "@react-stately/utils": "^3.10.4", + "@react-types/combobox": "^3.13.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/data": { + "version": "3.11.7", + "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.11.7.tgz", + "integrity": "sha512-2YJ+Lmca18f/h7jiZiU9j2IhBJl6BFO1BWlwvcCAH/eCWTdveX8gzsUdW++0szzpJaoCilTCYoi8z7QWyVH9jQ==", + "dependencies": { + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/datepicker": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.10.3.tgz", + "integrity": "sha512-6PJW1QMwk6BQMktV9L6DA4f2rfAdLfbq3iTNLy4qxd5IfNPLMUZiJGGTj+cuqx0WcEl+q5irp+YhKBpbmhPZHg==", + "dependencies": { + "@internationalized/date": "^3.5.6", + "@internationalized/string": "^3.2.4", + "@react-stately/form": "^3.0.6", + "@react-stately/overlays": "^3.6.11", + "@react-stately/utils": "^3.10.4", + "@react-types/datepicker": "^3.8.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/disclosure": { + "version": "3.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/@react-stately/disclosure/-/disclosure-3.0.0-alpha.0.tgz", + "integrity": "sha512-CbFUrEwhsP5+44PMHipn/Cd61VTvqyKmx1yeNDyvj/4bYhmxYLgQp/Ma+iEqe23JkXJh2JO/ws3l9FnebScCJQ==", + "dependencies": { + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/dnd": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.4.3.tgz", + "integrity": "sha512-sUvhmMxFEw6P2MW7walx0ntakIihxdPxA06K9YZ3+ReaUvzQuRw5cFDaTTHrlegWRMYD0CyQaKlGIaTQihhvVA==", + "dependencies": { + "@react-stately/selection": "^3.17.0", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/flags": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.0.4.tgz", + "integrity": "sha512-RNJEkOALwKg+JeYsfNlfPc4GXm7hiBLX0yuHOkRapWEyDOfi0cinkV/TZG4goOZdQ5tBpHmemf2qqiHAxqHlzQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-stately/form": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.6.tgz", + "integrity": "sha512-KMsxm3/V0iCv/6ikt4JEjVM3LW2AgCzo7aNotMzRobtwIo0RwaUo7DQNY00rGgFQ3/IjzI6DcVo13D+AVE/zXg==", + "dependencies": { + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/grid": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.9.3.tgz", + "integrity": "sha512-P5KgCNYwm/n8bbLx6527li89RQWoESikrsg2MMyUpUd6IJ321t2pGONGRRQzxE0SBMolPRDJKV0Do2OlsjYKhQ==", + "dependencies": { + "@react-stately/collections": "^3.11.0", + "@react-stately/selection": "^3.17.0", + "@react-types/grid": "^3.2.9", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/layout": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-4.0.3.tgz", + "integrity": "sha512-zFLXnPalWWVCdFGcPAb+nywSTz/xAnKRxb7zT+YDa5U80DHArDGKZcQ+by0+2Sf8yaYolROco4my+BERPXJB6A==", + "dependencies": { + "@react-stately/collections": "^3.11.0", + "@react-stately/table": "^3.12.3", + "@react-stately/virtualizer": "^4.1.0", + "@react-types/grid": "^3.2.9", + "@react-types/shared": "^3.25.0", + "@react-types/table": "^3.10.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/list": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.11.0.tgz", + "integrity": "sha512-O+BxXcbtoLZWn4QIT54RoFUaM+QaJQm6s0ZBJ3Jv4ILIhukVOc55ra+aWMVlXFQSpbf6I3hyVP6cz1yyvd5Rtw==", + "dependencies": { + "@react-stately/collections": "^3.11.0", + "@react-stately/selection": "^3.17.0", + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/menu": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.8.3.tgz", + "integrity": "sha512-sV63V+cMgzipx/N7dq5GaXoItfXIfFEpCtlk3PM2vKstlCJalszXrdo+x996bkeU96h0plB7znAlhlXOeTKzUg==", + "dependencies": { + "@react-stately/overlays": "^3.6.11", + "@react-types/menu": "^3.9.12", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/numberfield": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.7.tgz", + "integrity": "sha512-PjSgCCpYasGCEAznFQNqa2JhhEQ5+/2eMiV7ZI5j76q3edTNF8G5OOCl2RazDbzFp6vDAnRVT7Kctx5Tl5R/Zw==", + "dependencies": { + "@internationalized/number": "^3.5.4", + "@react-stately/form": "^3.0.6", + "@react-stately/utils": "^3.10.4", + "@react-types/numberfield": "^3.8.6", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/overlays": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.11.tgz", + "integrity": "sha512-usuxitwOx4FbmOW7Og4VM8R8ZjerbHZLLbFaxZW7pWLs7Ypway1YhJ3SWcyNTYK7NEk4o602kSoU6MSev1Vgag==", + "dependencies": { + "@react-stately/utils": "^3.10.4", + "@react-types/overlays": "^3.8.10", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/radio": { + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.8.tgz", + "integrity": "sha512-VRq6Gzsbk3jzX6hdrSoDoSra9vLRsOi2pLkvW/CMrJ0GSgMwr8jjvJKnNFvYJ3eYQb20EwkarsOAfk7vPSIt/Q==", + "dependencies": { + "@react-stately/form": "^3.0.6", + "@react-stately/utils": "^3.10.4", + "@react-types/radio": "^3.8.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/searchfield": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.7.tgz", + "integrity": "sha512-VxEG4tWDypdXQ8f7clZBu5Qmc4osqDBeA/gNMA2i1j/h2zRVcCJ0fRCHuDeXLSWBqF1XXAI4TWV53fBBwJusbg==", + "dependencies": { + "@react-stately/utils": "^3.10.4", + "@react-types/searchfield": "^3.5.9", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/select": { + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.8.tgz", + "integrity": "sha512-fLAVzGeYSdYdBdrEVws6Pb1ywFPdapA0eWphoW5s3fS0/pKcVWwbCHeHlaBEi1ISyqEubQZFGQdeFKm/M46Hew==", + "dependencies": { + "@react-stately/form": "^3.0.6", + "@react-stately/list": "^3.11.0", + "@react-stately/overlays": "^3.6.11", + "@react-types/select": "^3.9.7", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/selection": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.17.0.tgz", + "integrity": "sha512-It3LRTaFOavybuDBvBH2mvCh73OL4awqvN4tZ0JzLzMtaYSBe9+YmFasYrzB0o7ca17B2q1tpUmsNWaAgIqbLA==", + "dependencies": { + "@react-stately/collections": "^3.11.0", + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/slider": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.8.tgz", + "integrity": "sha512-EDgbrxMq1w3+XTN72MGl3YtAG/j65EYX1Uc3Fh56K00+inJbTdRWyYTrb3NA310fXCd0WFBbzExuH2ohlKQycg==", + "dependencies": { + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", + "@react-types/slider": "^3.7.6", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/table": { + "version": "3.12.3", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.12.3.tgz", + "integrity": "sha512-8uGrLcNJYeMbFtzRQZFWCBj5kV+7v3jzwoKIL1j9TmYUKow1PTDMQbPJpAZLQhnC2wVMlaFVgDbedSlbBij7Zg==", + "dependencies": { + "@react-stately/collections": "^3.11.0", + "@react-stately/flags": "^3.0.4", + "@react-stately/grid": "^3.9.3", + "@react-stately/selection": "^3.17.0", + "@react-stately/utils": "^3.10.4", + "@react-types/grid": "^3.2.9", + "@react-types/shared": "^3.25.0", + "@react-types/table": "^3.10.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/tabs": { + "version": "3.6.10", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.10.tgz", + "integrity": "sha512-F7wfoiNsrBy7c02AYHyE1USGgj05HQ0hp7uXmQjp2LEa+AA0NKKi3HdswTHHySxb0ZRuoEE7E7vp/gXQYx2/Ow==", + "dependencies": { + "@react-stately/list": "^3.11.0", + "@react-types/shared": "^3.25.0", + "@react-types/tabs": "^3.3.10", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/toggle": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.8.tgz", + "integrity": "sha512-ySOtkByvIY54yIu8IZ4lnvomQA0H+/mkZnd6T5fKN3tjvIzHmkUk3TAPmNInUxHX148tSW6mWwec0xvjYqEd6w==", + "dependencies": { + "@react-stately/utils": "^3.10.4", + "@react-types/checkbox": "^3.8.4", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/tooltip": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.13.tgz", + "integrity": "sha512-zQ+8FQ7Pi0Cz852dltXb6yaryjE18K3byK4tIO3e5vnrZHEGvfdxowc+v9ak5UV93kVrYoOVmfZHRcEaTXTBNA==", + "dependencies": { + "@react-stately/overlays": "^3.6.11", + "@react-types/tooltip": "^3.4.12", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/tree": { + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.5.tgz", + "integrity": "sha512-0/tYhsKWQQJTOZFDwh8hY3Qk6ejNFRldGrLeK5kS22UZdvsMFyh7WAi40FTCJy561/VoB0WqQI4oyNPOa9lYWg==", + "dependencies": { + "@react-stately/collections": "^3.11.0", + "@react-stately/selection": "^3.17.0", + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.4.tgz", + "integrity": "sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/virtualizer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-4.1.0.tgz", + "integrity": "sha512-MOaqpY3NloXrpCBvVUb3HL1p3Bh4YRtUq8D2ufC909u5vM6n6G5Swk1XPJ9KHfaftGhb5serwLkm2/Aha5CTbA==", + "dependencies": { + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/accordion": { + "version": "3.0.0-alpha.24", + "resolved": "https://registry.npmjs.org/@react-types/accordion/-/accordion-3.0.0-alpha.24.tgz", + "integrity": "sha512-hwDT4TJH7aHCG8m9QsTP+7xgW7x7k2TY+WHlMRr6qDS6WhTCwd41dCdagxC0SZtulzZuWqISBxZifVrh4Tynew==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/breadcrumbs": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.8.tgz", + "integrity": "sha512-+BW2a+PrY8ArZ+pKecz13oJFrUAhthvXx17o3x0BhWUhRpAdtmTYt2hjw8zNanm2j0Kvgo1HYKgvtskCRxYcOA==", + "dependencies": { + "@react-types/link": "^3.5.8", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/button": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.10.0.tgz", + "integrity": "sha512-rAyU+N9VaHLBdZop4zasn8IDwf9I5Q1EzHUKMtzIFf5aUlMUW+K460zI/l8UESWRSWAXK9/WPSXGxfcoCEjvAA==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/calendar": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.10.tgz", + "integrity": "sha512-PyjqxwJxSW2IpQx6y0D9O34fRCWn1gv9q0qFhgaIigIQrPg8zTE/CC7owHLxAtgCnnCt8exJ5rqi414csaHKlA==", + "dependencies": { + "@internationalized/date": "^3.5.6", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/checkbox": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.4.tgz", + "integrity": "sha512-fvZrlQmlFNsYHZpl7GVmyYQlKdUtO5MczMSf8z3TlSiCb5Kl3ha9PsZgLhJqGuVnzB2ArIBz0eZrYa3k0PhcpA==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.0.0.tgz", + "integrity": "sha512-VUH8CROAM69GsMBilrJ1xyAdVsWL01nXQYrkZJxAEApv1OrcpIGSdsXLcGrjsrhjjiNVXxWFnqYRMsKkLzIl7g==", + "dependencies": { + "@react-types/shared": "^3.25.0", + "@react-types/slider": "^3.7.6" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/combobox": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.13.0.tgz", + "integrity": "sha512-kH/a+Fjpr54M2JbHg9RXwMjZ9O+XVsdOuE5JCpWRibJP1Mfl1md8gY6y6zstmVY8COrSqFvMZWB+PzwaTWjTGw==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/datepicker": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.8.3.tgz", + "integrity": "sha512-Y4qfPRBB6uzocosCOWSYMuwiZ3YXwLWQYiFB4KCglkvHyltbNz76LgoBEnclYA5HjwosIk4XywiXvHSYry8JnQ==", + "dependencies": { + "@internationalized/date": "^3.5.6", + "@react-types/calendar": "^3.4.10", + "@react-types/overlays": "^3.8.10", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/dialog": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.13.tgz", + "integrity": "sha512-9k8daVcAqQsySkzDY6NIVlyGxtpEip4TKuLyzAehthbv78GQardD5fHdjQ6eXPRS4I2qZrmytrFFrlOnwWVGHw==", + "dependencies": { + "@react-types/overlays": "^3.8.10", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/form": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.7.tgz", + "integrity": "sha512-CVRjCawPhYRHi/LuikOC2kz5vgvmjjKmF4/wUgR2QzD1Ok4wY1ZGSx9M9EZptCIZAt2mToR6woyLUdtzy+foeQ==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/grid": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.9.tgz", + "integrity": "sha512-eMw0d2UIZ4QTzGgD1wGGPw0cv67KjAOCp4TcwWjgDV7Wa5SVV/UvOmpnIVDyfhkG/4KRI5OR9h+isy76B726qA==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/link": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.8.tgz", + "integrity": "sha512-l/YGXddgAbLnIT7ekftXrK1D4n8NlLQwx0d4usyZpaxP1KwPzuwng20DxynamLc1atoKBqbUtZAnz32pe7vYgw==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/listbox": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.5.2.tgz", + "integrity": "sha512-ML/Bt/MeO0FiixcuFQ+smpu1WguxTOqHDjSnhc1vcNxVQFWQOhyVy01LAY2J/T9TjfjyYGD41vyMTI0f6fcLEQ==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/menu": { + "version": "3.9.12", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.12.tgz", + "integrity": "sha512-1SPnkHKJdvOfwv9fEgK1DI6DYRs4D3hW2XcWlLhVXSjaC68CzOHGwFhKIKvZiDTW/11L770PRSEloIxHR09uFQ==", + "dependencies": { + "@react-types/overlays": "^3.8.10", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/meter": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.4.tgz", + "integrity": "sha512-0SEmPkShByC1gYkW7l+iJPg8QfEe2VrgwTciAtTfC4KIqAYmJVQtq6L+4d72EMxOh8RpQHePaY/RFHEJXAh72A==", + "dependencies": { + "@react-types/progress": "^3.5.7" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/numberfield": { + "version": "3.8.6", + "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.6.tgz", + "integrity": "sha512-VtWEMAXUO1S9EEZI8whc7xv6DVccxhbWsRthMCg/LxiwU3U5KAveadNc2c5rtXkRpd3cnD5xFzz3dExXdmHkAg==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/overlays": { + "version": "3.8.10", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.10.tgz", + "integrity": "sha512-IcnB+VYfAJazRjWhBKZTmVMh3KTp/B1rRbcKkPx6t8djP9UQhKcohP7lAALxjJ56Jjz/GFC6rWyUcnYH0NFVRA==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/progress": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.7.tgz", + "integrity": "sha512-EqMDHmlpoZUZzTjdejGIkSM0pS2LBI9NdadHf3bDNTycHv+5L1xpMHUg8RGOW8a3sRVLRvfN1aO9l75QZkyj+w==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/radio": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.4.tgz", + "integrity": "sha512-GCuOwQL19iwKa74NAIk9hv4ivyI8oW1+ZCuc2fzyDdeQjzTIlv3qrIyShwpVy1IoI7/4DYTMZm/YXPoKhu5TTA==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/searchfield": { + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.5.9.tgz", + "integrity": "sha512-c/x8BWpH1Zq+fWpeBtzw2AhQhGi7ahWPicV7PlnqwIGO0MrH/QCjX0dj+I+1xpcAh8Eq6ECa79HE74Rw6aJmFg==", + "dependencies": { + "@react-types/shared": "^3.25.0", + "@react-types/textfield": "^3.9.7" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/select": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.7.tgz", + "integrity": "sha512-Jva4ixfB4EEdy+WmZkUoLiQI7vVfHPxM73VuL7XDxvAO+YKiIztDTcU720QVNhxTMmQvCxfRBXWar8aodCjLiw==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/shared": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.25.0.tgz", + "integrity": "sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/slider": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.6.tgz", + "integrity": "sha512-z72wnEzSge6qTD9TUoUPp1A4j4jXk/MVii6rGE78XeE/Pq7HyyjU5bCagryMr9PC9MKa/oTiHcshKqWBDf57GA==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/switch": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.6.tgz", + "integrity": "sha512-gJ8t2yTCgcitz4ON4ELcLLmtlDkn2MUjjfu3ez/cwA1X/NUluPYkhXj5Z6H+KOlnveqrKCZDRoTgK74cQ6Cvfg==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/table": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.10.2.tgz", + "integrity": "sha512-YzA4hcsYfnFFpA2UyGb1KKhLpWgaj5daApqjp126tCIosl8k1KxZmhKD50cwH0Jm19lALJseqo5VdlcJtcr4qg==", + "dependencies": { + "@react-types/grid": "^3.2.9", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/tabs": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.10.tgz", + "integrity": "sha512-s/Bw/HCIdWJPBw4O703ghKqhjGsIerRMIDxA88hbQYzfTDD6bkFDjCnsP2Tyy1G8Dg2rSPFUEE+k+PpLzqeEfQ==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/textfield": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.7.tgz", + "integrity": "sha512-vU5+QCOF9HgWGjAmmy+cpJibVW5voFomC5POmYHokm7kivYcMMjlonsgWwg/0xXrqE2qosH3tpz4jFoEuig1NQ==", + "dependencies": { + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/tooltip": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.12.tgz", + "integrity": "sha512-FwsdSQ3UDIDORanQMGMLyzSUabw4AkKhwcRdPv4d5OT8GmJr7mBdZynfcsrKLJ0fzskIypMqspoutZidsI0MQg==", + "dependencies": { + "@react-types/overlays": "^3.8.10", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz", + "integrity": "sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@swc/helpers": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", + "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", + "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" + } + }, + "node_modules/framer-motion": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.11.1.tgz", + "integrity": "sha512-Ucr9eHSrk0d+l6vyl9fvq6omh/PAWHjS+PlczpsoUdhJo1TuF3ULWJNuAMnpWQ1dGyPOyoUVuYlUKjE/s8dyCA==", + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/intl-messageformat": { + "version": "10.5.14", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", + "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.8", + "tslib": "^2.4.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, + "node_modules/lightningcss": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.27.0.tgz", + "integrity": "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.27.0", + "lightningcss-darwin-x64": "1.27.0", + "lightningcss-freebsd-x64": "1.27.0", + "lightningcss-linux-arm-gnueabihf": "1.27.0", + "lightningcss-linux-arm64-gnu": "1.27.0", + "lightningcss-linux-arm64-musl": "1.27.0", + "lightningcss-linux-x64-gnu": "1.27.0", + "lightningcss-linux-x64-musl": "1.27.0", + "lightningcss-win32-arm64-msvc": "1.27.0", + "lightningcss-win32-x64-msvc": "1.27.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", + "integrity": "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-aria": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.35.0.tgz", + "integrity": "sha512-cbbd3iIveLDRnpVrpc1iuz8OMlDdH6u8EjncW3MQuYOiEGaho9xcDtWMKiSEIZASEnd7LK4Rgm5iVPr2O+cssw==", + "dependencies": { + "@internationalized/string": "^3.2.4", + "@react-aria/breadcrumbs": "^3.5.17", + "@react-aria/button": "^3.10.0", + "@react-aria/calendar": "^3.5.12", + "@react-aria/checkbox": "^3.14.7", + "@react-aria/color": "^3.0.0", + "@react-aria/combobox": "^3.10.4", + "@react-aria/datepicker": "^3.11.3", + "@react-aria/dialog": "^3.5.18", + "@react-aria/dnd": "^3.7.3", + "@react-aria/focus": "^3.18.3", + "@react-aria/gridlist": "^3.9.4", + "@react-aria/i18n": "^3.12.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/label": "^3.7.12", + "@react-aria/link": "^3.7.5", + "@react-aria/listbox": "^3.13.4", + "@react-aria/menu": "^3.15.4", + "@react-aria/meter": "^3.4.17", + "@react-aria/numberfield": "^3.11.7", + "@react-aria/overlays": "^3.23.3", + "@react-aria/progress": "^3.4.17", + "@react-aria/radio": "^3.10.8", + "@react-aria/searchfield": "^3.7.9", + "@react-aria/select": "^3.14.10", + "@react-aria/selection": "^3.20.0", + "@react-aria/separator": "^3.4.3", + "@react-aria/slider": "^3.7.12", + "@react-aria/ssr": "^3.9.6", + "@react-aria/switch": "^3.6.8", + "@react-aria/table": "^3.15.4", + "@react-aria/tabs": "^3.9.6", + "@react-aria/tag": "^3.4.6", + "@react-aria/textfield": "^3.14.9", + "@react-aria/tooltip": "^3.7.8", + "@react-aria/utils": "^3.25.3", + "@react-aria/visually-hidden": "^3.8.16", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-aria-components": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.4.0.tgz", + "integrity": "sha512-CpeSeGI2FVT3hOzA28fhIGkrPPQPtz3gVHBfMWkXSuLUBaKFZQhdCLBXlpO5MoZV1RrC+e7mhOVREkw6DvlxKw==", + "dependencies": { + "@internationalized/date": "^3.5.6", + "@internationalized/string": "^3.2.4", + "@react-aria/accordion": "3.0.0-alpha.34", + "@react-aria/collections": "3.0.0-alpha.5", + "@react-aria/color": "^3.0.0", + "@react-aria/disclosure": "3.0.0-alpha.0", + "@react-aria/dnd": "^3.7.3", + "@react-aria/focus": "^3.18.3", + "@react-aria/interactions": "^3.22.3", + "@react-aria/live-announcer": "^3.4.0", + "@react-aria/menu": "^3.15.4", + "@react-aria/toolbar": "3.0.0-beta.9", + "@react-aria/tree": "3.0.0-beta.0", + "@react-aria/utils": "^3.25.3", + "@react-aria/virtualizer": "^4.0.3", + "@react-stately/color": "^3.8.0", + "@react-stately/disclosure": "3.0.0-alpha.0", + "@react-stately/layout": "^4.0.3", + "@react-stately/menu": "^3.8.3", + "@react-stately/table": "^3.12.3", + "@react-stately/utils": "^3.10.4", + "@react-stately/virtualizer": "^4.1.0", + "@react-types/color": "^3.0.0", + "@react-types/form": "^3.7.7", + "@react-types/grid": "^3.2.9", + "@react-types/shared": "^3.25.0", + "@react-types/table": "^3.10.2", + "@swc/helpers": "^0.5.0", + "client-only": "^0.0.1", + "react-aria": "^3.35.0", + "react-stately": "^3.33.0", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-stately": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.33.0.tgz", + "integrity": "sha512-DNPOxYAPuhuXwSuE1s1K7iSgqG2QOBUZq3bsLAd4gUUZje6Qepkhe7TzK2LWarQYAZ3gC9Xhmnz8ie1fdCo0GA==", + "dependencies": { + "@react-stately/calendar": "^3.5.5", + "@react-stately/checkbox": "^3.6.9", + "@react-stately/collections": "^3.11.0", + "@react-stately/color": "^3.8.0", + "@react-stately/combobox": "^3.10.0", + "@react-stately/data": "^3.11.7", + "@react-stately/datepicker": "^3.10.3", + "@react-stately/dnd": "^3.4.3", + "@react-stately/form": "^3.0.6", + "@react-stately/list": "^3.11.0", + "@react-stately/menu": "^3.8.3", + "@react-stately/numberfield": "^3.9.7", + "@react-stately/overlays": "^3.6.11", + "@react-stately/radio": "^3.10.8", + "@react-stately/searchfield": "^3.5.7", + "@react-stately/select": "^3.6.8", + "@react-stately/selection": "^3.17.0", + "@react-stately/slider": "^3.5.8", + "@react-stately/table": "^3.12.3", + "@react-stately/tabs": "^3.6.10", + "@react-stately/toggle": "^3.7.8", + "@react-stately/tooltip": "^3.4.13", + "@react-stately/tree": "^3.8.5", + "@react-types/shared": "^3.25.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/rollup": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz", + "integrity": "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.22.5", + "@rollup/rollup-android-arm64": "4.22.5", + "@rollup/rollup-darwin-arm64": "4.22.5", + "@rollup/rollup-darwin-x64": "4.22.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.5", + "@rollup/rollup-linux-arm-musleabihf": "4.22.5", + "@rollup/rollup-linux-arm64-gnu": "4.22.5", + "@rollup/rollup-linux-arm64-musl": "4.22.5", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.5", + "@rollup/rollup-linux-riscv64-gnu": "4.22.5", + "@rollup/rollup-linux-s390x-gnu": "4.22.5", + "@rollup/rollup-linux-x64-gnu": "4.22.5", + "@rollup/rollup-linux-x64-musl": "4.22.5", + "@rollup/rollup-win32-arm64-msvc": "4.22.5", + "@rollup/rollup-win32-ia32-msvc": "4.22.5", + "@rollup/rollup-win32-x64-msvc": "4.22.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/vite": { + "version": "5.4.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", + "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + } + } } diff --git a/package.json b/package.json index 50f4407..669069d 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,43 @@ { - "name": "@sheet-ui/sheet", - "main": "dist/index.cjs.js", - "module": "dist/index.esm.js", - "scripts": { - "build": "NODE_ENV=production node esbuild.config.mjs && tsc --emitDeclarationOnly", - "build:dev": "NODE_ENV=development node esbuild.config.mjs" - }, - "types": "dist/index.d.ts", - "devDependencies": { - "esbuild": "0.23.1", - "typescript": "^5.6.2" - }, - "peerDependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" - } + "name": "@sheet-ui/sheet", + "author": "henryzhu.eth", + "license": "MIT", + "description": "A 📄 sheet is a modal used to replicate an Apple-like sheet experience on the mobile web.", + "homepage": "https://github.com/sheet-ui/sheet", + "repository": { + "type": "git", + "url": "https://github.com/sheet-ui/sheet" + }, + "bugs": { + "url": "https://github.com/sheet-ui/sheet/issues" + }, + "main": "dist/index.cjs.js", + "module": "dist/index.esm.js", + "types": "dist/index.d.ts", + "files": [ + "dist/" + ], + "sideEffects": false, + "engines": { + "node": ">=20" + }, + "scripts": { + "vite": "vite", + "build": "NODE_ENV=production node esbuild.config.mjs && tsc --emitDeclarationOnly", + "build:dev": "NODE_ENV=development node esbuild.config.mjs" + }, + "devDependencies": { + "@types/react": "^18.3.11", + "esbuild": "0.24.0", + "typescript": "^5.6.2", + "vite": "^5.4.8" + }, + "peerDependencies": { + "framer-motion": "^11.11.1", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "dependencies": { + "react-aria-components": "^1.4.0" + } } diff --git a/src/index.tsx b/src/index.tsx index 6b4e6ce..4540d23 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,24 +1,199 @@ -import * as React from "react"; +import { + Heading, + Dialog, + Modal, + ModalOverlay, + type ModalOverlayProps, +} from "react-aria-components"; -export interface Person { - name: string; - age: number; +import { + useRef, + useEffect, + forwardRef, + useContext, + createContext, + type ReactNode, + type ElementRef, + type RefAttributes, + type ComponentPropsWithoutRef, + type ForwardRefExoticComponent, +} from "react"; + +import { + motion, + animate, + useTransform, + useMotionValue, + AnimatePresence, + useMotionTemplate, + type HTMLMotionProps, +} from "framer-motion"; + +export type Size = "xs" | "sm" | "md" | "lg" | "xl"; + +const MotionModal = motion( + Modal as ForwardRefExoticComponent> +); + +const MotionModalOverlay = motion( + ModalOverlay as ForwardRefExoticComponent< + ModalOverlayProps & RefAttributes + > +); + +const SheetContext = createContext<{ + size: Size; + isOpen: boolean; + onDismiss: () => void; +} | null>(null); + +const staticTransition = { + duration: 0.5, + ease: [0.32, 0.72, 0, 1], +} as const; + +const inertiaTransition = { + type: "inertia", + timeConstant: 300, + bounceDamping: 40, + bounceStiffness: 300, +} as const; + +const SHEET_MARGINS = { + xl: 34, + lg: 192, + md: 350, + sm: 445, + xs: 540, +} as const; + +const IPHONE_14_PRO_HEIGHT = 844; + +export interface SheetContentProps extends HTMLMotionProps<"div"> { + children?: ReactNode; } -export function MyComponent({ - children, - person, +export function Sheet({ + size, + isOpen, + onDismiss, + children, }: { - children: React.ReactNode; - person: Person; + size: Size; + isOpen: boolean; + children: ReactNode; + onDismiss: () => void; }) { - return ( - <> - {children} -
-

{person.name}

-

{person.age}

-
- - ); + return ( + + {children} + + ); } + +export const SheetHeader = forwardRef< + ElementRef, + ComponentPropsWithoutRef +>(({ children, ...props }, ref) => ( + + {children} + +)); + +function isSize(value: string): value is Size { + return ["xs", "sm", "md", "lg", "xl"].includes(value); +} + +export const SheetContent = forwardRef( + ({ style, children, ...props }, ref) => { + const sheetContext = useContext(SheetContext); + + if (!sheetContext) { + throw new Error( + " must be used within a component." + ); + } + const { isOpen, onDismiss } = sheetContext; + const rootRef = useRef(); + const windowRef = useRef(); + const windowHeight = windowRef.current?.innerHeight || IPHONE_14_PRO_HEIGHT; + const size = sheetContext.size; + + if (!isSize(size)) { + throw new Error(`Invalid size: ${size}`); + } + + const SHEET_MARGIN = SHEET_MARGINS[size]; + const h = windowHeight - SHEET_MARGIN; + const y = useMotionValue(h); + const bgOpacity = useTransform(y, [0, h], [0.4, 0]); + const bg = useMotionTemplate`rgba(0, 0, 0, ${bgOpacity})`; + + useEffect(() => { + rootRef.current = document.body.children[0]; + windowRef.current = window; + }, []); + + return ( + + {isOpen && ( + + { + if (offset.y > window.innerHeight * 0.75 || velocity.y > 300) { + onDismiss(); + } else { + animate(y, 0, { ...inertiaTransition, min: 0, max: 0 }); + } + }} + {...props} + > +
+ {children} + + + )} + + ); + } +); diff --git a/tsconfig.json b/tsconfig.json index 3eefd26..1d5ba53 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,16 +1,18 @@ { - "compilerOptions": { - "jsx": "react-jsx", // For React 17+ JSX transformations; use "react" for React 16 or older. - "declaration": true, // This is essential to generate .d.ts files - "declarationDir": "dist", // Output the declarations in the dist folder - "emitDeclarationOnly": true, // Only emit the declaration files, not JS - "outDir": "dist", // Where to store the build files - "moduleResolution": "node", - "module": "ESNext", - "target": "ES6", - "esModuleInterop": true, - "skipLibCheck": true - }, - "include": ["src/**/*"], // Include your source files - "exclude": ["node_modules", "dist"] + "compilerOptions": { + "jsx": "react-jsx", + "declaration": true, + "declarationDir": "dist", + "emitDeclarationOnly": true, + "outDir": "dist", + "moduleResolution": "node", + "module": "ESNext", + "target": "ES6", + "esModuleInterop": true, + "skipLibCheck": true, + "strict": true, + "lib": ["esnext", "dom"] + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] } diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..011a9d8 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import tailwindcss from "@tailwindcss/vite"; + +export default defineConfig({ + plugins: [tailwindcss()], +});