@adminide-stack/yantra-mobile 12.0.54-alpha.1 → 12.0.54-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/lib/components/CustomDrawer.js +28 -19
  2. package/lib/components/CustomDrawer.js.map +1 -1
  3. package/lib/components/NavigationHeader/HeaderMoreMenu.js +7 -4
  4. package/lib/components/NavigationHeader/HeaderMoreMenu.js.map +1 -1
  5. package/lib/components/NavigationHeader/HeaderSkillsButton.js +5 -2
  6. package/lib/components/NavigationHeader/HeaderSkillsButton.js.map +1 -1
  7. package/lib/components/NavigationHeader/HeaderTasksButton.js +4 -1
  8. package/lib/components/NavigationHeader/HeaderTasksButton.js.map +1 -1
  9. package/lib/components/NavigationHeader/NavigationHeader.js +7 -5
  10. package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
  11. package/lib/compute.js +57 -7
  12. package/lib/compute.js.map +1 -1
  13. package/lib/features/agent-chat/NativeAgentChat.js +393 -0
  14. package/lib/features/agent-chat/NativeAgentChat.js.map +1 -0
  15. package/lib/features/apps/AppsCatalog.js +10 -0
  16. package/lib/features/apps/AppsCatalog.js.map +1 -1
  17. package/lib/features/apps/mobileAppCatalog.js +7 -0
  18. package/lib/features/apps/mobileAppCatalog.js.map +1 -1
  19. package/lib/features/attachments/displayUserMessageText.js +3 -2
  20. package/lib/features/attachments/displayUserMessageText.js.map +1 -1
  21. package/lib/features/attachments/useImageAttachments.js +9 -7
  22. package/lib/features/attachments/useImageAttachments.js.map +1 -1
  23. package/lib/features/canvas/withRemoteSafeArea.js +46 -0
  24. package/lib/features/canvas/withRemoteSafeArea.js.map +1 -0
  25. package/lib/features/chat/ChatTranscript.js +23 -15
  26. package/lib/features/chat/ChatTranscript.js.map +1 -1
  27. package/lib/features/chat/toolActivity.js +42 -6
  28. package/lib/features/chat/toolActivity.js.map +1 -1
  29. package/lib/features/chat/transcriptGroups.js +11 -2
  30. package/lib/features/chat/transcriptGroups.js.map +1 -1
  31. package/lib/features/shopping/chat/homeShoppingIntent.js +58 -0
  32. package/lib/features/shopping/chat/homeShoppingIntent.js.map +1 -0
  33. package/lib/features/shopping/chat/openShopNative.js +60 -0
  34. package/lib/features/shopping/chat/openShopNative.js.map +1 -0
  35. package/lib/features/travel/nativeTravelRegistry.js +15 -0
  36. package/lib/features/travel/nativeTravelRegistry.js.map +1 -0
  37. package/lib/graphql/typePolicies.js +35 -1
  38. package/lib/graphql/typePolicies.js.map +1 -1
  39. package/lib/hooks/useCdecliChannel.js +10 -8
  40. package/lib/hooks/useCdecliChannel.js.map +1 -1
  41. package/lib/hooks/useChatStream.js +13 -6
  42. package/lib/hooks/useChatStream.js.map +1 -1
  43. package/lib/index.js +1 -1
  44. package/lib/index.js.map +1 -1
  45. package/lib/routes.json +58 -3
  46. package/lib/screens/CanvasBoard/index.js +6 -1
  47. package/lib/screens/CanvasBoard/index.js.map +1 -1
  48. package/lib/screens/Chat/index.js +44 -5
  49. package/lib/screens/Chat/index.js.map +1 -1
  50. package/lib/screens/Home/HomeScreen.js +58 -21
  51. package/lib/screens/Home/HomeScreen.js.map +1 -1
  52. package/lib/screens/ShoppingNative/index.js +23 -2
  53. package/lib/screens/ShoppingNative/index.js.map +1 -1
  54. package/lib/screens/ShoppingNative/useShoppingHostChat.js +66 -0
  55. package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -0
  56. package/lib/screens/TravelNative/index.js +70 -0
  57. package/lib/screens/TravelNative/index.js.map +1 -0
  58. package/lib/screens/TravelNative/useTravelHostChat.js +66 -0
  59. package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -0
  60. package/lib/services/brainQuickReply.js +72 -2
  61. package/lib/services/brainQuickReply.js.map +1 -1
  62. package/lib/utils/drawerNavigation.js +42 -0
  63. package/lib/utils/drawerNavigation.js.map +1 -0
  64. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useState,useMemo,useCallback,useEffect}from'react';import {StyleSheet,View,Image,Pressable,ActivityIndicator}from'react-native';import {DrawerContentScrollView}from'@react-navigation/drawer';import {Ionicons}from'@expo/vector-icons';import {Text}from'@admin-layout/gluestack-ui-mobile';import {useRoute,CommonActions}from'@react-navigation/native';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {useDispatch,useSelector}from'react-redux';import {userSelector,logoutAndRedirect}from'@adminide-stack/user-auth0-client';import {useAccountProfileQuery}from'common/graphql';import {mobileTokens}from'../theme/mobileTokens.js';import {pickAuthEmail,pickPrimaryDisplayName,pickAuthPicture,getInitials}from'../utils/authUserDisplay.js';var __defProp = Object.defineProperty;
1
+ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useState,useMemo,useCallback,useEffect}from'react';import {StyleSheet,View,Image,Pressable,ActivityIndicator}from'react-native';import {DrawerContentScrollView}from'@react-navigation/drawer';import {Ionicons}from'@expo/vector-icons';import {Text}from'@admin-layout/gluestack-ui-mobile';import {useRoute,CommonActions}from'@react-navigation/native';import {afterNativeModalClose}from'../utils/drawerNavigation.js';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {useDispatch,useSelector}from'react-redux';import {userSelector,logoutAndRedirect}from'@adminide-stack/user-auth0-client';import {useAccountProfileQuery}from'common/graphql';import {mobileTokens}from'../theme/mobileTokens.js';import {pickAuthEmail,pickPrimaryDisplayName,pickAuthPicture,getInitials}from'../utils/authUserDisplay.js';var __defProp = Object.defineProperty;
2
2
  var __defProps = Object.defineProperties;
3
3
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -178,34 +178,43 @@ function CustomDrawer(props) {
178
178
  }
179
179
  }, [navigation]);
180
180
  const handleOpenApps = useCallback(() => {
181
- var _a2, _b2;
181
+ var _a2;
182
182
  if (isLoggingOut) return;
183
183
  (_a2 = navigation == null ? void 0 : navigation.closeDrawer) == null ? void 0 : _a2.call(navigation);
184
- (_b2 = navigation == null ? void 0 : navigation.dispatch) == null ? void 0 : _b2.call(navigation, CommonActions.navigate({
185
- name: "MainStack.Apps",
186
- params: orgName ? {
187
- orgName
188
- } : void 0
189
- }));
184
+ afterNativeModalClose(() => {
185
+ var _a3;
186
+ (_a3 = navigation == null ? void 0 : navigation.dispatch) == null ? void 0 : _a3.call(navigation, CommonActions.navigate({
187
+ name: "MainStack.Apps",
188
+ params: orgName ? {
189
+ orgName
190
+ } : void 0
191
+ }));
192
+ });
190
193
  }, [isLoggingOut, navigation, orgName]);
191
194
  const handleOpenHistory = useCallback(() => {
192
- var _a2, _b2;
195
+ var _a2;
193
196
  if (isLoggingOut) return;
194
197
  (_a2 = navigation == null ? void 0 : navigation.closeDrawer) == null ? void 0 : _a2.call(navigation);
195
- (_b2 = navigation == null ? void 0 : navigation.dispatch) == null ? void 0 : _b2.call(navigation, CommonActions.navigate({
196
- name: "MainStack.ChatHistory",
197
- params: orgName ? {
198
- orgName
199
- } : void 0
200
- }));
198
+ afterNativeModalClose(() => {
199
+ var _a3;
200
+ (_a3 = navigation == null ? void 0 : navigation.dispatch) == null ? void 0 : _a3.call(navigation, CommonActions.navigate({
201
+ name: "MainStack.ChatHistory",
202
+ params: orgName ? {
203
+ orgName
204
+ } : void 0
205
+ }));
206
+ });
201
207
  }, [isLoggingOut, navigation, orgName]);
202
208
  const handleOpenBilling = useCallback(() => {
203
- var _a2, _b2;
209
+ var _a2;
204
210
  if (isLoggingOut) return;
205
211
  (_a2 = navigation == null ? void 0 : navigation.closeDrawer) == null ? void 0 : _a2.call(navigation);
206
- (_b2 = navigation == null ? void 0 : navigation.navigate) == null ? void 0 : _b2.call(navigation, "MainStack.Billing", orgName ? {
207
- orgName
208
- } : void 0);
212
+ afterNativeModalClose(() => {
213
+ var _a3;
214
+ (_a3 = navigation == null ? void 0 : navigation.navigate) == null ? void 0 : _a3.call(navigation, "MainStack.Billing", orgName ? {
215
+ orgName
216
+ } : void 0);
217
+ });
209
218
  }, [isLoggingOut, navigation, orgName]);
210
219
  useEffect(() => {
211
220
  if (authUser) {
@@ -1 +1 @@
1
- {"version":3,"file":"CustomDrawer.js","sources":["../../src/components/CustomDrawer.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ActivityIndicator, Image, Pressable, StyleSheet, View } from 'react-native';\nimport { DrawerContentScrollView } from '@react-navigation/drawer';\nimport { Ionicons } from '@expo/vector-icons';\nimport { Text } from '@admin-layout/gluestack-ui-mobile';\nimport { CommonActions, useRoute } from '@react-navigation/native';\nimport { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useDispatch, useSelector } from 'react-redux';\nimport type { IUserState } from '@adminide-stack/core';\nimport { Store, logoutAndRedirect, userSelector } from '@adminide-stack/user-auth0-client';\nimport { useAccountProfileQuery } from 'common/graphql';\nimport { mobileTokens } from '../theme/mobileTokens';\n// Shared with the chat surface so the drawer and a message header can never\n// show two different names for the same account.\nimport {\n getInitials,\n pickAuthEmail,\n pickAuthPicture,\n pickPrimaryDisplayName,\n type Auth0ProfileClaims,\n} from '../utils/authUserDisplay';\n\nconst APP_ICON = require('../assets/icon.png');\n\n/** Standard neutral drawer (iOS/Material-like): lets the logo stay the only strong color accent. */\nconst PALETTE = {\n bg: mobileTokens.color.bg,\n surface: mobileTokens.color.surface,\n border: mobileTokens.color.border,\n text: mobileTokens.color.text,\n textSecondary: mobileTokens.color.textMuted,\n icon: '#334155',\n rowHighlight: mobileTokens.color.primarySoft,\n} as const;\n\nfunction routeLabel(descriptor: any, route: any): string {\n const optLabel = descriptor?.options?.drawerLabel;\n if (typeof optLabel === 'string' && optLabel.trim()) return optLabel;\n const title = descriptor?.options?.title;\n if (typeof title === 'string' && title.trim()) return title;\n const tail =\n String(route?.name ?? '')\n .split('.')\n .pop() || 'Route';\n return tail === 'Chat' ? 'Chat' : tail;\n}\n\nfunction isVisibleDrawerRoute(route: any, descriptor: any): boolean {\n const routeName = String(route?.name ?? '');\n if (routeName.includes('WebBuilder') || routeName.toLowerCase().includes('webbuilder')) {\n return false;\n }\n if (/ChatHistory/i.test(routeName) || /CanvasNative/i.test(routeName) || /(^|\\.)Apps$/i.test(routeName)) {\n return false;\n }\n const itemStyle = descriptor?.options?.drawerItemStyle as any;\n if (itemStyle && itemStyle.display === 'none') return false;\n if (descriptor?.options?.hideInMenu === true) return false;\n return true;\n}\n\nfunction pickFocusedOrgName(state: any, route: any): string | null {\n const candidates = [route?.params?.orgName, state?.routes?.[state?.index]?.params?.orgName];\n for (const raw of candidates) {\n if (typeof raw === 'string' && raw.trim()) return raw.trim();\n }\n const focused = state?.routes?.[state?.index];\n const nestedState = focused?.state;\n if (nestedState?.routes && typeof nestedState.index === 'number') {\n const nested = nestedState.routes[nestedState.index]?.params?.orgName;\n if (typeof nested === 'string' && nested.trim()) return nested.trim();\n }\n return null;\n}\n\nfunction DrawerListRow({\n icon,\n label,\n focused,\n onPress,\n showDivider,\n iconNode,\n}: {\n icon?: React.ComponentProps<typeof Ionicons>['name'];\n label: string;\n focused?: boolean;\n onPress: () => void;\n showDivider?: boolean;\n iconNode?: React.ReactNode;\n}) {\n return (\n <>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ selected: Boolean(focused) }}\n onPress={onPress}\n style={({ pressed }) => [\n styles.listRow,\n focused ? styles.listRowFocused : null,\n pressed && styles.listRowPressed,\n ]}\n >\n {iconNode ?? (\n <Ionicons\n name={icon ?? 'ellipse-outline'}\n size={22}\n color={focused ? PALETTE.text : PALETTE.icon}\n />\n )}\n <Text style={[styles.listLabel, focused && styles.listLabelFocused]}>{label}</Text>\n <Ionicons name=\"chevron-forward\" size={16} color=\"#c4c4c4\" style={styles.navChevron} />\n </Pressable>\n {showDivider ? <View style={styles.rowDivider} /> : null}\n </>\n );\n}\n\nfunction DrawerProfileHeader({ isAuthenticated }: { isAuthenticated: boolean }) {\n const authUser = useSelector<Store.Auth, IUserState>(userSelector);\n const { data: profileData } = useAccountProfileQuery({\n fetchPolicy: 'cache-first',\n errorPolicy: 'all',\n skip: !isAuthenticated,\n });\n\n const photoUrl = useMemo(() => {\n const fromProfile = profileData?.accountProfile?.photos?.find((p) => p?.url)?.url;\n if (fromProfile) return fromProfile;\n return pickAuthPicture(authUser);\n }, [profileData?.accountProfile?.photos, authUser]);\n\n const displayName = useMemo(() => pickPrimaryDisplayName(authUser), [authUser]);\n\n const email = useMemo(() => pickAuthEmail(authUser), [authUser]);\n\n const subtitle = useMemo(() => {\n const u = authUser as IUserState & { profile?: Auth0ProfileClaims; nickname?: string };\n const nick = (u?.profile?.nickname ?? u?.nickname ?? '').trim();\n if (!nick || nick === displayName.trim()) return null;\n return `@${nick.replace(/^@/, '')}`;\n }, [authUser, displayName]);\n\n if (!isAuthenticated) return null;\n\n return (\n <View style={styles.profileCard}>\n <View style={styles.profileCardInner}>\n <View style={styles.avatarOuter}>\n {photoUrl ? (\n <Image source={{ uri: photoUrl }} style={styles.avatarImage} resizeMode=\"cover\" />\n ) : (\n <View style={styles.avatarPlaceholder}>\n <Text style={styles.avatarInitials}>{getInitials(displayName)}</Text>\n </View>\n )}\n </View>\n <View style={styles.profileMeta}>\n <Text style={styles.profileName} numberOfLines={2}>\n {displayName}\n </Text>\n {subtitle ? (\n <Text style={styles.profileUsername} numberOfLines={1}>\n {subtitle}\n </Text>\n ) : null}\n {email ? (\n <Text style={styles.profileEmail} numberOfLines={1}>\n {email}\n </Text>\n ) : null}\n </View>\n </View>\n </View>\n );\n}\n\nexport default function CustomDrawer(props: any) {\n const { state, descriptors, navigation } = props;\n /** Mirrors layout settings from `navigation.js` (`defaultHeaderProps.logout`). */\n const showLogout = props.logout !== false;\n const dispatch = useDispatch();\n const authUser = useSelector<Store.Auth, IUserState>(userSelector);\n const route = useRoute<any>();\n const insets = useSafeAreaInsets();\n const [isLoggingOut, setIsLoggingOut] = useState(false);\n const orgName = useMemo(() => pickFocusedOrgName(state, route), [state, route]);\n const focusedRouteName = String(state?.routes?.[state?.index]?.name ?? '');\n const historyFocused = /ChatHistory/i.test(focusedRouteName);\n const appsFocused = /(^|\\.)Apps$/i.test(focusedRouteName);\n const billingFocused = /(^|\\.)Billing/i.test(focusedRouteName);\n const isAuthenticated = useMemo(() => {\n if (!authUser) return false;\n const email = pickAuthEmail(authUser);\n const name = pickPrimaryDisplayName(authUser);\n return Boolean(email || name !== 'Account');\n }, [authUser]);\n const visibleRoutes = (state?.routes ?? []).filter((r: any) => isVisibleDrawerRoute(r, descriptors?.[r.key]));\n\n const scrollContentStyle = useMemo(\n () => [\n styles.contentWrap,\n {\n // Drawer scroll views often don't reserve status-bar space reliably — combine inset + breathing room.\n paddingTop: Math.max(insets.top, 14) + 10,\n },\n ],\n [insets.top],\n );\n\n const handleLogout = useCallback(async () => {\n if (isLoggingOut) return;\n setIsLoggingOut(true);\n try {\n await Promise.resolve(dispatch(logoutAndRedirect() as any));\n navigation?.closeDrawer?.();\n } catch (error) {\n console.error('[CustomDrawer] Logout failed:', error);\n } finally {\n setIsLoggingOut(false);\n }\n }, [dispatch, isLoggingOut, navigation]);\n\n const handleLogin = useCallback(() => {\n navigation?.closeDrawer?.();\n try {\n navigation?.navigate?.('MainStack.Login');\n } catch {\n navigation?.getParent?.()?.navigate?.('MainStack', { screen: 'MainStack.Login' });\n }\n }, [navigation]);\n\n const handleOpenApps = useCallback(() => {\n if (isLoggingOut) return;\n navigation?.closeDrawer?.();\n navigation?.dispatch?.(\n CommonActions.navigate({\n name: 'MainStack.Apps',\n params: orgName ? { orgName } : undefined,\n }),\n );\n }, [isLoggingOut, navigation, orgName]);\n\n const handleOpenHistory = useCallback(() => {\n if (isLoggingOut) return;\n navigation?.closeDrawer?.();\n navigation?.dispatch?.(\n CommonActions.navigate({\n name: 'MainStack.ChatHistory',\n params: orgName ? { orgName } : undefined,\n }),\n );\n }, [isLoggingOut, navigation, orgName]);\n\n const handleOpenBilling = useCallback(() => {\n if (isLoggingOut) return;\n navigation?.closeDrawer?.();\n navigation?.navigate?.('MainStack.Billing', orgName ? { orgName } : undefined);\n }, [isLoggingOut, navigation, orgName]);\n\n useEffect(() => {\n // Prevent stale \"Logging out...\" state if the user logs back in and returns to the drawer.\n if (authUser) {\n setIsLoggingOut(false);\n }\n }, [authUser]);\n\n return (\n <SafeAreaView style={styles.safeArea} edges={['left', 'bottom']}>\n <View style={styles.drawerColumn}>\n <DrawerContentScrollView {...props} style={styles.scroll} contentContainerStyle={scrollContentStyle}>\n <View style={styles.brandBlock}>\n <View style={styles.brandStrip}>\n <Image source={APP_ICON} style={styles.brandIconSmall} resizeMode=\"contain\" />\n <Text style={styles.brandStripTitle}>Yantra</Text>\n </View>\n </View>\n\n <DrawerProfileHeader isAuthenticated={isAuthenticated} />\n\n {isAuthenticated ? (\n <View style={styles.menuCard}>\n {visibleRoutes.map((r: any) => {\n const descriptor = descriptors?.[r.key];\n const focused = state?.index === state?.routes?.findIndex((x: any) => x.key === r.key);\n const label = routeLabel(descriptor, r);\n const iconFn = descriptor?.options?.drawerIcon;\n const fallbackIcon =\n label.trim().toLowerCase() === 'chat' ? 'chatbubbles-outline' : 'home-outline';\n\n return (\n <DrawerListRow\n key={r.key}\n label={label}\n focused={focused}\n showDivider\n icon={fallbackIcon}\n iconNode={\n typeof iconFn === 'function'\n ? iconFn({\n color: focused ? PALETTE.text : PALETTE.icon,\n size: 22,\n focused,\n })\n : undefined\n }\n onPress={() => {\n if (isLoggingOut) return;\n navigation.navigate(r.name, orgName ? { orgName } : undefined);\n }}\n />\n );\n })}\n <DrawerListRow\n icon=\"apps-outline\"\n label=\"Apps\"\n focused={appsFocused}\n onPress={handleOpenApps}\n showDivider\n />\n <DrawerListRow\n icon=\"time-outline\"\n label=\"History\"\n focused={historyFocused}\n onPress={handleOpenHistory}\n showDivider\n />\n <DrawerListRow\n icon=\"card-outline\"\n label=\"Billing\"\n focused={billingFocused}\n onPress={handleOpenBilling}\n />\n </View>\n ) : null}\n {!isAuthenticated ? (\n <View style={styles.loggedOutStateCard}>\n <View style={styles.loggedOutStateIconWrap}>\n <Ionicons\n name=\"shield-checkmark-outline\"\n size={22}\n color={mobileTokens.color.primary}\n />\n </View>\n <Text style={styles.loggedOutStateTitle}>Sign in to continue</Text>\n <Text style={styles.loggedOutStateSubtitle}>\n Access your chat history, profile, and personalized workspace after login.\n </Text>\n <Pressable\n onPress={handleLogin}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Log in\"\n style={({ pressed }) => [\n styles.loggedOutStateButton,\n pressed && styles.loggedOutStateButtonPressed,\n ]}\n >\n <Ionicons name=\"log-in-outline\" size={18} color={mobileTokens.color.surface} />\n <Text style={styles.loggedOutStateButtonLabel}>Log in</Text>\n </Pressable>\n </View>\n ) : null}\n </DrawerContentScrollView>\n\n {showLogout && isAuthenticated ? (\n <View style={styles.logoutFooter}>\n <Pressable\n onPress={handleLogout}\n disabled={isLoggingOut}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Log out\"\n style={({ pressed }) => [\n styles.logoutButton,\n pressed && !isLoggingOut && styles.logoutButtonPressed,\n ]}\n >\n <View style={styles.logoutIconCircle}>\n {isLoggingOut ? (\n <ActivityIndicator size=\"small\" color=\"#b91c1c\" />\n ) : (\n <Ionicons name=\"log-out-outline\" size={20} color=\"#b91c1c\" />\n )}\n </View>\n <Text style={styles.logoutLabel}>{isLoggingOut ? 'Logging out...' : 'Log out'}</Text>\n </Pressable>\n </View>\n ) : showLogout ? (\n <View style={styles.logoutFooter}>\n <Text style={styles.loggedOutFooterHint}>You are currently signed out</Text>\n </View>\n ) : null}\n </View>\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n safeArea: {\n flex: 1,\n backgroundColor: PALETTE.bg,\n },\n drawerColumn: {\n flex: 1,\n },\n scroll: {\n flex: 1,\n },\n contentWrap: {\n flexGrow: 1,\n paddingBottom: 24,\n paddingHorizontal: 18,\n },\n brandBlock: {\n marginBottom: 16,\n paddingBottom: 14,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: PALETTE.border,\n },\n brandStrip: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n },\n brandIconSmall: {\n width: 36,\n height: 36,\n borderRadius: 10,\n },\n brandStripTitle: {\n color: PALETTE.text,\n fontSize: 22,\n fontWeight: '800',\n letterSpacing: -0.6,\n },\n profileCard: {\n borderRadius: 12,\n overflow: 'hidden',\n marginBottom: 20,\n backgroundColor: PALETTE.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: PALETTE.border,\n },\n profileCardInner: {\n flexDirection: 'row',\n padding: 16,\n gap: 14,\n },\n avatarOuter: {\n width: 56,\n height: 56,\n borderRadius: 28,\n overflow: 'hidden',\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: PALETTE.border,\n backgroundColor: PALETTE.rowHighlight,\n },\n avatarImage: {\n width: '100%',\n height: '100%',\n },\n avatarPlaceholder: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: PALETTE.rowHighlight,\n },\n avatarInitials: {\n fontSize: 20,\n fontWeight: '700',\n color: mobileTokens.color.primary,\n letterSpacing: 0.3,\n },\n profileMeta: {\n flex: 1,\n minWidth: 0,\n justifyContent: 'center',\n },\n profileName: {\n fontSize: 19,\n fontWeight: '600',\n color: PALETTE.text,\n letterSpacing: -0.3,\n lineHeight: 24,\n },\n profileUsername: {\n marginTop: 4,\n fontSize: 14,\n fontWeight: '500',\n color: PALETTE.textSecondary,\n letterSpacing: -0.1,\n },\n profileEmail: {\n marginTop: 6,\n fontSize: 13,\n fontWeight: '400',\n color: PALETTE.textSecondary,\n },\n menuCard: {\n borderRadius: 16,\n overflow: 'hidden',\n backgroundColor: PALETTE.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: PALETTE.border,\n },\n listRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 15,\n paddingHorizontal: 16,\n gap: 14,\n backgroundColor: PALETTE.surface,\n },\n listRowFocused: {\n backgroundColor: PALETTE.rowHighlight,\n },\n listRowPressed: {\n backgroundColor: PALETTE.rowHighlight,\n },\n listLabel: {\n flex: 1,\n fontSize: 16,\n fontWeight: '400',\n color: PALETTE.text,\n },\n listLabelFocused: {\n fontWeight: '600',\n color: mobileTokens.color.primary,\n },\n rowDivider: {\n height: StyleSheet.hairlineWidth,\n backgroundColor: PALETTE.border,\n marginLeft: 52,\n },\n loggedOutStateCard: {\n marginTop: 18,\n borderRadius: 14,\n paddingHorizontal: 16,\n paddingVertical: 18,\n backgroundColor: PALETTE.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: PALETTE.border,\n alignItems: 'center',\n gap: 10,\n },\n loggedOutStateIconWrap: {\n width: 44,\n height: 44,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: mobileTokens.color.primarySoft,\n borderWidth: 1,\n borderColor: mobileTokens.color.primaryBorder,\n },\n loggedOutStateTitle: {\n fontSize: 17,\n fontWeight: '700',\n color: PALETTE.text,\n letterSpacing: -0.2,\n },\n loggedOutStateSubtitle: {\n fontSize: 13,\n lineHeight: 19,\n color: PALETTE.textSecondary,\n textAlign: 'center',\n paddingHorizontal: 4,\n },\n loggedOutStateButton: {\n marginTop: 4,\n borderRadius: 12,\n backgroundColor: mobileTokens.color.primary,\n paddingHorizontal: 16,\n paddingVertical: 10,\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n loggedOutStateButtonPressed: {\n opacity: 0.88,\n },\n loggedOutStateButtonLabel: {\n fontSize: 14,\n fontWeight: '600',\n color: mobileTokens.color.surface,\n },\n navChevron: {\n marginLeft: 'auto',\n },\n logoutFooter: {\n borderTopWidth: StyleSheet.hairlineWidth,\n borderTopColor: PALETTE.border,\n paddingHorizontal: 18,\n paddingTop: 10,\n paddingBottom: 8,\n backgroundColor: PALETTE.surface,\n },\n logoutButton: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n paddingVertical: 12,\n paddingHorizontal: 12,\n borderRadius: 14,\n },\n logoutIconCircle: {\n width: 40,\n height: 40,\n borderRadius: 12,\n backgroundColor: '#fef2f2',\n alignItems: 'center',\n justifyContent: 'center',\n },\n logoutButtonPressed: {\n opacity: 0.75,\n backgroundColor: '#fef2f2',\n },\n logoutLabel: {\n fontSize: 16,\n fontWeight: '600',\n color: '#b91c1c',\n },\n loggedOutFooterHint: {\n fontSize: 12,\n textAlign: 'center',\n color: PALETTE.textSecondary,\n paddingVertical: 8,\n },\n});\n"],"names":["_a","_b","_c","_d"],"mappings":";;;;;;;;;;;;;;;;;;;AAeA,MAAM,QAAA,GAAW,QAAQ,oBAAoB,CAAA;AAG7C,MAAM,OAAU,GAAA;AAAA,EACd,EAAA,EAAI,aAAa,KAAM,CAAA,EAAA;AAAA,EACvB,OAAA,EAAS,aAAa,KAAM,CAAA,OAAA;AAAA,EAC5B,MAAA,EAAQ,aAAa,KAAM,CAAA,MAAA;AAAA,EAC3B,IAAA,EAAM,aAAa,KAAM,CAAA,IAAA;AAAA,EACzB,aAAA,EAAe,aAAa,KAAM,CAAA,SAAA;AAAA,EAClC,IAAM,EAAA,SAAA;AAAA,EACN,YAAA,EAAc,aAAa,KAAM,CAAA;AACnC,CAAA;AACA,SAAS,UAAA,CAAW,YAAiB,KAAoB,EAAA;AA3BzD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA4BE,EAAM,MAAA,QAAA,GAAA,CAAW,EAAY,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,OAAA,KAAZ,IAAqB,GAAA,MAAA,GAAA,EAAA,CAAA,WAAA;AACtC,EAAA,IAAI,OAAO,QAAa,KAAA,QAAA,IAAY,QAAS,CAAA,IAAA,IAAe,OAAA,QAAA;AAC5D,EAAM,MAAA,KAAA,GAAA,CAAQ,EAAY,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,OAAA,KAAZ,IAAqB,GAAA,MAAA,GAAA,EAAA,CAAA,KAAA;AACnC,EAAA,IAAI,OAAO,KAAU,KAAA,QAAA,IAAY,KAAM,CAAA,IAAA,IAAe,OAAA,KAAA;AACtD,EAAM,MAAA,IAAA,GAAO,MAAO,CAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,IAAP,KAAA,IAAA,GAAA,EAAA,GAAe,EAAE,CAAA,CAAE,KAAM,CAAA,GAAG,CAAE,CAAA,GAAA,EAAS,IAAA,OAAA;AAC3D,EAAO,OAAA,IAAA,KAAS,SAAS,MAAS,GAAA,IAAA;AACpC;AACA,SAAS,oBAAA,CAAqB,OAAY,UAA0B,EAAA;AAnCpE,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAoCE,EAAA,MAAM,SAAY,GAAA,MAAA,CAAA,CAAO,EAAO,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,IAAA,KAAP,YAAe,EAAE,CAAA;AAC1C,EAAI,IAAA,SAAA,CAAU,SAAS,YAAY,CAAA,IAAK,UAAU,WAAY,EAAA,CAAE,QAAS,CAAA,YAAY,CAAG,EAAA;AACtF,IAAO,OAAA,KAAA;AAAA;AAET,EAAI,IAAA,cAAA,CAAe,IAAK,CAAA,SAAS,CAAK,IAAA,eAAA,CAAgB,IAAK,CAAA,SAAS,CAAK,IAAA,cAAA,CAAe,IAAK,CAAA,SAAS,CAAG,EAAA;AACvG,IAAO,OAAA,KAAA;AAAA;AAET,EAAM,MAAA,SAAA,GAAA,CAAY,EAAY,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,OAAA,KAAZ,IAAqB,GAAA,MAAA,GAAA,EAAA,CAAA,eAAA;AACvC,EAAA,IAAI,SAAa,IAAA,SAAA,CAAU,OAAY,KAAA,MAAA,EAAe,OAAA,KAAA;AACtD,EAAA,IAAA,CAAA,CAAI,EAAY,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,OAAA,KAAZ,IAAqB,GAAA,MAAA,GAAA,EAAA,CAAA,UAAA,MAAe,MAAa,OAAA,KAAA;AACrD,EAAO,OAAA,IAAA;AACT;AACA,SAAS,kBAAA,CAAmB,OAAY,KAA2B,EAAA;AAhDnE,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAiDE,EAAA,MAAM,UAAa,GAAA,CAAA,CAAC,EAAO,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,MAAA,KAAP,mBAAe,OAAS,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,KAAO,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,KAAA,CAAA,KAAvB,IAA+B,GAAA,MAAA,GAAA,EAAA,CAAA,MAAA,KAA/B,mBAAuC,OAAO,CAAA;AAC1F,EAAA,KAAA,MAAW,OAAO,UAAY,EAAA;AAC5B,IAAI,IAAA,OAAO,QAAQ,QAAY,IAAA,GAAA,CAAI,MAAQ,EAAA,OAAO,IAAI,IAAK,EAAA;AAAA;AAE7D,EAAA,MAAM,OAAU,GAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,KAAO,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,KAAA,CAAA;AACvC,EAAA,MAAM,cAAc,OAAS,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA;AAC7B,EAAA,IAAA,CAAI,WAAa,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAA,MAAA,KAAU,OAAO,WAAA,CAAY,UAAU,QAAU,EAAA;AAChE,IAAM,MAAA,MAAA,GAAA,CAAS,uBAAY,MAAO,CAAA,WAAA,CAAY,KAAK,CAApC,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAuC,WAAvC,IAA+C,GAAA,MAAA,GAAA,EAAA,CAAA,OAAA;AAC9D,IAAI,IAAA,OAAO,WAAW,QAAY,IAAA,MAAA,CAAO,MAAQ,EAAA,OAAO,OAAO,IAAK,EAAA;AAAA;AAEtE,EAAO,OAAA,IAAA;AACT;AACA,SAAS,aAAc,CAAA;AAAA,EACrB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAOG,EAAA;AACD,EAAA,uBACU,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,SAAA,EAAA,EAAU,iBAAkB,EAAA,QAAA,EAAS,kBAAoB,EAAA;AAAA,MAChE,QAAA,EAAU,QAAQ,OAAO;AAAA,KAC3B,EAAG,OAAkB,EAAA,KAAA,EAAO,CAAC;AAAA,MAC3B;AAAA,KACF,KAAM,CAAC,MAAA,CAAO,OAAS,EAAA,OAAA,GAAU,MAAO,CAAA,cAAA,GAAiB,IAAM,EAAA,OAAA,IAAW,MAAO,CAAA,cAAc,CAClF,EAAA,QAAA,EAAA;AAAA,MAAA,QAAA,IAAA,IAAA,GAAA,QAAA,mBAAa,GAAA,CAAA,QAAA,EAAA,EAAS,IAAM,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,iBAAmB,EAAA,IAAA,EAAM,EAAI,EAAA,KAAA,EAAO,OAAU,GAAA,OAAA,CAAQ,IAAO,GAAA,OAAA,CAAQ,IAAM,EAAA,CAAA;AAAA,sBAChH,GAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,CAAC,MAAA,CAAO,WAAW,OAAW,IAAA,MAAA,CAAO,gBAAgB,CAAA,EAAI,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,sBAC5E,GAAA,CAAC,QAAS,EAAA,EAAA,IAAA,EAAK,iBAAkB,EAAA,IAAA,EAAM,IAAI,KAAM,EAAA,SAAA,EAAU,KAAO,EAAA,MAAA,CAAO,UAAY,EAAA;AAAA,KACzF,EAAA,CAAA;AAAA,IACC,8BAAe,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,YAAY,CAAK,GAAA;AAAA,GACxD,EAAA,CAAA;AACR;AACA,SAAS,mBAAoB,CAAA;AAAA,EAC3B;AACF,CAEG,EAAA;AA7FH,EAAA,IAAA,EAAA;AA8FE,EAAM,MAAA,QAAA,GAAW,YAAoC,YAAY,CAAA;AACjE,EAAM,MAAA;AAAA,IACJ,IAAM,EAAA;AAAA,MACJ,sBAAuB,CAAA;AAAA,IACzB,WAAa,EAAA,aAAA;AAAA,IACb,WAAa,EAAA,KAAA;AAAA,IACb,MAAM,CAAC;AAAA,GACR,CAAA;AACD,EAAM,MAAA,QAAA,GAAW,QAAQ,MAAM;AAtGjC,IAAA,IAAAA,GAAA,EAAA,EAAA,EAAA,EAAA;AAuGI,IAAA,MAAM,WAAc,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAAA,GAAA,GAAA,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,cAAb,KAAA,IAAA,GAAA,MAAA,GAAAA,GAA6B,CAAA,MAAA,KAA7B,IAAqC,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAK,CAAK,CAAA,KAAA,CAAA,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAG,SAAlD,IAAwD,GAAA,MAAA,GAAA,EAAA,CAAA,GAAA;AAC5E,IAAA,IAAI,aAAoB,OAAA,WAAA;AACxB,IAAA,OAAO,gBAAgB,QAAQ,CAAA;AAAA,KAC9B,CAAC,CAAA,EAAA,GAAA,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,mBAAb,IAA6B,GAAA,MAAA,GAAA,EAAA,CAAA,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAClD,EAAM,MAAA,WAAA,GAAc,QAAQ,MAAM,sBAAA,CAAuB,QAAQ,CAAG,EAAA,CAAC,QAAQ,CAAC,CAAA;AAC9E,EAAM,MAAA,KAAA,GAAQ,QAAQ,MAAM,aAAA,CAAc,QAAQ,CAAG,EAAA,CAAC,QAAQ,CAAC,CAAA;AAC/D,EAAM,MAAA,QAAA,GAAW,QAAQ,MAAM;AA7GjC,IAAA,IAAAA,GAAA,EAAA,EAAA,EAAA,EAAA;AA8GI,IAAA,MAAM,CAAI,GAAA,QAAA;AAIV,IAAA,MAAM,IAAQ,GAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAAA,GAAA,GAAA,CAAA,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAG,OAAH,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAY,CAAA,QAAA,KAAZ,IAAwB,GAAA,EAAA,GAAA,CAAA,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAG,QAA3B,KAAA,IAAA,GAAA,EAAA,GAAuC,IAAI,IAAK,EAAA;AAC9D,IAAA,IAAI,CAAC,IAAQ,IAAA,IAAA,KAAS,WAAY,CAAA,IAAA,IAAe,OAAA,IAAA;AACjD,IAAA,OAAO,CAAI,CAAA,EAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,GAChC,EAAA,CAAC,QAAU,EAAA,WAAW,CAAC,CAAA;AAC1B,EAAI,IAAA,CAAC,iBAAwB,OAAA,IAAA;AAC7B,EAAO,uBAAA,GAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,aACjB,QAAC,kBAAA,IAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,gBAChB,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,aACf,QAAW,EAAA,QAAA,mBAAA,GAAA,CAAC,SAAM,MAAQ,EAAA;AAAA,MACrC,GAAK,EAAA;AAAA,KACP,EAAG,OAAO,MAAO,CAAA,WAAA,EAAa,YAAW,OAAQ,EAAA,CAAA,uBAAM,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,iBACtD,EAAA,QAAA,kBAAA,GAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,gBAAiB,QAAY,EAAA,WAAA,CAAA,WAAW,CAAE,EAAA,CAAA,EAClE,CACR,EAAA,CAAA;AAAA,oBACC,IAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,WAChB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,WAAa,EAAA,aAAA,EAAe,GAC3C,QACL,EAAA,WAAA,EAAA,CAAA;AAAA,MACC,QAAA,uBAAY,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,eAAiB,EAAA,aAAA,EAAe,CACvD,EAAA,QAAA,EAAA,QAAA,EACL,CAAU,GAAA,IAAA;AAAA,MACb,KAAA,uBAAS,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,YAAc,EAAA,aAAA,EAAe,CACjD,EAAA,QAAA,EAAA,KAAA,EACL,CAAU,GAAA;AAAA,KAClB,EAAA;AAAA,GAAA,EACJ,CACJ,EAAA,CAAA;AACR;AACA,SAAwB,aAAa,KAAY,EAAA;AA9IjD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA+IE,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAM,MAAA,UAAA,GAAa,MAAM,MAAW,KAAA,KAAA;AACpC,EAAA,MAAM,WAAW,WAAY,EAAA;AAC7B,EAAM,MAAA,QAAA,GAAW,YAAoC,YAAY,CAAA;AACjE,EAAA,MAAM,QAAQ,QAAc,EAAA;AAC5B,EAAA,MAAM,SAAS,iBAAkB,EAAA;AACjC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,MAAM,kBAAmB,CAAA,KAAA,EAAO,KAAK,CAAG,EAAA,CAAC,KAAO,EAAA,KAAK,CAAC,CAAA;AAC9E,EAAM,MAAA,gBAAA,GAAmB,MAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,+BAAO,KAAvB,CAAA,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAA+B,IAA/B,KAAA,IAAA,GAAA,EAAA,GAAuC,EAAE,CAAA;AACzE,EAAM,MAAA,cAAA,GAAiB,cAAe,CAAA,IAAA,CAAK,gBAAgB,CAAA;AAC3D,EAAM,MAAA,WAAA,GAAc,cAAe,CAAA,IAAA,CAAK,gBAAgB,CAAA;AACxD,EAAM,MAAA,cAAA,GAAiB,gBAAiB,CAAA,IAAA,CAAK,gBAAgB,CAAA;AAC7D,EAAM,MAAA,eAAA,GAAkB,QAAQ,MAAM;AACpC,IAAI,IAAA,CAAC,UAAiB,OAAA,KAAA;AACtB,IAAM,MAAA,KAAA,GAAQ,cAAc,QAAQ,CAAA;AACpC,IAAM,MAAA,IAAA,GAAO,uBAAuB,QAAQ,CAAA;AAC5C,IAAO,OAAA,OAAA,CAAQ,KAAS,IAAA,IAAA,KAAS,SAAS,CAAA;AAAA,GAC5C,EAAG,CAAC,QAAQ,CAAC,CAAA;AACb,EAAA,MAAM,aAAiB,GAAA,CAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAP,KAAA,IAAA,GAAA,EAAA,GAAiB,EAAI,EAAA,MAAA,CAAO,CAAC,CAAA,KAAW,oBAAqB,CAAA,CAAA,EAAG,WAAc,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAA,CAAA,CAAE,IAAI,CAAC,CAAA;AAC5G,EAAA,MAAM,kBAAqB,GAAA,OAAA,CAAQ,MAAM,CAAC,OAAO,WAAa,EAAA;AAAA;AAAA,IAE5D,YAAY,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,GAAA,EAAK,EAAE,CAAI,GAAA;AAAA,GACxC,CAAA,EAAG,CAAC,MAAA,CAAO,GAAG,CAAC,CAAA;AAChB,EAAM,MAAA,YAAA,GAAe,YAAY,YAAY;AA3K/C,IAAAA,IAAAA,GAAAA;AA4KI,IAAA,IAAI,YAAc,EAAA;AAClB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAI,IAAA;AACF,MAAA,MAAM,OAAQ,CAAA,OAAA,CAAQ,QAAS,CAAA,iBAAA,EAA0B,CAAC,CAAA;AAC1D,MAAA,CAAAA,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,WAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,CAAA;AAAA,aACO,KAAO,EAAA;AACd,MAAQ,OAAA,CAAA,KAAA,CAAM,iCAAiC,KAAK,CAAA;AAAA,KACpD,SAAA;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA;AACvB,GACC,EAAA,CAAC,QAAU,EAAA,YAAA,EAAc,UAAU,CAAC,CAAA;AACvC,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AAvLxC,IAAAA,IAAAA,GAAAA,EAAAC,GAAAC,EAAAA,GAAAA,EAAAC,GAAA,EAAA,EAAA;AAwLI,IAAA,CAAAH,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,WAAZ,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,CAAA;AACA,IAAI,IAAA;AACF,MAAA,CAAAC,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,QAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,IAAuB,CAAA,UAAA,EAAA,iBAAA,CAAA;AAAA,KACjB,CAAA,OAAA,CAAA,EAAA;AACN,MAAAE,CAAAA,EAAAA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,SAAZ,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,CAAA,KAAA,IAAA,GAAA,MAAA,GAAAC,GAA2B,CAAA,QAAA,KAA3B,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,GAAAA,EAAsC,WAAa,EAAA;AAAA,QACjD,MAAQ,EAAA;AAAA,OACV,CAAA;AAAA;AACF,GACF,EAAG,CAAC,UAAU,CAAC,CAAA;AACf,EAAM,MAAA,cAAA,GAAiB,YAAY,MAAM;AAjM3C,IAAA,IAAAH,GAAAC,EAAAA,GAAAA;AAkMI,IAAA,IAAI,YAAc,EAAA;AAClB,IAAA,CAAAD,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,WAAZ,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,CAAA;AACA,IAAA,CAAAC,MAAA,UAAY,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,QAAA,KAAZ,gBAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,EAAuB,cAAc,QAAS,CAAA;AAAA,MAC5C,IAAM,EAAA,gBAAA;AAAA,MACN,QAAQ,OAAU,GAAA;AAAA,QAChB;AAAA,OACE,GAAA;AAAA,KACL,CAAA,CAAA;AAAA,GACA,EAAA,CAAC,YAAc,EAAA,UAAA,EAAY,OAAO,CAAC,CAAA;AACtC,EAAM,MAAA,iBAAA,GAAoB,YAAY,MAAM;AA3M9C,IAAA,IAAAD,GAAAC,EAAAA,GAAAA;AA4MI,IAAA,IAAI,YAAc,EAAA;AAClB,IAAA,CAAAD,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,WAAZ,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,CAAA;AACA,IAAA,CAAAC,MAAA,UAAY,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,QAAA,KAAZ,gBAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,EAAuB,cAAc,QAAS,CAAA;AAAA,MAC5C,IAAM,EAAA,uBAAA;AAAA,MACN,QAAQ,OAAU,GAAA;AAAA,QAChB;AAAA,OACE,GAAA;AAAA,KACL,CAAA,CAAA;AAAA,GACA,EAAA,CAAC,YAAc,EAAA,UAAA,EAAY,OAAO,CAAC,CAAA;AACtC,EAAM,MAAA,iBAAA,GAAoB,YAAY,MAAM;AArN9C,IAAA,IAAAD,GAAAC,EAAAA,GAAAA;AAsNI,IAAA,IAAI,YAAc,EAAA;AAClB,IAAA,CAAAD,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,WAAZ,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,CAAA;AACA,IAAA,CAAAC,MAAA,UAAY,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,QAAA,KAAZ,gBAAAA,GAAA,CAAA,IAAA,CAAA,UAAA,EAAuB,qBAAqB,OAAU,GAAA;AAAA,MACpD;AAAA,KACE,GAAA,MAAA,CAAA;AAAA,GACH,EAAA,CAAC,YAAc,EAAA,UAAA,EAAY,OAAO,CAAC,CAAA;AACtC,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA;AACvB,GACF,EAAG,CAAC,QAAQ,CAAC,CAAA;AACb,EAAA,uBAAQ,GAAA,CAAA,YAAA,EAAA,EAAa,KAAO,EAAA,MAAA,CAAO,UAAU,KAAO,EAAA,CAAC,MAAQ,EAAA,QAAQ,CAC3D,EAAA,QAAA,kBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,YAChB,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,0DAA4B,KAA5B,CAAA,EAAA,EAAmC,OAAO,MAAO,CAAA,MAAA,EAAQ,uBAAuB,kBAC7E,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,IAAA,EAAA,EAAK,OAAO,MAAO,CAAA,UAAA,EAChB,+BAAC,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,UAChB,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAM,MAAQ,EAAA,QAAA,EAAU,OAAO,MAAO,CAAA,cAAA,EAAgB,YAAW,SAAU,EAAA,CAAA;AAAA,wBAC3E,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,iBAAiB,QAAM,EAAA,QAAA,EAAA;AAAA,OAAA,EAC/C,CACJ,EAAA,CAAA;AAAA,sBAEA,GAAA,CAAC,uBAAoB,eAAkC,EAAA,CAAA;AAAA,MAEtD,eAAkB,mBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,QAC9B,EAAA,QAAA,EAAA;AAAA,QAAc,aAAA,CAAA,GAAA,CAAI,CAAC,CAAW,KAAA;AA/O3D,UAAA,IAAAD,GAAAC,EAAAA,GAAAA;AAgPY,UAAM,MAAA,UAAA,GAAa,2CAAc,CAAE,CAAA,GAAA,CAAA;AACnC,UAAA,MAAM,OAAU,GAAA,CAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,KAAUD,OAAAA,CAAAA,GAAAA,GAAA,KAAO,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,MAAA,KAAP,IAAAA,GAAAA,MAAAA,GAAAA,GAAAA,CAAe,SAAU,CAAA,CAAC,CAAW,KAAA,CAAA,CAAE,QAAQ,CAAE,CAAA,GAAA,CAAA,CAAA;AAClF,UAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,UAAA,EAAY,CAAC,CAAA;AACtC,UAAA,MAAM,MAASC,GAAAA,CAAAA,GAAAA,GAAA,UAAY,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,OAAA,KAAZ,gBAAAA,GAAqB,CAAA,UAAA;AACpC,UAAA,MAAM,eAAe,KAAM,CAAA,IAAA,GAAO,WAAY,EAAA,KAAM,SAAS,qBAAwB,GAAA,cAAA;AACrF,UAAA,uBAAQ,GAAA,CAAA,aAAA,EAAA,EAA0B,KAAc,EAAA,OAAA,EAAkB,WAAW,EAAA,IAAA,EAAC,IAAM,EAAA,YAAA,EAAc,QAAU,EAAA,OAAO,MAAW,KAAA,UAAA,GAAa,MAAO,CAAA;AAAA,YAChJ,KAAO,EAAA,OAAA,GAAU,OAAQ,CAAA,IAAA,GAAO,OAAQ,CAAA,IAAA;AAAA,YACxC,IAAM,EAAA,EAAA;AAAA,YACN;AAAA,WACD,CAAA,GAAI,MAAW,EAAA,OAAA,EAAS,MAAM;AAC7B,YAAA,IAAI,YAAc,EAAA;AAClB,YAAW,UAAA,CAAA,QAAA,CAAS,CAAE,CAAA,IAAA,EAAM,OAAU,GAAA;AAAA,cACpC;AAAA,gBACE,MAAS,CAAA;AAAA,WACf,EAAA,EAT2B,EAAE,GAS1B,CAAA;AAAA,SACJ,CAAA;AAAA,wBACiB,GAAA,CAAC,aAAc,EAAA,EAAA,IAAA,EAAK,cAAe,EAAA,KAAA,EAAM,MAAO,EAAA,OAAA,EAAS,WAAa,EAAA,OAAA,EAAS,cAAgB,EAAA,WAAA,EAAW,IAAC,EAAA,CAAA;AAAA,wBAC3G,GAAA,CAAC,aAAc,EAAA,EAAA,IAAA,EAAK,cAAe,EAAA,KAAA,EAAM,SAAU,EAAA,OAAA,EAAS,cAAgB,EAAA,OAAA,EAAS,iBAAmB,EAAA,WAAA,EAAW,IAAC,EAAA,CAAA;AAAA,wBACpH,GAAA,CAAC,iBAAc,IAAK,EAAA,cAAA,EAAe,OAAM,SAAU,EAAA,OAAA,EAAS,cAAgB,EAAA,OAAA,EAAS,iBAAmB,EAAA;AAAA,OAAA,EAC5G,CAAU,GAAA,IAAA;AAAA,MACb,CAAC,eAAkB,mBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,kBAChC,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,MAAO,CAAA,sBAAA,EAChB,8BAAC,QAAS,EAAA,EAAA,IAAA,EAAK,0BAA2B,EAAA,IAAA,EAAM,EAAI,EAAA,KAAA,EAAO,YAAa,CAAA,KAAA,CAAM,SAAS,CAC3F,EAAA,CAAA;AAAA,wBACC,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,qBAAqB,QAAmB,EAAA,qBAAA,EAAA,CAAA;AAAA,wBAC3D,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,wBAAwB,QAE5C,EAAA,4EAAA,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,aAAU,OAAS,EAAA,WAAA,EAAa,mBAAkB,QAAS,EAAA,kBAAA,EAAmB,QAAS,EAAA,KAAA,EAAO,CAAC;AAAA,UAChH;AAAA,cACI,CAAC,MAAA,CAAO,sBAAsB,OAAW,IAAA,MAAA,CAAO,2BAA2B,CAC3D,EAAA,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,QAAA,EAAA,EAAS,MAAK,gBAAiB,EAAA,IAAA,EAAM,IAAI,KAAO,EAAA,YAAA,CAAa,MAAM,OAAS,EAAA,CAAA;AAAA,0BAC5E,GAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,2BAA2B,QAAM,EAAA,QAAA,EAAA;AAAA,SACzD,EAAA;AAAA,OAAA,EACJ,CAAU,GAAA;AAAA,KAClB,EAAA,CAAA,CAAA;AAAA,IAEC,cAAc,eAAkB,mBAAA,GAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,cAC7C,QAAC,kBAAA,IAAA,CAAA,SAAA,EAAA,EAAU,OAAS,EAAA,YAAA,EAAc,UAAU,YAAc,EAAA,iBAAA,EAAkB,UAAS,kBAAmB,EAAA,SAAA,EAAU,OAAO,CAAC;AAAA,MACxI;AAAA,KACF,KAAM,CAAC,MAAO,CAAA,YAAA,EAAc,WAAW,CAAC,YAAA,IAAgB,MAAO,CAAA,mBAAmB,CAC9D,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,IAAA,EAAA,EAAK,OAAO,MAAO,CAAA,gBAAA,EACf,yCAAgB,GAAA,CAAA,iBAAA,EAAA,EAAkB,MAAK,OAAQ,EAAA,KAAA,EAAM,WAAU,CAAK,mBAAA,GAAA,CAAC,YAAS,IAAK,EAAA,iBAAA,EAAkB,MAAM,EAAI,EAAA,KAAA,EAAM,WAAU,CACpI,EAAA,CAAA;AAAA,0BACC,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,WAAc,EAAA,QAAA,EAAA,YAAA,GAAe,mBAAmB,SAAU,EAAA;AAAA,KAAA,EAClF,CACJ,EAAA,CAAA,GAAU,UAAa,mBAAA,GAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,YACvC,EAAA,QAAA,kBAAA,GAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,mBAAqB,EAAA,QAAA,EAAA,8BAAA,EAA4B,GACzE,CAAU,GAAA;AAAA,GAAA,EAClB,CACJ,EAAA,CAAA;AACR;AACA,MAAM,MAAA,GAAS,WAAW,MAAO,CAAA;AAAA,EAC/B,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,CAAA;AAAA,IACN,iBAAiB,OAAQ,CAAA;AAAA,GAC3B;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA;AAAA,GACR;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA;AAAA,GACR;AAAA,EACA,WAAa,EAAA;AAAA,IACX,QAAU,EAAA,CAAA;AAAA,IACV,aAAe,EAAA,EAAA;AAAA,IACf,iBAAmB,EAAA;AAAA,GACrB;AAAA,EACA,UAAY,EAAA;AAAA,IACV,YAAc,EAAA,EAAA;AAAA,IACd,aAAe,EAAA,EAAA;AAAA,IACf,mBAAmB,UAAW,CAAA,aAAA;AAAA,IAC9B,mBAAmB,OAAQ,CAAA;AAAA,GAC7B;AAAA,EACA,UAAY,EAAA;AAAA,IACV,aAAe,EAAA,KAAA;AAAA,IACf,UAAY,EAAA,QAAA;AAAA,IACZ,GAAK,EAAA;AAAA,GACP;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,KAAO,EAAA,EAAA;AAAA,IACP,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,OAAO,OAAQ,CAAA,IAAA;AAAA,IACf,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,aAAe,EAAA;AAAA,GACjB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,YAAc,EAAA,EAAA;AAAA,IACd,QAAU,EAAA,QAAA;AAAA,IACV,YAAc,EAAA,EAAA;AAAA,IACd,iBAAiB,OAAQ,CAAA,OAAA;AAAA,IACzB,aAAa,UAAW,CAAA,aAAA;AAAA,IACxB,aAAa,OAAQ,CAAA;AAAA,GACvB;AAAA,EACA,gBAAkB,EAAA;AAAA,IAChB,aAAe,EAAA,KAAA;AAAA,IACf,OAAS,EAAA,EAAA;AAAA,IACT,GAAK,EAAA;AAAA,GACP;AAAA,EACA,WAAa,EAAA;AAAA,IACX,KAAO,EAAA,EAAA;AAAA,IACP,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA,EAAA;AAAA,IACd,QAAU,EAAA,QAAA;AAAA,IACV,aAAa,UAAW,CAAA,aAAA;AAAA,IACxB,aAAa,OAAQ,CAAA,MAAA;AAAA,IACrB,iBAAiB,OAAQ,CAAA;AAAA,GAC3B;AAAA,EACA,WAAa,EAAA;AAAA,IACX,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA;AAAA,GACV;AAAA,EACA,iBAAmB,EAAA;AAAA,IACjB,IAAM,EAAA,CAAA;AAAA,IACN,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA,QAAA;AAAA,IAChB,iBAAiB,OAAQ,CAAA;AAAA,GAC3B;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAM,CAAA,OAAA;AAAA,IAC1B,aAAe,EAAA;AAAA,GACjB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,CAAA;AAAA,IACN,QAAU,EAAA,CAAA;AAAA,IACV,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,OAAO,OAAQ,CAAA,IAAA;AAAA,IACf,aAAe,EAAA,IAAA;AAAA,IACf,UAAY,EAAA;AAAA,GACd;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,SAAW,EAAA,CAAA;AAAA,IACX,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,OAAO,OAAQ,CAAA,aAAA;AAAA,IACf,aAAe,EAAA;AAAA,GACjB;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,SAAW,EAAA,CAAA;AAAA,IACX,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,OAAO,OAAQ,CAAA;AAAA,GACjB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,YAAc,EAAA,EAAA;AAAA,IACd,QAAU,EAAA,QAAA;AAAA,IACV,iBAAiB,OAAQ,CAAA,OAAA;AAAA,IACzB,aAAa,UAAW,CAAA,aAAA;AAAA,IACxB,aAAa,OAAQ,CAAA;AAAA,GACvB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,aAAe,EAAA,KAAA;AAAA,IACf,UAAY,EAAA,QAAA;AAAA,IACZ,eAAiB,EAAA,EAAA;AAAA,IACjB,iBAAmB,EAAA,EAAA;AAAA,IACnB,GAAK,EAAA,EAAA;AAAA,IACL,iBAAiB,OAAQ,CAAA;AAAA,GAC3B;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,iBAAiB,OAAQ,CAAA;AAAA,GAC3B;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,iBAAiB,OAAQ,CAAA;AAAA,GAC3B;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,CAAA;AAAA,IACN,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,OAAO,OAAQ,CAAA;AAAA,GACjB;AAAA,EACA,gBAAkB,EAAA;AAAA,IAChB,UAAY,EAAA,KAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAM,CAAA;AAAA,GAC5B;AAAA,EACA,UAAY,EAAA;AAAA,IACV,QAAQ,UAAW,CAAA,aAAA;AAAA,IACnB,iBAAiB,OAAQ,CAAA,MAAA;AAAA,IACzB,UAAY,EAAA;AAAA,GACd;AAAA,EACA,kBAAoB,EAAA;AAAA,IAClB,SAAW,EAAA,EAAA;AAAA,IACX,YAAc,EAAA,EAAA;AAAA,IACd,iBAAmB,EAAA,EAAA;AAAA,IACnB,eAAiB,EAAA,EAAA;AAAA,IACjB,iBAAiB,OAAQ,CAAA,OAAA;AAAA,IACzB,aAAa,UAAW,CAAA,aAAA;AAAA,IACxB,aAAa,OAAQ,CAAA,MAAA;AAAA,IACrB,UAAY,EAAA,QAAA;AAAA,IACZ,GAAK,EAAA;AAAA,GACP;AAAA,EACA,sBAAwB,EAAA;AAAA,IACtB,KAAO,EAAA,EAAA;AAAA,IACP,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA,EAAA;AAAA,IACd,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA,QAAA;AAAA,IAChB,eAAA,EAAiB,aAAa,KAAM,CAAA,WAAA;AAAA,IACpC,WAAa,EAAA,CAAA;AAAA,IACb,WAAA,EAAa,aAAa,KAAM,CAAA;AAAA,GAClC;AAAA,EACA,mBAAqB,EAAA;AAAA,IACnB,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,OAAO,OAAQ,CAAA,IAAA;AAAA,IACf,aAAe,EAAA;AAAA,GACjB;AAAA,EACA,sBAAwB,EAAA;AAAA,IACtB,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,EAAA;AAAA,IACZ,OAAO,OAAQ,CAAA,aAAA;AAAA,IACf,SAAW,EAAA,QAAA;AAAA,IACX,iBAAmB,EAAA;AAAA,GACrB;AAAA,EACA,oBAAsB,EAAA;AAAA,IACpB,SAAW,EAAA,CAAA;AAAA,IACX,YAAc,EAAA,EAAA;AAAA,IACd,eAAA,EAAiB,aAAa,KAAM,CAAA,OAAA;AAAA,IACpC,iBAAmB,EAAA,EAAA;AAAA,IACnB,eAAiB,EAAA,EAAA;AAAA,IACjB,aAAe,EAAA,KAAA;AAAA,IACf,UAAY,EAAA,QAAA;AAAA,IACZ,GAAK,EAAA;AAAA,GACP;AAAA,EACA,2BAA6B,EAAA;AAAA,IAC3B,OAAS,EAAA;AAAA,GACX;AAAA,EACA,yBAA2B,EAAA;AAAA,IACzB,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAM,CAAA;AAAA,GAC5B;AAAA,EACA,UAAY,EAAA;AAAA,IACV,UAAY,EAAA;AAAA,GACd;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,gBAAgB,UAAW,CAAA,aAAA;AAAA,IAC3B,gBAAgB,OAAQ,CAAA,MAAA;AAAA,IACxB,iBAAmB,EAAA,EAAA;AAAA,IACnB,UAAY,EAAA,EAAA;AAAA,IACZ,aAAe,EAAA,CAAA;AAAA,IACf,iBAAiB,OAAQ,CAAA;AAAA,GAC3B;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,aAAe,EAAA,KAAA;AAAA,IACf,UAAY,EAAA,QAAA;AAAA,IACZ,GAAK,EAAA,EAAA;AAAA,IACL,eAAiB,EAAA,EAAA;AAAA,IACjB,iBAAmB,EAAA,EAAA;AAAA,IACnB,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,gBAAkB,EAAA;AAAA,IAChB,KAAO,EAAA,EAAA;AAAA,IACP,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA,EAAA;AAAA,IACd,eAAiB,EAAA,SAAA;AAAA,IACjB,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,mBAAqB,EAAA;AAAA,IACnB,OAAS,EAAA,IAAA;AAAA,IACT,eAAiB,EAAA;AAAA,GACnB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,KAAO,EAAA;AAAA,GACT;AAAA,EACA,mBAAqB,EAAA;AAAA,IACnB,QAAU,EAAA,EAAA;AAAA,IACV,SAAW,EAAA,QAAA;AAAA,IACX,OAAO,OAAQ,CAAA,aAAA;AAAA,IACf,eAAiB,EAAA;AAAA;AAErB,CAAC,CAAA"}
1
+ {"version":3,"file":"CustomDrawer.js","sources":["../../src/components/CustomDrawer.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ActivityIndicator, Image, Pressable, StyleSheet, View } from 'react-native';\nimport { DrawerContentScrollView } from '@react-navigation/drawer';\nimport { Ionicons } from '@expo/vector-icons';\nimport { Text } from '@admin-layout/gluestack-ui-mobile';\nimport { CommonActions, useRoute } from '@react-navigation/native';\nimport { afterNativeModalClose } from '../utils/drawerNavigation';\nimport { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useDispatch, useSelector } from 'react-redux';\nimport type { IUserState } from '@adminide-stack/core';\nimport { Store, logoutAndRedirect, userSelector } from '@adminide-stack/user-auth0-client';\nimport { useAccountProfileQuery } from 'common/graphql';\nimport { mobileTokens } from '../theme/mobileTokens';\n// Shared with the chat surface so the drawer and a message header can never\n// show two different names for the same account.\nimport {\n getInitials,\n pickAuthEmail,\n pickAuthPicture,\n pickPrimaryDisplayName,\n type Auth0ProfileClaims,\n} from '../utils/authUserDisplay';\n\nconst APP_ICON = require('../assets/icon.png');\n\n/** Standard neutral drawer (iOS/Material-like): lets the logo stay the only strong color accent. */\nconst PALETTE = {\n bg: mobileTokens.color.bg,\n surface: mobileTokens.color.surface,\n border: mobileTokens.color.border,\n text: mobileTokens.color.text,\n textSecondary: mobileTokens.color.textMuted,\n icon: '#334155',\n rowHighlight: mobileTokens.color.primarySoft,\n} as const;\n\nfunction routeLabel(descriptor: any, route: any): string {\n const optLabel = descriptor?.options?.drawerLabel;\n if (typeof optLabel === 'string' && optLabel.trim()) return optLabel;\n const title = descriptor?.options?.title;\n if (typeof title === 'string' && title.trim()) return title;\n const tail =\n String(route?.name ?? '')\n .split('.')\n .pop() || 'Route';\n return tail === 'Chat' ? 'Chat' : tail;\n}\n\nfunction isVisibleDrawerRoute(route: any, descriptor: any): boolean {\n const routeName = String(route?.name ?? '');\n if (routeName.includes('WebBuilder') || routeName.toLowerCase().includes('webbuilder')) {\n return false;\n }\n if (/ChatHistory/i.test(routeName) || /CanvasNative/i.test(routeName) || /(^|\\.)Apps$/i.test(routeName)) {\n return false;\n }\n const itemStyle = descriptor?.options?.drawerItemStyle as any;\n if (itemStyle && itemStyle.display === 'none') return false;\n if (descriptor?.options?.hideInMenu === true) return false;\n return true;\n}\n\nfunction pickFocusedOrgName(state: any, route: any): string | null {\n const candidates = [route?.params?.orgName, state?.routes?.[state?.index]?.params?.orgName];\n for (const raw of candidates) {\n if (typeof raw === 'string' && raw.trim()) return raw.trim();\n }\n const focused = state?.routes?.[state?.index];\n const nestedState = focused?.state;\n if (nestedState?.routes && typeof nestedState.index === 'number') {\n const nested = nestedState.routes[nestedState.index]?.params?.orgName;\n if (typeof nested === 'string' && nested.trim()) return nested.trim();\n }\n return null;\n}\n\nfunction DrawerListRow({\n icon,\n label,\n focused,\n onPress,\n showDivider,\n iconNode,\n}: {\n icon?: React.ComponentProps<typeof Ionicons>['name'];\n label: string;\n focused?: boolean;\n onPress: () => void;\n showDivider?: boolean;\n iconNode?: React.ReactNode;\n}) {\n return (\n <>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ selected: Boolean(focused) }}\n onPress={onPress}\n style={({ pressed }) => [\n styles.listRow,\n focused ? styles.listRowFocused : null,\n pressed && styles.listRowPressed,\n ]}\n >\n {iconNode ?? (\n <Ionicons\n name={icon ?? 'ellipse-outline'}\n size={22}\n color={focused ? PALETTE.text : PALETTE.icon}\n />\n )}\n <Text style={[styles.listLabel, focused && styles.listLabelFocused]}>{label}</Text>\n <Ionicons name=\"chevron-forward\" size={16} color=\"#c4c4c4\" style={styles.navChevron} />\n </Pressable>\n {showDivider ? <View style={styles.rowDivider} /> : null}\n </>\n );\n}\n\nfunction DrawerProfileHeader({ isAuthenticated }: { isAuthenticated: boolean }) {\n const authUser = useSelector<Store.Auth, IUserState>(userSelector);\n const { data: profileData } = useAccountProfileQuery({\n fetchPolicy: 'cache-first',\n errorPolicy: 'all',\n skip: !isAuthenticated,\n });\n\n const photoUrl = useMemo(() => {\n const fromProfile = profileData?.accountProfile?.photos?.find((p) => p?.url)?.url;\n if (fromProfile) return fromProfile;\n return pickAuthPicture(authUser);\n }, [profileData?.accountProfile?.photos, authUser]);\n\n const displayName = useMemo(() => pickPrimaryDisplayName(authUser), [authUser]);\n\n const email = useMemo(() => pickAuthEmail(authUser), [authUser]);\n\n const subtitle = useMemo(() => {\n const u = authUser as IUserState & { profile?: Auth0ProfileClaims; nickname?: string };\n const nick = (u?.profile?.nickname ?? u?.nickname ?? '').trim();\n if (!nick || nick === displayName.trim()) return null;\n return `@${nick.replace(/^@/, '')}`;\n }, [authUser, displayName]);\n\n if (!isAuthenticated) return null;\n\n return (\n <View style={styles.profileCard}>\n <View style={styles.profileCardInner}>\n <View style={styles.avatarOuter}>\n {photoUrl ? (\n <Image source={{ uri: photoUrl }} style={styles.avatarImage} resizeMode=\"cover\" />\n ) : (\n <View style={styles.avatarPlaceholder}>\n <Text style={styles.avatarInitials}>{getInitials(displayName)}</Text>\n </View>\n )}\n </View>\n <View style={styles.profileMeta}>\n <Text style={styles.profileName} numberOfLines={2}>\n {displayName}\n </Text>\n {subtitle ? (\n <Text style={styles.profileUsername} numberOfLines={1}>\n {subtitle}\n </Text>\n ) : null}\n {email ? (\n <Text style={styles.profileEmail} numberOfLines={1}>\n {email}\n </Text>\n ) : null}\n </View>\n </View>\n </View>\n );\n}\n\nexport default function CustomDrawer(props: any) {\n const { state, descriptors, navigation } = props;\n /** Mirrors layout settings from `navigation.js` (`defaultHeaderProps.logout`). */\n const showLogout = props.logout !== false;\n const dispatch = useDispatch();\n const authUser = useSelector<Store.Auth, IUserState>(userSelector);\n const route = useRoute<any>();\n const insets = useSafeAreaInsets();\n const [isLoggingOut, setIsLoggingOut] = useState(false);\n const orgName = useMemo(() => pickFocusedOrgName(state, route), [state, route]);\n const focusedRouteName = String(state?.routes?.[state?.index]?.name ?? '');\n const historyFocused = /ChatHistory/i.test(focusedRouteName);\n const appsFocused = /(^|\\.)Apps$/i.test(focusedRouteName);\n const billingFocused = /(^|\\.)Billing/i.test(focusedRouteName);\n const isAuthenticated = useMemo(() => {\n if (!authUser) return false;\n const email = pickAuthEmail(authUser);\n const name = pickPrimaryDisplayName(authUser);\n return Boolean(email || name !== 'Account');\n }, [authUser]);\n const visibleRoutes = (state?.routes ?? []).filter((r: any) => isVisibleDrawerRoute(r, descriptors?.[r.key]));\n\n const scrollContentStyle = useMemo(\n () => [\n styles.contentWrap,\n {\n // Drawer scroll views often don't reserve status-bar space reliably — combine inset + breathing room.\n paddingTop: Math.max(insets.top, 14) + 10,\n },\n ],\n [insets.top],\n );\n\n const handleLogout = useCallback(async () => {\n if (isLoggingOut) return;\n setIsLoggingOut(true);\n try {\n await Promise.resolve(dispatch(logoutAndRedirect() as any));\n navigation?.closeDrawer?.();\n } catch (error) {\n console.error('[CustomDrawer] Logout failed:', error);\n } finally {\n setIsLoggingOut(false);\n }\n }, [dispatch, isLoggingOut, navigation]);\n\n const handleLogin = useCallback(() => {\n navigation?.closeDrawer?.();\n try {\n navigation?.navigate?.('MainStack.Login');\n } catch {\n navigation?.getParent?.()?.navigate?.('MainStack', { screen: 'MainStack.Login' });\n }\n }, [navigation]);\n\n const handleOpenApps = useCallback(() => {\n if (isLoggingOut) return;\n navigation?.closeDrawer?.();\n afterNativeModalClose(() => {\n navigation?.dispatch?.(\n CommonActions.navigate({\n name: 'MainStack.Apps',\n params: orgName ? { orgName } : undefined,\n }),\n );\n });\n }, [isLoggingOut, navigation, orgName]);\n\n const handleOpenHistory = useCallback(() => {\n if (isLoggingOut) return;\n navigation?.closeDrawer?.();\n afterNativeModalClose(() => {\n navigation?.dispatch?.(\n CommonActions.navigate({\n name: 'MainStack.ChatHistory',\n params: orgName ? { orgName } : undefined,\n }),\n );\n });\n }, [isLoggingOut, navigation, orgName]);\n\n const handleOpenBilling = useCallback(() => {\n if (isLoggingOut) return;\n navigation?.closeDrawer?.();\n afterNativeModalClose(() => {\n navigation?.navigate?.('MainStack.Billing', orgName ? { orgName } : undefined);\n });\n }, [isLoggingOut, navigation, orgName]);\n\n useEffect(() => {\n // Prevent stale \"Logging out...\" state if the user logs back in and returns to the drawer.\n if (authUser) {\n setIsLoggingOut(false);\n }\n }, [authUser]);\n\n return (\n <SafeAreaView style={styles.safeArea} edges={['left', 'bottom']}>\n <View style={styles.drawerColumn}>\n <DrawerContentScrollView {...props} style={styles.scroll} contentContainerStyle={scrollContentStyle}>\n <View style={styles.brandBlock}>\n <View style={styles.brandStrip}>\n <Image source={APP_ICON} style={styles.brandIconSmall} resizeMode=\"contain\" />\n <Text style={styles.brandStripTitle}>Yantra</Text>\n </View>\n </View>\n\n <DrawerProfileHeader isAuthenticated={isAuthenticated} />\n\n {isAuthenticated ? (\n <View style={styles.menuCard}>\n {visibleRoutes.map((r: any) => {\n const descriptor = descriptors?.[r.key];\n const focused = state?.index === state?.routes?.findIndex((x: any) => x.key === r.key);\n const label = routeLabel(descriptor, r);\n const iconFn = descriptor?.options?.drawerIcon;\n const fallbackIcon =\n label.trim().toLowerCase() === 'chat' ? 'chatbubbles-outline' : 'home-outline';\n\n return (\n <DrawerListRow\n key={r.key}\n label={label}\n focused={focused}\n showDivider\n icon={fallbackIcon}\n iconNode={\n typeof iconFn === 'function'\n ? iconFn({\n color: focused ? PALETTE.text : PALETTE.icon,\n size: 22,\n focused,\n })\n : undefined\n }\n onPress={() => {\n if (isLoggingOut) return;\n navigation.navigate(r.name, orgName ? { orgName } : undefined);\n }}\n />\n );\n })}\n <DrawerListRow\n icon=\"apps-outline\"\n label=\"Apps\"\n focused={appsFocused}\n onPress={handleOpenApps}\n showDivider\n />\n <DrawerListRow\n icon=\"time-outline\"\n label=\"History\"\n focused={historyFocused}\n onPress={handleOpenHistory}\n showDivider\n />\n <DrawerListRow\n icon=\"card-outline\"\n label=\"Billing\"\n focused={billingFocused}\n onPress={handleOpenBilling}\n />\n </View>\n ) : null}\n {!isAuthenticated ? (\n <View style={styles.loggedOutStateCard}>\n <View style={styles.loggedOutStateIconWrap}>\n <Ionicons\n name=\"shield-checkmark-outline\"\n size={22}\n color={mobileTokens.color.primary}\n />\n </View>\n <Text style={styles.loggedOutStateTitle}>Sign in to continue</Text>\n <Text style={styles.loggedOutStateSubtitle}>\n Access your chat history, profile, and personalized workspace after login.\n </Text>\n <Pressable\n onPress={handleLogin}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Log in\"\n style={({ pressed }) => [\n styles.loggedOutStateButton,\n pressed && styles.loggedOutStateButtonPressed,\n ]}\n >\n <Ionicons name=\"log-in-outline\" size={18} color={mobileTokens.color.surface} />\n <Text style={styles.loggedOutStateButtonLabel}>Log in</Text>\n </Pressable>\n </View>\n ) : null}\n </DrawerContentScrollView>\n\n {showLogout && isAuthenticated ? (\n <View style={styles.logoutFooter}>\n <Pressable\n onPress={handleLogout}\n disabled={isLoggingOut}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Log out\"\n style={({ pressed }) => [\n styles.logoutButton,\n pressed && !isLoggingOut && styles.logoutButtonPressed,\n ]}\n >\n <View style={styles.logoutIconCircle}>\n {isLoggingOut ? (\n <ActivityIndicator size=\"small\" color=\"#b91c1c\" />\n ) : (\n <Ionicons name=\"log-out-outline\" size={20} color=\"#b91c1c\" />\n )}\n </View>\n <Text style={styles.logoutLabel}>{isLoggingOut ? 'Logging out...' : 'Log out'}</Text>\n </Pressable>\n </View>\n ) : showLogout ? (\n <View style={styles.logoutFooter}>\n <Text style={styles.loggedOutFooterHint}>You are currently signed out</Text>\n </View>\n ) : null}\n </View>\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n safeArea: {\n flex: 1,\n backgroundColor: PALETTE.bg,\n },\n drawerColumn: {\n flex: 1,\n },\n scroll: {\n flex: 1,\n },\n contentWrap: {\n flexGrow: 1,\n paddingBottom: 24,\n paddingHorizontal: 18,\n },\n brandBlock: {\n marginBottom: 16,\n paddingBottom: 14,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: PALETTE.border,\n },\n brandStrip: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n },\n brandIconSmall: {\n width: 36,\n height: 36,\n borderRadius: 10,\n },\n brandStripTitle: {\n color: PALETTE.text,\n fontSize: 22,\n fontWeight: '800',\n letterSpacing: -0.6,\n },\n profileCard: {\n borderRadius: 12,\n overflow: 'hidden',\n marginBottom: 20,\n backgroundColor: PALETTE.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: PALETTE.border,\n },\n profileCardInner: {\n flexDirection: 'row',\n padding: 16,\n gap: 14,\n },\n avatarOuter: {\n width: 56,\n height: 56,\n borderRadius: 28,\n overflow: 'hidden',\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: PALETTE.border,\n backgroundColor: PALETTE.rowHighlight,\n },\n avatarImage: {\n width: '100%',\n height: '100%',\n },\n avatarPlaceholder: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: PALETTE.rowHighlight,\n },\n avatarInitials: {\n fontSize: 20,\n fontWeight: '700',\n color: mobileTokens.color.primary,\n letterSpacing: 0.3,\n },\n profileMeta: {\n flex: 1,\n minWidth: 0,\n justifyContent: 'center',\n },\n profileName: {\n fontSize: 19,\n fontWeight: '600',\n color: PALETTE.text,\n letterSpacing: -0.3,\n lineHeight: 24,\n },\n profileUsername: {\n marginTop: 4,\n fontSize: 14,\n fontWeight: '500',\n color: PALETTE.textSecondary,\n letterSpacing: -0.1,\n },\n profileEmail: {\n marginTop: 6,\n fontSize: 13,\n fontWeight: '400',\n color: PALETTE.textSecondary,\n },\n menuCard: {\n borderRadius: 16,\n overflow: 'hidden',\n backgroundColor: PALETTE.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: PALETTE.border,\n },\n listRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 15,\n paddingHorizontal: 16,\n gap: 14,\n backgroundColor: PALETTE.surface,\n },\n listRowFocused: {\n backgroundColor: PALETTE.rowHighlight,\n },\n listRowPressed: {\n backgroundColor: PALETTE.rowHighlight,\n },\n listLabel: {\n flex: 1,\n fontSize: 16,\n fontWeight: '400',\n color: PALETTE.text,\n },\n listLabelFocused: {\n fontWeight: '600',\n color: mobileTokens.color.primary,\n },\n rowDivider: {\n height: StyleSheet.hairlineWidth,\n backgroundColor: PALETTE.border,\n marginLeft: 52,\n },\n loggedOutStateCard: {\n marginTop: 18,\n borderRadius: 14,\n paddingHorizontal: 16,\n paddingVertical: 18,\n backgroundColor: PALETTE.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: PALETTE.border,\n alignItems: 'center',\n gap: 10,\n },\n loggedOutStateIconWrap: {\n width: 44,\n height: 44,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: mobileTokens.color.primarySoft,\n borderWidth: 1,\n borderColor: mobileTokens.color.primaryBorder,\n },\n loggedOutStateTitle: {\n fontSize: 17,\n fontWeight: '700',\n color: PALETTE.text,\n letterSpacing: -0.2,\n },\n loggedOutStateSubtitle: {\n fontSize: 13,\n lineHeight: 19,\n color: PALETTE.textSecondary,\n textAlign: 'center',\n paddingHorizontal: 4,\n },\n loggedOutStateButton: {\n marginTop: 4,\n borderRadius: 12,\n backgroundColor: mobileTokens.color.primary,\n paddingHorizontal: 16,\n paddingVertical: 10,\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n loggedOutStateButtonPressed: {\n opacity: 0.88,\n },\n loggedOutStateButtonLabel: {\n fontSize: 14,\n fontWeight: '600',\n color: mobileTokens.color.surface,\n },\n navChevron: {\n marginLeft: 'auto',\n },\n logoutFooter: {\n borderTopWidth: StyleSheet.hairlineWidth,\n borderTopColor: PALETTE.border,\n paddingHorizontal: 18,\n paddingTop: 10,\n paddingBottom: 8,\n backgroundColor: PALETTE.surface,\n },\n logoutButton: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n paddingVertical: 12,\n paddingHorizontal: 12,\n borderRadius: 14,\n },\n logoutIconCircle: {\n width: 40,\n height: 40,\n borderRadius: 12,\n backgroundColor: '#fef2f2',\n alignItems: 'center',\n justifyContent: 'center',\n },\n logoutButtonPressed: {\n opacity: 0.75,\n backgroundColor: '#fef2f2',\n },\n logoutLabel: {\n fontSize: 16,\n fontWeight: '600',\n color: '#b91c1c',\n },\n loggedOutFooterHint: {\n fontSize: 12,\n textAlign: 'center',\n color: PALETTE.textSecondary,\n paddingVertical: 8,\n },\n});\n"],"names":["_a","_b","_c","_d"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useSyncExternalStore,useCallback}from'react';import {View,StyleSheet,Pressable,Text}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {subscribeTemporaryChat,getTemporaryChatActive,setTemporaryChatActive}from'../../features/chat/temporaryChatStore.js';import {mobileTokens}from'../../theme/mobileTokens.js';import {HeaderSheet}from'./HeaderSheet.js';import {useComputerSettings,SettingRow,ComputerSettingsPanel}from'./HeaderSettingsMenu.js';import {HeaderToolbarButton}from'./HeaderToolbarButton.js';function HeaderMoreMenu({
1
+ import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useSyncExternalStore,useCallback}from'react';import {View,StyleSheet,Pressable,Text}from'react-native';import {useFocusEffect}from'@react-navigation/native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {subscribeTemporaryChat,getTemporaryChatActive,setTemporaryChatActive}from'../../features/chat/temporaryChatStore.js';import {mobileTokens}from'../../theme/mobileTokens.js';import {HeaderSheet}from'./HeaderSheet.js';import {useComputerSettings,SettingRow,ComputerSettingsPanel}from'./HeaderSettingsMenu.js';import {HeaderToolbarButton}from'./HeaderToolbarButton.js';import {afterNativeModalClose}from'../../utils/drawerNavigation.js';function HeaderMoreMenu({
2
2
  isDark,
3
3
  onNewChat
4
4
  }) {
@@ -10,17 +10,20 @@ import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useSyncExtern
10
10
  } = useComputerSettings();
11
11
  const foreground = isDark ? "#e2e8f0" : mobileTokens.color.text;
12
12
  const muted = isDark ? "#94a3b8" : mobileTokens.color.textMuted;
13
+ useFocusEffect(useCallback(() => {
14
+ return () => setOpen(false);
15
+ }, []));
13
16
  const onToggleTemporary = useCallback((next) => {
14
17
  setTemporaryChatActive(next);
15
18
  }, []);
16
19
  return /* @__PURE__ */ jsxs(Fragment, { children: [
17
20
  /* @__PURE__ */ jsx(HeaderToolbarButton, { icon: "dots-horizontal", onPress: () => setOpen(true), accessibilityLabel: "More", isDark, active: open || temporary }),
18
- open ? /* @__PURE__ */ jsxs(HeaderSheet, { visible: true, title: "More", subtitle: "Temporary chat and settings", isDark, onClose: () => setOpen(false), children: [
21
+ /* @__PURE__ */ jsxs(HeaderSheet, { visible: open, title: "More", subtitle: "Temporary chat and settings", isDark, onClose: () => setOpen(false), children: [
19
22
  /* @__PURE__ */ jsxs(View, { style: styles.section, children: [
20
23
  /* @__PURE__ */ jsx(SettingRow, { isDark, label: "Temporary", description: "This session will not be saved to history.", value: temporary, onValueChange: onToggleTemporary }),
21
24
  onNewChat ? /* @__PURE__ */ jsxs(Pressable, { onPress: () => {
22
25
  setOpen(false);
23
- onNewChat();
26
+ afterNativeModalClose(onNewChat);
24
27
  }, style: ({
25
28
  pressed
26
29
  }) => [styles.newTask, pressed && styles.pressed], children: [
@@ -34,7 +37,7 @@ import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useSyncExtern
34
37
  }], children: "Settings" })
35
38
  ] }),
36
39
  /* @__PURE__ */ jsx(ComputerSettingsPanel, { isDark, settings, onChange: patchSettings })
37
- ] }) : null
40
+ ] })
38
41
  ] });
39
42
  }
40
43
  const styles = StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderMoreMenu.js","sources":["../../../src/components/NavigationHeader/HeaderMoreMenu.tsx"],"sourcesContent":["/**\n * Overflow menu for ChatTopBar system controls (Temporary + Settings).\n * Keeps the header row to History / Apps / Yantra / Tasks / Skills + More.\n */\nimport React, { useCallback, useState, useSyncExternalStore } from 'react';\nimport { Pressable, StyleSheet, Text, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport {\n getTemporaryChatActive,\n subscribeTemporaryChat,\n setTemporaryChatActive,\n} from '../../features/chat/temporaryChatStore';\nimport { mobileTokens } from '../../theme/mobileTokens';\nimport { HeaderSheet } from './HeaderSheet';\nimport { ComputerSettingsPanel, SettingRow, useComputerSettings } from './HeaderSettingsMenu';\nimport { HeaderToolbarButton } from './HeaderToolbarButton';\n\ntype Props = {\n isDark: boolean;\n onNewChat?: () => void;\n};\n\nexport function HeaderMoreMenu({ isDark, onNewChat }: Props) {\n const [open, setOpen] = useState(false);\n const temporary = useSyncExternalStore(subscribeTemporaryChat, getTemporaryChatActive, getTemporaryChatActive);\n const { settings, patchSettings } = useComputerSettings();\n const foreground = isDark ? '#e2e8f0' : mobileTokens.color.text;\n const muted = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n\n const onToggleTemporary = useCallback((next: boolean) => {\n setTemporaryChatActive(next);\n }, []);\n\n return (\n <>\n <HeaderToolbarButton\n icon=\"dots-horizontal\"\n onPress={() => setOpen(true)}\n accessibilityLabel=\"More\"\n isDark={isDark}\n active={open || temporary}\n />\n {open ? (\n <HeaderSheet\n visible\n title=\"More\"\n subtitle=\"Temporary chat and settings\"\n isDark={isDark}\n onClose={() => setOpen(false)}\n >\n <View style={styles.section}>\n <SettingRow\n isDark={isDark}\n label=\"Temporary\"\n description=\"This session will not be saved to history.\"\n value={temporary}\n onValueChange={onToggleTemporary}\n />\n {onNewChat ? (\n <Pressable\n onPress={() => {\n setOpen(false);\n onNewChat();\n }}\n style={({ pressed }) => [styles.newTask, pressed && styles.pressed]}\n >\n <MaterialCommunityIcons name=\"chat-plus-outline\" size={18} color={foreground} />\n <Text style={[styles.newTaskLabel, { color: foreground }]}>Start new task</Text>\n </Pressable>\n ) : null}\n <Text style={[styles.sectionLabel, { color: muted }]}>Settings</Text>\n </View>\n <ComputerSettingsPanel isDark={isDark} settings={settings} onChange={patchSettings} />\n </HeaderSheet>\n ) : null}\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n section: {\n paddingHorizontal: 16,\n },\n sectionLabel: {\n fontSize: 11,\n fontWeight: '700',\n letterSpacing: 0.7,\n textTransform: 'uppercase',\n paddingTop: 16,\n paddingBottom: 4,\n },\n newTask: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n paddingVertical: 12,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: 'rgba(148,163,184,0.18)',\n },\n newTaskLabel: {\n fontSize: 14,\n fontWeight: '600',\n },\n pressed: {\n opacity: 0.7,\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HeaderMoreMenu.js","sources":["../../../src/components/NavigationHeader/HeaderMoreMenu.tsx"],"sourcesContent":["/**\n * Overflow menu for ChatTopBar system controls (Temporary + Settings).\n * Keeps the header row to History / Apps / Yantra / Tasks / Skills + More.\n */\nimport React, { useCallback, useState, useSyncExternalStore } from 'react';\nimport { Pressable, StyleSheet, Text, View } from 'react-native';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport {\n getTemporaryChatActive,\n subscribeTemporaryChat,\n setTemporaryChatActive,\n} from '../../features/chat/temporaryChatStore';\nimport { mobileTokens } from '../../theme/mobileTokens';\nimport { HeaderSheet } from './HeaderSheet';\nimport { ComputerSettingsPanel, SettingRow, useComputerSettings } from './HeaderSettingsMenu';\nimport { HeaderToolbarButton } from './HeaderToolbarButton';\nimport { afterNativeModalClose } from '../../utils/drawerNavigation';\n\ntype Props = {\n isDark: boolean;\n onNewChat?: () => void;\n};\n\nexport function HeaderMoreMenu({ isDark, onNewChat }: Props) {\n const [open, setOpen] = useState(false);\n const temporary = useSyncExternalStore(subscribeTemporaryChat, getTemporaryChatActive, getTemporaryChatActive);\n const { settings, patchSettings } = useComputerSettings();\n const foreground = isDark ? '#e2e8f0' : mobileTokens.color.text;\n const muted = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n\n useFocusEffect(\n useCallback(() => {\n return () => setOpen(false);\n }, []),\n );\n\n const onToggleTemporary = useCallback((next: boolean) => {\n setTemporaryChatActive(next);\n }, []);\n\n return (\n <>\n <HeaderToolbarButton\n icon=\"dots-horizontal\"\n onPress={() => setOpen(true)}\n accessibilityLabel=\"More\"\n isDark={isDark}\n active={open || temporary}\n />\n <HeaderSheet\n visible={open}\n title=\"More\"\n subtitle=\"Temporary chat and settings\"\n isDark={isDark}\n onClose={() => setOpen(false)}\n >\n <View style={styles.section}>\n <SettingRow\n isDark={isDark}\n label=\"Temporary\"\n description=\"This session will not be saved to history.\"\n value={temporary}\n onValueChange={onToggleTemporary}\n />\n {onNewChat ? (\n <Pressable\n onPress={() => {\n setOpen(false);\n afterNativeModalClose(onNewChat);\n }}\n style={({ pressed }) => [styles.newTask, pressed && styles.pressed]}\n >\n <MaterialCommunityIcons name=\"chat-plus-outline\" size={18} color={foreground} />\n <Text style={[styles.newTaskLabel, { color: foreground }]}>Start new task</Text>\n </Pressable>\n ) : null}\n <Text style={[styles.sectionLabel, { color: muted }]}>Settings</Text>\n </View>\n <ComputerSettingsPanel isDark={isDark} settings={settings} onChange={patchSettings} />\n </HeaderSheet>\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n section: {\n paddingHorizontal: 16,\n },\n sectionLabel: {\n fontSize: 11,\n fontWeight: '700',\n letterSpacing: 0.7,\n textTransform: 'uppercase',\n paddingTop: 16,\n paddingBottom: 4,\n },\n newTask: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n paddingVertical: 12,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: 'rgba(148,163,184,0.18)',\n },\n newTaskLabel: {\n fontSize: 14,\n fontWeight: '600',\n },\n pressed: {\n opacity: 0.7,\n },\n});\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useCallback}from'react';import {useCdecliConnection}from'../../contexts/CdecliConnectionContext.js';import {useGatewayContext,parseActiveSkills}from'../../contexts/GatewayContext.js';import {SkillTemplatePicker}from'../../features/skills/SkillTemplatePicker.js';import {agentSessionManager}from'../../services/agentSessionManager.js';import {HeaderToolbarButton}from'./HeaderToolbarButton.js';function HeaderSkillsButton({
1
+ import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useCallback}from'react';import {useFocusEffect}from'@react-navigation/native';import {useCdecliConnection}from'../../contexts/CdecliConnectionContext.js';import {useGatewayContext,parseActiveSkills}from'../../contexts/GatewayContext.js';import {SkillTemplatePicker}from'../../features/skills/SkillTemplatePicker.js';import {agentSessionManager}from'../../services/agentSessionManager.js';import {HeaderToolbarButton}from'./HeaderToolbarButton.js';function HeaderSkillsButton({
2
2
  isDark
3
3
  }) {
4
4
  const {
@@ -10,6 +10,9 @@ import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useCallback}f
10
10
  const [open, setOpen] = useState(false);
11
11
  const count = parseActiveSkills(activeSkill).length;
12
12
  const cdecliSelected = (selectedGateway == null ? void 0 : selectedGateway.channelType) === "cdecli-serve";
13
+ useFocusEffect(useCallback(() => {
14
+ return () => setOpen(false);
15
+ }, []));
13
16
  const applyTemplate = useCallback((template) => {
14
17
  var _a;
15
18
  const skill = ((_a = template.requiredSkills) == null ? void 0 : _a.join(",")) || template.name;
@@ -46,6 +49,6 @@ import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useCallback}f
46
49
  }, [cdecli, cdecliSelected, setActiveSkill]);
47
50
  return /* @__PURE__ */ jsxs(Fragment, { children: [
48
51
  /* @__PURE__ */ jsx(HeaderToolbarButton, { icon: "puzzle-outline", label: "Skills", badge: count, active: open || count > 0, onPress: () => setOpen(true), accessibilityLabel: "Skill templates", isDark, iconColor: count > 0 ? "#7c3aed" : void 0 }),
49
- open ? /* @__PURE__ */ jsx(SkillTemplatePicker, { open: true, isDark, onClose: () => setOpen(false), onSelectTemplate: applyTemplate, onSelectSkills: applySkills }) : null
52
+ /* @__PURE__ */ jsx(SkillTemplatePicker, { open, isDark, onClose: () => setOpen(false), onSelectTemplate: applyTemplate, onSelectSkills: applySkills })
50
53
  ] });
51
54
  }export{HeaderSkillsButton};//# sourceMappingURL=HeaderSkillsButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderSkillsButton.js","sources":["../../../src/components/NavigationHeader/HeaderSkillsButton.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { useCdecliConnection } from '../../contexts/CdecliConnectionContext';\nimport { parseActiveSkills, useGatewayContext } from '../../contexts/GatewayContext';\nimport { SkillTemplatePicker } from '../../features/skills/SkillTemplatePicker';\nimport type { GatewaySkillEntry } from '../../features/skills/useGatewaySkills';\nimport type { SkillTemplate } from '../../features/skills/skillTemplates';\nimport { agentSessionManager } from '../../services/agentSessionManager';\nimport { HeaderToolbarButton } from './HeaderToolbarButton';\n\ntype Props = {\n isDark: boolean;\n};\n\nexport function HeaderSkillsButton({ isDark }: Props) {\n const { activeSkill, setActiveSkill, selectedGateway } = useGatewayContext();\n const cdecli = useCdecliConnection();\n const [open, setOpen] = useState(false);\n const count = parseActiveSkills(activeSkill).length;\n const cdecliSelected = selectedGateway?.channelType === 'cdecli-serve';\n\n const applyTemplate = useCallback(\n (template: SkillTemplate) => {\n const skill = template.requiredSkills?.join(',') || template.name;\n setActiveSkill(skill || null);\n if (cdecliSelected && skill) {\n void cdecli.connectWithSkill(skill, template.model, template.soul || undefined);\n agentSessionManager.createTask({\n title: template.name,\n skillTemplate: template.id,\n skillTemplateName: template.name,\n model: template.model,\n });\n } else if (!cdecliSelected) {\n agentSessionManager.createTask({\n title: template.name,\n skillTemplate: template.id,\n skillTemplateName: template.name,\n model: template.model,\n });\n }\n },\n [cdecli, cdecliSelected, setActiveSkill],\n );\n\n const applySkills = useCallback(\n (skills: GatewaySkillEntry[]) => {\n const keys = skills.map((s) => s.skillKey).filter(Boolean);\n if (!keys.length) return;\n const csv = keys.join(',');\n setActiveSkill(csv);\n if (cdecliSelected) {\n void cdecli.connectWithSkill(csv);\n return;\n }\n for (const key of keys) {\n void agentSessionManager.toggleSkill(key, true);\n }\n },\n [cdecli, cdecliSelected, setActiveSkill],\n );\n\n return (\n <>\n <HeaderToolbarButton\n icon=\"puzzle-outline\"\n label=\"Skills\"\n badge={count}\n active={open || count > 0}\n onPress={() => setOpen(true)}\n accessibilityLabel=\"Skill templates\"\n isDark={isDark}\n iconColor={count > 0 ? '#7c3aed' : undefined}\n />\n {open ? (\n <SkillTemplatePicker\n open\n isDark={isDark}\n onClose={() => setOpen(false)}\n onSelectTemplate={applyTemplate}\n onSelectSkills={applySkills}\n />\n ) : null}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HeaderSkillsButton.js","sources":["../../../src/components/NavigationHeader/HeaderSkillsButton.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { useCdecliConnection } from '../../contexts/CdecliConnectionContext';\nimport { parseActiveSkills, useGatewayContext } from '../../contexts/GatewayContext';\nimport { SkillTemplatePicker } from '../../features/skills/SkillTemplatePicker';\nimport type { GatewaySkillEntry } from '../../features/skills/useGatewaySkills';\nimport type { SkillTemplate } from '../../features/skills/skillTemplates';\nimport { agentSessionManager } from '../../services/agentSessionManager';\nimport { HeaderToolbarButton } from './HeaderToolbarButton';\n\ntype Props = {\n isDark: boolean;\n};\n\nexport function HeaderSkillsButton({ isDark }: Props) {\n const { activeSkill, setActiveSkill, selectedGateway } = useGatewayContext();\n const cdecli = useCdecliConnection();\n const [open, setOpen] = useState(false);\n const count = parseActiveSkills(activeSkill).length;\n const cdecliSelected = selectedGateway?.channelType === 'cdecli-serve';\n\n useFocusEffect(\n useCallback(() => {\n return () => setOpen(false);\n }, []),\n );\n\n const applyTemplate = useCallback(\n (template: SkillTemplate) => {\n const skill = template.requiredSkills?.join(',') || template.name;\n setActiveSkill(skill || null);\n if (cdecliSelected && skill) {\n void cdecli.connectWithSkill(skill, template.model, template.soul || undefined);\n agentSessionManager.createTask({\n title: template.name,\n skillTemplate: template.id,\n skillTemplateName: template.name,\n model: template.model,\n });\n } else if (!cdecliSelected) {\n agentSessionManager.createTask({\n title: template.name,\n skillTemplate: template.id,\n skillTemplateName: template.name,\n model: template.model,\n });\n }\n },\n [cdecli, cdecliSelected, setActiveSkill],\n );\n\n const applySkills = useCallback(\n (skills: GatewaySkillEntry[]) => {\n const keys = skills.map((s) => s.skillKey).filter(Boolean);\n if (!keys.length) return;\n const csv = keys.join(',');\n setActiveSkill(csv);\n if (cdecliSelected) {\n void cdecli.connectWithSkill(csv);\n return;\n }\n for (const key of keys) {\n void agentSessionManager.toggleSkill(key, true);\n }\n },\n [cdecli, cdecliSelected, setActiveSkill],\n );\n\n return (\n <>\n <HeaderToolbarButton\n icon=\"puzzle-outline\"\n label=\"Skills\"\n badge={count}\n active={open || count > 0}\n onPress={() => setOpen(true)}\n accessibilityLabel=\"Skill templates\"\n isDark={isDark}\n iconColor={count > 0 ? '#7c3aed' : undefined}\n />\n <SkillTemplatePicker\n open={open}\n isDark={isDark}\n onClose={() => setOpen(false)}\n onSelectTemplate={applyTemplate}\n onSelectSkills={applySkills}\n />\n </>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useCallback}from'react';import {ScrollView,StyleSheet,Text,View,Pressable,ActivityIndicator}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {MAX_CONCURRENT_TASKS}from'../../config/constants.js';import {useCdecliConnection}from'../../contexts/CdecliConnectionContext.js';import {useGatewayContext}from'../../contexts/GatewayContext.js';import {useAgentSessionState}from'../../hooks/useAgentSessionState.js';import {agentSessionManager}from'../../services/agentSessionManager.js';import {mobileTokens}from'../../theme/mobileTokens.js';import {HeaderSheet}from'./HeaderSheet.js';import {HeaderToolbarButton}from'./HeaderToolbarButton.js';const STATUS_LABEL = {
1
+ import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useCallback}from'react';import {ScrollView,StyleSheet,Text,View,Pressable,ActivityIndicator}from'react-native';import {useFocusEffect}from'@react-navigation/native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {MAX_CONCURRENT_TASKS}from'../../config/constants.js';import {useCdecliConnection}from'../../contexts/CdecliConnectionContext.js';import {useGatewayContext}from'../../contexts/GatewayContext.js';import {useAgentSessionState}from'../../hooks/useAgentSessionState.js';import {agentSessionManager}from'../../services/agentSessionManager.js';import {mobileTokens}from'../../theme/mobileTokens.js';import {HeaderSheet}from'./HeaderSheet.js';import {HeaderToolbarButton}from'./HeaderToolbarButton.js';const STATUS_LABEL = {
2
2
  idle: "Idle",
3
3
  connecting: "Connecting",
4
4
  running: "Running",
@@ -90,6 +90,9 @@ function HeaderTasksButton({
90
90
  }) {
91
91
  const session = useAgentSessionState();
92
92
  const [open, setOpen] = useState(false);
93
+ useFocusEffect(useCallback(() => {
94
+ return () => setOpen(false);
95
+ }, []));
93
96
  return /* @__PURE__ */ jsxs(Fragment, { children: [
94
97
  /* @__PURE__ */ jsx(HeaderToolbarButton, { icon: "pulse", label: "Tasks", badge: session.tasks.length, active: open, onPress: () => setOpen(true), accessibilityLabel: "Tasks", isDark }),
95
98
  open ? /* @__PURE__ */ jsx(TasksSheet, { isDark, onClose: () => setOpen(false) }) : null
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderTasksButton.js","sources":["../../../src/components/NavigationHeader/HeaderTasksButton.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { ActivityIndicator, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { MAX_CONCURRENT_TASKS } from '../../config/constants';\nimport { useCdecliConnection } from '../../contexts/CdecliConnectionContext';\nimport { useGatewayContext } from '../../contexts/GatewayContext';\nimport { useAgentSessionState } from '../../hooks/useAgentSessionState';\nimport { agentSessionManager, type AgentTask, type TaskStatus } from '../../services/agentSessionManager';\nimport { mobileTokens } from '../../theme/mobileTokens';\nimport { HeaderSheet } from './HeaderSheet';\nimport { HeaderToolbarButton } from './HeaderToolbarButton';\n\ntype Props = {\n isDark: boolean;\n};\n\nconst STATUS_LABEL: Record<TaskStatus, string> = {\n idle: 'Idle',\n connecting: 'Connecting',\n running: 'Running',\n completed: 'Completed',\n failed: 'Failed',\n aborted: 'Aborted',\n};\n\nfunction StatusGlyph({ status, isDark }: { status: TaskStatus; isDark: boolean }) {\n if (status === 'running' || status === 'connecting') {\n return <ActivityIndicator size={14} color={isDark ? '#60a5fa' : '#2563eb'} />;\n }\n const name =\n status === 'completed'\n ? 'check-circle-outline'\n : status === 'failed'\n ? 'alert-circle-outline'\n : status === 'aborted'\n ? 'close-circle-outline'\n : 'circle-outline';\n const color =\n status === 'completed'\n ? isDark\n ? '#4ade80'\n : '#16a34a'\n : status === 'failed'\n ? isDark\n ? '#f87171'\n : '#dc2626'\n : status === 'aborted'\n ? isDark\n ? '#fb923c'\n : '#ea580c'\n : isDark\n ? '#94a3b8'\n : mobileTokens.color.textMuted;\n return <MaterialCommunityIcons name={name} size={16} color={color} />;\n}\n\nfunction TaskRow({\n task,\n isActive,\n isDark,\n onSelect,\n onRemove,\n}: {\n task: AgentTask;\n isActive: boolean;\n isDark: boolean;\n onSelect: () => void;\n onRemove: () => void;\n}) {\n const foreground = isDark ? '#e2e8f0' : mobileTokens.color.text;\n const muted = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n const last = task.messages[task.messages.length - 1];\n const preview = last\n ? last.content.length > 60\n ? `${last.content.slice(0, 60)}…`\n : last.content\n : 'No messages yet';\n const skillLabel = task.skillTemplateName || task.skillTemplate;\n\n return (\n <Pressable\n onPress={onSelect}\n style={({ pressed }) => [\n styles.row,\n isActive && styles.rowActive,\n isDark && isActive && styles.rowActiveDark,\n pressed && styles.pressed,\n ]}\n >\n <StatusGlyph status={task.status} isDark={isDark} />\n <View style={styles.rowBody}>\n <View style={styles.titleRow}>\n <Text style={[styles.rowTitle, { color: foreground }]} numberOfLines={1}>\n {task.title}\n </Text>\n {skillLabel ? (\n <View style={[styles.skillChip, isDark && styles.skillChipDark]}>\n <Text style={[styles.skillChipText, { color: muted }]} numberOfLines={1}>\n {skillLabel}\n </Text>\n </View>\n ) : null}\n </View>\n <Text style={[styles.rowMeta, { color: muted }]} numberOfLines={1}>\n {STATUS_LABEL[task.status]} · {preview}\n </Text>\n </View>\n <Pressable onPress={onRemove} hitSlop={8} accessibilityLabel=\"Remove task\">\n <MaterialCommunityIcons name=\"trash-can-outline\" size={16} color={muted} />\n </Pressable>\n </Pressable>\n );\n}\n\nfunction TasksSheet({ isDark, onClose }: { isDark: boolean; onClose: () => void }) {\n const session = useAgentSessionState();\n const { selectedGateway } = useGatewayContext();\n const cdecli = useCdecliConnection();\n const muted = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n const cdecliSelected = selectedGateway?.channelType === 'cdecli-serve';\n const connected = cdecliSelected ? cdecli.channelConnected : session.gatewayConnected;\n const canCreate = session.tasks.length < MAX_CONCURRENT_TASKS && (cdecliSelected || session.gatewayConnected);\n\n const handleNew = useCallback(() => {\n if (!canCreate) return;\n agentSessionManager.createTask({ title: 'General Assistant' });\n }, [canCreate]);\n\n return (\n <HeaderSheet\n visible\n title=\"Tasks\"\n subtitle={`${session.tasks.length} of ${MAX_CONCURRENT_TASKS} slots`}\n isDark={isDark}\n onClose={onClose}\n headerRight={\n <View style={styles.headerRight}>\n <View style={[styles.gwDot, { backgroundColor: connected ? '#22c55e' : '#94a3b8' }]} />\n <Pressable\n onPress={handleNew}\n disabled={!canCreate}\n accessibilityLabel=\"Start new task\"\n style={({ pressed }) => [\n styles.newBtn,\n pressed && styles.pressed,\n !canCreate && styles.disabled,\n ]}\n >\n <MaterialCommunityIcons name=\"plus\" size={16} color={mobileTokens.color.primary} />\n </Pressable>\n </View>\n }\n >\n <ScrollView style={{ flex: 1 }} contentContainerStyle={styles.list} keyboardShouldPersistTaps=\"handled\">\n {session.tasks.length === 0 ? (\n <Text style={[styles.empty, { color: muted }]}>\n {connected ? 'No tasks yet. Create one to get started.' : 'Connect Yantra to create tasks.'}\n </Text>\n ) : (\n session.tasks.map((task) => (\n <TaskRow\n key={task.id}\n task={task}\n isActive={session.activeTaskId === task.id}\n isDark={isDark}\n onSelect={() => agentSessionManager.setActiveTask(task.id)}\n onRemove={() => agentSessionManager.removeTask(task.id)}\n />\n ))\n )}\n </ScrollView>\n </HeaderSheet>\n );\n}\n\nexport function HeaderTasksButton({ isDark }: Props) {\n const session = useAgentSessionState();\n const [open, setOpen] = useState(false);\n\n return (\n <>\n <HeaderToolbarButton\n icon=\"pulse\"\n label=\"Tasks\"\n badge={session.tasks.length}\n active={open}\n onPress={() => setOpen(true)}\n accessibilityLabel=\"Tasks\"\n isDark={isDark}\n />\n {open ? <TasksSheet isDark={isDark} onClose={() => setOpen(false)} /> : null}\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n list: {\n paddingHorizontal: 16,\n paddingBottom: 12,\n gap: 8,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: 10,\n borderRadius: 12,\n borderWidth: 1,\n borderColor: 'transparent',\n paddingHorizontal: 12,\n paddingVertical: 10,\n backgroundColor: mobileTokens.color.surfaceMuted,\n },\n rowActive: {\n borderColor: mobileTokens.color.primaryBorder,\n backgroundColor: mobileTokens.color.primarySoft,\n },\n rowActiveDark: {\n backgroundColor: 'rgba(79,70,229,0.18)',\n },\n pressed: {\n opacity: 0.7,\n },\n disabled: {\n opacity: 0.4,\n },\n titleRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n minWidth: 0,\n },\n skillChip: {\n maxWidth: 96,\n borderRadius: 6,\n paddingHorizontal: 6,\n paddingVertical: 2,\n backgroundColor: mobileTokens.color.surface,\n },\n skillChipDark: {\n backgroundColor: '#0f172a',\n },\n skillChipText: {\n fontSize: 10,\n fontWeight: '600',\n },\n rowBody: {\n flex: 1,\n minWidth: 0,\n gap: 2,\n },\n rowTitle: {\n flexShrink: 1,\n fontSize: 14,\n fontWeight: '600',\n },\n rowMeta: {\n fontSize: 12,\n },\n empty: {\n fontSize: 14,\n lineHeight: 20,\n paddingVertical: 20,\n textAlign: 'center',\n },\n headerRight: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n gwDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n newBtn: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HeaderTasksButton.js","sources":["../../../src/components/NavigationHeader/HeaderTasksButton.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { ActivityIndicator, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { MAX_CONCURRENT_TASKS } from '../../config/constants';\nimport { useCdecliConnection } from '../../contexts/CdecliConnectionContext';\nimport { useGatewayContext } from '../../contexts/GatewayContext';\nimport { useAgentSessionState } from '../../hooks/useAgentSessionState';\nimport { agentSessionManager, type AgentTask, type TaskStatus } from '../../services/agentSessionManager';\nimport { mobileTokens } from '../../theme/mobileTokens';\nimport { HeaderSheet } from './HeaderSheet';\nimport { HeaderToolbarButton } from './HeaderToolbarButton';\n\ntype Props = {\n isDark: boolean;\n};\n\nconst STATUS_LABEL: Record<TaskStatus, string> = {\n idle: 'Idle',\n connecting: 'Connecting',\n running: 'Running',\n completed: 'Completed',\n failed: 'Failed',\n aborted: 'Aborted',\n};\n\nfunction StatusGlyph({ status, isDark }: { status: TaskStatus; isDark: boolean }) {\n if (status === 'running' || status === 'connecting') {\n return <ActivityIndicator size={14} color={isDark ? '#60a5fa' : '#2563eb'} />;\n }\n const name =\n status === 'completed'\n ? 'check-circle-outline'\n : status === 'failed'\n ? 'alert-circle-outline'\n : status === 'aborted'\n ? 'close-circle-outline'\n : 'circle-outline';\n const color =\n status === 'completed'\n ? isDark\n ? '#4ade80'\n : '#16a34a'\n : status === 'failed'\n ? isDark\n ? '#f87171'\n : '#dc2626'\n : status === 'aborted'\n ? isDark\n ? '#fb923c'\n : '#ea580c'\n : isDark\n ? '#94a3b8'\n : mobileTokens.color.textMuted;\n return <MaterialCommunityIcons name={name} size={16} color={color} />;\n}\n\nfunction TaskRow({\n task,\n isActive,\n isDark,\n onSelect,\n onRemove,\n}: {\n task: AgentTask;\n isActive: boolean;\n isDark: boolean;\n onSelect: () => void;\n onRemove: () => void;\n}) {\n const foreground = isDark ? '#e2e8f0' : mobileTokens.color.text;\n const muted = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n const last = task.messages[task.messages.length - 1];\n const preview = last\n ? last.content.length > 60\n ? `${last.content.slice(0, 60)}…`\n : last.content\n : 'No messages yet';\n const skillLabel = task.skillTemplateName || task.skillTemplate;\n\n return (\n <Pressable\n onPress={onSelect}\n style={({ pressed }) => [\n styles.row,\n isActive && styles.rowActive,\n isDark && isActive && styles.rowActiveDark,\n pressed && styles.pressed,\n ]}\n >\n <StatusGlyph status={task.status} isDark={isDark} />\n <View style={styles.rowBody}>\n <View style={styles.titleRow}>\n <Text style={[styles.rowTitle, { color: foreground }]} numberOfLines={1}>\n {task.title}\n </Text>\n {skillLabel ? (\n <View style={[styles.skillChip, isDark && styles.skillChipDark]}>\n <Text style={[styles.skillChipText, { color: muted }]} numberOfLines={1}>\n {skillLabel}\n </Text>\n </View>\n ) : null}\n </View>\n <Text style={[styles.rowMeta, { color: muted }]} numberOfLines={1}>\n {STATUS_LABEL[task.status]} · {preview}\n </Text>\n </View>\n <Pressable onPress={onRemove} hitSlop={8} accessibilityLabel=\"Remove task\">\n <MaterialCommunityIcons name=\"trash-can-outline\" size={16} color={muted} />\n </Pressable>\n </Pressable>\n );\n}\n\nfunction TasksSheet({ isDark, onClose }: { isDark: boolean; onClose: () => void }) {\n const session = useAgentSessionState();\n const { selectedGateway } = useGatewayContext();\n const cdecli = useCdecliConnection();\n const muted = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n const cdecliSelected = selectedGateway?.channelType === 'cdecli-serve';\n const connected = cdecliSelected ? cdecli.channelConnected : session.gatewayConnected;\n const canCreate = session.tasks.length < MAX_CONCURRENT_TASKS && (cdecliSelected || session.gatewayConnected);\n\n const handleNew = useCallback(() => {\n if (!canCreate) return;\n agentSessionManager.createTask({ title: 'General Assistant' });\n }, [canCreate]);\n\n return (\n <HeaderSheet\n visible\n title=\"Tasks\"\n subtitle={`${session.tasks.length} of ${MAX_CONCURRENT_TASKS} slots`}\n isDark={isDark}\n onClose={onClose}\n headerRight={\n <View style={styles.headerRight}>\n <View style={[styles.gwDot, { backgroundColor: connected ? '#22c55e' : '#94a3b8' }]} />\n <Pressable\n onPress={handleNew}\n disabled={!canCreate}\n accessibilityLabel=\"Start new task\"\n style={({ pressed }) => [\n styles.newBtn,\n pressed && styles.pressed,\n !canCreate && styles.disabled,\n ]}\n >\n <MaterialCommunityIcons name=\"plus\" size={16} color={mobileTokens.color.primary} />\n </Pressable>\n </View>\n }\n >\n <ScrollView style={{ flex: 1 }} contentContainerStyle={styles.list} keyboardShouldPersistTaps=\"handled\">\n {session.tasks.length === 0 ? (\n <Text style={[styles.empty, { color: muted }]}>\n {connected ? 'No tasks yet. Create one to get started.' : 'Connect Yantra to create tasks.'}\n </Text>\n ) : (\n session.tasks.map((task) => (\n <TaskRow\n key={task.id}\n task={task}\n isActive={session.activeTaskId === task.id}\n isDark={isDark}\n onSelect={() => agentSessionManager.setActiveTask(task.id)}\n onRemove={() => agentSessionManager.removeTask(task.id)}\n />\n ))\n )}\n </ScrollView>\n </HeaderSheet>\n );\n}\n\nexport function HeaderTasksButton({ isDark }: Props) {\n const session = useAgentSessionState();\n const [open, setOpen] = useState(false);\n\n useFocusEffect(\n useCallback(() => {\n return () => setOpen(false);\n }, []),\n );\n\n return (\n <>\n <HeaderToolbarButton\n icon=\"pulse\"\n label=\"Tasks\"\n badge={session.tasks.length}\n active={open}\n onPress={() => setOpen(true)}\n accessibilityLabel=\"Tasks\"\n isDark={isDark}\n />\n {open ? <TasksSheet isDark={isDark} onClose={() => setOpen(false)} /> : null}\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n list: {\n paddingHorizontal: 16,\n paddingBottom: 12,\n gap: 8,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: 10,\n borderRadius: 12,\n borderWidth: 1,\n borderColor: 'transparent',\n paddingHorizontal: 12,\n paddingVertical: 10,\n backgroundColor: mobileTokens.color.surfaceMuted,\n },\n rowActive: {\n borderColor: mobileTokens.color.primaryBorder,\n backgroundColor: mobileTokens.color.primarySoft,\n },\n rowActiveDark: {\n backgroundColor: 'rgba(79,70,229,0.18)',\n },\n pressed: {\n opacity: 0.7,\n },\n disabled: {\n opacity: 0.4,\n },\n titleRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n minWidth: 0,\n },\n skillChip: {\n maxWidth: 96,\n borderRadius: 6,\n paddingHorizontal: 6,\n paddingVertical: 2,\n backgroundColor: mobileTokens.color.surface,\n },\n skillChipDark: {\n backgroundColor: '#0f172a',\n },\n skillChipText: {\n fontSize: 10,\n fontWeight: '600',\n },\n rowBody: {\n flex: 1,\n minWidth: 0,\n gap: 2,\n },\n rowTitle: {\n flexShrink: 1,\n fontSize: 14,\n fontWeight: '600',\n },\n rowMeta: {\n fontSize: 12,\n },\n empty: {\n fontSize: 14,\n lineHeight: 20,\n paddingVertical: 20,\n textAlign: 'center',\n },\n headerRight: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n gwDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n newBtn: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n },\n});\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {jsx,jsxs,Fragment}from'react/jsx-runtime';import React,{useMemo,useCallback}from'react';import {useColorScheme,StyleSheet,View,ScrollView,Pressable}from'react-native';import {dismissKeyboard}from'../../utils/keyboardController.js';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {StatusBar}from'expo-status-bar';import {useNavigation,CommonActions,DrawerActions}from'@react-navigation/native';import {getHeaderTitle}from'@react-navigation/elements';import {MaterialCommunityIcons}from'@expo/vector-icons';import {Text}from'@admin-layout/gluestack-ui-mobile';import GatewayConnector from'../GatewayConnector/GatewayConnector.js';import {tryWebBuilderBack}from'../../screens/WebBuilder/webbuilderBackHandler.js';import {config}from'../../config/env-config.js';import {resolveAppTitleFromSurfaceUrl}from'../../features/apps/resolveSurfaceUrl.js';import {navigateToNewChatHome}from'../../utils/navigateToNewChatHome.js';import {HeaderMoreMenu}from'./HeaderMoreMenu.js';import {HeaderSkillsButton}from'./HeaderSkillsButton.js';import {HeaderTasksButton}from'./HeaderTasksButton.js';import {HeaderToolbarButton}from'./HeaderToolbarButton.js';const ICON_SIZE = 22;
1
+ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import React,{useMemo,useCallback}from'react';import {useColorScheme,StyleSheet,View,ScrollView,Pressable}from'react-native';import {dismissKeyboard}from'../../utils/keyboardController.js';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {StatusBar}from'expo-status-bar';import {useNavigation,CommonActions}from'@react-navigation/native';import {getHeaderTitle}from'@react-navigation/elements';import {MaterialCommunityIcons}from'@expo/vector-icons';import {Text}from'@admin-layout/gluestack-ui-mobile';import GatewayConnector from'../GatewayConnector/GatewayConnector.js';import {tryWebBuilderBack}from'../../screens/WebBuilder/webbuilderBackHandler.js';import {config}from'../../config/env-config.js';import {resolveAppTitleFromSurfaceUrl}from'../../features/apps/resolveSurfaceUrl.js';import {navigateToNewChatHome}from'../../utils/navigateToNewChatHome.js';import {dispatchDrawerAction}from'../../utils/drawerNavigation.js';import {HeaderMoreMenu}from'./HeaderMoreMenu.js';import {HeaderSkillsButton}from'./HeaderSkillsButton.js';import {HeaderTasksButton}from'./HeaderTasksButton.js';import {HeaderToolbarButton}from'./HeaderToolbarButton.js';const ICON_SIZE = 22;
2
2
  function resolveTitle(options, route) {
3
3
  var _a, _b, _c, _d;
4
4
  const paramTitle = (_a = route == null ? void 0 : route.params) == null ? void 0 : _a.appTitle;
@@ -19,7 +19,7 @@ function resolveTitle(options, route) {
19
19
  return typeof fallback === "string" && fallback.trim() ? fallback : "Yantra";
20
20
  }
21
21
  const NavigationHeader = (props) => {
22
- var _a, _b, _c, _d, _e;
22
+ var _a, _b, _c, _d, _e, _f;
23
23
  const {
24
24
  navigation: navProp,
25
25
  route,
@@ -72,9 +72,8 @@ const NavigationHeader = (props) => {
72
72
  }));
73
73
  }, [navigation, orgName, route == null ? void 0 : route.name]);
74
74
  const handleToggleDrawer = useCallback(() => {
75
- var _a2;
76
75
  try {
77
- (_a2 = navigation == null ? void 0 : navigation.dispatch) == null ? void 0 : _a2.call(navigation, DrawerActions.openDrawer());
76
+ dispatchDrawerAction(navigation, "toggle");
78
77
  } catch (e) {
79
78
  }
80
79
  }, [navigation]);
@@ -87,6 +86,9 @@ const NavigationHeader = (props) => {
87
86
  }) => [styles.iconButton, pressed && styles.iconButtonPressed], hitSlop: 8, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "chevron-left", size: ICON_SIZE + 4, color: iconColor }) }) : showToggle ? /* @__PURE__ */ jsx(Pressable, { onPress: handleToggleDrawer, accessibilityLabel: "Open menu", accessibilityRole: "button", style: ({
88
87
  pressed
89
88
  }) => [styles.iconButton, pressed && styles.iconButtonPressed], hitSlop: 8, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "menu", size: ICON_SIZE, color: iconColor }) }) : null;
89
+ if ((_e = route == null ? void 0 : route.params) == null ? void 0 : _e.hideNavigationHeader) {
90
+ return /* @__PURE__ */ jsx(StatusBar, { style: isDark ? "light" : "dark" });
91
+ }
90
92
  const hideBrandTitle = showChatToolbar && title === "Yantra";
91
93
  const titleSlot = showTitle && !hideBrandTitle ? /* @__PURE__ */ jsx(Text, { style: [styles.title, titleAlignLeft ? styles.titleAlignLeft : styles.titleAlignCenter, {
92
94
  color: titleColor
@@ -102,7 +104,7 @@ const NavigationHeader = (props) => {
102
104
  backgroundColor: surfaceColor,
103
105
  borderBottomColor: dividerColor,
104
106
  paddingTop: insets.top > 0 ? 0 : 6
105
- }, (_e = options == null ? void 0 : options.headerStyle) != null ? _e : null], children: [
107
+ }, (_f = options == null ? void 0 : options.headerStyle) != null ? _f : null], children: [
106
108
  /* @__PURE__ */ jsx(View, { style: styles.leftSlot, children: leftSlot }),
107
109
  showChatToolbar ? /* @__PURE__ */ jsxs(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, style: styles.toolsScroll, contentContainerStyle: styles.toolsContent, keyboardShouldPersistTaps: "handled", children: [
108
110
  /* @__PURE__ */ jsx(HeaderTasksButton, { isDark }),