aboutsummaryrefslogtreecommitdiff
path: root/admin/src
diff options
context:
space:
mode:
Diffstat (limited to 'admin/src')
-rw-r--r--admin/src/components/Initializer.tsx19
-rw-r--r--admin/src/components/PluginIcon.tsx5
-rw-r--r--admin/src/index.ts43
-rw-r--r--admin/src/pages/App.tsx15
-rw-r--r--admin/src/pages/HomePage.tsx16
-rw-r--r--admin/src/pluginId.ts1
-rw-r--r--admin/src/translations/en.json1
-rw-r--r--admin/src/utils/getTranslation.ts5
8 files changed, 105 insertions, 0 deletions
diff --git a/admin/src/components/Initializer.tsx b/admin/src/components/Initializer.tsx
new file mode 100644
index 0000000..8188291
--- /dev/null
+++ b/admin/src/components/Initializer.tsx
@@ -0,0 +1,19 @@
+import { useEffect, useRef } from 'react';
+
+import { PLUGIN_ID } from '../pluginId';
+
+type InitializerProps = {
+ setPlugin: (id: string) => void;
+};
+
+const Initializer = ({ setPlugin }: InitializerProps) => {
+ const ref = useRef(setPlugin);
+
+ useEffect(() => {
+ ref.current(PLUGIN_ID);
+ }, []);
+
+ return null;
+};
+
+export { Initializer };
diff --git a/admin/src/components/PluginIcon.tsx b/admin/src/components/PluginIcon.tsx
new file mode 100644
index 0000000..54174ba
--- /dev/null
+++ b/admin/src/components/PluginIcon.tsx
@@ -0,0 +1,5 @@
+import { PuzzlePiece } from '@strapi/icons';
+
+const PluginIcon = () => <PuzzlePiece />;
+
+export { PluginIcon };
diff --git a/admin/src/index.ts b/admin/src/index.ts
new file mode 100644
index 0000000..4dff817
--- /dev/null
+++ b/admin/src/index.ts
@@ -0,0 +1,43 @@
+import { getTranslation } from './utils/getTranslation';
+import { PLUGIN_ID } from './pluginId';
+import { Initializer } from './components/Initializer';
+import { PluginIcon } from './components/PluginIcon';
+
+export default {
+ register(app: any) {
+ app.addMenuLink({
+ to: `plugins/${PLUGIN_ID}`,
+ icon: PluginIcon,
+ intlLabel: {
+ id: `${PLUGIN_ID}.plugin.name`,
+ defaultMessage: PLUGIN_ID,
+ },
+ Component: async () => {
+ const { App } = await import('./pages/App');
+
+ return App;
+ },
+ });
+
+ app.registerPlugin({
+ id: PLUGIN_ID,
+ initializer: Initializer,
+ isReady: false,
+ name: PLUGIN_ID,
+ });
+ },
+
+ async registerTrads({ locales }: { locales: string[] }) {
+ return Promise.all(
+ locales.map(async (locale) => {
+ try {
+ const { default: data } = await import(`./translations/${locale}.json`);
+
+ return { data, locale };
+ } catch {
+ return { data: {}, locale };
+ }
+ })
+ );
+ },
+};
diff --git a/admin/src/pages/App.tsx b/admin/src/pages/App.tsx
new file mode 100644
index 0000000..c77159c
--- /dev/null
+++ b/admin/src/pages/App.tsx
@@ -0,0 +1,15 @@
+import { Page } from '@strapi/strapi/admin';
+import { Routes, Route } from 'react-router-dom';
+
+import { HomePage } from './HomePage';
+
+const App = () => {
+ return (
+ <Routes>
+ <Route index element={<HomePage />} />
+ <Route path="*" element={<Page.Error />} />
+ </Routes>
+ );
+};
+
+export { App };
diff --git a/admin/src/pages/HomePage.tsx b/admin/src/pages/HomePage.tsx
new file mode 100644
index 0000000..bff4f4e
--- /dev/null
+++ b/admin/src/pages/HomePage.tsx
@@ -0,0 +1,16 @@
+import { Main } from '@strapi/design-system';
+import { useIntl } from 'react-intl';
+
+import { getTranslation } from '../utils/getTranslation';
+
+const HomePage = () => {
+ const { formatMessage } = useIntl();
+
+ return (
+ <Main>
+ <h1>Welcome to {formatMessage({ id: getTranslation('plugin.name') })}</h1>
+ </Main>
+ );
+};
+
+export { HomePage };
diff --git a/admin/src/pluginId.ts b/admin/src/pluginId.ts
new file mode 100644
index 0000000..f2d57de
--- /dev/null
+++ b/admin/src/pluginId.ts
@@ -0,0 +1 @@
+export const PLUGIN_ID = 'checkbox-list';
diff --git a/admin/src/translations/en.json b/admin/src/translations/en.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/admin/src/translations/en.json
@@ -0,0 +1 @@
+{}
diff --git a/admin/src/utils/getTranslation.ts b/admin/src/utils/getTranslation.ts
new file mode 100644
index 0000000..e2e57f7
--- /dev/null
+++ b/admin/src/utils/getTranslation.ts
@@ -0,0 +1,5 @@
+import { PLUGIN_ID } from '../pluginId';
+
+const getTranslation = (id: string) => `${PLUGIN_ID}.${id}`;
+
+export { getTranslation };