diff options
| author | Valentin Popov <valentin@popov.link> | 2026-02-05 13:19:56 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-02-05 13:19:56 +0300 |
| commit | efa89313fa4152252b477aafd88f7cf4a66747d8 (patch) | |
| tree | 5939b251fe1bbc6bea3881a71154cabd3aa538ec /admin/src | |
| parent | f6de8611955bf382612996500efba21a2d64ea1f (diff) | |
| download | strapi-plugin-checkbox-list-efa89313fa4152252b477aafd88f7cf4a66747d8.tar.xz strapi-plugin-checkbox-list-efa89313fa4152252b477aafd88f7cf4a66747d8.zip | |
Initial Strapi plugin project
Diffstat (limited to 'admin/src')
| -rw-r--r-- | admin/src/components/Initializer.tsx | 19 | ||||
| -rw-r--r-- | admin/src/components/PluginIcon.tsx | 5 | ||||
| -rw-r--r-- | admin/src/index.ts | 43 | ||||
| -rw-r--r-- | admin/src/pages/App.tsx | 15 | ||||
| -rw-r--r-- | admin/src/pages/HomePage.tsx | 16 | ||||
| -rw-r--r-- | admin/src/pluginId.ts | 1 | ||||
| -rw-r--r-- | admin/src/translations/en.json | 1 | ||||
| -rw-r--r-- | admin/src/utils/getTranslation.ts | 5 |
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 }; |
