diff --git a/package.json b/package.json index 205854dc..33d811bd 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "history": "^5.3.0", "re-resizable": "^6.9.11", "react": "^18.2.0", + "react-aria": "^3.29.1", "react-cookie": "^6.1.1", "react-dom": "^18.2.0", "react-hook-form": "^7.47.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62785f11..bc6fb011 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,9 @@ dependencies: react: specifier: ^18.2.0 version: 18.2.0 + react-aria: + specifier: ^3.29.1 + version: 3.29.1(react-dom@18.2.0)(react@18.2.0) react-cookie: specifier: ^6.1.1 version: 6.1.1(react@18.2.0) @@ -2497,6 +2500,40 @@ packages: resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} dev: true + /@formatjs/ecma402-abstract@1.17.3: + resolution: {integrity: sha512-2Q4hmKQ6CM30mRG/YMdSBW8LXf32BfuOb1FZgG+uVWPC/SQMoiVFz5JaeOukt96v6TZ4ddE+bHCmd611PW38QA==} + dependencies: + '@formatjs/intl-localematcher': 0.5.0 + tslib: 2.6.2 + dev: false + + /@formatjs/fast-memoize@2.2.0: + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + dependencies: + tslib: 2.6.2 + dev: false + + /@formatjs/icu-messageformat-parser@2.7.1: + resolution: {integrity: sha512-ErnXyRdk8AlpGcKskKVYn23aAlWXhI1kt5ek2o3pJwVeMTcrosSESQ8baztdTtJjfQHlB4NBeocfRA5C6DKv2g==} + dependencies: + '@formatjs/ecma402-abstract': 1.17.3 + '@formatjs/icu-skeleton-parser': 1.6.3 + tslib: 2.6.2 + dev: false + + /@formatjs/icu-skeleton-parser@1.6.3: + resolution: {integrity: sha512-Viggz4Pic7oC4uR8z2VroL8H9boiUTTB0TqEsiRb6DHZv7QEcg1BoVQZBkBdLmvxhBS7nwBNrTdbaiW8GOV58Q==} + dependencies: + '@formatjs/ecma402-abstract': 1.17.3 + tslib: 2.6.2 + dev: false + + /@formatjs/intl-localematcher@0.5.0: + resolution: {integrity: sha512-K1Xpg/8oyfCMxisJQa/fILoeoeyndcM0wcN8QiNG/uM5OAe1BcO1+2yd0gIboDI2tRJEsUi/sSBEYPbgkIdq4A==} + dependencies: + tslib: 2.6.2 + dev: false + /@headlessui/react@1.7.17(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==} engines: {node: '>=10'} @@ -2571,6 +2608,31 @@ packages: transitivePeerDependencies: - encoding + /@internationalized/date@3.5.0: + resolution: {integrity: sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@internationalized/message@3.1.1: + resolution: {integrity: sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==} + dependencies: + '@swc/helpers': 0.5.3 + intl-messageformat: 10.5.5 + dev: false + + /@internationalized/number@3.3.0: + resolution: {integrity: sha512-PuxgnKE5NJMOGKUcX1QROo8jq7sW7UWLrL5B6Rfe8BdWgU/be04cVvLyCeALD46vvbAv3d1mUvyHav/Q9a237g==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@internationalized/string@3.1.1: + resolution: {integrity: sha512-fvSr6YRoVPgONiVIUhgCmIAlifMVCeej/snPZVzbzRPxGpHl3o1GRe+d/qh92D8KhgOciruDUH8I5mjdfdjzfA==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3529,6 +3591,1234 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@react-aria/breadcrumbs@3.5.7(react@18.2.0): + resolution: {integrity: sha512-z+L1gNyWrjZ4Fs0Vo4AkwJicPpEGIestww6r8CiTlt07eo0vCReNmB3oofI6nMJOSu51yef+qqBtFyr0tqBgiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/link': 3.6.1(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/breadcrumbs': 3.7.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/button@3.8.4(react@18.2.0): + resolution: {integrity: sha512-rTGZk5zu+lQNjfij2fwnw2PAgBgzNLi3zbMw1FL5/XwVx+lEH2toeqKLoqULtd7nSxskYuQz56VhmjUok6Qkmg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/toggle': 3.6.3(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/calendar@3.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HiyUiY0C2aoHa2252Es/Rj1fh5/tewLf6/3gUr42zKl7lq4IqG9cyW7LVRwA47ow1VGLPZSSqTcVakB7jgr7Zw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.0 + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/calendar': 3.4.1(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/calendar': 3.4.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/checkbox@3.11.2(react@18.2.0): + resolution: {integrity: sha512-8cgXxpc7IMJ9buw+Rbhr1xc66zNp2ePuFpjw3uWyH7S3IJEd2f5kXUDNWLXQRADJso95UlajRlJQiG4QIObEnA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/toggle': 3.8.2(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/checkbox': 3.5.1(react@18.2.0) + '@react-stately/toggle': 3.6.3(react@18.2.0) + '@react-types/checkbox': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/combobox@3.7.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-37no1b3sRI9mDh3MpMPWNt0Q8QdoRipnx12Vx5Uvtb0PA23hwOWDquICzs157SoJpXP49/+eH6LiA0uTsqwVuQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/listbox': 3.11.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/menu': 3.11.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.12.2(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/combobox': 3.7.1(react@18.2.0) + '@react-stately/layout': 3.13.3(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/combobox': 3.8.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/datepicker@3.8.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-q2Z5DYDkic3RWzvg3oysrA2VEebuxtEfqj8PSlNFndZh/pNrA+Tvkaatdk/BoxlsZsfeLof+/tBq6yWeqTDguQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.0 + '@internationalized/number': 3.3.0 + '@internationalized/string': 3.1.1 + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/spinbutton': 3.5.4(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/datepicker': 3.8.0(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/calendar': 3.4.1(react@18.2.0) + '@react-types/datepicker': 3.6.1(react@18.2.0) + '@react-types/dialog': 3.5.6(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/dialog@3.5.7(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-IKeBaIQBl+WYkhytyE0eISW4ApOEvCJZuw9Xq7gjlKFBlF4X6ffo8souv12KpaznK6/fp1vtEXMmy1AfejiT8Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/overlays': 3.6.3(react@18.2.0) + '@react-types/dialog': 3.5.6(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/dnd@3.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9yiYTQvfT5EUmSsGY3vZlK1xs+xHOFDw5I+c+HyvwqiSu0AIZ4yXqpJVwbarKeZlTOQGCWtb/SOHEdMXfaXKgA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/string': 3.1.1 + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-aria/visually-hidden': 3.8.6(react@18.2.0) + '@react-stately/dnd': 3.2.5(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/focus@3.14.3(react@18.2.0): + resolution: {integrity: sha512-gvO/frZ7SxyfyHJYC+kRsUXnXct8hGHKlG1TwbkzCCXim9XIPKDgRzfNGuFfj0i8ZpR9xmsjOBUkHZny0uekFA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + clsx: 1.2.1 + react: 18.2.0 + dev: false + + /@react-aria/grid@3.8.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UxEz98Z6yxVAOq7QSZ9OmSsvMwxJDVl7dVRwUHeqWxNprk9o5GGCLjhMv948XBUEnOvLV2qgtI7UoGzSdliUJA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/grid': 3.8.2(react@18.2.0) + '@react-stately/selection': 3.14.0(react@18.2.0) + '@react-stately/virtualizer': 3.6.4(react@18.2.0) + '@react-types/checkbox': 3.5.2(react@18.2.0) + '@react-types/grid': 3.2.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/gridlist@3.7.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-XnU8mTc/KrwHsGayQm0u5aoaDzdZ8DftKSSfyBEqLiCaibKFqMADb987SOY5+IVGEtYkxDRn1Reo52U0Fs4mxg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/grid': 3.8.4(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/list': 3.10.0(react@18.2.0) + '@react-types/checkbox': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/i18n@3.8.4(react@18.2.0): + resolution: {integrity: sha512-YlTJn7YJlUxds/T5dNtme551qc118NoDQhK+IgGpzcmPQ3xSnwBAQP4Zwc7wCpAU+xEwnNcsGw+L1wJd49He/A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.0 + '@internationalized/message': 3.1.1 + '@internationalized/number': 3.3.0 + '@internationalized/string': 3.1.1 + '@react-aria/ssr': 3.8.0(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/interactions@3.19.1(react@18.2.0): + resolution: {integrity: sha512-2QFOvq/rJfMGEezmtYcGcJmfaD16kHKcSTLFrZ8aeBK6hYFddGVZJZk+dXf+G7iNaffa8rMt6uwzVe/malJPBA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/ssr': 3.8.0(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/label@3.7.2(react@18.2.0): + resolution: {integrity: sha512-rS0xQy+4RH1+JLESzLZd9H285McjNNf2kKwBhzU0CW3akjlu7gqaMKEJhX9MlpPDIVOUc2oEObGdU3UMmqa8ew==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/label': 3.8.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/link@3.6.1(react@18.2.0): + resolution: {integrity: sha512-uVkuNHabxE11Eqeo0d1RA86EckOlfJ2Ld8uN8HnTxiLetXLZYUMBwlZfBJvT3RdwPtTG7jC3OK3BvwiyIJrtZw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/link': 3.5.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/listbox@3.11.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-AkguQaIkqpP5oe++EZqYHowD7FfeQs+yY0QZVSsVPpNExcBug8/GcXvhSclcOxdh6ekZg4Wwcq7K0zhuTSOPzg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/list': 3.10.0(react@18.2.0) + '@react-types/listbox': 3.4.5(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/live-announcer@3.3.1: + resolution: {integrity: sha512-hsc77U7S16trM86d+peqJCOCQ7/smO1cybgdpOuzXyiwcHQw8RQ4GrXrS37P4Ux/44E9nMZkOwATQRT2aK8+Ew==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@react-aria/menu@3.11.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1eVVDrGnSExaL7e8IiaM9ndWTjT23rsnQGUK3p66R1Ojs8Q5rPBuJpP74rsmIpYiKOCr8WyZunjm5Fjv5KfA5Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/menu': 3.5.6(react@18.2.0) + '@react-stately/tree': 3.7.3(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/menu': 3.9.5(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/meter@3.4.7(react@18.2.0): + resolution: {integrity: sha512-Cp4d6Pd5K6iphXMS/VZ81YxlboUi0I4WPQ+EYb4fxFBJMXVwMK6N5dnn8kwG0vpIx9m0pkFVxSZhlbrwnvW9KA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/progress': 3.4.7(react@18.2.0) + '@react-types/meter': 3.3.5(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/numberfield@3.9.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-s9LM5YUzZpbOn5KldUS2JmkDNOA9obVmm8TofICH+z6RnReznp72NLPn0IwblRnocmMOIvGINT55Tz50BmbfNA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/spinbutton': 3.5.4(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.12.2(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/numberfield': 3.6.2(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/numberfield': 3.6.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/textfield': 3.8.1(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/overlays@3.18.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-C74eZbTp3OA/gXy9/+4iPrZiz7g27Zy6Q1+plbg5QTLpsFLBt2Ypy9jTTANNRZfW7a5NW/Bnw9WIRjCdtTBRXw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/ssr': 3.8.0(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-aria/visually-hidden': 3.8.6(react@18.2.0) + '@react-stately/overlays': 3.6.3(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/overlays': 3.8.3(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/progress@3.4.7(react@18.2.0): + resolution: {integrity: sha512-wQ+xnzt5bBdbyQ2Qx80HxaFrPZRFKge57tmJWg4qelo7tzmgb3a22tf0Ug4C3gEz/uAv0JQWOtqLKTxjsiVP7g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/progress': 3.5.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/radio@3.8.2(react@18.2.0): + resolution: {integrity: sha512-j8yyGjboTgoBEQWlnJbQVvegKiUeQEUvU/kZ7ZAdj+eAL3BqfO6FO7yt6WzK7ZIBzjGS9YbesaUa3hwIjDi3LA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/radio': 3.9.1(react@18.2.0) + '@react-types/radio': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/searchfield@3.5.7(react@18.2.0): + resolution: {integrity: sha512-HYjB/QH3AR2E39N6eu+P/DmJMjGweg6LrO1QUbBbKJS+LDorHTN9YNKA4N89gnDDz2IPyycjxtr71hEv0I092A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/textfield': 3.12.2(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/searchfield': 3.4.6(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/searchfield': 3.5.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/select@3.13.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tWWOnMnrV1nlZzdO04Ntvf5GCJ6MPkg8Gwv6y0klDDjt12Qyc7J8INluW5A4eMUdtxCkWdaiEsXjyYBHT14ILQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/listbox': 3.11.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/menu': 3.11.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-aria/visually-hidden': 3.8.6(react@18.2.0) + '@react-stately/select': 3.5.5(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/select': 3.8.4(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/selection@3.17.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-g5gkSc/M+zJiVgWbUpKN095ea0D4fxdluH9ZcXxN4AAvcrVfEJyAnMmWOIKRebN8xR0KPfNRnKB7E6jld2tbuQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/selection': 3.14.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/separator@3.3.7(react@18.2.0): + resolution: {integrity: sha512-5XjDhvGVmGHxxOrXLFCQhOs75v579nPTaSlrKhG/5BjTN3JrByAtuNAw8XZf3HbtiCRZnnL2bKdVbHBjmbuvDw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/slider@3.7.2(react@18.2.0): + resolution: {integrity: sha512-io7yJm2jS0gK1ILE9kjClh9zylKsOLbRy748CyD66LDV0ZIjj2D/uZF6BtfKq7Zhc2OsMvDB9+e2IkrszKe8uw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/radio': 3.9.1(react@18.2.0) + '@react-stately/slider': 3.4.4(react@18.2.0) + '@react-types/radio': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/slider': 3.6.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/spinbutton@3.5.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-W5dhUOjyBIgd8d4z526fW/HXQ+BdFceeGyvNAXoYBi/1gt3KqN/6CZgskG7OQEufxCOWc9e4A2eWNwvkQVJvWg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/ssr@3.8.0(react@18.2.0): + resolution: {integrity: sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/switch@3.5.6(react@18.2.0): + resolution: {integrity: sha512-W6H/0TFa72MJY02AatUERt5HKgaDTF8lOaTjNNmS6U6U20+//uvrVCqcBof8OMe4M60mQpkp7Bd6756CJAMX1w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/toggle': 3.8.2(react@18.2.0) + '@react-stately/toggle': 3.6.3(react@18.2.0) + '@react-types/switch': 3.4.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/table@3.13.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TBtCmJsKl3rJW/dCzA0ZxPGb8mN7ndbryLh3u+iV/+GVAVsytvAenOGrq9sLHHWXwQo5RJoO1bkUudvrZrJ5/g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/grid': 3.8.4(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-aria/visually-hidden': 3.8.6(react@18.2.0) + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/flags': 3.0.0 + '@react-stately/table': 3.11.2(react@18.2.0) + '@react-stately/virtualizer': 3.6.4(react@18.2.0) + '@react-types/checkbox': 3.5.2(react@18.2.0) + '@react-types/grid': 3.2.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/table': 3.9.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/tabs@3.8.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3kRd5rYKclmW9lllcANq0oun2d1pZq7Onma95laYfrWtPBZ3YDVKOkujGSqdfSQAFVshWBjl2Q03yyvcRiwzbQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/list': 3.10.0(react@18.2.0) + '@react-stately/tabs': 3.6.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/tabs': 3.3.3(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/tag@3.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-i7Mj3IhB91sGp3NS6iNBVh25W+LR2XXpTmtn3OS4R62q3Oalw/1PKqPWqFc73Lb5IWF5rj3eh2yTf+rerWf3dw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/gridlist': 3.7.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/list': 3.10.0(react@18.2.0) + '@react-types/button': 3.9.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/textfield@3.12.2(react@18.2.0): + resolution: {integrity: sha512-wRg8LJjZV6o4S/LRFqxs5waGDTiuIa/CRN+/X37Fu7GeZFeK0IBvWjKPlXLe7gMswaFqRmTKnQCU42mzUdDK1g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/textfield': 3.8.1(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/toggle@3.8.2(react@18.2.0): + resolution: {integrity: sha512-0+RmlOQtyRmU+Dd9qM9od4DPpITC7jqA+n3aZn732XtCsosz5gPGbhFuLbSdWRZ42FQgqo7pZQWaDRZpJPkipA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/toggle': 3.6.3(react@18.2.0) + '@react-types/checkbox': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/switch': 3.4.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/tooltip@3.6.4(react@18.2.0): + resolution: {integrity: sha512-5WCOiRSugzbfEOH+Bjpuf6EsNyynqq5S1uDh/P6J8qiYDjc0xLRJ5dyLdytX7c8MK9Y0pIHi6xb0xR9jDqJXTw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/tooltip': 3.4.5(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/tooltip': 3.4.5(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/utils@3.21.1(react@18.2.0): + resolution: {integrity: sha512-tySfyWHXOhd/b6JSrSOl7krngEXN3N6pi1hCAXObRu3+MZlaZOMDf/j18aoteaIF2Jpv8HMWUJUJtQKGmBJGRA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/ssr': 3.8.0(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + clsx: 1.2.1 + react: 18.2.0 + dev: false + + /@react-aria/visually-hidden@3.8.6(react@18.2.0): + resolution: {integrity: sha512-6DmS/JLbK9KgU/ClK1WjwOyvpn8HtwYn+uisMLdP7HlCm692peYOkXDR1jqYbHL4GlyLCD0JLI+/xGdVh5aR/w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + clsx: 1.2.1 + react: 18.2.0 + dev: false + + /@react-stately/calendar@3.4.1(react@18.2.0): + resolution: {integrity: sha512-XKCdrXNA7/ukZ842EeDZfLqYUQDv/x5RoAVkzTbp++3U/MLM1XZXsqj+5xVlQfJiWpQzM9L6ySjxzzgepJDeuw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.0 + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/calendar': 3.4.1(react@18.2.0) + '@react-types/datepicker': 3.6.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/checkbox@3.5.1(react@18.2.0): + resolution: {integrity: sha512-j+EbHpZgS8J2LbysbVDK3vQAJc7YZHOjHRX20auEzVmulAFKwkRpevo/R5gEL4EpOz4bRyu+BH/jbssHXG+Ezw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/toggle': 3.6.3(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/checkbox': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/collections@3.10.2(react@18.2.0): + resolution: {integrity: sha512-h+LzCa1gWhVRWVH8uR+ZxsKmFSx7kW3RIlcjWjhfyc59BzXCuojsOJKTTAyPVFP/3kOdJeltw8g/reV1Cw/x6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/combobox@3.7.1(react@18.2.0): + resolution: {integrity: sha512-JMKsbhCgP8HpwRjHLBmJILzyU9WzWykjXyP4QF/ifmkzGRjC/s46+Ieq+WonjVaLNGCoi6XqhYn2x2RyACSbsQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/list': 3.10.0(react@18.2.0) + '@react-stately/menu': 3.5.6(react@18.2.0) + '@react-stately/select': 3.5.5(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/combobox': 3.8.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/datepicker@3.8.0(react@18.2.0): + resolution: {integrity: sha512-6YDSmkrRafYCWhRHks8Z2tZavM1rqSOy8GY8VYjYMCVTFpRuhPK9TQaFv2BdzZL/vJ6OGThxqoglcEwywZVq2g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.0 + '@internationalized/string': 3.1.1 + '@react-stately/overlays': 3.6.3(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/datepicker': 3.6.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/dnd@3.2.5(react@18.2.0): + resolution: {integrity: sha512-f9S+ycjAMEaz9HqGxkx4jsqo/ZS8kh0o97rxSKpGFKPZ02UMFWCr9lJI1p3hVGukiMahrmsNtoQXAvMcFAZyQQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/selection': 3.14.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/flags@3.0.0: + resolution: {integrity: sha512-e3i2ItHbIa0eEwmSXAnPdD7K8syW76JjGe8ENxwFJPW/H1Pu9RJfjkCb/Mq0WSPN/TpxBb54+I9TgrGhbCoZ9w==} + dependencies: + '@swc/helpers': 0.4.36 + dev: false + + /@react-stately/grid@3.8.2(react@18.2.0): + resolution: {integrity: sha512-CB5QpYjXFatuXZodj3r0vIiqTysUe6DURZdJu6RKG2Elx19n2k49fKyx7P7CTKD2sPBOMSSX4edWuTzpL8Tl+A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/selection': 3.14.0(react@18.2.0) + '@react-types/grid': 3.2.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/layout@3.13.3(react@18.2.0): + resolution: {integrity: sha512-AZ2Sm7iSRcRsNATXg7bjbPpZIjV3z7bHAJtICWA1wHieVVSV1FFoyDyiXdDTIOxyuGeytNPaxtGfPpFZia9Wsg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/table': 3.11.2(react@18.2.0) + '@react-stately/virtualizer': 3.6.4(react@18.2.0) + '@react-types/grid': 3.2.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/table': 3.9.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/list@3.10.0(react@18.2.0): + resolution: {integrity: sha512-Yspumiln2fvzoO8AND8jNAIfBu1XPaYioeeDmsB5Vrya2EvOkzEGsauQSNBJ6Vhee1fQqpnmzH1HB0jfIKUfzg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/selection': 3.14.0(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/menu@3.5.6(react@18.2.0): + resolution: {integrity: sha512-Cm82SVda1qP71Fcz8ohIn3JYKmKCuSUIFr1WsEo/YwDPkX0x9+ev6rmphHTsxDdkCLcYHSTQL6e2KL0wAg50zA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/overlays': 3.6.3(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/menu': 3.9.5(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/numberfield@3.6.2(react@18.2.0): + resolution: {integrity: sha512-li/SO3BU3RGySRNlXhPRKr161GJyNbQe6kjnj+0BFTS/ST9nxCgxFK4llHf+S+I/shNI6+0U2nAjE85QOv4emQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/number': 3.3.0 + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/numberfield': 3.6.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/overlays@3.6.3(react@18.2.0): + resolution: {integrity: sha512-K3eIiYAdAGTepYqNf2pVb+lPqLoVudXwmxPhyOSZXzjgpynD6tR3E9QfWQtkMazBuU73PnNX7zkH4l87r2AmTg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/overlays': 3.8.3(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/radio@3.9.1(react@18.2.0): + resolution: {integrity: sha512-DrQPHiP9pz1uQbBP/NDFdO8uOZigPbvuAWPUNK7Gq6kye5lW+RsS97IUnYJePNTSMvhiAVz/aleBt05Gr/PZmg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/radio': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/searchfield@3.4.6(react@18.2.0): + resolution: {integrity: sha512-DeVacER0MD35gzQjrYpX/e3k8rjKF82W0OooTkRjeQ2U48femZkQpmp3O+j10foQx2LLaxqt9PSW7QS0Ww1bCA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/searchfield': 3.5.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/select@3.5.5(react@18.2.0): + resolution: {integrity: sha512-nDkvFeAZbN7dK/Ty+mk1h4LZYYaoPpkwrG49wa67DTHkCc8Zk2+UEjhKPwOK20th4vfJKHzKjVa0Dtq4DIj0rw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/list': 3.10.0(react@18.2.0) + '@react-stately/menu': 3.5.6(react@18.2.0) + '@react-stately/selection': 3.14.0(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/select': 3.8.4(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/selection@3.14.0(react@18.2.0): + resolution: {integrity: sha512-E5rNH+gVGDJQDSnPO30ynu6jZ0Z0++VPUbM5Bu3P/bZ3+TgoTtDDvlONba3fspgSBDfdnHpsuG9eqYnDtEAyYA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/slider@3.4.4(react@18.2.0): + resolution: {integrity: sha512-tFexbtN50zSo6e1Gi8K9MBfqgOo1eemF/VvFbde3PP9nG+ODcxEIajaYDPlMUuFw5cemJuoKo3+G5NBBn2/AjQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/slider': 3.6.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/table@3.11.2(react@18.2.0): + resolution: {integrity: sha512-EVgksPAsnEoqeT+5ej4aGJdu9kAu3LCDqQfnmif2P/R1BP5eDU1Kv0N/mV/90Xp546g7kuZ1wS2if/hWDXEA5g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/flags': 3.0.0 + '@react-stately/grid': 3.8.2(react@18.2.0) + '@react-stately/selection': 3.14.0(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/grid': 3.2.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/table': 3.9.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tabs@3.6.1(react@18.2.0): + resolution: {integrity: sha512-akGmejEaXg2RMZuWbRZ0W1MLr515e0uV0iVZefKBlcHtD/mK9K9Bo2XxBScf0TIhaPJ6Qa2w2k2+V7RmT7r8Ag==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/list': 3.10.0(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/tabs': 3.3.3(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/toggle@3.6.3(react@18.2.0): + resolution: {integrity: sha512-4kIMTjRjtaapFk4NVmBoFDUYfkmyqDaYAmHpRyEIHTDpBYn0xpxZL/MHv9WuLYa4MjJLRp0MeicuWiZ4ai7f6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/checkbox': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tooltip@3.4.5(react@18.2.0): + resolution: {integrity: sha512-VrwQcjnrNddSulh+Zql8P8cORRnWqSPkHPqQwD/Ly91Rva3gUIy+VwnYeThbGDxRzlUv1wfN+UQraEcrgwSZ/Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/overlays': 3.6.3(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/tooltip': 3.4.5(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tree@3.7.3(react@18.2.0): + resolution: {integrity: sha512-wB/68qetgCYTe7OMqbTFmtWRrEqVdIH2VlACPCsMlECr3lW9TrrbrOwlHIJfLhkxWvY3kSCoKcOJ5KTiJC9LGA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.2(react@18.2.0) + '@react-stately/selection': 3.14.0(react@18.2.0) + '@react-stately/utils': 3.8.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/utils@3.8.0(react@18.2.0): + resolution: {integrity: sha512-wCIoFDbt/uwNkWIBF+xV+21k8Z8Sj5qGO3uptTcVmjYcZngOaGGyB4NkiuZhmhG70Pkv+yVrRwoC1+4oav9cCg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/virtualizer@3.6.4(react@18.2.0): + resolution: {integrity: sha512-lf3+FDRnyLyY1IhLfwA6GuE/9F3nIEc5p245NkUSN1ngKlXI5PvLHNatiVbONC3wt90abkpMK+WMhu2S/B+4lA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-types/breadcrumbs@3.7.1(react@18.2.0): + resolution: {integrity: sha512-WWC5pQdWkAzJ2hkx4w7f+waDLLvuD9vowKey+bdLoEmKvdaHNLLVUQPEyFm6SQ5+E3pNBWkNx9a+0S9iW6wa+Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/link': 3.5.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/button@3.9.0(react@18.2.0): + resolution: {integrity: sha512-YhbchUDB7yL88ZFA0Zqod6qOMdzCLD5yVRmhWymk0yNLvB7EB1XX4c5sRANalfZSFP0RpCTlkjB05Hzp4+xOYg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/calendar@3.4.1(react@18.2.0): + resolution: {integrity: sha512-tiCkHi6IQtYcVoAESG79eUBWDXoo8NImo+Mj8WAWpo1lOA3SV1W2PpeXkoRNqtloilQ0aYcmsaJJUhciQG4ndg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.0 + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/checkbox@3.5.2(react@18.2.0): + resolution: {integrity: sha512-iRQrbY8vRRya3bt3i7sHAifhP/ozfkly1/TItkRK5MNPRNPRDKns55D8ZFkRMj4NSyKQpjVt1zzlBXrnSOxWdQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/combobox@3.8.1(react@18.2.0): + resolution: {integrity: sha512-F910tk8K5qE0TksJ9LRGcJIpaPzpsCnFxT6E9oJH3ssK4N8qZL8QfT9tIKo2XWhK9Uxb/tIZOGQwA8Cn7TyZrA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/datepicker@3.6.1(react@18.2.0): + resolution: {integrity: sha512-/M+0e9hL9w98f5k4EoxeH2UfPsUPoS6fvmFsmwUZJcDiw7wP510XngnDLy9GOHj9xgqagZ20S79cxcEuTq7U6g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.0 + '@react-types/calendar': 3.4.1(react@18.2.0) + '@react-types/overlays': 3.8.3(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/dialog@3.5.6(react@18.2.0): + resolution: {integrity: sha512-lwwaAgoi4xe4eEJxBns+cBIRstIPTKWWddMkp51r7Teeh2uKs1Wki7N+Acb9CfT6JQTQDqtVJm6K76rcqNBVwg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/overlays': 3.8.3(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/grid@3.2.2(react@18.2.0): + resolution: {integrity: sha512-R4USOpn1xfsWVGwZsakRlIdsBA10XNCnAUcRXQTn2JmzLjDCtcln6uYo9IFob080lQuvjkSw3j4zkw7Yo4Qepg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/label@3.8.1(react@18.2.0): + resolution: {integrity: sha512-fA6zMTF2TmfU7H8JBJi0pNd8t5Ak4gO+ZA3cZBysf8r3EmdAsgr3LLqFaGTnZzPH1Fux6c7ARI3qjVpyNiejZQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/link@3.5.1(react@18.2.0): + resolution: {integrity: sha512-hX2KpjB7wSuJw5Pia63+WEgEql53VfVG1Vu2cTUJDxfrgUtawwHtxB8B0K3cs3jBanq69amgAInEx0FfqYY0uQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/listbox@3.4.5(react@18.2.0): + resolution: {integrity: sha512-nuRY3l8h/rBYQWTXWdZz5YJdl6QDDmXpHrnPuX7PxTwbXcwjhoMK+ZkJ0arA8Uv3MPs1OUcT6K6CInsPnG2ARQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/menu@3.9.5(react@18.2.0): + resolution: {integrity: sha512-KB5lJM0p9PxwpVlHV9sRdpjh+sqINeHrJgGizy/cQI9bj26nupiEgamSD14dULNI6BFT9DkgKCsobBtE04DDKQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/overlays': 3.8.3(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/meter@3.3.5(react@18.2.0): + resolution: {integrity: sha512-7kSP/bqkt6ANHUJLJ4OsHOPNwg9ETvWHAKXDYoCqkLYzdhFh0H/8EAW9z4Bh/io0GvR7ePds9s+32iislfSwDg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/progress': 3.5.0(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/numberfield@3.6.1(react@18.2.0): + resolution: {integrity: sha512-jdMCN0mQ7eZkPrCKYkkG+jSjcG2VQ5P7mR9tTaCQeQK1wo+tF/8LWD+6n6dU7hH/qlU9sxVEg3U3kJ9sgNK+Hw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/overlays@3.8.3(react@18.2.0): + resolution: {integrity: sha512-TrCG2I2+V+TD0PGi3CqfnyU5jEzcelSGgYJQvVxsl5Vv3ri7naBLIsOjF9x66tPxhINLCPUtOze/WYRAexp8aw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/progress@3.5.0(react@18.2.0): + resolution: {integrity: sha512-c1KLQCfYjdUdkTcPy0ZW31dc2+D86ZiZRHPNOaSYFGJjk9ItbWWi8BQTwlrw6D2l/+0d/YDdUFGaZhHMrY9mBQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/radio@3.5.2(react@18.2.0): + resolution: {integrity: sha512-crYQ+97abd5v0Iw9X+Tt+E7KWdm5ckr4g0+Iy8byV1g6MyiBOsNtq9QT99TOzyWJPqqD8T9qZfAOk49wK7KEDg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/searchfield@3.5.1(react@18.2.0): + resolution: {integrity: sha512-+v9fo50JrZOfFzbdgJsW39hyTFv1gVH458nx82aidYJzQocFJniiAEl0ZhhRzbE8RijyjLleKIAY+klPeFmEaQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + '@react-types/textfield': 3.8.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/select@3.8.4(react@18.2.0): + resolution: {integrity: sha512-jHBaLiAHTcYPz52kuJpypBbR0WAA+YCZHy2HH+W8711HuTqePZCEp6QAWHK9Fw0qwSZQ052jYaWvOsgEZZ6ojQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/shared@3.21.0(react@18.2.0): + resolution: {integrity: sha512-wJA2cUF8dP4LkuNUt9Vh2kkfiQb2NLnV2pPXxVnKJZ7d4x2/7VPccN+LYPnH8m0X3+rt50cxWuPKQmjxSsCFOg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /@react-types/slider@3.6.2(react@18.2.0): + resolution: {integrity: sha512-LSvna1gpOvBxOBI5I/CYEtkAshWYwPlxE9F/jCaxCa9Q7E9xZp1hFFGY87iQ1A3vQM5SCa5PFStwOvXO7rA55w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/switch@3.4.2(react@18.2.0): + resolution: {integrity: sha512-OQWpawikWhF+ET1/kE0/JeJVr6gHjkR72p/idTsT7RUJySBcehhAscbIA8iWzVWJvdFCVF2hG7uzBAJTeDMr9A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/checkbox': 3.5.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/table@3.9.0(react@18.2.0): + resolution: {integrity: sha512-WOLxZ3tzLA4gxRxvnsZhnnQDbh4Qe/johpHNk4coSOFOP5W8PbunPacXnbvdPkSx6rqrOIzCnYcZCtgk4gDQmg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/grid': 3.2.2(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/tabs@3.3.3(react@18.2.0): + resolution: {integrity: sha512-Zc4g5TIwJpKS5fiT9m4dypbCr1xqtauL4wqM76fGERCAZy0FwXTH/yjzHJDYKyWFJrQNWtJ0KAhJR/ZqKDVnIw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/textfield@3.8.1(react@18.2.0): + resolution: {integrity: sha512-p8Xmew9kzJd+tCM7h9LyebZHpv7SH1IE1Nu13hLCOV5cZ/tVVVCwjNGLMv4MtUpSn++H42YLJgAW9Uif+a+RHg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/tooltip@3.4.5(react@18.2.0): + resolution: {integrity: sha512-pv87Vlu+Pn1Titw199y5aiSuXF/GHX+fBCihi9BeePqtwYm505e/Si01BNh5ejCeXXOS4JIMuXwmGGzGVdGk6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/overlays': 3.8.3(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + dev: false + /@reactflow/background@11.3.4(@types/react@18.2.33)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-bgwvqWxF09chwmdkyClpYEMaewBspdwjgLbbFlLf4SpWPFMYyuvCBQrcISsvy/EDEWO9i3Uj9ktgGAhvtSQsmA==} peerDependencies: @@ -4987,6 +6277,25 @@ packages: - supports-color dev: true + /@swc/helpers@0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.4.36: + resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==} + dependencies: + legacy-swc-helpers: /@swc/helpers@0.4.14 + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.5.3: + resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} + dependencies: + tslib: 2.6.2 + dev: false + /@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.3.5): resolution: {integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==} peerDependencies: @@ -6905,6 +8214,11 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -9250,6 +10564,15 @@ packages: hasown: 2.0.0 side-channel: 1.0.4 + /intl-messageformat@10.5.5: + resolution: {integrity: sha512-sF+cJCfMn+kGcSeGGRcB1UpBH0/+Ko2KByHj2RpL2qIkRvsrnuDl8zufEkvk+GPosk932C6W1Kq24xWaw+2jDA==} + dependencies: + '@formatjs/ecma402-abstract': 1.17.3 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.1 + tslib: 2.6.2 + dev: false + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: @@ -11657,6 +12980,52 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /react-aria@3.29.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dDoaTh5fCaD3kO0kv49pqUUOsXRGuqFX7owQaly/RhWkBw/dlIYkHRVdOatllI/v4h1/Ne40QOXl15aAISozlA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/breadcrumbs': 3.5.7(react@18.2.0) + '@react-aria/button': 3.8.4(react@18.2.0) + '@react-aria/calendar': 3.5.2(react-dom@18.2.0)(react@18.2.0) + '@react-aria/checkbox': 3.11.2(react@18.2.0) + '@react-aria/combobox': 3.7.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/datepicker': 3.8.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/dialog': 3.5.7(react-dom@18.2.0)(react@18.2.0) + '@react-aria/dnd': 3.4.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/focus': 3.14.3(react@18.2.0) + '@react-aria/gridlist': 3.7.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.8.4(react@18.2.0) + '@react-aria/interactions': 3.19.1(react@18.2.0) + '@react-aria/label': 3.7.2(react@18.2.0) + '@react-aria/link': 3.6.1(react@18.2.0) + '@react-aria/listbox': 3.11.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/menu': 3.11.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/meter': 3.4.7(react@18.2.0) + '@react-aria/numberfield': 3.9.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/progress': 3.4.7(react@18.2.0) + '@react-aria/radio': 3.8.2(react@18.2.0) + '@react-aria/searchfield': 3.5.7(react@18.2.0) + '@react-aria/select': 3.13.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/separator': 3.3.7(react@18.2.0) + '@react-aria/slider': 3.7.2(react@18.2.0) + '@react-aria/ssr': 3.8.0(react@18.2.0) + '@react-aria/switch': 3.5.6(react@18.2.0) + '@react-aria/table': 3.13.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/tabs': 3.8.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/tag': 3.2.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.12.2(react@18.2.0) + '@react-aria/tooltip': 3.6.4(react@18.2.0) + '@react-aria/utils': 3.21.1(react@18.2.0) + '@react-aria/visually-hidden': 3.8.6(react@18.2.0) + '@react-types/shared': 3.21.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} peerDependencies: diff --git a/src/components/ChooseSession/index.tsx b/src/components/ChooseSession/index.tsx index ed40189d..04187a45 100644 --- a/src/components/ChooseSession/index.tsx +++ b/src/components/ChooseSession/index.tsx @@ -1,8 +1,18 @@ -import type { MouseEventHandler } from "react"; import { useState } from "react"; import { useCookies } from "react-cookie"; -import { exampleAccount, SessionsPage } from "@/components"; -import type { PaginatedMeta, Session, Uuid } from "@/primer-api"; +import { + ExclamationCircleIcon, + FaceFrownIcon, +} from "@heroicons/react/24/outline"; +import { + exampleAccount, + SessionList, + SessionNameModal, + SessionsNavBar, + SimplePaginationBar, + Spinner, +} from "@/components"; +import type { Uuid } from "@/primer-api"; import { useGetSessionList, useCreateSession, @@ -15,6 +25,12 @@ import { useQueryClient } from "@tanstack/react-query"; const ChooseSession = (): JSX.Element => { const [cookies] = useCookies(["id"]); + const [importPrelude, setImportPrelude] = useState(true); + const [showModal, setShowModal] = useState(false); + const onClickNewProgram = (): void => { + setShowModal(true); + }; + // NOTE: pagination in our API is 1-indexed. const [page, setPage] = useState(1); const [pageSize] = useState(20); @@ -27,31 +43,6 @@ const ChooseSession = (): JSX.Element => { queryClient.invalidateQueries(getGetSessionListQueryKey()), }, }); - const { data } = useGetSessionList({ - page, - pageSize, - nameLike: sessionNameFilter, - }); - - const sessions: Session[] = data ? data.items : []; - const meta: PaginatedMeta = data - ? data.meta - : { totalItems: 0, pageSize: 1, thisPage: 1, firstPage: 1, lastPage: 1 }; - const startIndex: number = (meta.thisPage - 1) * meta.pageSize + 1; - - // If we're on the last page of results, and the student deletes the last - // session on that page; or if we somehow request a page beyond the last page - // of results; then the API will return an empty list of sessions, and the - // last page will be less than the current page. When this happens, it means - // we've gone beyond the last page of results, and therefore we want to fetch - // the new last page. - // - // Note that when there are no sessions at all, then the current page and the - // last page will both be 1, and therefore we can be sure that we won't do - // this ad infinitum. - if (sessions.length == 0 && meta.thisPage > meta.lastPage) { - setPage(meta.lastPage); - } const navigate = useNavigate(); const newSession = useCreateSession({ @@ -63,44 +54,153 @@ const ChooseSession = (): JSX.Element => { }, }); - const onClickNextPage: MouseEventHandler | undefined = - meta.thisPage < meta.lastPage ? () => setPage(page + 1) : undefined; - const onClickPreviousPage: MouseEventHandler | undefined = - meta.thisPage > 1 ? () => setPage(page - 1) : undefined; + const { isError, data, error } = useGetSessionList( + { + page, + pageSize, + nameLike: sessionNameFilter, + }, + { + query: { + onSuccess: (data) => { + // If we're on the last page of results, and the student deletes the + // last session on that page; or if we somehow request a page beyond + // the last page of results; then the API will return an empty list of + // sessions, and the last page will be less than the current page. When + // this happens, it means we've gone beyond the last page of results, + // and therefore we want to fetch the new last page. + // + // Note that when there are no sessions at all, then the current page + // and the last page will both be 1, and therefore we can be sure that + // we won't do this ad infinitum. + if ( + data.items.length == 0 && + data.meta.thisPage > data.meta.lastPage + ) { + setPage(data.meta.lastPage); + } + }, + }, + } + ); + + // Note that we show data if it's available, regardless of the status of + // `isLoading` or `isError`. This means we may show stale data, but we prefer + // this over showing a loading message or an error for short server outages. + // See: + // + // https://tkdodo.eu/blog/status-checks-in-react-query + // + // Note that React Query will not show stale data indefinitely, and will + // eventually show an error message if the data is stale for too long. return ( - - newSession.mutate({ data: { name, importPrelude } }) - } - onClickNextPage={onClickNextPage} - onClickPreviousPage={onClickPreviousPage} - onClickDelete={(sessionId) => deleteSession.mutate({ sessionId })} - onSubmitSearch={(nameFilter: string) => { - // Unlike `onChangeSearch`, this callback is always triggered - // by an explicit action, and never by, e.g., a page refresh, - // so we always want to reset the page when this callback is - // invoked. - setSessionNameFilter(nameFilter); - setPage(1); - }} - onChangeSearch={(nameFilter: string) => { - // For technical reasons, this callback may be triggered even - // if the value of the search term didn't actually change - // (e.g., because the page is redrawn), and in these cases, we - // don't want to update the page, so we filter these spurious - // "changes" out. - if (nameFilter != sessionNameFilter) { - setSessionNameFilter(nameFilter); - setPage(1); - } - }} - /> +
+
+ { + // Unlike `onChangeSearch`, this callback is always triggered + // by an explicit action, and never by, e.g., a page refresh, + // so we always want to reset the page when this callback is + // invoked. + setSessionNameFilter(nameFilter); + setPage(1); + }} + onChangeSearch={(nameFilter: string) => { + // For technical reasons, this callback may be triggered even + // if the value of the search term didn't actually change + // (e.g., because the page is redrawn), and in these cases, we + // don't want to update the page, so we filter these spurious + // "changes" out. + if (nameFilter != sessionNameFilter) { + setSessionNameFilter(nameFilter); + setPage(1); + } + }} + /> +
+
+ {data && data.items.length > 0 ? ( + deleteSession.mutate({ sessionId })} + /> + ) : data && sessionNameFilter != "" ? ( +
+
+ ) : data ? ( +
+

+ No programs found +

+

+ You don't have any programs yet. Create a new one! +

+
+ ) : isError ? ( +
+
+ ) : ( +
+ +
+ )} +
+
+ {data && ( + setPage(page + 1) + : undefined + } + onClickPreviousPage={ + data.meta.thisPage > 1 ? () => setPage(page - 1) : undefined + } + /> + )} +
+ setShowModal(false)} + onCancel={() => setShowModal(false)} + onSubmit={(name: string, _importPrelude: boolean) => { + // Remember the student's choice of whether or not to import the Prelude. + setImportPrelude(_importPrelude); + newSession.mutate({ + data: { name, importPrelude: _importPrelude }, + }); + }} + /> +
); }; diff --git a/src/components/SessionsPage/SessionsPage.stories.tsx b/src/components/SessionsPage/SessionsPage.stories.tsx deleted file mode 100644 index a86acd23..00000000 --- a/src/components/SessionsPage/SessionsPage.stories.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { ComponentStory, ComponentMeta } from "@storybook/react"; -import { SessionsPage } from "./"; -import { exampleSessions } from "@/components/examples/sessions"; -import { exampleAccount } from "@/components/examples/accounts"; - -export default { - title: "Application/Component Library/Sessions/SessionsPage", - component: SessionsPage, - argTypes: { - sessions: { control: "object", name: "List of sessions" }, - account: { control: "object", name: "Account" }, - startIndex: { - description: "The 1-based index of the first item shown on this page.", - control: "number", - }, - totalItems: { - description: "The total number of items.", - control: "number", - }, - onClickNextPage: { - description: 'The event handler for the "Next" button.', - action: "clicked", - }, - onClickPreviousPage: { - description: 'The event handler for the "Previous" button.', - action: "clicked", - }, - onClickDelete: { action: "delete" }, - onSubmitSearch: { - description: "The search bar's onSubmit handler.", - action: "submitSearch", - }, - onChangeSearch: { - description: "The search bar's onChange handler.", - action: "changeSearch", - }, - }, -} as ComponentMeta; - -const Template: ComponentStory = (args) => ( - -); - -export const Default = Template.bind({}); -Default.args = { - account: exampleAccount, - sessions: exampleSessions(), - startIndex: 21, - totalItems: 95, -}; diff --git a/src/components/SessionsPage/index.tsx b/src/components/SessionsPage/index.tsx deleted file mode 100644 index 00fd86be..00000000 --- a/src/components/SessionsPage/index.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import { useState } from "react"; -import type { MouseEventHandler } from "react"; - -import { - SessionsNavBar, - SimplePaginationBar, - SessionList, - SessionNameModal, -} from "@/components"; -import type { Account } from "@/Types"; -import type { Session, Uuid } from "@/primer-api"; - -import "@/index.css"; - -export interface SessionsPageProps { - /** - * The account whose sessions will be displayed. - * - * @type {Account} - */ - account: Account; - - /** - * The list of session metadata displayed on this page. - * - * @type {Session[]} - */ - sessions: Session[]; - - /** - * The event handler for the "New program" button. - */ - onClickNewProgram: (name: string, importPrelude: boolean) => void; - - /** - * The 1-based index of the first item shown on this page. - * - * @type {number} - */ - startIndex: number; - - /** - * The number of items displayed on this page. - * - * @type {number} - */ - numItems: number; - - /** - * The total number of items. - * - * @type {number} - */ - totalItems: number; - - /** - * The event handler for the "next page" button, if there is one. - * - * @type {MouseEventHandler | undefined} - */ - onClickNextPage: MouseEventHandler | undefined; - - /** - * The event handler for the "previous page" button, if there is one. - * - * @type {MouseEventHandler | undefined} - */ - onClickPreviousPage: MouseEventHandler | undefined; - - /** - * The event handler for deleting the given session, identified by its ID. - * - * @type {(id: Uuid) => void} - */ - - onClickDelete: (id: Uuid) => void; - - /** - * The search bar's onChange handler. - */ - onChangeSearch: (searchString: string) => void; - - /** - * The search bar's onSubmit handler. - */ - onSubmitSearch: (searchString: string) => void; -} - -export const SessionsPage = (p: SessionsPageProps): JSX.Element => { - const [importPrelude, setImportPrelude] = useState(true); - const [showModal, setShowModal] = useState(false); - const onClickNewProgram = (): void => { - setShowModal(true); - }; - - return ( -
-
- -
-
- -
-
- -
- setShowModal(false)} - onCancel={() => setShowModal(false)} - onSubmit={(name: string, _importPrelude: boolean) => { - // Remember the student's choice of whether or not to import the Prelude. - setImportPrelude(_importPrelude); - p.onClickNewProgram(name, _importPrelude); - }} - /> -
- ); -}; - -export default SessionsPage; diff --git a/src/components/Spinner/Spinner.stories.tsx b/src/components/Spinner/Spinner.stories.tsx new file mode 100644 index 00000000..302ababe --- /dev/null +++ b/src/components/Spinner/Spinner.stories.tsx @@ -0,0 +1,17 @@ +import { Meta, StoryObj } from "@storybook/react"; + +import { Spinner } from "./"; + +const meta: Meta = { + title: "Application/Component Library/Spinner", + component: Spinner, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + "aria-label": "Loading…", + }, +}; diff --git a/src/components/Spinner/index.tsx b/src/components/Spinner/index.tsx new file mode 100644 index 00000000..70519eff --- /dev/null +++ b/src/components/Spinner/index.tsx @@ -0,0 +1,18 @@ +import type { AriaProgressBarProps } from "@react-types/progress"; +import { useProgressBar } from "react-aria"; + +import "@/index.css"; + +export const Spinner = (props: AriaProgressBarProps): JSX.Element => { + const { progressBarProps } = useProgressBar(props); + return ( +
+
+
+ ); +}; + +export default Spinner; diff --git a/src/components/TreeReactFlow/index.tsx b/src/components/TreeReactFlow/index.tsx index 777d5d75..5656ccd0 100644 --- a/src/components/TreeReactFlow/index.tsx +++ b/src/components/TreeReactFlow/index.tsx @@ -1380,7 +1380,7 @@ export const ReactFlowSafe = < // the tree in order to perform actions on them. elementsSelectable: false, onNodeClick: (e, n) => { - "onNodeClick" in p && + p.onNodeClick && p.onNodeClick( e, // This cast is safe because `N` is also the type of elements of the `nodes` field. diff --git a/src/components/index.ts b/src/components/index.ts index 8dc16d0a..5a791ead 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -22,8 +22,8 @@ export { default as SessionList } from "./SessionList"; export { default as SessionNameModal } from "./SessionNameModal"; export { default as SessionPreview } from "./SessionPreview"; export { default as SessionsNavBar } from "./SessionsNavBar"; -export { default as SessionsPage } from "./SessionsPage"; export { default as SimplePaginationBar } from "./SimplePaginationBar"; +export { default as Spinner } from "./Spinner"; export { default as Toolbar } from "./Toolbar"; export { default as TreeReactFlow, TreeReactFlowOne } from "./TreeReactFlow"; export { default as UIButton } from "./UIButton"; diff --git a/tsconfig.base.json b/tsconfig.base.json index 5057c3e2..89286996 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -22,7 +22,6 @@ "allowUnreachableCode": false, "allowUnusedLabels": false, "alwaysStrict": true, - "exactOptionalPropertyTypes": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": true, "noImplicitOverride": true,