Compare commits

...

1 Commits

Author SHA1 Message Date
Samuel Newman c10136083d wip 2025-02-12 18:41:39 +00:00
25 changed files with 198 additions and 135 deletions
+5 -5
View File
@@ -85,10 +85,10 @@
"@react-native-async-storage/async-storage": "1.23.1",
"@react-native-menu/menu": "^1.1.7",
"@react-native-picker/picker": "2.10.2",
"@react-navigation/bottom-tabs": "^6.5.20",
"@react-navigation/drawer": "^6.6.15",
"@react-navigation/native": "^6.1.17",
"@react-navigation/native-stack": "^6.9.26",
"@react-navigation/bottom-tabs": "^7.2.0",
"@react-navigation/drawer": "^7.1.1",
"@react-navigation/native": "^7.0.14",
"@react-navigation/native-stack": "^7.2.0",
"@sentry/react-native": "5.24.3",
"@tanstack/query-async-storage-persister": "^5.25.0",
"@tanstack/react-query": "^5.8.1",
@@ -189,7 +189,7 @@
"react-native-reanimated": "3.17.0-nightly-20241211-17e89ca24",
"react-native-root-siblings": "^4.1.1",
"react-native-safe-area-context": "4.14.0",
"react-native-screens": "~4.3.0",
"react-native-screens": "~4.6.0",
"react-native-svg": "^15.8.0",
"react-native-uitextview": "^1.4.0",
"react-native-url-polyfill": "^1.3.0",
+2 -2
View File
@@ -349,7 +349,7 @@ export function ProfileGrid({
<View style={[a.flex_row, a.justify_end, a.align_center, a.gap_md]}>
<InlineLinkText
label={_(msg`Browse more suggestions`)}
to="/search"
screen="Search"
style={[t.atoms.text_contrast_medium]}>
<Trans>Browse more suggestions</Trans>
</InlineLinkText>
@@ -486,7 +486,7 @@ export function SuggestedFeeds() {
]}>
<InlineLinkText
label={_(msg`Browse more suggestions`)}
to="/search"
screen="Search"
style={[t.atoms.text_contrast_medium]}>
<Trans>Browse more suggestions</Trans>
</InlineLinkText>
+65 -16
View File
@@ -28,10 +28,29 @@ import {router} from '#/routes'
*/
export {useButtonContext as useLinkContext} from '#/components/Button'
type BaseLinkProps = Pick<
Parameters<typeof useLinkProps<AllNavigatorParams>>[0],
'to'
> & {
/**
* Copied from react-nativgation's LinkProps, but with `action` removed. Removing action breaks
* the type, causing screen and params to lose their 'connection'
*/
export type CustomLinkProps<
ParamList = AllNavigatorParams,
RouteName extends keyof ParamList = keyof ParamList,
> =
| ({
href?: string
} & {
[Screen in keyof ParamList]: undefined extends ParamList[Screen]
? {screen: Screen; params?: ParamList[Screen]}
: {screen: Screen; params: ParamList[Screen]}
}[RouteName])
| {
href: string
screen?: undefined
params?: undefined
}
type BaseLinkProps = CustomLinkProps & {
testID?: string
/**
@@ -71,8 +90,18 @@ type BaseLinkProps = Pick<
shareOnLongPress?: boolean
}
function test({screen, params}: CustomLinkProps) {
if (screen === 'Search') {
params.q
// @ts-expect-error hiasuhdas
params.did
}
}
export function useLink({
to,
screen,
params,
href: hrefProp,
displayText,
action = 'push',
disableMismatchWarning,
@@ -85,10 +114,22 @@ export function useLink({
overridePresentation?: boolean
}) {
const navigation = useNavigationDeduped()
const {href} = useLinkProps<AllNavigatorParams>({
to:
typeof to === 'string' ? convertBskyAppUrlIfNeeded(sanitizeUrl(to)) : to,
const safeHrefProp = hrefProp
? convertBskyAppUrlIfNeeded(sanitizeUrl(hrefProp))
: undefined
let {href} = useLinkProps<AllNavigatorParams>({
screen: screen!,
params,
href: safeHrefProp,
})
if (!href) {
if (safeHrefProp) {
href = safeHrefProp
} else {
throw new Error('No href provided')
}
}
const isExternal = isExternalUrl(href)
const {openModal, closeModal} = useModalControls()
const openLink = useOpenLink()
@@ -97,7 +138,7 @@ export function useLink({
(e: GestureResponderEvent) => {
const exitEarlyIfFalse = outerOnPress?.(e)
if (exitEarlyIfFalse === false) return
if (exitEarlyIfFalse === false || e.defaultPrevented) return
const requiresWarning = Boolean(
!disableMismatchWarning &&
@@ -214,7 +255,9 @@ export type LinkProps = Omit<BaseLinkProps, 'disableMismatchWarning'> &
*/
export function Link({
children,
to,
screen,
params,
href: hrefProp,
action = 'push',
onPress: outerOnPress,
onLongPress: outerOnLongPress,
@@ -222,7 +265,9 @@ export function Link({
...rest
}: LinkProps) {
const {href, isExternal, onPress, onLongPress} = useLink({
to,
screen,
params,
href: hrefProp,
displayText: typeof children === 'string' ? children : '',
action,
onPress: outerOnPress,
@@ -267,7 +312,9 @@ export type InlineLinkProps = React.PropsWithChildren<
export function InlineLinkText({
children,
to,
screen,
params,
href: hrefProp,
action = 'push',
disableMismatchWarning,
style,
@@ -284,7 +331,9 @@ export function InlineLinkText({
const t = useTheme()
const stringChildren = typeof children === 'string'
const {href, isExternal, onPress, onLongPress} = useLink({
to,
screen,
params,
href: hrefProp,
displayText: stringChildren ? children : '',
action,
disableMismatchWarning,
@@ -344,12 +393,12 @@ export function InlineLinkText({
export function WebOnlyInlineLinkText({
children,
to,
href,
onPress,
...props
}: Omit<InlineLinkProps, 'onLongPress'>) {
return isWeb ? (
<InlineLinkText {...props} to={to} onPress={onPress}>
<InlineLinkText {...props} href={href} onPress={onPress}>
{children}
</InlineLinkText>
) : (
@@ -366,7 +415,7 @@ export function WebOnlyInlineLinkText({
export function createStaticClick(
onPressHandler: Exclude<BaseLinkProps['onPress'], undefined>,
): {
to: BaseLinkProps['to']
to: BaseLinkProps['href']
onPress: Exclude<BaseLinkProps['onPress'], undefined>
} {
return {
+2 -2
View File
@@ -158,7 +158,7 @@ export function Inner({
</Text>
?{' '}
<InlineLinkText
to="#"
href="#"
label={_(msg`Change email address`)}
style={[a.text_md, a.leading_snug]}
onPress={e => {
@@ -183,7 +183,7 @@ export function Inner({
to verify it's you.
</Trans>{' '}
<InlineLinkText
to="#"
href="#"
label={_(msg`Change email address`)}
style={[a.text_md, a.leading_snug]}
onPress={e => {
+1 -1
View File
@@ -239,7 +239,7 @@ let MessageItemMetadata = ({
&middot;{' '}
<InlineLinkText
label={_(msg`Click to retry failed message`)}
to="#"
href="#"
onPress={handleRetry}
style={[a.text_xs]}>
{_(msg`Retry`)}
@@ -245,7 +245,7 @@ export function LabelerLabelPreference({
Configured in{' '}
<InlineLinkText
label={_(msg`moderation settings`)}
to="/moderation"
screen="Moderation"
style={a.text_sm}>
moderation settings
</InlineLinkText>
+25 -19
View File
@@ -105,25 +105,27 @@ export type FlatNavigatorParams = CommonNavigatorParams & {
Messages: {pushToConversation?: string; animation?: 'push' | 'pop'}
}
export type AllNavigatorParams = CommonNavigatorParams & {
HomeTab: undefined
Home: undefined
SearchTab: undefined
Search: {q?: string}
Feeds: undefined
NotificationsTab: undefined
Notifications: undefined
MyProfileTab: undefined
Hashtag: {tag: string; author?: string}
Topic: {topic: string}
MessagesTab: undefined
Messages: {animation?: 'push' | 'pop'}
Start: {name: string; rkey: string}
StarterPack: {name: string; rkey: string; new?: boolean}
StarterPackShort: {code: string}
StarterPackWizard: undefined
StarterPackEdit: {rkey?: string}
}
export type AllNavigatorParams = Prettify<
CommonNavigatorParams & {
HomeTab: undefined
Home: undefined
SearchTab: undefined
Search: {q?: string}
Feeds: undefined
NotificationsTab: undefined
Notifications: undefined
MyProfileTab: undefined
Hashtag: {tag: string; author?: string}
Topic: {topic: string}
MessagesTab: undefined
Messages: {animation?: 'push' | 'pop'}
Start: {name: string; rkey: string}
StarterPack: {name: string; rkey: string; new?: boolean}
StarterPackShort: {code: string}
StarterPackWizard: undefined
StarterPackEdit: {rkey?: string}
}
>
// NOTE
// this isn't strictly correct but it should be close enough
@@ -141,3 +143,7 @@ export type Route = {
match: (path: string) => MatchResult | undefined
build: (params: RouteParams) => string
}
type Prettify<T> = {
[K in keyof T]: T[K]
} & {}
+1 -1
View File
@@ -37,7 +37,7 @@ export function NoFollowingFeed() {
<Trans>
Looks like you're missing a following feed.{' '}
<InlineLinkText
to="/"
href="#"
label={_(msg`Add the default feed of only people you follow`)}
onPress={addRecommendedFeeds}
style={[a.leading_snug]}>
+1 -1
View File
@@ -101,7 +101,7 @@ export function NoFeedsPinned({
<Link
label={_(msg`Browse other feeds`)}
to="/feeds"
screen="Feeds"
size="large"
variant="solid"
color="secondary">
@@ -44,7 +44,7 @@ export function MessageListError({item}: {item: ConvoItem & {type: 'error'}}) {
{description} &middot;{' '}
{item.retry && (
<InlineLinkText
to="#"
href="#"
label={help}
onPress={e => {
e.preventDefault()
+5 -5
View File
@@ -203,7 +203,7 @@ export function ModerationScreenInner({
<Link
label={_(msg`View your default post interaction settings`)}
testID="interactionSettingsBtn"
to="/moderation/interaction-settings">
screen="ModerationInteractionSettings">
{state => (
<SubItem
title={_(msg`Interaction settings`)}
@@ -233,7 +233,7 @@ export function ModerationScreenInner({
<Link
label={_(msg`View your moderation lists`)}
testID="moderationlistsBtn"
to="/moderation/modlists">
screen="ModerationModlists">
{state => (
<SubItem
title={_(msg`Moderation lists`)}
@@ -248,7 +248,7 @@ export function ModerationScreenInner({
<Link
label={_(msg`View your muted accounts`)}
testID="mutedAccountsBtn"
to="/moderation/muted-accounts">
screen="ModerationMutedAccounts">
{state => (
<SubItem
title={_(msg`Muted accounts`)}
@@ -263,7 +263,7 @@ export function ModerationScreenInner({
<Link
label={_(msg`View your blocked accounts`)}
testID="blockedAccountsBtn"
to="/moderation/blocked-accounts">
screen="ModerationBlockedAccounts">
{state => (
<SubItem
title={_(msg`Blocked accounts`)}
@@ -356,7 +356,7 @@ export function ModerationScreenInner({
Adult content can only be enabled via the Web at{' '}
<InlineLinkText
label={_(msg`The Bluesky web application`)}
to=""
href="#"
onPress={evt => {
evt.preventDefault()
Linking.openURL('https://bsky.app/')
+4 -4
View File
@@ -33,7 +33,7 @@ export function AboutSettingsScreen({}: Props) {
<Layout.Content>
<SettingsList.Container>
<SettingsList.LinkItem
to="https://bsky.social/about/support/tos"
href="https://bsky.social/about/support/tos"
label={_(msg`Terms of Service`)}>
<SettingsList.ItemIcon icon={NewspaperIcon} />
<SettingsList.ItemText>
@@ -41,7 +41,7 @@ export function AboutSettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="https://bsky.social/about/support/privacy-policy"
href="https://bsky.social/about/support/privacy-policy"
label={_(msg`Privacy Policy`)}>
<SettingsList.ItemIcon icon={NewspaperIcon} />
<SettingsList.ItemText>
@@ -49,7 +49,7 @@ export function AboutSettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to={STATUS_PAGE_URL}
href={STATUS_PAGE_URL}
label={_(msg`Status Page`)}>
<SettingsList.ItemIcon icon={GlobeIcon} />
<SettingsList.ItemText>
@@ -57,7 +57,7 @@ export function AboutSettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.Divider />
<SettingsList.LinkItem to="/sys/log" label={_(msg`System log`)}>
<SettingsList.LinkItem screen="Log" label={_(msg`System log`)}>
<SettingsList.ItemIcon icon={CodeLinesIcon} />
<SettingsList.ItemText>
<Trans>System log</Trans>
@@ -105,7 +105,7 @@ export function AccessibilitySettingsScreen({}: Props) {
<Trans>
Autoplay options have moved to the{' '}
<InlineLinkText
to="/settings/content-and-media"
screen="ContentAndMediaSettings"
label={_(msg`Content and media`)}>
Content and Media settings
</InlineLinkText>
@@ -14,7 +14,7 @@ export function SettingsListItem() {
return (
<SettingsList.LinkItem
to="/settings/app-icon"
screen="AppIconSettings"
label={_(msg`App Icon`)}
contentContainerStyle={[a.align_start]}>
<SettingsList.ItemIcon icon={Shapes} />
@@ -55,7 +55,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
<Layout.Content>
<SettingsList.Container>
<SettingsList.LinkItem
to="/settings/saved-feeds"
screen="SavedFeeds"
label={_(msg`Manage saved feeds`)}>
<SettingsList.ItemIcon icon={HashtagIcon} />
<SettingsList.ItemText>
@@ -63,7 +63,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="/settings/threads"
screen="PreferencesThreads"
label={_(msg`Thread preferences`)}>
<SettingsList.ItemIcon icon={BubblesIcon} />
<SettingsList.ItemText>
@@ -71,7 +71,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="/settings/following-feed"
screen="PreferencesFollowingFeed"
label={_(msg`Following feed preferences`)}>
<SettingsList.ItemIcon icon={HomeIcon} />
<SettingsList.ItemText>
@@ -79,7 +79,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="/settings/external-embeds"
screen="PreferencesExternalEmbeds"
label={_(msg`External media`)}>
<SettingsList.ItemIcon icon={MacintoshIcon} />
<SettingsList.ItemText>
@@ -59,7 +59,7 @@ export function PrivacyAndSecuritySettingsScreen({}: Props) {
<Email2FAToggle />
</SettingsList.Item>
<SettingsList.LinkItem
to="/settings/app-passwords"
screen="AppPasswords"
label={_(msg`App passwords`)}>
<SettingsList.ItemIcon icon={KeyIcon} />
<SettingsList.ItemText>
@@ -98,7 +98,7 @@ export function PrivacyAndSecuritySettingsScreen({}: Props) {
label={_(
msg`Learn more about what is public on Bluesky.`,
)}
to="https://blueskyweb.zendesk.com/hc/en-us/articles/15835264007693-Data-Privacy">
href="https://blueskyweb.zendesk.com/hc/en-us/articles/15835264007693-Data-Privacy">
<Trans>Learn more about what is public on Bluesky.</Trans>
</InlineLinkText>
</Admonition.Text>
+10 -8
View File
@@ -150,28 +150,30 @@ export function SettingsScreen({}: Props) {
<AddAccountRow />
)}
<SettingsList.Divider />
<SettingsList.LinkItem to="/settings/account" label={_(msg`Account`)}>
<SettingsList.LinkItem
screen="AccountSettings"
label={_(msg`Account`)}>
<SettingsList.ItemIcon icon={PersonIcon} />
<SettingsList.ItemText>
<Trans>Account</Trans>
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="/settings/privacy-and-security"
screen="PrivacyAndSecuritySettings"
label={_(msg`Privacy and security`)}>
<SettingsList.ItemIcon icon={LockIcon} />
<SettingsList.ItemText>
<Trans>Privacy and security</Trans>
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem to="/moderation" label={_(msg`Moderation`)}>
<SettingsList.LinkItem screen="Moderation" label={_(msg`Moderation`)}>
<SettingsList.ItemIcon icon={HandIcon} />
<SettingsList.ItemText>
<Trans>Moderation</Trans>
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="/settings/content-and-media"
screen="ContentAndMediaSettings"
label={_(msg`Content and media`)}>
<SettingsList.ItemIcon icon={WindowIcon} />
<SettingsList.ItemText>
@@ -179,7 +181,7 @@ export function SettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="/settings/appearance"
screen="AppearanceSettings"
label={_(msg`Appearance`)}>
<SettingsList.ItemIcon icon={PaintRollerIcon} />
<SettingsList.ItemText>
@@ -187,7 +189,7 @@ export function SettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="/settings/accessibility"
screen="AccessibilitySettings"
label={_(msg`Accessibility`)}>
<SettingsList.ItemIcon icon={AccessibilityIcon} />
<SettingsList.ItemText>
@@ -195,7 +197,7 @@ export function SettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.LinkItem
to="/settings/language"
screen="LanguageSettings"
label={_(msg`Languages`)}>
<SettingsList.ItemIcon icon={EarthIcon} />
<SettingsList.ItemText>
@@ -212,7 +214,7 @@ export function SettingsScreen({}: Props) {
</SettingsList.ItemText>
<SettingsList.Chevron />
</SettingsList.PressableItem>
<SettingsList.LinkItem to="/settings/about" label={_(msg`About`)}>
<SettingsList.LinkItem screen="AboutSettings" label={_(msg`About`)}>
<SettingsList.ItemIcon icon={BubbleInfoIcon} />
<SettingsList.ItemText>
<Trans>About</Trans>
@@ -250,7 +250,7 @@ function ProvidedHandlePage({
lets you self-verify your identity.{' '}
<InlineLinkText
label={_(msg`learn more`)}
to="https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial"
href="https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial"
style={[a.font_bold]}
disableMismatchWarning>
Learn more here.
@@ -96,7 +96,7 @@ export function ExportCarDialog({
exports in{' '}
<InlineLinkText
label={_(msg`View blogpost for more details`)}
to="https://docs.bsky.app/blog/repo-export"
href="https://docs.bsky.app/blog/repo-export"
style={[a.text_sm]}>
this blogpost
</InlineLinkText>
+1 -1
View File
@@ -215,7 +215,7 @@ export function Takendown() {
Your account was found to be in violation of the{' '}
<InlineLinkText
label={_(msg`Bluesky Social Terms of Service`)}
to="https://bsky.social/about/support/tos"
href="https://bsky.social/about/support/tos"
style={[a.text_md, a.leading_normal]}
overridePresentation>
Bluesky Social Terms of Service
+2 -2
View File
@@ -164,12 +164,12 @@ function Footer() {
]}>
<InlineLinkText
label={_(msg`Learn more about Bluesky`)}
to="https://bsky.social">
href="https://bsky.social/about">
<Trans>Business</Trans>
</InlineLinkText>
<InlineLinkText
label={_(msg`Read the Bluesky blog`)}
to="https://bsky.social/about/blog">
href="https://bsky.social/about/blog">
<Trans>Blog</Trans>
</InlineLinkText>
<InlineLinkText
+1 -1
View File
@@ -51,7 +51,7 @@ function HomeHeaderLayoutDesktopAndTablet({
<Logo width={kawaii ? 60 : 28} />
</View>
<Link
to="/feeds"
screen="Feeds"
hitSlop={10}
label={_(msg`View your feeds and explore more`)}
size="small"
+1 -1
View File
@@ -72,7 +72,7 @@ export function HomeHeaderLayoutMobile({
{hasSession && (
<Link
testID="viewHeaderHomeFeedPrefsBtn"
to="/feeds"
screen="Feeds"
hitSlop={HITSLOP_10}
label={_(msg`View your feeds and explore more`)}
size="small"
+2
View File
@@ -101,6 +101,8 @@ export function FeedShutdownMsg({feedUri}: {feedUri: string}) {
<InlineLinkText
label={_(msg`The Discover feed`)}
to="/profile/bsky.app/feed/whats-hot"
screen="ProfileFeed"
params={{}}
style={[a.text_md]}>
Discover
</InlineLinkText>{' '}
+58 -54
View File
@@ -5886,65 +5886,69 @@
invariant "^2.2.4"
nullthrows "^1.1.1"
"@react-navigation/bottom-tabs@^6.5.20":
version "6.5.20"
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.20.tgz#5335e75b02c527ef0569bd97d4f9185d65616e49"
integrity sha512-ow6Z06iS4VqBO8d7FP+HsGjJLWt2xTWIvuWjpoCvsM/uQXzCRDIjBv9HaKcXbF0yTW7IMir0oDAbU5PFzEDdgA==
"@react-navigation/bottom-tabs@^7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-7.2.0.tgz#5b336b823226647a263b4fe743655462796b6aaf"
integrity sha512-1LxjgnbPyFINyf9Qr5d1YE0pYhuJayg5TCIIFQmbcX4PRhX7FKUXV7cX8OzrKXEdZi/UE/VNXugtozPAR9zgvA==
dependencies:
"@react-navigation/elements" "^1.3.30"
"@react-navigation/elements" "^2.2.5"
color "^4.2.3"
warn-once "^0.1.0"
"@react-navigation/core@^6.4.16":
version "6.4.16"
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.16.tgz#f9369a134805174536b9aa0f0f483b930511caf9"
integrity sha512-UDTJBsHxnzgFETR3ZxhctP+RWr4SkyeZpbhpkQoIGOuwSCkt1SE0qjU48/u6r6w6XlX8OqVudn1Ab0QFXTHxuQ==
"@react-navigation/core@^7.3.1":
version "7.3.1"
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-7.3.1.tgz#c6d4857fa2dd321d12ca87e200478c38c420f157"
integrity sha512-S3KCGvNsoqVk8ErAtQI2EAhg9185lahF5OY01ofrrD4Ij/uk3QEHHjoGQhR5l5DXSCSKr1JbMQA7MEKMsBiWZA==
dependencies:
"@react-navigation/routers" "^6.1.9"
"@react-navigation/routers" "^7.1.2"
escape-string-regexp "^4.0.0"
nanoid "^3.1.23"
nanoid "3.3.8"
query-string "^7.1.3"
react-is "^16.13.0"
use-latest-callback "^0.1.9"
react-is "^18.2.0"
use-latest-callback "^0.2.1"
use-sync-external-store "^1.2.2"
"@react-navigation/drawer@^6.6.15":
version "6.6.15"
resolved "https://registry.yarnpkg.com/@react-navigation/drawer/-/drawer-6.6.15.tgz#fcedba68f735103dbc035911f5959ce926081d62"
integrity sha512-GLkFQNxjtmxB/qXSHmu1DfoB89jCzW64tmX68iPndth+9U+0IP27GcCCaMZxQfwj+nI8Kn2zlTlXAZDIIHE+DQ==
"@react-navigation/drawer@^7.1.1":
version "7.1.1"
resolved "https://registry.yarnpkg.com/@react-navigation/drawer/-/drawer-7.1.1.tgz#4e0235ada1a9dac35e97f1492f7cf4cda98d19b0"
integrity sha512-34UqRS5OLFaNXPs5ocz3Du9c7em0P7fFMPYCZn/MxadDzQ4Mn/74pmJczmiyvyvz8vcWsNRbZ3Qswm0Dv6z60w==
dependencies:
"@react-navigation/elements" "^1.3.30"
"@react-navigation/elements" "^2.2.5"
color "^4.2.3"
warn-once "^0.1.0"
react-native-drawer-layout "^4.1.1"
use-latest-callback "^0.2.1"
"@react-navigation/elements@^1.3.30":
version "1.3.30"
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.30.tgz#a81371f599af1070b12014f05d6c09b1a611fd9a"
integrity sha512-plhc8UvCZs0UkV+sI+3bisIyn78wz9O/BiWZXpounu72k/R/Sj5PuZYFJ1fi6psvriUveMCGh4LeZckAZu2qiQ==
"@react-navigation/native-stack@^6.9.26":
version "6.9.26"
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.26.tgz#90facf7783c9927f094bc9f01c613af75b6c241e"
integrity sha512-++dueQ+FDj2XkZ902DVrK79ub1vp19nSdAZWxKRgd6+Bc0Niiesua6rMCqymYOVaYh+dagwkA9r00bpt/U5WLw==
"@react-navigation/elements@^2.2.5":
version "2.2.5"
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-2.2.5.tgz#0e2ca76e2003e96b417a3d7c2829bf1afd69193f"
integrity sha512-sDhE+W14P7MNWLMxXg1MEVXwkLUpMZJGflE6nQNzLmolJQIHgcia0Mrm8uRa3bQovhxYu1UzEojLZ+caoZt7Fg==
dependencies:
"@react-navigation/elements" "^1.3.30"
warn-once "^0.1.0"
color "^4.2.3"
"@react-navigation/native@^6.1.17":
version "6.1.17"
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.17.tgz#439f15a99809d26ea4682d2a3766081cf2ca31cf"
integrity sha512-mer3OvfwWOHoUSMJyLa4vnBH3zpFmCwuzrBPlw7feXklurr/ZDiLjLxUScOot6jLRMz/67GyilEYMmP99LL0RQ==
"@react-navigation/native-stack@^7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-7.2.0.tgz#8aa489f88d662b3543a931b9cb934bb2e09a4893"
integrity sha512-mw7Nq9qQrGsmJmCTwIIWB7yY/3tWYXvQswx+HJScGAadIjemvytJXm1fcl3+YZ9T9Ym0aERcVe5kDs+ny3X4vA==
dependencies:
"@react-navigation/core" "^6.4.16"
"@react-navigation/elements" "^2.2.5"
warn-once "^0.1.1"
"@react-navigation/native@^7.0.14":
version "7.0.14"
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-7.0.14.tgz#b3ee2879038dcf0523d26516af88d3adc549ce5e"
integrity sha512-Gi6lLw4VOGSWAhmUdJOMauOKGK51/YA1CprjXm91sNfgERWvznqEMw8QmUQx9SEqYfi0LfZhbzpMst09SJ00lw==
dependencies:
"@react-navigation/core" "^7.3.1"
escape-string-regexp "^4.0.0"
fast-deep-equal "^3.1.3"
nanoid "^3.1.23"
nanoid "3.3.8"
use-latest-callback "^0.2.1"
"@react-navigation/routers@^6.1.9":
version "6.1.9"
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.9.tgz#73f5481a15a38e36592a0afa13c3c064b9f90bed"
integrity sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==
"@react-navigation/routers@^7.1.2":
version "7.1.2"
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-7.1.2.tgz#647a63e383673de0c4fc10c64a17f551d5da0a17"
integrity sha512-emdEjpVDK8zbiu2GChC8oYIAub9i/OpNuQJekVsbyFCBz4/TzaBzms38Q53YaNhdIFNmiYLfHv/Y1Ub7KYfm3w==
dependencies:
nanoid "^3.1.23"
nanoid "3.3.8"
"@remirror/core-constants@3.0.0":
version "3.0.0"
@@ -14370,7 +14374,12 @@ mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
nanoid@^3.1.23, nanoid@^3.3.1, nanoid@^3.3.6:
nanoid@3.3.8:
version "3.3.8"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
nanoid@^3.3.1, nanoid@^3.3.6:
version "3.3.6"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
@@ -16068,7 +16077,7 @@ react-image-crop@^11.0.7:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0:
react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -16216,10 +16225,10 @@ react-native-safe-area-context@4.14.0:
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.14.0.tgz#138f4b2e180cb7517c78bd5f4d4cf91325ba0b1a"
integrity sha512-/SyYpCulWQOnnXhRq6wepkhoyQMowHm1ptDyRz20s+YS/R9mbd+mK+jFyFCyXFJn8jp7vFl43VUCgspuOiEbwA==
react-native-screens@~4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-4.3.0.tgz#c4fef7583535c963e9257cdd1d91a9889961ab61"
integrity sha512-G0u8BPgu2vcRZoQTlRpBXKa0ElQSDvDBlRe6ncWwCeBmd5Uqa2I3tQ6Vn6trIE6+yneW/nD4p5wihEHlAWZPEw==
react-native-screens@~4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-4.6.0.tgz#2b60ab6f4cd5010c6f9cb01b034f2aa0e17ccf4b"
integrity sha512-PqGtR/moJLiTMSavhfo5spKXNHZrlxffq3g5UUVPmyuu7MmazFlPvYqiAYnR2iB9tkJYgvZO6sbjYAE7619M0A==
dependencies:
react-freeze "^1.0.0"
warn-once "^0.1.0"
@@ -18603,11 +18612,6 @@ use-isomorphic-layout-effect@^1.1.1:
resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb"
integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==
use-latest-callback@^0.1.9:
version "0.1.9"
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.9.tgz#10191dc54257e65a8e52322127643a8940271e2a"
integrity sha512-CL/29uS74AwreI/f2oz2hLTW7ZqVeV5+gxFeGudzQrgkCytrHw33G4KbnQOrRlAEzzAFXi7dDLMC9zhWcVpzmw==
use-latest-callback@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.1.tgz#4d4e6a9e4817b13142834850dcfa8d24ca4569cf"
@@ -18736,7 +18740,7 @@ walker@^1.0.7, walker@^1.0.8:
dependencies:
makeerror "1.0.12"
warn-once@0.1.1, warn-once@^0.1.0:
warn-once@0.1.1, warn-once@^0.1.0, warn-once@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43"
integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==