Files
backstage/plugins
Peter Colapietro 3f947b70d1 fix(react): use fragment (#3478)
The empty state's description is already wrapped in a Typography component so the one in MissingImplementsApisEmptyState is redundant.

https://github.com/backstage/backstage/blob/bbaadb63f88d0f7d42acb9fa1b1644f85bf1043e/packages/core/src/components/EmptyState/EmptyState.tsx#L57

By wrapping the EmptyState's description in a Typography the following warning is output to the console

```
react-dom.development.js?1930:89 Warning: validateDOMNesting(...): <p> cannot appear as a descendant of <p>.
    in p (created by ForwardRef(Typography))
    in ForwardRef(Typography) (created by WithStyles(ForwardRef(Typography)))
    in WithStyles(ForwardRef(Typography)) (created by MissingImplementsApisEmptyState)
    in p (created by ForwardRef(Typography))
    in ForwardRef(Typography) (created by WithStyles(ForwardRef(Typography)))
    in WithStyles(ForwardRef(Typography)) (created by EmptyState)
    in div (created by ForwardRef(Grid))
    in ForwardRef(Grid) (created by WithStyles(ForwardRef(Grid)))
    in WithStyles(ForwardRef(Grid)) (created by EmptyState)
    in div (created by ForwardRef(Grid))
    in ForwardRef(Grid) (created by WithStyles(ForwardRef(Grid)))
    in WithStyles(ForwardRef(Grid)) (created by EmptyState)
    in div (created by ForwardRef(Grid))
    in ForwardRef(Grid) (created by WithStyles(ForwardRef(Grid)))
    in WithStyles(ForwardRef(Grid)) (created by EmptyState)
    in EmptyState (created by MissingImplementsApisEmptyState)
    in MissingImplementsApisEmptyState (created by Router)
    in Router (at EntityPage.tsx:78)
    in article (created by Content)
    in Content (created by Layout)
    in Layout (created by EntityPageLayout)
    in div (created by Page)
    in ThemeProvider (created by Page)
    in Page (created by EntityPageLayout)
    in EntityPageLayout (at EntityPage.tsx:64)
    in ServiceEntityPage (at EntityPage.tsx:127)
    in EntityPage (created by EntityPageSwitch)
    in EntityPageSwitch (created by Router)
    in EntityProvider (created by Router)
    in Route (created by Router)
    in Routes (created by Router)
    in Router (at App.tsx:46)
    in Route (at App.tsx:44)
    in Routes (at App.tsx:42)
    in div (created by SidebarPage)
    in SidebarPage (at App.tsx:40)
    in Route (created by AppRouter)
    in Routes (created by AppRouter)
    in Router (created by BrowserRouter)
    in BrowserRouter (created by AppRouter)
    in AppRouter (at App.tsx:39)
    in CssBaseline (created by WithStyles(CssBaseline))
    in WithStyles(CssBaseline) (created by AppThemeProvider)
    in ThemeProvider (created by AppThemeProvider)
    in AppThemeProvider (created by Provider)
    in AppContextProvider (created by Provider)
    in ApiProvider (created by Provider)
    in Provider (at App.tsx:36)
    in App (at src/index.tsx:6)
```

Co-authored-by: Peter Colapietro <petercolapietro@gmail.com>
2020-11-27 18:08:37 +01:00
..
2020-11-27 18:08:37 +01:00
2020-11-27 12:51:09 +00:00
2020-11-27 12:51:09 +00:00
2020-11-27 12:51:09 +00:00
2020-11-27 12:51:09 +00:00
2020-11-24 16:56:00 +00:00
2020-11-19 15:13:57 +00:00
2020-11-24 16:56:00 +00:00
2020-11-19 15:13:57 +00:00
2020-11-27 12:51:09 +00:00
2020-11-27 12:51:09 +00:00
2020-11-19 15:13:57 +00:00
2020-11-27 12:51:09 +00:00
2020-11-27 12:51:09 +00:00
2020-11-03 11:03:49 +01:00

Plugins

Backstage is a single-page application composed of a set of plugins.

Our goal for the plugin ecosystem is that the definition of a plugin is flexible enough to allow you to expose pretty much any kind of infrastructure or software development tool as a plugin in Backstage. By following strong design guidelines we ensure the overall user experience stays consistent between plugins.

plugin

Creating a plugin

To create a plugin, follow the steps outlined here.

Suggesting a plugin

If you start developing a plugin that you aim to release as open source, we suggest that you create a new Issue. This helps the community know what plugins are in development.

You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work.