@red-hat-developer-hub/backstage-plugin-dynamic-home-page 1.4.2 → 1.5.2

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/app-config.dynamic.yaml +21 -21
  3. package/dist/components/CustomizableGrid.esm.js +7 -6
  4. package/dist/components/CustomizableGrid.esm.js.map +1 -1
  5. package/dist/components/CustomizableHomePage.esm.js +12 -8
  6. package/dist/components/CustomizableHomePage.esm.js.map +1 -1
  7. package/dist/components/DynamicCustomizableHomePage.esm.js +2 -2
  8. package/dist/components/DynamicCustomizableHomePage.esm.js.map +1 -1
  9. package/dist/components/DynamicHomePage.esm.js +2 -2
  10. package/dist/components/DynamicHomePage.esm.js.map +1 -1
  11. package/dist/components/EntitySection/EntityCard.esm.js +60 -58
  12. package/dist/components/EntitySection/EntityCard.esm.js.map +1 -1
  13. package/dist/components/EntitySection/EntitySection.esm.js +152 -122
  14. package/dist/components/EntitySection/EntitySection.esm.js.map +1 -1
  15. package/dist/components/EntitySection/TagList.esm.js +45 -43
  16. package/dist/components/EntitySection/TagList.esm.js.map +1 -1
  17. package/dist/components/EntitySection/ViewMoreLink.esm.js +2 -2
  18. package/dist/components/EntitySection/ViewMoreLink.esm.js.map +1 -1
  19. package/dist/components/FeaturedDocsCard.esm.js +2 -2
  20. package/dist/components/FeaturedDocsCard.esm.js.map +1 -1
  21. package/dist/components/Header.esm.js +18 -15
  22. package/dist/components/Header.esm.js.map +1 -1
  23. package/dist/components/Headline.esm.js +2 -2
  24. package/dist/components/Headline.esm.js.map +1 -1
  25. package/dist/components/HomePage.esm.js +12 -8
  26. package/dist/components/HomePage.esm.js.map +1 -1
  27. package/dist/components/LocalClock.esm.js +9 -8
  28. package/dist/components/LocalClock.esm.js.map +1 -1
  29. package/dist/components/Markdown.esm.js +12 -9
  30. package/dist/components/Markdown.esm.js.map +1 -1
  31. package/dist/components/MarkdownCard.esm.js +2 -2
  32. package/dist/components/MarkdownCard.esm.js.map +1 -1
  33. package/dist/components/OnboardingSection/OnboardingCard.esm.js +50 -44
  34. package/dist/components/OnboardingSection/OnboardingCard.esm.js.map +1 -1
  35. package/dist/components/OnboardingSection/OnboardingSection.esm.js +69 -67
  36. package/dist/components/OnboardingSection/OnboardingSection.esm.js.map +1 -1
  37. package/dist/components/Placeholder.esm.js +2 -2
  38. package/dist/components/Placeholder.esm.js.map +1 -1
  39. package/dist/components/QuickAccessCard.esm.js +14 -14
  40. package/dist/components/QuickAccessCard.esm.js.map +1 -1
  41. package/dist/components/ReadOnlyGrid.esm.js +18 -14
  42. package/dist/components/ReadOnlyGrid.esm.js.map +1 -1
  43. package/dist/components/SearchBar.esm.js +3 -2
  44. package/dist/components/SearchBar.esm.js.map +1 -1
  45. package/dist/components/TemplateSection/TemplateCard.esm.js +66 -64
  46. package/dist/components/TemplateSection/TemplateCard.esm.js.map +1 -1
  47. package/dist/components/TemplateSection/TemplateSection.esm.js +77 -67
  48. package/dist/components/TemplateSection/TemplateSection.esm.js.map +1 -1
  49. package/dist/components/TemplateSection/ViewMoreLink.esm.js +2 -2
  50. package/dist/components/TemplateSection/ViewMoreLink.esm.js.map +1 -1
  51. package/dist/components/VisitListener.esm.js +4 -3
  52. package/dist/components/VisitListener.esm.js.map +1 -1
  53. package/dist/components/WorldClock.esm.js +3 -3
  54. package/dist/components/WorldClock.esm.js.map +1 -1
  55. package/dist/hooks/useGreeting.esm.js +3 -3
  56. package/dist/hooks/useGreeting.esm.js.map +1 -1
  57. package/dist/index.d.ts +59 -20
  58. package/dist/plugin.esm.js.map +1 -1
  59. package/package.json +24 -24
@@ -1,4 +1,5 @@
1
- import React from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Fragment } from 'react';
2
3
  import { Link, WarningPanel, CodeSnippet } from '@backstage/core-components';
3
4
  import Grid from '@mui/material/Grid';
4
5
  import Box from '@mui/material/Box';
@@ -32,7 +33,7 @@ const TemplateSection = () => {
32
33
  const catalogTemplatesLink = `/catalog?${params.toString()}`;
33
34
  let content;
34
35
  if (isLoading) {
35
- content = /* @__PURE__ */ React.createElement(
36
+ content = /* @__PURE__ */ jsx(
36
37
  Box,
37
38
  {
38
39
  sx: {
@@ -40,91 +41,100 @@ const TemplateSection = () => {
40
41
  display: "flex",
41
42
  alignItems: "center",
42
43
  justifyContent: "center"
43
- }
44
- },
45
- /* @__PURE__ */ React.createElement(CircularProgress, null)
44
+ },
45
+ children: /* @__PURE__ */ jsx(CircularProgress, {})
46
+ }
46
47
  );
47
48
  } else if (!templates) {
48
- content = /* @__PURE__ */ React.createElement(WarningPanel, { severity: "error", title: "Could not fetch data." }, /* @__PURE__ */ React.createElement(
49
+ content = /* @__PURE__ */ jsx(WarningPanel, { severity: "error", title: "Could not fetch data.", children: /* @__PURE__ */ jsx(
49
50
  CodeSnippet,
50
51
  {
51
52
  language: "text",
52
53
  text: error?.toString() ?? "Unknown error"
53
54
  }
54
- ));
55
+ ) });
55
56
  } else {
56
- content = /* @__PURE__ */ React.createElement(Box, { sx: { padding: "8px 8px 8px 0" } }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1, alignItems: "stretch" }, templates?.items.map((item) => /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 3, key: item.title }, /* @__PURE__ */ React.createElement(
57
- TemplateCard,
58
- {
59
- link: `/create/templates/${item.metadata.namespace}/${item.metadata.name}`,
60
- title: item.metadata.title,
61
- description: item.metadata.description,
62
- kind: "Template"
63
- }
64
- ))), templates?.items.length === 0 && /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 12 }, /* @__PURE__ */ React.createElement(
65
- Box,
66
- {
67
- sx: {
68
- display: "flex",
69
- alignItems: "center",
70
- justifyContent: "center",
71
- border: (muiTheme) => `1px solid ${muiTheme.palette.grey[400]}`,
72
- borderRadius: 3,
73
- overflow: "hidden"
57
+ content = /* @__PURE__ */ jsx(Box, { sx: { padding: "8px 8px 8px 0" }, children: /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 1, alignItems: "stretch", children: [
58
+ templates?.items.map((item) => /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 6, lg: 3, children: /* @__PURE__ */ jsx(
59
+ TemplateCard,
60
+ {
61
+ link: `/create/templates/${item.metadata.namespace}/${item.metadata.name}`,
62
+ title: item.metadata.title,
63
+ description: item.metadata.description,
64
+ kind: "Template"
74
65
  }
75
- },
76
- /* @__PURE__ */ React.createElement(
77
- CardContent,
66
+ ) }, item.title)),
67
+ templates?.items.length === 0 && /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 12, children: /* @__PURE__ */ jsx(
68
+ Box,
78
69
  {
79
70
  sx: {
80
- margin: "1rem"
81
- }
82
- },
83
- /* @__PURE__ */ React.createElement(Typography, { sx: { fontSize: "1.125rem", fontWeight: 500 } }, "No templates added yet"),
84
- /* @__PURE__ */ React.createElement(
85
- Typography,
86
- {
87
- sx: {
88
- fontSize: "0.875rem",
89
- fontWeight: 400,
90
- mt: "20px",
91
- mb: "16px"
92
- }
71
+ display: "flex",
72
+ alignItems: "center",
73
+ justifyContent: "center",
74
+ border: (muiTheme) => `1px solid ${muiTheme.palette.grey[400]}`,
75
+ borderRadius: 3,
76
+ overflow: "hidden"
93
77
  },
94
- "Once templates are added, this space will showcase relevant content tailored to your experience."
95
- ),
96
- /* @__PURE__ */ React.createElement(StyledLink, { to: "/catalog-import", underline: "none" }, "Register a template")
97
- )
98
- ))), /* @__PURE__ */ React.createElement(Box, { sx: { pt: 2 } }, templates?.items.length > 0 && /* @__PURE__ */ React.createElement(ViewMoreLink, { to: catalogTemplatesLink, underline: "always" }, "View all ", templates?.totalItems ? templates?.totalItems : "", " ", "templates"))));
78
+ children: /* @__PURE__ */ jsxs(
79
+ CardContent,
80
+ {
81
+ sx: {
82
+ margin: "1rem"
83
+ },
84
+ children: [
85
+ /* @__PURE__ */ jsx(Typography, { sx: { fontSize: "1.125rem", fontWeight: 500 }, children: "No templates added yet" }),
86
+ /* @__PURE__ */ jsx(
87
+ Typography,
88
+ {
89
+ sx: {
90
+ fontSize: "0.875rem",
91
+ fontWeight: 400,
92
+ mt: "20px",
93
+ mb: "16px"
94
+ },
95
+ children: "Once templates are added, this space will showcase relevant content tailored to your experience."
96
+ }
97
+ ),
98
+ /* @__PURE__ */ jsx(StyledLink, { to: "/catalog-import", underline: "none", children: "Register a template" })
99
+ ]
100
+ }
101
+ )
102
+ }
103
+ ) })
104
+ ] }) }) });
99
105
  }
100
- return /* @__PURE__ */ React.createElement(
106
+ return /* @__PURE__ */ jsxs(
101
107
  Card,
102
108
  {
103
109
  elevation: 0,
104
110
  sx: {
105
111
  padding: "24px",
106
112
  border: (muiTheme) => `1px solid ${muiTheme.palette.grey[300]}`,
107
- overflow: "auto",
108
- "$::-webkit-scrollbar": {
109
- display: "none"
110
- },
111
- scrollbarWidth: "none"
112
- }
113
- },
114
- /* @__PURE__ */ React.createElement(
115
- Typography,
116
- {
117
- variant: "h3",
118
- sx: {
119
- display: "flex",
120
- alignItems: "center",
121
- fontWeight: "500",
122
- fontSize: "1.5rem"
123
- }
113
+ overflow: "auto"
124
114
  },
125
- "Explore Templates"
126
- ),
127
- content
115
+ children: [
116
+ /* @__PURE__ */ jsx(
117
+ Typography,
118
+ {
119
+ variant: "h3",
120
+ sx: {
121
+ display: "flex",
122
+ alignItems: "center",
123
+ fontWeight: "500",
124
+ fontSize: "1.5rem"
125
+ },
126
+ children: "Explore Templates"
127
+ }
128
+ ),
129
+ content,
130
+ templates?.items && templates?.items.length > 0 && /* @__PURE__ */ jsx(Box, { sx: { pt: 2 }, children: /* @__PURE__ */ jsxs(ViewMoreLink, { to: catalogTemplatesLink, underline: "always", children: [
131
+ "View all ",
132
+ templates?.totalItems ? templates?.totalItems : "",
133
+ " ",
134
+ "templates"
135
+ ] }) })
136
+ ]
137
+ }
128
138
  );
129
139
  };
130
140
 
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateSection.esm.js","sources":["../../../src/components/TemplateSection/TemplateSection.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 React from 'react';\n\nimport {\n CodeSnippet,\n WarningPanel,\n Link as BackstageLink,\n} from '@backstage/core-components';\n\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CardContent from '@mui/material/CardContent';\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nimport TemplateCard from './TemplateCard';\nimport { useEntities } from '../../hooks/useEntities';\nimport { ViewMoreLink } from './ViewMoreLink';\n\nconst StyledLink = styled(BackstageLink)(({ theme }) => ({\n textDecoration: 'none',\n padding: theme.spacing(1, 1.5),\n fontSize: '16px',\n display: 'inline-flex',\n border: `1px solid ${theme.palette.primary.main}`,\n borderRadius: 4,\n}));\n\nexport const TemplateSection = () => {\n const {\n data: templates,\n error,\n isLoading,\n } = useEntities({ kind: 'Template' });\n\n const params = new URLSearchParams({\n 'filters[kind]': 'template',\n limit: '20',\n });\n const catalogTemplatesLink = `/catalog?${params.toString()}`;\n\n let content: React.ReactNode;\n\n if (isLoading) {\n content = (\n <Box\n sx={{\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <CircularProgress />\n </Box>\n );\n } else if (!templates) {\n content = (\n <WarningPanel severity=\"error\" title=\"Could not fetch data.\">\n <CodeSnippet\n language=\"text\"\n text={error?.toString() ?? 'Unknown error'}\n />\n </WarningPanel>\n );\n } else {\n content = (\n <Box sx={{ padding: '8px 8px 8px 0' }}>\n <React.Fragment>\n <Grid container spacing={1} alignItems=\"stretch\">\n {templates?.items.map((item: any) => (\n <Grid item xs={12} md={3} key={item.title}>\n <TemplateCard\n link={`/create/templates/${item.metadata.namespace}/${item.metadata.name}`}\n title={item.metadata.title}\n description={item.metadata.description}\n kind=\"Template\"\n />\n </Grid>\n ))}\n {templates?.items.length === 0 && (\n <Grid item xs={12} md={12}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: muiTheme =>\n `1px solid ${muiTheme.palette.grey[400]}`,\n borderRadius: 3,\n overflow: 'hidden',\n }}\n >\n <CardContent\n sx={{\n margin: '1rem',\n }}\n >\n <Typography sx={{ fontSize: '1.125rem', fontWeight: 500 }}>\n No templates added yet\n </Typography>\n <Typography\n sx={{\n fontSize: '0.875rem',\n fontWeight: 400,\n mt: '20px',\n mb: '16px',\n }}\n >\n Once templates are added, this space will showcase\n relevant content tailored to your experience.\n </Typography>\n <StyledLink to=\"/catalog-import\" underline=\"none\">\n Register a template\n </StyledLink>\n </CardContent>\n </Box>\n </Grid>\n )}\n </Grid>\n <Box sx={{ pt: 2 }}>\n {templates?.items.length > 0 && (\n <ViewMoreLink to={catalogTemplatesLink} underline=\"always\">\n View all {templates?.totalItems ? templates?.totalItems : ''}{' '}\n templates\n </ViewMoreLink>\n )}\n </Box>\n </React.Fragment>\n </Box>\n );\n }\n\n return (\n <Card\n elevation={0}\n sx={{\n padding: '24px',\n border: muiTheme => `1px solid ${muiTheme.palette.grey[300]}`,\n overflow: 'auto',\n '$::-webkit-scrollbar': {\n display: 'none',\n },\n scrollbarWidth: 'none',\n }}\n >\n <Typography\n variant=\"h3\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontWeight: '500',\n fontSize: '1.5rem',\n }}\n >\n Explore Templates\n </Typography>\n {content}\n </Card>\n );\n};\n"],"names":["BackstageLink"],"mappings":"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"}
1
+ {"version":3,"file":"TemplateSection.esm.js","sources":["../../../src/components/TemplateSection/TemplateSection.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 type { ReactNode } from 'react';\n\nimport { Fragment } from 'react';\n\nimport {\n CodeSnippet,\n WarningPanel,\n Link as BackstageLink,\n} from '@backstage/core-components';\n\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CardContent from '@mui/material/CardContent';\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nimport TemplateCard from './TemplateCard';\nimport { useEntities } from '../../hooks/useEntities';\nimport { ViewMoreLink } from './ViewMoreLink';\n\nconst StyledLink = styled(BackstageLink)(({ theme }) => ({\n textDecoration: 'none',\n padding: theme.spacing(1, 1.5),\n fontSize: '16px',\n display: 'inline-flex',\n border: `1px solid ${theme.palette.primary.main}`,\n borderRadius: 4,\n}));\n\nexport const TemplateSection = () => {\n const {\n data: templates,\n error,\n isLoading,\n } = useEntities({ kind: 'Template' });\n\n const params = new URLSearchParams({\n 'filters[kind]': 'template',\n limit: '20',\n });\n const catalogTemplatesLink = `/catalog?${params.toString()}`;\n\n let content: ReactNode;\n\n if (isLoading) {\n content = (\n <Box\n sx={{\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <CircularProgress />\n </Box>\n );\n } else if (!templates) {\n content = (\n <WarningPanel severity=\"error\" title=\"Could not fetch data.\">\n <CodeSnippet\n language=\"text\"\n text={error?.toString() ?? 'Unknown error'}\n />\n </WarningPanel>\n );\n } else {\n content = (\n <Box sx={{ padding: '8px 8px 8px 0' }}>\n <Fragment>\n <Grid container spacing={1} alignItems=\"stretch\">\n {templates?.items.map((item: any) => (\n <Grid item xs={12} md={6} lg={3} key={item.title}>\n <TemplateCard\n link={`/create/templates/${item.metadata.namespace}/${item.metadata.name}`}\n title={item.metadata.title}\n description={item.metadata.description}\n kind=\"Template\"\n />\n </Grid>\n ))}\n {templates?.items.length === 0 && (\n <Grid item xs={12} md={12}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: muiTheme =>\n `1px solid ${muiTheme.palette.grey[400]}`,\n borderRadius: 3,\n overflow: 'hidden',\n }}\n >\n <CardContent\n sx={{\n margin: '1rem',\n }}\n >\n <Typography sx={{ fontSize: '1.125rem', fontWeight: 500 }}>\n No templates added yet\n </Typography>\n <Typography\n sx={{\n fontSize: '0.875rem',\n fontWeight: 400,\n mt: '20px',\n mb: '16px',\n }}\n >\n Once templates are added, this space will showcase\n relevant content tailored to your experience.\n </Typography>\n <StyledLink to=\"/catalog-import\" underline=\"none\">\n Register a template\n </StyledLink>\n </CardContent>\n </Box>\n </Grid>\n )}\n </Grid>\n </Fragment>\n </Box>\n );\n }\n\n return (\n <Card\n elevation={0}\n sx={{\n padding: '24px',\n border: muiTheme => `1px solid ${muiTheme.palette.grey[300]}`,\n overflow: 'auto',\n }}\n >\n <Typography\n variant=\"h3\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontWeight: '500',\n fontSize: '1.5rem',\n }}\n >\n Explore Templates\n </Typography>\n {content}\n {templates?.items && templates?.items.length > 0 && (\n <Box sx={{ pt: 2 }}>\n <ViewMoreLink to={catalogTemplatesLink} underline=\"always\">\n View all {templates?.totalItems ? templates?.totalItems : ''}{' '}\n templates\n </ViewMoreLink>\n </Box>\n )}\n </Card>\n );\n};\n"],"names":["BackstageLink"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import React from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { Link } from '@backstage/core-components';
3
3
  import Typography from '@mui/material/Typography';
4
4
 
5
5
  const ViewMoreLink = ({ to, children }) => {
6
- return /* @__PURE__ */ React.createElement(Link, { to, underline: "always", style: { textUnderlineOffset: "4px" } }, /* @__PURE__ */ React.createElement(Typography, { variant: "body2", sx: { fontWeight: 500 } }, children));
6
+ return /* @__PURE__ */ jsx(Link, { to, underline: "always", style: { textUnderlineOffset: "4px" }, children: /* @__PURE__ */ jsx(Typography, { variant: "body2", sx: { fontWeight: 500 }, children }) });
7
7
  };
8
8
 
9
9
  export { ViewMoreLink };
@@ -1 +1 @@
1
- {"version":3,"file":"ViewMoreLink.esm.js","sources":["../../../src/components/TemplateSection/ViewMoreLink.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 React from 'react';\nimport { Link, LinkProps } from '@backstage/core-components';\nimport Typography from '@mui/material/Typography';\n\ninterface ViewMoreLinkProps extends LinkProps {\n to: string;\n children: string | React.ReactNode;\n}\n\nexport const ViewMoreLink: React.FC<ViewMoreLinkProps> = ({ to, children }) => {\n return (\n <Link to={to} underline=\"always\" style={{ textUnderlineOffset: '4px' }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>\n {children}\n </Typography>\n </Link>\n );\n};\n"],"names":[],"mappings":";;;;AAwBO,MAAM,YAA4C,GAAA,CAAC,EAAE,EAAA,EAAI,UAAe,KAAA;AAC7E,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,EAAQ,EAAA,SAAA,EAAU,UAAS,KAAO,EAAA,EAAE,qBAAqB,KAAM,EAAA,EAAA,sCAClE,UAAW,EAAA,EAAA,OAAA,EAAQ,SAAQ,EAAI,EAAA,EAAE,YAAY,GAAI,EAAA,EAAA,EAC/C,QACH,CACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ViewMoreLink.esm.js","sources":["../../../src/components/TemplateSection/ViewMoreLink.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 type { ReactNode, FC } from 'react';\nimport { Link, LinkProps } from '@backstage/core-components';\nimport Typography from '@mui/material/Typography';\n\ninterface ViewMoreLinkProps extends LinkProps {\n to: string;\n children: string | ReactNode;\n}\n\nexport const ViewMoreLink: FC<ViewMoreLinkProps> = ({ to, children }) => {\n return (\n <Link to={to} underline=\"always\" style={{ textUnderlineOffset: '4px' }}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>\n {children}\n </Typography>\n </Link>\n );\n};\n"],"names":[],"mappings":";;;;AAwBO,MAAM,YAAsC,GAAA,CAAC,EAAE,EAAA,EAAI,UAAe,KAAA;AACvE,EACE,uBAAA,GAAA,CAAC,QAAK,EAAQ,EAAA,SAAA,EAAU,UAAS,KAAO,EAAA,EAAE,qBAAqB,KAAM,EAAA,EACnE,8BAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,SAAQ,EAAI,EAAA,EAAE,YAAY,GAAI,EAAA,EAC/C,UACH,CACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,10 +1,11 @@
1
- import React from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useMemo } from 'react';
2
3
  import { VisitListener as VisitListener$1 } from '@backstage/plugin-home';
3
4
  import { useDynamicHomePageCards } from '../hooks/useDynamicHomePageCards.esm.js';
4
5
 
5
6
  const VisitListener = () => {
6
7
  const cards = useDynamicHomePageCards();
7
- const shouldLoadVisitListener = React.useMemo(() => {
8
+ const shouldLoadVisitListener = useMemo(() => {
8
9
  if (!cards) {
9
10
  return false;
10
11
  }
@@ -16,7 +17,7 @@ const VisitListener = () => {
16
17
  (card) => requiresVisitListener.includes(card.Component.displayName)
17
18
  );
18
19
  }, [cards]);
19
- return shouldLoadVisitListener ? /* @__PURE__ */ React.createElement(VisitListener$1, null) : null;
20
+ return shouldLoadVisitListener ? /* @__PURE__ */ jsx(VisitListener$1, {}) : null;
20
21
  };
21
22
 
22
23
  export { VisitListener };
@@ -1 +1 @@
1
- {"version":3,"file":"VisitListener.esm.js","sources":["../../src/components/VisitListener.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 React from 'react';\n\nimport { VisitListener as VisitListenerComponent } from '@backstage/plugin-home';\nimport { useDynamicHomePageCards } from '../hooks/useDynamicHomePageCards';\n\nexport const VisitListener = () => {\n const cards = useDynamicHomePageCards();\n\n const shouldLoadVisitListener = React.useMemo<boolean>(() => {\n if (!cards) {\n return false;\n }\n\n const requiresVisitListener = [\n 'Extension(RecentlyVisitedCard)',\n 'Extension(TopVisitedCard)',\n ];\n\n return cards.some(card =>\n requiresVisitListener.includes(card.Component.displayName!),\n );\n }, [cards]);\n\n return shouldLoadVisitListener ? <VisitListenerComponent /> : null;\n};\n"],"names":["VisitListenerComponent"],"mappings":";;;;AAqBO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,QAAQ,uBAAwB,EAAA;AAEtC,EAAM,MAAA,uBAAA,GAA0B,KAAM,CAAA,OAAA,CAAiB,MAAM;AAC3D,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAO,OAAA,KAAA;AAAA;AAGT,IAAA,MAAM,qBAAwB,GAAA;AAAA,MAC5B,gCAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,OAAO,KAAM,CAAA,IAAA;AAAA,MAAK,CAChB,IAAA,KAAA,qBAAA,CAAsB,QAAS,CAAA,IAAA,CAAK,UAAU,WAAY;AAAA,KAC5D;AAAA,GACF,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAO,OAAA,uBAAA,mBAA2B,KAAA,CAAA,aAAA,CAAAA,eAAA,EAAA,IAAuB,CAAK,GAAA,IAAA;AAChE;;;;"}
1
+ {"version":3,"file":"VisitListener.esm.js","sources":["../../src/components/VisitListener.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { useMemo } from 'react';\n\nimport { VisitListener as VisitListenerComponent } from '@backstage/plugin-home';\nimport { useDynamicHomePageCards } from '../hooks/useDynamicHomePageCards';\n\nexport const VisitListener = () => {\n const cards = useDynamicHomePageCards();\n\n const shouldLoadVisitListener = useMemo<boolean>(() => {\n if (!cards) {\n return false;\n }\n\n const requiresVisitListener = [\n 'Extension(RecentlyVisitedCard)',\n 'Extension(TopVisitedCard)',\n ];\n\n return cards.some(card =>\n requiresVisitListener.includes(card.Component.displayName!),\n );\n }, [cards]);\n\n return shouldLoadVisitListener ? <VisitListenerComponent /> : null;\n};\n"],"names":["VisitListenerComponent"],"mappings":";;;;;AAqBO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,QAAQ,uBAAwB,EAAA;AAEtC,EAAM,MAAA,uBAAA,GAA0B,QAAiB,MAAM;AACrD,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAO,OAAA,KAAA;AAAA;AAGT,IAAA,MAAM,qBAAwB,GAAA;AAAA,MAC5B,gCAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,OAAO,KAAM,CAAA,IAAA;AAAA,MAAK,CAChB,IAAA,KAAA,qBAAA,CAAsB,QAAS,CAAA,IAAA,CAAK,UAAU,WAAY;AAAA,KAC5D;AAAA,GACF,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAO,OAAA,uBAAA,mBAA2B,GAAA,CAAAA,eAAA,EAAA,EAAuB,CAAK,GAAA,IAAA;AAChE;;;;"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { HeaderWorldClock } from '@backstage/plugin-home';
3
3
 
4
4
  const WorldClock = ({
@@ -6,13 +6,13 @@ const WorldClock = ({
6
6
  timeFormat,
7
7
  justifyContent = "space-between"
8
8
  }) => {
9
- return /* @__PURE__ */ React.createElement("div", { style: { display: "flex", justifyContent } }, /* @__PURE__ */ React.createElement(
9
+ return /* @__PURE__ */ jsx("div", { style: { display: "flex", justifyContent }, children: /* @__PURE__ */ jsx(
10
10
  HeaderWorldClock,
11
11
  {
12
12
  clockConfigs: worldClocks,
13
13
  customTimeFormat: timeFormat
14
14
  }
15
- ));
15
+ ) });
16
16
  };
17
17
 
18
18
  export { WorldClock };
@@ -1 +1 @@
1
- {"version":3,"file":"WorldClock.esm.js","sources":["../../src/components/WorldClock.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 React from 'react';\n\nimport { ClockConfig, HeaderWorldClock } from '@backstage/plugin-home';\n\n/**\n * @public\n */\nexport interface WorldClockProps {\n worldClocks: ClockConfig[];\n timeFormat?: Intl.DateTimeFormatOptions;\n justifyContent?: 'space-between' | 'space-around';\n}\n\n/**\n * @public\n */\nexport const WorldClock = ({\n worldClocks,\n timeFormat,\n justifyContent = 'space-between',\n}: WorldClockProps) => {\n return (\n <div style={{ display: 'flex', justifyContent }}>\n <HeaderWorldClock\n clockConfigs={worldClocks}\n customTimeFormat={timeFormat}\n />\n </div>\n );\n};\n"],"names":[],"mappings":";;;AAgCO,MAAM,aAAa,CAAC;AAAA,EACzB,WAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAiB,GAAA;AACnB,CAAuB,KAAA;AACrB,EAAA,2CACG,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,OAAS,EAAA,MAAA,EAAQ,gBAC7B,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,YAAc,EAAA,WAAA;AAAA,MACd,gBAAkB,EAAA;AAAA;AAAA,GAEtB,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"WorldClock.esm.js","sources":["../../src/components/WorldClock.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { ClockConfig, HeaderWorldClock } from '@backstage/plugin-home';\n\n/**\n * @public\n */\nexport interface WorldClockProps {\n worldClocks: ClockConfig[];\n timeFormat?: Intl.DateTimeFormatOptions;\n justifyContent?: 'space-between' | 'space-around';\n}\n\n/**\n * @public\n */\nexport const WorldClock = ({\n worldClocks,\n timeFormat,\n justifyContent = 'space-between',\n}: WorldClockProps) => {\n return (\n <div style={{ display: 'flex', justifyContent }}>\n <HeaderWorldClock\n clockConfigs={worldClocks}\n customTimeFormat={timeFormat}\n />\n </div>\n );\n};\n"],"names":[],"mappings":";;;AA8BO,MAAM,aAAa,CAAC;AAAA,EACzB,WAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAiB,GAAA;AACnB,CAAuB,KAAA;AACrB,EAAA,2BACG,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,OAAS,EAAA,MAAA,EAAQ,gBAC7B,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,YAAc,EAAA,WAAA;AAAA,MACd,gBAAkB,EAAA;AAAA;AAAA,GAEtB,EAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { useState, useEffect } from 'react';
2
2
 
3
3
  const getGreetingByTimeZone = (timeZone) => {
4
4
  const hours = (/* @__PURE__ */ new Date()).toLocaleString("en-US", {
@@ -16,10 +16,10 @@ const getGreetingByTimeZone = (timeZone) => {
16
16
  return "Good evening";
17
17
  };
18
18
  const useGreeting = (timeZone) => {
19
- const [greeting, setGreeting] = React.useState(
19
+ const [greeting, setGreeting] = useState(
20
20
  getGreetingByTimeZone(timeZone)
21
21
  );
22
- React.useEffect(() => {
22
+ useEffect(() => {
23
23
  const interval = setInterval(() => {
24
24
  setGreeting(getGreetingByTimeZone(timeZone));
25
25
  }, 6e4);
@@ -1 +1 @@
1
- {"version":3,"file":"useGreeting.esm.js","sources":["../../src/hooks/useGreeting.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 React from 'react';\n\nconst getGreetingByTimeZone = (timeZone?: string) => {\n const hours = new Date().toLocaleString('en-US', {\n timeZone,\n hour: 'numeric',\n hour12: false,\n });\n const hour = parseInt(hours, 10);\n\n if (hour < 12) {\n return 'Good morning';\n }\n if (hour < 18) {\n return 'Good afternoon';\n }\n return 'Good evening';\n};\n\nconst useGreeting = (timeZone?: string) => {\n const [greeting, setGreeting] = React.useState<string>(\n getGreetingByTimeZone(timeZone),\n );\n\n React.useEffect(() => {\n const interval = setInterval(() => {\n setGreeting(getGreetingByTimeZone(timeZone));\n }, 60000); // Update every minute\n\n return () => clearInterval(interval);\n }, [timeZone]);\n\n return greeting;\n};\n\nexport default useGreeting;\n"],"names":[],"mappings":";;AAiBA,MAAM,qBAAA,GAAwB,CAAC,QAAsB,KAAA;AACnD,EAAA,MAAM,KAAQ,GAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,eAAe,OAAS,EAAA;AAAA,IAC/C,QAAA;AAAA,IACA,IAAM,EAAA,SAAA;AAAA,IACN,MAAQ,EAAA;AAAA,GACT,CAAA;AACD,EAAM,MAAA,IAAA,GAAO,QAAS,CAAA,KAAA,EAAO,EAAE,CAAA;AAE/B,EAAA,IAAI,OAAO,EAAI,EAAA;AACb,IAAO,OAAA,cAAA;AAAA;AAET,EAAA,IAAI,OAAO,EAAI,EAAA;AACb,IAAO,OAAA,gBAAA;AAAA;AAET,EAAO,OAAA,cAAA;AACT,CAAA;AAEM,MAAA,WAAA,GAAc,CAAC,QAAsB,KAAA;AACzC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IACpC,sBAAsB,QAAQ;AAAA,GAChC;AAEA,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAM,MAAA,QAAA,GAAW,YAAY,MAAM;AACjC,MAAY,WAAA,CAAA,qBAAA,CAAsB,QAAQ,CAAC,CAAA;AAAA,OAC1C,GAAK,CAAA;AAER,IAAO,OAAA,MAAM,cAAc,QAAQ,CAAA;AAAA,GACrC,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAO,OAAA,QAAA;AACT;;;;"}
1
+ {"version":3,"file":"useGreeting.esm.js","sources":["../../src/hooks/useGreeting.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { useState, useEffect } from 'react';\n\nconst getGreetingByTimeZone = (timeZone?: string) => {\n const hours = new Date().toLocaleString('en-US', {\n timeZone,\n hour: 'numeric',\n hour12: false,\n });\n const hour = parseInt(hours, 10);\n\n if (hour < 12) {\n return 'Good morning';\n }\n if (hour < 18) {\n return 'Good afternoon';\n }\n return 'Good evening';\n};\n\nconst useGreeting = (timeZone?: string) => {\n const [greeting, setGreeting] = useState<string>(\n getGreetingByTimeZone(timeZone),\n );\n\n useEffect(() => {\n const interval = setInterval(() => {\n setGreeting(getGreetingByTimeZone(timeZone));\n }, 60000); // Update every minute\n\n return () => clearInterval(interval);\n }, [timeZone]);\n\n return greeting;\n};\n\nexport default useGreeting;\n"],"names":[],"mappings":";;AAiBA,MAAM,qBAAA,GAAwB,CAAC,QAAsB,KAAA;AACnD,EAAA,MAAM,KAAQ,GAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,eAAe,OAAS,EAAA;AAAA,IAC/C,QAAA;AAAA,IACA,IAAM,EAAA,SAAA;AAAA,IACN,MAAQ,EAAA;AAAA,GACT,CAAA;AACD,EAAM,MAAA,IAAA,GAAO,QAAS,CAAA,KAAA,EAAO,EAAE,CAAA;AAE/B,EAAA,IAAI,OAAO,EAAI,EAAA;AACb,IAAO,OAAA,cAAA;AAAA;AAET,EAAA,IAAI,OAAO,EAAI,EAAA;AACb,IAAO,OAAA,gBAAA;AAAA;AAET,EAAO,OAAA,cAAA;AACT,CAAA;AAEM,MAAA,WAAA,GAAc,CAAC,QAAsB,KAAA;AACzC,EAAM,MAAA,CAAC,QAAU,EAAA,WAAW,CAAI,GAAA,QAAA;AAAA,IAC9B,sBAAsB,QAAQ;AAAA,GAChC;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,YAAY,MAAM;AACjC,MAAY,WAAA,CAAA,qBAAA,CAAsB,QAAQ,CAAC,CAAA;AAAA,OAC1C,GAAK,CAAA;AAER,IAAO,OAAA,MAAM,cAAc,QAAQ,CAAA;AAAA,GACrC,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAO,OAAA,QAAA;AACT;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { ClockConfig, StarredEntitiesProps, VisitedByTypeProps, FeaturedDocsCardProps } from '@backstage/plugin-home';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
3
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
- import React from 'react';
4
+ import { ComponentType } from 'react';
4
5
 
5
6
  /**
6
7
  * @public
@@ -96,6 +97,44 @@ interface PlaceholderProps {
96
97
  debugContent?: string;
97
98
  }
98
99
 
100
+ /**
101
+ * @public
102
+ */
103
+ declare enum Breakpoint {
104
+ xl = "xl",
105
+ lg = "lg",
106
+ md = "md",
107
+ sm = "sm",
108
+ xs = "xs",
109
+ xxs = "xxs"
110
+ }
111
+ /**
112
+ * @public
113
+ */
114
+ interface Layout {
115
+ x?: number;
116
+ y?: number;
117
+ w?: number;
118
+ h?: number;
119
+ }
120
+ /**
121
+ * @public
122
+ */
123
+ interface HomePageCardMountPointConfig {
124
+ priority?: number;
125
+ layouts?: Record<Breakpoint, Layout>;
126
+ }
127
+ /**
128
+ * @public
129
+ */
130
+ interface HomePageCardMountPoint {
131
+ Component: ComponentType;
132
+ config?: HomePageCardMountPointConfig & {
133
+ props?: Record<string, any>;
134
+ };
135
+ enabled?: boolean;
136
+ }
137
+
99
138
  /**
100
139
  * Dynamic Home Page Plugin
101
140
  * @public
@@ -107,77 +146,77 @@ declare const dynamicHomePagePlugin: _backstage_core_plugin_api.BackstagePlugin<
107
146
  * Dynamic Home Page
108
147
  * @public
109
148
  */
110
- declare const DynamicHomePage: React.ComponentType<DynamicHomePageProps>;
149
+ declare const DynamicHomePage: ComponentType<DynamicHomePageProps>;
111
150
  /**
112
151
  * Customizable Dynamic Home Page
113
152
  * @public
114
153
  */
115
- declare const DynamicCustomizableHomePage: React.ComponentType<DynamicCustomizableHomePageProps>;
154
+ declare const DynamicCustomizableHomePage: ComponentType<DynamicCustomizableHomePageProps>;
116
155
  /**
117
156
  * @public
118
157
  */
119
- declare const SearchBar: React.ComponentType<SearchBarProps>;
158
+ declare const SearchBar: ComponentType<SearchBarProps>;
120
159
  /**
121
160
  * @public
122
161
  */
123
- declare const QuickAccessCard: React.ComponentType<QuickAccessCardProps>;
162
+ declare const QuickAccessCard: ComponentType<QuickAccessCardProps>;
124
163
  /**
125
164
  * @public
126
165
  */
127
- declare const Headline: React.ComponentType<HeadlineProps>;
166
+ declare const Headline: ComponentType<HeadlineProps>;
128
167
  /**
129
168
  * @public
130
169
  */
131
- declare const Markdown: React.ComponentType<MarkdownProps>;
170
+ declare const Markdown: ComponentType<MarkdownProps>;
132
171
  /**
133
172
  * @public
134
173
  */
135
- declare const MarkdownCard: React.ComponentType<MarkdownCardProps>;
174
+ declare const MarkdownCard: ComponentType<MarkdownCardProps>;
136
175
  /**
137
176
  * @public
138
177
  */
139
- declare const Placeholder: React.ComponentType<PlaceholderProps>;
178
+ declare const Placeholder: ComponentType<PlaceholderProps>;
140
179
  /**
141
180
  * @public
142
181
  */
143
- declare const CatalogStarredEntitiesCard: React.ComponentType<StarredEntitiesProps>;
182
+ declare const CatalogStarredEntitiesCard: ComponentType<StarredEntitiesProps>;
144
183
  /**
145
184
  * @public
146
185
  */
147
- declare const RecentlyVisitedCard: React.ComponentType<VisitedByTypeProps>;
186
+ declare const RecentlyVisitedCard: ComponentType<VisitedByTypeProps>;
148
187
  /**
149
188
  * @public
150
189
  */
151
- declare const TopVisitedCard: React.ComponentType<VisitedByTypeProps>;
190
+ declare const TopVisitedCard: ComponentType<VisitedByTypeProps>;
152
191
  /**
153
192
  * @public
154
193
  */
155
- declare const FeaturedDocsCard: React.ComponentType<FeaturedDocsCardProps>;
194
+ declare const FeaturedDocsCard: ComponentType<FeaturedDocsCardProps>;
156
195
  /**
157
196
  * @public
158
197
  */
159
- declare const JokeCard: React.ComponentType<{
198
+ declare const JokeCard: ComponentType<{
160
199
  defaultCategory?: 'any' | 'programming';
161
200
  }>;
162
201
  /**
163
202
  * @public
164
203
  */
165
- declare const VisitListener: () => React.JSX.Element | null;
204
+ declare const VisitListener: () => react_jsx_runtime.JSX.Element | null;
166
205
  /**
167
206
  * @public
168
207
  */
169
- declare const WorldClock: ({ worldClocks, timeFormat, justifyContent, }: WorldClockProps) => React.JSX.Element;
208
+ declare const WorldClock: ({ worldClocks, timeFormat, justifyContent, }: WorldClockProps) => react_jsx_runtime.JSX.Element;
170
209
  /**
171
210
  * @public
172
211
  */
173
- declare const OnboardingSection: () => React.JSX.Element;
212
+ declare const OnboardingSection: () => react_jsx_runtime.JSX.Element;
174
213
  /**
175
214
  * @public
176
215
  */
177
- declare const EntitySection: () => React.JSX.Element;
216
+ declare const EntitySection: () => react_jsx_runtime.JSX.Element;
178
217
  /**
179
218
  * @public
180
219
  */
181
- declare const TemplateSection: () => React.JSX.Element;
220
+ declare const TemplateSection: () => react_jsx_runtime.JSX.Element;
182
221
 
183
- export { CatalogStarredEntitiesCard, DynamicCustomizableHomePage, type DynamicCustomizableHomePageProps, DynamicHomePage, type DynamicHomePageProps, EntitySection, FeaturedDocsCard, Headline, type HeadlineProps, JokeCard, type LocalClockProps, Markdown, MarkdownCard, type MarkdownCardProps, type MarkdownProps, OnboardingSection, Placeholder, type PlaceholderProps, QuickAccessCard, type QuickAccessCardProps, RecentlyVisitedCard, SearchBar, type SearchBarProps, TemplateSection, TopVisitedCard, VisitListener, WorldClock, type WorldClockProps, dynamicHomePagePlugin };
222
+ export { Breakpoint, CatalogStarredEntitiesCard, DynamicCustomizableHomePage, type DynamicCustomizableHomePageProps, DynamicHomePage, type DynamicHomePageProps, EntitySection, FeaturedDocsCard, Headline, type HeadlineProps, type HomePageCardMountPoint, type HomePageCardMountPointConfig, JokeCard, type Layout, type LocalClockProps, Markdown, MarkdownCard, type MarkdownCardProps, type MarkdownProps, OnboardingSection, Placeholder, type PlaceholderProps, QuickAccessCard, type QuickAccessCardProps, RecentlyVisitedCard, SearchBar, type SearchBarProps, TemplateSection, TopVisitedCard, VisitListener, WorldClock, type WorldClockProps, dynamicHomePagePlugin };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 React from 'react';\n\nimport {\n configApiRef,\n createApiFactory,\n createComponentExtension,\n createPlugin,\n createRoutableExtension,\n discoveryApiRef,\n identityApiRef,\n storageApiRef,\n} from '@backstage/core-plugin-api';\n\nimport {\n type StarredEntitiesProps,\n type VisitedByTypeProps,\n type FeaturedDocsCardProps,\n visitsApiRef,\n VisitsStorageApi,\n} from '@backstage/plugin-home';\n\nimport { rootRouteRef } from './routes';\nimport { QuickAccessApiClient, quickAccessApiRef } from './api';\n\nimport type { DynamicHomePageProps } from './components/DynamicHomePage';\nimport type { DynamicCustomizableHomePageProps } from './components/DynamicCustomizableHomePage';\nimport type { SearchBarProps } from './components/SearchBar';\nimport type { QuickAccessCardProps } from './components/QuickAccessCard';\nimport type { HeadlineProps } from './components/Headline';\nimport type { MarkdownProps } from './components/Markdown';\nimport type { MarkdownCardProps } from './components/MarkdownCard';\nimport type { PlaceholderProps } from './components/Placeholder';\n\nexport type { DynamicHomePageProps } from './components/DynamicHomePage';\nexport type { DynamicCustomizableHomePageProps } from './components/DynamicCustomizableHomePage';\nexport type { SearchBarProps } from './components/SearchBar';\nexport type { QuickAccessCardProps } from './components/QuickAccessCard';\nexport type { HeadlineProps } from './components/Headline';\nexport type { MarkdownProps } from './components/Markdown';\nexport type { MarkdownCardProps } from './components/MarkdownCard';\nexport type { PlaceholderProps } from './components/Placeholder';\nexport type { LocalClockProps } from './components/LocalClock';\nexport type { WorldClockProps } from './components/WorldClock';\n\n/**\n * Dynamic Home Page Plugin\n * @public\n */\nexport const dynamicHomePagePlugin = createPlugin({\n id: 'dynamic-home-page',\n routes: {\n root: rootRouteRef,\n },\n apis: [\n createApiFactory({\n api: quickAccessApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n configApi: configApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, configApi, identityApi }) =>\n new QuickAccessApiClient({ discoveryApi, configApi, identityApi }),\n }),\n createApiFactory({\n api: visitsApiRef,\n deps: {\n storageApi: storageApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ storageApi, identityApi }) =>\n VisitsStorageApi.create({ storageApi, identityApi }),\n }),\n ],\n});\n\n/**\n * Dynamic Home Page\n * @public\n */\nexport const DynamicHomePage: React.ComponentType<DynamicHomePageProps> =\n dynamicHomePagePlugin.provide(\n createRoutableExtension({\n name: 'DynamicHomePage',\n component: () =>\n import('./components/DynamicHomePage').then(m => m.DynamicHomePage),\n mountPoint: rootRouteRef,\n }),\n );\n\n/**\n * Customizable Dynamic Home Page\n * @public\n */\nexport const DynamicCustomizableHomePage: React.ComponentType<DynamicCustomizableHomePageProps> =\n dynamicHomePagePlugin.provide(\n createRoutableExtension({\n name: 'DynamicCustomizableHomePage',\n component: () =>\n import('./components/DynamicCustomizableHomePage').then(\n m => m.DynamicCustomizableHomePage,\n ),\n mountPoint: rootRouteRef,\n }),\n );\n\n/**\n * @public\n */\nexport const SearchBar: React.ComponentType<SearchBarProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'SearchBar',\n component: {\n lazy: () => import('./components/SearchBar').then(m => m.SearchBar),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const QuickAccessCard: React.ComponentType<QuickAccessCardProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'QuickAccessCard',\n component: {\n lazy: () =>\n import('./components/QuickAccessCard').then(m => m.QuickAccessCard),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const Headline: React.ComponentType<HeadlineProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'Headline',\n component: {\n lazy: () => import('./components/Headline').then(m => m.Headline),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const Markdown: React.ComponentType<MarkdownProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'Markdown',\n component: {\n lazy: () => import('./components/Markdown').then(m => m.Markdown),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const MarkdownCard: React.ComponentType<MarkdownCardProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'MarkdownCard',\n component: {\n lazy: () =>\n import('./components/MarkdownCard').then(m => m.MarkdownCard),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const Placeholder: React.ComponentType<PlaceholderProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'MarkdownCard',\n component: {\n lazy: () => import('./components/Placeholder').then(m => m.Placeholder),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const CatalogStarredEntitiesCard: React.ComponentType<StarredEntitiesProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'CatalogStarredEntitiesCard',\n component: {\n lazy: () =>\n import('@backstage/plugin-home').then(m => m.HomePageStarredEntities),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const RecentlyVisitedCard: React.ComponentType<VisitedByTypeProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'RecentlyVisitedCard',\n component: {\n lazy: () =>\n import('@backstage/plugin-home').then(m => m.HomePageRecentlyVisited),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const TopVisitedCard: React.ComponentType<VisitedByTypeProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'TopVisitedCard',\n component: {\n lazy: () =>\n import('@backstage/plugin-home').then(m => m.HomePageTopVisited),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const FeaturedDocsCard: React.ComponentType<FeaturedDocsCardProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'FeaturedDocsCard',\n component: {\n lazy: () =>\n import('./components/FeaturedDocsCard').then(m => m.FeaturedDocsCard),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const JokeCard: React.ComponentType<{\n defaultCategory?: 'any' | 'programming';\n}> = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'JokeCard',\n component: {\n lazy: () =>\n import('@backstage/plugin-home').then(m => m.HomePageRandomJoke),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const VisitListener = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'VisitListener',\n component: {\n lazy: () =>\n import('./components/VisitListener').then(m => m.VisitListener),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const WorldClock = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'WorldClock',\n component: {\n lazy: () => import('./components/WorldClock').then(m => m.WorldClock),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const OnboardingSection = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'OnboardingSection',\n component: {\n lazy: () =>\n import('./components/OnboardingSection').then(m => m.OnboardingSection),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const EntitySection = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'EntitySection',\n component: {\n lazy: () =>\n import('./components/EntitySection').then(m => m.EntitySection),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const TemplateSection = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'TemplateSection',\n component: {\n lazy: () =>\n import('./components/TemplateSection').then(m => m.TemplateSection),\n },\n }),\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 type { ComponentType } from 'react';\n\nimport {\n configApiRef,\n createApiFactory,\n createComponentExtension,\n createPlugin,\n createRoutableExtension,\n discoveryApiRef,\n identityApiRef,\n storageApiRef,\n} from '@backstage/core-plugin-api';\n\nimport {\n type StarredEntitiesProps,\n type VisitedByTypeProps,\n type FeaturedDocsCardProps,\n visitsApiRef,\n VisitsStorageApi,\n} from '@backstage/plugin-home';\n\nimport { rootRouteRef } from './routes';\nimport { QuickAccessApiClient, quickAccessApiRef } from './api';\n\nimport type { DynamicHomePageProps } from './components/DynamicHomePage';\nimport type { DynamicCustomizableHomePageProps } from './components/DynamicCustomizableHomePage';\nimport type { SearchBarProps } from './components/SearchBar';\nimport type { QuickAccessCardProps } from './components/QuickAccessCard';\nimport type { HeadlineProps } from './components/Headline';\nimport type { MarkdownProps } from './components/Markdown';\nimport type { MarkdownCardProps } from './components/MarkdownCard';\nimport type { PlaceholderProps } from './components/Placeholder';\n\nexport type { DynamicHomePageProps } from './components/DynamicHomePage';\nexport type { DynamicCustomizableHomePageProps } from './components/DynamicCustomizableHomePage';\nexport type { SearchBarProps } from './components/SearchBar';\nexport type { QuickAccessCardProps } from './components/QuickAccessCard';\nexport type { HeadlineProps } from './components/Headline';\nexport type { MarkdownProps } from './components/Markdown';\nexport type { MarkdownCardProps } from './components/MarkdownCard';\nexport type { PlaceholderProps } from './components/Placeholder';\nexport type { LocalClockProps } from './components/LocalClock';\nexport type { WorldClockProps } from './components/WorldClock';\nexport type {\n HomePageCardMountPoint,\n HomePageCardMountPointConfig,\n Breakpoint,\n Layout,\n} from './types';\n\n/**\n * Dynamic Home Page Plugin\n * @public\n */\nexport const dynamicHomePagePlugin = createPlugin({\n id: 'dynamic-home-page',\n routes: {\n root: rootRouteRef,\n },\n apis: [\n createApiFactory({\n api: quickAccessApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n configApi: configApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, configApi, identityApi }) =>\n new QuickAccessApiClient({ discoveryApi, configApi, identityApi }),\n }),\n createApiFactory({\n api: visitsApiRef,\n deps: {\n storageApi: storageApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ storageApi, identityApi }) =>\n VisitsStorageApi.create({ storageApi, identityApi }),\n }),\n ],\n});\n\n/**\n * Dynamic Home Page\n * @public\n */\nexport const DynamicHomePage: ComponentType<DynamicHomePageProps> =\n dynamicHomePagePlugin.provide(\n createRoutableExtension({\n name: 'DynamicHomePage',\n component: () =>\n import('./components/DynamicHomePage').then(m => m.DynamicHomePage),\n mountPoint: rootRouteRef,\n }),\n );\n\n/**\n * Customizable Dynamic Home Page\n * @public\n */\nexport const DynamicCustomizableHomePage: ComponentType<DynamicCustomizableHomePageProps> =\n dynamicHomePagePlugin.provide(\n createRoutableExtension({\n name: 'DynamicCustomizableHomePage',\n component: () =>\n import('./components/DynamicCustomizableHomePage').then(\n m => m.DynamicCustomizableHomePage,\n ),\n mountPoint: rootRouteRef,\n }),\n );\n\n/**\n * @public\n */\nexport const SearchBar: ComponentType<SearchBarProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'SearchBar',\n component: {\n lazy: () => import('./components/SearchBar').then(m => m.SearchBar),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const QuickAccessCard: ComponentType<QuickAccessCardProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'QuickAccessCard',\n component: {\n lazy: () =>\n import('./components/QuickAccessCard').then(m => m.QuickAccessCard),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const Headline: ComponentType<HeadlineProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'Headline',\n component: {\n lazy: () => import('./components/Headline').then(m => m.Headline),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const Markdown: ComponentType<MarkdownProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'Markdown',\n component: {\n lazy: () => import('./components/Markdown').then(m => m.Markdown),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const MarkdownCard: ComponentType<MarkdownCardProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'MarkdownCard',\n component: {\n lazy: () =>\n import('./components/MarkdownCard').then(m => m.MarkdownCard),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const Placeholder: ComponentType<PlaceholderProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'MarkdownCard',\n component: {\n lazy: () => import('./components/Placeholder').then(m => m.Placeholder),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const CatalogStarredEntitiesCard: ComponentType<StarredEntitiesProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'CatalogStarredEntitiesCard',\n component: {\n lazy: () =>\n import('@backstage/plugin-home').then(m => m.HomePageStarredEntities),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const RecentlyVisitedCard: ComponentType<VisitedByTypeProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'RecentlyVisitedCard',\n component: {\n lazy: () =>\n import('@backstage/plugin-home').then(m => m.HomePageRecentlyVisited),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const TopVisitedCard: ComponentType<VisitedByTypeProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'TopVisitedCard',\n component: {\n lazy: () =>\n import('@backstage/plugin-home').then(m => m.HomePageTopVisited),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const FeaturedDocsCard: ComponentType<FeaturedDocsCardProps> =\n dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'FeaturedDocsCard',\n component: {\n lazy: () =>\n import('./components/FeaturedDocsCard').then(m => m.FeaturedDocsCard),\n },\n }),\n );\n\n/**\n * @public\n */\nexport const JokeCard: ComponentType<{\n defaultCategory?: 'any' | 'programming';\n}> = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'JokeCard',\n component: {\n lazy: () =>\n import('@backstage/plugin-home').then(m => m.HomePageRandomJoke),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const VisitListener = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'VisitListener',\n component: {\n lazy: () =>\n import('./components/VisitListener').then(m => m.VisitListener),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const WorldClock = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'WorldClock',\n component: {\n lazy: () => import('./components/WorldClock').then(m => m.WorldClock),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const OnboardingSection = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'OnboardingSection',\n component: {\n lazy: () =>\n import('./components/OnboardingSection').then(m => m.OnboardingSection),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const EntitySection = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'EntitySection',\n component: {\n lazy: () =>\n import('./components/EntitySection').then(m => m.EntitySection),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const TemplateSection = dynamicHomePagePlugin.provide(\n createComponentExtension({\n name: 'TemplateSection',\n component: {\n lazy: () =>\n import('./components/TemplateSection').then(m => m.TemplateSection),\n },\n }),\n);\n"],"names":[],"mappings":"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"}