# user-settings
Welcome to the user-settings plugin!
## About the plugin
This plugin provides two components, `` is intended to be used within the [``](https://backstage.io/storybook/?path=/story/sidebar--sample-sidebar) and displays the signed-in users profile picture and name. The second component is a settings page where the user can control different settings across the App.
It also provides a `UserSettingsStorage` implementation of the `StorageApi`, to
be used in the frontend as a persistent alternative to the builtin `WebStorage`.
Please see [the backend
README](https://github.com/backstage/backstage/tree/master/plugins/user-settings-backend)
for installation instructions.
## Components Usage
Add the item to the Sidebar:
```tsx
import { Settings as SidebarSettings } from '@backstage/plugin-user-settings';
;
```
Add the page to the App routing:
```tsx
import { UserSettingsPage } from '@backstage/plugin-user-settings';
const AppRoutes = () => (
} />
);
```
### Props
**Auth Providers**
By default, the plugin provides a list of configured authentication providers fetched from `app-config.yaml` and displayed in the "Authentication Providers" tab.
If you want to supply your own custom list of Authentication Providers, use the `providerSettings` prop:
```tsx
const MyAuthProviders = () => (
{someAction}
);
const AppRoutes = () => (
} />}
/>
);
```
> **Note that the list of providers expects to be rendered within a Material UI [``](https://v4.mui.com/components/lists/)**
**Tabs**
By default, the plugin renders 3 tabs of settings; GENERAL, AUTHENTICATION PROVIDERS, and FEATURE FLAGS.
If you want to add more options for your users,
just pass the extra tabs using `SettingsLayout.Route` components as children of the `UserSettingsPage` route.
The path is in this case a child of the settings path,
in the example below it would be `/settings/advanced` so that you can easily link to it.
```tsx
import {
SettingsLayout,
UserSettingsPage,
} from '@backstage/plugin-user-settings';
}>
;
```
To standardize the UI of all setting tabs,
make sure you use a similar component structure as the other tabs.
You can take a look at
[the example extra tab](https://github.com/backstage/backstage/blob/master/packages/app/src/components/advancedSettings/AdvancedSettings.tsx)
we have created in Backstage's demo app.
To change the layout altogether, create a custom page in `packages/app/src/components/user-settings/SettingsPage.tsx`:
```tsx
import React from 'react';
import {
SettingsLayout,
UserSettingsGeneral,
} from '@backstage/plugin-user-settings';
import { AdvancedSettings } from './advancedSettings';
export const settingsPage = (
);
```
Now register the new settings page in `packages/app/src/App.tsx`:
```diff
+ import {settingsPage} from './components/settings/settingsPage';
const routes = (
- } />
+ }>
+ {settingsPage}
+
);
```