@adminide-stack/yantra-mobile 12.0.140 → 12.0.141
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.
- package/lib/features/agent-chat/NativeAgentChat.js +21 -4
- package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
- package/lib/features/chat/ApprovalCard.js +353 -0
- package/lib/features/chat/ApprovalCard.js.map +1 -0
- package/lib/features/chat/AskUserCard.js +9 -2
- package/lib/features/chat/AskUserCard.js.map +1 -1
- package/lib/features/chat/askUser.js +25 -3
- package/lib/features/chat/askUser.js.map +1 -1
- package/lib/features/chat/queuedFollowUpRows.js +13 -0
- package/lib/features/chat/queuedFollowUpRows.js.map +1 -0
- package/lib/features/discover/DiscoverArticle.js +105 -92
- package/lib/features/discover/DiscoverArticle.js.map +1 -1
- package/lib/features/discover/DiscoverFeed.js +97 -48
- package/lib/features/discover/DiscoverFeed.js.map +1 -1
- package/lib/features/discover/DiscoverFollowUp.js +135 -0
- package/lib/features/discover/DiscoverFollowUp.js.map +1 -0
- package/lib/features/discover/DiscoverSidebar.js +555 -0
- package/lib/features/discover/DiscoverSidebar.js.map +1 -0
- package/lib/features/discover/DiscoverSkeletons.js +123 -0
- package/lib/features/discover/DiscoverSkeletons.js.map +1 -0
- package/lib/features/discover/DiscoverStoryCards.js +193 -87
- package/lib/features/discover/DiscoverStoryCards.js.map +1 -1
- package/lib/features/discover/followUpQuery.js +42 -0
- package/lib/features/discover/followUpQuery.js.map +1 -0
- package/lib/features/discover/markets.js +37 -0
- package/lib/features/discover/markets.js.map +1 -0
- package/lib/features/discover/useDiscoverSidebar.js +148 -0
- package/lib/features/discover/useDiscoverSidebar.js.map +1 -0
- package/lib/features/discover/weather.js +42 -0
- package/lib/features/discover/weather.js.map +1 -0
- package/lib/features/expenses/ExpensesAgentChatPane.js +1 -1
- package/lib/features/expenses/ExpensesAgentChatPane.js.map +1 -1
- package/lib/features/inbox/InboxAgentChatPane.js +1 -1
- package/lib/features/inbox/InboxAgentChatPane.js.map +1 -1
- package/lib/features/job-search/JobSearchAgentChatPane.js +1 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -1
- package/lib/features/local-services/LocalServicesAgentChatPane.js +1 -1
- package/lib/features/local-services/LocalServicesAgentChatPane.js.map +1 -1
- package/lib/features/movies/MoviesAgentChatPane.js +1 -1
- package/lib/features/movies/MoviesAgentChatPane.js.map +1 -1
- package/lib/features/notion/NotionBlockSheets.js +206 -0
- package/lib/features/notion/NotionBlockSheets.js.map +1 -0
- package/lib/features/notion/NotionBlockView.js +36 -0
- package/lib/features/notion/NotionBlockView.js.map +1 -0
- package/lib/features/notion/NotionCommentsSheet.js +461 -0
- package/lib/features/notion/NotionCommentsSheet.js.map +1 -0
- package/lib/features/notion/NotionConnectionsSheet.js +244 -0
- package/lib/features/notion/NotionConnectionsSheet.js.map +1 -0
- package/lib/features/notion/NotionHistorySheet.js +439 -0
- package/lib/features/notion/NotionHistorySheet.js.map +1 -0
- package/lib/features/notion/NotionMediaBlocks.js +803 -0
- package/lib/features/notion/NotionMediaBlocks.js.map +1 -0
- package/lib/features/notion/NotionMentionSheet.js +279 -0
- package/lib/features/notion/NotionMentionSheet.js.map +1 -0
- package/lib/features/notion/NotionPageMenu.js +585 -0
- package/lib/features/notion/NotionPageMenu.js.map +1 -0
- package/lib/features/notion/NotionPageTree.js +220 -0
- package/lib/features/notion/NotionPageTree.js.map +1 -0
- package/lib/features/notion/NotionPageView.js +1253 -152
- package/lib/features/notion/NotionPageView.js.map +1 -1
- package/lib/features/notion/NotionShareSheet.js +606 -0
- package/lib/features/notion/NotionShareSheet.js.map +1 -0
- package/lib/features/notion/NotionSheets.js +87 -15
- package/lib/features/notion/NotionSheets.js.map +1 -1
- package/lib/features/notion/NotionSidebarSections.js +492 -0
- package/lib/features/notion/NotionSidebarSections.js.map +1 -0
- package/lib/features/notion/NotionWorkspaceAdmin.js +659 -0
- package/lib/features/notion/NotionWorkspaceAdmin.js.map +1 -0
- package/lib/features/notion/NotionWorkspaceView.js +257 -45
- package/lib/features/notion/NotionWorkspaceView.js.map +1 -1
- package/lib/features/notion/database/DatabaseCells.js +554 -0
- package/lib/features/notion/database/DatabaseCells.js.map +1 -0
- package/lib/features/notion/database/DatabaseDateLayouts.js +792 -0
- package/lib/features/notion/database/DatabaseDateLayouts.js.map +1 -0
- package/lib/features/notion/database/DatabaseLayouts.js +461 -0
- package/lib/features/notion/database/DatabaseLayouts.js.map +1 -0
- package/lib/features/notion/database/DatabaseSheets.js +791 -0
- package/lib/features/notion/database/DatabaseSheets.js.map +1 -0
- package/lib/features/notion/database/NotionDatabaseView.js +817 -0
- package/lib/features/notion/database/NotionDatabaseView.js.map +1 -0
- package/lib/features/notion/database/RowPropertiesPanel.js +162 -0
- package/lib/features/notion/database/RowPropertiesPanel.js.map +1 -0
- package/lib/features/notion/database/chartData.js +89 -0
- package/lib/features/notion/database/chartData.js.map +1 -0
- package/lib/features/notion/database/chartView.js +112 -0
- package/lib/features/notion/database/chartView.js.map +1 -0
- package/lib/features/notion/database/connectorButton.js +33 -0
- package/lib/features/notion/database/connectorButton.js.map +1 -0
- package/lib/features/notion/database/databaseCalc.js +208 -0
- package/lib/features/notion/database/databaseCalc.js.map +1 -0
- package/lib/features/notion/database/databaseCalendar.js +157 -0
- package/lib/features/notion/database/databaseCalendar.js.map +1 -0
- package/lib/features/notion/database/databaseCsv.js +98 -0
- package/lib/features/notion/database/databaseCsv.js.map +1 -0
- package/lib/features/notion/database/databaseCsvActions.js +58 -0
- package/lib/features/notion/database/databaseCsvActions.js.map +1 -0
- package/lib/features/notion/database/databaseFilter.js +473 -0
- package/lib/features/notion/database/databaseFilter.js.map +1 -0
- package/lib/features/notion/database/databaseFormula.js +1072 -0
- package/lib/features/notion/database/databaseFormula.js.map +1 -0
- package/lib/features/notion/database/databaseGroup.js +151 -0
- package/lib/features/notion/database/databaseGroup.js.map +1 -0
- package/lib/features/notion/database/databaseRollup.js +58 -0
- package/lib/features/notion/database/databaseRollup.js.map +1 -0
- package/lib/features/notion/database/databaseTimeline.js +156 -0
- package/lib/features/notion/database/databaseTimeline.js.map +1 -0
- package/lib/features/notion/database/databaseView.js +1188 -0
- package/lib/features/notion/database/databaseView.js.map +1 -0
- package/lib/features/notion/database/databaseViews.js +310 -0
- package/lib/features/notion/database/databaseViews.js.map +1 -0
- package/lib/features/notion/database/relationSource.js +92 -0
- package/lib/features/notion/database/relationSource.js.map +1 -0
- package/lib/features/notion/database/uniqueId.js +17 -0
- package/lib/features/notion/database/uniqueId.js.map +1 -0
- package/lib/features/notion/database/useNotionDatabase.js +617 -0
- package/lib/features/notion/database/useNotionDatabase.js.map +1 -0
- package/lib/features/notion/notionAgentRunStatus.js +39 -0
- package/lib/features/notion/notionAgentRunStatus.js.map +1 -0
- package/lib/features/notion/notionCodeLanguages.js +112 -0
- package/lib/features/notion/notionCodeLanguages.js.map +1 -0
- package/lib/features/notion/notionComments.js +86 -0
- package/lib/features/notion/notionComments.js.map +1 -0
- package/lib/features/notion/notionConnections.js +74 -0
- package/lib/features/notion/notionConnections.js.map +1 -0
- package/lib/features/notion/notionDocuments.js +453 -1
- package/lib/features/notion/notionDocuments.js.map +1 -1
- package/lib/features/notion/notionEditorModel.js +142 -7
- package/lib/features/notion/notionEditorModel.js.map +1 -1
- package/lib/features/notion/notionMarkdownShortcuts.js +51 -0
- package/lib/features/notion/notionMarkdownShortcuts.js.map +1 -0
- package/lib/features/notion/notionMedia.js +119 -0
- package/lib/features/notion/notionMedia.js.map +1 -0
- package/lib/features/notion/notionMentionDate.js +32 -0
- package/lib/features/notion/notionMentionDate.js.map +1 -0
- package/lib/features/notion/notionMentionOptions.js +162 -0
- package/lib/features/notion/notionMentionOptions.js.map +1 -0
- package/lib/features/notion/notionNotesAgent.js +445 -0
- package/lib/features/notion/notionNotesAgent.js.map +1 -0
- package/lib/features/notion/notionPageAccess.js +168 -0
- package/lib/features/notion/notionPageAccess.js.map +1 -0
- package/lib/features/notion/notionPageActions.js +138 -0
- package/lib/features/notion/notionPageActions.js.map +1 -0
- package/lib/features/notion/notionPageHistory.js +154 -0
- package/lib/features/notion/notionPageHistory.js.map +1 -0
- package/lib/features/notion/notionPageKinds.js +200 -0
- package/lib/features/notion/notionPageKinds.js.map +1 -0
- package/lib/features/notion/notionRecents.js +48 -0
- package/lib/features/notion/notionRecents.js.map +1 -0
- package/lib/features/notion/notionRichText.js +177 -0
- package/lib/features/notion/notionRichText.js.map +1 -0
- package/lib/features/notion/notionRichTitle.js +336 -0
- package/lib/features/notion/notionRichTitle.js.map +1 -0
- package/lib/features/notion/useNotionWorkspace.js +272 -13
- package/lib/features/notion/useNotionWorkspace.js.map +1 -1
- package/lib/features/notion/usePageActions.js +155 -0
- package/lib/features/notion/usePageActions.js.map +1 -0
- package/lib/features/resume/ResumeAgentChatPane.js +1 -1
- package/lib/features/resume/ResumeAgentChatPane.js.map +1 -1
- package/lib/features/shopping/ShoppingAgentChatPane.js +1 -1
- package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -1
- package/lib/features/study/StudyAgentChatPane.js +1 -1
- package/lib/features/study/StudyAgentChatPane.js.map +1 -1
- package/lib/features/travel/TravelAgentChatPane.js +1 -1
- package/lib/features/travel/TravelAgentChatPane.js.map +1 -1
- package/lib/features/webbuilder/WebBuilderExperience.js +40 -8
- package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
- package/lib/features/webbuilder/buildFragments.js +1 -1
- package/lib/features/webbuilder/buildFragments.js.map +1 -1
- package/lib/features/webbuilder/codeFiles.js +302 -0
- package/lib/features/webbuilder/codeFiles.js.map +1 -0
- package/lib/features/webbuilder/codeHighlight.js +209 -0
- package/lib/features/webbuilder/codeHighlight.js.map +1 -0
- package/lib/features/webbuilder/components/CodeView.js +682 -52
- package/lib/features/webbuilder/components/CodeView.js.map +1 -1
- package/lib/features/webbuilder/components/PreviewScreen.js +59 -38
- package/lib/features/webbuilder/components/PreviewScreen.js.map +1 -1
- package/lib/features/webbuilder/components/ProjectChat.js +3 -3
- package/lib/features/webbuilder/components/ProjectChat.js.map +1 -1
- package/lib/features/webbuilder/stepLabels.js +68 -0
- package/lib/features/webbuilder/stepLabels.js.map +1 -0
- package/lib/hooks/useHostChatSteering.js +45 -0
- package/lib/hooks/useHostChatSteering.js.map +1 -0
- package/lib/screens/Chat/index.js +2 -12
- package/lib/screens/Chat/index.js.map +1 -1
- package/lib/screens/ExpensesNative/useExpensesHostChat.js +25 -5
- package/lib/screens/ExpensesNative/useExpensesHostChat.js.map +1 -1
- package/lib/screens/InboxNative/useInboxHostChat.js +25 -5
- package/lib/screens/InboxNative/useInboxHostChat.js.map +1 -1
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js +25 -5
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js.map +1 -1
- package/lib/screens/LocalServicesNative/useLocalServicesHostChat.js +25 -5
- package/lib/screens/LocalServicesNative/useLocalServicesHostChat.js.map +1 -1
- package/lib/screens/MoviesNative/useMoviesHostChat.js +25 -5
- package/lib/screens/MoviesNative/useMoviesHostChat.js.map +1 -1
- package/lib/screens/NotionPage/index.js +2 -2
- package/lib/screens/NotionPage/index.js.map +1 -1
- package/lib/screens/ResumeNative/useResumeHostChat.js +25 -5
- package/lib/screens/ResumeNative/useResumeHostChat.js.map +1 -1
- package/lib/screens/ShoppingNative/useShoppingHostChat.js +25 -5
- package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -1
- package/lib/screens/StudyNative/useStudyHostChat.js +25 -5
- package/lib/screens/StudyNative/useStudyHostChat.js.map +1 -1
- package/lib/screens/TravelNative/useTravelHostChat.js +25 -5
- package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -1
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js +222 -0
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js.map +1 -0
- package/lib/screens/WebBuilderNative/index.js +1 -1
- package/lib/screens/WebBuilderNative/index.js.map +1 -1
- package/lib/screens/WebBuilderNative/sandboxProxyApi.js +126 -4
- package/lib/screens/WebBuilderNative/sandboxProxyApi.js.map +1 -1
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js +120 -11
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotionShareSheet.js","sources":["../../../src/features/notion/NotionShareSheet.tsx"],"sourcesContent":["/**\n * Share / Publish - the web PageShareDialog on a phone.\n * Share: invite by email or user id with a level (Full access / Can edit / Can comment /\n * Can view), change or remove people, \"Anyone with the link can view\", copy link. Each change\n * is saved at once as the page's whole permission list (updateBlockPermissions), using the\n * web's rules (notionPageAccess).\n * Publish: publish public (indexed) or private (workspace sign-in), live link, republish,\n * unpublish, and custom domains (add, check DNS, remove).\n */\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n ActivityIndicator,\n Alert,\n Clipboard,\n KeyboardAvoidingView,\n Linking,\n Modal,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n TextInput,\n View,\n} from 'react-native';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useApolloClient, useQuery } from '@apollo/client';\nimport {\n NATIVE_NOTION_ADD_DOMAIN,\n NATIVE_NOTION_PERMISSIONS,\n NATIVE_NOTION_PUBLICATION,\n NATIVE_NOTION_PUBLISH,\n NATIVE_NOTION_REFRESH_DOMAIN,\n NATIVE_NOTION_REMOVE_DOMAIN,\n NATIVE_NOTION_UNPUBLISH,\n NATIVE_NOTION_UPDATE_PERMISSIONS,\n} from './notionDocuments';\nimport {\n ACCESS_LEVELS,\n EMPTY_ACCESS,\n addPerson,\n generalAccessOf,\n levelLabel,\n normalizePermissions,\n personInitial,\n removePerson,\n setGeneralAccess,\n toPermissionInputs,\n updatePersonLevel,\n validateInvitee,\n type AccessLevel,\n type PageAccessState,\n type PermissionEntryLike,\n} from './notionPageAccess';\nimport { pageLinkUrl, serverErrorText } from './notionPageActions';\nimport type { NotionPalette } from './notionTheme';\nimport { ui } from './notionUi';\nimport { webOrigin } from './usePageActions';\n\ntype Palette = NotionPalette;\n\ninterface Publication {\n id: string;\n status: 'published' | 'unpublished';\n visibility: 'public' | 'private';\n publicUrl: string;\n lastPublishedAt?: string | null;\n storageError?: string | null;\n domains?: Array<{\n domain: string;\n status: string;\n message?: string | null;\n dnsRecords?: Array<{ type: string; name: string; value: string }> | null;\n }> | null;\n}\n\nexport function ShareSheet({\n visible,\n palette,\n pageId,\n pageTitle,\n onClose,\n}: {\n visible: boolean;\n palette: Palette;\n pageId: string;\n pageTitle: string;\n onClose: () => void;\n}) {\n const [tab, setTab] = useState<'share' | 'publish'>('share');\n useEffect(() => {\n if (visible) setTab('share');\n }, [visible]);\n return (\n <Modal visible={visible} animationType=\"slide\" presentationStyle=\"pageSheet\" onRequestClose={onClose}>\n <KeyboardAvoidingView\n style={[ui.flex, { backgroundColor: palette.bg }]}\n behavior={Platform.OS === 'ios' ? 'padding' : undefined}\n >\n <View style={[ui.sheetHeader, { borderBottomColor: palette.hairline }]}>\n <View style={[ui.sheetHeaderSide, ui.sheetHeaderLeft]} />\n <Text numberOfLines={1} style={[ui.sheetHeaderTitle, { color: palette.text }]}>\n {pageTitle || 'Share'}\n </Text>\n <Pressable accessibilityRole=\"button\" onPress={onClose} hitSlop={8} style={ui.sheetHeaderSide}>\n <Text style={[ui.sheetHeaderDone, { color: palette.primary }]}>Done</Text>\n </Pressable>\n </View>\n <View style={[styles.tabs, { backgroundColor: palette.fill }]}>\n {(['share', 'publish'] as const).map((t) => (\n <Pressable\n key={t}\n accessibilityRole=\"tab\"\n accessibilityState={{ selected: tab === t }}\n onPress={() => setTab(t)}\n style={[styles.tab, tab === t && { backgroundColor: palette.card }]}\n >\n <Text style={[styles.tabLabel, { color: tab === t ? palette.text : palette.textMuted }]}>\n {t === 'share' ? 'Share' : 'Publish'}\n </Text>\n </Pressable>\n ))}\n </View>\n {visible ? (\n tab === 'share' ? (\n <ShareTab palette={palette} pageId={pageId} />\n ) : (\n <PublishTab palette={palette} pageId={pageId} />\n )\n ) : null}\n </KeyboardAvoidingView>\n </Modal>\n );\n}\n\nfunction ShareTab({ palette, pageId }: { palette: Palette; pageId: string }) {\n const client = useApolloClient();\n const { data, loading, error } = useQuery<{ getBlockPermissions?: PermissionEntryLike[] | null }>(\n NATIVE_NOTION_PERMISSIONS,\n {\n variables: { blockId: pageId },\n fetchPolicy: 'network-only',\n },\n );\n const [state, setState] = useState<PageAccessState>(EMPTY_ACCESS);\n useEffect(() => {\n if (data) setState(normalizePermissions(data.getBlockPermissions ?? []));\n }, [data]);\n const [invitee, setInvitee] = useState('');\n const [level, setLevel] = useState<AccessLevel>('edit');\n const [saving, setSaving] = useState(false);\n const [message, setMessage] = useState<{ text: string; error?: boolean } | null>(null);\n const general = generalAccessOf(state);\n const link = useMemo(() => pageLinkUrl(webOrigin(), pageId), [pageId]);\n\n /** Save the whole list (web: updateBlockPermissions replaces it); roll back on failure. */\n const commit = async (next: PageAccessState) => {\n const prev = state;\n setState(next);\n setSaving(true);\n setMessage(null);\n try {\n await client.mutate({\n mutation: NATIVE_NOTION_UPDATE_PERMISSIONS,\n variables: { input: { blockId: pageId, permissions: toPermissionInputs(next) } },\n errorPolicy: 'none',\n });\n return true;\n } catch (err) {\n setState(prev);\n setMessage({ text: serverErrorText(err), error: true });\n return false;\n } finally {\n setSaving(false);\n }\n };\n\n const invite = async () => {\n const v = validateInvitee(invitee);\n if ('error' in v) {\n setMessage({ text: v.error, error: true });\n return;\n }\n if (await commit(addPerson(state, v.id, level))) {\n setInvitee('');\n setMessage({ text: 'Invited' });\n }\n };\n\n const personMenu = (key: string, id: string) =>\n Alert.alert(id, undefined, [\n ...ACCESS_LEVELS.map((l) => ({\n text: l.label,\n onPress: () => commit(updatePersonLevel(state, key, l.value)),\n })),\n { text: 'Remove', style: 'destructive' as const, onPress: () => commit(removePerson(state, key)) },\n { text: 'Cancel', style: 'cancel' as const },\n ]);\n\n if (loading && !data) return <Busy palette={palette} />;\n return (\n <ScrollView contentContainerStyle={styles.content} keyboardShouldPersistTaps=\"handled\">\n <View style={[styles.card, { backgroundColor: palette.card }]}>\n <TextInput\n value={invitee}\n onChangeText={setInvitee}\n placeholder=\"Email or user id\"\n placeholderTextColor={palette.textFaint}\n autoCapitalize=\"none\"\n autoCorrect={false}\n keyboardType=\"email-address\"\n onSubmitEditing={invite}\n style={[styles.input, { color: palette.text, backgroundColor: palette.fill }]}\n />\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.chips}>\n {ACCESS_LEVELS.map((l) => (\n <Pressable\n key={l.value}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: level === l.value }}\n onPress={() => setLevel(l.value)}\n style={[\n styles.chip,\n { backgroundColor: level === l.value ? palette.primarySoft : palette.fill },\n ]}\n >\n <Text\n style={[\n styles.chipLabel,\n { color: level === l.value ? palette.primary : palette.text },\n ]}\n >\n {l.label}\n </Text>\n </Pressable>\n ))}\n </ScrollView>\n <Pressable\n accessibilityRole=\"button\"\n onPress={invite}\n disabled={!invitee.trim() || saving}\n style={[\n ui.primaryButton,\n styles.block,\n { backgroundColor: palette.primary, marginTop: 12 },\n (!invitee.trim() || saving) && styles.disabled,\n ]}\n >\n {saving ? (\n <ActivityIndicator size=\"small\" color={palette.onPrimary} />\n ) : (\n <Text style={[ui.primaryButtonLabel, { color: palette.onPrimary }]}>Invite</Text>\n )}\n </Pressable>\n </View>\n {message || error ? (\n <Text style={[styles.message, { color: message?.error || error ? palette.danger : palette.textMuted }]}>\n {message?.text ?? serverErrorText(error)}\n </Text>\n ) : null}\n\n <Text style={[styles.label, { color: palette.textMuted }]}>People with access</Text>\n <View style={[ui.group, { backgroundColor: palette.card }]}>\n {state.people.length ? (\n state.people.map((p, i) => (\n <Pressable\n key={p.key}\n accessibilityRole=\"button\"\n onPress={() => personMenu(p.key, p.id)}\n style={({ pressed }) => [styles.person, pressed && { backgroundColor: palette.pressed }]}\n >\n <View style={[styles.avatar, { backgroundColor: palette.primarySoft }]}>\n <Text style={[styles.avatarText, { color: palette.primary }]}>\n {personInitial(p.id)}\n </Text>\n </View>\n <View\n style={[\n styles.personBody,\n i < state.people.length - 1 && ui.hairline,\n { borderBottomColor: palette.hairline },\n ]}\n >\n <Text numberOfLines={1} style={[styles.personName, { color: palette.text }]}>\n {p.id}\n </Text>\n <Text style={[styles.level, { color: palette.textMuted }]}>{levelLabel(p.level)}</Text>\n <Ionicons name=\"chevron-down\" size={14} color={palette.textFaint} />\n </View>\n </Pressable>\n ))\n ) : (\n <Text style={[styles.emptyRow, { color: palette.textMuted }]}>Only workspace members so far.</Text>\n )}\n </View>\n\n <Text style={[styles.label, { color: palette.textMuted }]}>General access</Text>\n <View style={[ui.group, { backgroundColor: palette.card }]}>\n {(['restricted', 'link'] as const).map((g, i) => (\n <Pressable\n key={g}\n accessibilityRole=\"radio\"\n accessibilityState={{ checked: general === g }}\n onPress={() => commit(setGeneralAccess(state, g))}\n style={({ pressed }) => [styles.person, pressed && { backgroundColor: palette.pressed }]}\n >\n <Ionicons\n name={g === 'link' ? 'globe-outline' : 'lock-closed-outline'}\n size={19}\n color={palette.text}\n />\n <View\n style={[styles.personBody, i === 0 && ui.hairline, { borderBottomColor: palette.hairline }]}\n >\n <Text style={[styles.personName, { color: palette.text }]}>\n {g === 'link' ? 'Anyone with the link can view' : 'Only people invited'}\n </Text>\n {general === g ? <Ionicons name=\"checkmark\" size={20} color={palette.primary} /> : null}\n </View>\n </Pressable>\n ))}\n </View>\n\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => {\n Clipboard.setString(link);\n setMessage({ text: 'Link copied' });\n }}\n style={[styles.secondary, { backgroundColor: palette.primarySoft }]}\n >\n <Ionicons name=\"link-outline\" size={18} color={palette.primary} />\n <Text style={[styles.secondaryLabel, { color: palette.primary }]}>Copy link</Text>\n </Pressable>\n </ScrollView>\n );\n}\n\nfunction PublishTab({ palette, pageId }: { palette: Palette; pageId: string }) {\n const client = useApolloClient();\n const { data, loading, refetch } = useQuery<{ notionPublication?: Publication | null }>(NATIVE_NOTION_PUBLICATION, {\n variables: { blockId: pageId },\n fetchPolicy: 'network-only',\n });\n const pub =\n data?.notionPublication && data.notionPublication.status === 'published' ? data.notionPublication : null;\n const [visibility, setVisibility] = useState<'public' | 'private'>('public');\n useEffect(() => {\n if (pub) setVisibility(pub.visibility);\n }, [pub]);\n const [busy, setBusy] = useState<string | null>(null);\n const [domain, setDomain] = useState('');\n const [message, setMessage] = useState<{ text: string; error?: boolean } | null>(null);\n\n const run = async (\n key: string,\n mutation: Parameters<typeof client.mutate>[0]['mutation'],\n variables: object,\n done?: string,\n ) => {\n setBusy(key);\n setMessage(null);\n try {\n await client.mutate({ mutation, variables, errorPolicy: 'none' });\n await refetch();\n if (done) setMessage({ text: done });\n return true;\n } catch (err) {\n setMessage({ text: serverErrorText(err), error: true });\n return false;\n } finally {\n setBusy(null);\n }\n };\n\n if (loading && !data) return <Busy palette={palette} />;\n return (\n <ScrollView contentContainerStyle={styles.content} keyboardShouldPersistTaps=\"handled\">\n <Text style={[styles.label, { color: palette.textMuted }]}>Who can view</Text>\n <View style={[ui.group, { backgroundColor: palette.card }]}>\n {(\n [\n { v: 'public', title: 'Public', sub: 'Anyone with the link; search engines can index it' },\n { v: 'private', title: 'Private', sub: 'Only people signed in to your workspace' },\n ] as const\n ).map((o, i) => (\n <Pressable\n key={o.v}\n accessibilityRole=\"radio\"\n accessibilityState={{ checked: visibility === o.v }}\n onPress={() => setVisibility(o.v)}\n style={({ pressed }) => [styles.person, pressed && { backgroundColor: palette.pressed }]}\n >\n <Ionicons\n name={o.v === 'public' ? 'globe-outline' : 'lock-closed-outline'}\n size={19}\n color={palette.text}\n />\n <View\n style={[styles.personBody, i === 0 && ui.hairline, { borderBottomColor: palette.hairline }]}\n >\n <View style={ui.flex}>\n <Text style={[styles.personName, { color: palette.text }]}>{o.title}</Text>\n <Text style={[styles.sub, { color: palette.textMuted }]}>{o.sub}</Text>\n </View>\n {visibility === o.v ? (\n <Ionicons name=\"checkmark\" size={20} color={palette.primary} />\n ) : null}\n </View>\n </Pressable>\n ))}\n </View>\n\n {pub ? (\n <View style={[styles.card, { backgroundColor: palette.card, marginTop: 16 }]}>\n <View style={styles.liveHead}>\n <View style={[styles.liveDot, { backgroundColor: '#10b981' }]} />\n <Text style={[styles.personName, { color: palette.text }]}>Published</Text>\n </View>\n <Text selectable numberOfLines={2} style={[styles.url, { color: palette.primary }]}>\n {pub.publicUrl}\n </Text>\n {pub.storageError ? (\n <Text style={[styles.sub, { color: palette.danger }]}>{pub.storageError}</Text>\n ) : null}\n <View style={styles.row}>\n <SmallButton\n palette={palette}\n label=\"Copy link\"\n onPress={() => {\n Clipboard.setString(pub.publicUrl);\n setMessage({ text: 'Link copied' });\n }}\n />\n <SmallButton\n palette={palette}\n label=\"View site\"\n onPress={() => Linking.openURL(pub.publicUrl).catch(() => undefined)}\n />\n </View>\n </View>\n ) : null}\n\n {message ? (\n <Text style={[styles.message, { color: message.error ? palette.danger : palette.textMuted }]}>\n {message.text}\n </Text>\n ) : null}\n\n <Pressable\n accessibilityRole=\"button\"\n onPress={() =>\n run(\n 'publish',\n NATIVE_NOTION_PUBLISH,\n { input: { blockId: pageId, visibility } },\n pub ? 'Published again' : 'Published',\n )\n }\n disabled={Boolean(busy)}\n style={[ui.primaryButton, styles.block, { backgroundColor: palette.primary }]}\n >\n {busy === 'publish' ? (\n <ActivityIndicator size=\"small\" color={palette.onPrimary} />\n ) : (\n <Text style={[ui.primaryButtonLabel, { color: palette.onPrimary }]}>\n {pub ? 'Update published page' : 'Publish to web'}\n </Text>\n )}\n </Pressable>\n {pub ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={() =>\n Alert.alert('Unpublish?', 'The public link stops working.', [\n { text: 'Cancel', style: 'cancel' },\n {\n text: 'Unpublish',\n style: 'destructive',\n onPress: () =>\n run('unpublish', NATIVE_NOTION_UNPUBLISH, { blockId: pageId }, 'Unpublished'),\n },\n ])\n }\n style={styles.textButton}\n >\n <Text style={[styles.dangerLabel, { color: palette.danger }]}>Unpublish</Text>\n </Pressable>\n ) : null}\n\n {pub ? (\n <>\n <Text style={[styles.label, { color: palette.textMuted }]}>Custom domains</Text>\n <View style={[styles.card, { backgroundColor: palette.card }]}>\n {(pub.domains ?? []).map((d) => (\n <View key={d.domain} style={[styles.domain, { borderBottomColor: palette.hairline }]}>\n <View style={styles.liveHead}>\n <Text style={[styles.personName, { color: palette.text, flex: 1 }]}>\n {d.domain}\n </Text>\n <Text\n style={[\n styles.level,\n {\n color:\n d.status === 'active'\n ? '#10b981'\n : d.status === 'error'\n ? palette.danger\n : palette.textMuted,\n },\n ]}\n >\n {d.status}\n </Text>\n </View>\n {d.message ? (\n <Text style={[styles.sub, { color: palette.textMuted }]}>{d.message}</Text>\n ) : null}\n {(d.dnsRecords ?? []).map((r, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Text\n key={i}\n selectable\n style={[styles.dns, { color: palette.text, backgroundColor: palette.fill }]}\n >\n {`${r.type} ${r.name} → ${r.value}`}\n </Text>\n ))}\n <View style={styles.row}>\n <SmallButton\n palette={palette}\n label=\"Check\"\n busy={busy === `r:${d.domain}`}\n onPress={() =>\n run(`r:${d.domain}`, NATIVE_NOTION_REFRESH_DOMAIN, {\n blockId: pageId,\n domain: d.domain,\n })\n }\n />\n <SmallButton\n palette={palette}\n label=\"Remove\"\n danger\n onPress={() =>\n run(`x:${d.domain}`, NATIVE_NOTION_REMOVE_DOMAIN, {\n blockId: pageId,\n domain: d.domain,\n })\n }\n />\n </View>\n </View>\n ))}\n <View style={styles.row}>\n <TextInput\n value={domain}\n onChangeText={setDomain}\n placeholder=\"docs.example.com\"\n placeholderTextColor={palette.textFaint}\n autoCapitalize=\"none\"\n autoCorrect={false}\n keyboardType=\"url\"\n style={[\n styles.input,\n styles.flexInput,\n { color: palette.text, backgroundColor: palette.fill },\n ]}\n />\n <SmallButton\n palette={palette}\n label=\"Add\"\n busy={busy === 'add'}\n onPress={async () => {\n if (!domain.trim()) return;\n if (\n await run('add', NATIVE_NOTION_ADD_DOMAIN, {\n blockId: pageId,\n domain: domain.trim().toLowerCase(),\n })\n )\n setDomain('');\n }}\n />\n </View>\n </View>\n </>\n ) : null}\n </ScrollView>\n );\n}\n\nfunction SmallButton({\n palette,\n label,\n onPress,\n busy,\n danger,\n}: {\n palette: Palette;\n label: string;\n onPress: () => void;\n busy?: boolean;\n danger?: boolean;\n}) {\n return (\n <Pressable\n accessibilityRole=\"button\"\n onPress={onPress}\n disabled={busy}\n style={[styles.small, { backgroundColor: danger ? palette.dangerSoft : palette.fill }]}\n >\n {busy ? (\n <ActivityIndicator size=\"small\" color={palette.textMuted} />\n ) : (\n <Text style={[styles.smallLabel, { color: danger ? palette.danger : palette.text }]}>{label}</Text>\n )}\n </Pressable>\n );\n}\n\nfunction Busy({ palette }: { palette: Palette }) {\n return (\n <View style={styles.loading}>\n <ActivityIndicator color={palette.textMuted} />\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n tabs: { flexDirection: 'row', margin: 16, marginBottom: 4, padding: 3, borderRadius: 12 },\n tab: { flex: 1, alignItems: 'center', paddingVertical: 8, borderRadius: 9 },\n tabLabel: { fontSize: 14, fontWeight: '600' },\n loading: { paddingVertical: 48, alignItems: 'center' },\n content: { padding: 16, paddingBottom: 48 },\n card: { padding: 14, borderRadius: 16 },\n input: { fontSize: 16, height: 44, paddingHorizontal: 12, borderRadius: 10 },\n flexInput: { flex: 1 },\n chips: { gap: 8, marginTop: 10 },\n chip: { paddingHorizontal: 12, paddingVertical: 7, borderRadius: 999 },\n chipLabel: { fontSize: 13, fontWeight: '600' },\n block: { alignSelf: 'stretch' },\n disabled: { opacity: 0.45 },\n message: { fontSize: 13, marginTop: 10 },\n label: { fontSize: 13, fontWeight: '600', marginTop: 20, marginBottom: 8, marginLeft: 4 },\n person: { flexDirection: 'row', alignItems: 'center', paddingLeft: 14, gap: 0 },\n personBody: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n marginLeft: 12,\n paddingRight: 14,\n minHeight: 52,\n },\n personName: { flexShrink: 1, fontSize: 15, fontWeight: '600' },\n level: { marginLeft: 'auto', fontSize: 13, fontWeight: '600' },\n sub: { fontSize: 12, marginTop: 2 },\n avatar: { width: 30, height: 30, borderRadius: 15, alignItems: 'center', justifyContent: 'center' },\n avatarText: { fontSize: 13, fontWeight: '800' },\n emptyRow: { fontSize: 14, padding: 14 },\n secondary: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 6,\n minHeight: 46,\n borderRadius: 12,\n marginTop: 20,\n },\n secondaryLabel: { fontSize: 15, fontWeight: '700' },\n liveHead: { flexDirection: 'row', alignItems: 'center', gap: 8 },\n liveDot: { width: 8, height: 8, borderRadius: 4 },\n url: { fontSize: 14, marginTop: 8 },\n row: { flexDirection: 'row', alignItems: 'center', gap: 8, marginTop: 10 },\n small: { minHeight: 36, paddingHorizontal: 14, borderRadius: 10, alignItems: 'center', justifyContent: 'center' },\n smallLabel: { fontSize: 14, fontWeight: '700' },\n textButton: { alignItems: 'center', paddingVertical: 12 },\n dangerLabel: { fontSize: 15, fontWeight: '700' },\n domain: { paddingBottom: 12, marginBottom: 12, borderBottomWidth: StyleSheet.hairlineWidth, gap: 4 },\n dns: {\n fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',\n fontSize: 12,\n padding: 8,\n borderRadius: 8,\n marginTop: 4,\n },\n});\n"],"names":["_a"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useCallback,
|
|
1
|
+
import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useState,useCallback,useMemo}from'react';import {FlatList,StyleSheet,View,Text,Pressable,RefreshControl,ScrollView,SectionList,ActivityIndicator,Alert,TextInput}from'react-native';import {Ionicons}from'@expo/vector-icons';import {useApolloClient,useQuery}from'@apollo/client/index.js';import {NATIVE_NOTION_INBOX,NATIVE_NOTION_MARK_INBOX_READ,NATIVE_NOTION_CHILDREN,NATIVE_NOTION_PAGE_TREE}from'./notionDocuments.js';import {formatMeetingWhen,MEETING_STATUS_LABEL,editedLabel,groupMeetings,pageTitle}from'./notionBlocks.js';import {userTemplateEntry,BUILT_IN_TEMPLATES,filterTemplates,TEMPLATE_CATEGORIES,templateRootFromTree}from'./notionTemplates.js';import {ListRow,Pill,EmptyState,SectionHeader,ui,PageRow}from'./notionUi.js';function Loading({
|
|
2
2
|
palette
|
|
3
3
|
}) {
|
|
4
4
|
return /* @__PURE__ */ jsx(View, { style: styles.loading, children: /* @__PURE__ */ jsx(ActivityIndicator, { color: palette.textMuted }) });
|
|
@@ -75,8 +75,10 @@ function InboxSheet({
|
|
|
75
75
|
},
|
|
76
76
|
fetchPolicy: "network-only"
|
|
77
77
|
});
|
|
78
|
-
const
|
|
79
|
-
const unread =
|
|
78
|
+
const all = (_a = data == null ? void 0 : data.notesInbox) != null ? _a : [];
|
|
79
|
+
const unread = all.filter((i) => !i.readAt).length;
|
|
80
|
+
const [tab, setTab] = useState("all");
|
|
81
|
+
const items = tab === "unread" ? all.filter((i) => !i.readAt) : all;
|
|
80
82
|
const markRead = useCallback(async (opts) => {
|
|
81
83
|
try {
|
|
82
84
|
await client.mutate({
|
|
@@ -89,17 +91,29 @@ function InboxSheet({
|
|
|
89
91
|
} catch (e) {
|
|
90
92
|
}
|
|
91
93
|
}, [client, refetch]);
|
|
94
|
+
let inboxEmptyTitle = "You're all caught up";
|
|
95
|
+
if (error) inboxEmptyTitle = "Couldn't load your inbox";
|
|
96
|
+
else if (tab === "unread" && all.length) inboxEmptyTitle = "No unread items";
|
|
92
97
|
if (loading && !data) return /* @__PURE__ */ jsx(Loading, { palette });
|
|
93
|
-
return /* @__PURE__ */ jsx(FlatList, { data: items, keyExtractor: (i) => i.id, contentContainerStyle: styles.content, refreshControl: /* @__PURE__ */ jsx(RefreshControl, { refreshing: false, onRefresh: () => refetch() }), ListHeaderComponent:
|
|
94
|
-
/* @__PURE__ */ jsx(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
98
|
+
return /* @__PURE__ */ jsx(FlatList, { data: items, keyExtractor: (i) => i.id, contentContainerStyle: styles.content, refreshControl: /* @__PURE__ */ jsx(RefreshControl, { refreshing: false, onRefresh: () => refetch() }), ListHeaderComponent: /* @__PURE__ */ jsxs(View, { style: styles.toolbar, children: [
|
|
99
|
+
/* @__PURE__ */ jsx(Chips, { palette, options: [{
|
|
100
|
+
id: "all",
|
|
101
|
+
label: "All"
|
|
102
|
+
}, {
|
|
103
|
+
id: "unread",
|
|
104
|
+
label: unread ? `Unread (${unread})` : "Unread"
|
|
105
|
+
}], value: tab, onChange: setTab }),
|
|
106
|
+
unread ? /* @__PURE__ */ jsxs(View, { style: styles.inboxHeader, children: [
|
|
107
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.note, {
|
|
108
|
+
color: palette.textMuted
|
|
109
|
+
}], children: `${unread} unread` }),
|
|
110
|
+
/* @__PURE__ */ jsx(Pressable, { accessibilityRole: "button", onPress: () => markRead({
|
|
111
|
+
all: true
|
|
112
|
+
}), hitSlop: 8, children: /* @__PURE__ */ jsx(Text, { style: [styles.link, {
|
|
113
|
+
color: palette.primary
|
|
114
|
+
}], children: "Mark all read" }) })
|
|
115
|
+
] }) : null
|
|
116
|
+
] }), ListEmptyComponent: /* @__PURE__ */ jsx(EmptyState, { palette, icon: error ? "cloud-offline-outline" : "notifications-outline", title: inboxEmptyTitle, text: error ? "Pull down to try again." : "Mentions of you, replies, comments on your pages and @date reminders show up here." }), renderItem: ({
|
|
103
117
|
item,
|
|
104
118
|
index
|
|
105
119
|
}) => {
|
|
@@ -201,11 +215,41 @@ function AllPagesSheet({
|
|
|
201
215
|
}) {
|
|
202
216
|
const [filter, setFilter] = useState("");
|
|
203
217
|
const [sort, setSort] = useState("edited");
|
|
218
|
+
const [selecting, setSelecting] = useState(false);
|
|
219
|
+
const [selected, setSelected] = useState(/* @__PURE__ */ new Set());
|
|
220
|
+
const [busy, setBusy] = useState(false);
|
|
204
221
|
const rows = useMemo(() => {
|
|
205
222
|
const q = filter.trim().toLowerCase();
|
|
206
223
|
const list = notion.pages.filter((p) => !q || pageTitle(p).toLowerCase().includes(q));
|
|
207
224
|
return sort === "title" ? [...list].sort((a, b) => pageTitle(a).localeCompare(pageTitle(b))) : list;
|
|
208
225
|
}, [filter, notion.pages, sort]);
|
|
226
|
+
const allSelected = rows.length > 0 && rows.every((p) => selected.has(p.id));
|
|
227
|
+
const toggle = (id) => setSelected((cur) => {
|
|
228
|
+
const next = new Set(cur);
|
|
229
|
+
if (next.has(id)) next.delete(id);
|
|
230
|
+
else next.add(id);
|
|
231
|
+
return next;
|
|
232
|
+
});
|
|
233
|
+
const trashSelected = async () => {
|
|
234
|
+
const ids = [...selected];
|
|
235
|
+
if (!ids.length) return;
|
|
236
|
+
setBusy(true);
|
|
237
|
+
const results = await Promise.allSettled(ids.map((id) => notion.trashPage(id)));
|
|
238
|
+
setBusy(false);
|
|
239
|
+
const done = ids.filter((_, i) => results[i].status === "fulfilled");
|
|
240
|
+
setSelected(/* @__PURE__ */ new Set());
|
|
241
|
+
setSelecting(false);
|
|
242
|
+
const failed = ids.length - done.length;
|
|
243
|
+
Alert.alert(`Moved ${done.length} ${done.length === 1 ? "page" : "pages"} to Trash`, failed ? `${failed} could not be moved.` : void 0, [{
|
|
244
|
+
text: "OK",
|
|
245
|
+
style: "cancel"
|
|
246
|
+
}, ...done.length ? [{
|
|
247
|
+
text: "Undo",
|
|
248
|
+
onPress: () => {
|
|
249
|
+
Promise.allSettled(done.map((id) => notion.restorePage(id)));
|
|
250
|
+
}
|
|
251
|
+
}] : []]);
|
|
252
|
+
};
|
|
209
253
|
return /* @__PURE__ */ jsx(FlatList, { data: rows, keyExtractor: (p) => p.id, keyboardShouldPersistTaps: "handled", contentContainerStyle: styles.content, ListHeaderComponent: /* @__PURE__ */ jsxs(View, { style: styles.toolbar, children: [
|
|
210
254
|
/* @__PURE__ */ jsx(SearchField, { palette, value: filter, onChange: setFilter, placeholder: "Filter by title" }),
|
|
211
255
|
/* @__PURE__ */ jsx(Chips, { palette, options: [{
|
|
@@ -214,11 +258,35 @@ function AllPagesSheet({
|
|
|
214
258
|
}, {
|
|
215
259
|
id: "title",
|
|
216
260
|
label: "Title A\u2013Z"
|
|
217
|
-
}], value: sort, onChange: setSort })
|
|
261
|
+
}], value: sort, onChange: setSort }),
|
|
262
|
+
rows.length ? /* @__PURE__ */ jsxs(View, { style: styles.inboxHeader, children: [
|
|
263
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.note, {
|
|
264
|
+
color: palette.textMuted
|
|
265
|
+
}], children: selecting ? `${selected.size} selected` : `${rows.length} pages` }),
|
|
266
|
+
/* @__PURE__ */ jsxs(View, { style: styles.headerActions, children: [
|
|
267
|
+
selecting ? /* @__PURE__ */ jsx(Pressable, { accessibilityRole: "button", onPress: () => setSelected(allSelected ? /* @__PURE__ */ new Set() : new Set(rows.map((p) => p.id))), hitSlop: 8, children: /* @__PURE__ */ jsx(Text, { style: [styles.link, {
|
|
268
|
+
color: palette.primary
|
|
269
|
+
}], children: allSelected ? "Deselect all" : "Select all" }) }) : null,
|
|
270
|
+
/* @__PURE__ */ jsx(Pressable, { accessibilityRole: "button", onPress: () => {
|
|
271
|
+
setSelecting((v) => !v);
|
|
272
|
+
setSelected(/* @__PURE__ */ new Set());
|
|
273
|
+
}, hitSlop: 8, children: /* @__PURE__ */ jsx(Text, { style: [styles.link, {
|
|
274
|
+
color: palette.primary
|
|
275
|
+
}], children: selecting ? "Cancel" : "Select" }) })
|
|
276
|
+
] })
|
|
277
|
+
] }) : null,
|
|
278
|
+
selecting && selected.size ? /* @__PURE__ */ jsx(Pressable, { accessibilityRole: "button", onPress: trashSelected, disabled: busy, style: [styles.wideButton, {
|
|
279
|
+
backgroundColor: palette.dangerSoft
|
|
280
|
+
}], children: busy ? /* @__PURE__ */ jsx(ActivityIndicator, { size: "small", color: palette.danger }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
281
|
+
/* @__PURE__ */ jsx(Ionicons, { name: "trash-outline", size: 18, color: palette.danger }),
|
|
282
|
+
/* @__PURE__ */ jsx(Text, { style: [styles.wideButtonLabel, {
|
|
283
|
+
color: palette.danger
|
|
284
|
+
}], children: `Move ${selected.size} to trash` })
|
|
285
|
+
] }) }) : null
|
|
218
286
|
] }), ListEmptyComponent: /* @__PURE__ */ jsx(EmptyState, { palette, icon: "documents-outline", title: filter.trim() ? "No matching pages" : "No pages yet", text: filter.trim() ? "Try a different title." : "Pages you create show up here." }), renderItem: ({
|
|
219
287
|
item,
|
|
220
288
|
index
|
|
221
|
-
}) => /* @__PURE__ */ jsx(View, { style: groupedItemStyle(palette, index, rows.length), children: /* @__PURE__ */ jsx(PageRow, { page: item, palette, onPress: () => onOpenPage(item.id), divider: index < rows.length - 1 }) }) });
|
|
289
|
+
}) => /* @__PURE__ */ jsx(View, { style: groupedItemStyle(palette, index, rows.length), children: /* @__PURE__ */ jsx(PageRow, { page: item, palette, onPress: () => selecting ? toggle(item.id) : onOpenPage(item.id), divider: index < rows.length - 1, trailing: selecting ? /* @__PURE__ */ jsx(Ionicons, { name: selected.has(item.id) ? "checkbox" : "square-outline", size: 22, color: selected.has(item.id) ? palette.primary : palette.textMuted }) : void 0 }) }) });
|
|
222
290
|
}
|
|
223
291
|
function TemplatesSheet({
|
|
224
292
|
palette,
|
|
@@ -363,6 +431,10 @@ const styles = StyleSheet.create({
|
|
|
363
431
|
gap: 12,
|
|
364
432
|
marginBottom: 12
|
|
365
433
|
},
|
|
434
|
+
headerActions: {
|
|
435
|
+
flexDirection: "row",
|
|
436
|
+
gap: 18
|
|
437
|
+
},
|
|
366
438
|
inboxHeader: {
|
|
367
439
|
flexDirection: "row",
|
|
368
440
|
justifyContent: "space-between",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotionSheets.js","sources":["../../../src/features/notion/NotionSheets.tsx"],"sourcesContent":["/**\n * The web Notion sidebar's screens as native page sheets: Inbox, Meetings,\n * All pages, Templates and Trash. Each mirrors its web container\n * (forms-stack notion-api/browser/src/containers) on the same GraphQL.\n */\nimport React, { useCallback, useMemo, useState } from 'react';\nimport {\n ActivityIndicator,\n Alert,\n FlatList,\n Pressable,\n RefreshControl,\n ScrollView,\n SectionList,\n StyleSheet,\n Text,\n TextInput,\n View,\n} from 'react-native';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useApolloClient, useQuery } from '@apollo/client';\nimport {\n NATIVE_NOTION_CHILDREN,\n NATIVE_NOTION_INBOX,\n NATIVE_NOTION_MARK_INBOX_READ,\n NATIVE_NOTION_PAGE_TREE,\n NATIVE_NOTION_RESTORE_BLOCK,\n NATIVE_NOTION_TRASH,\n} from './notionDocuments';\nimport {\n MEETING_STATUS_LABEL,\n editedLabel,\n formatMeetingWhen,\n groupMeetings,\n pageTitle,\n type MeetingRow,\n type MeetingStatus,\n type NotionBlock,\n type NotionBlockTree,\n} from './notionBlocks';\nimport {\n BUILT_IN_TEMPLATES,\n TEMPLATE_CATEGORIES,\n filterTemplates,\n templateRootFromTree,\n userTemplateEntry,\n type PageTemplate,\n} from './notionTemplates';\nimport type { NotionPalette } from './notionTheme';\nimport { EmptyState, ListRow, PageRow, Pill, SectionHeader, ui } from './notionUi';\nimport type { NotionWorkspaceState } from './useNotionWorkspace';\n\ntype Palette = NotionPalette;\n\nfunction Loading({ palette }: { palette: Palette }) {\n return (\n <View style={styles.loading}>\n <ActivityIndicator color={palette.textMuted} />\n </View>\n );\n}\n\n/** Rows rendered as one rounded group inside a FlatList. */\nfunction groupedItemStyle(palette: Palette, index: number, count: number) {\n return [\n { backgroundColor: palette.card },\n index === 0 && styles.groupTop,\n index === count - 1 && styles.groupBottom,\n ];\n}\n\nfunction SearchField({\n palette,\n value,\n onChange,\n placeholder,\n}: {\n palette: Palette;\n value: string;\n onChange: (v: string) => void;\n placeholder: string;\n}) {\n return (\n <View style={[styles.searchField, { backgroundColor: palette.fill }]}>\n <Ionicons name=\"search\" size={17} color={palette.textMuted} />\n <TextInput\n value={value}\n onChangeText={onChange}\n placeholder={placeholder}\n placeholderTextColor={palette.textMuted}\n autoCorrect={false}\n clearButtonMode=\"while-editing\"\n style={[styles.searchInput, { color: palette.text }]}\n />\n </View>\n );\n}\n\nfunction Chips<T extends string>({\n palette,\n options,\n value,\n onChange,\n}: {\n palette: Palette;\n options: Array<{ id: T; label: string }>;\n value: T;\n onChange: (v: T) => void;\n}) {\n return (\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.chips}>\n {options.map((o) => {\n const selected = o.id === value;\n return (\n <Pressable\n key={o.id}\n accessibilityRole=\"tab\"\n accessibilityState={{ selected }}\n onPress={() => onChange(o.id)}\n style={[styles.chip, { backgroundColor: selected ? palette.text : palette.fill }]}\n >\n <Text style={[styles.chipLabel, { color: selected ? palette.card : palette.text }]}>\n {o.label}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n );\n}\n\n// ============================================================================\n// INBOX\n// ============================================================================\n\ninterface InboxItem {\n id: string;\n kind: string;\n pageId?: string | null;\n blockId: string;\n text: string;\n createdAt: string;\n dueAt?: string | null;\n showAt: string;\n readAt?: string | null;\n}\n\nconst INBOX_KIND: Record<string, { icon: React.ComponentProps<typeof Ionicons>['name']; label: string }> = {\n mention: { icon: 'at', label: 'Mentioned you' },\n reminder: { icon: 'alarm-outline', label: 'Reminder' },\n reply: { icon: 'return-down-forward', label: 'Replied' },\n comment: { icon: 'chatbubble-outline', label: 'Commented' },\n};\n\nexport function InboxSheet({ palette, onOpenPage }: { palette: Palette; onOpenPage: (id: string) => void }) {\n const client = useApolloClient();\n const { data, loading, error, refetch } = useQuery<{ notesInbox?: InboxItem[] | null }>(NATIVE_NOTION_INBOX, {\n variables: { limit: 50 },\n fetchPolicy: 'network-only',\n });\n const items = data?.notesInbox ?? [];\n const unread = items.filter((i) => !i.readAt).length;\n\n const markRead = useCallback(\n async (opts: { ids?: string[]; all?: boolean }) => {\n try {\n await client.mutate({ mutation: NATIVE_NOTION_MARK_INBOX_READ, variables: opts });\n await Promise.all([refetch(), client.refetchQueries({ include: ['NativeNotionInboxUnread'] })]);\n } catch {\n // Read state is cosmetic; the next refresh shows the truth.\n }\n },\n [client, refetch],\n );\n\n if (loading && !data) return <Loading palette={palette} />;\n return (\n <FlatList\n data={items}\n keyExtractor={(i) => i.id}\n contentContainerStyle={styles.content}\n refreshControl={<RefreshControl refreshing={false} onRefresh={() => refetch()} />}\n ListHeaderComponent={\n unread ? (\n <View style={styles.inboxHeader}>\n <Text style={[styles.note, { color: palette.textMuted }]}>{`${unread} unread`}</Text>\n <Pressable accessibilityRole=\"button\" onPress={() => markRead({ all: true })} hitSlop={8}>\n <Text style={[styles.link, { color: palette.primary }]}>Mark all read</Text>\n </Pressable>\n </View>\n ) : null\n }\n ListEmptyComponent={\n <EmptyState\n palette={palette}\n icon={error ? 'cloud-offline-outline' : 'notifications-outline'}\n title={error ? \"Couldn't load your inbox\" : \"You're all caught up\"}\n text={error ? 'Pull down to try again.' : 'Mentions of you and your @date reminders show up here.'}\n />\n }\n renderItem={({ item, index }) => {\n const kind = INBOX_KIND[item.kind] ?? INBOX_KIND.mention;\n const when = editedLabel(item.dueAt ?? item.showAt ?? item.createdAt).replace('Edited ', '');\n return (\n <View style={groupedItemStyle(palette, index, items.length)}>\n <ListRow\n palette={palette}\n icon={kind.icon}\n iconColor={item.readAt ? palette.textMuted : palette.primary}\n iconBg={item.readAt ? palette.fill : palette.primarySoft}\n title={item.text || kind.label}\n subtitle={`${kind.label}${when ? ` · ${when}` : ''}`}\n divider={index < items.length - 1}\n onPress={() => {\n if (!item.readAt) markRead({ ids: [item.id] });\n onOpenPage(item.pageId || item.blockId);\n }}\n trailing={\n item.readAt ? undefined : (\n <View style={[styles.unreadDot, { backgroundColor: palette.primary }]} />\n )\n }\n />\n </View>\n );\n }}\n />\n );\n}\n\n// ============================================================================\n// MEETINGS\n// ============================================================================\n\nconst STATUS_COLORS: Record<MeetingStatus, { fg: string; bg: string }> = {\n scheduled: { fg: '#0369a1', bg: 'rgba(14,165,233,0.12)' },\n live: { fg: '#e11d48', bg: 'rgba(244,63,94,0.14)' },\n ended: { fg: '#78716c', bg: 'rgba(120,113,108,0.12)' },\n};\n\nexport function MeetingRowView({\n row,\n palette,\n onPress,\n divider,\n}: {\n row: MeetingRow;\n palette: Palette;\n onPress: () => void;\n divider?: boolean;\n}) {\n const status = STATUS_COLORS[row.status];\n const who = row.attendees.length ? ` · ${row.attendees.join(', ')}` : '';\n return (\n <ListRow\n palette={palette}\n emoji={row.icon}\n icon=\"calendar-outline\"\n title={row.title}\n subtitle={`${formatMeetingWhen(row.startsAt)}${who}`}\n onPress={onPress}\n divider={divider}\n trailing={<Pill label={MEETING_STATUS_LABEL[row.status]} color={status.fg} bg={status.bg} />}\n />\n );\n}\n\nexport function MeetingsSheet({\n palette,\n notion,\n onOpenPage,\n}: {\n palette: Palette;\n notion: NotionWorkspaceState;\n onOpenPage: (id: string) => void;\n}) {\n const [creating, setCreating] = useState(false);\n const sections = useMemo(() => {\n const g = groupMeetings(notion.meetings);\n return [\n { title: 'Today', data: g.today },\n { title: 'Upcoming', data: g.upcoming },\n { title: 'Past', data: g.past },\n ].filter((s) => s.data.length);\n }, [notion.meetings]);\n\n const newMeeting = async () => {\n setCreating(true);\n try {\n const created = await notion.createMeeting();\n if (created?.id) onOpenPage(created.id);\n } catch (err) {\n Alert.alert(\"Couldn't create the meeting\", err instanceof Error ? err.message : undefined);\n } finally {\n setCreating(false);\n }\n };\n\n if (!sections.length) {\n return (\n <ScrollView contentContainerStyle={styles.content}>\n <EmptyState\n palette={palette}\n icon=\"calendar-outline\"\n title=\"No meetings yet\"\n text=\"A meeting page holds the agenda, attendees and AI meeting notes.\"\n action={{ label: 'New meeting', onPress: newMeeting, busy: creating }}\n />\n </ScrollView>\n );\n }\n return (\n <SectionList\n sections={sections}\n keyExtractor={(r) => r.id}\n contentContainerStyle={styles.content}\n stickySectionHeadersEnabled={false}\n ListHeaderComponent={\n <Pressable\n accessibilityRole=\"button\"\n onPress={newMeeting}\n disabled={creating}\n style={({ pressed }) => [\n styles.wideButton,\n { backgroundColor: palette.primarySoft },\n pressed && ui.pressedScale,\n ]}\n >\n {creating ? (\n <ActivityIndicator size=\"small\" color={palette.primary} />\n ) : (\n <>\n <Ionicons name=\"add\" size={18} color={palette.primary} />\n <Text style={[styles.wideButtonLabel, { color: palette.primary }]}>New meeting</Text>\n </>\n )}\n </Pressable>\n }\n renderSectionHeader={({ section }) => (\n <SectionHeader label={section.title} count={section.data.length} palette={palette} />\n )}\n renderItem={({ item, index, section }) => (\n <View style={groupedItemStyle(palette, index, section.data.length)}>\n <MeetingRowView\n row={item}\n palette={palette}\n onPress={() => onOpenPage(item.id)}\n divider={index < section.data.length - 1}\n />\n </View>\n )}\n />\n );\n}\n\n// ============================================================================\n// ALL PAGES\n// ============================================================================\n\ntype PageSort = 'edited' | 'title';\n\nexport function AllPagesSheet({\n palette,\n notion,\n onOpenPage,\n}: {\n palette: Palette;\n notion: NotionWorkspaceState;\n onOpenPage: (id: string) => void;\n}) {\n const [filter, setFilter] = useState('');\n const [sort, setSort] = useState<PageSort>('edited');\n const rows = useMemo(() => {\n const q = filter.trim().toLowerCase();\n const list = notion.pages.filter((p) => !q || pageTitle(p).toLowerCase().includes(q));\n return sort === 'title' ? [...list].sort((a, b) => pageTitle(a).localeCompare(pageTitle(b))) : list;\n }, [filter, notion.pages, sort]);\n\n return (\n <FlatList\n data={rows}\n keyExtractor={(p) => p.id}\n keyboardShouldPersistTaps=\"handled\"\n contentContainerStyle={styles.content}\n ListHeaderComponent={\n <View style={styles.toolbar}>\n <SearchField palette={palette} value={filter} onChange={setFilter} placeholder=\"Filter by title\" />\n <Chips<PageSort>\n palette={palette}\n options={[\n { id: 'edited', label: 'Last edited' },\n { id: 'title', label: 'Title A–Z' },\n ]}\n value={sort}\n onChange={setSort}\n />\n </View>\n }\n ListEmptyComponent={\n <EmptyState\n palette={palette}\n icon=\"documents-outline\"\n title={filter.trim() ? 'No matching pages' : 'No pages yet'}\n text={filter.trim() ? 'Try a different title.' : 'Pages you create show up here.'}\n />\n }\n renderItem={({ item, index }) => (\n <View style={groupedItemStyle(palette, index, rows.length)}>\n <PageRow\n page={item}\n palette={palette}\n onPress={() => onOpenPage(item.id)}\n divider={index < rows.length - 1}\n />\n </View>\n )}\n />\n );\n}\n\n// ============================================================================\n// TEMPLATES\n// ============================================================================\n\ntype TemplateCategoryId = (typeof TEMPLATE_CATEGORIES)[number]['id'];\n\nexport function TemplatesSheet({\n palette,\n notion,\n onOpenPage,\n}: {\n palette: Palette;\n notion: NotionWorkspaceState;\n onOpenPage: (id: string) => void;\n}) {\n const client = useApolloClient();\n const [category, setCategory] = useState<TemplateCategoryId>('all');\n const [query, setQuery] = useState('');\n const [using, setUsing] = useState<string | null>(null);\n\n // \"My templates\": pages saved under the workspace's hidden template library page.\n const libraryQuery = useQuery<{ getBlockChildren?: { results?: NotionBlock[] | null } | null }>(\n NATIVE_NOTION_CHILDREN,\n {\n variables: { blockId: notion.templateLibraryId ?? '', pageSize: 100 },\n skip: !notion.templateLibraryId,\n fetchPolicy: 'cache-and-network',\n },\n );\n const mine = useMemo(\n () =>\n (libraryQuery.data?.getBlockChildren?.results ?? [])\n .filter((b) => !b.inTrash && (b.type === 'page' || b.type === 'database'))\n .map(userTemplateEntry),\n [libraryQuery.data],\n );\n\n const all = useMemo(() => [...BUILT_IN_TEMPLATES, ...mine], [mine]);\n const shown = useMemo(() => filterTemplates(all, category, query), [all, category, query]);\n const sections = useMemo(() => {\n if (category !== 'all') return [{ title: '', data: shown }];\n return TEMPLATE_CATEGORIES.filter((c) => c.id !== 'all')\n .map((c) => ({ title: c.label, data: shown.filter((t) => t.category === c.id) }))\n .filter((s) => s.data.length);\n }, [category, shown]);\n\n const use = async (template: PageTemplate) => {\n if (!notion.workspace) {\n Alert.alert('Create a workspace first', 'Templates create pages inside a workspace.');\n return;\n }\n setUsing(template.id);\n try {\n let root = template.root;\n if (template.sourceBlockId) {\n const res = await client.query<{ getBlockTree?: NotionBlockTree | null }>({\n query: NATIVE_NOTION_PAGE_TREE,\n variables: { input: { blockId: template.sourceBlockId, includeChildren: true, maxDepth: 5 } },\n fetchPolicy: 'network-only',\n });\n const tree = res.data?.getBlockTree;\n if (!tree) throw new Error('Template not found');\n root = templateRootFromTree(tree as Parameters<typeof templateRootFromTree>[0]);\n }\n const created = await notion.createFromTemplate({ root });\n if (created?.failedRows) {\n Alert.alert('Some rows were not added', `${created.failedRows} database row(s) could not be created.`);\n }\n if (created?.id) onOpenPage(created.id);\n } catch (err) {\n Alert.alert(\"Couldn't use this template\", err instanceof Error ? err.message : undefined);\n } finally {\n setUsing(null);\n }\n };\n\n return (\n <SectionList\n sections={sections}\n keyExtractor={(t) => t.id}\n keyboardShouldPersistTaps=\"handled\"\n contentContainerStyle={styles.content}\n stickySectionHeadersEnabled={false}\n ListHeaderComponent={\n <View style={styles.toolbar}>\n <Text style={[styles.note, { color: palette.textMuted }]}>\n Start a page from a template, or save any page as your own from the web.\n </Text>\n <SearchField palette={palette} value={query} onChange={setQuery} placeholder=\"Search templates\" />\n <Chips<TemplateCategoryId>\n palette={palette}\n options={TEMPLATE_CATEGORIES}\n value={category}\n onChange={setCategory}\n />\n </View>\n }\n ListEmptyComponent={\n <EmptyState\n palette={palette}\n icon=\"albums-outline\"\n title={category === 'mine' ? 'No saved templates' : 'No matching templates'}\n text={\n category === 'mine'\n ? 'Save a page as a template from its ••• menu on the web.'\n : 'Try another search or category.'\n }\n />\n }\n renderSectionHeader={({ section }) =>\n section.title ? <SectionHeader label={section.title} palette={palette} /> : null\n }\n renderItem={({ item }) => (\n <TemplateCard\n template={item}\n palette={palette}\n busy={using === item.id}\n disabled={Boolean(using)}\n onUse={() => use(item)}\n />\n )}\n />\n );\n}\n\nfunction TemplateCard({\n template,\n palette,\n busy,\n disabled,\n onUse,\n}: {\n template: PageTemplate;\n palette: Palette;\n busy: boolean;\n disabled: boolean;\n onUse: () => void;\n}) {\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={`Use template ${template.name}`}\n onPress={onUse}\n disabled={disabled}\n style={({ pressed }) => [\n styles.templateCard,\n { backgroundColor: pressed ? palette.pressed : palette.card },\n ui.cardShadow,\n ]}\n >\n <View style={[styles.templateIcon, { backgroundColor: palette.fill }]}>\n <Text style={styles.templateEmoji}>{template.icon}</Text>\n </View>\n <View style={ui.flex}>\n <Text numberOfLines={1} style={[styles.templateName, { color: palette.text }]}>\n {template.name}\n </Text>\n <Text numberOfLines={2} style={[styles.templateDesc, { color: palette.textMuted }]}>\n {template.description}\n </Text>\n </View>\n <View style={[styles.useButton, { backgroundColor: palette.primarySoft }]}>\n {busy ? (\n <ActivityIndicator size=\"small\" color={palette.primary} />\n ) : (\n <Text style={[styles.useLabel, { color: palette.primary }]}>Use</Text>\n )}\n </View>\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n loading: { paddingVertical: 48, alignItems: 'center' },\n content: { padding: 16, paddingBottom: 48 },\n groupTop: { borderTopLeftRadius: 16, borderTopRightRadius: 16 },\n groupBottom: { borderBottomLeftRadius: 16, borderBottomRightRadius: 16 },\n note: { fontSize: 14, lineHeight: 20 },\n link: { fontSize: 15, fontWeight: '600' },\n toolbar: { gap: 12, marginBottom: 12 },\n inboxHeader: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', marginBottom: 12 },\n unreadDot: { width: 9, height: 9, borderRadius: 5 },\n searchField: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n height: 40,\n paddingHorizontal: 12,\n borderRadius: 12,\n },\n searchInput: { flex: 1, fontSize: 16, paddingVertical: 0 },\n chips: { gap: 8 },\n chip: { paddingHorizontal: 14, paddingVertical: 8, borderRadius: 999 },\n chipLabel: { fontSize: 14, fontWeight: '600' },\n wideButton: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 6,\n minHeight: 48,\n borderRadius: 14,\n },\n wideButtonLabel: { fontSize: 16, fontWeight: '700' },\n templateCard: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n padding: 14,\n borderRadius: 16,\n marginBottom: 10,\n },\n templateIcon: { width: 44, height: 44, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },\n templateEmoji: { fontSize: 22 },\n templateName: { fontSize: 16, fontWeight: '700' },\n templateDesc: { fontSize: 13, lineHeight: 18, marginTop: 2 },\n useButton: {\n minWidth: 64,\n paddingHorizontal: 12,\n paddingVertical: 7,\n borderRadius: 999,\n alignItems: 'center',\n },\n useLabel: { fontSize: 13, fontWeight: '700' },\n});\n"],"names":["_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NotionSheets.js","sources":["../../../src/features/notion/NotionSheets.tsx"],"sourcesContent":["/**\n * The web Notion sidebar's screens as native page sheets: Inbox, Meetings,\n * All pages, Templates and Trash. Each mirrors its web container\n * (forms-stack notion-api/browser/src/containers) on the same GraphQL.\n */\nimport React, { useCallback, useMemo, useState } from 'react';\nimport {\n ActivityIndicator,\n Alert,\n FlatList,\n Pressable,\n RefreshControl,\n ScrollView,\n SectionList,\n StyleSheet,\n Text,\n TextInput,\n View,\n} from 'react-native';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useApolloClient, useQuery } from '@apollo/client';\nimport {\n NATIVE_NOTION_CHILDREN,\n NATIVE_NOTION_INBOX,\n NATIVE_NOTION_MARK_INBOX_READ,\n NATIVE_NOTION_PAGE_TREE,\n} from './notionDocuments';\nimport {\n MEETING_STATUS_LABEL,\n editedLabel,\n formatMeetingWhen,\n groupMeetings,\n pageTitle,\n type MeetingRow,\n type MeetingStatus,\n type NotionBlock,\n type NotionBlockTree,\n} from './notionBlocks';\nimport {\n BUILT_IN_TEMPLATES,\n TEMPLATE_CATEGORIES,\n filterTemplates,\n templateRootFromTree,\n userTemplateEntry,\n type PageTemplate,\n} from './notionTemplates';\nimport type { NotionPalette } from './notionTheme';\nimport { EmptyState, ListRow, PageRow, Pill, SectionHeader, ui } from './notionUi';\nimport type { NotionWorkspaceState } from './useNotionWorkspace';\n\ntype Palette = NotionPalette;\n\nfunction Loading({ palette }: { palette: Palette }) {\n return (\n <View style={styles.loading}>\n <ActivityIndicator color={palette.textMuted} />\n </View>\n );\n}\n\n/** Rows rendered as one rounded group inside a FlatList. */\nfunction groupedItemStyle(palette: Palette, index: number, count: number) {\n return [\n { backgroundColor: palette.card },\n index === 0 && styles.groupTop,\n index === count - 1 && styles.groupBottom,\n ];\n}\n\nfunction SearchField({\n palette,\n value,\n onChange,\n placeholder,\n}: {\n palette: Palette;\n value: string;\n onChange: (v: string) => void;\n placeholder: string;\n}) {\n return (\n <View style={[styles.searchField, { backgroundColor: palette.fill }]}>\n <Ionicons name=\"search\" size={17} color={palette.textMuted} />\n <TextInput\n value={value}\n onChangeText={onChange}\n placeholder={placeholder}\n placeholderTextColor={palette.textMuted}\n autoCorrect={false}\n clearButtonMode=\"while-editing\"\n style={[styles.searchInput, { color: palette.text }]}\n />\n </View>\n );\n}\n\nfunction Chips<T extends string>({\n palette,\n options,\n value,\n onChange,\n}: {\n palette: Palette;\n options: Array<{ id: T; label: string }>;\n value: T;\n onChange: (v: T) => void;\n}) {\n return (\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.chips}>\n {options.map((o) => {\n const selected = o.id === value;\n return (\n <Pressable\n key={o.id}\n accessibilityRole=\"tab\"\n accessibilityState={{ selected }}\n onPress={() => onChange(o.id)}\n style={[styles.chip, { backgroundColor: selected ? palette.text : palette.fill }]}\n >\n <Text style={[styles.chipLabel, { color: selected ? palette.card : palette.text }]}>\n {o.label}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n );\n}\n\n// ============================================================================\n// INBOX\n// ============================================================================\n\ninterface InboxItem {\n id: string;\n kind: string;\n pageId?: string | null;\n blockId: string;\n text: string;\n createdAt: string;\n dueAt?: string | null;\n showAt: string;\n readAt?: string | null;\n}\n\nconst INBOX_KIND: Record<string, { icon: React.ComponentProps<typeof Ionicons>['name']; label: string }> = {\n mention: { icon: 'at', label: 'Mentioned you' },\n reminder: { icon: 'alarm-outline', label: 'Reminder' },\n reply: { icon: 'return-down-forward', label: 'Replied' },\n comment: { icon: 'chatbubble-outline', label: 'Commented' },\n};\n\nexport function InboxSheet({ palette, onOpenPage }: { palette: Palette; onOpenPage: (id: string) => void }) {\n const client = useApolloClient();\n const { data, loading, error, refetch } = useQuery<{ notesInbox?: InboxItem[] | null }>(NATIVE_NOTION_INBOX, {\n variables: { limit: 50 },\n fetchPolicy: 'network-only',\n });\n const all = data?.notesInbox ?? [];\n const unread = all.filter((i) => !i.readAt).length;\n const [tab, setTab] = useState<'all' | 'unread'>('all');\n const items = tab === 'unread' ? all.filter((i) => !i.readAt) : all;\n\n const markRead = useCallback(\n async (opts: { ids?: string[]; all?: boolean }) => {\n try {\n await client.mutate({ mutation: NATIVE_NOTION_MARK_INBOX_READ, variables: opts });\n await Promise.all([refetch(), client.refetchQueries({ include: ['NativeNotionInboxUnread'] })]);\n } catch {\n // Read state is cosmetic; the next refresh shows the truth.\n }\n },\n [client, refetch],\n );\n\n let inboxEmptyTitle = \"You're all caught up\";\n if (error) inboxEmptyTitle = \"Couldn't load your inbox\";\n else if (tab === 'unread' && all.length) inboxEmptyTitle = 'No unread items';\n\n if (loading && !data) return <Loading palette={palette} />;\n return (\n <FlatList\n data={items}\n keyExtractor={(i) => i.id}\n contentContainerStyle={styles.content}\n refreshControl={<RefreshControl refreshing={false} onRefresh={() => refetch()} />}\n ListHeaderComponent={\n <View style={styles.toolbar}>\n <Chips<'all' | 'unread'>\n palette={palette}\n options={[\n { id: 'all', label: 'All' },\n { id: 'unread', label: unread ? `Unread (${unread})` : 'Unread' },\n ]}\n value={tab}\n onChange={setTab}\n />\n {unread ? (\n <View style={styles.inboxHeader}>\n <Text style={[styles.note, { color: palette.textMuted }]}>{`${unread} unread`}</Text>\n <Pressable accessibilityRole=\"button\" onPress={() => markRead({ all: true })} hitSlop={8}>\n <Text style={[styles.link, { color: palette.primary }]}>Mark all read</Text>\n </Pressable>\n </View>\n ) : null}\n </View>\n }\n ListEmptyComponent={\n <EmptyState\n palette={palette}\n icon={error ? 'cloud-offline-outline' : 'notifications-outline'}\n title={inboxEmptyTitle}\n text={\n error\n ? 'Pull down to try again.'\n : 'Mentions of you, replies, comments on your pages and @date reminders show up here.'\n }\n />\n }\n renderItem={({ item, index }) => {\n const kind = INBOX_KIND[item.kind] ?? INBOX_KIND.mention;\n const when = editedLabel(item.dueAt ?? item.showAt ?? item.createdAt).replace('Edited ', '');\n return (\n <View style={groupedItemStyle(palette, index, items.length)}>\n <ListRow\n palette={palette}\n icon={kind.icon}\n iconColor={item.readAt ? palette.textMuted : palette.primary}\n iconBg={item.readAt ? palette.fill : palette.primarySoft}\n title={item.text || kind.label}\n subtitle={`${kind.label}${when ? ` · ${when}` : ''}`}\n divider={index < items.length - 1}\n onPress={() => {\n if (!item.readAt) markRead({ ids: [item.id] });\n onOpenPage(item.pageId || item.blockId);\n }}\n trailing={\n item.readAt ? undefined : (\n <View style={[styles.unreadDot, { backgroundColor: palette.primary }]} />\n )\n }\n />\n </View>\n );\n }}\n />\n );\n}\n\n// ============================================================================\n// MEETINGS\n// ============================================================================\n\nconst STATUS_COLORS: Record<MeetingStatus, { fg: string; bg: string }> = {\n scheduled: { fg: '#0369a1', bg: 'rgba(14,165,233,0.12)' },\n live: { fg: '#e11d48', bg: 'rgba(244,63,94,0.14)' },\n ended: { fg: '#78716c', bg: 'rgba(120,113,108,0.12)' },\n};\n\nexport function MeetingRowView({\n row,\n palette,\n onPress,\n divider,\n}: {\n row: MeetingRow;\n palette: Palette;\n onPress: () => void;\n divider?: boolean;\n}) {\n const status = STATUS_COLORS[row.status];\n const who = row.attendees.length ? ` · ${row.attendees.join(', ')}` : '';\n return (\n <ListRow\n palette={palette}\n emoji={row.icon}\n icon=\"calendar-outline\"\n title={row.title}\n subtitle={`${formatMeetingWhen(row.startsAt)}${who}`}\n onPress={onPress}\n divider={divider}\n trailing={<Pill label={MEETING_STATUS_LABEL[row.status]} color={status.fg} bg={status.bg} />}\n />\n );\n}\n\nexport function MeetingsSheet({\n palette,\n notion,\n onOpenPage,\n}: {\n palette: Palette;\n notion: NotionWorkspaceState;\n onOpenPage: (id: string) => void;\n}) {\n const [creating, setCreating] = useState(false);\n const sections = useMemo(() => {\n const g = groupMeetings(notion.meetings);\n return [\n { title: 'Today', data: g.today },\n { title: 'Upcoming', data: g.upcoming },\n { title: 'Past', data: g.past },\n ].filter((s) => s.data.length);\n }, [notion.meetings]);\n\n const newMeeting = async () => {\n setCreating(true);\n try {\n const created = await notion.createMeeting();\n if (created?.id) onOpenPage(created.id);\n } catch (err) {\n Alert.alert(\"Couldn't create the meeting\", err instanceof Error ? err.message : undefined);\n } finally {\n setCreating(false);\n }\n };\n\n if (!sections.length) {\n return (\n <ScrollView contentContainerStyle={styles.content}>\n <EmptyState\n palette={palette}\n icon=\"calendar-outline\"\n title=\"No meetings yet\"\n text=\"A meeting page holds the agenda, attendees and AI meeting notes.\"\n action={{ label: 'New meeting', onPress: newMeeting, busy: creating }}\n />\n </ScrollView>\n );\n }\n return (\n <SectionList\n sections={sections}\n keyExtractor={(r) => r.id}\n contentContainerStyle={styles.content}\n stickySectionHeadersEnabled={false}\n ListHeaderComponent={\n <Pressable\n accessibilityRole=\"button\"\n onPress={newMeeting}\n disabled={creating}\n style={({ pressed }) => [\n styles.wideButton,\n { backgroundColor: palette.primarySoft },\n pressed && ui.pressedScale,\n ]}\n >\n {creating ? (\n <ActivityIndicator size=\"small\" color={palette.primary} />\n ) : (\n <>\n <Ionicons name=\"add\" size={18} color={palette.primary} />\n <Text style={[styles.wideButtonLabel, { color: palette.primary }]}>New meeting</Text>\n </>\n )}\n </Pressable>\n }\n renderSectionHeader={({ section }) => (\n <SectionHeader label={section.title} count={section.data.length} palette={palette} />\n )}\n renderItem={({ item, index, section }) => (\n <View style={groupedItemStyle(palette, index, section.data.length)}>\n <MeetingRowView\n row={item}\n palette={palette}\n onPress={() => onOpenPage(item.id)}\n divider={index < section.data.length - 1}\n />\n </View>\n )}\n />\n );\n}\n\n// ============================================================================\n// ALL PAGES\n// ============================================================================\n\ntype PageSort = 'edited' | 'title';\n\nexport function AllPagesSheet({\n palette,\n notion,\n onOpenPage,\n}: {\n palette: Palette;\n notion: NotionWorkspaceState;\n onOpenPage: (id: string) => void;\n}) {\n const [filter, setFilter] = useState('');\n const [sort, setSort] = useState<PageSort>('edited');\n const [selecting, setSelecting] = useState(false);\n const [selected, setSelected] = useState<Set<string>>(new Set());\n const [busy, setBusy] = useState(false);\n const rows = useMemo(() => {\n const q = filter.trim().toLowerCase();\n const list = notion.pages.filter((p) => !q || pageTitle(p).toLowerCase().includes(q));\n return sort === 'title' ? [...list].sort((a, b) => pageTitle(a).localeCompare(pageTitle(b))) : list;\n }, [filter, notion.pages, sort]);\n\n const allSelected = rows.length > 0 && rows.every((p) => selected.has(p.id));\n const toggle = (id: string) =>\n setSelected((cur) => {\n const next = new Set(cur);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n\n /** One soft delete per page, then one Undo for the whole batch (web bulk bar). */\n const trashSelected = async () => {\n const ids = [...selected];\n if (!ids.length) return;\n setBusy(true);\n const results = await Promise.allSettled(ids.map((id) => notion.trashPage(id)));\n setBusy(false);\n const done = ids.filter((_, i) => results[i].status === 'fulfilled');\n setSelected(new Set());\n setSelecting(false);\n const failed = ids.length - done.length;\n Alert.alert(\n `Moved ${done.length} ${done.length === 1 ? 'page' : 'pages'} to Trash`,\n failed ? `${failed} could not be moved.` : undefined,\n [\n { text: 'OK', style: 'cancel' },\n ...(done.length\n ? [\n {\n text: 'Undo',\n onPress: () => {\n Promise.allSettled(done.map((id) => notion.restorePage(id)));\n },\n },\n ]\n : []),\n ],\n );\n };\n\n return (\n <FlatList\n data={rows}\n keyExtractor={(p) => p.id}\n keyboardShouldPersistTaps=\"handled\"\n contentContainerStyle={styles.content}\n ListHeaderComponent={\n <View style={styles.toolbar}>\n <SearchField palette={palette} value={filter} onChange={setFilter} placeholder=\"Filter by title\" />\n <Chips<PageSort>\n palette={palette}\n options={[\n { id: 'edited', label: 'Last edited' },\n { id: 'title', label: 'Title A–Z' },\n ]}\n value={sort}\n onChange={setSort}\n />\n {rows.length ? (\n <View style={styles.inboxHeader}>\n <Text style={[styles.note, { color: palette.textMuted }]}>\n {selecting ? `${selected.size} selected` : `${rows.length} pages`}\n </Text>\n <View style={styles.headerActions}>\n {selecting ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={() =>\n setSelected(allSelected ? new Set() : new Set(rows.map((p) => p.id)))\n }\n hitSlop={8}\n >\n <Text style={[styles.link, { color: palette.primary }]}>\n {allSelected ? 'Deselect all' : 'Select all'}\n </Text>\n </Pressable>\n ) : null}\n <Pressable\n accessibilityRole=\"button\"\n onPress={() => {\n setSelecting((v) => !v);\n setSelected(new Set());\n }}\n hitSlop={8}\n >\n <Text style={[styles.link, { color: palette.primary }]}>\n {selecting ? 'Cancel' : 'Select'}\n </Text>\n </Pressable>\n </View>\n </View>\n ) : null}\n {selecting && selected.size ? (\n <Pressable\n accessibilityRole=\"button\"\n onPress={trashSelected}\n disabled={busy}\n style={[styles.wideButton, { backgroundColor: palette.dangerSoft }]}\n >\n {busy ? (\n <ActivityIndicator size=\"small\" color={palette.danger} />\n ) : (\n <>\n <Ionicons name=\"trash-outline\" size={18} color={palette.danger} />\n <Text style={[styles.wideButtonLabel, { color: palette.danger }]}>\n {`Move ${selected.size} to trash`}\n </Text>\n </>\n )}\n </Pressable>\n ) : null}\n </View>\n }\n ListEmptyComponent={\n <EmptyState\n palette={palette}\n icon=\"documents-outline\"\n title={filter.trim() ? 'No matching pages' : 'No pages yet'}\n text={filter.trim() ? 'Try a different title.' : 'Pages you create show up here.'}\n />\n }\n renderItem={({ item, index }) => (\n <View style={groupedItemStyle(palette, index, rows.length)}>\n <PageRow\n page={item}\n palette={palette}\n onPress={() => (selecting ? toggle(item.id) : onOpenPage(item.id))}\n divider={index < rows.length - 1}\n trailing={\n selecting ? (\n <Ionicons\n name={selected.has(item.id) ? 'checkbox' : 'square-outline'}\n size={22}\n color={selected.has(item.id) ? palette.primary : palette.textMuted}\n />\n ) : undefined\n }\n />\n </View>\n )}\n />\n );\n}\n\n// ============================================================================\n// TEMPLATES\n// ============================================================================\n\ntype TemplateCategoryId = (typeof TEMPLATE_CATEGORIES)[number]['id'];\n\nexport function TemplatesSheet({\n palette,\n notion,\n onOpenPage,\n}: {\n palette: Palette;\n notion: NotionWorkspaceState;\n onOpenPage: (id: string) => void;\n}) {\n const client = useApolloClient();\n const [category, setCategory] = useState<TemplateCategoryId>('all');\n const [query, setQuery] = useState('');\n const [using, setUsing] = useState<string | null>(null);\n\n // \"My templates\": pages saved under the workspace's hidden template library page.\n const libraryQuery = useQuery<{ getBlockChildren?: { results?: NotionBlock[] | null } | null }>(\n NATIVE_NOTION_CHILDREN,\n {\n variables: { blockId: notion.templateLibraryId ?? '', pageSize: 100 },\n skip: !notion.templateLibraryId,\n fetchPolicy: 'cache-and-network',\n },\n );\n const mine = useMemo(\n () =>\n (libraryQuery.data?.getBlockChildren?.results ?? [])\n .filter((b) => !b.inTrash && (b.type === 'page' || b.type === 'database'))\n .map(userTemplateEntry),\n [libraryQuery.data],\n );\n\n const all = useMemo(() => [...BUILT_IN_TEMPLATES, ...mine], [mine]);\n const shown = useMemo(() => filterTemplates(all, category, query), [all, category, query]);\n const sections = useMemo(() => {\n if (category !== 'all') return [{ title: '', data: shown }];\n return TEMPLATE_CATEGORIES.filter((c) => c.id !== 'all')\n .map((c) => ({ title: c.label, data: shown.filter((t) => t.category === c.id) }))\n .filter((s) => s.data.length);\n }, [category, shown]);\n\n const use = async (template: PageTemplate) => {\n if (!notion.workspace) {\n Alert.alert('Create a workspace first', 'Templates create pages inside a workspace.');\n return;\n }\n setUsing(template.id);\n try {\n let root = template.root;\n if (template.sourceBlockId) {\n const res = await client.query<{ getBlockTree?: NotionBlockTree | null }>({\n query: NATIVE_NOTION_PAGE_TREE,\n variables: { input: { blockId: template.sourceBlockId, includeChildren: true, maxDepth: 5 } },\n fetchPolicy: 'network-only',\n });\n const tree = res.data?.getBlockTree;\n if (!tree) throw new Error('Template not found');\n root = templateRootFromTree(tree as Parameters<typeof templateRootFromTree>[0]);\n }\n const created = await notion.createFromTemplate({ root });\n if (created?.failedRows) {\n Alert.alert('Some rows were not added', `${created.failedRows} database row(s) could not be created.`);\n }\n if (created?.id) onOpenPage(created.id);\n } catch (err) {\n Alert.alert(\"Couldn't use this template\", err instanceof Error ? err.message : undefined);\n } finally {\n setUsing(null);\n }\n };\n\n return (\n <SectionList\n sections={sections}\n keyExtractor={(t) => t.id}\n keyboardShouldPersistTaps=\"handled\"\n contentContainerStyle={styles.content}\n stickySectionHeadersEnabled={false}\n ListHeaderComponent={\n <View style={styles.toolbar}>\n <Text style={[styles.note, { color: palette.textMuted }]}>\n Start a page from a template, or save any page as your own from the web.\n </Text>\n <SearchField palette={palette} value={query} onChange={setQuery} placeholder=\"Search templates\" />\n <Chips<TemplateCategoryId>\n palette={palette}\n options={TEMPLATE_CATEGORIES}\n value={category}\n onChange={setCategory}\n />\n </View>\n }\n ListEmptyComponent={\n <EmptyState\n palette={palette}\n icon=\"albums-outline\"\n title={category === 'mine' ? 'No saved templates' : 'No matching templates'}\n text={\n category === 'mine'\n ? 'Save a page as a template from its ••• menu on the web.'\n : 'Try another search or category.'\n }\n />\n }\n renderSectionHeader={({ section }) =>\n section.title ? <SectionHeader label={section.title} palette={palette} /> : null\n }\n renderItem={({ item }) => (\n <TemplateCard\n template={item}\n palette={palette}\n busy={using === item.id}\n disabled={Boolean(using)}\n onUse={() => use(item)}\n />\n )}\n />\n );\n}\n\nfunction TemplateCard({\n template,\n palette,\n busy,\n disabled,\n onUse,\n}: {\n template: PageTemplate;\n palette: Palette;\n busy: boolean;\n disabled: boolean;\n onUse: () => void;\n}) {\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={`Use template ${template.name}`}\n onPress={onUse}\n disabled={disabled}\n style={({ pressed }) => [\n styles.templateCard,\n { backgroundColor: pressed ? palette.pressed : palette.card },\n ui.cardShadow,\n ]}\n >\n <View style={[styles.templateIcon, { backgroundColor: palette.fill }]}>\n <Text style={styles.templateEmoji}>{template.icon}</Text>\n </View>\n <View style={ui.flex}>\n <Text numberOfLines={1} style={[styles.templateName, { color: palette.text }]}>\n {template.name}\n </Text>\n <Text numberOfLines={2} style={[styles.templateDesc, { color: palette.textMuted }]}>\n {template.description}\n </Text>\n </View>\n <View style={[styles.useButton, { backgroundColor: palette.primarySoft }]}>\n {busy ? (\n <ActivityIndicator size=\"small\" color={palette.primary} />\n ) : (\n <Text style={[styles.useLabel, { color: palette.primary }]}>Use</Text>\n )}\n </View>\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n loading: { paddingVertical: 48, alignItems: 'center' },\n content: { padding: 16, paddingBottom: 48 },\n groupTop: { borderTopLeftRadius: 16, borderTopRightRadius: 16 },\n groupBottom: { borderBottomLeftRadius: 16, borderBottomRightRadius: 16 },\n note: { fontSize: 14, lineHeight: 20 },\n link: { fontSize: 15, fontWeight: '600' },\n toolbar: { gap: 12, marginBottom: 12 },\n headerActions: { flexDirection: 'row', gap: 18 },\n inboxHeader: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', marginBottom: 12 },\n unreadDot: { width: 9, height: 9, borderRadius: 5 },\n searchField: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n height: 40,\n paddingHorizontal: 12,\n borderRadius: 12,\n },\n searchInput: { flex: 1, fontSize: 16, paddingVertical: 0 },\n chips: { gap: 8 },\n chip: { paddingHorizontal: 14, paddingVertical: 8, borderRadius: 999 },\n chipLabel: { fontSize: 14, fontWeight: '600' },\n wideButton: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 6,\n minHeight: 48,\n borderRadius: 14,\n },\n wideButtonLabel: { fontSize: 16, fontWeight: '700' },\n templateCard: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n padding: 14,\n borderRadius: 16,\n marginBottom: 10,\n },\n templateIcon: { width: 44, height: 44, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },\n templateEmoji: { fontSize: 22 },\n templateName: { fontSize: 16, fontWeight: '700' },\n templateDesc: { fontSize: 13, lineHeight: 18, marginTop: 2 },\n useButton: {\n minWidth: 64,\n paddingHorizontal: 12,\n paddingVertical: 7,\n borderRadius: 999,\n alignItems: 'center',\n },\n useLabel: { fontSize: 13, fontWeight: '700' },\n});\n"],"names":["_a"],"mappings":"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"}
|