@veecode-platform/plugin-veecode-homepage-dynamic 0.2.3 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/components/homeContent/HighLightedCard.esm.js +5 -2
  2. package/dist/components/homeContent/HighLightedCard.esm.js.map +1 -1
  3. package/dist/components/homeContent/HomeContent.esm.js +9 -7
  4. package/dist/components/homeContent/HomeContent.esm.js.map +1 -1
  5. package/dist/components/homeContent/Summary.esm.js +6 -4
  6. package/dist/components/homeContent/Summary.esm.js.map +1 -1
  7. package/dist/components/homeContent/VisitedCharts.esm.js +4 -2
  8. package/dist/components/homeContent/VisitedCharts.esm.js.map +1 -1
  9. package/dist/components/homeGretting/HomeGretting.esm.js +4 -2
  10. package/dist/components/homeGretting/HomeGretting.esm.js.map +1 -1
  11. package/dist/hooks/useTranslation.esm.js +8 -0
  12. package/dist/hooks/useTranslation.esm.js.map +1 -0
  13. package/dist/index.d.ts +35 -4
  14. package/dist/index.esm.js +2 -0
  15. package/dist/index.esm.js.map +1 -1
  16. package/dist/plugin.esm.js +7 -1
  17. package/dist/plugin.esm.js.map +1 -1
  18. package/dist/translations/de.esm.js +28 -0
  19. package/dist/translations/de.esm.js.map +1 -0
  20. package/dist/translations/es.esm.js +28 -0
  21. package/dist/translations/es.esm.js.map +1 -0
  22. package/dist/translations/fr.esm.js +28 -0
  23. package/dist/translations/fr.esm.js.map +1 -0
  24. package/dist/translations/index.esm.js +16 -0
  25. package/dist/translations/index.esm.js.map +1 -0
  26. package/dist/translations/it.esm.js +28 -0
  27. package/dist/translations/it.esm.js.map +1 -0
  28. package/dist/translations/pt.esm.js +28 -0
  29. package/dist/translations/pt.esm.js.map +1 -0
  30. package/dist/translations/ref.esm.js +44 -0
  31. package/dist/translations/ref.esm.js.map +1 -0
  32. package/dist-scalprum/plugin-manifest.json +3 -3
  33. package/dist-scalprum/static/{1213.aff960fc.chunk.js → 1213.10ab8a1e.chunk.js} +3 -3
  34. package/dist-scalprum/static/1213.10ab8a1e.chunk.js.map +1 -0
  35. package/dist-scalprum/static/2261.02ebf7b8.chunk.js +2 -0
  36. package/dist-scalprum/static/2261.02ebf7b8.chunk.js.map +1 -0
  37. package/dist-scalprum/static/2969.d7dee9a4.chunk.js +2 -0
  38. package/dist-scalprum/static/2969.d7dee9a4.chunk.js.map +1 -0
  39. package/dist-scalprum/static/4864.b356c1a3.chunk.js +2 -0
  40. package/dist-scalprum/static/4864.b356c1a3.chunk.js.map +1 -0
  41. package/dist-scalprum/static/5132.e8ececda.chunk.js +2 -0
  42. package/dist-scalprum/static/5132.e8ececda.chunk.js.map +1 -0
  43. package/dist-scalprum/static/5799.516d5ae5.chunk.js +2 -0
  44. package/dist-scalprum/static/5799.516d5ae5.chunk.js.map +1 -0
  45. package/dist-scalprum/static/9011.81f8d514.chunk.js +2 -0
  46. package/dist-scalprum/static/9011.81f8d514.chunk.js.map +1 -0
  47. package/dist-scalprum/static/9204.dcf46cef.chunk.js +2 -0
  48. package/dist-scalprum/static/9204.dcf46cef.chunk.js.map +1 -0
  49. package/dist-scalprum/static/9292.15c445eb.chunk.js +2 -0
  50. package/dist-scalprum/static/9292.15c445eb.chunk.js.map +1 -0
  51. package/dist-scalprum/static/9541.dca5e402.chunk.js +3 -0
  52. package/dist-scalprum/static/9541.dca5e402.chunk.js.map +1 -0
  53. package/dist-scalprum/static/exposed-PluginRoot.46fb234b.chunk.js +2 -0
  54. package/dist-scalprum/static/exposed-PluginRoot.46fb234b.chunk.js.map +1 -0
  55. package/dist-scalprum/{veecode-platform.plugin-veecode-homepage.ea406b87d3dc1c912550.js → veecode-platform.plugin-veecode-homepage.e50a17c456ed6da412d5.js} +2 -2
  56. package/dist-scalprum/veecode-platform.plugin-veecode-homepage.e50a17c456ed6da412d5.js.map +1 -0
  57. package/package.json +13 -13
  58. package/dist-scalprum/static/1213.aff960fc.chunk.js.map +0 -1
  59. package/dist-scalprum/static/4864.3cede332.chunk.js +0 -2
  60. package/dist-scalprum/static/4864.3cede332.chunk.js.map +0 -1
  61. package/dist-scalprum/static/7871.32fe0d52.chunk.js +0 -2
  62. package/dist-scalprum/static/7871.32fe0d52.chunk.js.map +0 -1
  63. package/dist-scalprum/static/8692.8ab75fef.chunk.js +0 -2
  64. package/dist-scalprum/static/8692.8ab75fef.chunk.js.map +0 -1
  65. package/dist-scalprum/static/9541.dde4bd87.chunk.js +0 -3
  66. package/dist-scalprum/static/9541.dde4bd87.chunk.js.map +0 -1
  67. package/dist-scalprum/static/exposed-PluginRoot.221d8f69.chunk.js +0 -2
  68. package/dist-scalprum/static/exposed-PluginRoot.221d8f69.chunk.js.map +0 -1
  69. package/dist-scalprum/veecode-platform.plugin-veecode-homepage.ea406b87d3dc1c912550.js.map +0 -1
  70. /package/dist-scalprum/static/{1213.aff960fc.chunk.js.LICENSE.txt → 1213.10ab8a1e.chunk.js.LICENSE.txt} +0 -0
  71. /package/dist-scalprum/static/{9541.dde4bd87.chunk.js.LICENSE.txt → 9541.dca5e402.chunk.js.LICENSE.txt} +0 -0
@@ -7,9 +7,11 @@ import InsightsRoundedIcon from '@mui/icons-material/InsightsRounded';
7
7
  import Box from '@mui/material/Box';
8
8
  import { LinkButton } from '@backstage/core-components';
9
9
  import { useTheme } from '@mui/material/styles';
10
+ import { useTranslation } from '../../hooks/useTranslation.esm.js';
10
11
 
11
12
  function HighlightedCard() {
12
13
  const theme = useTheme();
14
+ const { t } = useTranslation();
13
15
  return /* @__PURE__ */ jsx(
14
16
  Card,
15
17
  {
@@ -46,7 +48,7 @@ function HighlightedCard() {
46
48
  variant: "subtitle2",
47
49
  gutterBottom: true,
48
50
  sx: { fontWeight: "600" },
49
- children: "Add new features"
51
+ children: t("highlightedCard.title")
50
52
  }
51
53
  )
52
54
  ]
@@ -63,7 +65,8 @@ function HighlightedCard() {
63
65
  children: /* @__PURE__ */ jsxs(LinkButton, { variant: "contained", to: "/create", children: [
64
66
  " ",
65
67
  /* @__PURE__ */ jsx(AddIcon, {}),
66
- " Create"
68
+ " ",
69
+ t("highlightedCard.createButton")
67
70
  ] })
68
71
  }
69
72
  )
@@ -1 +1 @@
1
- {"version":3,"file":"HighLightedCard.esm.js","sources":["../../../src/components/homeContent/HighLightedCard.tsx"],"sourcesContent":["import Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Typography from '@mui/material/Typography';\nimport AddIcon from '@mui/icons-material/Add';\nimport InsightsRoundedIcon from '@mui/icons-material/InsightsRounded';\nimport Box from '@mui/material/Box';\nimport { LinkButton } from '@backstage/core-components';\nimport { useTheme } from '@mui/material/styles';\n\nexport default function HighlightedCard() {\n const theme = useTheme();\n return (\n <Card\n variant=\"outlined\"\n sx={{\n width: '100%',\n height: '100%',\n flexGrow: 1,\n border: '1px solid transparent',\n [theme.breakpoints.down('lg')]: {\n justifyContent: 'center',\n background: theme.palette.background.default,\n },\n }}\n >\n <CardContent>\n <Box\n component=\"div\"\n sx={{\n display: 'flex',\n gap: '.5rem',\n padding: '.5rem 0',\n [theme.breakpoints.down('lg')]: {\n justifyContent: 'center',\n },\n }}\n >\n <InsightsRoundedIcon color=\"primary\" />\n <Typography\n component=\"h2\"\n variant=\"subtitle2\"\n gutterBottom\n sx={{ fontWeight: '600' }}\n >\n Add new features\n </Typography>\n </Box>\n <Box\n sx={{\n [theme.breakpoints.down('lg')]: {\n textAlign: 'center',\n },\n }}\n >\n <LinkButton variant=\"contained\" to=\"/create\">\n {' '}\n <AddIcon /> Create\n </LinkButton>\n </Box>\n </CardContent>\n </Card>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AASA,SAAwB,eAAA,GAAkB;AACxC,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,UAAA;AAAA,MACR,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,MAAA;AAAA,QACP,MAAA,EAAQ,MAAA;AAAA,QACR,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ,uBAAA;AAAA,QACR,CAAC,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,GAAG;AAAA,UAC9B,cAAA,EAAgB,QAAA;AAAA,UAChB,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW;AAAA;AACvC,OACF;AAAA,MAEA,+BAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,KAAA;AAAA,YACV,EAAA,EAAI;AAAA,cACF,OAAA,EAAS,MAAA;AAAA,cACT,GAAA,EAAK,OAAA;AAAA,cACL,OAAA,EAAS,SAAA;AAAA,cACT,CAAC,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,GAAG;AAAA,gBAC9B,cAAA,EAAgB;AAAA;AAClB,aACF;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,OAAM,SAAA,EAAU,CAAA;AAAA,8BACrC,GAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,IAAA;AAAA,kBACV,OAAA,EAAQ,WAAA;AAAA,kBACR,YAAA,EAAY,IAAA;AAAA,kBACZ,EAAA,EAAI,EAAE,UAAA,EAAY,KAAA,EAAM;AAAA,kBACzB,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,SACF;AAAA,wBACA,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI;AAAA,cACF,CAAC,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,GAAG;AAAA,gBAC9B,SAAA,EAAW;AAAA;AACb,aACF;AAAA,YAEA,QAAA,kBAAA,IAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,WAAA,EAAY,IAAG,SAAA,EAChC,QAAA,EAAA;AAAA,cAAA,GAAA;AAAA,kCACA,OAAA,EAAA,EAAQ,CAAA;AAAA,cAAE;AAAA,aAAA,EACb;AAAA;AAAA;AACF,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"HighLightedCard.esm.js","sources":["../../../src/components/homeContent/HighLightedCard.tsx"],"sourcesContent":["import Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Typography from '@mui/material/Typography';\nimport AddIcon from '@mui/icons-material/Add';\nimport InsightsRoundedIcon from '@mui/icons-material/InsightsRounded';\nimport Box from '@mui/material/Box';\nimport { LinkButton } from '@backstage/core-components';\nimport { useTheme } from '@mui/material/styles';\nimport { useTranslation } from '../../hooks/useTranslation';\n\nexport default function HighlightedCard() {\n const theme = useTheme();\n const { t } = useTranslation();\n return (\n <Card\n variant=\"outlined\"\n sx={{\n width: '100%',\n height: '100%',\n flexGrow: 1,\n border: '1px solid transparent',\n [theme.breakpoints.down('lg')]: {\n justifyContent: 'center',\n background: theme.palette.background.default,\n },\n }}\n >\n <CardContent>\n <Box\n component=\"div\"\n sx={{\n display: 'flex',\n gap: '.5rem',\n padding: '.5rem 0',\n [theme.breakpoints.down('lg')]: {\n justifyContent: 'center',\n },\n }}\n >\n <InsightsRoundedIcon color=\"primary\" />\n <Typography\n component=\"h2\"\n variant=\"subtitle2\"\n gutterBottom\n sx={{ fontWeight: '600' }}\n >\n {t('highlightedCard.title')}\n </Typography>\n </Box>\n <Box\n sx={{\n [theme.breakpoints.down('lg')]: {\n textAlign: 'center',\n },\n }}\n >\n <LinkButton variant=\"contained\" to=\"/create\">\n {' '}\n <AddIcon /> {t('highlightedCard.createButton')}\n </LinkButton>\n </Box>\n </CardContent>\n </Card>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAUA,SAAwB,eAAA,GAAkB;AACxC,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,UAAA;AAAA,MACR,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,MAAA;AAAA,QACP,MAAA,EAAQ,MAAA;AAAA,QACR,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ,uBAAA;AAAA,QACR,CAAC,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,GAAG;AAAA,UAC9B,cAAA,EAAgB,QAAA;AAAA,UAChB,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW;AAAA;AACvC,OACF;AAAA,MAEA,+BAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,KAAA;AAAA,YACV,EAAA,EAAI;AAAA,cACF,OAAA,EAAS,MAAA;AAAA,cACT,GAAA,EAAK,OAAA;AAAA,cACL,OAAA,EAAS,SAAA;AAAA,cACT,CAAC,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,GAAG;AAAA,gBAC9B,cAAA,EAAgB;AAAA;AAClB,aACF;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,OAAM,SAAA,EAAU,CAAA;AAAA,8BACrC,GAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,IAAA;AAAA,kBACV,OAAA,EAAQ,WAAA;AAAA,kBACR,YAAA,EAAY,IAAA;AAAA,kBACZ,EAAA,EAAI,EAAE,UAAA,EAAY,KAAA,EAAM;AAAA,kBAEvB,YAAE,uBAAuB;AAAA;AAAA;AAC5B;AAAA;AAAA,SACF;AAAA,wBACA,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI;AAAA,cACF,CAAC,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,GAAG;AAAA,gBAC9B,SAAA,EAAW;AAAA;AACb,aACF;AAAA,YAEA,QAAA,kBAAA,IAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,WAAA,EAAY,IAAG,SAAA,EAChC,QAAA,EAAA;AAAA,cAAA,GAAA;AAAA,kCACA,OAAA,EAAA,EAAQ,CAAA;AAAA,cAAE,GAAA;AAAA,cAAE,EAAE,8BAA8B;AAAA,aAAA,EAC/C;AAAA;AAAA;AACF,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -12,27 +12,29 @@ import SupportLogo from '../../assets/Support.esm.js';
12
12
  import BackstageLogo from '../../assets/backstage.png';
13
13
  import VisitedCharts from './VisitedCharts.esm.js';
14
14
  import Summary from './Summary.esm.js';
15
+ import { useTranslation } from '../../hooks/useTranslation.esm.js';
15
16
 
16
17
  const HomeContent = () => {
18
+ const { t } = useTranslation();
17
19
  const tools = [
18
20
  {
19
21
  url: "https://docs.platform.vee.codes/",
20
- label: "Docs",
22
+ label: t("toolkit.docs"),
21
23
  icon: /* @__PURE__ */ jsx(DocsLogo, {})
22
24
  },
23
25
  {
24
26
  url: "https://github.com/orgs/veecode-platform/discussions",
25
- label: "Community",
27
+ label: t("toolkit.community"),
26
28
  icon: /* @__PURE__ */ jsx(Communitylogo, {})
27
29
  },
28
30
  {
29
31
  url: "https://platform.vee.codes/",
30
- label: "Website",
32
+ label: t("toolkit.website"),
31
33
  icon: /* @__PURE__ */ jsx(WebsiteLogo, {})
32
34
  },
33
35
  {
34
36
  url: "https://veecode-suporte.freshdesk.com/support/login",
35
- label: "Support",
37
+ label: t("toolkit.support"),
36
38
  icon: /* @__PURE__ */ jsx(SupportLogo, {})
37
39
  }
38
40
  ];
@@ -40,8 +42,8 @@ const HomeContent = () => {
40
42
  /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, children: [
41
43
  /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 6, lg: 8, children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, justifyContent: "center", children: [
42
44
  /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 12, lg: 12, children: /* @__PURE__ */ jsx(Summary, {}) }),
43
- /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 12, lg: 12, children: /* @__PURE__ */ jsx(HomePageRecentlyVisited, {}) }),
44
- /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 12, lg: 12, children: /* @__PURE__ */ jsx(HomePageStarredEntities, {}) })
45
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 12, lg: 12, children: /* @__PURE__ */ jsx(HomePageRecentlyVisited, { title: t("recentlyVisited.title") }) }),
46
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 12, lg: 12, children: /* @__PURE__ */ jsx(HomePageStarredEntities, { title: t("starredEntities.title") }) })
45
47
  ] }) }),
46
48
  /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 6, lg: 4, children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, justifyContent: "center", children: [
47
49
  /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 12, lg: 12, children: /* @__PURE__ */ jsx(VisitedCharts, {}) }),
@@ -66,7 +68,7 @@ const HomeContent = () => {
66
68
  fontSize: "1.2em",
67
69
  fontWeight: "bold"
68
70
  },
69
- children: "Powered by"
71
+ children: t("footer.poweredBy")
70
72
  }
71
73
  ),
72
74
  /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"HomeContent.esm.js","sources":["../../../src/components/homeContent/HomeContent.tsx"],"sourcesContent":["/* eslint-disable no-restricted-syntax */\nimport {\n HomePageStarredEntities,\n HomePageToolkit,\n HomePageRecentlyVisited,\n} from '@backstage/plugin-home';\nimport Grid from '@mui/material/Grid';\nimport { SearchContextProvider } from '@backstage/plugin-search-react';\nimport { Content } from '@backstage/core-components';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport Communitylogo from '../../assets/Community';\nimport DocsLogo from '../../assets/Docs';\nimport WebsiteLogo from '../../assets/Website';\nimport SupportLogo from '../../assets/Support';\nimport BackstageLogo from '../../assets/backstage.png';\nimport PieAnimation from './VisitedCharts';\nimport Summary from './Summary';\n\nexport const HomeContent = () => {\n const tools = [\n {\n url: 'https://docs.platform.vee.codes/',\n label: 'Docs',\n icon: <DocsLogo />,\n },\n {\n url: 'https://github.com/orgs/veecode-platform/discussions',\n label: 'Community',\n icon: <Communitylogo />,\n },\n {\n url: 'https://platform.vee.codes/',\n label: 'Website',\n icon: <WebsiteLogo />,\n },\n {\n url: 'https://veecode-suporte.freshdesk.com/support/login',\n label: 'Support',\n icon: <SupportLogo />,\n },\n ];\n\n return (\n <SearchContextProvider>\n <Content stretch>\n <Grid container spacing={2} justifyContent=\"center\">\n {/* Top & Recently Visited */}\n <Grid item xs={12}>\n <Grid container spacing={2}>\n <Grid item xs={12} md={6} lg={8}>\n <Grid container spacing={2} justifyContent=\"center\">\n <Grid item xs={12} md={12} lg={12}>\n <Summary />\n </Grid>\n <Grid item xs={12} md={12} lg={12}>\n <HomePageRecentlyVisited />\n </Grid>\n <Grid item xs={12} md={12} lg={12}>\n <HomePageStarredEntities />\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs={12} md={6} lg={4}>\n <Grid container spacing={2} justifyContent=\"center\">\n <Grid item xs={12} md={12} lg={12}>\n <PieAnimation />\n </Grid>\n <Grid item xs={12} md={12} lg={12}>\n <HomePageToolkit tools={tools} />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n {/* Footer */}\n <Grid item xs={12} sx={{ marginTop: '7rem' }}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '1.3em',\n gap: '10px',\n }}\n >\n <Typography\n sx={{\n fontSize: '1.2em',\n fontWeight: 'bold',\n }}\n >\n Powered by\n </Typography>\n <img\n src={BackstageLogo}\n alt=\"backstage logo\"\n style={{ width: '7.5em', height: '1.5em' }}\n />\n </Box>\n </Grid>\n </Grid>\n </Content>\n </SearchContextProvider>\n );\n};\n"],"names":["PieAnimation"],"mappings":"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"}
1
+ {"version":3,"file":"HomeContent.esm.js","sources":["../../../src/components/homeContent/HomeContent.tsx"],"sourcesContent":["/* eslint-disable no-restricted-syntax */\nimport {\n HomePageStarredEntities,\n HomePageToolkit,\n HomePageRecentlyVisited,\n} from '@backstage/plugin-home';\nimport Grid from '@mui/material/Grid';\nimport { SearchContextProvider } from '@backstage/plugin-search-react';\nimport { Content } from '@backstage/core-components';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport Communitylogo from '../../assets/Community';\nimport DocsLogo from '../../assets/Docs';\nimport WebsiteLogo from '../../assets/Website';\nimport SupportLogo from '../../assets/Support';\nimport BackstageLogo from '../../assets/backstage.png';\nimport PieAnimation from './VisitedCharts';\nimport Summary from './Summary';\nimport { useTranslation } from '../../hooks/useTranslation';\n\nexport const HomeContent = () => {\n const { t } = useTranslation();\n \n const tools = [\n {\n url: 'https://docs.platform.vee.codes/',\n label: t('toolkit.docs'),\n icon: <DocsLogo />,\n },\n {\n url: 'https://github.com/orgs/veecode-platform/discussions',\n label: t('toolkit.community'),\n icon: <Communitylogo />,\n },\n {\n url: 'https://platform.vee.codes/',\n label: t('toolkit.website'),\n icon: <WebsiteLogo />,\n },\n {\n url: 'https://veecode-suporte.freshdesk.com/support/login',\n label: t('toolkit.support'),\n icon: <SupportLogo />,\n },\n ];\n\n return (\n <SearchContextProvider>\n <Content stretch>\n <Grid container spacing={2} justifyContent=\"center\">\n {/* Top & Recently Visited */}\n <Grid item xs={12}>\n <Grid container spacing={2}>\n <Grid item xs={12} md={6} lg={8}>\n <Grid container spacing={2} justifyContent=\"center\">\n <Grid item xs={12} md={12} lg={12}>\n <Summary />\n </Grid>\n <Grid item xs={12} md={12} lg={12}>\n <HomePageRecentlyVisited title={t('recentlyVisited.title')} />\n </Grid>\n <Grid item xs={12} md={12} lg={12}>\n <HomePageStarredEntities title={t('starredEntities.title')} />\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs={12} md={6} lg={4}>\n <Grid container spacing={2} justifyContent=\"center\">\n <Grid item xs={12} md={12} lg={12}>\n <PieAnimation />\n </Grid>\n <Grid item xs={12} md={12} lg={12}>\n <HomePageToolkit tools={tools} />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n {/* Footer */}\n <Grid item xs={12} sx={{ marginTop: '7rem' }}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '1.3em',\n gap: '10px',\n }}\n >\n <Typography\n sx={{\n fontSize: '1.2em',\n fontWeight: 'bold',\n }}\n >\n {t('footer.poweredBy')}\n </Typography>\n <img\n src={BackstageLogo}\n alt=\"backstage logo\"\n style={{ width: '7.5em', height: '1.5em' }}\n />\n </Box>\n </Grid>\n </Grid>\n </Content>\n </SearchContextProvider>\n );\n};\n"],"names":["PieAnimation"],"mappings":"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"}
@@ -12,26 +12,28 @@ import ExtensionIcon from '@mui/icons-material/Extension';
12
12
  import { useTheme } from '@mui/material/styles';
13
13
  import { useApi, configApiRef } from '@backstage/core-plugin-api';
14
14
  import { generateColorVariants } from '../../utils/generateColor.esm.js';
15
+ import { useTranslation } from '../../hooks/useTranslation.esm.js';
15
16
 
16
17
  function Summary() {
17
18
  const { resources, apis, components } = useCatalog();
19
+ const { t } = useTranslation();
18
20
  const theme = useTheme();
19
21
  const isDarkMode = theme.palette.mode === "dark";
20
22
  const configApi = useApi(configApiRef);
21
23
  const data = [
22
24
  {
23
25
  icon: AutoAwesomeMotionIcon,
24
- title: "Resources",
26
+ title: t("summary.resources"),
25
27
  value: resources.length.toString()
26
28
  },
27
29
  {
28
30
  icon: FolderCopyIcon,
29
- title: "Components",
31
+ title: t("summary.components"),
30
32
  value: components.length.toString()
31
33
  },
32
34
  {
33
35
  icon: ExtensionIcon,
34
- title: "APIs",
36
+ title: t("summary.apis"),
35
37
  value: apis.length.toString()
36
38
  }
37
39
  ];
@@ -53,7 +55,7 @@ function Summary() {
53
55
  overfloyY: "auto"
54
56
  },
55
57
  children: [
56
- /* @__PURE__ */ jsx(CardHeader, { title: "Summary" }),
58
+ /* @__PURE__ */ jsx(CardHeader, { title: t("summary.title") }),
57
59
  /* @__PURE__ */ jsx(Divider, {}),
58
60
  /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(
59
61
  Box,
@@ -1 +1 @@
1
- {"version":3,"file":"Summary.esm.js","sources":["../../../src/components/homeContent/Summary.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-syntax\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Box from '@mui/material/Box';\nimport { CardHeader, Divider } from '@mui/material';\nimport StatCard from './StatCards';\nimport HighlightedCard from './HighLightedCard';\nimport { useCatalog } from '../../hooks/useCatalog';\nimport AutoAwesomeMotionIcon from '@mui/icons-material/AutoAwesomeMotion';\nimport FolderCopyIcon from '@mui/icons-material/FolderCopy';\nimport ExtensionIcon from '@mui/icons-material/Extension';\nimport { useTheme } from '@mui/material/styles';\nimport { configApiRef, useApi } from '@backstage/core-plugin-api';\nimport { generateColorVariants } from '../../utils/generateColor';\n\nexport default function Summary() {\n const { resources, apis, components } = useCatalog();\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n const configApi = useApi(configApiRef);\n\n const data = [\n {\n icon: AutoAwesomeMotionIcon,\n title: 'Resources',\n value: resources.length.toString(),\n },\n {\n icon: FolderCopyIcon,\n title: 'Components',\n value: components.length.toString(),\n },\n {\n icon: ExtensionIcon,\n title: 'APIs',\n value: apis.length.toString(),\n },\n ];\n\n const color =\n (isDarkMode\n ? configApi.app?.branding?.theme?.dark?.headerColor1\n : // ? configApi.getOptionalString('app.branding.theme.dark.headerColo1')\n // : configApi.getOptionalString('app.branding.theme.light.headerColo1')) ??\n configApi.app?.branding?.theme?.light?.headerColor1) ?? '#45556D';\n const colors = generateColorVariants(color, data.length);\n\n return (\n <Card\n variant=\"outlined\"\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n flexGrow: 1,\n overfloyY: 'auto',\n }}\n >\n <CardHeader title=\"Summary\" />\n <Divider />\n <CardContent>\n <Box\n sx={{\n display: 'grid',\n alignItems: 'center',\n gap: '1rem',\n gridTemplateColumns: 'repeat(4,1fr)',\n [theme.breakpoints.down('lg')]: {\n gridTemplateColumns: '1fr',\n },\n }}\n >\n {data.map((card, index) => (\n <StatCard key={index} {...card} color={colors[index]} />\n ))}\n <HighlightedCard />\n </Box>\n </CardContent>\n </Card>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAeA,SAAwB,OAAA,GAAU;AAChC,EAAA,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,UAAA,KAAe,UAAA,EAAW;AACnD,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,MAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,OAAO,YAAY,CAAA;AAErC,EAAA,MAAM,IAAA,GAAO;AAAA,IACX;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,KAAA,EAAO,WAAA;AAAA,MACP,KAAA,EAAO,SAAA,CAAU,MAAA,CAAO,QAAA;AAAS,KACnC;AAAA,IACA;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO,YAAA;AAAA,MACP,KAAA,EAAO,UAAA,CAAW,MAAA,CAAO,QAAA;AAAS,KACpC;AAAA,IACA;AAAA,MACE,IAAA,EAAM,aAAA;AAAA,MACN,KAAA,EAAO,MAAA;AAAA,MACP,KAAA,EAAO,IAAA,CAAK,MAAA,CAAO,QAAA;AAAS;AAC9B,GACF;AAEA,EAAA,MAAM,SACH,UAAA,GACG,SAAA,CAAU,GAAA,EAAK,QAAA,EAAU,OAAO,IAAA,EAAM,YAAA;AAAA;AAAA;AAAA,IAGtC,SAAA,CAAU,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,KAAA,EAAO;AAAA,GAAA,KAAiB,SAAA;AAC9D,EAAA,MAAM,MAAA,GAAS,qBAAA,CAAsB,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA;AAEvD,EAAA,uBACE,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,UAAA;AAAA,MACR,EAAA,EAAI;AAAA,QACF,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,GAAA,EAAK,KAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACV,SAAA,EAAW;AAAA,OACb;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAM,SAAA,EAAU,CAAA;AAAA,4BAC3B,OAAA,EAAA,EAAQ,CAAA;AAAA,4BACR,WAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI;AAAA,cACF,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK,MAAA;AAAA,cACL,mBAAA,EAAqB,eAAA;AAAA,cACrB,CAAC,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,GAAG;AAAA,gBAC9B,mBAAA,EAAqB;AAAA;AACvB,aACF;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACf,GAAA,CAAC,QAAA,EAAA,EAAsB,GAAG,IAAA,EAAM,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA,EAAA,EAApC,KAAuC,CACvD,CAAA;AAAA,kCACA,eAAA,EAAA,EAAgB;AAAA;AAAA;AAAA,SACnB,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"Summary.esm.js","sources":["../../../src/components/homeContent/Summary.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-syntax\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Box from '@mui/material/Box';\nimport { CardHeader, Divider } from '@mui/material';\nimport StatCard from './StatCards';\nimport HighlightedCard from './HighLightedCard';\nimport { useCatalog } from '../../hooks/useCatalog';\nimport AutoAwesomeMotionIcon from '@mui/icons-material/AutoAwesomeMotion';\nimport FolderCopyIcon from '@mui/icons-material/FolderCopy';\nimport ExtensionIcon from '@mui/icons-material/Extension';\nimport { useTheme } from '@mui/material/styles';\nimport { configApiRef, useApi } from '@backstage/core-plugin-api';\nimport { generateColorVariants } from '../../utils/generateColor';\nimport { useTranslation } from '../../hooks/useTranslation';\n\nexport default function Summary() {\n const { resources, apis, components } = useCatalog();\n const { t } = useTranslation();\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n const configApi = useApi(configApiRef);\n\n const data = [\n {\n icon: AutoAwesomeMotionIcon,\n title: t('summary.resources'),\n value: resources.length.toString(),\n },\n {\n icon: FolderCopyIcon,\n title: t('summary.components'),\n value: components.length.toString(),\n },\n {\n icon: ExtensionIcon,\n title: t('summary.apis'),\n value: apis.length.toString(),\n },\n ];\n\n const color =\n (isDarkMode\n ? configApi.app?.branding?.theme?.dark?.headerColor1\n : // ? configApi.getOptionalString('app.branding.theme.dark.headerColo1')\n // : configApi.getOptionalString('app.branding.theme.light.headerColo1')) ??\n configApi.app?.branding?.theme?.light?.headerColor1) ?? '#45556D';\n const colors = generateColorVariants(color, data.length);\n\n return (\n <Card\n variant=\"outlined\"\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n flexGrow: 1,\n overfloyY: 'auto',\n }}\n >\n <CardHeader title={t('summary.title')} />\n <Divider />\n <CardContent>\n <Box\n sx={{\n display: 'grid',\n alignItems: 'center',\n gap: '1rem',\n gridTemplateColumns: 'repeat(4,1fr)',\n [theme.breakpoints.down('lg')]: {\n gridTemplateColumns: '1fr',\n },\n }}\n >\n {data.map((card, index) => (\n <StatCard key={index} {...card} color={colors[index]} />\n ))}\n <HighlightedCard />\n </Box>\n </CardContent>\n </Card>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBA,SAAwB,OAAA,GAAU;AAChC,EAAA,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,UAAA,KAAe,UAAA,EAAW;AACnD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,MAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,OAAO,YAAY,CAAA;AAErC,EAAA,MAAM,IAAA,GAAO;AAAA,IACX;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,MAC5B,KAAA,EAAO,SAAA,CAAU,MAAA,CAAO,QAAA;AAAS,KACnC;AAAA,IACA;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO,EAAE,oBAAoB,CAAA;AAAA,MAC7B,KAAA,EAAO,UAAA,CAAW,MAAA,CAAO,QAAA;AAAS,KACpC;AAAA,IACA;AAAA,MACE,IAAA,EAAM,aAAA;AAAA,MACN,KAAA,EAAO,EAAE,cAAc,CAAA;AAAA,MACvB,KAAA,EAAO,IAAA,CAAK,MAAA,CAAO,QAAA;AAAS;AAC9B,GACF;AAEA,EAAA,MAAM,SACH,UAAA,GACG,SAAA,CAAU,GAAA,EAAK,QAAA,EAAU,OAAO,IAAA,EAAM,YAAA;AAAA;AAAA;AAAA,IAGtC,SAAA,CAAU,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,KAAA,EAAO;AAAA,GAAA,KAAiB,SAAA;AAC9D,EAAA,MAAM,MAAA,GAAS,qBAAA,CAAsB,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA;AAEvD,EAAA,uBACE,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,UAAA;AAAA,MACR,EAAA,EAAI;AAAA,QACF,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,GAAA,EAAK,KAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACV,SAAA,EAAW;AAAA,OACb;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,CAAA,CAAE,eAAe,CAAA,EAAG,CAAA;AAAA,4BACtC,OAAA,EAAA,EAAQ,CAAA;AAAA,4BACR,WAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI;AAAA,cACF,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK,MAAA;AAAA,cACL,mBAAA,EAAqB,eAAA;AAAA,cACrB,CAAC,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,GAAG;AAAA,gBAC9B,mBAAA,EAAqB;AAAA;AACvB,aACF;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACf,GAAA,CAAC,QAAA,EAAA,EAAsB,GAAG,IAAA,EAAM,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA,EAAA,EAApC,KAAuC,CACvD,CAAA;AAAA,kCACA,eAAA,EAAA,EAAgB;AAAA;AAAA;AAAA,SACnB,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -14,6 +14,7 @@ import { useApi, configApiRef } from '@backstage/core-plugin-api';
14
14
  import { useVisited } from '../../hooks/useVisited.esm.js';
15
15
  import { generateColorVariants } from '../../utils/generateColor.esm.js';
16
16
  import TurnedInNotIcon from '@mui/icons-material/TurnedInNot';
17
+ import { useTranslation } from '../../hooks/useTranslation.esm.js';
17
18
 
18
19
  const StyledText = styled("text", {
19
20
  shouldForwardProp: (prop) => prop !== "variant"
@@ -63,6 +64,7 @@ function PieCenterLabel({ primaryText, secondaryText }) {
63
64
  }
64
65
  function VisitedCharts() {
65
66
  const { total, items, visits } = useVisited();
67
+ const { t } = useTranslation();
66
68
  const theme = useTheme();
67
69
  const isDarkMode = theme.palette.mode === "dark";
68
70
  const configApi = useApi(configApiRef);
@@ -89,7 +91,7 @@ function VisitedCharts() {
89
91
  overfloyY: "auto"
90
92
  },
91
93
  children: [
92
- /* @__PURE__ */ jsx(CardHeader, { title: "Top Visited" }),
94
+ /* @__PURE__ */ jsx(CardHeader, { title: t("visitedCharts.title") }),
93
95
  /* @__PURE__ */ jsx(Divider, {}),
94
96
  /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(Box, { sx: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ jsx(
95
97
  PieChart,
@@ -113,7 +115,7 @@ function VisitedCharts() {
113
115
  height: 260,
114
116
  width: 260,
115
117
  hideLegend: true,
116
- children: /* @__PURE__ */ jsx(PieCenterLabel, { primaryText: `${total}`, secondaryText: "Total" })
118
+ children: /* @__PURE__ */ jsx(PieCenterLabel, { primaryText: `${total}`, secondaryText: t("visitedCharts.total") })
117
119
  }
118
120
  ) }) }),
119
121
  /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"VisitedCharts.esm.js","sources":["../../../src/components/homeContent/VisitedCharts.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-syntax\nimport * as React from 'react';\nimport { PieChart } from '@mui/x-charts/PieChart';\nimport { useDrawingArea } from '@mui/x-charts/hooks';\nimport { styled, useTheme } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport { CardHeader, Divider } from '@mui/material';\nimport { useApi, configApiRef } from '@backstage/core-plugin-api';\nimport { useVisited } from '../../hooks/useVisited';\nimport { generateColorVariants } from '../../utils/generateColor';\nimport TurnedInNotIcon from '@mui/icons-material/TurnedInNot';\n\ninterface StyledTextProps {\n variant: 'primary' | 'secondary';\n}\n\nconst StyledText = styled('text', {\n shouldForwardProp: prop => prop !== 'variant',\n})<StyledTextProps>(({ theme }) => ({\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fill: theme.palette.text.secondary,\n variants: [\n {\n props: {\n variant: 'primary',\n },\n style: {\n fontSize: theme.typography.h5.fontSize,\n },\n },\n {\n props: ({ variant }) => variant !== 'primary',\n style: {\n fontSize: theme.typography.body2.fontSize,\n },\n },\n {\n props: {\n variant: 'primary',\n },\n style: {\n fontWeight: theme.typography.h5.fontWeight,\n },\n },\n {\n props: ({ variant }) => variant !== 'primary',\n style: {\n fontWeight: theme.typography.body2.fontWeight,\n },\n },\n ],\n}));\n\ninterface PieCenterLabelProps {\n primaryText: string;\n secondaryText: string;\n}\n\nfunction PieCenterLabel({ primaryText, secondaryText }: PieCenterLabelProps) {\n const { width, height, left, top } = useDrawingArea();\n const primaryY = top + height / 2 - 10;\n const secondaryY = primaryY + 24;\n\n return (\n <React.Fragment>\n <StyledText variant=\"primary\" x={left + width / 2} y={primaryY}>\n {primaryText}\n </StyledText>\n <StyledText variant=\"secondary\" x={left + width / 2} y={secondaryY}>\n {secondaryText}\n </StyledText>\n </React.Fragment>\n );\n}\n\nexport default function VisitedCharts() {\n const { total, items, visits } = useVisited();\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n const configApi = useApi(configApiRef);\n const color =\n (isDarkMode\n ? configApi.app?.branding?.theme?.dark?.headerColor1\n : // ? configApi.getOptionalString('app.branding.theme.dark.headerColo1')\n // : configApi.getOptionalString('app.branding.theme.light.headerColo1')) ??\n configApi.app?.branding?.theme?.light?.headerColor1) ?? '#45556D';\n const colors = generateColorVariants(color, items.length);\n const calculatePercent = (value: number) => {\n const percent = value / (total / 100);\n return Number(percent.toFixed(2));\n };\n\n return (\n <Card\n variant=\"outlined\"\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n flexGrow: 1,\n maxHeight: '900px',\n overfloyY: 'auto',\n }}\n >\n <CardHeader title=\"Top Visited\" />\n <Divider />\n <CardContent>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <PieChart\n colors={colors}\n margin={{\n left: 80,\n right: 80,\n top: 80,\n bottom: 80,\n }}\n series={[\n {\n data: items,\n innerRadius: 75,\n outerRadius: 100,\n paddingAngle: 0,\n highlightScope: { fade: 'global', highlight: 'item' },\n },\n ]}\n height={260}\n width={260}\n hideLegend\n >\n <PieCenterLabel primaryText={`${total}`} secondaryText=\"Total\" />\n </PieChart>\n </Box>\n </CardContent>\n <Box\n sx={{ padding: '2rem', background: theme.palette.background.default }}\n >\n {visits.map(visit => (\n <Stack\n key={visit.id}\n direction=\"row\"\n sx={{ alignItems: 'center', gap: 2, pb: 2 }}\n >\n <TurnedInNotIcon />\n <Stack sx={{ gap: 1, flexGrow: 1 }}>\n <Stack\n direction=\"row\"\n sx={{\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: 2,\n }}\n >\n <Typography variant=\"body2\" sx={{ fontWeight: '500' }}>\n {visit.name}\n </Typography>\n <Typography variant=\"body2\" sx={{ color: 'text.secondary' }}>\n {calculatePercent(visit.hits)}%\n </Typography>\n </Stack>\n <LinearProgress\n variant=\"determinate\"\n aria-label=\"Number of users by country\"\n value={calculatePercent(visit.hits)}\n />\n </Stack>\n </Stack>\n ))}\n </Box>\n </Card>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VisitedCharts.esm.js","sources":["../../../src/components/homeContent/VisitedCharts.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-syntax\nimport * as React from 'react';\nimport { PieChart } from '@mui/x-charts/PieChart';\nimport { useDrawingArea } from '@mui/x-charts/hooks';\nimport { styled, useTheme } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport { CardHeader, Divider } from '@mui/material';\nimport { useApi, configApiRef } from '@backstage/core-plugin-api';\nimport { useVisited } from '../../hooks/useVisited';\nimport { generateColorVariants } from '../../utils/generateColor';\nimport TurnedInNotIcon from '@mui/icons-material/TurnedInNot';\nimport { useTranslation } from '../../hooks/useTranslation';\n\ninterface StyledTextProps {\n variant: 'primary' | 'secondary';\n}\n\nconst StyledText = styled('text', {\n shouldForwardProp: prop => prop !== 'variant',\n})<StyledTextProps>(({ theme }) => ({\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fill: theme.palette.text.secondary,\n variants: [\n {\n props: {\n variant: 'primary',\n },\n style: {\n fontSize: theme.typography.h5.fontSize,\n },\n },\n {\n props: ({ variant }) => variant !== 'primary',\n style: {\n fontSize: theme.typography.body2.fontSize,\n },\n },\n {\n props: {\n variant: 'primary',\n },\n style: {\n fontWeight: theme.typography.h5.fontWeight,\n },\n },\n {\n props: ({ variant }) => variant !== 'primary',\n style: {\n fontWeight: theme.typography.body2.fontWeight,\n },\n },\n ],\n}));\n\ninterface PieCenterLabelProps {\n primaryText: string;\n secondaryText: string;\n}\n\nfunction PieCenterLabel({ primaryText, secondaryText }: PieCenterLabelProps) {\n const { width, height, left, top } = useDrawingArea();\n const primaryY = top + height / 2 - 10;\n const secondaryY = primaryY + 24;\n\n return (\n <React.Fragment>\n <StyledText variant=\"primary\" x={left + width / 2} y={primaryY}>\n {primaryText}\n </StyledText>\n <StyledText variant=\"secondary\" x={left + width / 2} y={secondaryY}>\n {secondaryText}\n </StyledText>\n </React.Fragment>\n );\n}\n\nexport default function VisitedCharts() {\n const { total, items, visits } = useVisited();\n const { t } = useTranslation();\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n const configApi = useApi(configApiRef);\n const color =\n (isDarkMode\n ? configApi.app?.branding?.theme?.dark?.headerColor1\n : // ? configApi.getOptionalString('app.branding.theme.dark.headerColo1')\n // : configApi.getOptionalString('app.branding.theme.light.headerColo1')) ??\n configApi.app?.branding?.theme?.light?.headerColor1) ?? '#45556D';\n const colors = generateColorVariants(color, items.length);\n const calculatePercent = (value: number) => {\n const percent = value / (total / 100);\n return Number(percent.toFixed(2));\n };\n\n return (\n <Card\n variant=\"outlined\"\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n flexGrow: 1,\n maxHeight: '900px',\n overfloyY: 'auto',\n }}\n >\n <CardHeader title={t('visitedCharts.title')} />\n <Divider />\n <CardContent>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <PieChart\n colors={colors}\n margin={{\n left: 80,\n right: 80,\n top: 80,\n bottom: 80,\n }}\n series={[\n {\n data: items,\n innerRadius: 75,\n outerRadius: 100,\n paddingAngle: 0,\n highlightScope: { fade: 'global', highlight: 'item' },\n },\n ]}\n height={260}\n width={260}\n hideLegend\n >\n <PieCenterLabel primaryText={`${total}`} secondaryText={t('visitedCharts.total')} />\n </PieChart>\n </Box>\n </CardContent>\n <Box\n sx={{ padding: '2rem', background: theme.palette.background.default }}\n >\n {visits.map(visit => (\n <Stack\n key={visit.id}\n direction=\"row\"\n sx={{ alignItems: 'center', gap: 2, pb: 2 }}\n >\n <TurnedInNotIcon />\n <Stack sx={{ gap: 1, flexGrow: 1 }}>\n <Stack\n direction=\"row\"\n sx={{\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: 2,\n }}\n >\n <Typography variant=\"body2\" sx={{ fontWeight: '500' }}>\n {visit.name}\n </Typography>\n <Typography variant=\"body2\" sx={{ color: 'text.secondary' }}>\n {calculatePercent(visit.hits)}%\n </Typography>\n </Stack>\n <LinearProgress\n variant=\"determinate\"\n aria-label=\"Number of users by country\"\n value={calculatePercent(visit.hits)}\n />\n </Stack>\n </Stack>\n ))}\n </Box>\n </Card>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -8,10 +8,12 @@ import { useUserProfile } from '@backstage/plugin-user-settings';
8
8
  import Skeleton from '@mui/material/Skeleton';
9
9
  import { useState, useEffect } from 'react';
10
10
  import WavesImg from '../../assets/waves.svg';
11
+ import { useTranslation } from '../../hooks/useTranslation.esm.js';
11
12
 
12
13
  const HomeGreeting = () => {
13
14
  const [loading, setLoading] = useState(false);
14
15
  const { displayName } = useUserProfile();
16
+ const { t } = useTranslation();
15
17
  const theme = useTheme();
16
18
  const isDarkMode = theme.palette.mode === "dark";
17
19
  const configApi = useApi(configApiRef);
@@ -83,7 +85,7 @@ const HomeGreeting = () => {
83
85
  },
84
86
  children: [
85
87
  /* @__PURE__ */ jsxs(Typography, { variant: "h3", color: "#FAFAFA", children: [
86
- "Welcome back",
88
+ t("greeting.welcome"),
87
89
  loading ? /* @__PURE__ */ jsx(
88
90
  Skeleton,
89
91
  {
@@ -99,7 +101,7 @@ const HomeGreeting = () => {
99
101
  ] }),
100
102
  " "
101
103
  ] }),
102
- /* @__PURE__ */ jsx(Typography, { variant: "h6", color: "#FAFAFA", children: "Let's get started." })
104
+ /* @__PURE__ */ jsx(Typography, { variant: "h6", color: "#FAFAFA", children: t("greeting.subtitle") })
103
105
  ]
104
106
  }
105
107
  )
@@ -1 +1 @@
1
- {"version":3,"file":"HomeGretting.esm.js","sources":["../../../src/components/homeGretting/HomeGretting.tsx"],"sourcesContent":["import Box from '@mui/material/Box';\nimport { useTheme } from '@mui/material/styles';\nimport { UserAvatar } from '../userAvatar/UserAvatar';\nimport Typography from '@mui/material/Typography';\nimport { useApi, configApiRef } from '@backstage/core-plugin-api';\nimport { useUserProfile } from '@backstage/plugin-user-settings';\nimport Skeleton from '@mui/material/Skeleton';\nimport { useEffect, useState } from 'react';\nimport WavesImg from '../../assets/waves.svg';\n\nexport const HomeGreeting = () => {\n const [loading, setLoading] = useState<boolean>(false);\n const { displayName } = useUserProfile();\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n const configApi = useApi(configApiRef);\n const color1 =\n (isDarkMode\n ? configApi.app?.branding?.theme?.dark?.headerColor1\n : // ? configApi.getOptionalString('app.branding.theme.dark.headerColo1')\n // : configApi.getOptionalString('app.branding.theme.light.headerColo1')) ??\n configApi.app?.branding?.theme?.light?.headerColor1) ?? '#45556D';\n const color2 =\n (isDarkMode\n ? configApi.app?.branding?.theme?.dark?.headerColor2\n : // ? configApi.getOptionalString('app.branding.theme.dark.headerColo2')\n // : configApi.getOptionalString('app.branding.theme.light.headerColo2')) ??\n configApi.app?.branding?.theme?.light?.headerColor2) ?? '#86F4CE';\n\n const profileDisplayName = () => {\n const name = displayName;\n const regex = /^[^:/]+:[^/]+\\/[^/]+$/;\n if (regex.test(name)) {\n return name\n .charAt(name.indexOf('/') + 1)\n .toLocaleUpperCase('en-US')\n .concat(name.substring(name.indexOf('/') + 2));\n }\n return name;\n };\n\n useEffect(() => {\n setLoading(true);\n setTimeout(() => setLoading(false), 1000);\n }, []);\n\n return (\n <Box\n sx={{\n background: `linear-gradient(90deg, ${color1} 0%, ${color2} 100%)`,\n width: '100%',\n minHeight: '210px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n overflow: 'hidden',\n [theme.breakpoints.only('xs')]: {\n height: '380px',\n padding: '1rem 0',\n },\n }}\n >\n <Box\n sx={{\n width: '90%',\n margin: 'auto',\n display: 'flex',\n alignItems: 'center',\n gap: '2rem',\n [theme.breakpoints.only('xs')]: {\n flexDirection: 'column',\n padding: '1rem 0',\n },\n }}\n >\n <Box>\n <UserAvatar width=\"120px\" height=\"120px\" />\n </Box>\n <Box\n sx={{\n [theme.breakpoints.only('xs')]: {\n textAlign: 'center',\n color: theme.palette.grey[100],\n maxWidth: '70vw',\n },\n }}\n >\n <Typography variant=\"h3\" color=\"#FAFAFA\">\n Welcome back\n {loading ? (\n <Skeleton\n variant=\"rectangular\"\n width={150}\n height={80}\n style={{ display: 'inline' }}\n />\n ) : (\n <>, {profileDisplayName()} 👋</>\n )}{' '}\n </Typography>\n <Typography variant=\"h6\" color=\"#FAFAFA\">\n Let's get started.\n </Typography>\n </Box>\n </Box>\n <img\n src={WavesImg}\n alt=\"\"\n style={{\n width: '100%',\n height: '250px',\n objectFit: 'cover',\n position: 'absolute',\n top: '-20%',\n left: '0',\n opacity: '0.7',\n }}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HomeGretting.esm.js","sources":["../../../src/components/homeGretting/HomeGretting.tsx"],"sourcesContent":["import Box from '@mui/material/Box';\nimport { useTheme } from '@mui/material/styles';\nimport { UserAvatar } from '../userAvatar/UserAvatar';\nimport Typography from '@mui/material/Typography';\nimport { useApi, configApiRef } from '@backstage/core-plugin-api';\nimport { useUserProfile } from '@backstage/plugin-user-settings';\nimport Skeleton from '@mui/material/Skeleton';\nimport { useEffect, useState } from 'react';\nimport WavesImg from '../../assets/waves.svg';\nimport { useTranslation } from '../../hooks/useTranslation';\n\nexport const HomeGreeting = () => {\n const [loading, setLoading] = useState<boolean>(false);\n const { displayName } = useUserProfile();\n const { t } = useTranslation();\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n const configApi = useApi(configApiRef);\n const color1 =\n (isDarkMode\n ? configApi.app?.branding?.theme?.dark?.headerColor1\n : // ? configApi.getOptionalString('app.branding.theme.dark.headerColo1')\n // : configApi.getOptionalString('app.branding.theme.light.headerColo1')) ??\n configApi.app?.branding?.theme?.light?.headerColor1) ?? '#45556D';\n const color2 =\n (isDarkMode\n ? configApi.app?.branding?.theme?.dark?.headerColor2\n : // ? configApi.getOptionalString('app.branding.theme.dark.headerColo2')\n // : configApi.getOptionalString('app.branding.theme.light.headerColo2')) ??\n configApi.app?.branding?.theme?.light?.headerColor2) ?? '#86F4CE';\n\n const profileDisplayName = () => {\n const name = displayName;\n const regex = /^[^:/]+:[^/]+\\/[^/]+$/;\n if (regex.test(name)) {\n return name\n .charAt(name.indexOf('/') + 1)\n .toLocaleUpperCase('en-US')\n .concat(name.substring(name.indexOf('/') + 2));\n }\n return name;\n };\n\n useEffect(() => {\n setLoading(true);\n setTimeout(() => setLoading(false), 1000);\n }, []);\n\n return (\n <Box\n sx={{\n background: `linear-gradient(90deg, ${color1} 0%, ${color2} 100%)`,\n width: '100%',\n minHeight: '210px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n overflow: 'hidden',\n [theme.breakpoints.only('xs')]: {\n height: '380px',\n padding: '1rem 0',\n },\n }}\n >\n <Box\n sx={{\n width: '90%',\n margin: 'auto',\n display: 'flex',\n alignItems: 'center',\n gap: '2rem',\n [theme.breakpoints.only('xs')]: {\n flexDirection: 'column',\n padding: '1rem 0',\n },\n }}\n >\n <Box>\n <UserAvatar width=\"120px\" height=\"120px\" />\n </Box>\n <Box\n sx={{\n [theme.breakpoints.only('xs')]: {\n textAlign: 'center',\n color: theme.palette.grey[100],\n maxWidth: '70vw',\n },\n }}\n >\n <Typography variant=\"h3\" color=\"#FAFAFA\">\n {t('greeting.welcome')}\n {loading ? (\n <Skeleton\n variant=\"rectangular\"\n width={150}\n height={80}\n style={{ display: 'inline' }}\n />\n ) : (\n <>, {profileDisplayName()} 👋</>\n )}{' '}\n </Typography>\n <Typography variant=\"h6\" color=\"#FAFAFA\">\n {t('greeting.subtitle')}\n </Typography>\n </Box>\n </Box>\n <img\n src={WavesImg}\n alt=\"\"\n style={{\n width: '100%',\n height: '250px',\n objectFit: 'cover',\n position: 'absolute',\n top: '-20%',\n left: '0',\n opacity: '0.7',\n }}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
2
+ import '../translations/index.esm.js';
3
+ import { homepageTranslationRef } from '../translations/ref.esm.js';
4
+
5
+ const useTranslation = () => useTranslationRef(homepageTranslationRef);
6
+
7
+ export { useTranslation };
8
+ //# sourceMappingURL=useTranslation.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTranslation.esm.js","sources":["../../src/hooks/useTranslation.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n useTranslationRef,\n TranslationFunction,\n} from '@backstage/core-plugin-api/alpha';\n\nimport { homepageTranslationRef } from '../translations';\n\nexport const useTranslation = (): {\n t: TranslationFunction<typeof homepageTranslationRef.T>;\n} => useTranslationRef(homepageTranslationRef);\n"],"names":[],"mappings":";;;;AAuBO,MAAM,cAAA,GAAiB,MAEzB,iBAAA,CAAkB,sBAAsB;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,40 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
+ import * as _backstage_core_plugin_api_alpha from '@backstage/core-plugin-api/alpha';
3
4
 
4
- declare const veecodeHomepagePlugin: _backstage_core_plugin_api.BackstagePlugin<{
5
- root: _backstage_core_plugin_api.RouteRef<undefined>;
6
- }, {}, {}>;
5
+ /**
6
+ * Translation reference for the veecode-homepage plugin.
7
+ *
8
+ * @public
9
+ */
10
+ declare const homepageTranslationRef: _backstage_core_plugin_api_alpha.TranslationRef<"plugin.veecode-homepage", {
11
+ readonly "greeting.welcome": string;
12
+ readonly "greeting.subtitle": string;
13
+ readonly "summary.title": string;
14
+ readonly "summary.resources": string;
15
+ readonly "summary.components": string;
16
+ readonly "summary.apis": string;
17
+ readonly "highlightedCard.title": string;
18
+ readonly "highlightedCard.createButton": string;
19
+ readonly "toolkit.docs": string;
20
+ readonly "toolkit.community": string;
21
+ readonly "toolkit.website": string;
22
+ readonly "toolkit.support": string;
23
+ readonly "visitedCharts.title": string;
24
+ readonly "visitedCharts.total": string;
25
+ readonly "recentlyVisited.title": string;
26
+ readonly "starredEntities.title": string;
27
+ readonly "footer.poweredBy": string;
28
+ }>;
29
+
30
+ /**
31
+ * Translation resource for the veecode-homepage plugin, providing support for multiple languages.
32
+ *
33
+ * @public
34
+ */
35
+ declare const homepageTranslations: _backstage_core_plugin_api_alpha.TranslationResource<"plugin.veecode-homepage">;
36
+
37
+ declare const veecodeHomepagePlugin: _backstage_core_plugin_api.BackstagePlugin<{}, {}, {}>;
7
38
  declare const VeecodeHomepagePage: () => react_jsx_runtime.JSX.Element;
8
39
 
9
- export { VeecodeHomepagePage, veecodeHomepagePlugin };
40
+ export { VeecodeHomepagePage, homepageTranslationRef, homepageTranslations, veecodeHomepagePlugin };
package/dist/index.esm.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export { VeecodeHomepagePage, veecodeHomepagePlugin } from './plugin.esm.js';
2
+ export { homepageTranslations } from './translations/index.esm.js';
3
+ export { homepageTranslationRef } from './translations/ref.esm.js';
2
4
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,6 +1,8 @@
1
1
  import { createPlugin, createApiFactory, identityApiRef, storageApiRef, createRoutableExtension } from '@backstage/core-plugin-api';
2
2
  import { visitsApiRef, VisitsStorageApi } from '@backstage/plugin-home';
3
3
  import { rootRouteRef } from './routes.esm.js';
4
+ export { homepageTranslations } from './translations/index.esm.js';
5
+ import { homepageTranslationRef } from './translations/ref.esm.js';
4
6
 
5
7
  console.log("[veecode-homepage] Initializing plugin");
6
8
  const veecodeHomepagePlugin = createPlugin({
@@ -20,7 +22,11 @@ const veecodeHomepagePlugin = createPlugin({
20
22
  return VisitsStorageApi.create({ storageApi, identityApi });
21
23
  }
22
24
  })
23
- ]
25
+ ],
26
+ __experimentalTranslations: {
27
+ availableLanguages: ["en", "de", "es", "fr", "it", "pt"],
28
+ resources: [homepageTranslationRef]
29
+ }
24
30
  });
25
31
  const VeecodeHomepagePage = veecodeHomepagePlugin.provide(
26
32
  createRoutableExtension({
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["import {\n createApiFactory,\n // createComponentExtension,\n createPlugin,\n createRoutableExtension,\n identityApiRef,\n storageApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n // type StarredEntitiesProps,\n // type VisitedByTypeProps,\n // type FeaturedDocsCardProps,\n visitsApiRef,\n VisitsStorageApi,\n} from '@backstage/plugin-home';\n\nimport { rootRouteRef } from './routes';\n\nconsole.log('[veecode-homepage] Initializing plugin');\n\nexport const veecodeHomepagePlugin = createPlugin({\n id: 'veecode-homepage',\n routes: {\n root: rootRouteRef,\n },\n apis: [\n createApiFactory({\n api: visitsApiRef,\n deps: {\n storageApi: storageApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ storageApi, identityApi }) => {\n console.log('[veecode-homepage] Creating VisitsStorageApi');\n return VisitsStorageApi.create({ storageApi, identityApi });\n },\n }),\n ],\n});\n\nexport const VeecodeHomepagePage = veecodeHomepagePlugin.provide(\n createRoutableExtension({\n name: 'c',\n component: () => {\n console.log('[veecode-homepage] Loading VeeCodeHomePage component');\n return import('./components/VeeCodeHomePage').then(m => m.VeeCodeHomePage);\n },\n mountPoint: rootRouteRef,\n }),\n);\n"],"names":[],"mappings":";;;;AAkBA,OAAA,CAAQ,IAAI,wCAAwC,CAAA;AAE7C,MAAM,wBAAwB,YAAA,CAAa;AAAA,EAChD,EAAA,EAAI,kBAAA;AAAA,EACJ,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,gBAAA,CAAiB;AAAA,MACf,GAAA,EAAK,YAAA;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,UAAA,EAAY,aAAA;AAAA,QACZ,WAAA,EAAa;AAAA,OACf;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,UAAA,EAAY,aAAY,KAAM;AACxC,QAAA,OAAA,CAAQ,IAAI,8CAA8C,CAAA;AAC1D,QAAA,OAAO,gBAAA,CAAiB,MAAA,CAAO,EAAE,UAAA,EAAY,aAAa,CAAA;AAAA,MAC5D;AAAA,KACD;AAAA;AAEL,CAAC;AAEM,MAAM,sBAAsB,qBAAA,CAAsB,OAAA;AAAA,EACvD,uBAAA,CAAwB;AAAA,IACtB,IAAA,EAAM,GAAA;AAAA,IACN,WAAW,MAAM;AACf,MAAA,OAAA,CAAQ,IAAI,sDAAsD,CAAA;AAClE,MAAA,OAAO,OAAO,qCAA8B,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,eAAe,CAAA;AAAA,IAC3E,CAAA;AAAA,IACA,UAAA,EAAY;AAAA,GACb;AACH;;;;"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["import {\n createApiFactory,\n // createComponentExtension,\n createPlugin,\n createRoutableExtension,\n identityApiRef,\n storageApiRef,\n} from '@backstage/core-plugin-api';\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 { homepageTranslationRef } from './translations';\n\nconsole.log('[veecode-homepage] Initializing plugin');\n\nexport const veecodeHomepagePlugin = createPlugin({\n id: 'veecode-homepage',\n routes: {\n root: rootRouteRef,\n },\n apis: [\n createApiFactory({\n api: visitsApiRef,\n deps: {\n storageApi: storageApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ storageApi, identityApi }) => {\n console.log('[veecode-homepage] Creating VisitsStorageApi');\n return VisitsStorageApi.create({ storageApi, identityApi });\n },\n }),\n ],\n __experimentalTranslations: {\n availableLanguages: ['en', 'de', 'es', 'fr', 'it', 'pt'],\n resources: [homepageTranslationRef],\n },\n} as any);\n\nexport const VeecodeHomepagePage = veecodeHomepagePlugin.provide(\n createRoutableExtension({\n name: 'c',\n component: () => {\n console.log('[veecode-homepage] Loading VeeCodeHomePage component');\n return import('./components/VeeCodeHomePage').then(m => m.VeeCodeHomePage);\n },\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * Translation resource for the veecode-homepage plugin\n *\n * @public\n */\nexport { homepageTranslations } from './translations';\n"],"names":[],"mappings":";;;;;;AAmBA,OAAA,CAAQ,IAAI,wCAAwC,CAAA;AAE7C,MAAM,wBAAwB,YAAA,CAAa;AAAA,EAChD,EAAA,EAAI,kBAAA;AAAA,EACJ,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,gBAAA,CAAiB;AAAA,MACf,GAAA,EAAK,YAAA;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,UAAA,EAAY,aAAA;AAAA,QACZ,WAAA,EAAa;AAAA,OACf;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,UAAA,EAAY,aAAY,KAAM;AACxC,QAAA,OAAA,CAAQ,IAAI,8CAA8C,CAAA;AAC1D,QAAA,OAAO,gBAAA,CAAiB,MAAA,CAAO,EAAE,UAAA,EAAY,aAAa,CAAA;AAAA,MAC5D;AAAA,KACD;AAAA,GACH;AAAA,EACA,0BAAA,EAA4B;AAAA,IAC1B,oBAAoB,CAAC,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAAA,IACvD,SAAA,EAAW,CAAC,sBAAsB;AAAA;AAEtC,CAAQ;AAED,MAAM,sBAAsB,qBAAA,CAAsB,OAAA;AAAA,EACvD,uBAAA,CAAwB;AAAA,IACtB,IAAA,EAAM,GAAA;AAAA,IACN,WAAW,MAAM;AACf,MAAA,OAAA,CAAQ,IAAI,sDAAsD,CAAA;AAClE,MAAA,OAAO,OAAO,qCAA8B,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,eAAe,CAAA;AAAA,IAC3E,CAAA;AAAA,IACA,UAAA,EAAY;AAAA,GACb;AACH;;;;"}
@@ -0,0 +1,28 @@
1
+ import { createTranslationMessages } from '@backstage/core-plugin-api/alpha';
2
+ import { homepageTranslationRef } from './ref.esm.js';
3
+
4
+ const homepageTranslationDe = createTranslationMessages({
5
+ ref: homepageTranslationRef,
6
+ messages: {
7
+ "greeting.welcome": "Willkommen zur\xFCck",
8
+ "greeting.subtitle": "Lass uns anfangen.",
9
+ "summary.title": "Zusammenfassung",
10
+ "summary.resources": "Ressourcen",
11
+ "summary.components": "Komponenten",
12
+ "summary.apis": "APIs",
13
+ "highlightedCard.title": "Neue Funktionen hinzuf\xFCgen",
14
+ "highlightedCard.createButton": "Erstellen",
15
+ "toolkit.docs": "Dokumentation",
16
+ "toolkit.community": "Community",
17
+ "toolkit.website": "Webseite",
18
+ "toolkit.support": "Support",
19
+ "visitedCharts.title": "Meistbesuchte",
20
+ "visitedCharts.total": "Gesamt",
21
+ "recentlyVisited.title": "K\xFCrzlich besucht",
22
+ "starredEntities.title": "Ihre markierten Entit\xE4ten",
23
+ "footer.poweredBy": "Bereitgestellt von"
24
+ }
25
+ });
26
+
27
+ export { homepageTranslationDe as default };
28
+ //# sourceMappingURL=de.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de.esm.js","sources":["../../src/translations/de.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { homepageTranslationRef } from './ref';\n\nconst homepageTranslationDe = createTranslationMessages({\n ref: homepageTranslationRef,\n messages: {\n 'greeting.welcome': 'Willkommen zurück',\n 'greeting.subtitle': 'Lass uns anfangen.',\n 'summary.title': 'Zusammenfassung',\n 'summary.resources': 'Ressourcen',\n 'summary.components': 'Komponenten',\n 'summary.apis': 'APIs',\n 'highlightedCard.title': 'Neue Funktionen hinzufügen',\n 'highlightedCard.createButton': 'Erstellen',\n 'toolkit.docs': 'Dokumentation',\n 'toolkit.community': 'Community',\n 'toolkit.website': 'Webseite',\n 'toolkit.support': 'Support',\n 'visitedCharts.title': 'Meistbesuchte',\n 'visitedCharts.total': 'Gesamt',\n 'recentlyVisited.title': 'Kürzlich besucht',\n 'starredEntities.title': 'Ihre markierten Entitäten',\n 'footer.poweredBy': 'Bereitgestellt von',\n },\n});\n\nexport default homepageTranslationDe;\n"],"names":[],"mappings":";;;AAmBA,MAAM,wBAAwB,yBAAA,CAA0B;AAAA,EACtD,GAAA,EAAK,sBAAA;AAAA,EACL,QAAA,EAAU;AAAA,IACR,kBAAA,EAAoB,sBAAA;AAAA,IACpB,mBAAA,EAAqB,oBAAA;AAAA,IACrB,eAAA,EAAiB,iBAAA;AAAA,IACjB,mBAAA,EAAqB,YAAA;AAAA,IACrB,oBAAA,EAAsB,aAAA;AAAA,IACtB,cAAA,EAAgB,MAAA;AAAA,IAChB,uBAAA,EAAyB,+BAAA;AAAA,IACzB,8BAAA,EAAgC,WAAA;AAAA,IAChC,cAAA,EAAgB,eAAA;AAAA,IAChB,mBAAA,EAAqB,WAAA;AAAA,IACrB,iBAAA,EAAmB,UAAA;AAAA,IACnB,iBAAA,EAAmB,SAAA;AAAA,IACnB,qBAAA,EAAuB,eAAA;AAAA,IACvB,qBAAA,EAAuB,QAAA;AAAA,IACvB,uBAAA,EAAyB,qBAAA;AAAA,IACzB,uBAAA,EAAyB,8BAAA;AAAA,IACzB,kBAAA,EAAoB;AAAA;AAExB,CAAC;;;;"}
@@ -0,0 +1,28 @@
1
+ import { createTranslationMessages } from '@backstage/core-plugin-api/alpha';
2
+ import { homepageTranslationRef } from './ref.esm.js';
3
+
4
+ const homepageTranslationEs = createTranslationMessages({
5
+ ref: homepageTranslationRef,
6
+ messages: {
7
+ "greeting.welcome": "Bienvenido de nuevo",
8
+ "greeting.subtitle": "Empecemos.",
9
+ "summary.title": "Resumen",
10
+ "summary.resources": "Recursos",
11
+ "summary.components": "Componentes",
12
+ "summary.apis": "APIs",
13
+ "highlightedCard.title": "Agregar nuevas funciones",
14
+ "highlightedCard.createButton": "Crear",
15
+ "toolkit.docs": "Documentaci\xF3n",
16
+ "toolkit.community": "Comunidad",
17
+ "toolkit.website": "Sitio web",
18
+ "toolkit.support": "Soporte",
19
+ "visitedCharts.title": "M\xE1s visitados",
20
+ "visitedCharts.total": "Total",
21
+ "recentlyVisited.title": "Visitados recientemente",
22
+ "starredEntities.title": "Tus entidades favoritas",
23
+ "footer.poweredBy": "Desarrollado con"
24
+ }
25
+ });
26
+
27
+ export { homepageTranslationEs as default };
28
+ //# sourceMappingURL=es.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es.esm.js","sources":["../../src/translations/es.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { homepageTranslationRef } from './ref';\n\nconst homepageTranslationEs = createTranslationMessages({\n ref: homepageTranslationRef,\n messages: {\n 'greeting.welcome': 'Bienvenido de nuevo',\n 'greeting.subtitle': 'Empecemos.',\n 'summary.title': 'Resumen',\n 'summary.resources': 'Recursos',\n 'summary.components': 'Componentes',\n 'summary.apis': 'APIs',\n 'highlightedCard.title': 'Agregar nuevas funciones',\n 'highlightedCard.createButton': 'Crear',\n 'toolkit.docs': 'Documentación',\n 'toolkit.community': 'Comunidad',\n 'toolkit.website': 'Sitio web',\n 'toolkit.support': 'Soporte',\n 'visitedCharts.title': 'Más visitados',\n 'visitedCharts.total': 'Total',\n 'recentlyVisited.title': 'Visitados recientemente',\n 'starredEntities.title': 'Tus entidades favoritas',\n 'footer.poweredBy': 'Desarrollado con',\n },\n});\n\nexport default homepageTranslationEs;\n"],"names":[],"mappings":";;;AAmBA,MAAM,wBAAwB,yBAAA,CAA0B;AAAA,EACtD,GAAA,EAAK,sBAAA;AAAA,EACL,QAAA,EAAU;AAAA,IACR,kBAAA,EAAoB,qBAAA;AAAA,IACpB,mBAAA,EAAqB,YAAA;AAAA,IACrB,eAAA,EAAiB,SAAA;AAAA,IACjB,mBAAA,EAAqB,UAAA;AAAA,IACrB,oBAAA,EAAsB,aAAA;AAAA,IACtB,cAAA,EAAgB,MAAA;AAAA,IAChB,uBAAA,EAAyB,0BAAA;AAAA,IACzB,8BAAA,EAAgC,OAAA;AAAA,IAChC,cAAA,EAAgB,kBAAA;AAAA,IAChB,mBAAA,EAAqB,WAAA;AAAA,IACrB,iBAAA,EAAmB,WAAA;AAAA,IACnB,iBAAA,EAAmB,SAAA;AAAA,IACnB,qBAAA,EAAuB,kBAAA;AAAA,IACvB,qBAAA,EAAuB,OAAA;AAAA,IACvB,uBAAA,EAAyB,yBAAA;AAAA,IACzB,uBAAA,EAAyB,yBAAA;AAAA,IACzB,kBAAA,EAAoB;AAAA;AAExB,CAAC;;;;"}
@@ -0,0 +1,28 @@
1
+ import { createTranslationMessages } from '@backstage/core-plugin-api/alpha';
2
+ import { homepageTranslationRef } from './ref.esm.js';
3
+
4
+ const homepageTranslationFr = createTranslationMessages({
5
+ ref: homepageTranslationRef,
6
+ messages: {
7
+ "greeting.welcome": "Bon retour",
8
+ "greeting.subtitle": "Commen\xE7ons.",
9
+ "summary.title": "R\xE9sum\xE9",
10
+ "summary.resources": "Ressources",
11
+ "summary.components": "Composants",
12
+ "summary.apis": "APIs",
13
+ "highlightedCard.title": "Ajouter de nouvelles fonctionnalit\xE9s",
14
+ "highlightedCard.createButton": "Cr\xE9er",
15
+ "toolkit.docs": "Documentation",
16
+ "toolkit.community": "Communaut\xE9",
17
+ "toolkit.website": "Site web",
18
+ "toolkit.support": "Support",
19
+ "visitedCharts.title": "Les plus visit\xE9s",
20
+ "visitedCharts.total": "Total",
21
+ "recentlyVisited.title": "R\xE9cemment visit\xE9s",
22
+ "starredEntities.title": "Vos entit\xE9s favorites",
23
+ "footer.poweredBy": "Propuls\xE9 par"
24
+ }
25
+ });
26
+
27
+ export { homepageTranslationFr as default };
28
+ //# sourceMappingURL=fr.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fr.esm.js","sources":["../../src/translations/fr.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { homepageTranslationRef } from './ref';\n\nconst homepageTranslationFr = createTranslationMessages({\n ref: homepageTranslationRef,\n messages: {\n 'greeting.welcome': 'Bon retour',\n 'greeting.subtitle': 'Commençons.',\n 'summary.title': 'Résumé',\n 'summary.resources': 'Ressources',\n 'summary.components': 'Composants',\n 'summary.apis': 'APIs',\n 'highlightedCard.title': 'Ajouter de nouvelles fonctionnalités',\n 'highlightedCard.createButton': 'Créer',\n 'toolkit.docs': 'Documentation',\n 'toolkit.community': 'Communauté',\n 'toolkit.website': 'Site web',\n 'toolkit.support': 'Support',\n 'visitedCharts.title': 'Les plus visités',\n 'visitedCharts.total': 'Total',\n 'recentlyVisited.title': 'Récemment visités',\n 'starredEntities.title': 'Vos entités favorites',\n 'footer.poweredBy': 'Propulsé par',\n },\n});\n\nexport default homepageTranslationFr;\n"],"names":[],"mappings":";;;AAmBA,MAAM,wBAAwB,yBAAA,CAA0B;AAAA,EACtD,GAAA,EAAK,sBAAA;AAAA,EACL,QAAA,EAAU;AAAA,IACR,kBAAA,EAAoB,YAAA;AAAA,IACpB,mBAAA,EAAqB,gBAAA;AAAA,IACrB,eAAA,EAAiB,cAAA;AAAA,IACjB,mBAAA,EAAqB,YAAA;AAAA,IACrB,oBAAA,EAAsB,YAAA;AAAA,IACtB,cAAA,EAAgB,MAAA;AAAA,IAChB,uBAAA,EAAyB,yCAAA;AAAA,IACzB,8BAAA,EAAgC,UAAA;AAAA,IAChC,cAAA,EAAgB,eAAA;AAAA,IAChB,mBAAA,EAAqB,eAAA;AAAA,IACrB,iBAAA,EAAmB,UAAA;AAAA,IACnB,iBAAA,EAAmB,SAAA;AAAA,IACnB,qBAAA,EAAuB,qBAAA;AAAA,IACvB,qBAAA,EAAuB,OAAA;AAAA,IACvB,uBAAA,EAAyB,yBAAA;AAAA,IACzB,uBAAA,EAAyB,0BAAA;AAAA,IACzB,kBAAA,EAAoB;AAAA;AAExB,CAAC;;;;"}