mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 05:14:54 +00:00
feat: init @affine/copilot (#2511)
This commit is contained in:
42
apps/web/src/pages/plugins.tsx
Normal file
42
apps/web/src/pages/plugins.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
import { AppContainer, MainContainer } from '@affine/component/workspace';
|
||||
import { config } from '@affine/env';
|
||||
import { NoSsr } from '@mui/material';
|
||||
import { affinePluginsAtom } from '@toeverything/plugin-infra/manager';
|
||||
import { useAtomValue } from 'jotai';
|
||||
import type { ReactElement } from 'react';
|
||||
import { Suspense } from 'react';
|
||||
|
||||
const Plugins = () => {
|
||||
const plugins = useAtomValue(affinePluginsAtom);
|
||||
return (
|
||||
<NoSsr>
|
||||
<div>
|
||||
{Object.values(plugins).map(({ definition, uiAdapter }) => {
|
||||
const Content = uiAdapter.debugContent;
|
||||
return (
|
||||
<div key={definition.id}>
|
||||
{/* todo: support i18n */}
|
||||
{definition.name.fallback}
|
||||
{Content && <Content />}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</NoSsr>
|
||||
);
|
||||
};
|
||||
|
||||
export default function PluginPage(): ReactElement {
|
||||
if (!config.enablePlugin) {
|
||||
return <></>;
|
||||
}
|
||||
return (
|
||||
<AppContainer>
|
||||
<MainContainer>
|
||||
<Suspense>
|
||||
<Plugins />
|
||||
</Suspense>
|
||||
</MainContainer>
|
||||
</AppContainer>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user