@backstage/plugin-user-settings 0.9.1-next.1 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +14 -1
- package/dist/alpha.d.ts +85 -8
- package/dist/alpha.esm.js +43 -11
- package/dist/alpha.esm.js.map +1 -1
- package/dist/components/AuthProviders/ProviderSettingsItem.esm.js +4 -3
- package/dist/components/AuthProviders/ProviderSettingsItem.esm.js.map +1 -1
- package/dist/components/AuthProviders/index.esm.js +4 -0
- package/dist/components/AuthProviders/index.esm.js.map +1 -0
- package/dist/components/DefaultSettingsPage/DefaultSettingsPage.esm.js.map +1 -1
- package/dist/components/FeatureFlags/index.esm.js +2 -0
- package/dist/components/FeatureFlags/index.esm.js.map +1 -0
- package/dist/components/General/index.esm.js +10 -0
- package/dist/components/General/index.esm.js.map +1 -0
- package/dist/index.d.ts +57 -2
- package/dist/index.esm.js +1 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/package.json.esm.js +2 -1
- package/dist/package.json.esm.js.map +1 -1
- package/dist/translation.esm.js.map +1 -1
- package/package.json +17 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# @backstage/plugin-user-settings
|
|
2
2
|
|
|
3
|
+
## 0.9.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e26e3de: The `ProviderSettingsItem` `icon` prop now accepts `IconElement` in addition to `IconComponent`.
|
|
8
|
+
- 538c985: Updated installation documentation to use feature discovery as the default.
|
|
9
|
+
- aa29b50: New frontend system pages now use the default plugin header together with `HeaderPage` instead of the legacy core page header pattern.
|
|
10
|
+
- 3f36ce1: Updated alpha plugin icons to follow the new frontend icon sizing rules when rendered in plugin and navigation surfaces.
|
|
11
|
+
- 0be2541: Promoted the plugin's translation ref to the stable package entry point. It was previously only available through the alpha entry point.
|
|
12
|
+
- Updated dependencies
|
|
13
|
+
- @backstage/plugin-catalog-react@2.1.0
|
|
14
|
+
- @backstage/ui@0.13.0
|
|
15
|
+
- @backstage/core-plugin-api@1.12.4
|
|
16
|
+
- @backstage/core-components@0.18.8
|
|
17
|
+
- @backstage/frontend-plugin-api@0.15.0
|
|
18
|
+
- @backstage/core-app-api@1.19.6
|
|
19
|
+
- @backstage/catalog-model@1.7.7
|
|
20
|
+
- @backstage/plugin-signals-react@0.0.20
|
|
21
|
+
|
|
22
|
+
## 0.9.1-next.2
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- Updated dependencies
|
|
27
|
+
- @backstage/core-app-api@1.19.6-next.1
|
|
28
|
+
- @backstage/frontend-plugin-api@0.15.0-next.1
|
|
29
|
+
- @backstage/core-plugin-api@1.12.4-next.1
|
|
30
|
+
- @backstage/plugin-catalog-react@2.1.0-next.2
|
|
31
|
+
- @backstage/core-components@0.18.8-next.1
|
|
32
|
+
|
|
3
33
|
## 0.9.1-next.1
|
|
4
34
|
|
|
5
35
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -11,7 +11,20 @@ be used in the frontend as a persistent alternative to the builtin `WebStorage`.
|
|
|
11
11
|
Please see [the backend README](https://github.com/backstage/backstage/tree/master/plugins/user-settings-backend)
|
|
12
12
|
for installation instructions.
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# From your Backstage root directory
|
|
18
|
+
yarn --cwd packages/app add @backstage/plugin-user-settings
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Once installed, the plugin is automatically available in your app through the default feature discovery. For more details and alternative installation methods, see [installing plugins](https://backstage.io/docs/frontend-system/building-apps/installing-plugins).
|
|
22
|
+
|
|
23
|
+
## Old Frontend System
|
|
24
|
+
|
|
25
|
+
If your Backstage app uses the old frontend system, you need to manually wire the plugin into your app as outlined in this section. If you are on the new frontend system, you can skip this.
|
|
26
|
+
|
|
27
|
+
### Components Usage
|
|
15
28
|
|
|
16
29
|
Add the item to the Sidebar:
|
|
17
30
|
|
package/dist/alpha.d.ts
CHANGED
|
@@ -2,7 +2,10 @@ import * as react from 'react';
|
|
|
2
2
|
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
3
3
|
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* @alpha
|
|
7
|
+
* @deprecated Import from `@backstage/plugin-user-settings` instead.
|
|
8
|
+
*/
|
|
6
9
|
declare const userSettingsTranslationRef: _backstage_frontend_plugin_api.TranslationRef<"user-settings", {
|
|
7
10
|
readonly "featureFlags.title": "Feature Flags";
|
|
8
11
|
readonly "featureFlags.description": "Please refresh the page when toggling feature flags";
|
|
@@ -55,7 +58,6 @@ declare const userSettingsTranslationRef: _backstage_frontend_plugin_api.Transla
|
|
|
55
58
|
readonly "profileCard.title": "Profile";
|
|
56
59
|
readonly "appearanceCard.title": "Appearance";
|
|
57
60
|
}>;
|
|
58
|
-
|
|
59
61
|
/** @alpha */
|
|
60
62
|
declare const settingsNavItem: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
61
63
|
kind: "nav-item";
|
|
@@ -98,6 +100,8 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
98
100
|
};
|
|
99
101
|
}>;
|
|
100
102
|
"page:user-settings": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
103
|
+
kind: "page";
|
|
104
|
+
name: undefined;
|
|
101
105
|
config: {
|
|
102
106
|
path: string | undefined;
|
|
103
107
|
title: string | undefined;
|
|
@@ -125,22 +129,95 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
125
129
|
optional: false;
|
|
126
130
|
internal: false;
|
|
127
131
|
}>;
|
|
132
|
+
};
|
|
133
|
+
params: {
|
|
134
|
+
path: string;
|
|
135
|
+
title?: string;
|
|
136
|
+
icon?: _backstage_frontend_plugin_api.IconElement;
|
|
137
|
+
loader?: () => Promise<react.JSX.Element>;
|
|
138
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
139
|
+
noHeader?: boolean;
|
|
140
|
+
};
|
|
141
|
+
}>;
|
|
142
|
+
"sub-page:user-settings/auth-providers": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
143
|
+
config: {
|
|
144
|
+
path: string | undefined;
|
|
145
|
+
title: string | undefined;
|
|
146
|
+
};
|
|
147
|
+
configInput: {
|
|
148
|
+
title?: string | undefined;
|
|
149
|
+
path?: string | undefined;
|
|
150
|
+
};
|
|
151
|
+
output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
152
|
+
optional: true;
|
|
153
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
|
|
154
|
+
optional: true;
|
|
155
|
+
}>;
|
|
156
|
+
inputs: {
|
|
128
157
|
providerSettings: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}>, {
|
|
129
158
|
singleton: true;
|
|
130
159
|
optional: true;
|
|
131
160
|
internal: false;
|
|
132
161
|
}>;
|
|
133
162
|
};
|
|
134
|
-
kind: "page";
|
|
135
|
-
name:
|
|
163
|
+
kind: "sub-page";
|
|
164
|
+
name: "auth-providers";
|
|
136
165
|
params: {
|
|
137
|
-
defaultPath?: [Error: `Use the 'path' param instead`];
|
|
138
166
|
path: string;
|
|
139
|
-
title
|
|
167
|
+
title: string;
|
|
140
168
|
icon?: _backstage_frontend_plugin_api.IconElement;
|
|
141
|
-
loader
|
|
169
|
+
loader: () => Promise<JSX.Element>;
|
|
170
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
171
|
+
};
|
|
172
|
+
}>;
|
|
173
|
+
"sub-page:user-settings/feature-flags": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
174
|
+
kind: "sub-page";
|
|
175
|
+
name: "feature-flags";
|
|
176
|
+
config: {
|
|
177
|
+
path: string | undefined;
|
|
178
|
+
title: string | undefined;
|
|
179
|
+
};
|
|
180
|
+
configInput: {
|
|
181
|
+
title?: string | undefined;
|
|
182
|
+
path?: string | undefined;
|
|
183
|
+
};
|
|
184
|
+
output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
185
|
+
optional: true;
|
|
186
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
|
|
187
|
+
optional: true;
|
|
188
|
+
}>;
|
|
189
|
+
inputs: {};
|
|
190
|
+
params: {
|
|
191
|
+
path: string;
|
|
192
|
+
title: string;
|
|
193
|
+
icon?: _backstage_frontend_plugin_api.IconElement;
|
|
194
|
+
loader: () => Promise<JSX.Element>;
|
|
195
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
196
|
+
};
|
|
197
|
+
}>;
|
|
198
|
+
"sub-page:user-settings/general": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
199
|
+
kind: "sub-page";
|
|
200
|
+
name: "general";
|
|
201
|
+
config: {
|
|
202
|
+
path: string | undefined;
|
|
203
|
+
title: string | undefined;
|
|
204
|
+
};
|
|
205
|
+
configInput: {
|
|
206
|
+
title?: string | undefined;
|
|
207
|
+
path?: string | undefined;
|
|
208
|
+
};
|
|
209
|
+
output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
210
|
+
optional: true;
|
|
211
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
|
|
212
|
+
optional: true;
|
|
213
|
+
}>;
|
|
214
|
+
inputs: {};
|
|
215
|
+
params: {
|
|
216
|
+
path: string;
|
|
217
|
+
title: string;
|
|
218
|
+
icon?: _backstage_frontend_plugin_api.IconElement;
|
|
219
|
+
loader: () => Promise<JSX.Element>;
|
|
142
220
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
143
|
-
noHeader?: boolean;
|
|
144
221
|
};
|
|
145
222
|
}>;
|
|
146
223
|
}>;
|
package/dist/alpha.esm.js
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { PageBlueprint, createExtensionInput, coreExtensionData, NavItemBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
|
|
2
|
+
import { PageBlueprint, SubPageBlueprint, createExtensionInput, coreExtensionData, NavItemBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
|
|
3
|
+
import { Content } from '@backstage/core-components';
|
|
3
4
|
import SettingsIcon from '@material-ui/icons/Settings';
|
|
4
5
|
import { settingsRouteRef } from './plugin.esm.js';
|
|
5
|
-
|
|
6
|
+
import { userSettingsTranslationRef as userSettingsTranslationRef$1 } from './translation.esm.js';
|
|
6
7
|
|
|
7
|
-
const
|
|
8
|
+
const userSettingsTranslationRef = userSettingsTranslationRef$1;
|
|
9
|
+
const userSettingsPage = PageBlueprint.make({
|
|
10
|
+
params: {
|
|
11
|
+
path: "/settings",
|
|
12
|
+
routeRef: settingsRouteRef,
|
|
13
|
+
title: "Settings"
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
const generalSettingsPage = SubPageBlueprint.make({
|
|
17
|
+
name: "general",
|
|
18
|
+
params: {
|
|
19
|
+
path: "general",
|
|
20
|
+
title: "General",
|
|
21
|
+
loader: () => import('./components/General/index.esm.js').then((m) => /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(m.UserSettingsGeneral, {}) }))
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
const authProvidersSettingsPage = SubPageBlueprint.makeWithOverrides({
|
|
25
|
+
name: "auth-providers",
|
|
8
26
|
inputs: {
|
|
9
27
|
providerSettings: createExtensionInput([coreExtensionData.reactElement], {
|
|
10
28
|
singleton: true,
|
|
@@ -13,19 +31,27 @@ const userSettingsPage = PageBlueprint.makeWithOverrides({
|
|
|
13
31
|
},
|
|
14
32
|
factory(originalFactory, { inputs }) {
|
|
15
33
|
return originalFactory({
|
|
16
|
-
path: "
|
|
17
|
-
|
|
18
|
-
loader: () => import('./components/
|
|
19
|
-
m.
|
|
34
|
+
path: "auth-providers",
|
|
35
|
+
title: "Authentication Providers",
|
|
36
|
+
loader: () => import('./components/AuthProviders/index.esm.js').then((m) => /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(
|
|
37
|
+
m.UserSettingsAuthProviders,
|
|
20
38
|
{
|
|
21
39
|
providerSettings: inputs.providerSettings?.get(
|
|
22
40
|
coreExtensionData.reactElement
|
|
23
41
|
)
|
|
24
42
|
}
|
|
25
|
-
))
|
|
43
|
+
) }))
|
|
26
44
|
});
|
|
27
45
|
}
|
|
28
46
|
});
|
|
47
|
+
const featureFlagsSettingsPage = SubPageBlueprint.make({
|
|
48
|
+
name: "feature-flags",
|
|
49
|
+
params: {
|
|
50
|
+
path: "feature-flags",
|
|
51
|
+
title: "Feature Flags",
|
|
52
|
+
loader: () => import('./components/FeatureFlags/index.esm.js').then((m) => /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(m.UserSettingsFeatureFlags, {}) }))
|
|
53
|
+
}
|
|
54
|
+
});
|
|
29
55
|
const settingsNavItem = NavItemBlueprint.make({
|
|
30
56
|
params: {
|
|
31
57
|
routeRef: settingsRouteRef,
|
|
@@ -36,13 +62,19 @@ const settingsNavItem = NavItemBlueprint.make({
|
|
|
36
62
|
var alpha = createFrontendPlugin({
|
|
37
63
|
pluginId: "user-settings",
|
|
38
64
|
title: "Settings",
|
|
39
|
-
icon: /* @__PURE__ */ jsx(SettingsIcon, {}),
|
|
65
|
+
icon: /* @__PURE__ */ jsx(SettingsIcon, { fontSize: "inherit" }),
|
|
40
66
|
info: { packageJson: () => import('./package.json.esm.js') },
|
|
41
|
-
extensions: [
|
|
67
|
+
extensions: [
|
|
68
|
+
userSettingsPage,
|
|
69
|
+
generalSettingsPage,
|
|
70
|
+
authProvidersSettingsPage,
|
|
71
|
+
featureFlagsSettingsPage,
|
|
72
|
+
settingsNavItem
|
|
73
|
+
],
|
|
42
74
|
routes: {
|
|
43
75
|
root: settingsRouteRef
|
|
44
76
|
}
|
|
45
77
|
});
|
|
46
78
|
|
|
47
|
-
export { alpha as default, settingsNavItem };
|
|
79
|
+
export { alpha as default, settingsNavItem, userSettingsTranslationRef };
|
|
48
80
|
//# sourceMappingURL=alpha.esm.js.map
|
package/dist/alpha.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n coreExtensionData,\n createExtensionInput,\n createFrontendPlugin,\n PageBlueprint,\n NavItemBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport { settingsRouteRef } from './plugin';\n\
|
|
1
|
+
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n coreExtensionData,\n createExtensionInput,\n createFrontendPlugin,\n PageBlueprint,\n NavItemBlueprint,\n SubPageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { Content } from '@backstage/core-components';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport { settingsRouteRef } from './plugin';\n\nimport { userSettingsTranslationRef as _userSettingsTranslationRef } from './translation';\n\n/**\n * @alpha\n * @deprecated Import from `@backstage/plugin-user-settings` instead.\n */\nexport const userSettingsTranslationRef = _userSettingsTranslationRef;\n\nconst userSettingsPage = PageBlueprint.make({\n params: {\n path: '/settings',\n routeRef: settingsRouteRef,\n title: 'Settings',\n },\n});\n\nconst generalSettingsPage = SubPageBlueprint.make({\n name: 'general',\n params: {\n path: 'general',\n title: 'General',\n loader: () =>\n import('./components/General').then(m => (\n <Content>\n <m.UserSettingsGeneral />\n </Content>\n )),\n },\n});\n\nconst authProvidersSettingsPage = SubPageBlueprint.makeWithOverrides({\n name: 'auth-providers',\n inputs: {\n providerSettings: createExtensionInput([coreExtensionData.reactElement], {\n singleton: true,\n optional: true,\n }),\n },\n factory(originalFactory, { inputs }) {\n return originalFactory({\n path: 'auth-providers',\n title: 'Authentication Providers',\n loader: () =>\n import('./components/AuthProviders').then(m => (\n <Content>\n <m.UserSettingsAuthProviders\n providerSettings={inputs.providerSettings?.get(\n coreExtensionData.reactElement,\n )}\n />\n </Content>\n )),\n });\n },\n});\n\nconst featureFlagsSettingsPage = SubPageBlueprint.make({\n name: 'feature-flags',\n params: {\n path: 'feature-flags',\n title: 'Feature Flags',\n loader: () =>\n import('./components/FeatureFlags').then(m => (\n <Content>\n <m.UserSettingsFeatureFlags />\n </Content>\n )),\n },\n});\n\n/** @alpha */\nexport const settingsNavItem = NavItemBlueprint.make({\n params: {\n routeRef: settingsRouteRef,\n title: 'Settings',\n icon: SettingsIcon,\n },\n});\n\n/**\n * @alpha\n */\nexport default createFrontendPlugin({\n pluginId: 'user-settings',\n title: 'Settings',\n icon: <SettingsIcon fontSize=\"inherit\" />,\n info: { packageJson: () => import('../package.json') },\n extensions: [\n userSettingsPage,\n generalSettingsPage,\n authProvidersSettingsPage,\n featureFlagsSettingsPage,\n settingsNavItem,\n ],\n routes: {\n root: settingsRouteRef,\n },\n});\n"],"names":["_userSettingsTranslationRef"],"mappings":";;;;;;;AAiCO,MAAM,0BAAA,GAA6BA;AAE1C,MAAM,gBAAA,GAAmB,cAAc,IAAA,CAAK;AAAA,EAC1C,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,WAAA;AAAA,IACN,QAAA,EAAU,gBAAA;AAAA,IACV,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAED,MAAM,mBAAA,GAAsB,iBAAiB,IAAA,CAAK;AAAA,EAChD,IAAA,EAAM,SAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,MACN,OAAO,mCAAsB,EAAE,IAAA,CAAK,CAAA,CAAA,qBAClC,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,CAAA,CAAE,mBAAA,EAAF,EAAsB,GACzB,CACD;AAAA;AAEP,CAAC,CAAA;AAED,MAAM,yBAAA,GAA4B,iBAAiB,iBAAA,CAAkB;AAAA,EACnE,IAAA,EAAM,gBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,gBAAA,EAAkB,oBAAA,CAAqB,CAAC,iBAAA,CAAkB,YAAY,CAAA,EAAG;AAAA,MACvE,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU;AAAA,KACX;AAAA,GACH;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,IAAA,EAAM,gBAAA;AAAA,MACN,KAAA,EAAO,0BAAA;AAAA,MACP,MAAA,EAAQ,MACN,OAAO,yCAA4B,EAAE,IAAA,CAAK,CAAA,CAAA,yBACvC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,CAAA,CAAE,yBAAA;AAAA,QAAF;AAAA,UACC,gBAAA,EAAkB,OAAO,gBAAA,EAAkB,GAAA;AAAA,YACzC,iBAAA,CAAkB;AAAA;AACpB;AAAA,SAEJ,CACD;AAAA,KACJ,CAAA;AAAA,EACH;AACF,CAAC,CAAA;AAED,MAAM,wBAAA,GAA2B,iBAAiB,IAAA,CAAK;AAAA,EACrD,IAAA,EAAM,eAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,eAAA;AAAA,IACN,KAAA,EAAO,eAAA;AAAA,IACP,MAAA,EAAQ,MACN,OAAO,wCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,qBACvC,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,CAAA,CAAE,wBAAA,EAAF,EAA2B,GAC9B,CACD;AAAA;AAEP,CAAC,CAAA;AAGM,MAAM,eAAA,GAAkB,iBAAiB,IAAA,CAAK;AAAA,EACnD,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,gBAAA;AAAA,IACV,KAAA,EAAO,UAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAC;AAKD,YAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,eAAA;AAAA,EACV,KAAA,EAAO,UAAA;AAAA,EACP,IAAA,kBAAM,GAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAS,SAAA,EAAU,CAAA;AAAA,EACvC,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,uBAAiB,CAAA,EAAE;AAAA,EACrD,UAAA,EAAY;AAAA,IACV,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA,yBAAA;AAAA,IACA,wBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useEffect } from 'react';
|
|
2
|
+
import { useState, useEffect, isValidElement, createElement } from 'react';
|
|
3
3
|
import Button from '@material-ui/core/Button';
|
|
4
4
|
import Grid from '@material-ui/core/Grid';
|
|
5
5
|
import ListItem from '@material-ui/core/ListItem';
|
|
@@ -15,7 +15,7 @@ import { userSettingsTranslationRef } from '../../translation.esm.js';
|
|
|
15
15
|
|
|
16
16
|
const emptyProfile = {};
|
|
17
17
|
const ProviderSettingsItem = (props) => {
|
|
18
|
-
const { title, description, icon
|
|
18
|
+
const { title, description, icon, apiRef } = props;
|
|
19
19
|
const api = useApi(apiRef);
|
|
20
20
|
const errorApi = useApi(errorApiRef);
|
|
21
21
|
const [signedIn, setSignedIn] = useState(false);
|
|
@@ -46,8 +46,9 @@ const ProviderSettingsItem = (props) => {
|
|
|
46
46
|
subscription.unsubscribe();
|
|
47
47
|
};
|
|
48
48
|
}, [api]);
|
|
49
|
+
const iconElement = icon === null || isValidElement(icon) ? icon : createElement(icon);
|
|
49
50
|
return /* @__PURE__ */ jsxs(ListItem, { children: [
|
|
50
|
-
/* @__PURE__ */ jsx(ListItemIcon, { children:
|
|
51
|
+
/* @__PURE__ */ jsx(ListItemIcon, { children: iconElement }),
|
|
51
52
|
/* @__PURE__ */ jsx(
|
|
52
53
|
ListItemText,
|
|
53
54
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderSettingsItem.esm.js","sources":["../../../src/components/AuthProviders/ProviderSettingsItem.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport {\n ApiRef,\n SessionApi,\n SessionState,\n ProfileInfoApi,\n ProfileInfo,\n useApi,\n errorApiRef,\n IconComponent,\n} from '@backstage/core-plugin-api';\nimport { ProviderSettingsAvatar } from './ProviderSettingsAvatar';\nimport { useTranslationRef } from '@backstage/frontend-plugin-api';\nimport { userSettingsTranslationRef } from '../../translation';\n\nconst emptyProfile: ProfileInfo = {};\n\n/** @public */\nexport const ProviderSettingsItem = (props: {\n title: string;\n description: string;\n icon: IconComponent;\n apiRef: ApiRef<ProfileInfoApi & SessionApi>;\n}) => {\n const { title, description, icon
|
|
1
|
+
{"version":3,"file":"ProviderSettingsItem.esm.js","sources":["../../../src/components/AuthProviders/ProviderSettingsItem.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createElement, isValidElement, useEffect, useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport {\n ApiRef,\n SessionApi,\n SessionState,\n ProfileInfoApi,\n ProfileInfo,\n useApi,\n errorApiRef,\n IconComponent,\n} from '@backstage/core-plugin-api';\nimport { IconElement } from '@backstage/frontend-plugin-api';\nimport { ProviderSettingsAvatar } from './ProviderSettingsAvatar';\nimport { useTranslationRef } from '@backstage/frontend-plugin-api';\nimport { userSettingsTranslationRef } from '../../translation';\n\nconst emptyProfile: ProfileInfo = {};\n\n/** @public */\nexport const ProviderSettingsItem = (props: {\n title: string;\n description: string;\n icon: IconComponent | IconElement;\n apiRef: ApiRef<ProfileInfoApi & SessionApi>;\n}) => {\n const { title, description, icon, apiRef } = props;\n\n const api = useApi(apiRef);\n const errorApi = useApi(errorApiRef);\n const [signedIn, setSignedIn] = useState(false);\n const [profile, setProfile] = useState<ProfileInfo>(emptyProfile);\n const { t } = useTranslationRef(userSettingsTranslationRef);\n\n useEffect(() => {\n let didCancel = false;\n\n const subscription = api\n .sessionState$()\n .subscribe((sessionState: SessionState) => {\n if (sessionState !== SessionState.SignedIn) {\n setProfile(emptyProfile);\n setSignedIn(false);\n }\n if (!didCancel) {\n api\n .getProfile({ optional: true })\n .then((profileResponse: ProfileInfo | undefined) => {\n if (!didCancel) {\n if (sessionState === SessionState.SignedIn) {\n setSignedIn(true);\n }\n if (profileResponse) {\n setProfile(profileResponse);\n }\n }\n });\n }\n });\n\n return () => {\n didCancel = true;\n subscription.unsubscribe();\n };\n }, [api]);\n\n const iconElement =\n icon === null || isValidElement(icon)\n ? icon\n : createElement(icon as IconComponent);\n\n return (\n <ListItem>\n <ListItemIcon>{iconElement}</ListItemIcon>\n <ListItemText\n primary={title}\n secondary={\n <Tooltip placement=\"top\" arrow title={description}>\n <Grid container spacing={6}>\n <Grid item>\n <ProviderSettingsAvatar size={48} picture={profile.picture} />\n </Grid>\n <Grid item xs={12} sm container>\n <Grid item xs container direction=\"column\" spacing={2}>\n <Grid item xs>\n {profile.displayName && (\n <Typography\n variant=\"subtitle1\"\n color=\"textPrimary\"\n gutterBottom\n >\n {profile.displayName}\n </Typography>\n )}\n {profile.email && (\n <Typography variant=\"body2\" color=\"textSecondary\">\n {profile.email}\n </Typography>\n )}\n <Typography variant=\"body2\" color=\"textSecondary\">\n {description}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Tooltip>\n }\n secondaryTypographyProps={{ noWrap: true, style: { width: '80%' } }}\n />\n <ListItemSecondaryAction>\n <Tooltip\n placement=\"top\"\n arrow\n title={\n signedIn\n ? t('providerSettingsItem.title.signOut', { title })\n : t('providerSettingsItem.title.signIn', { title })\n }\n >\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => {\n const action = signedIn ? api.signOut() : api.signIn();\n action.catch(error => errorApi.post(error));\n }}\n >\n {signedIn\n ? t('providerSettingsItem.buttonTitle.signOut')\n : t('providerSettingsItem.buttonTitle.signIn')}\n </Button>\n </Tooltip>\n </ListItemSecondaryAction>\n </ListItem>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAwCA,MAAM,eAA4B,EAAC;AAG5B,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAK/B;AACJ,EAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,QAAO,GAAI,KAAA;AAE7C,EAAA,MAAM,GAAA,GAAM,OAAO,MAAM,CAAA;AACzB,EAAA,MAAM,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAsB,YAAY,CAAA;AAChE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,0BAA0B,CAAA;AAE1D,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,MAAM,eAAe,GAAA,CAClB,aAAA,EAAc,CACd,SAAA,CAAU,CAAC,YAAA,KAA+B;AACzC,MAAA,IAAI,YAAA,KAAiB,aAAa,QAAA,EAAU;AAC1C,QAAA,UAAA,CAAW,YAAY,CAAA;AACvB,QAAA,WAAA,CAAY,KAAK,CAAA;AAAA,MACnB;AACA,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,GAAA,CACG,UAAA,CAAW,EAAE,QAAA,EAAU,IAAA,EAAM,CAAA,CAC7B,IAAA,CAAK,CAAC,eAAA,KAA6C;AAClD,UAAA,IAAI,CAAC,SAAA,EAAW;AACd,YAAA,IAAI,YAAA,KAAiB,aAAa,QAAA,EAAU;AAC1C,cAAA,WAAA,CAAY,IAAI,CAAA;AAAA,YAClB;AACA,YAAA,IAAI,eAAA,EAAiB;AACnB,cAAA,UAAA,CAAW,eAAe,CAAA;AAAA,YAC5B;AAAA,UACF;AAAA,QACF,CAAC,CAAA;AAAA,MACL;AAAA,IACF,CAAC,CAAA;AAEH,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AACZ,MAAA,YAAA,CAAa,WAAA,EAAY;AAAA,IAC3B,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,MAAM,WAAA,GACJ,SAAS,IAAA,IAAQ,cAAA,CAAe,IAAI,CAAA,GAChC,IAAA,GACA,cAAc,IAAqB,CAAA;AAEzC,EAAA,4BACG,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,gBAAc,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,oBAC3B,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,KAAA;AAAA,QACT,SAAA,kBACE,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,OAAM,KAAA,EAAK,IAAA,EAAC,KAAA,EAAO,WAAA,EACpC,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,SAAS,CAAA,EACvB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EACR,QAAA,kBAAA,GAAA,CAAC,sBAAA,EAAA,EAAuB,MAAM,EAAA,EAAI,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS,CAAA,EAC9D,CAAA;AAAA,0BACA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAE,IAAA,EAAC,SAAA,EAAS,IAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAE,IAAA,EAAC,SAAA,EAAS,IAAA,EAAC,SAAA,EAAU,QAAA,EAAS,OAAA,EAAS,CAAA,EAClD,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAE,IAAA,EACV,QAAA,EAAA;AAAA,YAAA,OAAA,CAAQ,WAAA,oBACP,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,WAAA;AAAA,gBACR,KAAA,EAAM,aAAA;AAAA,gBACN,YAAA,EAAY,IAAA;AAAA,gBAEX,QAAA,EAAA,OAAA,CAAQ;AAAA;AAAA,aACX;AAAA,YAED,OAAA,CAAQ,yBACP,GAAA,CAAC,UAAA,EAAA,EAAW,SAAQ,OAAA,EAAQ,KAAA,EAAM,eAAA,EAC/B,QAAA,EAAA,OAAA,CAAQ,KAAA,EACX,CAAA;AAAA,gCAED,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,KAAA,EAAM,iBAC/B,QAAA,EAAA,WAAA,EACH;AAAA,WAAA,EACF,GACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAEF,wBAAA,EAA0B,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAO,EAAE,KAAA,EAAO,OAAM;AAAE;AAAA,KACpE;AAAA,wBACC,uBAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAK,IAAA;AAAA,QACL,KAAA,EACE,QAAA,GACI,CAAA,CAAE,oCAAA,EAAsC,EAAE,KAAA,EAAO,CAAA,GACjD,CAAA,CAAE,mCAAA,EAAqC,EAAE,KAAA,EAAO,CAAA;AAAA,QAGtD,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,UAAA;AAAA,YACR,KAAA,EAAM,SAAA;AAAA,YACN,SAAS,MAAM;AACb,cAAA,MAAM,SAAS,QAAA,GAAW,GAAA,CAAI,OAAA,EAAQ,GAAI,IAAI,MAAA,EAAO;AACrD,cAAA,MAAA,CAAO,KAAA,CAAM,CAAA,KAAA,KAAS,QAAA,CAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,YAC5C,CAAA;AAAA,YAEC,QAAA,EAAA,QAAA,GACG,CAAA,CAAE,0CAA0C,CAAA,GAC5C,EAAE,yCAAyC;AAAA;AAAA;AACjD;AAAA,KACF,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultSettingsPage.esm.js","sources":["../../../src/components/DefaultSettingsPage/DefaultSettingsPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactElement } from 'react';\nimport { UserSettingsAuthProviders } from '../AuthProviders';\nimport { UserSettingsFeatureFlags } from '../FeatureFlags';\nimport { UserSettingsGeneral } from '../General';\nimport { SettingsLayout
|
|
1
|
+
{"version":3,"file":"DefaultSettingsPage.esm.js","sources":["../../../src/components/DefaultSettingsPage/DefaultSettingsPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactElement } from 'react';\nimport { UserSettingsAuthProviders } from '../AuthProviders';\nimport { UserSettingsFeatureFlags } from '../FeatureFlags';\nimport { UserSettingsGeneral } from '../General';\nimport { SettingsLayoutRouteProps } from '../SettingsLayout';\nimport { SettingsLayout } from '../SettingsLayout/SettingsLayout';\nimport { useTranslationRef } from '@backstage/frontend-plugin-api';\nimport { userSettingsTranslationRef } from '../../translation';\n\n/**\n * @public\n */\nexport const DefaultSettingsPage = (props: {\n tabs?: ReactElement<SettingsLayoutRouteProps>[];\n providerSettings?: JSX.Element;\n}) => {\n const { providerSettings, tabs } = props;\n const { t } = useTranslationRef(userSettingsTranslationRef);\n\n return (\n <SettingsLayout>\n <SettingsLayout.Route\n path=\"general\"\n title={t('defaultSettingsPage.tabsTitle.general')}\n >\n <UserSettingsGeneral />\n </SettingsLayout.Route>\n <SettingsLayout.Route\n path=\"auth-providers\"\n title={t('defaultSettingsPage.tabsTitle.authProviders')}\n >\n <UserSettingsAuthProviders providerSettings={providerSettings} />\n </SettingsLayout.Route>\n <SettingsLayout.Route\n path=\"feature-flags\"\n title={t('defaultSettingsPage.tabsTitle.featureFlags')}\n >\n <UserSettingsFeatureFlags />\n </SettingsLayout.Route>\n {tabs}\n </SettingsLayout>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAG9B;AACJ,EAAA,MAAM,EAAE,gBAAA,EAAkB,IAAA,EAAK,GAAI,KAAA;AACnC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,0BAA0B,CAAA;AAE1D,EAAA,4BACG,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA,CAAe,KAAA;AAAA,MAAf;AAAA,QACC,IAAA,EAAK,SAAA;AAAA,QACL,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,QAEhD,8BAAC,mBAAA,EAAA,EAAoB;AAAA;AAAA,KACvB;AAAA,oBACA,GAAA;AAAA,MAAC,cAAA,CAAe,KAAA;AAAA,MAAf;AAAA,QACC,IAAA,EAAK,gBAAA;AAAA,QACL,KAAA,EAAO,EAAE,6CAA6C,CAAA;AAAA,QAEtD,QAAA,kBAAA,GAAA,CAAC,6BAA0B,gBAAA,EAAoC;AAAA;AAAA,KACjE;AAAA,oBACA,GAAA;AAAA,MAAC,cAAA,CAAe,KAAA;AAAA,MAAf;AAAA,QACC,IAAA,EAAK,eAAA;AAAA,QACL,KAAA,EAAO,EAAE,4CAA4C,CAAA;AAAA,QAErD,8BAAC,wBAAA,EAAA,EAAyB;AAAA;AAAA,KAC5B;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { UserSettingsGeneral } from './UserSettingsGeneral.esm.js';
|
|
2
|
+
export { UserSettingsProfileCard } from './UserSettingsProfileCard.esm.js';
|
|
3
|
+
export { UserSettingsMenu } from './UserSettingsMenu.esm.js';
|
|
4
|
+
export { UserSettingsSignInAvatar } from './UserSettingsSignInAvatar.esm.js';
|
|
5
|
+
export { UserSettingsAppearanceCard } from './UserSettingsAppearanceCard.esm.js';
|
|
6
|
+
export { UserSettingsThemeToggle } from './UserSettingsThemeToggle.esm.js';
|
|
7
|
+
export { UserSettingsPinToggle } from './UserSettingsPinToggle.esm.js';
|
|
8
|
+
export { UserSettingsIdentityCard } from './UserSettingsIdentityCard.esm.js';
|
|
9
|
+
export { UserSettingsLanguageToggle } from './UserSettingsLanguageToggle.esm.js';
|
|
10
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { JsonValue, Observable } from '@backstage/types';
|
|
|
4
4
|
import { SignalApi } from '@backstage/plugin-signals-react';
|
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
6
|
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
7
|
+
import { IconElement } from '@backstage/frontend-plugin-api';
|
|
7
8
|
import { PropsWithChildren, ReactNode, ElementType } from 'react';
|
|
8
9
|
import { TabProps } from '@material-ui/core/Tab';
|
|
9
10
|
|
|
@@ -79,7 +80,7 @@ declare const DefaultProviderSettings: (props: {
|
|
|
79
80
|
declare const ProviderSettingsItem: (props: {
|
|
80
81
|
title: string;
|
|
81
82
|
description: string;
|
|
82
|
-
icon: IconComponent;
|
|
83
|
+
icon: IconComponent | IconElement;
|
|
83
84
|
apiRef: ApiRef<ProfileInfoApi & SessionApi>;
|
|
84
85
|
}) => react_jsx_runtime.JSX.Element;
|
|
85
86
|
|
|
@@ -171,5 +172,59 @@ declare const SettingsLayout: {
|
|
|
171
172
|
Route: (props: SettingsLayoutRouteProps) => null;
|
|
172
173
|
};
|
|
173
174
|
|
|
174
|
-
|
|
175
|
+
/** @public */
|
|
176
|
+
declare const userSettingsTranslationRef: _backstage_frontend_plugin_api.TranslationRef<"user-settings", {
|
|
177
|
+
readonly "featureFlags.title": "Feature Flags";
|
|
178
|
+
readonly "featureFlags.description": "Please refresh the page when toggling feature flags";
|
|
179
|
+
readonly "featureFlags.filterTitle": "Filter";
|
|
180
|
+
readonly "featureFlags.clearFilter": "Clear filter";
|
|
181
|
+
readonly "featureFlags.emptyFlags.title": "No Feature Flags";
|
|
182
|
+
readonly "featureFlags.emptyFlags.action.title": "An example for how to add a feature flag is highlighted below:";
|
|
183
|
+
readonly "featureFlags.emptyFlags.action.readMoreButtonTitle": "Read More";
|
|
184
|
+
readonly "featureFlags.emptyFlags.description": "Feature Flags make it possible for plugins to register features in Backstage for users to opt into. You can use this to split out logic in your code for manual A/B testing, etc.";
|
|
185
|
+
readonly "featureFlags.flagItem.title.disable": "Disable";
|
|
186
|
+
readonly "featureFlags.flagItem.title.enable": "Enable";
|
|
187
|
+
readonly "featureFlags.flagItem.subtitle.registeredInApplication": "Registered in the application";
|
|
188
|
+
readonly "featureFlags.flagItem.subtitle.registeredInPlugin": "Registered in {{pluginId}} plugin";
|
|
189
|
+
readonly "languageToggle.select": "Select language {{language}}";
|
|
190
|
+
readonly "languageToggle.title": "Language";
|
|
191
|
+
readonly "languageToggle.description": "Change the language";
|
|
192
|
+
readonly "themeToggle.select": "Select {{theme}}";
|
|
193
|
+
readonly "themeToggle.title": "Theme";
|
|
194
|
+
readonly "themeToggle.description": "Change the theme mode";
|
|
195
|
+
readonly "themeToggle.names.auto": "Auto";
|
|
196
|
+
readonly "themeToggle.names.dark": "Dark";
|
|
197
|
+
readonly "themeToggle.names.light": "Light";
|
|
198
|
+
readonly "themeToggle.selectAuto": "Select Auto Theme";
|
|
199
|
+
readonly "signOutMenu.title": "Sign Out";
|
|
200
|
+
readonly "signOutMenu.moreIconTitle": "more";
|
|
201
|
+
readonly "pinToggle.title": "Pin Sidebar";
|
|
202
|
+
readonly "pinToggle.description": "Prevent the sidebar from collapsing";
|
|
203
|
+
readonly "pinToggle.ariaLabelTitle": "Pin Sidebar Switch";
|
|
204
|
+
readonly "pinToggle.switchTitles.unpin": "Unpin Sidebar";
|
|
205
|
+
readonly "pinToggle.switchTitles.pin": "Pin Sidebar";
|
|
206
|
+
readonly "identityCard.title": "Backstage Identity";
|
|
207
|
+
readonly "identityCard.noIdentityTitle": "No Backstage Identity";
|
|
208
|
+
readonly "identityCard.userEntity": "User Entity";
|
|
209
|
+
readonly "identityCard.ownershipEntities": "Ownership Entities";
|
|
210
|
+
readonly "defaultProviderSettings.description": "Provides authentication towards {{provider}} APIs and identities";
|
|
211
|
+
readonly "emptyProviders.title": "No Authentication Providers";
|
|
212
|
+
readonly "emptyProviders.action.title": "Open app-config.yaml and make the changes as highlighted below:";
|
|
213
|
+
readonly "emptyProviders.action.readMoreButtonTitle": "Read More";
|
|
214
|
+
readonly "emptyProviders.description": "You can add Authentication Providers to Backstage which allows you to use these providers to authenticate yourself.";
|
|
215
|
+
readonly "providerSettingsItem.title.signOut": "Sign out from {{title}}";
|
|
216
|
+
readonly "providerSettingsItem.title.signIn": "Sign in to {{title}}";
|
|
217
|
+
readonly "providerSettingsItem.buttonTitle.signOut": "Sign out";
|
|
218
|
+
readonly "providerSettingsItem.buttonTitle.signIn": "Sign in";
|
|
219
|
+
readonly "authProviders.title": "Available Providers";
|
|
220
|
+
readonly "defaultSettingsPage.tabsTitle.featureFlags": "Feature Flags";
|
|
221
|
+
readonly "defaultSettingsPage.tabsTitle.authProviders": "Authentication Providers";
|
|
222
|
+
readonly "defaultSettingsPage.tabsTitle.general": "General";
|
|
223
|
+
readonly "settingsLayout.title": "Settings";
|
|
224
|
+
readonly sidebarTitle: "Settings";
|
|
225
|
+
readonly "profileCard.title": "Profile";
|
|
226
|
+
readonly "appearanceCard.title": "Appearance";
|
|
227
|
+
}>;
|
|
228
|
+
|
|
229
|
+
export { DefaultProviderSettings, ProviderSettingsItem, SettingsPage as Router, Settings, SettingsLayout, USER_SETTINGS_TAB_KEY, UserSettingsAppearanceCard, UserSettingsAuthProviders, UserSettingsFeatureFlags, UserSettingsGeneral, UserSettingsIdentityCard, UserSettingsLanguageToggle, UserSettingsMenu, UserSettingsPage, UserSettingsPinToggle, UserSettingsProfileCard, UserSettingsSignInAvatar, UserSettingsStorage, UserSettingsTab, UserSettingsThemeToggle, userSettingsPlugin as plugin, useUserProfile, userSettingsPlugin, userSettingsTranslationRef };
|
|
175
230
|
export type { SettingsLayoutProps, SettingsLayoutRouteProps, UserSettingsTabProps };
|
package/dist/index.esm.js
CHANGED
|
@@ -18,4 +18,5 @@ export { UserSettingsFeatureFlags } from './components/FeatureFlags/UserSettings
|
|
|
18
18
|
export { useUserProfile } from './components/useUserProfileInfo.esm.js';
|
|
19
19
|
export { USER_SETTINGS_TAB_KEY, UserSettingsTab } from './components/UserSettingsTab/UserSettingsTab.esm.js';
|
|
20
20
|
export { SettingsLayout } from './components/SettingsLayout/SettingsLayout.esm.js';
|
|
21
|
+
export { userSettingsTranslationRef } from './translation.esm.js';
|
|
21
22
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
package/dist/package.json.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@backstage/plugin-user-settings";
|
|
2
|
-
var version = "0.9.1
|
|
2
|
+
var version = "0.9.1";
|
|
3
3
|
var description = "A Backstage plugin that provides a settings page";
|
|
4
4
|
var backstage = {
|
|
5
5
|
role: "frontend-plugin",
|
|
@@ -65,6 +65,7 @@ var dependencies = {
|
|
|
65
65
|
"@backstage/plugin-user-settings-common": "workspace:^",
|
|
66
66
|
"@backstage/theme": "workspace:^",
|
|
67
67
|
"@backstage/types": "workspace:^",
|
|
68
|
+
"@backstage/ui": "workspace:^",
|
|
68
69
|
"@material-ui/core": "^4.12.2",
|
|
69
70
|
"@material-ui/icons": "^4.9.1",
|
|
70
71
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/** @
|
|
1
|
+
{"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/** @public */\nexport const userSettingsTranslationRef = createTranslationRef({\n id: 'user-settings',\n messages: {\n languageToggle: {\n title: 'Language',\n description: 'Change the language',\n select: 'Select language {{language}}',\n },\n themeToggle: {\n title: 'Theme',\n description: 'Change the theme mode',\n select: 'Select {{theme}}',\n selectAuto: 'Select Auto Theme',\n names: {\n light: 'Light',\n dark: 'Dark',\n auto: 'Auto',\n },\n },\n signOutMenu: {\n title: 'Sign Out',\n moreIconTitle: 'more',\n },\n pinToggle: {\n title: 'Pin Sidebar',\n description: 'Prevent the sidebar from collapsing',\n switchTitles: {\n unpin: 'Unpin Sidebar',\n pin: 'Pin Sidebar',\n },\n ariaLabelTitle: 'Pin Sidebar Switch',\n },\n identityCard: {\n title: 'Backstage Identity',\n noIdentityTitle: 'No Backstage Identity',\n userEntity: 'User Entity',\n ownershipEntities: 'Ownership Entities',\n },\n defaultProviderSettings: {\n description:\n 'Provides authentication towards {{provider}} APIs and identities',\n },\n emptyProviders: {\n title: 'No Authentication Providers',\n description:\n 'You can add Authentication Providers to Backstage which allows you to use these providers to authenticate yourself.',\n action: {\n title:\n 'Open app-config.yaml and make the changes as highlighted below:',\n readMoreButtonTitle: 'Read More',\n },\n },\n providerSettingsItem: {\n title: {\n signIn: 'Sign in to {{title}}',\n signOut: 'Sign out from {{title}}',\n },\n buttonTitle: {\n signIn: 'Sign in',\n signOut: 'Sign out',\n },\n },\n authProviders: {\n title: 'Available Providers',\n },\n defaultSettingsPage: {\n tabsTitle: {\n general: 'General',\n authProviders: 'Authentication Providers',\n featureFlags: 'Feature Flags',\n },\n },\n featureFlags: {\n title: 'Feature Flags',\n description: 'Please refresh the page when toggling feature flags',\n emptyFlags: {\n title: 'No Feature Flags',\n description:\n 'Feature Flags make it possible for plugins to register features in Backstage for users to opt into. You can use this to split out logic in your code for manual A/B testing, etc.',\n action: {\n title:\n 'An example for how to add a feature flag is highlighted below:',\n readMoreButtonTitle: 'Read More',\n },\n },\n filterTitle: 'Filter',\n clearFilter: 'Clear filter',\n flagItem: {\n title: {\n disable: 'Disable',\n enable: 'Enable',\n },\n subtitle: {\n registeredInApplication: 'Registered in the application',\n registeredInPlugin: 'Registered in {{pluginId}} plugin',\n },\n },\n },\n settingsLayout: {\n title: 'Settings',\n },\n sidebarTitle: 'Settings',\n profileCard: {\n title: 'Profile',\n },\n appearanceCard: {\n title: 'Appearance',\n },\n },\n});\n"],"names":[],"mappings":";;AAmBO,MAAM,6BAA6B,oBAAA,CAAqB;AAAA,EAC7D,EAAA,EAAI,eAAA;AAAA,EACJ,QAAA,EAAU;AAAA,IACR,cAAA,EAAgB;AAAA,MACd,KAAA,EAAO,UAAA;AAAA,MACP,WAAA,EAAa,qBAAA;AAAA,MACb,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,WAAA,EAAa;AAAA,MACX,KAAA,EAAO,OAAA;AAAA,MACP,WAAA,EAAa,uBAAA;AAAA,MACb,MAAA,EAAQ,kBAAA;AAAA,MACR,UAAA,EAAY,mBAAA;AAAA,MACZ,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,WAAA,EAAa;AAAA,MACX,KAAA,EAAO,UAAA;AAAA,MACP,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,SAAA,EAAW;AAAA,MACT,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EAAa,qCAAA;AAAA,MACb,YAAA,EAAc;AAAA,QACZ,KAAA,EAAO,eAAA;AAAA,QACP,GAAA,EAAK;AAAA,OACP;AAAA,MACA,cAAA,EAAgB;AAAA,KAClB;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,KAAA,EAAO,oBAAA;AAAA,MACP,eAAA,EAAiB,uBAAA;AAAA,MACjB,UAAA,EAAY,aAAA;AAAA,MACZ,iBAAA,EAAmB;AAAA,KACrB;AAAA,IACA,uBAAA,EAAyB;AAAA,MACvB,WAAA,EACE;AAAA,KACJ;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,KAAA,EAAO,6BAAA;AAAA,MACP,WAAA,EACE,qHAAA;AAAA,MACF,MAAA,EAAQ;AAAA,QACN,KAAA,EACE,iEAAA;AAAA,QACF,mBAAA,EAAqB;AAAA;AACvB,KACF;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,sBAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACX;AAAA,MACA,WAAA,EAAa;AAAA,QACX,MAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,aAAA,EAAe;AAAA,MACb,KAAA,EAAO;AAAA,KACT;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,SAAA,EAAW;AAAA,QACT,OAAA,EAAS,SAAA;AAAA,QACT,aAAA,EAAe,0BAAA;AAAA,QACf,YAAA,EAAc;AAAA;AAChB,KACF;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EAAa,qDAAA;AAAA,MACb,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,kBAAA;AAAA,QACP,WAAA,EACE,mLAAA;AAAA,QACF,MAAA,EAAQ;AAAA,UACN,KAAA,EACE,gEAAA;AAAA,UACF,mBAAA,EAAqB;AAAA;AACvB,OACF;AAAA,MACA,WAAA,EAAa,QAAA;AAAA,MACb,WAAA,EAAa,cAAA;AAAA,MACb,QAAA,EAAU;AAAA,QACR,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,SAAA;AAAA,UACT,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,QAAA,EAAU;AAAA,UACR,uBAAA,EAAyB,+BAAA;AAAA,UACzB,kBAAA,EAAoB;AAAA;AACtB;AACF,KACF;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,KAAA,EAAO;AAAA,KACT;AAAA,IACA,YAAA,EAAc,UAAA;AAAA,IACd,WAAA,EAAa;AAAA,MACX,KAAA,EAAO;AAAA,KACT;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,KAAA,EAAO;AAAA;AACT;AAEJ,CAAC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-user-settings",
|
|
3
|
-
"version": "0.9.1
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "A Backstage plugin that provides a settings page",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -67,17 +67,18 @@
|
|
|
67
67
|
"test": "backstage-cli package test"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@backstage/catalog-model": "1.7.
|
|
71
|
-
"@backstage/core-app-api": "1.19.6
|
|
72
|
-
"@backstage/core-components": "0.18.8
|
|
73
|
-
"@backstage/core-plugin-api": "1.12.4
|
|
74
|
-
"@backstage/errors": "1.2.7",
|
|
75
|
-
"@backstage/frontend-plugin-api": "0.
|
|
76
|
-
"@backstage/plugin-catalog-react": "2.1.0
|
|
77
|
-
"@backstage/plugin-signals-react": "0.0.20
|
|
78
|
-
"@backstage/plugin-user-settings-common": "0.1.0",
|
|
79
|
-
"@backstage/theme": "0.7.2",
|
|
80
|
-
"@backstage/types": "1.2.2",
|
|
70
|
+
"@backstage/catalog-model": "^1.7.7",
|
|
71
|
+
"@backstage/core-app-api": "^1.19.6",
|
|
72
|
+
"@backstage/core-components": "^0.18.8",
|
|
73
|
+
"@backstage/core-plugin-api": "^1.12.4",
|
|
74
|
+
"@backstage/errors": "^1.2.7",
|
|
75
|
+
"@backstage/frontend-plugin-api": "^0.15.0",
|
|
76
|
+
"@backstage/plugin-catalog-react": "^2.1.0",
|
|
77
|
+
"@backstage/plugin-signals-react": "^0.0.20",
|
|
78
|
+
"@backstage/plugin-user-settings-common": "^0.1.0",
|
|
79
|
+
"@backstage/theme": "^0.7.2",
|
|
80
|
+
"@backstage/types": "^1.2.2",
|
|
81
|
+
"@backstage/ui": "^0.13.0",
|
|
81
82
|
"@material-ui/core": "^4.12.2",
|
|
82
83
|
"@material-ui/icons": "^4.9.1",
|
|
83
84
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
@@ -86,10 +87,10 @@
|
|
|
86
87
|
"zen-observable": "^0.10.0"
|
|
87
88
|
},
|
|
88
89
|
"devDependencies": {
|
|
89
|
-
"@backstage/cli": "0.36.0
|
|
90
|
-
"@backstage/dev-utils": "1.1.21
|
|
91
|
-
"@backstage/plugin-catalog": "
|
|
92
|
-
"@backstage/test-utils": "1.7.16
|
|
90
|
+
"@backstage/cli": "^0.36.0",
|
|
91
|
+
"@backstage/dev-utils": "^1.1.21",
|
|
92
|
+
"@backstage/plugin-catalog": "^2.0.0",
|
|
93
|
+
"@backstage/test-utils": "^1.7.16",
|
|
93
94
|
"@testing-library/dom": "^10.0.0",
|
|
94
95
|
"@testing-library/jest-dom": "^6.0.0",
|
|
95
96
|
"@testing-library/react": "^16.0.0",
|