This repository has no description
1import {
2 ExtensionAuthProvider,
3 useExtensionAuth,
4} from './hooks/useExtensionAuth';
5import { SaveCardPage } from './components/extension/SaveCardPage';
6import {
7 Card,
8 MantineProvider,
9 ScrollArea,
10 Button,
11 Text,
12 Stack,
13} from '@mantine/core';
14import '@mantine/core/styles.css';
15import { theme } from '@/styles/theme';
16
17function PopupContent() {
18 const { isAuthenticated, isLoading } = useExtensionAuth();
19
20 if (isLoading) {
21 return (
22 <Stack align="center" p="md">
23 <Text>Loading...</Text>
24 </Stack>
25 );
26 }
27
28 if (!isAuthenticated) {
29 const handleSignIn = () => {
30 const appUrl =
31 process.env.PLASMO_PUBLIC_APP_URL || 'http://localhost:3000';
32 const loginUrl = `${appUrl}/login?extension-login=true`;
33 chrome.tabs.create({ url: loginUrl });
34 window.close();
35 };
36
37 return (
38 <Stack align="center" p="md" gap="md">
39 <Text size="sm" ta="center">
40 Sign in to your account to save cards
41 </Text>
42 <Button onClick={handleSignIn} fullWidth>
43 Sign In
44 </Button>
45 </Stack>
46 );
47 }
48
49 return <SaveCardPage />;
50}
51
52function IndexPopup() {
53 return (
54 <MantineProvider theme={theme}>
55 <ExtensionAuthProvider>
56 <ScrollArea.Autosize w={400} mah={600}>
57 <Card>
58 <PopupContent />
59 </Card>
60 </ScrollArea.Autosize>
61 </ExtensionAuthProvider>
62 </MantineProvider>
63 );
64}
65
66export default IndexPopup;