diff --git a/workspaces/app-defaults/packages/app/knip-report.md b/workspaces/app-defaults/packages/app/knip-report.md index c12221a219..02a4c60248 100644 --- a/workspaces/app-defaults/packages/app/knip-report.md +++ b/workspaces/app-defaults/packages/app/knip-report.md @@ -16,14 +16,13 @@ | @backstage/plugin-techdocs | package.json:40:6 | error | | @backstage/plugin-signals | package.json:39:6 | error | | @backstage/plugin-org | package.json:36:6 | error | -| react-router | package.json:50:6 | error | +| react-router | package.json:54:6 | error | -## Unused devDependencies (4) +## Unused devDependencies (3) | Name | Location | Severity | | :----------------------------- | :---------------- | :------- | -| @backstage/frontend-test-utils | package.json:54:6 | error | -| @testing-library/user-event | package.json:59:6 | error | -| @testing-library/dom | package.json:56:6 | error | -| cross-env | package.json:61:6 | error | +| @backstage/frontend-test-utils | package.json:58:6 | error | +| @testing-library/user-event | package.json:63:6 | error | +| cross-env | package.json:65:6 | error | diff --git a/workspaces/app-defaults/packages/app/package.json b/workspaces/app-defaults/packages/app/package.json index 4a4efb1440..9a7b2e9657 100644 --- a/workspaces/app-defaults/packages/app/package.json +++ b/workspaces/app-defaults/packages/app/package.json @@ -45,8 +45,8 @@ "@material-ui/icons": "^4.9.1", "@mui/material": "^5.18.0", "@red-hat-developer-hub/backstage-plugin-app-auth": "workspace:^", + "@red-hat-developer-hub/backstage-plugin-app-defaults": "workspace:^", "@red-hat-developer-hub/backstage-plugin-app-integrations": "workspace:^", - "@red-hat-developer-hub/backstage-plugin-app-react": "workspace:^", "@red-hat-developer-hub/backstage-plugin-global-header": "^1.21.0", "material-icons": "^1.13.14", "react": "^18.0.2", diff --git a/workspaces/app-defaults/packages/app/src/App.tsx b/workspaces/app-defaults/packages/app/src/App.tsx index b33c137370..73742e474c 100644 --- a/workspaces/app-defaults/packages/app/src/App.tsx +++ b/workspaces/app-defaults/packages/app/src/App.tsx @@ -18,7 +18,7 @@ import { createApp } from '@backstage/frontend-defaults'; import catalogPlugin from '@backstage/plugin-catalog/alpha'; import { appAuthModule } from '@red-hat-developer-hub/backstage-plugin-app-auth/alpha'; import { appIntegrationsModule } from '@red-hat-developer-hub/backstage-plugin-app-integrations/alpha'; -import { appDrawerModule } from '@red-hat-developer-hub/backstage-plugin-app-react/alpha'; +import appDefaultsModule from '@red-hat-developer-hub/backstage-plugin-app-defaults'; import { globalHeaderModule, globalHeaderTranslationsModule, @@ -32,7 +32,7 @@ export default createApp({ navModule, appAuthModule, appIntegrationsModule, - appDrawerModule, + appDefaultsModule, drawerDemoModule, globalHeaderModule, globalHeaderTranslationsModule, diff --git a/workspaces/app-defaults/packages/app/src/modules/drawer-demo/DrawerDemoContent.tsx b/workspaces/app-defaults/packages/app/src/modules/drawer-demo/DrawerDemoContent.tsx index c48150a0ca..3b906a0697 100644 --- a/workspaces/app-defaults/packages/app/src/modules/drawer-demo/DrawerDemoContent.tsx +++ b/workspaces/app-defaults/packages/app/src/modules/drawer-demo/DrawerDemoContent.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { useAppDrawer } from '@red-hat-developer-hub/backstage-plugin-app-react'; +import { useAppDrawer } from '@red-hat-developer-hub/backstage-plugin-app-defaults'; import { GlobalHeaderMenuItem } from '@red-hat-developer-hub/backstage-plugin-global-header/alpha'; import Box from '@mui/material/Box'; import Divider from '@mui/material/Divider'; diff --git a/workspaces/app-defaults/packages/app/src/modules/drawer-demo/index.tsx b/workspaces/app-defaults/packages/app/src/modules/drawer-demo/index.tsx index 57729eae16..2e14e0cae0 100644 --- a/workspaces/app-defaults/packages/app/src/modules/drawer-demo/index.tsx +++ b/workspaces/app-defaults/packages/app/src/modules/drawer-demo/index.tsx @@ -15,7 +15,7 @@ */ import { createFrontendModule } from '@backstage/frontend-plugin-api'; -import { AppDrawerContentBlueprint } from '@red-hat-developer-hub/backstage-plugin-app-react/alpha'; +import { AppDrawerContentBlueprint } from '@red-hat-developer-hub/backstage-plugin-app-defaults'; import { GlobalHeaderMenuItemBlueprint } from '@red-hat-developer-hub/backstage-plugin-global-header/alpha'; import { ChatDrawerContent, diff --git a/workspaces/app-defaults/packages/app/src/modules/nav/Sidebar.tsx b/workspaces/app-defaults/packages/app/src/modules/nav/Sidebar.tsx index 91d64b6139..73d9c24c37 100644 --- a/workspaces/app-defaults/packages/app/src/modules/nav/Sidebar.tsx +++ b/workspaces/app-defaults/packages/app/src/modules/nav/Sidebar.tsx @@ -23,7 +23,7 @@ import { } from '@backstage/core-components'; import { NavContentBlueprint } from '@backstage/plugin-app-react'; import { SidebarLogo } from './SidebarLogo'; -import { useAppDrawer } from '@red-hat-developer-hub/backstage-plugin-app-react'; +import { useAppDrawer } from '@red-hat-developer-hub/backstage-plugin-app-defaults'; import MenuIcon from '@material-ui/icons/Menu'; import SearchIcon from '@material-ui/icons/Search'; import ChatIcon from '@material-ui/icons/Chat'; diff --git a/workspaces/app-defaults/plugins/app-auth/knip-report.md b/workspaces/app-defaults/plugins/app-auth/knip-report.md new file mode 100644 index 0000000000..75193f481e --- /dev/null +++ b/workspaces/app-defaults/plugins/app-auth/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | Severity | +| :--------------------- | :---------------- | :------- | +| @testing-library/react | package.json:64:6 | error | +| @backstage/test-utils | package.json:62:6 | error | + diff --git a/workspaces/app-defaults/plugins/app-react/.eslintrc.js b/workspaces/app-defaults/plugins/app-defaults/.eslintrc.js similarity index 100% rename from workspaces/app-defaults/plugins/app-react/.eslintrc.js rename to workspaces/app-defaults/plugins/app-defaults/.eslintrc.js diff --git a/workspaces/app-defaults/plugins/app-react/CHANGELOG.md b/workspaces/app-defaults/plugins/app-defaults/CHANGELOG.md similarity index 90% rename from workspaces/app-defaults/plugins/app-react/CHANGELOG.md rename to workspaces/app-defaults/plugins/app-defaults/CHANGELOG.md index 25a7e59958..27df74f10f 100644 --- a/workspaces/app-defaults/plugins/app-react/CHANGELOG.md +++ b/workspaces/app-defaults/plugins/app-defaults/CHANGELOG.md @@ -1,3 +1,5 @@ +# @red-hat-developer-hub/backstage-plugin-app-defaults + # @red-hat-developer-hub/backstage-plugin-app-react ## 0.0.5 diff --git a/workspaces/app-defaults/plugins/app-react/README.md b/workspaces/app-defaults/plugins/app-defaults/README.md similarity index 84% rename from workspaces/app-defaults/plugins/app-react/README.md rename to workspaces/app-defaults/plugins/app-defaults/README.md index 954193c266..6b83de5a01 100644 --- a/workspaces/app-defaults/plugins/app-react/README.md +++ b/workspaces/app-defaults/plugins/app-defaults/README.md @@ -1,4 +1,4 @@ -# @red-hat-developer-hub/backstage-plugin-app-react +# @red-hat-developer-hub/backstage-plugin-app-defaults Shared UI components and extension APIs for the RHDH app shell. Provides the application drawer system that lets plugins contribute persistent side panels @@ -9,7 +9,7 @@ with host-owned state. Add the package as a dependency in your plugin or app: ```bash -yarn add @red-hat-developer-hub/backstage-plugin-app-react +yarn add @red-hat-developer-hub/backstage-plugin-app-defaults ``` ## App Integration @@ -18,11 +18,11 @@ Register the drawer module in your app's `createApp` call: ```typescript import { createApp } from '@backstage/frontend-defaults'; -import { appDrawerModule } from '@red-hat-developer-hub/backstage-plugin-app-react/alpha'; +import appDefaultsModule from '@red-hat-developer-hub/backstage-plugin-app-defaults'; export default createApp({ features: [ - appDrawerModule, + appDefaultsModule, // ...other plugins and modules ], }); @@ -38,12 +38,11 @@ wrapping provider. ### Contributing a Drawer -Use `AppDrawerContentBlueprint` to declare drawer content in your plugin's -`/alpha` export: +Use `AppDrawerContentBlueprint` to declare drawer content in your plugin: ```typescript import { createFrontendPlugin } from '@backstage/frontend-plugin-api'; -import { AppDrawerContentBlueprint } from '@red-hat-developer-hub/backstage-plugin-app-react/alpha'; +import { AppDrawerContentBlueprint } from '@red-hat-developer-hub/backstage-plugin-app-defaults'; const myDrawerExtension = AppDrawerContentBlueprint.make({ name: 'my-drawer', @@ -92,7 +91,7 @@ app: Use the `useAppDrawer()` hook from anywhere in the app: ```typescript -import { useAppDrawer } from '@red-hat-developer-hub/backstage-plugin-app-react'; +import { useAppDrawer } from '@red-hat-developer-hub/backstage-plugin-app-defaults'; function MyHeaderButton() { const { openDrawer } = useAppDrawer(); @@ -119,7 +118,7 @@ The hook provides: ### Closing from Inside the Drawer ```typescript -import { useAppDrawer } from '@red-hat-developer-hub/backstage-plugin-app-react'; +import { useAppDrawer } from '@red-hat-developer-hub/backstage-plugin-app-defaults'; function MyDrawerContent() { const { closeDrawer } = useAppDrawer(); @@ -136,15 +135,9 @@ function MyDrawerContent() { ## Exports -### Main entry (`@red-hat-developer-hub/backstage-plugin-app-react`) +### Main entry (`@red-hat-developer-hub/backstage-plugin-app-default`) -- `useAppDrawer` -- hook to control drawers -- `ApplicationDrawer` -- drawer renderer component -- `DrawerPanel` -- low-level MUI drawer wrapper -- `AppDrawerContent` / `AppDrawerApi` / `ApplicationDrawerProps` / `DrawerPanelProps` types - -### Alpha entry (`@red-hat-developer-hub/backstage-plugin-app-react/alpha`) - -- `appDrawerContentDataRef` -- extension data ref +- `AppDrawerContent` / `AppDrawerApi` types - `AppDrawerContentBlueprint` -- blueprint for contributing drawers -- `appDrawerModule` -- frontend module (registers the drawer wrapper extension) +- `appDrawerContentDataRef` -- extension data ref +- `useAppDrawer` -- hook to control drawers diff --git a/workspaces/app-defaults/plugins/app-defaults/knip-report.md b/workspaces/app-defaults/plugins/app-defaults/knip-report.md new file mode 100644 index 0000000000..193ed06d96 --- /dev/null +++ b/workspaces/app-defaults/plugins/app-defaults/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | Severity | +| :-------------------- | :---------------- | :------- | +| @backstage/test-utils | package.json:45:6 | error | + diff --git a/workspaces/app-defaults/plugins/app-react/package.json b/workspaces/app-defaults/plugins/app-defaults/package.json similarity index 64% rename from workspaces/app-defaults/plugins/app-react/package.json rename to workspaces/app-defaults/plugins/app-defaults/package.json index 11822fae3d..bc1a7ab59e 100644 --- a/workspaces/app-defaults/plugins/app-react/package.json +++ b/workspaces/app-defaults/plugins/app-defaults/package.json @@ -1,39 +1,25 @@ { - "name": "@red-hat-developer-hub/backstage-plugin-app-react", + "name": "@red-hat-developer-hub/backstage-plugin-app-defaults", "version": "0.0.5", "license": "Apache-2.0", - "description": "Shared UI components and extension APIs for the RHDH app shell", + "description": "Defaults app plugin extensions and extensions APIs for the RHDH app shell", "main": "src/index.ts", "types": "src/index.ts", - "exports": { - ".": "./src/index.ts", - "./alpha": "./src/alpha.ts", - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "alpha": [ - "src/alpha.ts" - ], - "package.json": [ - "package.json" - ] - } - }, "publishConfig": { - "access": "public" + "access": "public", + "main": "dist/index.cjs.js", + "module": "dist/index.esm.js", + "types": "dist/index.d.ts" }, "repository": { "type": "git", "url": "https://github.com/redhat-developer/rhdh-plugins", - "directory": "workspaces/app-defaults/plugins/app-react" + "directory": "workspaces/app-defaults/plugins/app-defaults" }, "backstage": { - "role": "web-library", + "role": "frontend-plugin-module", "pluginId": "app", - "pluginPackages": [ - "@red-hat-developer-hub/backstage-plugin-app-react" - ] + "pluginPackage": "@backstage/plugin-app" }, "sideEffects": false, "scripts": { @@ -46,7 +32,6 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-plugin-api": "^1.12.4", "@backstage/frontend-plugin-api": "^0.15.1", "@backstage/plugin-app-react": "^0.2.1", "@backstage/version-bridge": "^1.0.12", diff --git a/workspaces/app-defaults/plugins/app-defaults/report.api.md b/workspaces/app-defaults/plugins/app-defaults/report.api.md new file mode 100644 index 0000000000..3eede3d8bb --- /dev/null +++ b/workspaces/app-defaults/plugins/app-defaults/report.api.md @@ -0,0 +1,108 @@ +## API Report File for "@red-hat-developer-hub/backstage-plugin-app-defaults" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { AppDrawerContent as AppDrawerContent_2 } from '@red-hat-developer-hub/backstage-plugin-app-react'; +import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionInput } from '@backstage/frontend-plugin-api'; +import { FrontendModule } from '@backstage/frontend-plugin-api'; +import { OverridableExtensionDefinition } from '@backstage/frontend-plugin-api'; +import { ReactNode } from 'react'; + +// @public +const appDefaults: FrontendModule; +export default appDefaults; + +// @public +export interface AppDrawerApi { + activeDrawerId: string | null; + closeDrawer(id: string): void; + getWidth(id: string): number; + isOpen(id: string): boolean; + openDrawer(id: string): void; + setWidth(id: string, width: number): void; + toggleDrawer(id: string): void; +} + +// @public +export interface AppDrawerContent { + defaultWidth?: number; + element: React.ReactElement; + id: string; + priority?: number; + resizable?: boolean; +} + +// @public +export const appDrawerExtension: OverridableExtensionDefinition<{ + config: {}; + configInput: {}; + output: ExtensionDataRef< + (props: { children: ReactNode }) => JSX.Element | null, + 'app.root.wrapper', + {} + >; + inputs: { + drawers: ExtensionInput< + ConfigurableExtensionDataRef< + AppDrawerContent_2, + 'app.drawer.content', + {} + >, + { + singleton: false; + optional: false; + internal: false; + } + >; + }; + kind: 'app-root-wrapper'; + name: 'drawer'; + params: { + Component?: [error: 'Use the `component` parameter instead']; + component: (props: { children: ReactNode }) => JSX.Element | null; + }; +}>; + +// Warning: (ae-missing-release-tag) "appDrawerExtensions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const appDrawerExtensions: OverridableExtensionDefinition<{ + config: {}; + configInput: {}; + output: ExtensionDataRef< + (props: { children: ReactNode }) => JSX.Element | null, + 'app.root.wrapper', + {} + >; + inputs: { + drawers: ExtensionInput< + ConfigurableExtensionDataRef< + AppDrawerContent_2, + 'app.drawer.content', + {} + >, + { + singleton: false; + optional: false; + internal: false; + } + >; + }; + kind: 'app-root-wrapper'; + name: 'drawer'; + params: { + Component?: [error: 'Use the `component` parameter instead']; + component: (props: { children: ReactNode }) => JSX.Element | null; + }; +}>[]; + +// @public +export const useAppDrawer: () => AppDrawerApi; + +// Warnings were encountered during analysis: +// +// src/drawer/extensions.d.ts:32:22 - (ae-undocumented) Missing documentation for "appDrawerExtensions". +``` diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/components/ApplicationDrawer.test.tsx b/workspaces/app-defaults/plugins/app-defaults/src/drawer/components/ApplicationDrawer.test.tsx similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/drawer/components/ApplicationDrawer.test.tsx rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/components/ApplicationDrawer.test.tsx diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/components/ApplicationDrawer.tsx b/workspaces/app-defaults/plugins/app-defaults/src/drawer/components/ApplicationDrawer.tsx similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/drawer/components/ApplicationDrawer.tsx rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/components/ApplicationDrawer.tsx diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/components/DrawerPanel.test.tsx b/workspaces/app-defaults/plugins/app-defaults/src/drawer/components/DrawerPanel.test.tsx similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/drawer/components/DrawerPanel.test.tsx rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/components/DrawerPanel.test.tsx diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/components/DrawerPanel.tsx b/workspaces/app-defaults/plugins/app-defaults/src/drawer/components/DrawerPanel.tsx similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/drawer/components/DrawerPanel.tsx rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/components/DrawerPanel.tsx diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/extensions/AppDrawerContentBlueprint.ts b/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/AppDrawerContentBlueprint.ts similarity index 99% rename from workspaces/app-defaults/plugins/app-react/src/drawer/extensions/AppDrawerContentBlueprint.ts rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/AppDrawerContentBlueprint.ts index f89edfe8be..a9e23c1a2e 100644 --- a/workspaces/app-defaults/plugins/app-react/src/drawer/extensions/AppDrawerContentBlueprint.ts +++ b/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/AppDrawerContentBlueprint.ts @@ -46,7 +46,7 @@ import { appDrawerContentDataRef } from './appDrawerContentDataRef'; * }); * ``` * - * @alpha + * @public */ export const AppDrawerContentBlueprint = createExtensionBlueprint({ kind: 'app-drawer-content', diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/extensions/appDrawerContentDataRef.ts b/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/appDrawerContentDataRef.ts similarity index 98% rename from workspaces/app-defaults/plugins/app-react/src/drawer/extensions/appDrawerContentDataRef.ts rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/appDrawerContentDataRef.ts index 0e60978528..57e087378b 100644 --- a/workspaces/app-defaults/plugins/app-react/src/drawer/extensions/appDrawerContentDataRef.ts +++ b/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/appDrawerContentDataRef.ts @@ -21,7 +21,7 @@ import type { AppDrawerContent } from '../types'; /** * Extension data ref carrying drawer content from a plugin to the host. * - * @alpha + * @public */ export const appDrawerContentDataRef = createExtensionDataRef().with({ diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/extensions/appDrawerModule.tsx b/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/appDrawerExtension.tsx similarity index 76% rename from workspaces/app-defaults/plugins/app-react/src/drawer/extensions/appDrawerModule.tsx rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/appDrawerExtension.tsx index 0e91abc529..7951a44e3f 100644 --- a/workspaces/app-defaults/plugins/app-react/src/drawer/extensions/appDrawerModule.tsx +++ b/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/appDrawerExtension.tsx @@ -14,10 +14,7 @@ * limitations under the License. */ -import { - createExtensionInput, - createFrontendModule, -} from '@backstage/frontend-plugin-api'; +import { createExtensionInput } from '@backstage/frontend-plugin-api'; import { AppRootWrapperBlueprint } from '@backstage/plugin-app-react'; import { ApplicationDrawer } from '../components/ApplicationDrawer'; @@ -30,8 +27,10 @@ import { appDrawerContentDataRef } from './appDrawerContentDataRef'; * blueprint API while adding a custom `drawers` input for content extensions. * Drawer state is managed by a global singleton store (see drawerStore.ts) * rather than a React context provider. + * + * @public */ -const appDrawerExtension = AppRootWrapperBlueprint.makeWithOverrides({ +export const appDrawerExtension = AppRootWrapperBlueprint.makeWithOverrides({ name: 'drawer', inputs: { drawers: createExtensionInput([appDrawerContentDataRef]), @@ -45,15 +44,3 @@ const appDrawerExtension = AppRootWrapperBlueprint.makeWithOverrides({ }); }, }); - -/** - * Frontend module that provides the app drawer system. - * Registers a wrapper extension that renders the drawer and accepts - * drawer content contributions via inputs. - * - * @alpha - */ -export const appDrawerModule = createFrontendModule({ - pluginId: 'app', - extensions: [appDrawerExtension], -}); diff --git a/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/index.tsx b/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/index.tsx new file mode 100644 index 0000000000..fe72bcf4ef --- /dev/null +++ b/workspaces/app-defaults/plugins/app-defaults/src/drawer/extensions/index.tsx @@ -0,0 +1,40 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createFrontendModule } from '@backstage/frontend-plugin-api'; + +export * from './AppDrawerContentBlueprint'; +export * from './appDrawerContentDataRef'; +export * from './appDrawerExtension'; + +import { appDrawerExtension } from './appDrawerExtension'; + +/** + * @public + */ +export const appDrawerExtensions = [appDrawerExtension]; + +/** + * Frontend module that provides (only) the app drawer system. + * Registers a wrapper extension that renders the drawer and accepts + * drawer content contributions via inputs. + * + * @public + */ +export const appDrawerModule = createFrontendModule({ + pluginId: 'app', + extensions: appDrawerExtensions, +}); diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/hooks/useAppDrawer.test.tsx b/workspaces/app-defaults/plugins/app-defaults/src/drawer/hooks/useAppDrawer.test.tsx similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/drawer/hooks/useAppDrawer.test.tsx rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/hooks/useAppDrawer.test.tsx diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/hooks/useAppDrawer.tsx b/workspaces/app-defaults/plugins/app-defaults/src/drawer/hooks/useAppDrawer.tsx similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/drawer/hooks/useAppDrawer.tsx rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/hooks/useAppDrawer.tsx diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/index.ts b/workspaces/app-defaults/plugins/app-defaults/src/drawer/index.ts similarity index 58% rename from workspaces/app-defaults/plugins/app-react/src/drawer/index.ts rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/index.ts index 8d8203c9e6..14cdc05bcc 100644 --- a/workspaces/app-defaults/plugins/app-react/src/drawer/index.ts +++ b/workspaces/app-defaults/plugins/app-defaults/src/drawer/index.ts @@ -15,13 +15,7 @@ */ export { useAppDrawer } from './hooks/useAppDrawer'; -export { ApplicationDrawer } from './components/ApplicationDrawer'; -export { DrawerPanel } from './components/DrawerPanel'; -export { appDrawerContentDataRef } from './extensions/appDrawerContentDataRef'; -export { AppDrawerContentBlueprint } from './extensions/AppDrawerContentBlueprint'; -export { appDrawerModule } from './extensions/appDrawerModule'; +export * from './extensions'; -export type { ApplicationDrawerProps } from './components/ApplicationDrawer'; -export type { DrawerPanelProps } from './components/DrawerPanel'; export type { AppDrawerContent, AppDrawerApi } from './types'; diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/types.ts b/workspaces/app-defaults/plugins/app-defaults/src/drawer/types.ts similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/drawer/types.ts rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/types.ts diff --git a/workspaces/app-defaults/plugins/app-react/src/drawer/utils/drawerStore.ts b/workspaces/app-defaults/plugins/app-defaults/src/drawer/utils/drawerStore.ts similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/drawer/utils/drawerStore.ts rename to workspaces/app-defaults/plugins/app-defaults/src/drawer/utils/drawerStore.ts diff --git a/workspaces/app-defaults/plugins/app-react/src/alpha.ts b/workspaces/app-defaults/plugins/app-defaults/src/index.ts similarity index 85% rename from workspaces/app-defaults/plugins/app-react/src/alpha.ts rename to workspaces/app-defaults/plugins/app-defaults/src/index.ts index 929f991052..651ae3b41b 100644 --- a/workspaces/app-defaults/plugins/app-react/src/alpha.ts +++ b/workspaces/app-defaults/plugins/app-defaults/src/index.ts @@ -15,9 +15,11 @@ */ /** - * New Frontend System extension APIs for the RHDH app shell. + * Shared UI components and hooks for the RHDH app shell. * * @packageDocumentation */ export * from './drawer'; + +export { appDefaults as default } from './module'; diff --git a/workspaces/app-defaults/plugins/app-react/src/index.ts b/workspaces/app-defaults/plugins/app-defaults/src/module.tsx similarity index 61% rename from workspaces/app-defaults/plugins/app-react/src/index.ts rename to workspaces/app-defaults/plugins/app-defaults/src/module.tsx index aeab03915d..49afcff9e1 100644 --- a/workspaces/app-defaults/plugins/app-react/src/index.ts +++ b/workspaces/app-defaults/plugins/app-defaults/src/module.tsx @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { createFrontendModule } from '@backstage/frontend-plugin-api'; + +import { appDrawerExtensions } from './drawer'; /** - * Shared UI components and hooks for the RHDH app shell. + * Frontend module that enables all RHDH default extensions for the app. * - * @packageDocumentation + * @public */ - -export { useAppDrawer } from './drawer'; -export { ApplicationDrawer } from './drawer'; -export { DrawerPanel } from './drawer'; -export type { ApplicationDrawerProps } from './drawer'; -export type { DrawerPanelProps } from './drawer'; -export type { AppDrawerContent, AppDrawerApi } from './drawer'; +export const appDefaults = createFrontendModule({ + pluginId: 'app', + extensions: [...appDrawerExtensions], +}); diff --git a/workspaces/app-defaults/plugins/app-react/src/setupTests.ts b/workspaces/app-defaults/plugins/app-defaults/src/setupTests.ts similarity index 100% rename from workspaces/app-defaults/plugins/app-react/src/setupTests.ts rename to workspaces/app-defaults/plugins/app-defaults/src/setupTests.ts diff --git a/workspaces/app-defaults/plugins/app-integrations/knip-report.md b/workspaces/app-defaults/plugins/app-integrations/knip-report.md new file mode 100644 index 0000000000..bebd1c7858 --- /dev/null +++ b/workspaces/app-defaults/plugins/app-integrations/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | Severity | +| :--------------------- | :---------------- | :------- | +| @testing-library/react | package.json:60:6 | error | +| @backstage/test-utils | package.json:58:6 | error | + diff --git a/workspaces/app-defaults/plugins/app-react/knip-report.md b/workspaces/app-defaults/plugins/app-react/knip-report.md deleted file mode 100644 index c1d78fa7fe..0000000000 --- a/workspaces/app-defaults/plugins/app-react/knip-report.md +++ /dev/null @@ -1,14 +0,0 @@ -# Knip report - -## Unused dependencies (1) - -| Name | Location | Severity | -| :------------------------- | :---------------- | :------- | -| @backstage/core-plugin-api | package.json:49:6 | error | - -## Unused devDependencies (1) - -| Name | Location | Severity | -| :-------------------- | :---------------- | :------- | -| @backstage/test-utils | package.json:59:6 | error | - diff --git a/workspaces/app-defaults/plugins/app-react/report-alpha.api.md b/workspaces/app-defaults/plugins/app-react/report-alpha.api.md deleted file mode 100644 index 6e423b6010..0000000000 --- a/workspaces/app-defaults/plugins/app-react/report-alpha.api.md +++ /dev/null @@ -1,100 +0,0 @@ -## API Report File for "@red-hat-developer-hub/backstage-plugin-app-react" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts -import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; -import { ExtensionBlueprint } from '@backstage/frontend-plugin-api'; -import { ExtensionDataRef } from '@backstage/frontend-plugin-api'; -import { FrontendModule } from '@backstage/frontend-plugin-api'; -import { JSX as JSX_2 } from 'react/jsx-runtime'; - -// @public -export interface AppDrawerApi { - activeDrawerId: string | null; - closeDrawer(id: string): void; - getWidth(id: string): number; - isOpen(id: string): boolean; - openDrawer(id: string): void; - setWidth(id: string, width: number): void; - toggleDrawer(id: string): void; -} - -// @public -export interface AppDrawerContent { - defaultWidth?: number; - element: React.ReactElement; - id: string; - priority?: number; - resizable?: boolean; -} - -// @alpha -export const AppDrawerContentBlueprint: ExtensionBlueprint<{ - kind: 'app-drawer-content'; - params: { - id: string; - element: React.ReactElement; - resizable?: boolean; - defaultWidth?: number; - priority?: number; - }; - output: ExtensionDataRef; - inputs: {}; - config: { - defaultWidth: number | undefined; - resizable: boolean | undefined; - priority: number | undefined; - }; - configInput: { - defaultWidth?: number | undefined; - resizable?: boolean | undefined; - priority?: number | undefined; - }; - dataRefs: { - content: ConfigurableExtensionDataRef< - AppDrawerContent, - 'app.drawer.content', - {} - >; - }; -}>; - -// @alpha -export const appDrawerContentDataRef: ConfigurableExtensionDataRef< - AppDrawerContent, - 'app.drawer.content', - {} ->; - -// @alpha -export const appDrawerModule: FrontendModule; - -// @public -export const ApplicationDrawer: ( - input: ApplicationDrawerProps, -) => JSX_2.Element; - -// @public -export interface ApplicationDrawerProps { - children: React.ReactNode; - contents: AppDrawerContent[]; -} - -// @public -export const DrawerPanel: (props: DrawerPanelProps) => JSX_2.Element; - -// @public -export interface DrawerPanelProps { - children: React.ReactNode; - drawerWidth?: number; - isDrawerOpen: boolean; - isResizable?: boolean; - maxWidth?: number; - minWidth?: number; - onWidthChange?: (width: number) => void; -} - -// @public -export const useAppDrawer: () => AppDrawerApi; -``` diff --git a/workspaces/app-defaults/plugins/app-react/report.api.md b/workspaces/app-defaults/plugins/app-react/report.api.md deleted file mode 100644 index 8a8e0cc5f7..0000000000 --- a/workspaces/app-defaults/plugins/app-react/report.api.md +++ /dev/null @@ -1,55 +0,0 @@ -## API Report File for "@red-hat-developer-hub/backstage-plugin-app-react" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts -import { JSX as JSX_2 } from 'react/jsx-runtime'; - -// @public -export interface AppDrawerApi { - activeDrawerId: string | null; - closeDrawer(id: string): void; - getWidth(id: string): number; - isOpen(id: string): boolean; - openDrawer(id: string): void; - setWidth(id: string, width: number): void; - toggleDrawer(id: string): void; -} - -// @public -export interface AppDrawerContent { - defaultWidth?: number; - element: React.ReactElement; - id: string; - priority?: number; - resizable?: boolean; -} - -// @public -export const ApplicationDrawer: ( - input: ApplicationDrawerProps, -) => JSX_2.Element; - -// @public -export interface ApplicationDrawerProps { - children: React.ReactNode; - contents: AppDrawerContent[]; -} - -// @public -export const DrawerPanel: (props: DrawerPanelProps) => JSX_2.Element; - -// @public -export interface DrawerPanelProps { - children: React.ReactNode; - drawerWidth?: number; - isDrawerOpen: boolean; - isResizable?: boolean; - maxWidth?: number; - minWidth?: number; - onWidthChange?: (width: number) => void; -} - -// @public -export const useAppDrawer: () => AppDrawerApi; -``` diff --git a/workspaces/app-defaults/yarn.lock b/workspaces/app-defaults/yarn.lock index 9c7d0400cb..254b6e94c4 100644 --- a/workspaces/app-defaults/yarn.lock +++ b/workspaces/app-defaults/yarn.lock @@ -11230,43 +11230,42 @@ __metadata: languageName: unknown linkType: soft -"@red-hat-developer-hub/backstage-plugin-app-integrations@workspace:^, @red-hat-developer-hub/backstage-plugin-app-integrations@workspace:plugins/app-integrations": +"@red-hat-developer-hub/backstage-plugin-app-defaults@workspace:^, @red-hat-developer-hub/backstage-plugin-app-defaults@workspace:plugins/app-defaults": version: 0.0.0-use.local - resolution: "@red-hat-developer-hub/backstage-plugin-app-integrations@workspace:plugins/app-integrations" + resolution: "@red-hat-developer-hub/backstage-plugin-app-defaults@workspace:plugins/app-defaults" dependencies: "@backstage/cli": "npm:^0.36.0" - "@backstage/core-plugin-api": "npm:^1.12.4" "@backstage/frontend-plugin-api": "npm:^0.15.1" - "@backstage/integration-react": "npm:^1.2.16" + "@backstage/plugin-app-react": "npm:^0.2.1" "@backstage/test-utils": "npm:^1.7.16" + "@backstage/version-bridge": "npm:^1.0.12" + "@mui/material": "npm:5.18.0" "@testing-library/jest-dom": "npm:^6.0.0" "@testing-library/react": "npm:^16.0.0" - "@types/react": "npm:^18" - "@types/react-dom": "npm:^18" cross-fetch: "npm:^4.0.0" react: "npm:^16.13.1 || ^17.0.0 || ^18.0.0" - react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.30.2" peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 languageName: unknown linkType: soft -"@red-hat-developer-hub/backstage-plugin-app-react@workspace:^, @red-hat-developer-hub/backstage-plugin-app-react@workspace:plugins/app-react": +"@red-hat-developer-hub/backstage-plugin-app-integrations@workspace:^, @red-hat-developer-hub/backstage-plugin-app-integrations@workspace:plugins/app-integrations": version: 0.0.0-use.local - resolution: "@red-hat-developer-hub/backstage-plugin-app-react@workspace:plugins/app-react" + resolution: "@red-hat-developer-hub/backstage-plugin-app-integrations@workspace:plugins/app-integrations" dependencies: "@backstage/cli": "npm:^0.36.0" "@backstage/core-plugin-api": "npm:^1.12.4" "@backstage/frontend-plugin-api": "npm:^0.15.1" - "@backstage/plugin-app-react": "npm:^0.2.1" + "@backstage/integration-react": "npm:^1.2.16" "@backstage/test-utils": "npm:^1.7.16" - "@backstage/version-bridge": "npm:^1.0.12" - "@mui/material": "npm:5.18.0" "@testing-library/jest-dom": "npm:^6.0.0" "@testing-library/react": "npm:^16.0.0" + "@types/react": "npm:^18" + "@types/react-dom": "npm:^18" cross-fetch: "npm:^4.0.0" react: "npm:^16.13.1 || ^17.0.0 || ^18.0.0" + react-dom: "npm:^18.0.2" + react-router-dom: "npm:^6.30.2" peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 languageName: unknown @@ -15973,8 +15972,8 @@ __metadata: "@mui/material": "npm:^5.18.0" "@playwright/test": "npm:^1.58.2" "@red-hat-developer-hub/backstage-plugin-app-auth": "workspace:^" + "@red-hat-developer-hub/backstage-plugin-app-defaults": "workspace:^" "@red-hat-developer-hub/backstage-plugin-app-integrations": "workspace:^" - "@red-hat-developer-hub/backstage-plugin-app-react": "workspace:^" "@red-hat-developer-hub/backstage-plugin-global-header": "npm:^1.21.0" "@testing-library/dom": "npm:^10.0.0" "@testing-library/jest-dom": "npm:^6.0.0"