diff --git a/.changeset/wet-cats-allow.md b/.changeset/wet-cats-allow.md
index b7de0f71ef..815f7fdc30 100644
--- a/.changeset/wet-cats-allow.md
+++ b/.changeset/wet-cats-allow.md
@@ -5,19 +5,17 @@
Added a new Featured Docs component to `plugin-home`, which can display any entity given a filter.
```
-import { FeaturedDocs } from '@backstage/plugin-home';
+import { FeaturedDocsCard } from '@backstage/plugin-home';
-
```
diff --git a/plugins/home/api-report.md b/plugins/home/api-report.md
index 779ece75fe..6a6022170b 100644
--- a/plugins/home/api-report.md
+++ b/plugins/home/api-report.md
@@ -11,7 +11,6 @@ import { CardConfig as CardConfig_2 } from '@backstage/plugin-home-react';
import { CardExtensionProps as CardExtensionProps_2 } from '@backstage/plugin-home-react';
import { CardLayout as CardLayout_2 } from '@backstage/plugin-home-react';
import { CardSettings as CardSettings_2 } from '@backstage/plugin-home-react';
-import { ClassNameMap } from '@material-ui/styles';
import { ComponentParts as ComponentParts_2 } from '@backstage/plugin-home-react';
import { ComponentRenderer as ComponentRenderer_2 } from '@backstage/plugin-home-react';
import { createCardExtension as createCardExtension_2 } from '@backstage/plugin-home-react';
@@ -104,18 +103,16 @@ export type CustomHomepageGridProps = {
};
// @public
-export const FeaturedDocs: (props: FeaturedDocsProps) => JSX_2.Element;
+export const FeaturedDocsCard: (props: FeaturedDocsCardProps) => JSX_2.Element;
// @public
-export type FeaturedDocsProps = {
+export type FeaturedDocsCardProps = {
filter: EntityFilterQuery;
- color?: 'inherit' | 'primary' | 'secondary';
- customStyles?: ClassNameMap;
emptyState?: React_2.ReactNode;
- path?: string;
+ linkDestination?: string;
responseLimit?: number;
subLinkText?: string;
- title?: React_2.ReactNode | string;
+ title?: React_2.ReactNode;
};
// @public
diff --git a/plugins/home/package.json b/plugins/home/package.json
index 49d61d0c16..b5110104b0 100644
--- a/plugins/home/package.json
+++ b/plugins/home/package.json
@@ -61,7 +61,6 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
- "@material-ui/styles": "^4.11.5",
"@rjsf/core": "5.13.0",
"@rjsf/material-ui": "5.13.0",
"@rjsf/utils": "5.13.0",
diff --git a/plugins/home/src/homePageComponents/FeaturedDocs/FeaturedDocs.stories.tsx b/plugins/home/src/homePageComponents/FeaturedDocsCard/FeaturedDocsCard.stories.tsx
similarity index 63%
rename from plugins/home/src/homePageComponents/FeaturedDocs/FeaturedDocs.stories.tsx
rename to plugins/home/src/homePageComponents/FeaturedDocsCard/FeaturedDocsCard.stories.tsx
index c7b9a77be5..498d177c07 100644
--- a/plugins/home/src/homePageComponents/FeaturedDocs/FeaturedDocs.stories.tsx
+++ b/plugins/home/src/homePageComponents/FeaturedDocsCard/FeaturedDocsCard.stories.tsx
@@ -14,12 +14,11 @@
* limitations under the License.
*/
-import { FeaturedDocs } from '../../plugin';
+import { FeaturedDocsCard } from '../../plugin';
import React, { ComponentType, PropsWithChildren } from 'react';
import { wrapInTestApp, TestApiProvider } from '@backstage/test-utils';
import { catalogApiRef, entityRouteRef } from '@backstage/plugin-catalog-react';
-import { Grid, makeStyles, Theme } from '@material-ui/core';
-import WarningIcon from '@material-ui/icons/Warning';
+import { Grid } from '@material-ui/core';
const docsEntities = [
{
@@ -41,29 +40,8 @@ const mockCatalogApi = {
getEntities: async () => ({ items: docsEntities }),
};
-const useStyles = makeStyles(() => ({
- cardTitleIcon: {
- verticalAlign: 'bottom',
- marginLeft: '-4px',
- },
- docDescription: {
- marginBottom: '16px',
- marginTop: '12px',
- },
- docSubLink: {
- fontSize: 10,
- fontWeight: 500,
- lineHeight: 2,
- },
- docsTitleLink: {
- fontSize: 18,
- fontWeight: 600,
- lineHeight: 3,
- },
-}));
-
export default {
- title: 'Plugins/Home/Components/FeaturedDocs',
+ title: 'Plugins/Home/Components/FeaturedDocsCard',
decorators: [
(Story: ComponentType>) =>
wrapInTestApp(
@@ -82,7 +60,7 @@ export default {
export const Default = () => {
return (
- {
);
};
-
-export const ExampleCustomized = () => {
- const styles = useStyles();
- const cardTitle = (
- <>
-
- Important
- >
- );
- return (
-
-
-
- );
-};
diff --git a/plugins/home/src/homePageComponents/FeaturedDocs/FeaturedDocs.test.tsx b/plugins/home/src/homePageComponents/FeaturedDocsCard/FeaturedDocsCard.test.tsx
similarity index 93%
rename from plugins/home/src/homePageComponents/FeaturedDocs/FeaturedDocs.test.tsx
rename to plugins/home/src/homePageComponents/FeaturedDocsCard/FeaturedDocsCard.test.tsx
index f613aa8948..175b1423b0 100644
--- a/plugins/home/src/homePageComponents/FeaturedDocs/FeaturedDocs.test.tsx
+++ b/plugins/home/src/homePageComponents/FeaturedDocsCard/FeaturedDocsCard.test.tsx
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { FeaturedDocs } from './FeaturedDocs';
+import { FeaturedDocsCard } from './FeaturedDocsCard';
import React from 'react';
import { catalogApiRef, entityRouteRef } from '@backstage/plugin-catalog-react';
import { renderInTestApp, TestApiProvider } from '@backstage/test-utils';
@@ -33,7 +33,7 @@ const docsEntities = [
},
];
-describe('', () => {
+describe('', () => {
const mockCatalogApi = {
getEntities: jest
.fn()
@@ -51,8 +51,7 @@ describe('', () => {
it('should show expected featured doc and title', async () => {
const { getByTestId, getByText } = await renderInTestApp(
- component.
+ * Props customizing the component.
*
* @public
*/
-export type FeaturedDocsProps = {
+export type FeaturedDocsCardProps = {
/** The entity filter used to display only the intended item/s */
filter: EntityFilterQuery;
- /** An optional color which can be customized through themes */
- color?: 'inherit' | 'primary' | 'secondary';
- /** An optional ClassNameMap created with makeStyles */
- customStyles?: ClassNameMap;
/** An optional ReactNode for empty states */
emptyState?: React.ReactNode;
- /** An optional path to set for entity entry */
- path?: string;
+ /** An optional linkDestination to set for the Featured Doc */
+ linkDestination?: string;
/** An optional limit to set for link destination */
responseLimit?: number;
/** An optional string to customize sublink text */
subLinkText?: string;
/** An optional string or ReactNode to customize the card title */
- title?: React.ReactNode | string;
+ title?: React.ReactNode;
};
const useStyles = makeStyles(
@@ -74,7 +69,7 @@ const useStyles = makeStyles(
lineHeight: theme.typography.h6.lineHeight,
},
}),
- { name: 'BackstageFeaturedDocs' },
+ { name: 'HomeFeaturedDocsCard' },
);
/**
@@ -82,20 +77,17 @@ const useStyles = makeStyles(
*
* @public
*/
-export const FeaturedDocs = (props: FeaturedDocsProps) => {
+export const FeaturedDocsCard = (props: FeaturedDocsCardProps) => {
const {
- color,
- customStyles,
emptyState,
filter,
- path,
+ linkDestination,
responseLimit,
subLinkText,
title,
} = props;
const linkText = subLinkText || 'LEARN MORE';
- const defaultStyles = useStyles();
- const styles = customStyles || defaultStyles;
+ const styles = useStyles();
const catalogApi: CatalogApi = useApi(catalogApiRef);
const {
value: entities,
@@ -124,9 +116,8 @@ export const FeaturedDocs = (props: FeaturedDocsProps) => {
{
>
{d.metadata.title}
-
- {d.metadata.description}
-
+ {d.metadata.description && (
+
+ {d.metadata.description}
+
+ )}
{
description="Create your own document. Check out our Getting Started Information"
action={
diff --git a/plugins/home/src/homePageComponents/FeaturedDocs/index.ts b/plugins/home/src/homePageComponents/FeaturedDocsCard/index.ts
similarity index 83%
rename from plugins/home/src/homePageComponents/FeaturedDocs/index.ts
rename to plugins/home/src/homePageComponents/FeaturedDocsCard/index.ts
index b4efed3268..99169327f9 100644
--- a/plugins/home/src/homePageComponents/FeaturedDocs/index.ts
+++ b/plugins/home/src/homePageComponents/FeaturedDocsCard/index.ts
@@ -14,5 +14,5 @@
* limitations under the License.
*/
-export { FeaturedDocs } from './FeaturedDocs';
-export type { FeaturedDocsProps } from './FeaturedDocs';
+export { FeaturedDocsCard } from './FeaturedDocsCard';
+export type { FeaturedDocsCardProps } from './FeaturedDocsCard';
diff --git a/plugins/home/src/homePageComponents/index.ts b/plugins/home/src/homePageComponents/index.ts
index b3c7d77c46..dc611291fb 100644
--- a/plugins/home/src/homePageComponents/index.ts
+++ b/plugins/home/src/homePageComponents/index.ts
@@ -18,4 +18,4 @@ export type { ToolkitContentProps, Tool } from './Toolkit';
export type { ClockConfig } from './HeaderWorldClock';
export type { WelcomeTitleLanguageProps } from './WelcomeTitle';
export type { VisitedByTypeProps, VisitedByTypeKind } from './VisitedByType';
-export type { FeaturedDocsProps } from './FeaturedDocs';
+export type { FeaturedDocsCardProps } from './FeaturedDocsCard';
diff --git a/plugins/home/src/index.ts b/plugins/home/src/index.ts
index c7ae5c2467..154186f169 100644
--- a/plugins/home/src/index.ts
+++ b/plugins/home/src/index.ts
@@ -34,7 +34,7 @@ export {
HeaderWorldClock,
HomePageTopVisited,
HomePageRecentlyVisited,
- FeaturedDocs,
+ FeaturedDocsCard,
} from './plugin';
export * from './components';
export * from './assets';
diff --git a/plugins/home/src/plugin.ts b/plugins/home/src/plugin.ts
index ca024faabd..42e0237589 100644
--- a/plugins/home/src/plugin.ts
+++ b/plugins/home/src/plugin.ts
@@ -217,12 +217,14 @@ export const HomePageRecentlyVisited = homePlugin.provide(
*
* @public
*/
-export const FeaturedDocs = homePlugin.provide(
+export const FeaturedDocsCard = homePlugin.provide(
createReactExtension({
name: 'FeaturedDocs',
component: {
lazy: () =>
- import('./homePageComponents/FeaturedDocs').then(m => m.FeaturedDocs),
+ import('./homePageComponents/FeaturedDocsCard').then(
+ m => m.FeaturedDocsCard,
+ ),
},
}),
);
diff --git a/yarn.lock b/yarn.lock
index 6683bdd76c..1f9df5c3b7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7263,7 +7263,6 @@ __metadata:
"@material-ui/core": ^4.12.2
"@material-ui/icons": ^4.9.1
"@material-ui/lab": 4.0.0-alpha.61
- "@material-ui/styles": ^4.11.5
"@rjsf/core": 5.13.0
"@rjsf/material-ui": 5.13.0
"@rjsf/utils": 5.13.0