diff options
Diffstat (limited to 'frontend/src/components')
| -rw-r--r-- | frontend/src/components/settings/index.tsx | 6 | ||||
| -rw-r--r-- | frontend/src/components/settings/pages/PluginList.tsx | 32 |
2 files changed, 38 insertions, 0 deletions
diff --git a/frontend/src/components/settings/index.tsx b/frontend/src/components/settings/index.tsx index d4799fa9..f9c84c7b 100644 --- a/frontend/src/components/settings/index.tsx +++ b/frontend/src/components/settings/index.tsx @@ -1,6 +1,7 @@ import { SidebarNavigation } from 'decky-frontend-lib'; import GeneralSettings from './pages/GeneralSettings'; +import PluginList from './pages/PluginList'; export default function SettingsPage() { return ( @@ -13,6 +14,11 @@ export default function SettingsPage() { content: <GeneralSettings />, route: '/decky/settings/general', }, + { + title: 'Plugins', + content: <PluginList />, + route: '/decky/settings/plugins', + }, ]} /> ); diff --git a/frontend/src/components/settings/pages/PluginList.tsx b/frontend/src/components/settings/pages/PluginList.tsx new file mode 100644 index 00000000..4fd2c063 --- /dev/null +++ b/frontend/src/components/settings/pages/PluginList.tsx @@ -0,0 +1,32 @@ +import { DialogButton, staticClasses } from 'decky-frontend-lib'; +import { FaTrash } from 'react-icons/fa'; + +export default function PluginList() { + const plugins = window.DeckyPluginLoader?.getPlugins(); + + if (plugins.length === 0) { + return ( + <div> + <p>No plugins installed</p> + </div> + ); + } + + return ( + <ul style={{ listStyleType: 'none' }}> + {window.DeckyPluginLoader?.getPlugins().map(({ name }) => ( + <li style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}> + <span>{name}</span> + <div className={staticClasses.Title} style={{ marginLeft: 'auto', boxShadow: 'none' }}> + <DialogButton + style={{ height: '40px', width: '40px', padding: '10px 12px' }} + onClick={() => window.DeckyPluginLoader.uninstall_plugin(name)} + > + <FaTrash /> + </DialogButton> + </div> + </li> + ))} + </ul> + ); +} |
