@kuadrant/kuadrant-backstage-plugin-frontend 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js +21 -3
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js.map +1 -1
- package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js +1 -7
- package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js.map +1 -1
- package/dist/components/KuadrantIcon/KuadrantIcon.esm.js +22 -0
- package/dist/components/KuadrantIcon/KuadrantIcon.esm.js.map +1 -0
- package/dist/components/icons.esm.js +11 -0
- package/dist/components/icons.esm.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -1
- package/dist-scalprum/internal.plugin-kuadrant.c4fb9c2347d3ad03a5d0.js +2 -0
- package/dist-scalprum/internal.plugin-kuadrant.c4fb9c2347d3ad03a5d0.js.map +1 -0
- package/dist-scalprum/plugin-manifest.json +3 -3
- package/dist-scalprum/static/{1037.58dd29ad.chunk.js → 1037.25758556.chunk.js} +1 -1
- package/dist-scalprum/static/{1037.58dd29ad.chunk.js.map → 1037.25758556.chunk.js.map} +1 -1
- package/dist-scalprum/static/{1584.ae3779f0.chunk.js → 1584.1e45e570.chunk.js} +2 -2
- package/dist-scalprum/static/{1584.ae3779f0.chunk.js.map → 1584.1e45e570.chunk.js.map} +1 -1
- package/dist-scalprum/static/1719.246c020d.chunk.js +2 -0
- package/dist-scalprum/static/1719.246c020d.chunk.js.map +1 -0
- package/dist-scalprum/static/{1881.8221c002.chunk.js → 1881.56cde36b.chunk.js} +1 -1
- package/dist-scalprum/static/{1881.8221c002.chunk.js.map → 1881.56cde36b.chunk.js.map} +1 -1
- package/dist-scalprum/static/286.ee43f560.chunk.js +2 -0
- package/dist-scalprum/static/286.ee43f560.chunk.js.map +1 -0
- package/dist-scalprum/static/2952.b54bd390.chunk.js +2 -0
- package/dist-scalprum/static/2952.b54bd390.chunk.js.map +1 -0
- package/dist-scalprum/static/2967.0c2ef90e.chunk.js +2 -0
- package/dist-scalprum/static/2967.0c2ef90e.chunk.js.map +1 -0
- package/dist-scalprum/static/3015.1fe097c2.chunk.js +3 -0
- package/dist-scalprum/static/3015.1fe097c2.chunk.js.LICENSE.txt +9 -0
- package/dist-scalprum/static/3015.1fe097c2.chunk.js.map +1 -0
- package/dist-scalprum/static/{3581.b5b97f08.chunk.js → 3581.ebe5968a.chunk.js} +1 -1
- package/dist-scalprum/static/{3581.b5b97f08.chunk.js.map → 3581.ebe5968a.chunk.js.map} +1 -1
- package/dist-scalprum/static/3657.882640ca.chunk.js +3 -0
- package/dist-scalprum/static/3657.882640ca.chunk.js.LICENSE.txt +8 -0
- package/dist-scalprum/static/3657.882640ca.chunk.js.map +1 -0
- package/dist-scalprum/static/{3897.ef4554b5.chunk.js → 3897.6e9c07c0.chunk.js} +1 -1
- package/dist-scalprum/static/{3897.ef4554b5.chunk.js.map → 3897.6e9c07c0.chunk.js.map} +1 -1
- package/dist-scalprum/static/{3947.ad129ba4.chunk.js → 3947.4f4aa8c2.chunk.js} +1 -1
- package/dist-scalprum/static/{3947.ad129ba4.chunk.js.map → 3947.4f4aa8c2.chunk.js.map} +1 -1
- package/dist-scalprum/static/{3976.e0873210.chunk.js → 3976.e8a8fda2.chunk.js} +2 -2
- package/dist-scalprum/static/{3976.e0873210.chunk.js.map → 3976.e8a8fda2.chunk.js.map} +1 -1
- package/dist-scalprum/static/{4083.488ff7a9.chunk.js → 4083.811c4e7a.chunk.js} +2 -2
- package/dist-scalprum/static/{4083.488ff7a9.chunk.js.map → 4083.811c4e7a.chunk.js.map} +1 -1
- package/dist-scalprum/static/4908.196a4425.chunk.js +2 -0
- package/dist-scalprum/static/{5453.3c20d0a6.chunk.js.map → 4908.196a4425.chunk.js.map} +1 -1
- package/dist-scalprum/static/{5010.6241b64f.chunk.js → 5010.4f67737b.chunk.js} +2 -2
- package/dist-scalprum/static/{5010.6241b64f.chunk.js.map → 5010.4f67737b.chunk.js.map} +1 -1
- package/dist-scalprum/static/{512.f1c51799.chunk.js → 512.d592d164.chunk.js} +1 -1
- package/dist-scalprum/static/{512.f1c51799.chunk.js.map → 512.d592d164.chunk.js.map} +1 -1
- package/dist-scalprum/static/{5289.2e686027.chunk.js → 5289.55069930.chunk.js} +2 -2
- package/dist-scalprum/static/{5289.2e686027.chunk.js.map → 5289.55069930.chunk.js.map} +1 -1
- package/dist-scalprum/static/5605.430f697e.chunk.js +2 -0
- package/dist-scalprum/static/5605.430f697e.chunk.js.map +1 -0
- package/dist-scalprum/static/5978.bf347a09.chunk.js +2 -0
- package/dist-scalprum/static/5978.bf347a09.chunk.js.map +1 -0
- package/dist-scalprum/static/6038.63d1f832.chunk.js +3 -0
- package/dist-scalprum/static/6038.63d1f832.chunk.js.LICENSE.txt +8 -0
- package/dist-scalprum/static/6038.63d1f832.chunk.js.map +1 -0
- package/dist-scalprum/static/{6272.b5645dc2.chunk.js → 6272.3ed14ea4.chunk.js} +1 -1
- package/dist-scalprum/static/{6272.b5645dc2.chunk.js.map → 6272.3ed14ea4.chunk.js.map} +1 -1
- package/dist-scalprum/static/635.f63679a5.chunk.js +3 -0
- package/dist-scalprum/static/635.f63679a5.chunk.js.map +1 -0
- package/dist-scalprum/static/6371.7b57ac27.chunk.js +3 -0
- package/dist-scalprum/static/6371.7b57ac27.chunk.js.LICENSE.txt +9 -0
- package/dist-scalprum/static/6371.7b57ac27.chunk.js.map +1 -0
- package/dist-scalprum/static/{6386.2d20c412.chunk.js → 6386.5922f271.chunk.js} +3 -3
- package/dist-scalprum/static/{6386.2d20c412.chunk.js.map → 6386.5922f271.chunk.js.map} +1 -1
- package/dist-scalprum/static/{6426.bf20c588.chunk.js → 6426.4c18bab5.chunk.js} +1 -1
- package/dist-scalprum/static/{6426.bf20c588.chunk.js.map → 6426.4c18bab5.chunk.js.map} +1 -1
- package/dist-scalprum/static/6777.a2b77ec5.chunk.js +2 -0
- package/dist-scalprum/static/6777.a2b77ec5.chunk.js.map +1 -0
- package/dist-scalprum/static/{6800.ddabed69.chunk.js → 6800.a45da2f4.chunk.js} +2 -2
- package/dist-scalprum/static/{6800.ddabed69.chunk.js.map → 6800.a45da2f4.chunk.js.map} +1 -1
- package/dist-scalprum/static/{6972.e47ec97e.chunk.js → 6972.f22b9446.chunk.js} +1 -1
- package/dist-scalprum/static/{6972.e47ec97e.chunk.js.map → 6972.f22b9446.chunk.js.map} +1 -1
- package/dist-scalprum/static/7005.8190ad95.chunk.js +2 -0
- package/dist-scalprum/static/7005.8190ad95.chunk.js.map +1 -0
- package/dist-scalprum/static/7164.5dc4bc72.chunk.js +2 -0
- package/dist-scalprum/static/7164.5dc4bc72.chunk.js.map +1 -0
- package/dist-scalprum/static/{7266.e760b8c3.chunk.js → 7266.3c4174cc.chunk.js} +1 -1
- package/dist-scalprum/static/{7266.e760b8c3.chunk.js.map → 7266.3c4174cc.chunk.js.map} +1 -1
- package/dist-scalprum/static/7270.d52407cd.chunk.js +2 -0
- package/dist-scalprum/static/7270.d52407cd.chunk.js.map +1 -0
- package/dist-scalprum/static/7717.6f5b9dd7.chunk.js +3 -0
- package/dist-scalprum/static/7717.6f5b9dd7.chunk.js.map +1 -0
- package/dist-scalprum/static/{7791.8f84478d.chunk.js → 7791.ad31cf6d.chunk.js} +2 -2
- package/dist-scalprum/static/{7791.8f84478d.chunk.js.map → 7791.ad31cf6d.chunk.js.map} +1 -1
- package/dist-scalprum/static/{8563.46f1a3e1.chunk.js → 8563.6501eafb.chunk.js} +2 -2
- package/dist-scalprum/static/{8563.46f1a3e1.chunk.js.map → 8563.6501eafb.chunk.js.map} +1 -1
- package/dist-scalprum/static/{9079.b6d5c19c.chunk.js → 9079.2ddaea57.chunk.js} +1 -1
- package/dist-scalprum/static/{9079.b6d5c19c.chunk.js.map → 9079.2ddaea57.chunk.js.map} +1 -1
- package/dist-scalprum/static/9239.1acfe112.chunk.js +2 -0
- package/dist-scalprum/static/9239.1acfe112.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js +3 -0
- package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js.LICENSE.txt +9 -0
- package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-KuadrantPage.5ae00605.chunk.js +2 -0
- package/dist-scalprum/static/exposed-KuadrantPage.5ae00605.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-PluginRoot.949381c2.chunk.js +2 -0
- package/dist-scalprum/static/exposed-PluginRoot.949381c2.chunk.js.map +1 -0
- package/package.json +6 -3
- package/dist-scalprum/internal.plugin-kuadrant.b3d35dc8b21ce867aa09.js +0 -2
- package/dist-scalprum/internal.plugin-kuadrant.b3d35dc8b21ce867aa09.js.map +0 -1
- package/dist-scalprum/static/1319.ac195ac2.chunk.js +0 -2
- package/dist-scalprum/static/1319.ac195ac2.chunk.js.map +0 -1
- package/dist-scalprum/static/2967.7c6a34cd.chunk.js +0 -2
- package/dist-scalprum/static/2967.7c6a34cd.chunk.js.map +0 -1
- package/dist-scalprum/static/3118.daee3324.chunk.js +0 -3
- package/dist-scalprum/static/3118.daee3324.chunk.js.map +0 -1
- package/dist-scalprum/static/483.d55d6ab2.chunk.js +0 -2
- package/dist-scalprum/static/483.d55d6ab2.chunk.js.map +0 -1
- package/dist-scalprum/static/5203.3df62d7e.chunk.js +0 -2
- package/dist-scalprum/static/5203.3df62d7e.chunk.js.map +0 -1
- package/dist-scalprum/static/5453.3c20d0a6.chunk.js +0 -2
- package/dist-scalprum/static/6371.f183dddb.chunk.js +0 -3
- package/dist-scalprum/static/6371.f183dddb.chunk.js.map +0 -1
- package/dist-scalprum/static/7005.d548f8f1.chunk.js +0 -2
- package/dist-scalprum/static/7005.d548f8f1.chunk.js.map +0 -1
- package/dist-scalprum/static/7270.301a3c46.chunk.js +0 -2
- package/dist-scalprum/static/7270.301a3c46.chunk.js.map +0 -1
- package/dist-scalprum/static/9051.f095a8a1.chunk.js +0 -2
- package/dist-scalprum/static/9051.f095a8a1.chunk.js.map +0 -1
- package/dist-scalprum/static/9838.589f2156.chunk.js +0 -2
- package/dist-scalprum/static/9838.589f2156.chunk.js.map +0 -1
- package/dist-scalprum/static/exposed-PluginRoot.a8448fcc.chunk.js +0 -2
- package/dist-scalprum/static/exposed-PluginRoot.a8448fcc.chunk.js.map +0 -1
- /package/dist-scalprum/static/{1584.ae3779f0.chunk.js.LICENSE.txt → 1584.1e45e570.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{4083.488ff7a9.chunk.js.LICENSE.txt → 4083.811c4e7a.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{5010.6241b64f.chunk.js.LICENSE.txt → 5010.4f67737b.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{6371.f183dddb.chunk.js.LICENSE.txt → 635.f63679a5.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{6386.2d20c412.chunk.js.LICENSE.txt → 6386.5922f271.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{3118.daee3324.chunk.js.LICENSE.txt → 7717.6f5b9dd7.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{8563.46f1a3e1.chunk.js.LICENSE.txt → 8563.6501eafb.chunk.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/3947.ad129ba4.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/./src/components/OidcProviderCard/OidcProviderCard.tsx","webpack://internal.plugin-kuadrant/./src/components/ApiProductDetails/ApiProductDetails.tsx"],"sourcesContent":["import React from 'react';\nimport { InfoCard, CodeSnippet, Link } from '@backstage/core-components';\nimport { Typography, Box, Grid } from '@material-ui/core';\n\ninterface OidcProviderCardProps {\n issuerUrl: string;\n tokenEndpoint?: string;\n}\n\nexport const OidcProviderCard = ({ issuerUrl, tokenEndpoint }: OidcProviderCardProps) => {\n const effectiveTokenEndpoint = tokenEndpoint || issuerUrl;\n\n return (\n <InfoCard title=\"OIDC Provider Discovery\">\n <Box p={2}>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <Typography variant=\"body2\">\n This API uses OIDC authentication. Obtain a token from the identity provider below.\n </Typography>\n </Grid>\n <Grid item xs={12}>\n <Typography variant=\"body2\">\n <strong>Identity Provider: </strong>\n <Link to={issuerUrl} target=\"_blank\">\n {issuerUrl}\n </Link>\n </Typography>\n </Grid>\n {tokenEndpoint && (\n <Grid item xs={12}>\n <Typography variant=\"body2\">\n <strong>Token Endpoint: </strong>\n <Link to={tokenEndpoint} target=\"_blank\">\n {tokenEndpoint}\n </Link>\n </Typography>\n </Grid>\n )}\n <Grid item xs={12}>\n <CodeSnippet\n text={`# Example (Client Credentials Flow):\ncurl -X POST \\\\\n -d \"grant_type=client_credentials\" \\\\\n -d \"client_id=YOUR_CLIENT_ID\" \\\\\n -d \"client_secret=YOUR_CLIENT_SECRET\" \\\\\n ${effectiveTokenEndpoint}`}\n language=\"bash\"\n showCopyCodeButton\n />\n </Grid>\n </Grid>\n </Box>\n </InfoCard>\n );\n};\n","import React from \"react\";\nimport {\n Box,\n Typography,\n Chip,\n makeStyles,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Grid,\n} from \"@material-ui/core\";\nimport { Link } from \"@backstage/core-components\";\nimport { APIProduct, Plan } from \"../../types/api-management\";\nimport { getLifecycleChipStyle } from \"../../utils/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n color: theme.palette.text.secondary,\n marginBottom: theme.spacing(0.5),\n fontSize: \"0.75rem\",\n textTransform: \"uppercase\",\n },\n tierChip: {\n marginRight: theme.spacing(0.5),\n marginBottom: theme.spacing(0.5),\n },\n statusChipPublished: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n statusChipDraft: {\n backgroundColor: theme.palette.grey[600],\n color: theme.palette.common.white,\n },\n infoGrid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(180px, 1fr))\",\n gap: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n infoItem: {\n minWidth: 0,\n },\n apiLink: {\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n}));\n\ninterface ApiProductDetailsProps {\n product: APIProduct;\n showStatus?: boolean;\n showCatalogLink?: boolean;\n httpRouteHostnames?: string[] | null;\n}\n\nexport const ApiProductDetails = ({\n product,\n showStatus = true,\n showCatalogLink = true,\n httpRouteHostnames,\n}: ApiProductDetailsProps) => {\n const classes = useStyles();\n\n const publishStatus = product.spec?.publishStatus || \"Draft\";\n const isPublished = publishStatus === \"Published\";\n const tiers = product.status?.discoveredPlans || [];\n\n // check if product has API key auth\n const authSchemes = product.status?.discoveredAuthScheme?.authentication || {};\n const schemeObjects = Object.values(authSchemes);\n const hasApiKey = schemeObjects.some(\n (scheme: any) => scheme.hasOwnProperty(\"apiKey\"),\n );\n\n return (\n <>\n {product.spec?.description && (\n <Box mb={3}>\n <Typography variant=\"caption\" className={classes.label}>\n Description\n </Typography>\n <Typography variant=\"body1\">{product.spec.description}</Typography>\n </Box>\n )}\n\n <Box className={classes.infoGrid}>\n {showStatus && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Publish Status\n </Typography>\n <Box>\n <Chip\n label={publishStatus}\n size=\"small\"\n className={\n isPublished\n ? classes.statusChipPublished\n : classes.statusChipDraft\n }\n data-testid=\"publish-status-chip\"\n />\n </Box>\n </Box>\n )}\n {product.metadata.labels?.lifecycle && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Lifecycle\n </Typography>\n <Box>\n <Chip\n label={product.metadata.labels.lifecycle}\n size=\"small\"\n style={getLifecycleChipStyle(product.metadata.labels.lifecycle)}\n data-testid=\"lifecycle-chip\"\n />\n </Box>\n </Box>\n )}\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Version\n </Typography>\n <Typography variant=\"body2\">\n {product.spec?.version || \"v1\"}\n </Typography>\n </Box>\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Namespace\n </Typography>\n <Typography variant=\"body2\">{product.metadata.namespace}</Typography>\n </Box>\n {hasApiKey && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n API Key Approval\n </Typography>\n <Typography variant=\"body2\">\n {product.spec?.approvalMode === \"automatic\"\n ? \"Automatic\"\n : \"Need manual approval\"}\n </Typography>\n </Box>\n )}\n {product.spec?.tags && product.spec.tags.length > 0 && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Tags\n </Typography>\n <Box>\n {product.spec.tags.map((tag) => (\n <Chip\n key={tag}\n label={tag}\n size=\"small\"\n variant=\"outlined\"\n className={classes.tierChip}\n />\n ))}\n </Box>\n </Box>\n )}\n </Box>\n\n <Box className={classes.infoGrid}>\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n API\n </Typography>\n <br />\n {showCatalogLink ? (\n <Link\n to={`/catalog/default/api/${product.metadata.name}`}\n className={classes.apiLink}\n >\n {product.metadata.name}\n </Link>\n ) : (\n <Typography variant=\"body2\">{product.metadata.name}</Typography>\n )}\n </Box>\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Route\n </Typography>\n <Typography variant=\"body2\">\n {product.spec?.targetRef?.name || \"-\"}\n </Typography>\n </Box>\n {httpRouteHostnames && httpRouteHostnames.length > 0 && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n {httpRouteHostnames.length > 1 ? \"Hostnames\" : \"Hostname\"}\n </Typography>\n {httpRouteHostnames.map((hostname, index) => (\n <Typography key={index} variant=\"body2\">\n {hostname}\n </Typography>\n ))}\n </Box>\n )}\n </Box>\n\n {tiers.length > 0 && (\n <Box mb={3}>\n <Typography variant=\"caption\" className={classes.label}>\n Available Tiers\n </Typography>\n <Table size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell>Tier</TableCell>\n <TableCell>Rate Limits</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {tiers.map((plan: Plan) => (\n <TableRow key={plan.tier}>\n <TableCell>\n <Chip label={plan.tier} size=\"small\" />\n </TableCell>\n <TableCell>\n {plan.limits &&\n Object.entries(plan.limits).map(([key, value]) => (\n <Typography key={key} variant=\"body2\">\n {String(value)} per {key}\n </Typography>\n ))}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>\n )}\n\n <Grid container spacing={3}>\n {(product.spec?.contact?.email || product.spec?.contact?.team) && (\n <Grid item xs={12} md={6}>\n <Typography variant=\"caption\" className={classes.label}>\n Contact Information\n </Typography>\n <Box mt={1}>\n {product.spec.contact.team && (\n <Typography variant=\"body2\">\n <strong>Team:</strong> {product.spec.contact.team}\n </Typography>\n )}\n {product.spec.contact.email && (\n <Typography variant=\"body2\">\n <strong>Email:</strong>{\" \"}\n <Link to={`mailto:${product.spec.contact.email}`}>\n {product.spec.contact.email}\n </Link>\n </Typography>\n )}\n </Box>\n </Grid>\n )}\n\n {(product.spec?.documentation?.docsURL ||\n product.spec?.documentation?.openAPISpecURL) && (\n <Grid item xs={12} md={6}>\n <Typography variant=\"caption\" className={classes.label}>\n Documentation\n </Typography>\n <Box mt={1}>\n {product.spec.documentation.docsURL && (\n <Typography variant=\"body2\">\n <strong>Docs:</strong>{\" \"}\n <Link to={product.spec.documentation.docsURL} target=\"_blank\">\n View Documentation\n </Link>\n </Typography>\n )}\n {product.spec.documentation.openAPISpecURL && (\n <Typography variant=\"body2\">\n <strong>OpenAPI Spec:</strong>{\" \"}\n <Link\n to={product.spec.documentation.openAPISpecURL}\n target=\"_blank\"\n >\n View Spec\n </Link>\n </Typography>\n )}\n </Box>\n </Grid>\n )}\n </Grid>\n </>\n );\n};\n"],"names":["OidcProviderCard","issuerUrl","tokenEndpoint","effectiveTokenEndpoint","InfoCard","title","Box","p","Grid","container","spacing","item","xs","Typography","variant","strong","Link","to","target","CodeSnippet","text","language","showCopyCodeButton","useStyles","makeStyles","theme","label","fontWeight","color","palette","secondary","marginBottom","fontSize","textTransform","tierChip","marginRight","statusChipPublished","backgroundColor","primary","main","contrastText","statusChipDraft","grey","common","white","infoGrid","display","gridTemplateColumns","gap","infoItem","minWidth","apiLink","textDecoration","ApiProductDetails","product","showStatus","showCatalogLink","httpRouteHostnames","classes","publishStatus","spec","isPublished","tiers","status","discoveredPlans","authSchemes","discoveredAuthScheme","authentication","hasApiKey","Object","values","some","scheme","hasOwnProperty","description","mb","className","Chip","size","data-testid","metadata","labels","lifecycle","style","getLifecycleChipStyle","version","namespace","approvalMode","tags","length","map","tag","br","name","targetRef","hostname","index","Table","TableHead","TableRow","TableCell","TableBody","plan","tier","limits","entries","key","value","String","contact","email","team","md","mt","documentation","docsURL","openAPISpecURL"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/3947.4f4aa8c2.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/./src/components/OidcProviderCard/OidcProviderCard.tsx","webpack://internal.plugin-kuadrant/./src/components/ApiProductDetails/ApiProductDetails.tsx"],"sourcesContent":["import React from 'react';\nimport { InfoCard, CodeSnippet, Link } from '@backstage/core-components';\nimport { Typography, Box, Grid } from '@material-ui/core';\n\ninterface OidcProviderCardProps {\n issuerUrl: string;\n tokenEndpoint?: string;\n}\n\nexport const OidcProviderCard = ({ issuerUrl, tokenEndpoint }: OidcProviderCardProps) => {\n const effectiveTokenEndpoint = tokenEndpoint || issuerUrl;\n\n return (\n <InfoCard title=\"OIDC Provider Discovery\">\n <Box p={2}>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <Typography variant=\"body2\">\n This API uses OIDC authentication. Obtain a token from the identity provider below.\n </Typography>\n </Grid>\n <Grid item xs={12}>\n <Typography variant=\"body2\">\n <strong>Identity Provider: </strong>\n <Link to={issuerUrl} target=\"_blank\">\n {issuerUrl}\n </Link>\n </Typography>\n </Grid>\n {tokenEndpoint && (\n <Grid item xs={12}>\n <Typography variant=\"body2\">\n <strong>Token Endpoint: </strong>\n <Link to={tokenEndpoint} target=\"_blank\">\n {tokenEndpoint}\n </Link>\n </Typography>\n </Grid>\n )}\n <Grid item xs={12}>\n <CodeSnippet\n text={`# Example (Client Credentials Flow):\ncurl -X POST \\\\\n -d \"grant_type=client_credentials\" \\\\\n -d \"client_id=YOUR_CLIENT_ID\" \\\\\n -d \"client_secret=YOUR_CLIENT_SECRET\" \\\\\n ${effectiveTokenEndpoint}`}\n language=\"bash\"\n showCopyCodeButton\n />\n </Grid>\n </Grid>\n </Box>\n </InfoCard>\n );\n};\n","import React from \"react\";\nimport {\n Box,\n Typography,\n Chip,\n makeStyles,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Grid,\n} from \"@material-ui/core\";\nimport { Link } from \"@backstage/core-components\";\nimport { APIProduct, Plan } from \"../../types/api-management\";\nimport { getLifecycleChipStyle } from \"../../utils/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 600,\n color: theme.palette.text.secondary,\n marginBottom: theme.spacing(0.5),\n fontSize: \"0.75rem\",\n textTransform: \"uppercase\",\n },\n tierChip: {\n marginRight: theme.spacing(0.5),\n marginBottom: theme.spacing(0.5),\n },\n statusChipPublished: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n statusChipDraft: {\n backgroundColor: theme.palette.grey[600],\n color: theme.palette.common.white,\n },\n infoGrid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(180px, 1fr))\",\n gap: theme.spacing(3),\n marginBottom: theme.spacing(3),\n },\n infoItem: {\n minWidth: 0,\n },\n apiLink: {\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n}));\n\ninterface ApiProductDetailsProps {\n product: APIProduct;\n showStatus?: boolean;\n showCatalogLink?: boolean;\n httpRouteHostnames?: string[] | null;\n}\n\nexport const ApiProductDetails = ({\n product,\n showStatus = true,\n showCatalogLink = true,\n httpRouteHostnames,\n}: ApiProductDetailsProps) => {\n const classes = useStyles();\n\n const publishStatus = product.spec?.publishStatus || \"Draft\";\n const isPublished = publishStatus === \"Published\";\n const tiers = product.status?.discoveredPlans || [];\n\n // check if product has API key auth\n const authSchemes = product.status?.discoveredAuthScheme?.authentication || {};\n const schemeObjects = Object.values(authSchemes);\n const hasApiKey = schemeObjects.some(\n (scheme: any) => scheme.hasOwnProperty(\"apiKey\"),\n );\n\n return (\n <>\n {product.spec?.description && (\n <Box mb={3}>\n <Typography variant=\"caption\" className={classes.label}>\n Description\n </Typography>\n <Typography variant=\"body1\">{product.spec.description}</Typography>\n </Box>\n )}\n\n <Box className={classes.infoGrid}>\n {showStatus && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Publish Status\n </Typography>\n <Box>\n <Chip\n label={publishStatus}\n size=\"small\"\n className={\n isPublished\n ? classes.statusChipPublished\n : classes.statusChipDraft\n }\n data-testid=\"publish-status-chip\"\n />\n </Box>\n </Box>\n )}\n {product.metadata.labels?.lifecycle && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Lifecycle\n </Typography>\n <Box>\n <Chip\n label={product.metadata.labels.lifecycle}\n size=\"small\"\n style={getLifecycleChipStyle(product.metadata.labels.lifecycle)}\n data-testid=\"lifecycle-chip\"\n />\n </Box>\n </Box>\n )}\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Version\n </Typography>\n <Typography variant=\"body2\">\n {product.spec?.version || \"v1\"}\n </Typography>\n </Box>\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Namespace\n </Typography>\n <Typography variant=\"body2\">{product.metadata.namespace}</Typography>\n </Box>\n {hasApiKey && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n API Key Approval\n </Typography>\n <Typography variant=\"body2\">\n {product.spec?.approvalMode === \"automatic\"\n ? \"Automatic\"\n : \"Need manual approval\"}\n </Typography>\n </Box>\n )}\n {product.spec?.tags && product.spec.tags.length > 0 && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Tags\n </Typography>\n <Box>\n {product.spec.tags.map((tag) => (\n <Chip\n key={tag}\n label={tag}\n size=\"small\"\n variant=\"outlined\"\n className={classes.tierChip}\n />\n ))}\n </Box>\n </Box>\n )}\n </Box>\n\n <Box className={classes.infoGrid}>\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n API\n </Typography>\n <br />\n {showCatalogLink ? (\n <Link\n to={`/catalog/default/api/${product.metadata.name}`}\n className={classes.apiLink}\n >\n {product.metadata.name}\n </Link>\n ) : (\n <Typography variant=\"body2\">{product.metadata.name}</Typography>\n )}\n </Box>\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n Route\n </Typography>\n <Typography variant=\"body2\">\n {product.spec?.targetRef?.name || \"-\"}\n </Typography>\n </Box>\n {httpRouteHostnames && httpRouteHostnames.length > 0 && (\n <Box className={classes.infoItem}>\n <Typography variant=\"caption\" className={classes.label}>\n {httpRouteHostnames.length > 1 ? \"Hostnames\" : \"Hostname\"}\n </Typography>\n {httpRouteHostnames.map((hostname, index) => (\n <Typography key={index} variant=\"body2\">\n {hostname}\n </Typography>\n ))}\n </Box>\n )}\n </Box>\n\n {tiers.length > 0 && (\n <Box mb={3}>\n <Typography variant=\"caption\" className={classes.label}>\n Available Tiers\n </Typography>\n <Table size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell>Tier</TableCell>\n <TableCell>Rate Limits</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {tiers.map((plan: Plan) => (\n <TableRow key={plan.tier}>\n <TableCell>\n <Chip label={plan.tier} size=\"small\" />\n </TableCell>\n <TableCell>\n {plan.limits &&\n Object.entries(plan.limits).map(([key, value]) => (\n <Typography key={key} variant=\"body2\">\n {String(value)} per {key}\n </Typography>\n ))}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>\n )}\n\n <Grid container spacing={3}>\n {(product.spec?.contact?.email || product.spec?.contact?.team) && (\n <Grid item xs={12} md={6}>\n <Typography variant=\"caption\" className={classes.label}>\n Contact Information\n </Typography>\n <Box mt={1}>\n {product.spec.contact.team && (\n <Typography variant=\"body2\">\n <strong>Team:</strong> {product.spec.contact.team}\n </Typography>\n )}\n {product.spec.contact.email && (\n <Typography variant=\"body2\">\n <strong>Email:</strong>{\" \"}\n <Link to={`mailto:${product.spec.contact.email}`}>\n {product.spec.contact.email}\n </Link>\n </Typography>\n )}\n </Box>\n </Grid>\n )}\n\n {(product.spec?.documentation?.docsURL ||\n product.spec?.documentation?.openAPISpecURL) && (\n <Grid item xs={12} md={6}>\n <Typography variant=\"caption\" className={classes.label}>\n Documentation\n </Typography>\n <Box mt={1}>\n {product.spec.documentation.docsURL && (\n <Typography variant=\"body2\">\n <strong>Docs:</strong>{\" \"}\n <Link to={product.spec.documentation.docsURL} target=\"_blank\">\n View Documentation\n </Link>\n </Typography>\n )}\n {product.spec.documentation.openAPISpecURL && (\n <Typography variant=\"body2\">\n <strong>OpenAPI Spec:</strong>{\" \"}\n <Link\n to={product.spec.documentation.openAPISpecURL}\n target=\"_blank\"\n >\n View Spec\n </Link>\n </Typography>\n )}\n </Box>\n </Grid>\n )}\n </Grid>\n </>\n );\n};\n"],"names":["OidcProviderCard","issuerUrl","tokenEndpoint","effectiveTokenEndpoint","InfoCard","title","Box","p","Grid","container","spacing","item","xs","Typography","variant","strong","Link","to","target","CodeSnippet","text","language","showCopyCodeButton","useStyles","makeStyles","theme","label","fontWeight","color","palette","secondary","marginBottom","fontSize","textTransform","tierChip","marginRight","statusChipPublished","backgroundColor","primary","main","contrastText","statusChipDraft","grey","common","white","infoGrid","display","gridTemplateColumns","gap","infoItem","minWidth","apiLink","textDecoration","ApiProductDetails","product","showStatus","showCatalogLink","httpRouteHostnames","classes","publishStatus","spec","isPublished","tiers","status","discoveredPlans","authSchemes","discoveredAuthScheme","authentication","hasApiKey","Object","values","some","scheme","hasOwnProperty","description","mb","className","Chip","size","data-testid","metadata","labels","lifecycle","style","getLifecycleChipStyle","version","namespace","approvalMode","tags","length","map","tag","br","name","targetRef","hostname","index","Table","TableHead","TableRow","TableCell","TableBody","plan","tier","limits","entries","key","value","String","contact","email","team","md","mt","documentation","docsURL","openAPISpecURL"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[3976],{12229:(e,t,s)=>{s.d(t,{Z:()=>A});var n=s(31085),r=s(95478),a=s.n(r),i=s(10394),o=s(72501),l=s(64947),c=s(37197),d=s(69621),p=s(12981),u=s(86901),m=s(69076),g=s(58837),h=s(6924),v=s(23164);const x=(0,g.A)(e=>({root:{width:240,minWidth:240,padding:e.spacing(2),borderRight:`1px solid ${e.palette.divider}`,backgroundColor:e.palette.background.paper,height:"100%",overflowY:"auto"},sectionTitle:{fontWeight:600,fontSize:"0.75rem",textTransform:"uppercase",letterSpacing:"0.05em",color:e.palette.text.secondary,marginBottom:e.spacing(1),display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer",userSelect:"none"},filterSection:{marginBottom:e.spacing(2)},checkbox:{padding:e.spacing(.5)},checkboxLabel:{fontSize:"0.875rem"},clearButton:{marginTop:e.spacing(2)},count:{fontSize:"0.75rem",color:e.palette.text.secondary,marginLeft:e.spacing(1)}})),A=({sections:e,filters:t,onChange:s,onClear:r})=>{const g=x(),[A,j]=a().useState(new Set(e.filter(e=>e.collapsed).map(e=>e.id))),f=Object.values(t).some(e=>e.length>0);return(0,n.jsxs)(i.A,{className:g.root,children:[(0,n.jsxs)(i.A,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[(0,n.jsx)(o.A,{variant:"subtitle2",children:"Filters"}),f&&(0,n.jsx)(l.A,{size:"small",color:"primary",onClick:()=>{const t={};e.forEach(e=>{t[e.id]=[]}),s(t),null==r||r()},children:"Clear all"})]}),(0,n.jsx)(c.A,{}),e.map(e=>{const r=A.has(e.id),a=(t[e.id]||[]).length;return(0,n.jsxs)(i.A,{className:g.filterSection,mt:2,children:[(0,n.jsxs)(i.A,{className:g.sectionTitle,onClick:()=>{return t=e.id,void j(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s});var t},children:[(0,n.jsxs)(i.A,{display:"flex",alignItems:"center",children:[(0,n.jsx)("span",{children:e.title}),a>0&&(0,n.jsxs)("span",{className:g.count,children:["(",a,")"]})]}),r?(0,n.jsx)(h.A,{fontSize:"small"}):(0,n.jsx)(v.A,{fontSize:"small"})]}),(0,n.jsx)(d.A,{in:!r,children:(0,n.jsx)(p.A,{children:e.options.map(r=>(0,n.jsx)(u.A,{control:(0,n.jsx)(m.A,{checked:(t[e.id]||[]).includes(r.value),onChange:()=>((e,n)=>{const r=t[e]||[],a=r.includes(n)?r.filter(e=>e!==n):[...r,n];s({...t,[e]:a})})(e.id,r.value),size:"small",className:g.checkbox,color:"primary"}),label:(0,n.jsxs)(i.A,{display:"flex",alignItems:"center",children:[(0,n.jsx)("span",{className:g.checkboxLabel,children:r.label}),void 0!==r.count&&(0,n.jsxs)("span",{className:g.count,children:["(",r.count,")"]})]})},r.value))})})]},e.id)})]})}},23164:(e,t,s)=>{var n=s(4293),r=s(78920);t.A=void 0;var a=r(s(95478)),i=(0,n(s(74044)).default)(a.createElement("path",{d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");t.A=i},27799:(e,t,s)=>{var n=s(4293),r=s(78920);t.A=void 0;var a=r(s(95478)),i=(0,n(s(74044)).default)(a.createElement("path",{d:"M21 5v6.59l-3-3.01-4 4.01-4-4-4 4-3-3.01V5c0-1.1.9-2 2-2h14c1.1 0 2 .9 2 2zm-3 6.42l3 3.01V19c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2v-6.58l3 2.99 4-4 4 4 4-3.99z"}),"BrokenImage");t.A=i},43976:(e,t,s)=>{s.r(t),s.d(t,{ApiKeyApprovalPage:()=>O});var n=s(31085),r=s(95478),a=s.n(r),i=s(289),o=s(15831),l=s(45210),c=s(46681),d=s(22097),p=s(64047),u=s(35015),m=s(37725),g=s(42367),h=s(25010),v=s(34955),x=s(46205),A=s(58837),j=s(76891),f=s(61477),y=s(10394),b=s(46805),k=s(72501),C=s(16249),w=s(93453),S=s(64947),R=s(78467),P=s(67720),q=s(4387),I=s(55429),B=s(92399),N=s(12229),z=s(46299);const $=(0,A.A)(e=>({container:{display:"flex",height:"100%",minHeight:400},tableContainer:{flex:1,overflow:"auto",padding:10},useCasePanel:{padding:e.spacing(2),backgroundColor:e.palette.background.default},useCaseLabel:{fontWeight:600,marginBottom:e.spacing(1),color:e.palette.text.secondary,textTransform:"uppercase",fontSize:"0.75rem"},bulkActions:{padding:e.spacing(2),backgroundColor:e.palette.background.default,borderBottom:`1px solid ${e.palette.divider}`,display:"flex",alignItems:"center",justifyContent:"space-between"}})),T=({open:e,request:t,action:s,processing:r,onClose:i,onConfirm:o})=>{var l,c;const[d,p]=a().useState(""),u="approve"===s?"Approve":"Reject",m="approve"===s?"Approving...":"Rejecting...",g="reject"===s,h=(null==t||null===(l=t.spec.requestedBy)||void 0===l?void 0:l.userId)||"",v=!g||d===h;return a().useEffect(()=>{e||p("")},[e]),(0,n.jsxs)(j.A,{open:e,onClose:r?void 0:i,maxWidth:"sm",fullWidth:!0,children:[(0,n.jsx)(f.A,{children:g?(0,n.jsxs)(y.A,{display:"flex",alignItems:"center",style:{gap:8},children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)("span",{children:[u," API Key"]})]}):(0,n.jsxs)("span",{children:[u," API Key"]})}),(0,n.jsx)(b.A,{children:t&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"User:"})," ",t.spec.requestedBy.userId]}),(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"API:"})," ",(null===(c=t.spec.apiProductRef)||void 0===c?void 0:c.name)||"unknown"]}),(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"Tier:"})," ",t.spec.planTier]}),(0,n.jsxs)(y.A,{mb:2,children:[(0,n.jsx)(k.A,{variant:"body2",component:"span",style:{fontWeight:"bold"},children:"Use Case:"})," ",(0,n.jsx)(k.A,{variant:"body2",component:"span",style:{whiteSpace:"pre-wrap"},children:t.spec.useCase||"-"})]}),g&&(0,n.jsxs)(y.A,{mt:2,children:[(0,n.jsxs)(k.A,{variant:"body2",color:"textSecondary",gutterBottom:!0,children:["Type ",(0,n.jsx)("strong",{children:h})," to confirm rejection:"]}),(0,n.jsx)(C.A,{fullWidth:!0,variant:"outlined",size:"small",value:d,onChange:e=>p(e.target.value),disabled:r,autoFocus:!0,placeholder:h})]})]})}),(0,n.jsxs)(w.A,{children:[(0,n.jsx)(S.A,{onClick:i,disabled:r,children:"Cancel"}),(0,n.jsx)(S.A,{onClick:o,color:"approve"===s?"primary":"secondary",variant:"contained",disabled:r||!v,startIcon:r?(0,n.jsx)(R.A,{size:16,color:"inherit"}):void 0,children:r?m:u})]})]})},W=({open:e,requests:t,action:s,processing:r,onClose:a,onConfirm:i})=>{const o="approve"===s,l=o?"Approve All":"Reject All",c=o?"Approving...":"Rejecting...";return(0,n.jsxs)(j.A,{open:e,onClose:r?void 0:a,maxWidth:"md",fullWidth:!0,children:[(0,n.jsxs)(f.A,{children:[o?"Approve":"Reject"," ",t.length," API Keys"]}),(0,n.jsxs)(b.A,{children:[(0,n.jsxs)(k.A,{variant:"body2",paragraph:!0,children:["You are about to ",o?"approve":"reject"," the following API keys:"]}),(0,n.jsx)(y.A,{mb:2,maxHeight:200,overflow:"auto",children:t.map(e=>{var t;return(0,n.jsx)(y.A,{mb:1,p:1,bgcolor:"background.default",children:(0,n.jsxs)(k.A,{variant:"body2",children:[(0,n.jsx)("strong",{children:e.spec.requestedBy.userId})," -"," ",(null===(t=e.spec.apiProductRef)||void 0===t?void 0:t.name)||"unknown"," (",e.spec.planTier,")"]})},`${e.metadata.namespace}/${e.metadata.name}`)})})]}),(0,n.jsxs)(w.A,{children:[(0,n.jsx)(S.A,{onClick:a,disabled:r,children:"Cancel"}),(0,n.jsx)(S.A,{onClick:i,color:o?"primary":"secondary",variant:"contained",disabled:r,startIcon:r?(0,n.jsx)(R.A,{size:16,color:"inherit"}):void 0,children:r?c:l})]})]})},F=({request:e})=>{const t=$();return(0,n.jsxs)(y.A,{className:t.useCasePanel,onClick:e=>e.stopPropagation(),children:[(0,n.jsx)(k.A,{className:t.useCaseLabel,children:"Use Case"}),(0,n.jsx)(k.A,{variant:"body2",children:e.spec.useCase||"No use case provided"})]})},L=(0,A.A)(e=>({successSection:{padding:e.spacing(2),backgroundColor:e.palette.success.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.success.main}40`},failureSection:{padding:e.spacing(2),backgroundColor:e.palette.error.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.error.main}40`},warningSection:{padding:e.spacing(2),backgroundColor:e.palette.warning.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.warning.main}40`},statRow:{display:"flex",alignItems:"center",gap:e.spacing(1)},errorList:{marginTop:e.spacing(2),padding:0,listStyle:"none"},errorItem:{padding:e.spacing(1.5),marginBottom:e.spacing(1),backgroundColor:e.palette.background.paper,borderRadius:e.shape.borderRadius,border:`1px solid ${e.palette.divider}`},errorName:{fontWeight:600,fontSize:"0.875rem",marginBottom:e.spacing(.5)},errorMessage:{fontSize:"0.813rem",color:e.palette.error.main,fontFamily:"monospace",wordBreak:"break-word"},expandButton:{marginTop:e.spacing(1),padding:e.spacing(.5)}})),E=({open:e,results:t,isApprove:s,onClose:a})=>{const i=L(),[o,l]=(0,r.useState)(!0),c=t.filter(e=>e.success),d=t.filter(e=>!e.success),p=c.length>0;return(0,n.jsxs)(j.A,{open:e,onClose:a,maxWidth:"md",fullWidth:!0,children:[(0,n.jsx)(f.A,{children:(0,n.jsx)(y.A,{display:"flex",alignItems:"center",style:{gap:8},children:p?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B.A,{style:{color:"#ff9800"}}),(0,n.jsxs)("span",{children:["Bulk ",s?"Approve":"Reject"," Completed with Issues"]})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)("span",{children:["Bulk ",s?"Approve":"Reject"," Failed"]})]})})}),(0,n.jsxs)(b.A,{children:[p&&(0,n.jsx)(y.A,{className:i.successSection,children:(0,n.jsxs)(y.A,{className:i.statRow,children:[(0,n.jsx)(I.A,{style:{color:"#4caf50"}}),(0,n.jsxs)(k.A,{variant:"body1",children:[(0,n.jsx)("strong",{children:c.length})," API key",1!==c.length?"s":""," ",s?"approved":"rejected"," successfully"]})]})}),(0,n.jsxs)(y.A,{className:p?i.warningSection:i.failureSection,children:[(0,n.jsxs)(y.A,{className:i.statRow,children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)(k.A,{variant:"body1",children:[(0,n.jsx)("strong",{children:d.length})," request",1!==d.length?"s":""," failed"]})]}),(0,n.jsxs)(S.A,{size:"small",className:i.expandButton,onClick:()=>l(!o),children:[o?"Hide":"Show"," Error Details"]}),o&&(0,n.jsx)("ul",{className:i.errorList,children:d.map((e,t)=>(0,n.jsxs)("li",{className:i.errorItem,children:[(0,n.jsxs)("div",{className:i.errorName,children:[e.namespace,"/",e.name]}),(0,n.jsx)("div",{className:i.errorMessage,children:e.error||"Unknown error"})]},e.name||t))})]})]}),(0,n.jsx)(w.A,{children:(0,n.jsx)(S.A,{onClick:a,color:"primary",variant:"contained",children:"Close"})})]})},M=()=>{var e;const t=$(),s=(0,d.useApi)(d.identityApiRef),a=(0,d.useApi)(d.alertApiRef),i=(0,d.useApi)(p.s),[o,l]=(0,r.useState)(0),[c,A]=(0,r.useState)([]),[j,f]=(0,r.useState)({open:!1,request:null,action:"approve",processing:!1}),[b,C]=(0,r.useState)({open:!1,requests:[],action:"approve",processing:!1}),[w,R]=(0,r.useState)({open:!1,results:[],isApprove:!0}),[L,M]=(0,r.useState)({status:[],apiProduct:[],tier:[]}),{allowed:O,loading:U,error:_}=(0,x.l)(v.z4),{allowed:Y,loading:D,error:H}=(0,x.l)(v.q0),K=U||D,V=_||H,{value:Z,loading:G,error:X}=(0,u.A)(async()=>{const e=(await s.getBackstageIdentity()).userEntityRef;try{const[s,r]=await Promise.all([i.getAllRequests(),i.getApiProducts()]),a=s.items||[],o=new Set;for(const s of r.items||[]){var t,n;(null===(n=s.metadata)||void 0===n||null===(t=n.annotations)||void 0===t?void 0:t["backstage.io/owner"])===e&&o.add(`${s.metadata.namespace}/${s.metadata.name}`)}return{allRequests:a,reviewedBy:e,ownedApiProducts:o}}catch(t){const s=t instanceof Error?t.message:"unknown error occurred";return a.post({message:`Failed to get resources. ${s}`,display:"transient",severity:"error"}),{allRequests:[],reviewedBy:e,ownedApiProducts:new Set}}},[i,s,o]),J=(0,r.useMemo)(()=>{if(!(null==Z?void 0:Z.allRequests))return[];const e={Approved:0,Pending:0,Rejected:0},t=new Map,s=new Map;return Z.allRequests.forEach(n=>{var r,a;const i=(null===(r=n.status)||void 0===r?void 0:r.phase)||"Pending";e[i]++;const o=(null===(a=n.spec.apiProductRef)||void 0===a?void 0:a.name)||"unknown";t.set(o,(t.get(o)||0)+1);const l=n.spec.planTier||"unknown";s.set(l,(s.get(l)||0)+1)}),[{id:"status",title:"Status",options:[{value:"Pending",label:"Pending",count:e.Pending},{value:"Approved",label:"Approved",count:e.Approved},{value:"Rejected",label:"Rejected",count:e.Rejected}]},{id:"apiProduct",title:"API Product",options:Array.from(t.entries()).map(([e,t])=>({value:e,label:e,count:t})),collapsed:t.size>5},{id:"tier",title:"Tier",options:Array.from(s.entries()).map(([e,t])=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),count:t}))}]},[null==Z?void 0:Z.allRequests]),Q=(0,r.useMemo)(()=>(null==Z?void 0:Z.allRequests)?Z.allRequests.filter(e=>{if(L.status.length>0){var t;const s=(null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending";if(!L.status.includes(s))return!1}if(L.apiProduct.length>0){var s;const t=(null===(s=e.spec.apiProductRef)||void 0===s?void 0:s.name)||"unknown";if(!L.apiProduct.includes(t))return!1}if(L.tier.length>0){const t=e.spec.planTier||"unknown";if(!L.tier.includes(t))return!1}return!0}):[],[null==Z?void 0:Z.allRequests,L]),ee=e=>new Date(e).toLocaleDateString("en-GB",{year:"numeric",month:"short",day:"numeric"}),te=[{title:"Requester",field:"spec.requestedBy.userId",render:e=>(0,n.jsx)(k.A,{variant:"body2",children:e.spec.requestedBy.userId})},{title:"API Product",field:"spec.apiProductRef.name",render:e=>{var t;const s=(null===(t=e.spec.apiProductRef)||void 0===t?void 0:t.name)||"unknown";return(0,n.jsx)(m.N_,{to:`/catalog/default/api/${s}`,children:(0,n.jsx)("strong",{children:s})})}},{title:"Status",field:"status.phase",render:e=>{var t;const s=(null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending";return(0,n.jsx)(P.A,{label:s,size:"small",style:(0,z.uU)(s)})}},{title:"Tier",field:"spec.planTier",render:e=>(0,n.jsx)(P.A,{label:e.spec.planTier,size:"small",variant:"outlined"})},{title:"Requested",field:"metadata.creationTimestamp",render:e=>(0,n.jsx)(k.A,{variant:"body2",children:e.metadata.creationTimestamp?ee(e.metadata.creationTimestamp):"-"})},{title:"Reviewed By",field:"status.reviewedBy",render:e=>{var t;if(!(null===(t=e.status)||void 0===t?void 0:t.reviewedBy))return(0,n.jsx)(k.A,{variant:"body2",color:"textSecondary",children:"-"});const s=e.status.reviewedBy.replace(/^user:default\//,""),r="system"===s;return(0,n.jsxs)(y.A,{children:[(0,n.jsx)(k.A,{variant:"body2",children:r?"Automatic":s}),e.status.reviewedAt&&(0,n.jsx)(k.A,{variant:"caption",color:"textSecondary",children:ee(e.status.reviewedAt)})]})}},{title:"Actions",filtering:!1,render:e=>{var t,s,r;if("Pending"!==((null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending"))return null;const a=`${e.metadata.namespace}/${(null===(s=e.spec.apiProductRef)||void 0===s?void 0:s.name)||"unknown"}`;var i;const o=null!==(i=null==Z||null===(r=Z.ownedApiProducts)||void 0===r?void 0:r.has(a))&&void 0!==i&&i;return O||Y&&o?(0,n.jsxs)(y.A,{display:"flex",style:{gap:8},children:[(0,n.jsx)(S.A,{size:"small",startIcon:(0,n.jsx)(I.A,{}),onClick:()=>{f({open:!0,request:e,action:"approve",processing:!1})},color:"primary",variant:"outlined",children:"Approve"}),(0,n.jsx)(S.A,{size:"small",startIcon:(0,n.jsx)(B.A,{}),onClick:()=>{f({open:!0,request:e,action:"reject",processing:!1})},color:"secondary",variant:"outlined",children:"Reject"})]}):null}}],se=(0,r.useMemo)(()=>[{render:e=>{var t;const s=e.rowData;return(null==s||null===(t=s.metadata)||void 0===t?void 0:t.name)?(0,n.jsx)(F,{request:s}):(0,n.jsx)(y.A,{})}}],[]);if(G||K)return(0,n.jsx)(y.A,{p:2,children:[...Array(5)].map((e,t)=>(0,n.jsx)(y.A,{p:2,children:(0,n.jsx)(q.A,{variant:"text",width:"100%"})},t))});if(X)return(0,n.jsx)(g._,{error:X});if(V)return(0,n.jsx)(y.A,{p:2,children:(0,n.jsxs)(k.A,{color:"error",children:["Unable to check permissions: ",V.message]})});const ne=O||Y;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(y.A,{className:t.container,children:[(0,n.jsx)(N.Z,{sections:J,filters:L,onChange:M}),(0,n.jsxs)(y.A,{className:t.tableContainer,children:[c.length>0&&(0,n.jsxs)(y.A,{className:t.bulkActions,children:[(0,n.jsxs)(k.A,{variant:"body2",children:[c.length," request",1!==c.length?"s":""," selected"]}),(0,n.jsxs)(y.A,{display:"flex",style:{gap:8},children:[(0,n.jsx)(S.A,{size:"small",variant:"contained",color:"primary",startIcon:(0,n.jsx)(I.A,{}),onClick:()=>{0!==c.length&&C({open:!0,requests:c,action:"approve",processing:!1})},children:"Approve Selected"}),(0,n.jsx)(S.A,{size:"small",variant:"contained",color:"secondary",startIcon:(0,n.jsx)(B.A,{}),onClick:()=>{0!==c.length&&C({open:!0,requests:c,action:"reject",processing:!1})},children:"Reject Selected"})]})]}),0===Q.length?(0,n.jsx)(y.A,{p:4,textAlign:"center",children:(0,n.jsx)(k.A,{variant:"body1",color:"textSecondary",children:0===(null==Z||null===(e=Z.allRequests)||void 0===e?void 0:e.length)?"No API keys found.":"No API keys match the selected filters."})}):(0,n.jsx)(h.X,{options:{selection:ne,showSelectAllCheckbox:Q.some(e=>{var t;return!(null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending"===e.status.phase}),selectionProps:e=>{var t,s;return{disabled:"Pending"!==(null===(t=e.status)||void 0===t?void 0:t.phase)&&void 0!==(null===(s=e.status)||void 0===s?void 0:s.phase)}},paging:Q.length>10,pageSize:20,search:!0,filtering:!1,debounceInterval:300,showTextRowsSelected:!1,toolbar:!0,emptyRowsWhenPaging:!1},columns:te,data:Q.map(e=>{const t=c.some(t=>t.metadata.name===e.metadata.name&&t.metadata.namespace===e.metadata.namespace);return{...e,id:e.metadata.name,tableData:{checked:t}}}),onSelectionChange:e=>{const t=e.filter(e=>{var t;return!(null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending"===e.status.phase});A(t)},detailPanel:se})]})]}),(0,n.jsx)(T,{open:j.open,request:j.request,action:j.action,processing:j.processing,onClose:()=>f({open:!1,request:null,action:"approve",processing:!1}),onConfirm:async()=>{if(!j.request||!Z)return;f(e=>({...e,processing:!0}));const e="approve"===j.action?(e,t,s)=>i.approveRequest(e,t,s):(e,t,s)=>i.rejectRequest(e,t,s);try{await e(j.request.metadata.namespace,j.request.metadata.name,Z.reviewedBy),f({open:!1,request:null,action:"approve",processing:!1}),A(e=>e.filter(e=>{var t,s;return e.metadata.name!==(null===(t=j.request)||void 0===t?void 0:t.metadata.name)||e.metadata.namespace!==(null===(s=j.request)||void 0===s?void 0:s.metadata.namespace)})),l(e=>e+1);const t="approve"===j.action?"approved":"rejected";a.post({message:`API key ${t}`,severity:"success",display:"transient"})}catch(e){console.error(`error ${j.action}ing request:`,e),f(e=>({...e,processing:!1}));const t=e instanceof Error?e.message:"unknown error occurred";a.post({message:`Failed to ${j.action} API key. ${t}`,severity:"error",display:"transient"})}}}),(0,n.jsx)(W,{open:b.open,requests:b.requests,action:b.action,processing:b.processing,onClose:()=>C({open:!1,requests:[],action:"approve",processing:!1}),onConfirm:async()=>{if(!Z||0===b.requests.length)return;C(e=>({...e,processing:!0})),R({open:!1,results:[],isApprove:!0});const e="approve"===b.action,t=e?(e,t)=>i.bulkApproveRequests(e,t):(e,t)=>i.bulkRejectRequests(e,t);try{const s=b.requests.map(e=>({namespace:e.metadata.namespace,name:e.metadata.name})),n=await t(s,Z.reviewedBy)||[],r=n.filter(e=>e.success),i=0===n.filter(e=>!e.success).length,o=e?"approved":"rejected";C({open:!1,requests:[],action:"approve",processing:!1}),R({open:!i,results:n,isApprove:e}),A([]),l(e=>e+1),i&&a.post({message:`${r.length} API keys ${o}`,severity:"success",display:"transient"})}catch(e){console.error(`error bulk ${b.action}ing requests:`,e),C(e=>({...e,processing:!1}));const t=e instanceof Error?e.message:"unknown error occurred";a.post({message:`Failed to bulk ${b.action} API keys. ${t}`,severity:"error",display:"transient"})}}}),(0,n.jsx)(E,{open:w.open,results:w.results,isApprove:w.isApprove,onClose:()=>R({open:!1,results:[],isApprove:!0})})]})},O=()=>(0,n.jsxs)(i.Y,{themeId:"tool",children:[(0,n.jsx)(o.Y,{title:"API Key Approval",subtitle:"Review and approve API key requests",children:(0,n.jsx)(l.Y,{children:"Approve or reject API key access requests"})}),(0,n.jsx)(c.U,{children:(0,n.jsx)(M,{})})]})},45210:(e,t,s)=>{s.d(t,{Y:()=>q});var n=s(31085),r=s(22097),a=s(10394),i=s(64947),o=s(93453),l=s(29365),c=s(46423),d=s(5951),p=s(26343),u=s(28233),m=s(55197),g=s(37976),h=s(72501),v=s(5893),x=s(95478),A=(s(45250),s(49634),s(21006)),j=s(67550);const f=()=>{const{t:e}=(0,j.i)(A.O);return{url:"https://github.com/backstage/backstage/issues",items:[{title:e("supportConfig.default.title"),icon:"warning",links:[{title:e("supportConfig.default.linkTitle"),url:"https://github.com/backstage/backstage/blob/master/app-config.yaml"}]}]}};var y=s(27799);function b(e){const{id:t,Fallback:s=y.A,...a}=e,i=(0,r.useApp)().getSystemIcon(t)??s;return(0,n.jsx)(i,{...a})}function k(e){return(0,n.jsx)(b,{id:"help",...e})}var C=s(37725);const w=(0,g.makeStyles)({popoverList:{minWidth:260,maxWidth:400},menuItem:{whiteSpace:"normal"}},{name:"BackstageSupportButton"}),S=({icon:e})=>{const t=(0,r.useApp)(),s=e?t.getSystemIcon(e)??k:k;return(0,n.jsx)(s,{})},R=({link:e})=>(0,n.jsx)(C.N_,{to:e.url,children:e.title??e.url}),P=({item:e})=>(0,n.jsxs)(p.A,{button:!1,children:[(0,n.jsx)(c.A,{children:(0,n.jsx)(S,{icon:e.icon})}),(0,n.jsx)(d.A,{primary:e.title,secondary:e.links?.reduce((e,t,s)=>[...e,s>0&&(0,n.jsx)("br",{},s),(0,n.jsx)(R,{link:t},t.url)],[])})]});function q(e){const{t}=(0,j.i)(A.O),{title:s,items:c,children:d}=e,{items:g}=function(){const e=(0,r.useApiHolder)().get(r.configApiRef),t=e?.getOptionalConfig("app.support"),s=f();return t?{url:t.getString("url"),items:t.getConfigArray("items").flatMap(e=>({title:e.getString("title"),icon:e.getOptionalString("icon"),links:(e.getOptionalConfigArray("links")??[]).flatMap(e=>({url:e.getString("url"),title:e.getOptionalString("title")??""}))}))}:s}(),[y,b]=(0,x.useState)(!1),[C,S]=(0,x.useState)(null),R=w(),q=(0,r.useApi)(r.configApiRef).getOptionalConfig("app.support"),I=(0,v.A)(e=>e.breakpoints.down("sm")),B=e=>{S(e.currentTarget),b(!0)},N=()=>{b(!1)};return q?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.A,{display:"flex",ml:1,children:I?(0,n.jsx)(l.A,{color:"primary",size:"small",onClick:B,"data-testid":"support-button","aria-label":"Support",children:(0,n.jsx)(k,{})}):(0,n.jsx)(i.A,{"data-testid":"support-button","aria-label":"Support",color:"primary",onClick:B,startIcon:(0,n.jsx)(k,{}),children:t("supportButton.title")})}),(0,n.jsxs)(m.Ay,{"data-testid":"support-button-popover",open:y,anchorEl:C,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},onClose:N,children:[(0,n.jsxs)(u.A,{className:R.popoverList,autoFocusItem:Boolean(C),children:[s&&(0,n.jsx)(p.A,{button:!1,alignItems:"flex-start",className:R.menuItem,children:(0,n.jsx)(h.A,{variant:"subtitle1",children:s})}),x.Children.map(d,(e,t)=>(0,n.jsx)(p.A,{button:!1,alignItems:"flex-start",className:R.menuItem,children:e},`child-${t}`)),(c??g).map((e,t)=>(0,n.jsx)(P,{item:e},`item-${t}`))]}),(0,n.jsx)(o.A,{children:(0,n.jsx)(i.A,{color:"primary",onClick:N,"aria-label":"Close",children:t("supportButton.close")})})]})]}):null}}}]);
|
|
2
|
-
//# sourceMappingURL=3976.
|
|
1
|
+
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[3976],{12229:(e,t,s)=>{s.d(t,{Z:()=>A});var n=s(31085),r=s(95478),a=s.n(r),i=s(10394),o=s(72501),l=s(64947),c=s(37197),d=s(69621),p=s(12981),u=s(86901),m=s(69076),g=s(58837),h=s(6924),v=s(23164);const x=(0,g.A)(e=>({root:{width:240,minWidth:240,padding:e.spacing(2),borderRight:`1px solid ${e.palette.divider}`,backgroundColor:e.palette.background.paper,height:"100%",overflowY:"auto"},sectionTitle:{fontWeight:600,fontSize:"0.75rem",textTransform:"uppercase",letterSpacing:"0.05em",color:e.palette.text.secondary,marginBottom:e.spacing(1),display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer",userSelect:"none"},filterSection:{marginBottom:e.spacing(2)},checkbox:{padding:e.spacing(.5)},checkboxLabel:{fontSize:"0.875rem"},clearButton:{marginTop:e.spacing(2)},count:{fontSize:"0.75rem",color:e.palette.text.secondary,marginLeft:e.spacing(1)}})),A=({sections:e,filters:t,onChange:s,onClear:r})=>{const g=x(),[A,j]=a().useState(new Set(e.filter(e=>e.collapsed).map(e=>e.id))),f=Object.values(t).some(e=>e.length>0);return(0,n.jsxs)(i.A,{className:g.root,children:[(0,n.jsxs)(i.A,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[(0,n.jsx)(o.A,{variant:"subtitle2",children:"Filters"}),f&&(0,n.jsx)(l.A,{size:"small",color:"primary",onClick:()=>{const t={};e.forEach(e=>{t[e.id]=[]}),s(t),null==r||r()},children:"Clear all"})]}),(0,n.jsx)(c.A,{}),e.map(e=>{const r=A.has(e.id),a=(t[e.id]||[]).length;return(0,n.jsxs)(i.A,{className:g.filterSection,mt:2,children:[(0,n.jsxs)(i.A,{className:g.sectionTitle,onClick:()=>{return t=e.id,void j(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s});var t},children:[(0,n.jsxs)(i.A,{display:"flex",alignItems:"center",children:[(0,n.jsx)("span",{children:e.title}),a>0&&(0,n.jsxs)("span",{className:g.count,children:["(",a,")"]})]}),r?(0,n.jsx)(h.A,{fontSize:"small"}):(0,n.jsx)(v.A,{fontSize:"small"})]}),(0,n.jsx)(d.A,{in:!r,children:(0,n.jsx)(p.A,{children:e.options.map(r=>(0,n.jsx)(u.A,{control:(0,n.jsx)(m.A,{checked:(t[e.id]||[]).includes(r.value),onChange:()=>((e,n)=>{const r=t[e]||[],a=r.includes(n)?r.filter(e=>e!==n):[...r,n];s({...t,[e]:a})})(e.id,r.value),size:"small",className:g.checkbox,color:"primary"}),label:(0,n.jsxs)(i.A,{display:"flex",alignItems:"center",children:[(0,n.jsx)("span",{className:g.checkboxLabel,children:r.label}),void 0!==r.count&&(0,n.jsxs)("span",{className:g.count,children:["(",r.count,")"]})]})},r.value))})})]},e.id)})]})}},23164:(e,t,s)=>{var n=s(4293),r=s(78920);t.A=void 0;var a=r(s(95478)),i=(0,n(s(74044)).default)(a.createElement("path",{d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");t.A=i},27799:(e,t,s)=>{var n=s(4293),r=s(78920);t.A=void 0;var a=r(s(95478)),i=(0,n(s(74044)).default)(a.createElement("path",{d:"M21 5v6.59l-3-3.01-4 4.01-4-4-4 4-3-3.01V5c0-1.1.9-2 2-2h14c1.1 0 2 .9 2 2zm-3 6.42l3 3.01V19c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2v-6.58l3 2.99 4-4 4 4 4-3.99z"}),"BrokenImage");t.A=i},43976:(e,t,s)=>{s.r(t),s.d(t,{ApiKeyApprovalPage:()=>O});var n=s(31085),r=s(95478),a=s.n(r),i=s(289),o=s(15831),l=s(45210),c=s(46681),d=s(22097),p=s(70980),u=s(35015),m=s(37725),g=s(42367),h=s(25010),v=s(34955),x=s(46205),A=s(58837),j=s(76891),f=s(61477),y=s(10394),b=s(46805),k=s(72501),C=s(16249),w=s(93453),S=s(64947),R=s(78467),P=s(67720),q=s(4387),I=s(55429),B=s(92399),N=s(12229),z=s(46299);const $=(0,A.A)(e=>({container:{display:"flex",height:"100%",minHeight:400},tableContainer:{flex:1,overflow:"auto",padding:10},useCasePanel:{padding:e.spacing(2),backgroundColor:e.palette.background.default},useCaseLabel:{fontWeight:600,marginBottom:e.spacing(1),color:e.palette.text.secondary,textTransform:"uppercase",fontSize:"0.75rem"},bulkActions:{padding:e.spacing(2),backgroundColor:e.palette.background.default,borderBottom:`1px solid ${e.palette.divider}`,display:"flex",alignItems:"center",justifyContent:"space-between"}})),T=({open:e,request:t,action:s,processing:r,onClose:i,onConfirm:o})=>{var l,c;const[d,p]=a().useState(""),u="approve"===s?"Approve":"Reject",m="approve"===s?"Approving...":"Rejecting...",g="reject"===s,h=(null==t||null===(l=t.spec.requestedBy)||void 0===l?void 0:l.userId)||"",v=!g||d===h;return a().useEffect(()=>{e||p("")},[e]),(0,n.jsxs)(j.A,{open:e,onClose:r?void 0:i,maxWidth:"sm",fullWidth:!0,children:[(0,n.jsx)(f.A,{children:g?(0,n.jsxs)(y.A,{display:"flex",alignItems:"center",style:{gap:8},children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)("span",{children:[u," API Key"]})]}):(0,n.jsxs)("span",{children:[u," API Key"]})}),(0,n.jsx)(b.A,{children:t&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"User:"})," ",t.spec.requestedBy.userId]}),(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"API:"})," ",(null===(c=t.spec.apiProductRef)||void 0===c?void 0:c.name)||"unknown"]}),(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"Tier:"})," ",t.spec.planTier]}),(0,n.jsxs)(y.A,{mb:2,children:[(0,n.jsx)(k.A,{variant:"body2",component:"span",style:{fontWeight:"bold"},children:"Use Case:"})," ",(0,n.jsx)(k.A,{variant:"body2",component:"span",style:{whiteSpace:"pre-wrap"},children:t.spec.useCase||"-"})]}),g&&(0,n.jsxs)(y.A,{mt:2,children:[(0,n.jsxs)(k.A,{variant:"body2",color:"textSecondary",gutterBottom:!0,children:["Type ",(0,n.jsx)("strong",{children:h})," to confirm rejection:"]}),(0,n.jsx)(C.A,{fullWidth:!0,variant:"outlined",size:"small",value:d,onChange:e=>p(e.target.value),disabled:r,autoFocus:!0,placeholder:h})]})]})}),(0,n.jsxs)(w.A,{children:[(0,n.jsx)(S.A,{onClick:i,disabled:r,children:"Cancel"}),(0,n.jsx)(S.A,{onClick:o,color:"approve"===s?"primary":"secondary",variant:"contained",disabled:r||!v,startIcon:r?(0,n.jsx)(R.A,{size:16,color:"inherit"}):void 0,children:r?m:u})]})]})},W=({open:e,requests:t,action:s,processing:r,onClose:a,onConfirm:i})=>{const o="approve"===s,l=o?"Approve All":"Reject All",c=o?"Approving...":"Rejecting...";return(0,n.jsxs)(j.A,{open:e,onClose:r?void 0:a,maxWidth:"md",fullWidth:!0,children:[(0,n.jsxs)(f.A,{children:[o?"Approve":"Reject"," ",t.length," API Keys"]}),(0,n.jsxs)(b.A,{children:[(0,n.jsxs)(k.A,{variant:"body2",paragraph:!0,children:["You are about to ",o?"approve":"reject"," the following API keys:"]}),(0,n.jsx)(y.A,{mb:2,maxHeight:200,overflow:"auto",children:t.map(e=>{var t;return(0,n.jsx)(y.A,{mb:1,p:1,bgcolor:"background.default",children:(0,n.jsxs)(k.A,{variant:"body2",children:[(0,n.jsx)("strong",{children:e.spec.requestedBy.userId})," -"," ",(null===(t=e.spec.apiProductRef)||void 0===t?void 0:t.name)||"unknown"," (",e.spec.planTier,")"]})},`${e.metadata.namespace}/${e.metadata.name}`)})})]}),(0,n.jsxs)(w.A,{children:[(0,n.jsx)(S.A,{onClick:a,disabled:r,children:"Cancel"}),(0,n.jsx)(S.A,{onClick:i,color:o?"primary":"secondary",variant:"contained",disabled:r,startIcon:r?(0,n.jsx)(R.A,{size:16,color:"inherit"}):void 0,children:r?c:l})]})]})},F=({request:e})=>{const t=$();return(0,n.jsxs)(y.A,{className:t.useCasePanel,onClick:e=>e.stopPropagation(),children:[(0,n.jsx)(k.A,{className:t.useCaseLabel,children:"Use Case"}),(0,n.jsx)(k.A,{variant:"body2",children:e.spec.useCase||"No use case provided"})]})},L=(0,A.A)(e=>({successSection:{padding:e.spacing(2),backgroundColor:e.palette.success.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.success.main}40`},failureSection:{padding:e.spacing(2),backgroundColor:e.palette.error.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.error.main}40`},warningSection:{padding:e.spacing(2),backgroundColor:e.palette.warning.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.warning.main}40`},statRow:{display:"flex",alignItems:"center",gap:e.spacing(1)},errorList:{marginTop:e.spacing(2),padding:0,listStyle:"none"},errorItem:{padding:e.spacing(1.5),marginBottom:e.spacing(1),backgroundColor:e.palette.background.paper,borderRadius:e.shape.borderRadius,border:`1px solid ${e.palette.divider}`},errorName:{fontWeight:600,fontSize:"0.875rem",marginBottom:e.spacing(.5)},errorMessage:{fontSize:"0.813rem",color:e.palette.error.main,fontFamily:"monospace",wordBreak:"break-word"},expandButton:{marginTop:e.spacing(1),padding:e.spacing(.5)}})),E=({open:e,results:t,isApprove:s,onClose:a})=>{const i=L(),[o,l]=(0,r.useState)(!0),c=t.filter(e=>e.success),d=t.filter(e=>!e.success),p=c.length>0;return(0,n.jsxs)(j.A,{open:e,onClose:a,maxWidth:"md",fullWidth:!0,children:[(0,n.jsx)(f.A,{children:(0,n.jsx)(y.A,{display:"flex",alignItems:"center",style:{gap:8},children:p?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B.A,{style:{color:"#ff9800"}}),(0,n.jsxs)("span",{children:["Bulk ",s?"Approve":"Reject"," Completed with Issues"]})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)("span",{children:["Bulk ",s?"Approve":"Reject"," Failed"]})]})})}),(0,n.jsxs)(b.A,{children:[p&&(0,n.jsx)(y.A,{className:i.successSection,children:(0,n.jsxs)(y.A,{className:i.statRow,children:[(0,n.jsx)(I.A,{style:{color:"#4caf50"}}),(0,n.jsxs)(k.A,{variant:"body1",children:[(0,n.jsx)("strong",{children:c.length})," API key",1!==c.length?"s":""," ",s?"approved":"rejected"," successfully"]})]})}),(0,n.jsxs)(y.A,{className:p?i.warningSection:i.failureSection,children:[(0,n.jsxs)(y.A,{className:i.statRow,children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)(k.A,{variant:"body1",children:[(0,n.jsx)("strong",{children:d.length})," request",1!==d.length?"s":""," failed"]})]}),(0,n.jsxs)(S.A,{size:"small",className:i.expandButton,onClick:()=>l(!o),children:[o?"Hide":"Show"," Error Details"]}),o&&(0,n.jsx)("ul",{className:i.errorList,children:d.map((e,t)=>(0,n.jsxs)("li",{className:i.errorItem,children:[(0,n.jsxs)("div",{className:i.errorName,children:[e.namespace,"/",e.name]}),(0,n.jsx)("div",{className:i.errorMessage,children:e.error||"Unknown error"})]},e.name||t))})]})]}),(0,n.jsx)(w.A,{children:(0,n.jsx)(S.A,{onClick:a,color:"primary",variant:"contained",children:"Close"})})]})},M=()=>{var e;const t=$(),s=(0,d.useApi)(d.identityApiRef),a=(0,d.useApi)(d.alertApiRef),i=(0,d.useApi)(p.s),[o,l]=(0,r.useState)(0),[c,A]=(0,r.useState)([]),[j,f]=(0,r.useState)({open:!1,request:null,action:"approve",processing:!1}),[b,C]=(0,r.useState)({open:!1,requests:[],action:"approve",processing:!1}),[w,R]=(0,r.useState)({open:!1,results:[],isApprove:!0}),[L,M]=(0,r.useState)({status:[],apiProduct:[],tier:[]}),{allowed:O,loading:U,error:_}=(0,x.l)(v.z4),{allowed:Y,loading:D,error:H}=(0,x.l)(v.q0),K=U||D,V=_||H,{value:Z,loading:G,error:X}=(0,u.A)(async()=>{const e=(await s.getBackstageIdentity()).userEntityRef;try{const[s,r]=await Promise.all([i.getAllRequests(),i.getApiProducts()]),a=s.items||[],o=new Set;for(const s of r.items||[]){var t,n;(null===(n=s.metadata)||void 0===n||null===(t=n.annotations)||void 0===t?void 0:t["backstage.io/owner"])===e&&o.add(`${s.metadata.namespace}/${s.metadata.name}`)}return{allRequests:a,reviewedBy:e,ownedApiProducts:o}}catch(t){const s=t instanceof Error?t.message:"unknown error occurred";return a.post({message:`Failed to get resources. ${s}`,display:"transient",severity:"error"}),{allRequests:[],reviewedBy:e,ownedApiProducts:new Set}}},[i,s,o]),J=(0,r.useMemo)(()=>{if(!(null==Z?void 0:Z.allRequests))return[];const e={Approved:0,Pending:0,Rejected:0},t=new Map,s=new Map;return Z.allRequests.forEach(n=>{var r,a;const i=(null===(r=n.status)||void 0===r?void 0:r.phase)||"Pending";e[i]++;const o=(null===(a=n.spec.apiProductRef)||void 0===a?void 0:a.name)||"unknown";t.set(o,(t.get(o)||0)+1);const l=n.spec.planTier||"unknown";s.set(l,(s.get(l)||0)+1)}),[{id:"status",title:"Status",options:[{value:"Pending",label:"Pending",count:e.Pending},{value:"Approved",label:"Approved",count:e.Approved},{value:"Rejected",label:"Rejected",count:e.Rejected}]},{id:"apiProduct",title:"API Product",options:Array.from(t.entries()).map(([e,t])=>({value:e,label:e,count:t})),collapsed:t.size>5},{id:"tier",title:"Tier",options:Array.from(s.entries()).map(([e,t])=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),count:t}))}]},[null==Z?void 0:Z.allRequests]),Q=(0,r.useMemo)(()=>(null==Z?void 0:Z.allRequests)?Z.allRequests.filter(e=>{if(L.status.length>0){var t;const s=(null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending";if(!L.status.includes(s))return!1}if(L.apiProduct.length>0){var s;const t=(null===(s=e.spec.apiProductRef)||void 0===s?void 0:s.name)||"unknown";if(!L.apiProduct.includes(t))return!1}if(L.tier.length>0){const t=e.spec.planTier||"unknown";if(!L.tier.includes(t))return!1}return!0}):[],[null==Z?void 0:Z.allRequests,L]),ee=e=>new Date(e).toLocaleDateString("en-GB",{year:"numeric",month:"short",day:"numeric"}),te=[{title:"Requester",field:"spec.requestedBy.userId",render:e=>(0,n.jsx)(k.A,{variant:"body2",children:e.spec.requestedBy.userId})},{title:"API Product",field:"spec.apiProductRef.name",render:e=>{var t;const s=(null===(t=e.spec.apiProductRef)||void 0===t?void 0:t.name)||"unknown";return(0,n.jsx)(m.N_,{to:`/catalog/default/api/${s}`,children:(0,n.jsx)("strong",{children:s})})}},{title:"Status",field:"status.phase",render:e=>{var t;const s=(null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending";return(0,n.jsx)(P.A,{label:s,size:"small",style:(0,z.uU)(s)})}},{title:"Tier",field:"spec.planTier",render:e=>(0,n.jsx)(P.A,{label:e.spec.planTier,size:"small",variant:"outlined"})},{title:"Requested",field:"metadata.creationTimestamp",render:e=>(0,n.jsx)(k.A,{variant:"body2",children:e.metadata.creationTimestamp?ee(e.metadata.creationTimestamp):"-"})},{title:"Reviewed By",field:"status.reviewedBy",render:e=>{var t;if(!(null===(t=e.status)||void 0===t?void 0:t.reviewedBy))return(0,n.jsx)(k.A,{variant:"body2",color:"textSecondary",children:"-"});const s=e.status.reviewedBy.replace(/^user:default\//,""),r="system"===s;return(0,n.jsxs)(y.A,{children:[(0,n.jsx)(k.A,{variant:"body2",children:r?"Automatic":s}),e.status.reviewedAt&&(0,n.jsx)(k.A,{variant:"caption",color:"textSecondary",children:ee(e.status.reviewedAt)})]})}},{title:"Actions",filtering:!1,render:e=>{var t,s,r;if("Pending"!==((null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending"))return null;const a=`${e.metadata.namespace}/${(null===(s=e.spec.apiProductRef)||void 0===s?void 0:s.name)||"unknown"}`;var i;const o=null!==(i=null==Z||null===(r=Z.ownedApiProducts)||void 0===r?void 0:r.has(a))&&void 0!==i&&i;return O||Y&&o?(0,n.jsxs)(y.A,{display:"flex",style:{gap:8},children:[(0,n.jsx)(S.A,{size:"small",startIcon:(0,n.jsx)(I.A,{}),onClick:()=>{f({open:!0,request:e,action:"approve",processing:!1})},color:"primary",variant:"outlined",children:"Approve"}),(0,n.jsx)(S.A,{size:"small",startIcon:(0,n.jsx)(B.A,{}),onClick:()=>{f({open:!0,request:e,action:"reject",processing:!1})},color:"secondary",variant:"outlined",children:"Reject"})]}):null}}],se=(0,r.useMemo)(()=>[{render:e=>{var t;const s=e.rowData;return(null==s||null===(t=s.metadata)||void 0===t?void 0:t.name)?(0,n.jsx)(F,{request:s}):(0,n.jsx)(y.A,{})}}],[]);if(G||K)return(0,n.jsx)(y.A,{p:2,children:[...Array(5)].map((e,t)=>(0,n.jsx)(y.A,{p:2,children:(0,n.jsx)(q.A,{variant:"text",width:"100%"})},t))});if(X)return(0,n.jsx)(g._,{error:X});if(V)return(0,n.jsx)(y.A,{p:2,children:(0,n.jsxs)(k.A,{color:"error",children:["Unable to check permissions: ",V.message]})});const ne=O||Y;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(y.A,{className:t.container,children:[(0,n.jsx)(N.Z,{sections:J,filters:L,onChange:M}),(0,n.jsxs)(y.A,{className:t.tableContainer,children:[c.length>0&&(0,n.jsxs)(y.A,{className:t.bulkActions,children:[(0,n.jsxs)(k.A,{variant:"body2",children:[c.length," request",1!==c.length?"s":""," selected"]}),(0,n.jsxs)(y.A,{display:"flex",style:{gap:8},children:[(0,n.jsx)(S.A,{size:"small",variant:"contained",color:"primary",startIcon:(0,n.jsx)(I.A,{}),onClick:()=>{0!==c.length&&C({open:!0,requests:c,action:"approve",processing:!1})},children:"Approve Selected"}),(0,n.jsx)(S.A,{size:"small",variant:"contained",color:"secondary",startIcon:(0,n.jsx)(B.A,{}),onClick:()=>{0!==c.length&&C({open:!0,requests:c,action:"reject",processing:!1})},children:"Reject Selected"})]})]}),0===Q.length?(0,n.jsx)(y.A,{p:4,textAlign:"center",children:(0,n.jsx)(k.A,{variant:"body1",color:"textSecondary",children:0===(null==Z||null===(e=Z.allRequests)||void 0===e?void 0:e.length)?"No API keys found.":"No API keys match the selected filters."})}):(0,n.jsx)(h.X,{options:{selection:ne,showSelectAllCheckbox:Q.some(e=>{var t;return!(null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending"===e.status.phase}),selectionProps:e=>{var t,s;return{disabled:"Pending"!==(null===(t=e.status)||void 0===t?void 0:t.phase)&&void 0!==(null===(s=e.status)||void 0===s?void 0:s.phase)}},paging:Q.length>10,pageSize:20,search:!0,filtering:!1,debounceInterval:300,showTextRowsSelected:!1,toolbar:!0,emptyRowsWhenPaging:!1},columns:te,data:Q.map(e=>{const t=c.some(t=>t.metadata.name===e.metadata.name&&t.metadata.namespace===e.metadata.namespace);return{...e,id:e.metadata.name,tableData:{checked:t}}}),onSelectionChange:e=>{const t=e.filter(e=>{var t;return!(null===(t=e.status)||void 0===t?void 0:t.phase)||"Pending"===e.status.phase});A(t)},detailPanel:se})]})]}),(0,n.jsx)(T,{open:j.open,request:j.request,action:j.action,processing:j.processing,onClose:()=>f({open:!1,request:null,action:"approve",processing:!1}),onConfirm:async()=>{if(!j.request||!Z)return;f(e=>({...e,processing:!0}));const e="approve"===j.action?(e,t,s)=>i.approveRequest(e,t,s):(e,t,s)=>i.rejectRequest(e,t,s);try{await e(j.request.metadata.namespace,j.request.metadata.name,Z.reviewedBy),f({open:!1,request:null,action:"approve",processing:!1}),A(e=>e.filter(e=>{var t,s;return e.metadata.name!==(null===(t=j.request)||void 0===t?void 0:t.metadata.name)||e.metadata.namespace!==(null===(s=j.request)||void 0===s?void 0:s.metadata.namespace)})),l(e=>e+1);const t="approve"===j.action?"approved":"rejected";a.post({message:`API key ${t}`,severity:"success",display:"transient"})}catch(e){console.error(`error ${j.action}ing request:`,e),f(e=>({...e,processing:!1}));const t=e instanceof Error?e.message:"unknown error occurred";a.post({message:`Failed to ${j.action} API key. ${t}`,severity:"error",display:"transient"})}}}),(0,n.jsx)(W,{open:b.open,requests:b.requests,action:b.action,processing:b.processing,onClose:()=>C({open:!1,requests:[],action:"approve",processing:!1}),onConfirm:async()=>{if(!Z||0===b.requests.length)return;C(e=>({...e,processing:!0})),R({open:!1,results:[],isApprove:!0});const e="approve"===b.action,t=e?(e,t)=>i.bulkApproveRequests(e,t):(e,t)=>i.bulkRejectRequests(e,t);try{const s=b.requests.map(e=>({namespace:e.metadata.namespace,name:e.metadata.name})),n=await t(s,Z.reviewedBy)||[],r=n.filter(e=>e.success),i=0===n.filter(e=>!e.success).length,o=e?"approved":"rejected";C({open:!1,requests:[],action:"approve",processing:!1}),R({open:!i,results:n,isApprove:e}),A([]),l(e=>e+1),i&&a.post({message:`${r.length} API keys ${o}`,severity:"success",display:"transient"})}catch(e){console.error(`error bulk ${b.action}ing requests:`,e),C(e=>({...e,processing:!1}));const t=e instanceof Error?e.message:"unknown error occurred";a.post({message:`Failed to bulk ${b.action} API keys. ${t}`,severity:"error",display:"transient"})}}}),(0,n.jsx)(E,{open:w.open,results:w.results,isApprove:w.isApprove,onClose:()=>R({open:!1,results:[],isApprove:!0})})]})},O=()=>(0,n.jsxs)(i.Y,{themeId:"tool",children:[(0,n.jsx)(o.Y,{title:"API Key Approval",subtitle:"Review and approve API key requests",children:(0,n.jsx)(l.Y,{children:"Approve or reject API key access requests"})}),(0,n.jsx)(c.U,{children:(0,n.jsx)(M,{})})]})},45210:(e,t,s)=>{s.d(t,{Y:()=>q});var n=s(31085),r=s(22097),a=s(10394),i=s(64947),o=s(93453),l=s(29365),c=s(46423),d=s(5951),p=s(26343),u=s(28233),m=s(55197),g=s(37976),h=s(72501),v=s(5893),x=s(95478),A=(s(45250),s(49634),s(21006)),j=s(67550);const f=()=>{const{t:e}=(0,j.i)(A.O);return{url:"https://github.com/backstage/backstage/issues",items:[{title:e("supportConfig.default.title"),icon:"warning",links:[{title:e("supportConfig.default.linkTitle"),url:"https://github.com/backstage/backstage/blob/master/app-config.yaml"}]}]}};var y=s(27799);function b(e){const{id:t,Fallback:s=y.A,...a}=e,i=(0,r.useApp)().getSystemIcon(t)??s;return(0,n.jsx)(i,{...a})}function k(e){return(0,n.jsx)(b,{id:"help",...e})}var C=s(37725);const w=(0,g.makeStyles)({popoverList:{minWidth:260,maxWidth:400},menuItem:{whiteSpace:"normal"}},{name:"BackstageSupportButton"}),S=({icon:e})=>{const t=(0,r.useApp)(),s=e?t.getSystemIcon(e)??k:k;return(0,n.jsx)(s,{})},R=({link:e})=>(0,n.jsx)(C.N_,{to:e.url,children:e.title??e.url}),P=({item:e})=>(0,n.jsxs)(p.A,{button:!1,children:[(0,n.jsx)(c.A,{children:(0,n.jsx)(S,{icon:e.icon})}),(0,n.jsx)(d.A,{primary:e.title,secondary:e.links?.reduce((e,t,s)=>[...e,s>0&&(0,n.jsx)("br",{},s),(0,n.jsx)(R,{link:t},t.url)],[])})]});function q(e){const{t}=(0,j.i)(A.O),{title:s,items:c,children:d}=e,{items:g}=function(){const e=(0,r.useApiHolder)().get(r.configApiRef),t=e?.getOptionalConfig("app.support"),s=f();return t?{url:t.getString("url"),items:t.getConfigArray("items").flatMap(e=>({title:e.getString("title"),icon:e.getOptionalString("icon"),links:(e.getOptionalConfigArray("links")??[]).flatMap(e=>({url:e.getString("url"),title:e.getOptionalString("title")??""}))}))}:s}(),[y,b]=(0,x.useState)(!1),[C,S]=(0,x.useState)(null),R=w(),q=(0,r.useApi)(r.configApiRef).getOptionalConfig("app.support"),I=(0,v.A)(e=>e.breakpoints.down("sm")),B=e=>{S(e.currentTarget),b(!0)},N=()=>{b(!1)};return q?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.A,{display:"flex",ml:1,children:I?(0,n.jsx)(l.A,{color:"primary",size:"small",onClick:B,"data-testid":"support-button","aria-label":"Support",children:(0,n.jsx)(k,{})}):(0,n.jsx)(i.A,{"data-testid":"support-button","aria-label":"Support",color:"primary",onClick:B,startIcon:(0,n.jsx)(k,{}),children:t("supportButton.title")})}),(0,n.jsxs)(m.Ay,{"data-testid":"support-button-popover",open:y,anchorEl:C,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},onClose:N,children:[(0,n.jsxs)(u.A,{className:R.popoverList,autoFocusItem:Boolean(C),children:[s&&(0,n.jsx)(p.A,{button:!1,alignItems:"flex-start",className:R.menuItem,children:(0,n.jsx)(h.A,{variant:"subtitle1",children:s})}),x.Children.map(d,(e,t)=>(0,n.jsx)(p.A,{button:!1,alignItems:"flex-start",className:R.menuItem,children:e},`child-${t}`)),(c??g).map((e,t)=>(0,n.jsx)(P,{item:e},`item-${t}`))]}),(0,n.jsx)(o.A,{children:(0,n.jsx)(i.A,{color:"primary",onClick:N,"aria-label":"Close",children:t("supportButton.close")})})]})]}):null}}}]);
|
|
2
|
+
//# sourceMappingURL=3976.e8a8fda2.chunk.js.map
|