diff --git a/libs/remix-ui/plugin-manager/src/customTypes.ts b/libs/remix-ui/plugin-manager/src/customTypes.ts index e696caeb52..5c0efa46e1 100644 --- a/libs/remix-ui/plugin-manager/src/customTypes.ts +++ b/libs/remix-ui/plugin-manager/src/customTypes.ts @@ -5,3 +5,16 @@ export type PluginManagerSettings = { settings: () => HTMLElement render: () => HTMLElement } + +export type Profile = { + name: 'pluginManager', + displayName: 'Plugin manager', + methods: [], + events: [], + icon: 'assets/img/pluginManager.webp', + description: 'Start/stop services, modules and plugins', + kind: 'settings', + location: 'sidePanel', + documentation: 'https://remix-ide.readthedocs.io/en/latest/plugin_manager.html', + version: string +} diff --git a/libs/remix-ui/plugin-manager/src/lib/components/listGroupItem.tsx b/libs/remix-ui/plugin-manager/src/lib/components/listGroupItem.tsx new file mode 100644 index 0000000000..fab9496217 --- /dev/null +++ b/libs/remix-ui/plugin-manager/src/lib/components/listGroupItem.tsx @@ -0,0 +1,21 @@ +import React from 'react' +import { Profile } from '../../customTypes' + +interface ListGroupItemProps { + activeProfiles: Profile[] + inactiveProfiles: Profile[] + renderItem: (profile: Profile) => void +} + +function ListGroupItem ({ activeProfiles, inactiveProfiles, renderItem }: ListGroupItemProps) { + return ( +
+ { activeProfiles.length > 0 + ? activeProfiles.map(profile => renderItem(profile)) + : inactiveProfiles.map(profile => renderItem(profile)) + } +
+ ) +} + +export default ListGroupItem diff --git a/libs/remix-ui/plugin-manager/src/lib/components/rootView.tsx b/libs/remix-ui/plugin-manager/src/lib/components/rootView.tsx index 3c951b7ebf..266014cd7d 100644 --- a/libs/remix-ui/plugin-manager/src/lib/components/rootView.tsx +++ b/libs/remix-ui/plugin-manager/src/lib/components/rootView.tsx @@ -1,23 +1,38 @@ import React from 'react' +import { Profile } from '../../customTypes' import ActiveTile from './activeTile' +import ListGroupItem from './listGroupItem' -interface RowViewProps { +interface RootViewProps { localPluginButtonText: string - + activeProfiles: Profile[] + inactiveProfiles?: Profile[] + filterPlugins: () => void + openLocalPlugins: () => void + renderItem: (profile: Profile) => void } -function RootView () { +function RootView ({ + localPluginButtonText, + activeProfiles, + inactiveProfiles, + filterPlugins, + openLocalPlugins, + renderItem +}: RootViewProps) { return (
- +
-
- -
+
) diff --git a/libs/remix-ui/plugin-manager/src/lib/remix-ui-plugin-manager.tsx b/libs/remix-ui/plugin-manager/src/lib/remix-ui-plugin-manager.tsx index ca52b183e0..93f091f2a8 100644 --- a/libs/remix-ui/plugin-manager/src/lib/remix-ui-plugin-manager.tsx +++ b/libs/remix-ui/plugin-manager/src/lib/remix-ui-plugin-manager.tsx @@ -1,19 +1,9 @@ import React from 'react' - -import './remix-ui-plugin-manager.css'; +import './remix-ui-plugin-manager.css' /* eslint-disable-next-line */ export interface RemixUiPluginManagerProps { - name: 'pluginManager', - displayName: 'Plugin manager', - methods: [], - events: [], - icon: 'assets/img/pluginManager.webp', - description: 'Start/stop services, modules and plugins', - kind: 'settings', - location: 'sidePanel', - documentation: 'https://remix-ide.readthedocs.io/en/latest/plugin_manager.html', - version: string + } export const RemixUiPluginManager = (props: RemixUiPluginManagerProps) => { @@ -21,7 +11,7 @@ export const RemixUiPluginManager = (props: RemixUiPluginManagerProps) => {

Welcome to remix-ui-plugin-manager!

- ); -}; + ) +} -export default RemixUiPluginManager; +export default RemixUiPluginManager diff --git a/nx.json b/nx.json index 64d8dcaeaf..7243217040 100644 --- a/nx.json +++ b/nx.json @@ -105,7 +105,7 @@ "remix-ui-checkbox": { "tags": [] }, - "remix-ui-settings": { + "remix-ui-plugin-manager": { "tags": [] } }