From 60693e3fc77262e9b57948ded74a0386d51b4d50 Mon Sep 17 00:00:00 2001 From: Ben Merckx Date: Thu, 18 Jan 2024 17:50:36 +0100 Subject: [PATCH 1/8] Replace tabs --- build.js | 5 + src/dashboard/view/EntryEdit.tsx | 32 +- src/input/tabs/Tabs.browser.tsx | 42 +- src/ui.stories.tsx | 33 + src/ui/Button.stories.tsx | 17 - src/ui/Lift.module.scss | 1 - src/ui/Tabs.module.scss | 5 +- src/ui/Tabs.tsx | 45 +- src/ui/package.json | 1 + src/ui/util/Styler.tsx | 16 +- yarn.lock | 1980 +++++++++++++++++++++++++++--- 11 files changed, 1918 insertions(+), 259 deletions(-) create mode 100644 src/ui.stories.tsx delete mode 100644 src/ui/Button.stories.tsx diff --git a/build.js b/build.js index df985ea9c..1719d16ef 100644 --- a/build.js +++ b/build.js @@ -344,6 +344,11 @@ function jsEntry({watch, test}) { } debug.enable = () => {} debug.formatters = {} + `, + + // Used in react-aria-components, not ESM + 'use-sync-external-store/shim/index.js': `data:text/javascript, + export {useSyncExternalStore} from 'react' ` }, define: { diff --git a/src/dashboard/view/EntryEdit.tsx b/src/dashboard/view/EntryEdit.tsx index 1e474b00d..2decf77a4 100644 --- a/src/dashboard/view/EntryEdit.tsx +++ b/src/dashboard/view/EntryEdit.tsx @@ -6,7 +6,7 @@ import {TabsHeader, TabsSection} from 'alinea/input/tabs/Tabs.browser' import {Button, HStack, Stack, VStack, fromModule} from 'alinea/ui' import {Main} from 'alinea/ui/Main' import {Statusbar} from 'alinea/ui/Statusbar' -import {Tabs} from 'alinea/ui/Tabs' +import * as Tabs from 'alinea/ui/Tabs' import {IcOutlineTableRows} from 'alinea/ui/icons/IcOutlineTableRows' import {IcRoundInsertDriveFile} from 'alinea/ui/icons/IcRoundInsertDriveFile' import {IcRoundTranslate} from 'alinea/ui/icons/IcRoundTranslate' @@ -193,7 +193,7 @@ export function EntryEdit({editor}: EntryEditProps) { {showHistory && } - + {hasRootTabs && (
- +
)}
@@ -232,17 +236,15 @@ export function EntryEdit({editor}: EntryEditProps) { {mode === EditMode.Diff ? ( ) : hasRootTabs && visibleTypes ? ( - - {visibleTypes.map((type, i) => { - return ( - - - - - - ) - })} - + visibleTypes.map((type, i) => { + return ( + + + + + + ) + }) ) : ( @@ -251,7 +253,7 @@ export function EntryEdit({editor}: EntryEditProps) { -
+
diff --git a/src/input/tabs/Tabs.browser.tsx b/src/input/tabs/Tabs.browser.tsx index 551d6b25f..d3c021b06 100644 --- a/src/input/tabs/Tabs.browser.tsx +++ b/src/input/tabs/Tabs.browser.tsx @@ -2,10 +2,11 @@ import {Section, Type} from 'alinea/core' import {InputForm} from 'alinea/dashboard/editor/InputForm' import {InputLabel} from 'alinea/dashboard/view/InputLabel' import {HStack, TextLabel} from 'alinea/ui' -import {Lift} from 'alinea/ui/Lift' +import {Lift, LiftHeader} from 'alinea/ui/Lift' import {Sink} from 'alinea/ui/Sink' -import {Tabs} from 'alinea/ui/Tabs' +import * as Tabs from 'alinea/ui/Tabs' import {useElevation} from 'alinea/ui/util/Elevation' +import {useId} from 'react' import {TabsSection, tabs as createTabs} from './Tabs.js' export * from './Tabs.js' @@ -18,52 +19,53 @@ interface TabsViewProps { } export interface TabsHeaderProps { + id: string section: Section backdrop?: boolean } -export function TabsHeader({section, backdrop}: TabsHeaderProps) { +export function TabsHeader({id, section, backdrop = true}: TabsHeaderProps) { const tabs = section[Section.Data] as TabsSection const visibleTypes = tabs.types.filter(type => !Type.meta(type).isHidden) if (!visibleTypes.length) return null - return ( - + const list = ( + {visibleTypes.map((type, i) => { const meta = Type.meta(type) const Icon = meta.icon return ( - + {Icon && } - + ) })} - + ) + return backdrop ? {list} : list } function TabsView({section}: TabsViewProps) { + const id = useId() const {parent} = useElevation() const tabs = section[Section.Data] as TabsSection const visibleTypes = tabs.types.filter(type => !Type.meta(type).isHidden) if (!visibleTypes.length) return null const inner = ( - - + + - - {visibleTypes.map((type, i) => { - return ( - - - - ) - })} - + {visibleTypes.map((type, i) => { + return ( + + + + ) + })} - + ) return (
diff --git a/src/ui.stories.tsx b/src/ui.stories.tsx new file mode 100644 index 000000000..e48b3ded4 --- /dev/null +++ b/src/ui.stories.tsx @@ -0,0 +1,33 @@ +import {Button, HStack} from 'alinea/ui' +import * as Tabs from 'alinea/ui/Tabs' +import {UIStory} from 'alinea/ui/UIStory' + +export function Buttons() { + return ( + + + + + + + ) +} + +export function TabsList() { + return ( + + + + Founding of Rome + Monarchy and Republic + Empire + + + Arma virumque cano, Troiae qui primus ab oris. + + Senatus Populusque Romanus. + Alea jacta est. + + + ) +} diff --git a/src/ui/Button.stories.tsx b/src/ui/Button.stories.tsx deleted file mode 100644 index cd0d54187..000000000 --- a/src/ui/Button.stories.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import {Button} from './Button.js' -import {HStack} from './Stack.js' -import {uiDecorator} from './UIStory.js' - -export function Buttons() { - return ( - - - - - ) -} - -export default { - title: 'UI', - decorators: uiDecorator() -} diff --git a/src/ui/Lift.module.scss b/src/ui/Lift.module.scss index dedaf2bf6..23294e854 100644 --- a/src/ui/Lift.module.scss +++ b/src/ui/Lift.module.scss @@ -33,7 +33,6 @@ .header { background: var(--alinea-background); box-shadow: 0 0 1.4px var(--alinea-shadow), 0 2px 3.5px var(--alinea-shadow); - padding: 0 13px; &:first-child { border-top-left-radius: var(--alinea-border-radius); diff --git a/src/ui/Tabs.module.scss b/src/ui/Tabs.module.scss index 7cea3c572..9b1af7f17 100644 --- a/src/ui/Tabs.module.scss +++ b/src/ui/Tabs.module.scss @@ -11,7 +11,8 @@ z-index: 0; appearance: none; background: transparent; - display: block; + display: flex; + align-items: center; border: none; color: inherit; font: inherit; @@ -31,7 +32,7 @@ opacity: 1; } - &.is-selected { + &[data-selected] { opacity: 1; background: var(--alinea-selected); color: var(--alinea-selected-foreground); diff --git a/src/ui/Tabs.tsx b/src/ui/Tabs.tsx index 062a3e30f..a27c7a6ff 100644 --- a/src/ui/Tabs.tsx +++ b/src/ui/Tabs.tsx @@ -1,43 +1,10 @@ -import {Tab} from '@headlessui/react' -import {ComponentPropsWithoutRef, PropsWithChildren} from 'react' -import liftCss from './Lift.module.scss' +import * as rac from 'react-aria-components' import css from './Tabs.module.scss' -import {fromModule} from './util/Styler.js' +import {fromModule, style} from './util/Styler.js' const styles = fromModule(css) -const liftStyles = fromModule(liftCss) -export namespace Tabs { - export const Root: typeof Tab.Group = Tab.Group - export function List({ - backdrop = true, - ...props - }: PropsWithChildren< - ComponentPropsWithoutRef & {backdrop?: boolean} - >) { - return ( - - ) - } - export function Trigger( - props: PropsWithChildren> - ) { - return ( - - styles.trigger.mergeProps(props)({selected}) - } - /> - ) - } - export const Panels: typeof Tab.Panels = Tab.Panels - export const Panel: typeof Tab.Panel = Tab.Panel -} +export const Tabs = rac.Tabs +export const TabList = style(rac.TabList, styles.list) +export const Tab = style(rac.Tab, styles.trigger) +export const TabPanel = rac.TabPanel diff --git a/src/ui/package.json b/src/ui/package.json index b67dc1472..09c87d4ac 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -7,6 +7,7 @@ "color2k": "^1.2.4", "line-height": "^0.3.1", "micro-observables": "^1.7.2", + "react-aria-components": "^1.0.1", "regexparam": "^2.0.1", "use-error-boundary": "^2.0.6" } diff --git a/src/ui/util/Styler.tsx b/src/ui/util/Styler.tsx index 6c5e815d1..7e0decb10 100644 --- a/src/ui/util/Styler.tsx +++ b/src/ui/util/Styler.tsx @@ -1,4 +1,4 @@ -import {forwardRef} from 'react' +import {ComponentType, createElement, forwardRef} from 'react' import type {As, ComponentWithAs} from './PropsWithAs.js' type VariantImpl = T | {[K in T]?: boolean} @@ -151,3 +151,17 @@ export const fromModule = ( } return res as any } + +export function style( + component: T, + styler: Styler +): T { + return forwardRef((props: any, ref) => { + const {className, ...rest} = props + return createElement(component, { + ...rest, + className: styler.mergeProps(props)(), + ref + }) + }) as any +} diff --git a/yarn.lock b/yarn.lock index ce97d7f1c..dc5153570 100644 --- a/yarn.lock +++ b/yarn.lock @@ -164,6 +164,7 @@ __metadata: color2k: ^1.2.4 line-height: ^0.3.1 micro-observables: ^1.7.2 + react-aria-components: ^1.0.1 regexparam: ^2.0.1 use-error-boundary: ^2.0.6 languageName: unknown @@ -1251,6 +1252,55 @@ __metadata: languageName: node linkType: hard +"@formatjs/ecma402-abstract@npm:1.18.2": + version: 1.18.2 + resolution: "@formatjs/ecma402-abstract@npm:1.18.2" + dependencies: + "@formatjs/intl-localematcher": 0.5.4 + tslib: ^2.4.0 + checksum: c664056ccab4e3407feabd5802276075eae2b614acb8c5979045ff5a70bfec4c04488188c30b311b6db0e0eb0b5c1ca328868d76472a14243c944bc0639e8a4d + languageName: node + linkType: hard + +"@formatjs/fast-memoize@npm:2.2.0": + version: 2.2.0 + resolution: "@formatjs/fast-memoize@npm:2.2.0" + dependencies: + tslib: ^2.4.0 + checksum: 8697fe72a7ece252d600a7d08105f2a2f758e2dd96f54ac0a4c508b1205a559fc08835635e1f8e5ca9dcc3ee61ce1fca4a0e7047b402f29fc96051e293a280ff + languageName: node + linkType: hard + +"@formatjs/icu-messageformat-parser@npm:2.7.5": + version: 2.7.5 + resolution: "@formatjs/icu-messageformat-parser@npm:2.7.5" + dependencies: + "@formatjs/ecma402-abstract": 1.18.2 + "@formatjs/icu-skeleton-parser": 1.7.2 + tslib: ^2.4.0 + checksum: b32e937e59064fd71e388b71e648062554e420a855b00ce12133ce4ef698e45201f91e95fb3dbb76272b6ea5a13150a39a8e8835e2b5ee89d9d33665288e90d1 + languageName: node + linkType: hard + +"@formatjs/icu-skeleton-parser@npm:1.7.2": + version: 1.7.2 + resolution: "@formatjs/icu-skeleton-parser@npm:1.7.2" + dependencies: + "@formatjs/ecma402-abstract": 1.18.2 + tslib: ^2.4.0 + checksum: be6315223e1adba40cef0811477eb0cb285fed851af9bd59415eb6a4f8eea4927f725bd30d7194df8637caa2ee85a7f1f3236c971c377e73159a2df00f635ebb + languageName: node + linkType: hard + +"@formatjs/intl-localematcher@npm:0.5.4": + version: 0.5.4 + resolution: "@formatjs/intl-localematcher@npm:0.5.4" + dependencies: + tslib: ^2.4.0 + checksum: a0af57874fcd163add5f7a0cb1c008e9b09feb1d24cbce1263379ae0393cddd6681197a7f2f512f351a97666fc8675ed52cc17d1834266ee8fc65e9edf3435f6 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.0.1": version: 1.1.2 resolution: "@gar/promisify@npm:1.1.2" @@ -1313,6 +1363,43 @@ __metadata: languageName: node linkType: hard +"@internationalized/date@npm:^3.5.1": + version: 3.5.1 + resolution: "@internationalized/date@npm:3.5.1" + dependencies: + "@swc/helpers": ^0.5.0 + checksum: d61db2529e5a2e5012d6f5924051d75b4cf9482374043b14f574757d2008c89b638365d66baef62badbdcdd6b99481af8d235a03006ff68832b6be8c17cbcecd + languageName: node + linkType: hard + +"@internationalized/message@npm:^3.1.1": + version: 3.1.1 + resolution: "@internationalized/message@npm:3.1.1" + dependencies: + "@swc/helpers": ^0.5.0 + intl-messageformat: ^10.1.0 + checksum: c8658847e80a2dd6f5a253bdc20ce45d304ffa2147248e6422d72714ac501edd0d4cce09e4baf7753cd393e4df7014df747425ff9658728cd1f892d71c3d591b + languageName: node + linkType: hard + +"@internationalized/number@npm:^3.5.0": + version: 3.5.0 + resolution: "@internationalized/number@npm:3.5.0" + dependencies: + "@swc/helpers": ^0.5.0 + checksum: fe1026cae19eadaa2490c795f835e6b54961daf905dc624533b39214463802aa8264cb11dcac42362dcf17035a155f061f4c02f6b3a882a6cd11a28c9422285d + languageName: node + linkType: hard + +"@internationalized/string@npm:^3.2.0": + version: 3.2.0 + resolution: "@internationalized/string@npm:3.2.0" + dependencies: + "@swc/helpers": ^0.5.0 + checksum: 94bccf341614f80d8eb043621424f0fb40d0ab40dcd9f41e02274b9f61a0268e7b69f624c8c4e3ba52115281b9b4bf89a85c47fbe00b2d6ba481fc727edc3506 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -1601,280 +1688,1689 @@ __metadata: version: 0.25.13 resolution: "@mswjs/interceptors@npm:0.25.13" dependencies: - "@open-draft/deferred-promise": ^2.2.0 - "@open-draft/logger": ^0.3.0 - "@open-draft/until": ^2.0.0 - is-node-process: ^1.2.0 - outvariant: ^1.2.1 - strict-event-emitter: ^0.5.1 - checksum: 21eaefbd66dc2c3bbeec5b6a2fdc714f6a0967158c0137cd1e4b875284e55d358b4a032030d5e0783e5826cdb27918086d1fd8412f3cbcc70e5368554f678d46 + "@open-draft/deferred-promise": ^2.2.0 + "@open-draft/logger": ^0.3.0 + "@open-draft/until": ^2.0.0 + is-node-process: ^1.2.0 + outvariant: ^1.2.1 + strict-event-emitter: ^0.5.1 + checksum: 21eaefbd66dc2c3bbeec5b6a2fdc714f6a0967158c0137cd1e4b875284e55d358b4a032030d5e0783e5826cdb27918086d1fd8412f3cbcc70e5368554f678d46 + languageName: node + linkType: hard + +"@next/env@npm:14.0.4": + version: 14.0.4 + resolution: "@next/env@npm:14.0.4" + checksum: e8dac033d92c10e55d3b1802f8fd9be00383ed9d479add9fee0823a9a0bf2ab0f4421d5baea52921871c82daf5cd292421db8a1ed5d173e3cb088c3b3a984c0d + languageName: node + linkType: hard + +"@next/eslint-plugin-next@npm:13.4.0": + version: 13.4.0 + resolution: "@next/eslint-plugin-next@npm:13.4.0" + dependencies: + glob: 7.1.7 + checksum: e02e2cbf127c58a31564c66ae3bf3cec06e87d959fa57d150eb9ad6601c90d07040573c81858dda6a37172de73909e3a25a0a20bc68ff6218e4c812804039a56 + languageName: node + linkType: hard + +"@next/swc-darwin-arm64@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-darwin-arm64@npm:14.0.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-darwin-x64@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-darwin-x64@npm:14.0.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@next/swc-linux-arm64-gnu@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-linux-arm64-gnu@npm:14.0.4" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-arm64-musl@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-linux-arm64-musl@npm:14.0.4" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-linux-x64-gnu@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-linux-x64-gnu@npm:14.0.4" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-x64-musl@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-linux-x64-musl@npm:14.0.4" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-win32-arm64-msvc@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-win32-arm64-msvc@npm:14.0.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-win32-ia32-msvc@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-win32-ia32-msvc@npm:14.0.4" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@next/swc-win32-x64-msvc@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-win32-x64-msvc@npm:14.0.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: ^1.1.9 + checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: ^1.6.0 + checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^1.0.0": + version: 1.0.0 + resolution: "@npmcli/fs@npm:1.0.0" + dependencies: + "@gar/promisify": ^1.0.1 + semver: ^7.3.5 + checksum: f2b4990107dd2a5b18794c89aaff6f62f3a67883d49a20602fdfc353cbc7f8c5fd50edeffdc769e454900e01b8b8e43d0b9eb524d00963d69f3c829be1a2e8ac + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^1.0.1": + version: 1.1.2 + resolution: "@npmcli/move-file@npm:1.1.2" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 + languageName: node + linkType: hard + +"@open-draft/deferred-promise@npm:^2.2.0": + version: 2.2.0 + resolution: "@open-draft/deferred-promise@npm:2.2.0" + checksum: 7f29d39725bb8ab5b62f89d88a4202ce2439ac740860979f9e3d0015dfe4bc3daddcfa5727fa4eed482fdbee770aa591b1136b98b0a0f0569a65294f35bdf56a + languageName: node + linkType: hard + +"@open-draft/logger@npm:^0.3.0": + version: 0.3.0 + resolution: "@open-draft/logger@npm:0.3.0" + dependencies: + is-node-process: ^1.2.0 + outvariant: ^1.4.0 + checksum: 7adfe3d0ed8ca32333ce2a77f9a93d561ebc89c989eaa9722f1dc8a2d2854f5de1bef6fa6894cdf58e16fa4dd9cfa99444ea1f5cac6eb1518e9247911ed042d5 + languageName: node + linkType: hard + +"@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": + version: 2.1.0 + resolution: "@open-draft/until@npm:2.1.0" + checksum: 140ea3b16f4a3a6a729c1256050e20a93d408d7aa1e125648ce2665b3c526ed452510c6e4a6f4b15d95fb5e41203fb51510eb8fbc8812d5e5a91880293d66471 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f + languageName: node + linkType: hard + +"@pkgr/utils@npm:^2.3.1": + version: 2.4.0 + resolution: "@pkgr/utils@npm:2.4.0" + dependencies: + cross-spawn: ^7.0.3 + fast-glob: ^3.2.12 + is-glob: ^4.0.3 + open: ^9.1.0 + picocolors: ^1.0.0 + tslib: ^2.5.0 + checksum: 2ed93a92fd58d612c7a7d04f91ce50c967d2e2d5c4f63802f62a882fcb7d91208cf89640bb3baad10ef7d42bea1e196fba956e7e36a68e9f94d2738e8974a24a + languageName: node + linkType: hard + +"@popperjs/core@npm:^2.9.0": + version: 2.10.2 + resolution: "@popperjs/core@npm:2.10.2" + checksum: 43c189e3eb6d032433512d94761b54fc7cae15957ca5528008813f887a67b5760b949f30a5141b476be2ba5a6c677c91def150f603d2d3e30b5e97a5ae51474e + languageName: node + linkType: hard + +"@react-aria/breadcrumbs@npm:^3.5.9": + version: 3.5.9 + resolution: "@react-aria/breadcrumbs@npm:3.5.9" + dependencies: + "@react-aria/i18n": ^3.10.0 + "@react-aria/link": ^3.6.3 + "@react-aria/utils": ^3.23.0 + "@react-types/breadcrumbs": ^3.7.2 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6980492c7391879d9c7ba8f1e69d2258fc26d0fde14f06384e4b949e9ef5d862ed1058694a0458820927e27eb2d049b88e2c6082239e141acee4083fa44152dc + languageName: node + linkType: hard + +"@react-aria/button@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-aria/button@npm:3.9.1" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/toggle": ^3.7.0 + "@react-types/button": ^3.9.1 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 9314b44d867e014a0f0d9af425982ee53dcdfbb738df550b79a6eeb6a023ea700f6f02b3671fc43923c4df5a28a147502338563ad518c650a91667730445cf11 + languageName: node + linkType: hard + +"@react-aria/calendar@npm:^3.5.4": + version: 3.5.4 + resolution: "@react-aria/calendar@npm:3.5.4" + dependencies: + "@internationalized/date": ^3.5.1 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/live-announcer": ^3.3.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/calendar": ^3.4.3 + "@react-types/button": ^3.9.1 + "@react-types/calendar": ^3.4.3 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 3fd6702fc86169c690f73a2ba863a289166da9315f79df995cbc5584ed61cd734cbfedf377450d88ad3ea7d6a5ca22e9f26e15abddde2edfec845d0c52f0d02f + languageName: node + linkType: hard + +"@react-aria/checkbox@npm:^3.13.0": + version: 3.13.0 + resolution: "@react-aria/checkbox@npm:3.13.0" + dependencies: + "@react-aria/form": ^3.0.1 + "@react-aria/label": ^3.7.4 + "@react-aria/toggle": ^3.10.0 + "@react-aria/utils": ^3.23.0 + "@react-stately/checkbox": ^3.6.1 + "@react-stately/form": ^3.0.0 + "@react-stately/toggle": ^3.7.0 + "@react-types/checkbox": ^3.6.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 62671ac4e8321dc2a49bc605abab00935bbc939ed9583f1045112f1df32153bb720640e77da9b6b9483127db80c5edb76094e52a4e18d78e13d973ddfa90d26f + languageName: node + linkType: hard + +"@react-aria/combobox@npm:^3.8.2": + version: 3.8.2 + resolution: "@react-aria/combobox@npm:3.8.2" + dependencies: + "@react-aria/i18n": ^3.10.0 + "@react-aria/listbox": ^3.11.3 + "@react-aria/live-announcer": ^3.3.1 + "@react-aria/menu": ^3.12.0 + "@react-aria/overlays": ^3.20.0 + "@react-aria/selection": ^3.17.3 + "@react-aria/textfield": ^3.14.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/collections": ^3.10.4 + "@react-stately/combobox": ^3.8.1 + "@react-stately/form": ^3.0.0 + "@react-types/button": ^3.9.1 + "@react-types/combobox": ^3.10.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 7e345bf9b60f01057eba03ddabfc78078fe34632db3bc3097fbf2d4e5f9ef596be6e253f0fa1405ba4e3904b4c18dff98562519112c081559f4d30314f6ac9e6 + languageName: node + linkType: hard + +"@react-aria/datepicker@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-aria/datepicker@npm:3.9.1" + dependencies: + "@internationalized/date": ^3.5.1 + "@internationalized/number": ^3.5.0 + "@internationalized/string": ^3.2.0 + "@react-aria/focus": ^3.16.0 + "@react-aria/form": ^3.0.1 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/label": ^3.7.4 + "@react-aria/spinbutton": ^3.6.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/datepicker": ^3.9.1 + "@react-stately/form": ^3.0.0 + "@react-types/button": ^3.9.1 + "@react-types/calendar": ^3.4.3 + "@react-types/datepicker": ^3.7.1 + "@react-types/dialog": ^3.5.7 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 9a0823b489abc6741ba1a37ec0eef2512b5a3e841052fbe9435dc0caac229d442b45a5b2a659f947efb82e90c02ba3536fc772ac73c105be0046c6bf07d0d338 + languageName: node + linkType: hard + +"@react-aria/dialog@npm:^3.5.10": + version: 3.5.10 + resolution: "@react-aria/dialog@npm:3.5.10" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/overlays": ^3.20.0 + "@react-aria/utils": ^3.23.0 + "@react-types/dialog": ^3.5.7 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 5ef3cdc4414b26f84eb364b4c53fa53d6f2b24605c09d76624cd4a7d8fb1e4a76026fd025295bfe3707e1702d64be7fff39a35a56ecb6429fb15441aaf6acb09 + languageName: node + linkType: hard + +"@react-aria/dnd@npm:^3.5.1": + version: 3.5.1 + resolution: "@react-aria/dnd@npm:3.5.1" + dependencies: + "@internationalized/string": ^3.2.0 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/live-announcer": ^3.3.1 + "@react-aria/overlays": ^3.20.0 + "@react-aria/utils": ^3.23.0 + "@react-stately/dnd": ^3.2.7 + "@react-types/button": ^3.9.1 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: e3b63abff8263c85a9fbb090dd041771728b8f69b80ce31086793a4157575dc1d41dbb41ec710c16670f31ce8245794968010a10ca8d9489b8dd87a84e480514 + languageName: node + linkType: hard + +"@react-aria/focus@npm:^3.16.0": + version: 3.16.0 + resolution: "@react-aria/focus@npm:3.16.0" + dependencies: + "@react-aria/interactions": ^3.20.1 + "@react-aria/utils": ^3.23.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + clsx: ^2.0.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6233ed82b0dcb064e6c0e5ce507a0ad32c01079df9511eb643ca1c5b4ce96aa4b853afa70623d37937081d138b215f535bcd2b6e8e236d90a461a1534721efeb + languageName: node + linkType: hard + +"@react-aria/form@npm:^3.0.1": + version: 3.0.1 + resolution: "@react-aria/form@npm:3.0.1" + dependencies: + "@react-aria/interactions": ^3.20.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/form": ^3.0.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: fa91125571292a2c95ed66e18ec8ee3f59197435ea7f133600ea0db0a021264b9f4171197f941ab48c80dee40a1cd6bdc3e45d60e587ec82353c89f1be8e2834 + languageName: node + linkType: hard + +"@react-aria/grid@npm:^3.8.6": + version: 3.8.6 + resolution: "@react-aria/grid@npm:3.8.6" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/live-announcer": ^3.3.1 + "@react-aria/selection": ^3.17.3 + "@react-aria/utils": ^3.23.0 + "@react-stately/collections": ^3.10.4 + "@react-stately/grid": ^3.8.4 + "@react-stately/selection": ^3.14.2 + "@react-stately/virtualizer": ^3.6.6 + "@react-types/checkbox": ^3.6.0 + "@react-types/grid": ^3.2.3 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 1a519a7227a354e37b7730a97fa1ae7930fcbb6339309f1dc014a21d6cda16fd24a1e985d74eb43f493f9976058491d88c5fb20c44ff9e6c1e6caae8b80b86bb + languageName: node + linkType: hard + +"@react-aria/gridlist@npm:^3.7.3": + version: 3.7.3 + resolution: "@react-aria/gridlist@npm:3.7.3" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/grid": ^3.8.6 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/selection": ^3.17.3 + "@react-aria/utils": ^3.23.0 + "@react-stately/list": ^3.10.2 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: a680e739834b5b5a089f1f9b2e159f6ecbd12583be8b8f5056be1fe74983942685584424ab3e1523b13d86a46e2df7b32dd1c4d0d4fe2074cc4d0d9da0bc4391 + languageName: node + linkType: hard + +"@react-aria/i18n@npm:^3.10.0": + version: 3.10.0 + resolution: "@react-aria/i18n@npm:3.10.0" + dependencies: + "@internationalized/date": ^3.5.1 + "@internationalized/message": ^3.1.1 + "@internationalized/number": ^3.5.0 + "@internationalized/string": ^3.2.0 + "@react-aria/ssr": ^3.9.1 + "@react-aria/utils": ^3.23.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: ca74d060520f77a7f12a5a456b7e9eb080d01cf04786319389b210164053b71297ccce8fbea7d184f6eafad485c7d3733cd167d107774a82a7d021007a672646 + languageName: node + linkType: hard + +"@react-aria/interactions@npm:^3.20.1": + version: 3.20.1 + resolution: "@react-aria/interactions@npm:3.20.1" + dependencies: + "@react-aria/ssr": ^3.9.1 + "@react-aria/utils": ^3.23.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: f4b7a83a33eb7c5571e5dc8ad69eade10c04407e7887493227a6f3899c8f21d0572f9d2af055edb8f97bfaa36a98977b6564d9dde6626cbcae4cb5f0b9ae144f + languageName: node + linkType: hard + +"@react-aria/label@npm:^3.7.4": + version: 3.7.4 + resolution: "@react-aria/label@npm:3.7.4" + dependencies: + "@react-aria/utils": ^3.23.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: a0fe8574a4765abd699f73c2840e44deba73680831d9e21007a0b743aa9ca183008907a68be1944aa39d3228dd76e810343215706f98ece8e77b99e2cefa0e1d + languageName: node + linkType: hard + +"@react-aria/link@npm:^3.6.3": + version: 3.6.3 + resolution: "@react-aria/link@npm:3.6.3" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/utils": ^3.23.0 + "@react-types/link": ^3.5.2 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 56482b33d6dbe24a3304a10b7a1510807c16a89a11193b666ffe9e850237ce6b61979017bfd62997795ea1f5260ea64c1dd7fff0809bb10cd45f2201e7163253 + languageName: node + linkType: hard + +"@react-aria/listbox@npm:^3.11.3": + version: 3.11.3 + resolution: "@react-aria/listbox@npm:3.11.3" + dependencies: + "@react-aria/interactions": ^3.20.1 + "@react-aria/label": ^3.7.4 + "@react-aria/selection": ^3.17.3 + "@react-aria/utils": ^3.23.0 + "@react-stately/collections": ^3.10.4 + "@react-stately/list": ^3.10.2 + "@react-types/listbox": ^3.4.6 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 4cbb1fb9859973a60e48a5a3c39a34a6c6be4a14954cef4eb033efd31399856d53936957a856fba7006128d082463695443174607f592ecc2c0868e4e11879c9 + languageName: node + linkType: hard + +"@react-aria/live-announcer@npm:^3.3.1": + version: 3.3.1 + resolution: "@react-aria/live-announcer@npm:3.3.1" + dependencies: + "@swc/helpers": ^0.5.0 + checksum: df4e161247c87038eabf3f623a3ce18ef486f6c8a3e136b9c91bf3585312f48759cbd5d8ba6d0236231ee3070343798b9865a15a07afd9dabebafc0249a1fda7 + languageName: node + linkType: hard + +"@react-aria/menu@npm:^3.12.0": + version: 3.12.0 + resolution: "@react-aria/menu@npm:3.12.0" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/overlays": ^3.20.0 + "@react-aria/selection": ^3.17.3 + "@react-aria/utils": ^3.23.0 + "@react-stately/collections": ^3.10.4 + "@react-stately/menu": ^3.6.0 + "@react-stately/tree": ^3.7.5 + "@react-types/button": ^3.9.1 + "@react-types/menu": ^3.9.6 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: a50c2d8316d0e452a555816cb01b54094308ae1b10ad442f9ef4b878558eee1d3c5ebb9fdd7140f0fc6b25c9db60703e73f24da16b418ab8ccc0044c0c7a2ded + languageName: node + linkType: hard + +"@react-aria/meter@npm:^3.4.9": + version: 3.4.9 + resolution: "@react-aria/meter@npm:3.4.9" + dependencies: + "@react-aria/progress": ^3.4.9 + "@react-types/meter": ^3.3.6 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 2805e80fb86a993bd98e9a2aed48eac39f74775cf9ce148e78311283da14e9ffa1883847310f0d8560bc273385e5d38f4002916eec5c1856c237ded8cfdcc648 + languageName: node + linkType: hard + +"@react-aria/numberfield@npm:^3.10.2": + version: 3.10.2 + resolution: "@react-aria/numberfield@npm:3.10.2" + dependencies: + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/spinbutton": ^3.6.1 + "@react-aria/textfield": ^3.14.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/form": ^3.0.0 + "@react-stately/numberfield": ^3.8.0 + "@react-types/button": ^3.9.1 + "@react-types/numberfield": ^3.7.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: a840c952eff9eb467f46c77fbfe887f24a41e3d85409a88f1d06e80197458b8c9e1ab6cadb3a2148b011309eba858f15c7d0ade925e7a7868c9ef378ba14f5f6 + languageName: node + linkType: hard + +"@react-aria/overlays@npm:^3.20.0": + version: 3.20.0 + resolution: "@react-aria/overlays@npm:3.20.0" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/ssr": ^3.9.1 + "@react-aria/utils": ^3.23.0 + "@react-aria/visually-hidden": ^3.8.8 + "@react-stately/overlays": ^3.6.4 + "@react-types/button": ^3.9.1 + "@react-types/overlays": ^3.8.4 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 328f2b685ff00d2f92cc3f831fbb445b4585483b521d0ef8e78951eb432053b96223243b8d5f9f475118e4f0d7f861dda1b86929a78910e5e554e45cdd4a1e0c + languageName: node + linkType: hard + +"@react-aria/progress@npm:^3.4.9": + version: 3.4.9 + resolution: "@react-aria/progress@npm:3.4.9" + dependencies: + "@react-aria/i18n": ^3.10.0 + "@react-aria/label": ^3.7.4 + "@react-aria/utils": ^3.23.0 + "@react-types/progress": ^3.5.1 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 7dbdc1e25dcb33d9859fd1c16e56c55246deacc27a6b89c05f3a1c4fe6c08682116b8290bd9010736358f995c7c339c767327feb18424bfc22b29e5cbc70e7ca + languageName: node + linkType: hard + +"@react-aria/radio@npm:^3.10.0": + version: 3.10.0 + resolution: "@react-aria/radio@npm:3.10.0" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/form": ^3.0.1 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/label": ^3.7.4 + "@react-aria/utils": ^3.23.0 + "@react-stately/radio": ^3.10.1 + "@react-types/radio": ^3.7.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: ac9878e11221aace3e9581c69ba2eefb01a778440e073923e6d53b7fe3cb8e9a594ab73caafc823e2d5da78fa59026caaf2a182691221a2f0d9c2bb80b4e7ee6 + languageName: node + linkType: hard + +"@react-aria/searchfield@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-aria/searchfield@npm:3.7.1" + dependencies: + "@react-aria/i18n": ^3.10.0 + "@react-aria/textfield": ^3.14.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/searchfield": ^3.5.0 + "@react-types/button": ^3.9.1 + "@react-types/searchfield": ^3.5.2 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 34f71e188eb1608bef05a1a654093e6882cf274fa710718954e35ec0778a2c33186e8176a9a56036b7e1e9e8a8b663c78915698cf889db8a9289e94ff826d037 + languageName: node + linkType: hard + +"@react-aria/select@npm:^3.14.1": + version: 3.14.1 + resolution: "@react-aria/select@npm:3.14.1" + dependencies: + "@react-aria/form": ^3.0.1 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/label": ^3.7.4 + "@react-aria/listbox": ^3.11.3 + "@react-aria/menu": ^3.12.0 + "@react-aria/selection": ^3.17.3 + "@react-aria/utils": ^3.23.0 + "@react-aria/visually-hidden": ^3.8.8 + "@react-stately/select": ^3.6.1 + "@react-types/button": ^3.9.1 + "@react-types/select": ^3.9.1 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 7923833bf7f93668e1608adc640d450044ba18946cd0778f18d083656f2d4f788170c4135444172bf32f439ced2118721b448bb5176a5e06c17e5e498ca6a939 + languageName: node + linkType: hard + +"@react-aria/selection@npm:^3.17.3": + version: 3.17.3 + resolution: "@react-aria/selection@npm:3.17.3" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/selection": ^3.14.2 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 4816f7dee5a47f1dd5f8ed827bc6d52f2c285b4c713d6adc8f176a4484c767b3eb1e7b898007861b88df934eda5552616fcb0267cd57f518a72e0c7a177c7b8b + languageName: node + linkType: hard + +"@react-aria/separator@npm:^3.3.9": + version: 3.3.9 + resolution: "@react-aria/separator@npm:3.3.9" + dependencies: + "@react-aria/utils": ^3.23.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 33b3f4e1247cc561e8209577433f0d5c5f403916e15c3d83c17f8861d295c1a0a756e3804c8ee6c7944d91e685ecf80a2e775ea8805b0786167ff511f0958c4a + languageName: node + linkType: hard + +"@react-aria/slider@npm:^3.7.4": + version: 3.7.4 + resolution: "@react-aria/slider@npm:3.7.4" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/label": ^3.7.4 + "@react-aria/utils": ^3.23.0 + "@react-stately/slider": ^3.5.0 + "@react-types/shared": ^3.22.0 + "@react-types/slider": ^3.7.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 0d056c18e7a2d212f0f8fe0bb17f5dfb80698673e1342ea9734d2e6a58015ffddff92ca40058d1f6139e23fe65a33f4158ed6362cec28e4f64025af61fde21ca + languageName: node + linkType: hard + +"@react-aria/spinbutton@npm:^3.6.1": + version: 3.6.1 + resolution: "@react-aria/spinbutton@npm:3.6.1" + dependencies: + "@react-aria/i18n": ^3.10.0 + "@react-aria/live-announcer": ^3.3.1 + "@react-aria/utils": ^3.23.0 + "@react-types/button": ^3.9.1 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: eaedb71a461cbf46003992e642e5a042a8ba873485bc5645018f01a1d48e18446486909bd8c9731fb25ac915155b4c2dd1ddde2a938b52ce7fc67d2792f41891 + languageName: node + linkType: hard + +"@react-aria/ssr@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-aria/ssr@npm:3.9.1" + dependencies: + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 23bd76a7963af31169396bc821eac2e58fbe1dbb81af3e5d54ec76667a8ec616b2a79e15aaa49b2270f0c5b35a6b9e46fdda20056ee0f4fda84ebf9433665355 + languageName: node + linkType: hard + +"@react-aria/switch@npm:^3.6.0": + version: 3.6.0 + resolution: "@react-aria/switch@npm:3.6.0" + dependencies: + "@react-aria/toggle": ^3.10.0 + "@react-stately/toggle": ^3.7.0 + "@react-types/switch": ^3.5.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 7f08e52c28ba5f61263b507c8f2d472d2661695f884fcb80ae7a8de58deed38d2dd011b1c2079180ce49ccaf279171345ba5be56844ed10bc233e9fec73756ed + languageName: node + linkType: hard + +"@react-aria/table@npm:^3.13.3": + version: 3.13.3 + resolution: "@react-aria/table@npm:3.13.3" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/grid": ^3.8.6 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/live-announcer": ^3.3.1 + "@react-aria/utils": ^3.23.0 + "@react-aria/visually-hidden": ^3.8.8 + "@react-stately/collections": ^3.10.4 + "@react-stately/flags": ^3.0.0 + "@react-stately/table": ^3.11.4 + "@react-stately/virtualizer": ^3.6.6 + "@react-types/checkbox": ^3.6.0 + "@react-types/grid": ^3.2.3 + "@react-types/shared": ^3.22.0 + "@react-types/table": ^3.9.2 + "@swc/helpers": ^0.5.0 + 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 + checksum: 15a94db18336ed0302b11c63288dffd33b0c097bcbd02add786177acbe7149ccb000ce737194d9e8d39a8e4496120b3ae0a08d7ba98885267a35b44e834c6a94 + languageName: node + linkType: hard + +"@react-aria/tabs@npm:^3.8.3": + version: 3.8.3 + resolution: "@react-aria/tabs@npm:3.8.3" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/i18n": ^3.10.0 + "@react-aria/selection": ^3.17.3 + "@react-aria/utils": ^3.23.0 + "@react-stately/tabs": ^3.6.3 + "@react-types/shared": ^3.22.0 + "@react-types/tabs": ^3.3.4 + "@swc/helpers": ^0.5.0 + 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 + checksum: a729a568db32227d7262cfeeed758f396a2e33bca58e0f5b550559f55944389f9e8f2f068ee996ed853eb057084dc891e5d529553e3bff2fcab4e3d3a3f7a8b2 + languageName: node + linkType: hard + +"@react-aria/tag@npm:^3.3.1": + version: 3.3.1 + resolution: "@react-aria/tag@npm:3.3.1" + dependencies: + "@react-aria/gridlist": ^3.7.3 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/label": ^3.7.4 + "@react-aria/selection": ^3.17.3 + "@react-aria/utils": ^3.23.0 + "@react-stately/list": ^3.10.2 + "@react-types/button": ^3.9.1 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + 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 + checksum: 05e2b6354ee416ee0485f47dc5e2bdc2d766713b421c31b83f8285aebb3148a5e5587cbddc5e548867050c6861d45400db09091cb3bd89311606ef6d69b50cd1 + languageName: node + linkType: hard + +"@react-aria/textfield@npm:^3.14.1": + version: 3.14.1 + resolution: "@react-aria/textfield@npm:3.14.1" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/form": ^3.0.1 + "@react-aria/label": ^3.7.4 + "@react-aria/utils": ^3.23.0 + "@react-stately/form": ^3.0.0 + "@react-stately/utils": ^3.9.0 + "@react-types/shared": ^3.22.0 + "@react-types/textfield": ^3.9.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: c1750b02fb0376726385ef4f8c62494bc911f75d6ee69789597ac656028743385a96e38569956090700d71355f25423a46c3bb25f8442d74ade9077353d1547b + languageName: node + linkType: hard + +"@react-aria/toggle@npm:^3.10.0": + version: 3.10.0 + resolution: "@react-aria/toggle@npm:3.10.0" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/toggle": ^3.7.0 + "@react-types/checkbox": ^3.6.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 688ba18c94f395878acf59bada7f4ecafa5f881211289f192b98348a7f545690a5fe9306e1ab0b29c8aed4bcfd8eb43e8382d1bb15e41c97043c829089a7a38c + languageName: node + linkType: hard + +"@react-aria/toolbar@npm:3.0.0-beta.1": + version: 3.0.0-beta.1 + resolution: "@react-aria/toolbar@npm:3.0.0-beta.1" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/i18n": ^3.10.0 + "@react-aria/utils": ^3.23.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: f7c1ab1d473978d92856397d00ff785b0c06900dadb3bf0327374928b4a6c25c230a7b2e0ce98709b72f928e2b76c0c817c95af9bc7bcb1d5052383f726bf79e + languageName: node + linkType: hard + +"@react-aria/tooltip@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-aria/tooltip@npm:3.7.0" + dependencies: + "@react-aria/focus": ^3.16.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/tooltip": ^3.4.6 + "@react-types/shared": ^3.22.0 + "@react-types/tooltip": ^3.4.6 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 2d71d016407cd32222bbd781afa055209d9bb8b987666d1e2abce140e5981e49ae33256814408c25a07bdd96066cec0e5c3c6a0cf7899312c0b840c06ddeeac7 + languageName: node + linkType: hard + +"@react-aria/utils@npm:^3.23.0": + version: 3.23.0 + resolution: "@react-aria/utils@npm:3.23.0" + dependencies: + "@react-aria/ssr": ^3.9.1 + "@react-stately/utils": ^3.9.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + clsx: ^2.0.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 704f31a0712687d90c5563afabf3a1dcbdd713fd4e4bc80869b32009316790613291fc182639f967007ee276088cb9f7b1bc8a0f244817643a7e4c8e50212123 + languageName: node + linkType: hard + +"@react-aria/visually-hidden@npm:^3.8.8": + version: 3.8.8 + resolution: "@react-aria/visually-hidden@npm:3.8.8" + dependencies: + "@react-aria/interactions": ^3.20.1 + "@react-aria/utils": ^3.23.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 00807e1a4ede586fb30887ed70c82209fdd4a1e73983603d738f39193465e0f8db215d24fb46e2ad8991d163b0476869a3f4446638149337d6b2cb0123c55e51 + languageName: node + linkType: hard + +"@react-hook/debounce@npm:^3.0.0": + version: 3.0.0 + resolution: "@react-hook/debounce@npm:3.0.0" + dependencies: + "@react-hook/latest": ^1.0.2 + peerDependencies: + react: ">=16.8" + checksum: 3e4aad1daa3b6194c8bb41e6dbcf9f089a0af8480025152a72bd563558e5eee483a5080ccedcd21c2a1f9822f4e8010ab8113642e9dd8c015b3e0081f84aa23d + languageName: node + linkType: hard + +"@react-hook/event@npm:^1.2.1": + version: 1.2.6 + resolution: "@react-hook/event@npm:1.2.6" + peerDependencies: + react: ">=16.8" + checksum: 993855566ca081858347ad5e3ef10dec5026eb84ae199a4d860cd86ebd06d56f1cc8778cc7d8f5aaa0733f3901f690d3d6c78275b45119c0a12dbf0f3265dc7f + languageName: node + linkType: hard + +"@react-hook/latest@npm:^1.0.2": + version: 1.0.3 + resolution: "@react-hook/latest@npm:1.0.3" + peerDependencies: + react: ">=16.8" + checksum: 2408c9cd35c5cfa7697b6da3bc5eebef254a932ade70955074c474f23be7dd3e2f81bbba12edcc9208bd0f89c6ed366d6b11d4f6d7b1052877a0bac8f74afad4 + languageName: node + linkType: hard + +"@react-hook/passive-layout-effect@npm:^1.2.0": + version: 1.2.1 + resolution: "@react-hook/passive-layout-effect@npm:1.2.1" + peerDependencies: + react: ">=16.8" + checksum: 217cb8aa90fb8e677672319a9a466d7752890cf4357c76df000b207696e9cc717cf2ee88080671cc9dae238a82f92093ab4f61ab2f6032d2a8db958fc7d99b5d + languageName: node + linkType: hard + +"@react-hook/resize-observer@npm:^1.2.1": + version: 1.2.5 + resolution: "@react-hook/resize-observer@npm:1.2.5" + dependencies: + "@juggle/resize-observer": ^3.3.1 + "@react-hook/latest": ^1.0.2 + "@react-hook/passive-layout-effect": ^1.2.0 + "@types/raf-schd": ^4.0.0 + raf-schd: ^4.0.2 + peerDependencies: + react: ">=16.8" + checksum: a2f3b333e344adb3d7a4cfd2bc77fd75054b07063fba706d57bef0c497650c3e82038eafb64fa4148c08527e8b0a34f2f70392da1700a7a0d9676ee8ba795c16 + languageName: node + linkType: hard + +"@react-hook/size@npm:^2.1.2": + version: 2.1.2 + resolution: "@react-hook/size@npm:2.1.2" + dependencies: + "@react-hook/passive-layout-effect": ^1.2.0 + "@react-hook/resize-observer": ^1.2.1 + peerDependencies: + react: ">=16.8" + checksum: 89876e93957f420ba63518b60992b46ca82b0d12da0cf50ad487461e0b4230ec0e036ecf100840e2b2e93c9101895ad33e8bd6bc02a25641c28c904a09ab2563 + languageName: node + linkType: hard + +"@react-hook/throttle@npm:^2.2.0": + version: 2.2.0 + resolution: "@react-hook/throttle@npm:2.2.0" + dependencies: + "@react-hook/latest": ^1.0.2 + peerDependencies: + react: ">=16.8" + checksum: fb763dc559602d1ba0b5c601ccfb5f1d872454727c8e827079e41819467d906b6524dbc43c7f78b6818249a31bd96c726b7ed12e68214e0cc5a00b15e939ccca + languageName: node + linkType: hard + +"@react-hook/window-size@npm:^3.0.7": + version: 3.0.7 + resolution: "@react-hook/window-size@npm:3.0.7" + dependencies: + "@react-hook/debounce": ^3.0.0 + "@react-hook/event": ^1.2.1 + "@react-hook/throttle": ^2.2.0 + peerDependencies: + react: ">=16.8" + checksum: 11f3b0a38631ab114b45ab77eff1df124d240acc7dc63e5a020479957ed676ecc76ef330c12bcb9f469a7c1169c4df297b639f1ad2e002914f3aa59f74c3ba99 + languageName: node + linkType: hard + +"@react-stately/calendar@npm:^3.4.3": + version: 3.4.3 + resolution: "@react-stately/calendar@npm:3.4.3" + dependencies: + "@internationalized/date": ^3.5.1 + "@react-stately/utils": ^3.9.0 + "@react-types/calendar": ^3.4.3 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: b306ed8fcdbe87e611abf33879a6bd3226fb21ee1ac7a079435e3dbc1eea5eb952ddac07742560dec86d4158300aa0144aba1fe950c08e7e48db96cc7b21bd9e + languageName: node + linkType: hard + +"@react-stately/checkbox@npm:^3.6.1": + version: 3.6.1 + resolution: "@react-stately/checkbox@npm:3.6.1" + dependencies: + "@react-stately/form": ^3.0.0 + "@react-stately/utils": ^3.9.0 + "@react-types/checkbox": ^3.6.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: c4bac4d6d5bf82f4806183bb524fac83ac3772eaf56d818f3b159ed2c9221a061c31e1cc4a148e6da85fbeff55a340b8dd61c8072521d6e25061429ad48b670d + languageName: node + linkType: hard + +"@react-stately/collections@npm:^3.10.4": + version: 3.10.4 + resolution: "@react-stately/collections@npm:3.10.4" + dependencies: + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 0ddbcb0e0b32e9cf427e1bec8b66da3516e45365528c6e4e4b8f03a9aa78b28636fe3679b2fe0ebdc30734ccb7dc49f46773236f9402a6549ad8288457b09177 + languageName: node + linkType: hard + +"@react-stately/combobox@npm:^3.8.1": + version: 3.8.1 + resolution: "@react-stately/combobox@npm:3.8.1" + dependencies: + "@react-stately/collections": ^3.10.4 + "@react-stately/form": ^3.0.0 + "@react-stately/list": ^3.10.2 + "@react-stately/overlays": ^3.6.4 + "@react-stately/select": ^3.6.1 + "@react-stately/utils": ^3.9.0 + "@react-types/combobox": ^3.10.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 493125b002d632ac37170a51df0a6559575624c7b5688e239b63b6867f6e4570265494c22f0137186a1c0fd37c512d16a862510f7835dcf1c1d26b00ee5fe1e8 + languageName: node + linkType: hard + +"@react-stately/data@npm:^3.11.0": + version: 3.11.0 + resolution: "@react-stately/data@npm:3.11.0" + dependencies: + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: ceb39351deb68269a7ed343c2a99a613650d994bb07003fc145d3f96dc1af254173a03ac4a9bdf954d4ec0a311d10d2bfe2ae6d27352c1446b647a26548b514b + languageName: node + linkType: hard + +"@react-stately/datepicker@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-stately/datepicker@npm:3.9.1" + dependencies: + "@internationalized/date": ^3.5.1 + "@internationalized/string": ^3.2.0 + "@react-stately/form": ^3.0.0 + "@react-stately/overlays": ^3.6.4 + "@react-stately/utils": ^3.9.0 + "@react-types/datepicker": ^3.7.1 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: ade849ee4c1586bc276e3924b9207e6478ae449d0a9e187a760f14d1dda49ebbbd5364165b6a32f3678d7b532507a2110ff66efa9136a826dce3260184eb3631 + languageName: node + linkType: hard + +"@react-stately/dnd@npm:^3.2.7": + version: 3.2.7 + resolution: "@react-stately/dnd@npm:3.2.7" + dependencies: + "@react-stately/selection": ^3.14.2 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 9ab10cd073f6ed03f42e390c59b28a7ad7eda701ba2c6781a3577dfa14ce7128357f34e1b2b86e06494153e74cb9207613704af05429fd388934f7c58340c4bd + languageName: node + linkType: hard + +"@react-stately/flags@npm:^3.0.0": + version: 3.0.0 + resolution: "@react-stately/flags@npm:3.0.0" + dependencies: + "@swc/helpers": ^0.4.14 + checksum: 7bf5c08707d939a62d5739d2933e4057bc3f3587709521584000248dbdfb268423927eec4ee84a005197f6c8da54d8036d4eda094e50b930166f1dc5ac4be2ce + languageName: node + linkType: hard + +"@react-stately/form@npm:^3.0.0": + version: 3.0.0 + resolution: "@react-stately/form@npm:3.0.0" + dependencies: + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: cd0866ab6a87b00fc7986537da02c6857b5b08c9f01a9e91d4bd8372254fbfc8f8c7ca226582a833d347e7f0934a0ee61c6b52779901977846abe623c97b3791 + languageName: node + linkType: hard + +"@react-stately/grid@npm:^3.8.4": + version: 3.8.4 + resolution: "@react-stately/grid@npm:3.8.4" + dependencies: + "@react-stately/collections": ^3.10.4 + "@react-stately/selection": ^3.14.2 + "@react-types/grid": ^3.2.3 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: a9284914f697c4d74bc114133a23f85a5d45be40c34dc7f59beb4d0fcc32d1a887ef2245126eaaa6a73c3402a087014df723e7b32b6741d4100bc6b3b491ea8b + languageName: node + linkType: hard + +"@react-stately/list@npm:^3.10.2": + version: 3.10.2 + resolution: "@react-stately/list@npm:3.10.2" + dependencies: + "@react-stately/collections": ^3.10.4 + "@react-stately/selection": ^3.14.2 + "@react-stately/utils": ^3.9.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: e4202a3952cc8c3d6100967a490119e6848240c6aaa56f0e6c37148ccbc5a5250bfb04c9d592ca66faa1f4e4eae4615586a19549077063a67674e3add693a1db + languageName: node + linkType: hard + +"@react-stately/menu@npm:^3.6.0": + version: 3.6.0 + resolution: "@react-stately/menu@npm:3.6.0" + dependencies: + "@react-stately/overlays": ^3.6.4 + "@react-types/menu": ^3.9.6 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 82e66693a0bea99d9b7fbc129f63b7988a3a53025c472ed3622fe73f664997a2efbbc604a4fa5a9a44b9e737df3229954dcb85e73df4a8715a07405369b41263 + languageName: node + linkType: hard + +"@react-stately/numberfield@npm:^3.8.0": + version: 3.8.0 + resolution: "@react-stately/numberfield@npm:3.8.0" + dependencies: + "@internationalized/number": ^3.5.0 + "@react-stately/form": ^3.0.0 + "@react-stately/utils": ^3.9.0 + "@react-types/numberfield": ^3.7.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 1afe2e29bd0e83940d0d0296e31f12b0a6ea647d9ef32181ea110714be49d34a421927443b7695cad6f1f68b23b2c514a4973a43242a2e5f247e2e6b57e9619d + languageName: node + linkType: hard + +"@react-stately/overlays@npm:^3.6.4": + version: 3.6.4 + resolution: "@react-stately/overlays@npm:3.6.4" + dependencies: + "@react-stately/utils": ^3.9.0 + "@react-types/overlays": ^3.8.4 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 39a3a6543449cfecf341b514a07c90e0ee796b0e67672807517ce64e2452af6151e343f2141f7f219400ccd17d4e6e7f8fb5094e3a224ab8381be0e6a7f5dde1 + languageName: node + linkType: hard + +"@react-stately/radio@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-stately/radio@npm:3.10.1" + dependencies: + "@react-stately/form": ^3.0.0 + "@react-stately/utils": ^3.9.0 + "@react-types/radio": ^3.7.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 93ad0c31b00bf7fbe7c71c892d72e4e7b20fe053d454b04bcb96b52fd1309dd624964dc10b5fc62a53d1e6d3563f049692d66e007645f1beccdfea84c653d6d2 + languageName: node + linkType: hard + +"@react-stately/searchfield@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-stately/searchfield@npm:3.5.0" + dependencies: + "@react-stately/utils": ^3.9.0 + "@react-types/searchfield": ^3.5.2 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: e94c0e8f605309022bf02b31f14279e68ac951bb05a5ef41d355d779daffed566f03d4c6e1bb1ec8ef1292a64fef13f489f75e076316b88cd8422517daa06f2c + languageName: node + linkType: hard + +"@react-stately/select@npm:^3.6.1": + version: 3.6.1 + resolution: "@react-stately/select@npm:3.6.1" + dependencies: + "@react-stately/form": ^3.0.0 + "@react-stately/list": ^3.10.2 + "@react-stately/overlays": ^3.6.4 + "@react-types/select": ^3.9.1 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 7f3414e9e945da781b90ffc157f48fc381f18922f6a0187ec4e88d5438867f1fdf117adcf8104b03a8279100eb32c2fdc5206efe9ce27ef8969cd05e8dd2bb59 + languageName: node + linkType: hard + +"@react-stately/selection@npm:^3.14.2": + version: 3.14.2 + resolution: "@react-stately/selection@npm:3.14.2" + dependencies: + "@react-stately/collections": ^3.10.4 + "@react-stately/utils": ^3.9.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6e789b43ede0fc742f4af6d0a8c6b86fb3761bb06cb5ca574cf2aac839102c08e341cf280712f4cc1892ebc43dd6a596f064236a923d299a65ed1ab317524b8f + languageName: node + linkType: hard + +"@react-stately/slider@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-stately/slider@npm:3.5.0" + dependencies: + "@react-stately/utils": ^3.9.0 + "@react-types/shared": ^3.22.0 + "@react-types/slider": ^3.7.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: b40dbf7159ee7f400d357c543ea2dbfe1037973e997c9bac7d37c7099c006d1a4e68b144d782deb06651cf3d60a7dcd22b7cd2809d5ac7ddd2fe242354764fa2 + languageName: node + linkType: hard + +"@react-stately/table@npm:^3.11.4": + version: 3.11.4 + resolution: "@react-stately/table@npm:3.11.4" + dependencies: + "@react-stately/collections": ^3.10.4 + "@react-stately/flags": ^3.0.0 + "@react-stately/grid": ^3.8.4 + "@react-stately/selection": ^3.14.2 + "@react-stately/utils": ^3.9.0 + "@react-types/grid": ^3.2.3 + "@react-types/shared": ^3.22.0 + "@react-types/table": ^3.9.2 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 0fb3927c8794b147bfee56486c087fdf75737c52aad4043ce07be3e2bfa889e8aa8fec8963839fb0a3604a5481fadb6a67c10400916a7f29a68e70ade08bf359 + languageName: node + linkType: hard + +"@react-stately/tabs@npm:^3.6.3": + version: 3.6.3 + resolution: "@react-stately/tabs@npm:3.6.3" + dependencies: + "@react-stately/list": ^3.10.2 + "@react-types/shared": ^3.22.0 + "@react-types/tabs": ^3.3.4 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 73beea11657014c920e068c40c8965416883a5d54e8c8bacdc3da353f9f20b54979565bb2a2d67a4976c0f07a84aece6353724b5ec1c7e7919e8987e9be0ce9f + languageName: node + linkType: hard + +"@react-stately/toggle@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-stately/toggle@npm:3.7.0" + dependencies: + "@react-stately/utils": ^3.9.0 + "@react-types/checkbox": ^3.6.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6552b8da1317625683f08fa7dd7585c2cd29a30e55291f7df3fbbcc6ad45e9b0ec5c3a1261891866db215e79d0f5ddbddbfc63abab51a325522a5d523cc6376e languageName: node linkType: hard -"@next/env@npm:14.0.4": - version: 14.0.4 - resolution: "@next/env@npm:14.0.4" - checksum: e8dac033d92c10e55d3b1802f8fd9be00383ed9d479add9fee0823a9a0bf2ab0f4421d5baea52921871c82daf5cd292421db8a1ed5d173e3cb088c3b3a984c0d +"@react-stately/tooltip@npm:^3.4.6": + version: 3.4.6 + resolution: "@react-stately/tooltip@npm:3.4.6" + dependencies: + "@react-stately/overlays": ^3.6.4 + "@react-types/tooltip": ^3.4.6 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6d8623d5418a38135aedef1d16aa6fa400b777904893920a80d78faf2559a287787eac6f409a5eac3b2d15e65eab9eee8e83c80768753eea53b3707938f98b8b languageName: node linkType: hard -"@next/eslint-plugin-next@npm:13.4.0": - version: 13.4.0 - resolution: "@next/eslint-plugin-next@npm:13.4.0" +"@react-stately/tree@npm:^3.7.5": + version: 3.7.5 + resolution: "@react-stately/tree@npm:3.7.5" dependencies: - glob: 7.1.7 - checksum: e02e2cbf127c58a31564c66ae3bf3cec06e87d959fa57d150eb9ad6601c90d07040573c81858dda6a37172de73909e3a25a0a20bc68ff6218e4c812804039a56 + "@react-stately/collections": ^3.10.4 + "@react-stately/selection": ^3.14.2 + "@react-stately/utils": ^3.9.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: b208020b841a858ad161acc8a2882857fdd30eb34f53da5a4ab12d6ab2578bb0656084f7647820f2fbac24b530e96860e9de39d2ab7a5ed33c0d03cbced44cd3 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-darwin-arm64@npm:14.0.4" - conditions: os=darwin & cpu=arm64 +"@react-stately/utils@npm:^3.9.0": + version: 3.9.0 + resolution: "@react-stately/utils@npm:3.9.0" + dependencies: + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: aae38bc45086e086c47141e516f8608b6ad1a0a3c637c1da8b409515b978db0210ed102ca30135a4f733ae2265fecd1b9634cb21b7075fa48895fe7b1cfc6960 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-darwin-x64@npm:14.0.4" - conditions: os=darwin & cpu=x64 +"@react-stately/virtualizer@npm:^3.6.6": + version: 3.6.6 + resolution: "@react-stately/virtualizer@npm:3.6.6" + dependencies: + "@react-aria/utils": ^3.23.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 9ff4546aa40f950dc2e89eace1c14945e473e12464334545301a7793c6845ad286a04ed8ca960fbba2c6f22a94a35be1f7e8104ec754025cbb046c800e92f8b6 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-linux-arm64-gnu@npm:14.0.4" - conditions: os=linux & cpu=arm64 & libc=glibc +"@react-types/breadcrumbs@npm:^3.7.2": + version: 3.7.2 + resolution: "@react-types/breadcrumbs@npm:3.7.2" + dependencies: + "@react-types/link": ^3.5.2 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 39e07997778fc07a9ac96348218bb2192d893e990f0a5883ed4f9d00d7e47ef8270249c07a9121b07973bc830ad96f8603b42a497d3fd176e319eeee4f0066e9 languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-linux-arm64-musl@npm:14.0.4" - conditions: os=linux & cpu=arm64 & libc=musl +"@react-types/button@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-types/button@npm:3.9.1" + dependencies: + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 5b73d20a8ab588231b62bd32c2171f8284bf1d7dfa4c67e54d436a4e5c663af9a6a1ee93bf5deb9f08308616fe248d2a6300685ef8188b8de3c956194d834a9e languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-linux-x64-gnu@npm:14.0.4" - conditions: os=linux & cpu=x64 & libc=glibc +"@react-types/calendar@npm:^3.4.3": + version: 3.4.3 + resolution: "@react-types/calendar@npm:3.4.3" + dependencies: + "@internationalized/date": ^3.5.1 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: b325a8553b66b22a014c857ff39f53fe307706b86588394346dc8bb9a4a602072c34b978210e3e2e168454f0e5d01a49863250fe3efbdea356f1de057243b979 languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-linux-x64-musl@npm:14.0.4" - conditions: os=linux & cpu=x64 & libc=musl +"@react-types/checkbox@npm:^3.6.0": + version: 3.6.0 + resolution: "@react-types/checkbox@npm:3.6.0" + dependencies: + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 867691d8af9832c9f90c6a8231fedadfc2700b177badb03d7175b0cf6c978e7bd488c2ff3b305231fbcd09f0eafe25f3d678f77c02e31ea7b36b463a15639945 languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-win32-arm64-msvc@npm:14.0.4" - conditions: os=win32 & cpu=arm64 +"@react-types/combobox@npm:^3.10.0": + version: 3.10.0 + resolution: "@react-types/combobox@npm:3.10.0" + dependencies: + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 5f27a3f375cf00773537433cec9da5b180bb394840e661a77aff708db589de4a4fa3e57280513f5f675f735df372da45a683e45c59cd29631da78062351aac00 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-win32-ia32-msvc@npm:14.0.4" - conditions: os=win32 & cpu=ia32 +"@react-types/datepicker@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-types/datepicker@npm:3.7.1" + dependencies: + "@internationalized/date": ^3.5.1 + "@react-types/calendar": ^3.4.3 + "@react-types/overlays": ^3.8.4 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 4d6dcb2739ac9a8846b880e7da997fa86dd602a7288e0fb135f69d11b2e7818a6bf4c33d0e3a7209c091ae1d566561af62976209a9d65af23111b15806953991 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:14.0.4": - version: 14.0.4 - resolution: "@next/swc-win32-x64-msvc@npm:14.0.4" - conditions: os=win32 & cpu=x64 +"@react-types/dialog@npm:^3.5.7": + version: 3.5.7 + resolution: "@react-types/dialog@npm:3.5.7" + dependencies: + "@react-types/overlays": ^3.8.4 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: dc134dc0903b442b681c5c4a7b19c4eed14a8f8ee121aeb7a29bedf078b284395db653f8770f14718048734454fe1dea71221435c09375bd96098555a018181d languageName: node linkType: hard -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" +"@react-types/form@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-types/form@npm:3.7.1" dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 0d7de613985250f341aa88be367f948136b36949a0d2ab5effed56e4d21c48fd97557b56d7a29b7c6b66a85c2820ca491233cc7a84a7c4379f74453730e54a6c languageName: node linkType: hard -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 +"@react-types/grid@npm:^3.2.3": + version: 3.2.3 + resolution: "@react-types/grid@npm:3.2.3" + dependencies: + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: fef37ec725123ad30792f345198319b3081b584e59f6ccf2788ee03897278de8dfeb252d7f9636505dd76431b7d32c3c055ce2cbe554d8353d98ea530f4686c0 languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" +"@react-types/link@npm:^3.5.2": + version: 3.5.2 + resolution: "@react-types/link@npm:3.5.2" dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: b7409bc9b00878d55a2caacd547641959a216b89b26bab6b96d505506b3200d672dafe87b0c747123073e04298b3a540468d80f7689a4c05f4953057fda171dc languageName: node linkType: hard -"@npmcli/fs@npm:^1.0.0": - version: 1.0.0 - resolution: "@npmcli/fs@npm:1.0.0" +"@react-types/listbox@npm:^3.4.6": + version: 3.4.6 + resolution: "@react-types/listbox@npm:3.4.6" dependencies: - "@gar/promisify": ^1.0.1 - semver: ^7.3.5 - checksum: f2b4990107dd2a5b18794c89aaff6f62f3a67883d49a20602fdfc353cbc7f8c5fd50edeffdc769e454900e01b8b8e43d0b9eb524d00963d69f3c829be1a2e8ac + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: e829857ff24f37f5a7660ad19e6629793241177f94df78193b80b294301e35b1193397edc426cb98e807a342ce47f1d2e83f71caf8bb9b904b4196c86d6e6062 languageName: node linkType: hard -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" +"@react-types/menu@npm:^3.9.6": + version: 3.9.6 + resolution: "@react-types/menu@npm:3.9.6" dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 + "@react-types/overlays": ^3.8.4 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: c97cf795272247742fd5bee54fdb567d5f3e671094f25eb5abad5461c85cdd6a6be0e3ed4ab5811f98a8695bed8de50955132c43b9dade5ec7582a75435c6189 languageName: node linkType: hard -"@open-draft/deferred-promise@npm:^2.2.0": - version: 2.2.0 - resolution: "@open-draft/deferred-promise@npm:2.2.0" - checksum: 7f29d39725bb8ab5b62f89d88a4202ce2439ac740860979f9e3d0015dfe4bc3daddcfa5727fa4eed482fdbee770aa591b1136b98b0a0f0569a65294f35bdf56a +"@react-types/meter@npm:^3.3.6": + version: 3.3.6 + resolution: "@react-types/meter@npm:3.3.6" + dependencies: + "@react-types/progress": ^3.5.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 51ae73fb19bfbf5463f699496fe53138715dc37e93ec9e35ed81c058b356a7b2f376aaf9fe055b14e9b9e7e0f715b68205dd2c1080f17791b372638b96f4ae18 languageName: node linkType: hard -"@open-draft/logger@npm:^0.3.0": - version: 0.3.0 - resolution: "@open-draft/logger@npm:0.3.0" +"@react-types/numberfield@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-types/numberfield@npm:3.7.0" dependencies: - is-node-process: ^1.2.0 - outvariant: ^1.4.0 - checksum: 7adfe3d0ed8ca32333ce2a77f9a93d561ebc89c989eaa9722f1dc8a2d2854f5de1bef6fa6894cdf58e16fa4dd9cfa99444ea1f5cac6eb1518e9247911ed042d5 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: de33c000f72fc32eabd82ba0f26440c10b69ec1d4249a481df618297dabbf631db614da1bce25d79ff0266c156f9ae971330be822c8901d9edfd059f3416de8a languageName: node linkType: hard -"@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": - version: 2.1.0 - resolution: "@open-draft/until@npm:2.1.0" - checksum: 140ea3b16f4a3a6a729c1256050e20a93d408d7aa1e125648ce2665b3c526ed452510c6e4a6f4b15d95fb5e41203fb51510eb8fbc8812d5e5a91880293d66471 +"@react-types/overlays@npm:^3.8.4": + version: 3.8.4 + resolution: "@react-types/overlays@npm:3.8.4" + dependencies: + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 921903c871373de0bb862b0958d1fc6d66da527be7e5ae5a32cfe323dcfce95efab1fc948ab477870a083df44cf9aed2dea21c0b11b37da808344a317ecfa22e languageName: node linkType: hard -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f +"@react-types/progress@npm:^3.5.1": + version: 3.5.1 + resolution: "@react-types/progress@npm:3.5.1" + dependencies: + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 1bc35e8df15a6087b0697faceec9a38a551dbd891ba73c5a23500531cd295e0f6ed75040a2d123281aa84567c4a92746b6b7e2a1185593c5d90f03b79e36668e languageName: node linkType: hard -"@pkgr/utils@npm:^2.3.1": - version: 2.4.0 - resolution: "@pkgr/utils@npm:2.4.0" +"@react-types/radio@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-types/radio@npm:3.7.0" dependencies: - cross-spawn: ^7.0.3 - fast-glob: ^3.2.12 - is-glob: ^4.0.3 - open: ^9.1.0 - picocolors: ^1.0.0 - tslib: ^2.5.0 - checksum: 2ed93a92fd58d612c7a7d04f91ce50c967d2e2d5c4f63802f62a882fcb7d91208cf89640bb3baad10ef7d42bea1e196fba956e7e36a68e9f94d2738e8974a24a + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 0bf20e475796a12605551de424c19b8677ae43866df0ff2c651f93f7d43a45adcf95f9211026380b11138b9635a4bc66cb72ca052806d84b8e6b7b2718f14c00 languageName: node linkType: hard -"@popperjs/core@npm:^2.9.0": - version: 2.10.2 - resolution: "@popperjs/core@npm:2.10.2" - checksum: 43c189e3eb6d032433512d94761b54fc7cae15957ca5528008813f887a67b5760b949f30a5141b476be2ba5a6c677c91def150f603d2d3e30b5e97a5ae51474e +"@react-types/searchfield@npm:^3.5.2": + version: 3.5.2 + resolution: "@react-types/searchfield@npm:3.5.2" + dependencies: + "@react-types/shared": ^3.22.0 + "@react-types/textfield": ^3.9.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6c08d9bb27146f1a17b02c8deb511540a46809931b0342d93f2bd324d11dd28bd9cb8bbcce2023c0cb4c3a1e297a3d7404f4d6be2b0c76a08153f875ef273bde languageName: node linkType: hard -"@react-hook/debounce@npm:^3.0.0": - version: 3.0.0 - resolution: "@react-hook/debounce@npm:3.0.0" +"@react-types/select@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-types/select@npm:3.9.1" dependencies: - "@react-hook/latest": ^1.0.2 + "@react-types/shared": ^3.22.0 peerDependencies: - react: ">=16.8" - checksum: 3e4aad1daa3b6194c8bb41e6dbcf9f089a0af8480025152a72bd563558e5eee483a5080ccedcd21c2a1f9822f4e8010ab8113642e9dd8c015b3e0081f84aa23d + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: c6b5a2ab073201b25b739cda19c9e233e3fcb0be08b2a05c19f1e38a9259261d8b3203633defb4c8ba774a04157cc4112056e6c4a922cd0e394da0bc9d65ea7e languageName: node linkType: hard -"@react-hook/event@npm:^1.2.1": - version: 1.2.6 - resolution: "@react-hook/event@npm:1.2.6" +"@react-types/shared@npm:^3.22.0": + version: 3.22.0 + resolution: "@react-types/shared@npm:3.22.0" peerDependencies: - react: ">=16.8" - checksum: 993855566ca081858347ad5e3ef10dec5026eb84ae199a4d860cd86ebd06d56f1cc8778cc7d8f5aaa0733f3901f690d3d6c78275b45119c0a12dbf0f3265dc7f + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 108d171c006ee86d01418bb2ca0e54915e8cdb276ecd82cad43bd8aa3a360654a95983b60dbf196c7b004e0307690ae7b0315d051b015277699a552619ec2b29 languageName: node linkType: hard -"@react-hook/latest@npm:^1.0.2": - version: 1.0.3 - resolution: "@react-hook/latest@npm:1.0.3" +"@react-types/slider@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-types/slider@npm:3.7.0" + dependencies: + "@react-types/shared": ^3.22.0 peerDependencies: - react: ">=16.8" - checksum: 2408c9cd35c5cfa7697b6da3bc5eebef254a932ade70955074c474f23be7dd3e2f81bbba12edcc9208bd0f89c6ed366d6b11d4f6d7b1052877a0bac8f74afad4 + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 489d0d46c54b79757952ba93cebf51ecbe9606e356f9c3ff77aba4c2f734e0c052260de5ba69c6aa2d282a2364e66829c3700a7e5157ba5cb99d91640823ec64 languageName: node linkType: hard -"@react-hook/passive-layout-effect@npm:^1.2.0": - version: 1.2.1 - resolution: "@react-hook/passive-layout-effect@npm:1.2.1" +"@react-types/switch@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-types/switch@npm:3.5.0" + dependencies: + "@react-types/shared": ^3.22.0 peerDependencies: - react: ">=16.8" - checksum: 217cb8aa90fb8e677672319a9a466d7752890cf4357c76df000b207696e9cc717cf2ee88080671cc9dae238a82f92093ab4f61ab2f6032d2a8db958fc7d99b5d + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 92f780a53b864dcd6a754631105963d3d0cf7a94a38d307540acc4adc269940be1e4be0c9723c71abb7c9de9d9a2a373b2a02a7e0e7fb3c2065e43b68f326ea1 languageName: node linkType: hard -"@react-hook/resize-observer@npm:^1.2.1": - version: 1.2.5 - resolution: "@react-hook/resize-observer@npm:1.2.5" +"@react-types/table@npm:^3.9.2": + version: 3.9.2 + resolution: "@react-types/table@npm:3.9.2" dependencies: - "@juggle/resize-observer": ^3.3.1 - "@react-hook/latest": ^1.0.2 - "@react-hook/passive-layout-effect": ^1.2.0 - "@types/raf-schd": ^4.0.0 - raf-schd: ^4.0.2 + "@react-types/grid": ^3.2.3 + "@react-types/shared": ^3.22.0 peerDependencies: - react: ">=16.8" - checksum: a2f3b333e344adb3d7a4cfd2bc77fd75054b07063fba706d57bef0c497650c3e82038eafb64fa4148c08527e8b0a34f2f70392da1700a7a0d9676ee8ba795c16 + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: c8360eae1f89828df6eda729503a8211c906407382282c6679a7a9d35d9b7a5003824b753570420dec42f2f38843efdd7c992a66ad30fb941d9d9f9d9adf9db1 languageName: node linkType: hard -"@react-hook/size@npm:^2.1.2": - version: 2.1.2 - resolution: "@react-hook/size@npm:2.1.2" +"@react-types/tabs@npm:^3.3.4": + version: 3.3.4 + resolution: "@react-types/tabs@npm:3.3.4" dependencies: - "@react-hook/passive-layout-effect": ^1.2.0 - "@react-hook/resize-observer": ^1.2.1 + "@react-types/shared": ^3.22.0 peerDependencies: - react: ">=16.8" - checksum: 89876e93957f420ba63518b60992b46ca82b0d12da0cf50ad487461e0b4230ec0e036ecf100840e2b2e93c9101895ad33e8bd6bc02a25641c28c904a09ab2563 + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 52d187cbd8f6c119060cb391ef4ab4836989632d255b8fa42925dbe95fea966a7de2b334e3452d32a1f341b059e1a99a13546aa2fdd3ef6acb28c6fa93d08ae1 languageName: node linkType: hard -"@react-hook/throttle@npm:^2.2.0": - version: 2.2.0 - resolution: "@react-hook/throttle@npm:2.2.0" +"@react-types/textfield@npm:^3.9.0": + version: 3.9.0 + resolution: "@react-types/textfield@npm:3.9.0" dependencies: - "@react-hook/latest": ^1.0.2 + "@react-types/shared": ^3.22.0 peerDependencies: - react: ">=16.8" - checksum: fb763dc559602d1ba0b5c601ccfb5f1d872454727c8e827079e41819467d906b6524dbc43c7f78b6818249a31bd96c726b7ed12e68214e0cc5a00b15e939ccca + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 7e3d47d1f4b6dcd9a32f8b206ed79a4d9839da1424134ba85c22d20ebd6e15d49fdca2120b682319d1108bbf06dac2f0803ad37b46f8394417a960475ca09af5 languageName: node linkType: hard -"@react-hook/window-size@npm:^3.0.7": - version: 3.0.7 - resolution: "@react-hook/window-size@npm:3.0.7" +"@react-types/tooltip@npm:^3.4.6": + version: 3.4.6 + resolution: "@react-types/tooltip@npm:3.4.6" dependencies: - "@react-hook/debounce": ^3.0.0 - "@react-hook/event": ^1.2.1 - "@react-hook/throttle": ^2.2.0 + "@react-types/overlays": ^3.8.4 + "@react-types/shared": ^3.22.0 peerDependencies: - react: ">=16.8" - checksum: 11f3b0a38631ab114b45ab77eff1df124d240acc7dc63e5a020479957ed676ecc76ef330c12bcb9f469a7c1169c4df297b639f1ad2e002914f3aa59f74c3ba99 + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6956cba440be8ee4cc048d2d53aae8ef11424f187568d6f75c3807663cbd5de008a57803f06e8cd2f3b2aac9e9ac7907dec476270ff65f4347fd4f3cc504c3e1 languageName: node linkType: hard @@ -2139,6 +3635,25 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:^0.4.14": + version: 0.4.36 + resolution: "@swc/helpers@npm:0.4.36" + dependencies: + legacy-swc-helpers: "npm:@swc/helpers@=0.4.14" + tslib: ^2.4.0 + checksum: 20b9f021a9711633d709ef1c231423eb079cb7ed14ad191dc9583b0b46684a95d0e87c3efd7472e7673ddbd30eb200c21490ab43ad251df8f845cd09df3d236f + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.0": + version: 0.5.3 + resolution: "@swc/helpers@npm:0.5.3" + dependencies: + tslib: ^2.4.0 + checksum: 61c3f7ccd47fc70ad91437df88be6b458cdc11e311cb331288827d7c50befffc72aa18fe913ec2a9e70fbf44e4b818bed38bfd7c329d689e1ff3c198d084cd02 + languageName: node + linkType: hard + "@swc/types@npm:^0.1.5": version: 0.1.5 resolution: "@swc/types@npm:0.1.5" @@ -6403,6 +7918,18 @@ fsevents@~2.3.2: languageName: node linkType: hard +"intl-messageformat@npm:^10.1.0": + version: 10.5.10 + resolution: "intl-messageformat@npm:10.5.10" + dependencies: + "@formatjs/ecma402-abstract": 1.18.2 + "@formatjs/fast-memoize": 2.2.0 + "@formatjs/icu-messageformat-parser": 2.7.5 + tslib: ^2.4.0 + checksum: ff0e59d31122b8d85435c1881f8ee94d765daf202f8fbc5ba77150f979c322a0b77373d151286cdcd700267ff07a6c3927276e3eea8d987b04e69eb5b6a44469 + languageName: node + linkType: hard + "ip@npm:^1.1.5": version: 1.1.5 resolution: "ip@npm:1.1.5" @@ -7167,6 +8694,15 @@ fsevents@~2.3.2: languageName: node linkType: hard +"legacy-swc-helpers@npm:@swc/helpers@=0.4.14": + version: 0.4.14 + resolution: "@swc/helpers@npm:0.4.14" + dependencies: + tslib: ^2.4.0 + checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 + languageName: node + linkType: hard + "less@npm:^4.1.3": version: 4.1.3 resolution: "less@npm:4.1.3" @@ -10005,6 +11541,80 @@ fsevents@~2.3.2: languageName: node linkType: hard +"react-aria-components@npm:^1.0.1": + version: 1.0.1 + resolution: "react-aria-components@npm:1.0.1" + dependencies: + "@internationalized/date": ^3.5.1 + "@internationalized/string": ^3.2.0 + "@react-aria/focus": ^3.16.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/toolbar": 3.0.0-beta.1 + "@react-aria/utils": ^3.23.0 + "@react-stately/table": ^3.11.4 + "@react-types/form": ^3.7.1 + "@react-types/grid": ^3.2.3 + "@react-types/shared": ^3.22.0 + "@react-types/table": ^3.9.2 + "@swc/helpers": ^0.5.0 + react-aria: ^3.31.1 + react-stately: ^3.29.1 + use-sync-external-store: ^1.2.0 + 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 + checksum: 07494ddab4cddc68df3bdee6244c7414506e567f40b200c12aa7054e5a5a121ef684c3e0578edeb51fab6f17c7476573824fb35bec9e87d2719bc3be9ea75e70 + languageName: node + linkType: hard + +"react-aria@npm:^3.31.1": + version: 3.31.1 + resolution: "react-aria@npm:3.31.1" + dependencies: + "@internationalized/string": ^3.2.0 + "@react-aria/breadcrumbs": ^3.5.9 + "@react-aria/button": ^3.9.1 + "@react-aria/calendar": ^3.5.4 + "@react-aria/checkbox": ^3.13.0 + "@react-aria/combobox": ^3.8.2 + "@react-aria/datepicker": ^3.9.1 + "@react-aria/dialog": ^3.5.10 + "@react-aria/dnd": ^3.5.1 + "@react-aria/focus": ^3.16.0 + "@react-aria/gridlist": ^3.7.3 + "@react-aria/i18n": ^3.10.0 + "@react-aria/interactions": ^3.20.1 + "@react-aria/label": ^3.7.4 + "@react-aria/link": ^3.6.3 + "@react-aria/listbox": ^3.11.3 + "@react-aria/menu": ^3.12.0 + "@react-aria/meter": ^3.4.9 + "@react-aria/numberfield": ^3.10.2 + "@react-aria/overlays": ^3.20.0 + "@react-aria/progress": ^3.4.9 + "@react-aria/radio": ^3.10.0 + "@react-aria/searchfield": ^3.7.1 + "@react-aria/select": ^3.14.1 + "@react-aria/selection": ^3.17.3 + "@react-aria/separator": ^3.3.9 + "@react-aria/slider": ^3.7.4 + "@react-aria/ssr": ^3.9.1 + "@react-aria/switch": ^3.6.0 + "@react-aria/table": ^3.13.3 + "@react-aria/tabs": ^3.8.3 + "@react-aria/tag": ^3.3.1 + "@react-aria/textfield": ^3.14.1 + "@react-aria/tooltip": ^3.7.0 + "@react-aria/utils": ^3.23.0 + "@react-aria/visually-hidden": ^3.8.8 + "@react-types/shared": ^3.22.0 + 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 + checksum: cc884215ce26921382760f2e436289ecd13cf1716df29390d81a7e44bb80c8e45771806a264b31d7e4f7d58184ccac6d9777d028b669c519be96df7844a32324 + languageName: node + linkType: hard + "react-dom@npm:18.2.0, react-dom@npm:^18.2.0": version: 18.2.0 resolution: "react-dom@npm:18.2.0" @@ -10068,6 +11678,39 @@ fsevents@~2.3.2: languageName: node linkType: hard +"react-stately@npm:^3.29.1": + version: 3.29.1 + resolution: "react-stately@npm:3.29.1" + dependencies: + "@react-stately/calendar": ^3.4.3 + "@react-stately/checkbox": ^3.6.1 + "@react-stately/collections": ^3.10.4 + "@react-stately/combobox": ^3.8.1 + "@react-stately/data": ^3.11.0 + "@react-stately/datepicker": ^3.9.1 + "@react-stately/dnd": ^3.2.7 + "@react-stately/form": ^3.0.0 + "@react-stately/list": ^3.10.2 + "@react-stately/menu": ^3.6.0 + "@react-stately/numberfield": ^3.8.0 + "@react-stately/overlays": ^3.6.4 + "@react-stately/radio": ^3.10.1 + "@react-stately/searchfield": ^3.5.0 + "@react-stately/select": ^3.6.1 + "@react-stately/selection": ^3.14.2 + "@react-stately/slider": ^3.5.0 + "@react-stately/table": ^3.11.4 + "@react-stately/tabs": ^3.6.3 + "@react-stately/toggle": ^3.7.0 + "@react-stately/tooltip": ^3.4.6 + "@react-stately/tree": ^3.7.5 + "@react-types/shared": ^3.22.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 9dec21bb7a01c07bc3e1a10258b627f1e29ebc09719359c93f2bcb9f33f0e2ad0d3b7a99cedde5c9ed785fba1953e2ab44c92db7cddb1e67b714f80bcffec439 + languageName: node + linkType: hard + "react-string-replace@npm:^1.0.0": version: 1.1.0 resolution: "react-string-replace@npm:1.1.0" @@ -12178,6 +13821,15 @@ resolve@^1.10.0: languageName: node linkType: hard +"use-sync-external-store@npm:^1.2.0": + version: 1.2.0 + resolution: "use-sync-external-store@npm:1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a + languageName: node + linkType: hard + "user-home@npm:^2.0.0": version: 2.0.0 resolution: "user-home@npm:2.0.0" From 3c3e731a4bc2b5f2dd9c0a7fb111431337d909fb Mon Sep 17 00:00:00 2001 From: Ben Merckx Date: Fri, 19 Jan 2024 09:23:28 +0100 Subject: [PATCH 2/8] Swap out more components --- src/dashboard/view/Toolbar.tsx | 4 +- .../view/entry/LangSwitch.module.scss | 14 +--- src/dashboard/view/entry/LangSwitch.tsx | 73 +++++++++---------- .../view/sidebar/SidebarSettings.tsx | 4 +- 4 files changed, 44 insertions(+), 51 deletions(-) diff --git a/src/dashboard/view/Toolbar.tsx b/src/dashboard/view/Toolbar.tsx index 04a8c8895..9a07174af 100644 --- a/src/dashboard/view/Toolbar.tsx +++ b/src/dashboard/view/Toolbar.tsx @@ -1,4 +1,3 @@ -import {Switch} from '@headlessui/react' import {Root as AlineaRoot, Config, Workspace} from 'alinea/core' import {Label} from 'alinea/core/Label' import {entries, fromEntries} from 'alinea/core/util/Objects' @@ -23,6 +22,7 @@ import {createSlots} from 'alinea/ui/util/Slots' import {parseToHsla} from 'color2k' import {useAtomValue, useSetAtom} from 'jotai' import {ComponentType} from 'react' +import {Switch} from 'react-aria-components' import {dashboardOptionsAtom} from '../atoms/DashboardAtoms.js' import {navAtom, workspaceAtom} from '../atoms/NavigationAtoms.js' import { @@ -176,7 +176,7 @@ export namespace Toolbar { diff --git a/src/dashboard/view/entry/LangSwitch.module.scss b/src/dashboard/view/entry/LangSwitch.module.scss index 0697212e4..360c4cc5d 100644 --- a/src/dashboard/view/entry/LangSwitch.module.scss +++ b/src/dashboard/view/entry/LangSwitch.module.scss @@ -50,19 +50,13 @@ } &-dropdown { - position: absolute; - list-style: none; - margin: 0; - width: 100%; - max-height: 240px; - overflow-y: auto; - z-index: 1; border-radius: var(--alinea-border-radius); background: var(--alinea-background); border: 1px solid var(--alinea-outline); box-shadow: 0 2px 10px var(--alinea-shadow); outline: none; margin-top: 2px; + width: var(--trigger-width); &-inner { padding: 4px; @@ -78,18 +72,18 @@ border-radius: var(--alinea-border-radius); font-size: 12px; - &.is-active { + &[data-focused] { background: var(--alinea-highlight); } - &.is-selected { + &[data-selected] { font-weight: 600; } &-icon { width: 24px; - .is-selected & { + [data-selected] & { color: var(--alinea-accent); } } diff --git a/src/dashboard/view/entry/LangSwitch.tsx b/src/dashboard/view/entry/LangSwitch.tsx index f3c26acda..bf96342c7 100644 --- a/src/dashboard/view/entry/LangSwitch.tsx +++ b/src/dashboard/view/entry/LangSwitch.tsx @@ -1,7 +1,14 @@ -import {Listbox} from '@headlessui/react' import {HStack, Icon, fromModule} from 'alinea/ui' import {IcRoundLanguage} from 'alinea/ui/icons/IcRoundLanguage' import {IcRoundUnfoldMore} from 'alinea/ui/icons/IcRoundUnfoldMore' +import { + Button, + ListBox, + ListBoxItem, + Popover, + Select, + SelectValue +} from 'react-aria-components' import css from './LangSwitch.module.scss' const styles = fromModule(css) @@ -21,62 +28,54 @@ export function Langswitch({ }: LangswitchProps) { return (
- { - if (!value) return - onChange(value) - /*if (!value) return - navigate( - nav.entry({ - entryId: entryLocation?.entryId, - workspace, - root: root.name, - locale: value - }) - )*/ +
) } diff --git a/src/dashboard/view/sidebar/SidebarSettings.tsx b/src/dashboard/view/sidebar/SidebarSettings.tsx index e400c0ffb..4c47a45af 100644 --- a/src/dashboard/view/sidebar/SidebarSettings.tsx +++ b/src/dashboard/view/sidebar/SidebarSettings.tsx @@ -1,4 +1,3 @@ -import {Switch} from '@headlessui/react' import {Workspace} from 'alinea/core' import {entries, fromEntries} from 'alinea/core/util/Objects' import {select} from 'alinea/input' @@ -13,6 +12,7 @@ import {IcRoundTextFields} from 'alinea/ui/icons/IcRoundTextFields' import {IcSharpBrightnessMedium} from 'alinea/ui/icons/IcSharpBrightnessMedium' import {useAtomValue, useSetAtom} from 'jotai' import {useMemo} from 'react' +import {Switch} from 'react-aria-components' import {dashboardOptionsAtom} from '../../atoms/DashboardAtoms.js' import { preferencesAtom, @@ -84,7 +84,7 @@ export function SidebarSettings() { title="Switch theme" /> { disableTransition(toggleSchemePreference) }} From 8608e0ca876bcb38296e98cc105ed517425b0ca9 Mon Sep 17 00:00:00 2001 From: Ben Merckx Date: Fri, 19 Jan 2024 09:37:51 +0100 Subject: [PATCH 3/8] Update select field --- src/input/select/SelectField.browser.tsx | 143 +++++++++-------------- src/input/select/SelectInput.module.scss | 3 +- 2 files changed, 57 insertions(+), 89 deletions(-) diff --git a/src/input/select/SelectField.browser.tsx b/src/input/select/SelectField.browser.tsx index 7d99e9d0e..c1cf2f842 100644 --- a/src/input/select/SelectField.browser.tsx +++ b/src/input/select/SelectField.browser.tsx @@ -1,11 +1,3 @@ -import { - autoUpdate, - flip, - offset, - size, - useFloating -} from '@floating-ui/react-dom' -import {Listbox} from '@headlessui/react' import {Field} from 'alinea/core' import {useField} from 'alinea/dashboard/editor/UseField' import {IconButton} from 'alinea/dashboard/view/IconButton' @@ -15,6 +7,13 @@ import {IcRoundArrowDropDownCircle} from 'alinea/ui/icons/IcRoundArrowDropDownCi import {IcRoundCheck} from 'alinea/ui/icons/IcRoundCheck' import {IcRoundClose} from 'alinea/ui/icons/IcRoundClose' import {IcRoundUnfoldMore} from 'alinea/ui/icons/IcRoundUnfoldMore' +import { + Button, + ListBox, + ListBoxItem, + Popover, + Select +} from 'react-aria-components' import {SelectField, select as createSelect} from './SelectField.js' import css from './SelectInput.module.scss' @@ -31,89 +30,59 @@ interface SelectInputProps { function SelectInput({field}: SelectInputProps) { const {value = null, mutator, label, options} = useField(field) const items = options.items as Record - const {x, y, reference, floating, refs, strategy} = useFloating({ - whileElementsMounted: autoUpdate, - strategy: 'fixed', - placement: 'bottom-start', - middleware: [ - offset(4), - flip(), - size({ - apply({rects}) { - if (refs.floating.current) - Object.assign(refs.floating.current.style, { - width: `${rects.reference.width}px` - }) - } - }) - ] - }) - return (
- - {({open}) => ( -
- - - - - { + mutator(value as Key) + }} + isDisabled={options.readOnly} + > +
+
- )} - + )} + + + + {Object.entries(items).map(([key, label]) => { + const isSelected = key === value + return ( + + + +
+ {isSelected && } +
+
+
+ ) + })} +
+
+
+
) diff --git a/src/input/select/SelectInput.module.scss b/src/input/select/SelectInput.module.scss index b4f5b41f0..e7429c01b 100644 --- a/src/input/select/SelectInput.module.scss +++ b/src/input/select/SelectInput.module.scss @@ -58,10 +58,9 @@ } &-dropdown { - position: absolute; list-style: none; margin: 0; - width: 100%; + width: var(--trigger-width); max-height: 240px; overflow-y: auto; z-index: 2; From 36fb1f2074e5f499e3c975a5e13098188bda96f0 Mon Sep 17 00:00:00 2001 From: Ben Merckx Date: Fri, 19 Jan 2024 11:16:59 +0100 Subject: [PATCH 4/8] Cleanup --- src/dashboard/App.tsx | 109 ++++---- src/dashboard/view/Sidebar.tsx | 64 +++-- src/dashboard/view/Toolbar.module.scss | 79 ------ src/dashboard/view/Toolbar.tsx | 239 ------------------ src/dashboard/view/entry/LangSwitch.tsx | 1 + .../view/sidebar/SidebarSettings.module.scss | 5 + .../view/sidebar/SidebarSettings.tsx | 4 +- src/ui/PopoverMenu.module.scss | 39 --- src/ui/PopoverMenu.tsx | 48 ---- 9 files changed, 98 insertions(+), 490 deletions(-) delete mode 100644 src/dashboard/view/Toolbar.module.scss delete mode 100644 src/dashboard/view/Toolbar.tsx delete mode 100644 src/ui/PopoverMenu.module.scss delete mode 100644 src/ui/PopoverMenu.tsx diff --git a/src/dashboard/App.tsx b/src/dashboard/App.tsx index 60c2dcc21..b600364cf 100644 --- a/src/dashboard/App.tsx +++ b/src/dashboard/App.tsx @@ -28,7 +28,6 @@ import {SuspenseBoundary} from './util/SuspenseBoundary.js' import {ErrorBoundary} from './view/ErrorBoundary.js' import {Modal} from './view/Modal.js' import {Sidebar} from './view/Sidebar.js' -import {Toolbar} from './view/Toolbar.js' import {Viewport} from './view/Viewport.js' import {SidebarSettings} from './view/sidebar/SidebarSettings.js' @@ -84,61 +83,59 @@ function AppAuthenticated() { )} - - - - - -
- - {Object.entries(roots).map(([key, root], i) => { - const isSelected = key === currentRoot - const {entryId, ...location} = entryLocation - const link = - location.root === key - ? nav.entry(location) - : nav.root({ - workspace, - root: key, - locale: preferredLanguage - }) - const {label, icon} = Root.data(root) - return ( - - - - ) - })} - {/**/} - - - - }> - - - -
- {alineaDev && ( - - - {dbHash} - - - )} -
-
+ + + + +
+ + {Object.entries(roots).map(([key, root], i) => { + const isSelected = key === currentRoot + const {entryId, ...location} = entryLocation + const link = + location.root === key + ? nav.entry(location) + : nav.root({ + workspace, + root: key, + locale: preferredLanguage + }) + const {label, icon} = Root.data(root) + return ( + + + + ) + })} + {/**/} + + + + }> + + + +
+ {alineaDev && ( + + + {dbHash} + + + )} +
) diff --git a/src/dashboard/view/Sidebar.tsx b/src/dashboard/view/Sidebar.tsx index a0cd4fc63..aaad4b673 100644 --- a/src/dashboard/view/Sidebar.tsx +++ b/src/dashboard/view/Sidebar.tsx @@ -4,7 +4,6 @@ import {entries} from 'alinea/core/util/Objects' import {link, useNavigate} from 'alinea/dashboard/util/HashRouter' import {HStack, Icon, Stack, fromModule} from 'alinea/ui' import {Badge} from 'alinea/ui/Badge' -import {DropdownMenu} from 'alinea/ui/DropdownMenu' import {Pane} from 'alinea/ui/Pane' import {useNonInitialEffect} from 'alinea/ui/hook/UseNonInitialEffect' import {IcRoundUnfoldMore} from 'alinea/ui/icons/IcRoundUnfoldMore' @@ -17,6 +16,13 @@ import { useContext, useReducer } from 'react' +import { + Button, + Menu, + MenuItem, + MenuTrigger, + Popover +} from 'react-aria-components' import {useConfig} from '../hook/UseConfig.js' import {useEntryLocation} from '../hook/UseEntryLocation.js' import {useLocale} from '../hook/UseLocale.js' @@ -125,8 +131,8 @@ export namespace Sidebar { return ( {workspaces.length > 1 ? ( - - + + - - {workspaces.map(([key, workspace]) => { - const {roots, label, color, icon} = Workspace.data(workspace) - const [name, root] = entries(roots)[0] - return ( - - navigate( - nav.entry({ - workspace: key, - root: name, - locale: Root.defaultLocale(root) - }) - ) - } - > - - - ) - })} - - + + { + const name = key as string + const workspace = config.workspaces[name] + const {roots} = Workspace.data(workspace) + const [, root] = entries(roots)[0] + navigate( + nav.entry({ + workspace: name, + root: name, + locale: Root.defaultLocale(root) + }) + ) + }} + > + {workspaces.map(([key, workspace]) => { + const {label, color, icon} = Workspace.data(workspace) + return ( + + + + ) + })} + + + ) : ( : - return ( - - - - -
- -
-
- ) -} - -export namespace Toolbar { - export const {Provider, Portal, Slot} = createSlots() - - export function Root() { - const accentColor = useAtomValue(accentColorAtom) - const session = useSession() - const {config} = useAtomValue(dashboardOptionsAtom) - const nav = useAtomValue(navAtom) - const preferences = useAtomValue(preferencesAtom) - const size = preferences.size || 16 - const checked = preferences?.scheme === 'dark' - const workspace = useAtomValue(workspaceAtom) - const navigate = useNavigate() - const {isNavOpen, isPreviewOpen, toggleNav, togglePreview} = useSidebar() - const workspaces = Object.entries(config.workspaces) - const [hue, saturation, lightness] = parseToHsla(accentColor) - const style: any = { - '--alinea-hue': hue, - '--alinea-saturation': `${saturation * 100}%`, - '--alinea-lightness': `${lightness * 100}%` - } - const defaultWorkspace = select( - 'Default workspace', - fromEntries( - entries(config.workspaces).map(([key, workspace]) => { - return [key, (Workspace.label(workspace) as string) || key] - }) - ) - ) - const toggleSchemePreference = useSetAtom(toggleSchemePreferenceAtom) - const updateFontSize = useSetAtom(sizePreferenceAtom) - const updateWorkspace = useSetAtom(workspacePreferenceAtom) - return ( - -
- -
- - {workspaces.length > 1 ? ( - - - - - - - - - - {workspaces.map(([key, workspace]) => { - const {roots, label, color, icon} = Workspace.data(workspace) - const [name, root] = entries(roots)[0] - return ( - - navigate( - nav.entry({ - workspace: key, - root: name, - locale: AlineaRoot.defaultLocale(root) - }) - ) - } - > - - - ) - })} - - - ) : ( -
- - - )} - -
- -
-
- - - - - - - - - - - - {Config.hasAuth(config) && ( - -

- {session.user.sub.charAt(0).toUpperCase() + - session.user.sub.slice(1)} -

-
- )} - - - - - - - - - - - - updateFontSize(size - 1)} - disabled={size <= 16} - /> - updateFontSize(size + 1)} - disabled={size >= 40} - /> - - - {/*workspaces.length > 1 && ( - updateWorkspace(v ?? undefined)} - field={defaultWorkspace} - /> - )*/} - - - {Config.hasAuth(config) && ( - - - - Logout - - - - )} -
-
-
- -
-
-
- ) - } -} diff --git a/src/dashboard/view/entry/LangSwitch.tsx b/src/dashboard/view/entry/LangSwitch.tsx index bf96342c7..471c2147d 100644 --- a/src/dashboard/view/entry/LangSwitch.tsx +++ b/src/dashboard/view/entry/LangSwitch.tsx @@ -55,6 +55,7 @@ export function Langswitch({ {locales.length > 0 && ( diff --git a/src/dashboard/view/sidebar/SidebarSettings.module.scss b/src/dashboard/view/sidebar/SidebarSettings.module.scss index 997d973de..1b6c47d44 100644 --- a/src/dashboard/view/sidebar/SidebarSettings.module.scss +++ b/src/dashboard/view/sidebar/SidebarSettings.module.scss @@ -1,4 +1,9 @@ .root { + &-header { + padding-bottom: 10px; + box-shadow: var(--alinea-divider-bottom); + } + &-switch { position: relative; display: inline-flex; diff --git a/src/dashboard/view/sidebar/SidebarSettings.tsx b/src/dashboard/view/sidebar/SidebarSettings.tsx index 4c47a45af..44b9274b0 100644 --- a/src/dashboard/view/sidebar/SidebarSettings.tsx +++ b/src/dashboard/view/sidebar/SidebarSettings.tsx @@ -67,12 +67,12 @@ export function SidebarSettings() { {session.user.name && ( - +
{session.user.name} - +
)} diff --git a/src/ui/PopoverMenu.module.scss b/src/ui/PopoverMenu.module.scss deleted file mode 100644 index 34fde0b33..000000000 --- a/src/ui/PopoverMenu.module.scss +++ /dev/null @@ -1,39 +0,0 @@ -.root { - position: relative; - display: flex; -} - -.trigger { - cursor: pointer; -} - -.items { - position: absolute; - top: 100%; - padding: 20px; - margin-top: 5px; - min-width: 240px; - border-radius: var(--alinea-border-radius); - color: var(--alinea-foreground); - background: var(--alinea-background); - border: 1px solid var(--alinea-outline); - box-shadow: 0 2px 10px var(--alinea-shadow); - outline: none; - - &.is-left { - left: 0; - } - &.is-right { - right: 0; - } -} - -.header { - padding-bottom: 10px; - box-shadow: var(--alinea-divider-bottom); -} - -.footer { - padding-top: 10px; - box-shadow: var(--alinea-divider-top); -} diff --git a/src/ui/PopoverMenu.tsx b/src/ui/PopoverMenu.tsx deleted file mode 100644 index deeeafb51..000000000 --- a/src/ui/PopoverMenu.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import {Popover} from '@headlessui/react' -import {HTMLAttributes, PropsWithChildren} from 'react' -import css from './PopoverMenu.module.scss' -import {fromModule} from './util/Styler.js' - -const styles = fromModule(css) - -export namespace PopoverMenu { - export function Root(props: HTMLAttributes) { - return ( - -
- - ) - } - export const Trigger: typeof Popover.Button = styles.trigger.toElement( - Popover.Button - ) as any - - export function Items({ - left, - right, - ...props - }: HTMLAttributes & {left?: boolean; right?: boolean}) { - return ( - - ) - } - - export function Header({children}: PropsWithChildren<{}>) { - return ( -
-
{children}
-
- ) - } - - export function Footer({children}: PropsWithChildren<{}>) { - return ( -
-
{children}
-
- ) - } -} From 76f229825bc00fad0b59040105d8dd31366ddd3f Mon Sep 17 00:00:00 2001 From: Ben Merckx Date: Fri, 19 Jan 2024 12:15:31 +0100 Subject: [PATCH 5/8] Replace dropdownmenu --- src/picker/entry/EntryPicker.browser.tsx | 41 ++++++++++------------ src/ui/Menu.module.scss | 44 ++++++++++++++++++++++++ src/ui/Menu.tsx | 31 +++++++++++++++++ 3 files changed, 94 insertions(+), 22 deletions(-) create mode 100644 src/ui/Menu.module.scss create mode 100644 src/ui/Menu.tsx diff --git a/src/picker/entry/EntryPicker.browser.tsx b/src/picker/entry/EntryPicker.browser.tsx index 76abfe3c5..426ff6f3f 100644 --- a/src/picker/entry/EntryPicker.browser.tsx +++ b/src/picker/entry/EntryPicker.browser.tsx @@ -30,7 +30,7 @@ import { VStack, fromModule } from 'alinea/ui' -import {DropdownMenu} from 'alinea/ui/DropdownMenu' +import {Menu, MenuItem} from 'alinea/ui/Menu' import {IcOutlineGridView} from 'alinea/ui/icons/IcOutlineGridView' import {IcOutlineList} from 'alinea/ui/icons/IcOutlineList' import {IcRoundArrowBack} from 'alinea/ui/icons/IcRoundArrowBack' @@ -215,31 +215,28 @@ export function EntryPickerModal({ - - + { + setDestination({ + workspace: destination.workspace, + root: name as string + }) + }} + label={ {Root.label(workspace.roots[destination.root])} - - - {entries(workspace.roots).map(([name, root]) => { - return ( - { - setDestination({ - workspace: destination.workspace, - root: name - }) - }} - > - {Root.label(root)} - - ) - })} - - + } + > + {entries(workspace.roots).map(([name, root]) => { + return ( + + {Root.label(root)} + + ) + })} + {destinationRoot.i18n && ( + extends rac.MenuProps, + Omit { + label?: ReactNode +} + +export function Menu({ + label, + children, + ...props +}: MenuProps) { + return ( + + {label} + + {children} + + + ) +} + +export function MenuItem(props: rac.MenuItemProps) { + return +} From 4dafec684703212f0b64f7afac03b134e26c49e7 Mon Sep 17 00:00:00 2001 From: Ben Merckx Date: Fri, 19 Jan 2024 16:21:30 +0100 Subject: [PATCH 6/8] Remove last traces of headlessui and floating-ui --- src/dashboard/package.json | 2 - src/dashboard/view/EntryEdit.module.scss | 20 +- src/dashboard/view/EntryEdit.tsx | 12 +- src/dashboard/view/Sidebar.module.scss | 2 + src/dashboard/view/Sidebar.tsx | 92 ++++----- src/dashboard/view/Viewport.module.scss | 135 ++++++++----- src/dashboard/view/entry/EntryHeader.tsx | 159 ++++++--------- src/dashboard/view/entry/LangSwitch.tsx | 8 +- .../view/sidebar/SidebarSettings.module.scss | 21 +- .../view/sidebar/SidebarSettings.tsx | 163 +++++++-------- src/input/richtext/RichTextField.browser.tsx | 36 ++-- src/input/richtext/RichTextToolbar.tsx | 188 ++++++++---------- src/input/select/SelectField.browser.tsx | 2 +- src/ui/DropdownMenu.module.scss | 81 -------- src/ui/DropdownMenu.tsx | 89 --------- src/ui/Menu.module.scss | 14 +- src/ui/Menu.tsx | 4 +- yarn.lock | 57 +----- 18 files changed, 442 insertions(+), 643 deletions(-) delete mode 100644 src/ui/DropdownMenu.module.scss delete mode 100644 src/ui/DropdownMenu.tsx diff --git a/src/dashboard/package.json b/src/dashboard/package.json index 245860644..3cef672eb 100644 --- a/src/dashboard/package.json +++ b/src/dashboard/package.json @@ -5,10 +5,8 @@ "@dnd-kit/core": "^3.1.1", "@dnd-kit/sortable": "^4.0.0", "@dnd-kit/utilities": "^2.0.0", - "@floating-ui/react-dom": "^0.7.1", "@headless-tree/core": "^0.0.8", "@headless-tree/react": "^0.0.7", - "@headlessui/react": "^1.7.17", "@react-hook/size": "^2.1.2", "@react-hook/window-size": "^3.0.7", "@types/debounce-promise": "^3.1.8", diff --git a/src/dashboard/view/EntryEdit.module.scss b/src/dashboard/view/EntryEdit.module.scss index f62425887..19bd8dfca 100644 --- a/src/dashboard/view/EntryEdit.module.scss +++ b/src/dashboard/view/EntryEdit.module.scss @@ -5,13 +5,21 @@ flex-direction: column; &-tabs { - margin: auto; - padding: 0 calc(var(--alinea-main-padding-x) - 8px); - padding-bottom: 2px; - max-width: var(--alinea-main-width); + display: flex; + flex-direction: column; + width: 100%; + flex-grow: 1; + min-width: 0; - @include ml { - margin-top: -16px; + &-header { + margin: auto; + padding: 0 calc(var(--alinea-main-padding-x) - 8px); + padding-bottom: 2px; + max-width: var(--alinea-main-width); + + @include ml { + margin-top: -16px; + } } } } diff --git a/src/dashboard/view/EntryEdit.tsx b/src/dashboard/view/EntryEdit.tsx index 2decf77a4..81641dd63 100644 --- a/src/dashboard/view/EntryEdit.tsx +++ b/src/dashboard/view/EntryEdit.tsx @@ -6,7 +6,7 @@ import {TabsHeader, TabsSection} from 'alinea/input/tabs/Tabs.browser' import {Button, HStack, Stack, VStack, fromModule} from 'alinea/ui' import {Main} from 'alinea/ui/Main' import {Statusbar} from 'alinea/ui/Statusbar' -import * as Tabs from 'alinea/ui/Tabs' +import {TabPanel, Tabs} from 'alinea/ui/Tabs' import {IcOutlineTableRows} from 'alinea/ui/icons/IcOutlineTableRows' import {IcRoundInsertDriveFile} from 'alinea/ui/icons/IcRoundInsertDriveFile' import {IcRoundTranslate} from 'alinea/ui/icons/IcRoundTranslate' @@ -193,7 +193,7 @@ export function EntryEdit({editor}: EntryEditProps) { {showHistory && } - + {hasRootTabs && ( -
+
{ return ( - + - + ) }) @@ -253,7 +253,7 @@ export function EntryEdit({editor}: EntryEditProps) { - + diff --git a/src/dashboard/view/Sidebar.module.scss b/src/dashboard/view/Sidebar.module.scss index 448a5f93e..a4b99d1f3 100644 --- a/src/dashboard/view/Sidebar.module.scss +++ b/src/dashboard/view/Sidebar.module.scss @@ -174,7 +174,9 @@ padding: 6px 12px 6px 6px; &:focus, + &:focus-visible, &:hover { + outline: none; background: var(--alinea-highlight); } } diff --git a/src/dashboard/view/Sidebar.tsx b/src/dashboard/view/Sidebar.tsx index aaad4b673..dfe637ff6 100644 --- a/src/dashboard/view/Sidebar.tsx +++ b/src/dashboard/view/Sidebar.tsx @@ -16,13 +16,8 @@ import { useContext, useReducer } from 'react' -import { - Button, - Menu, - MenuItem, - MenuTrigger, - Popover -} from 'react-aria-components' + +import {Menu, MenuItem} from 'alinea/ui/Menu' import {useConfig} from '../hook/UseConfig.js' import {useEntryLocation} from '../hook/UseEntryLocation.js' import {useLocale} from '../hook/UseLocale.js' @@ -131,9 +126,9 @@ export namespace Sidebar { return ( {workspaces.length > 1 ? ( - - - - - { - const name = key as string - const workspace = config.workspaces[name] - const {roots} = Workspace.data(workspace) - const [, root] = entries(roots)[0] - navigate( - nav.entry({ - workspace: name, - root: name, - locale: Root.defaultLocale(root) - }) - ) - }} - > - {workspaces.map(([key, workspace]) => { - const {label, color, icon} = Workspace.data(workspace) - return ( - - - - ) - })} - - - + } + onAction={key => { + const name = key as string + const workspace = config.workspaces[name] + const {roots} = Workspace.data(workspace) + const [, root] = entries(roots)[0] + navigate( + nav.entry({ + workspace: name, + root: name, + locale: Root.defaultLocale(root) + }) + ) + }} + > + {workspaces.map(([key, workspace]) => { + const {label, color, icon} = Workspace.data(workspace) + return ( + + + + ) + })} + ) : ( & {selected?: boolean; badge?: number} - > - export function Item({children, selected, badge, ...props}: ItemProps) { + export type ItemProps = PropsWithChildren<{ + as?: keyof JSX.IntrinsicElements | React.ComponentType + selected?: boolean + badge?: number + href?: string + className?: string + style?: React.CSSProperties + }> + export const item = styles.nav.menu.item + export function Item({ + as: Tag = 'a', + children, + selected, + badge, + ...props + }: ItemProps) { return ( -
- + ) } } diff --git a/src/dashboard/view/Viewport.module.scss b/src/dashboard/view/Viewport.module.scss index d39fea026..180d5a49a 100644 --- a/src/dashboard/view/Viewport.module.scss +++ b/src/dashboard/view/Viewport.module.scss @@ -1,60 +1,28 @@ @import '@alinea/ui/style.scss'; -@mixin dark-theme { - --alinea-hue: 212; - --alinea-saturation: 18%; - --alinea-positive: var(--alinea-hue), var(--alinea-saturation), 14%; - --alinea-negative: 0, 8%, 92%; - --alinea-background: hsl(var(--alinea-positive)); - --alinea-foreground: white; - --alinea-foreground-faded: hsl(0, 3%, 85%); - --alinea-toolbar: hsl(var(--alinea-hue), var(--alinea-saturation), 20%); - --alinea-inner: hsl(var(--alinea-hue), var(--alinea-saturation), 12%); - --alinea-inner-outline: hsl(var(--alinea-hue), var(--alinea-saturation), 13%); - --alinea-highlight: hsla(var(--alinea-negative), 0.06); - --alinea-lift: hsl(var(--alinea-hue), var(--alinea-saturation), 18%); - --alinea-selected: #25344d; - --alinea-selected-foreground: #aec8f8; - --alinea-outline: hsl(var(--alinea-hue), var(--alinea-saturation), 20%); - --alinea-fields: hsl(var(--alinea-hue), var(--alinea-saturation), 10%); - --alinea-fields-foreground: #dee1e4; - --alinea-fields-shadow: hsl(var(--alinea-hue), var(--alinea-saturation), 30%); - --alinea-fields-outline: var(--alinea-inner-outline); - --alinea-fields-selected: var(--alinea-fields); - --alinea-fields-focus: hsl(var(--alinea-hue), var(--alinea-saturation), 30%); - --alinea-focus-foreground: hsl(var(--alinea-negative)); - --alinea-content: linear-gradient( - to bottom, - hsl(var(--alinea-hue), var(--alinea-saturation), 12%), - hsl(var(--alinea-hue), var(--alinea-saturation), 11%) - ); - --alinea-shadow: rgba(0, 0, 0, 0.4); - --alinea-divider-top: 0 -1px 0 rgba(0, 0, 0, 0.25), - inset 0 1px 0 rgba(255, 255, 255, 0.08); - --alinea-divider-bottom: 0 1px 0 rgba(255, 255, 255, 0.08), - inset 0 -1px 0 rgba(0, 0, 0, 0.25); - --alinea-title-foreground: #ffffff; - --alinea-tabs-trigger-foreground: white; - --alinea-tabs-trigger-background: hsl(215, 17%, 35%); - - --alinea-modal-background: hsla(200, 12%, 14%, 0.95); - - --alinea-button-foreground: white; - --alinea-button-background: #3f61e8; - --alinea-button-hover: #4a65e8; - - --alinea-variant-info-foreground: #f0f6ff; - --alinea-variant-info-background: hsla(230, 40%, 26%, 0.8); - --alinea-variant-info-action: hsl(230, 40%, 50%); - --alinea-variant-success-foreground: #f1fdf4; - --alinea-variant-success-background: hsla(140, 21%, 26%, 0.8); - --alinea-variant-success-action: hsl(140, 21%, 50%); - --alinea-variant-disabled-foreground: #f0f0f0; - --alinea-variant-disabled-background: hsla(0, 0%, 26%, 0.8); - --alinea-variant-disabled-action: hsl(0, 0%, 50%); - --alinea-variant-progress-foreground: #fef7ed; - --alinea-variant-progress-background: hsla(20, 29%, 26%, 0.8); - --alinea-variant-progress-actoion: hsl(15, 54%, 50%); +:root { + --background-color: #f8f8f8; + --gray-50: #ffffff; + --gray-100: #d0d0d0; + --gray-200: #afafaf; + --gray-300: #8f8f8f; + --gray-400: #717171; + --gray-500: #555555; + --gray-600: #393939; + --purple-100: #d5c9fa; + --purple-200: #b8a3f6; + --purple-300: #997cf2; + --purple-400: #7a54ef; + --purple-500: #582ddc; + --purple-600: #3c1e95; + --red-100: #f7c4ba; + --red-200: #f29887; + --red-300: #eb664d; + --red-400: #de2300; + --red-500: #a81b00; + --red-600: #731200; + --highlight-hover: rgb(0 0 0 / 0.07); + --highlight-pressed: rgb(0 0 0 / 0.15); } @mixin light-theme { @@ -112,6 +80,63 @@ --alinea-variant-progress-action: hsl(15, 100%, 91%); } +@mixin dark-theme { + --alinea-hue: 212; + --alinea-saturation: 18%; + --alinea-positive: var(--alinea-hue), var(--alinea-saturation), 14%; + --alinea-negative: 0, 8%, 92%; + --alinea-background: hsl(var(--alinea-positive)); + --alinea-foreground: white; + --alinea-foreground-faded: hsl(0, 3%, 85%); + --alinea-toolbar: hsl(var(--alinea-hue), var(--alinea-saturation), 20%); + --alinea-inner: hsl(var(--alinea-hue), var(--alinea-saturation), 12%); + --alinea-inner-outline: hsl(var(--alinea-hue), var(--alinea-saturation), 13%); + --alinea-highlight: hsla(var(--alinea-negative), 0.06); + --alinea-lift: hsl(var(--alinea-hue), var(--alinea-saturation), 18%); + --alinea-selected: #25344d; + --alinea-selected-foreground: #aec8f8; + --alinea-outline: hsl(var(--alinea-hue), var(--alinea-saturation), 20%); + --alinea-fields: hsl(var(--alinea-hue), var(--alinea-saturation), 10%); + --alinea-fields-foreground: #dee1e4; + --alinea-fields-shadow: hsl(var(--alinea-hue), var(--alinea-saturation), 30%); + --alinea-fields-outline: var(--alinea-inner-outline); + --alinea-fields-selected: var(--alinea-fields); + --alinea-fields-focus: hsl(var(--alinea-hue), var(--alinea-saturation), 30%); + --alinea-focus-foreground: hsl(var(--alinea-negative)); + --alinea-content: linear-gradient( + to bottom, + hsl(var(--alinea-hue), var(--alinea-saturation), 12%), + hsl(var(--alinea-hue), var(--alinea-saturation), 11%) + ); + --alinea-shadow: rgba(0, 0, 0, 0.4); + --alinea-divider-top: 0 -1px 0 rgba(0, 0, 0, 0.25), + inset 0 1px 0 rgba(255, 255, 255, 0.08); + --alinea-divider-bottom: 0 1px 0 rgba(255, 255, 255, 0.08), + inset 0 -1px 0 rgba(0, 0, 0, 0.25); + --alinea-title-foreground: #ffffff; + --alinea-tabs-trigger-foreground: white; + --alinea-tabs-trigger-background: hsl(215, 17%, 35%); + + --alinea-modal-background: hsla(200, 12%, 14%, 0.95); + + --alinea-button-foreground: white; + --alinea-button-background: #3f61e8; + --alinea-button-hover: #4a65e8; + + --alinea-variant-info-foreground: #f0f6ff; + --alinea-variant-info-background: hsla(230, 40%, 26%, 0.8); + --alinea-variant-info-action: hsl(230, 40%, 50%); + --alinea-variant-success-foreground: #f1fdf4; + --alinea-variant-success-background: hsla(140, 21%, 26%, 0.8); + --alinea-variant-success-action: hsl(140, 21%, 50%); + --alinea-variant-disabled-foreground: #f0f0f0; + --alinea-variant-disabled-background: hsla(0, 0%, 26%, 0.8); + --alinea-variant-disabled-action: hsl(0, 0%, 50%); + --alinea-variant-progress-foreground: #fef7ed; + --alinea-variant-progress-background: hsla(20, 29%, 26%, 0.8); + --alinea-variant-progress-actoion: hsl(15, 54%, 50%); +} + .root { @include dark-theme; --alinea-border-radius: 6px; diff --git a/src/dashboard/view/entry/EntryHeader.tsx b/src/dashboard/view/entry/EntryHeader.tsx index e7c8b8dd1..2a060f00e 100644 --- a/src/dashboard/view/entry/EntryHeader.tsx +++ b/src/dashboard/view/entry/EntryHeader.tsx @@ -2,7 +2,7 @@ import {EntryPhase} from 'alinea/core' import {entryFile, workspaceMediaDir} from 'alinea/core/EntryFilenames' import {Button, HStack, Icon, Stack, fromModule, px} from 'alinea/ui' import {AppBar} from 'alinea/ui/AppBar' -import {DropdownMenu} from 'alinea/ui/DropdownMenu' +import {Menu, MenuItem} from 'alinea/ui/Menu' import {IcOutlineAvTimer} from 'alinea/ui/icons/IcOutlineAvTimer' import {IcOutlineDrafts} from 'alinea/ui/icons/IcOutlineDrafts' import {IcOutlineKeyboardTab} from 'alinea/ui/icons/IcOutlineKeyboardTab' @@ -18,7 +18,7 @@ import {IcRoundSave} from 'alinea/ui/icons/IcRoundSave' import {IcRoundTranslate} from 'alinea/ui/icons/IcRoundTranslate' import {IcRoundUnfoldMore} from 'alinea/ui/icons/IcRoundUnfoldMore' import {useAtom, useAtomValue, useSetAtom} from 'jotai' -import {useState} from 'react' +import {ReactNode, useState} from 'react' import {useQueryClient} from 'react-query' import {EntryEditor, EntryTransition} from '../../atoms/EntryEditorAtoms.js' import {useLocation, useNavigate} from '../../atoms/LocationAtoms.js' @@ -140,54 +140,35 @@ export function EntryHeader({editor, editable = true}: EntryHeaderProps) { input.click() } - const options = - variant === 'draft' ? ( - - Remove draft - - ) : variant === EntryPhase.Published && !editor.activeVersion.seeded ? ( - isMediaFile ? ( - <> - - Replace - - - Delete - - - ) : ( - - Archive - - ) - ) : variant === EntryPhase.Archived ? ( - <> - - Publish - - - Delete - - - ) : null + const menuItems: Array<{id: string; action(): void; label: ReactNode}> = [] + if (!isMediaFile) { + menuItems.push({ + id: 'history', + action: () => setShowHistory(!showHistory), + label: `${showHistory ? 'Hide' : 'Show'} history` + }) + } + if (variant === 'draft') { + menuItems.push({id: 'draft', action: discardDraft, label: 'Remove draft'}) + } else if (variant === EntryPhase.Published && !editor.activeVersion.seeded) { + if (isMediaFile) { + menuItems.push({id: 'replace', action: replaceFile, label: 'Replace'}) + menuItems.push({ + id: 'delete', + action: deleteFileAndNavigate, + label: 'Delete' + }) + } else { + menuItems.push({ + id: 'archive', + action: archivePublished, + label: 'Archive' + }) + } + } else if (variant === EntryPhase.Archived) { + menuItems.push({id: 'publish', action: publishArchived, label: 'Publish'}) + menuItems.push({id: 'delete', action: deleteArchived, label: 'Delete'}) + } return ( <> @@ -204,8 +185,9 @@ export function EntryHeader({editor, editable = true}: EntryHeaderProps) { - - + navigate(href as string)} + label={ {variant === 'transition' @@ -216,32 +198,18 @@ export function EntryHeader({editor, editable = true}: EntryHeaderProps) { )} - - - {hasChanges && ( - { - navigate(pathname) - }} - > - Editing - - )} - {!previewRevision && - editor.availablePhases.map(phase => { - return ( - { - navigate(`${pathname}?${phase}`) - }} - > - {variantDescription[phase]} - - ) - })} - - + } + > + {hasChanges && Editing} + {!previewRevision && + editor.availablePhases.map(phase => { + return ( + + {variantDescription[phase]} + + ) + })} + {editable && !currentTransition && @@ -349,22 +317,25 @@ export function EntryHeader({editor, editable = true}: EntryHeaderProps) { )} - - - - - - - {!isMediaFile && ( - setShowHistory(!showHistory)} - > - {showHistory ? 'Hide' : 'Show'} history - - )} - {options} - - + + +
+ } + onAction={id => { + menuItems.find(item => item.id === id)?.action() + }} + > + {menuItems.map(({id, label}) => { + return ( + + {label} + + ) + })} + )}