diff --git a/.ibm/pipelines/resources/config_map/app-config-rhdh.yaml b/.ibm/pipelines/resources/config_map/app-config-rhdh.yaml index f640180c11..ff52d87084 100644 --- a/.ibm/pipelines/resources/config_map/app-config-rhdh.yaml +++ b/.ibm/pipelines/resources/config_map/app-config-rhdh.yaml @@ -1,4 +1,6 @@ app: + sidebar: + logo: true support: url: https://github.com/redhat-developer/rhdh/issues items: @@ -9,8 +11,12 @@ app: baseUrl: ${RHDH_BASE_URL} title: Red Hat Developer Hub branding: - fullLogo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLVNWRy0yMDAxMDkwNC9EVEQvc3ZnMTAuZHRkIj4KPCEtLSBDcmVhdGVkIHVzaW5nIEtyaXRhOiBodHRwczovL2tyaXRhLm9yZyAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAogICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICB4bWxuczprcml0YT0iaHR0cDovL2tyaXRhLm9yZy9uYW1lc3BhY2VzL3N2Zy9rcml0YSIKICAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgIHdpZHRoPSIxNjBwdCIKICAgIGhlaWdodD0iODBwdCIKICAgIHZpZXdCb3g9IjAgMCAxNjAgODAiPgo8ZGVmcy8+Cjx0ZXh0IGlkPSJzaGFwZTAiIGtyaXRhOnVzZVJpY2hUZXh0PSJ0cnVlIiB0ZXh0LXJlbmRlcmluZz0iYXV0byIga3JpdGE6dGV4dFZlcnNpb249IjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjE3NzMyMDYxNTAzNDE1NSwgNTQuMjYyNSkiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZS1vcGFjaXR5PSIwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLWxpbmVqb2luPSJiZXZlbCIgbGV0dGVyLXNwYWNpbmc9IjAiIHdvcmQtc3BhY2luZz0iMCIgc3R5bGU9InRleHQtYWxpZ246IHN0YXJ0O3RleHQtYWxpZ24tbGFzdDogYXV0bztmb250LWZhbWlseTogUmVkIEhhdCBEaXNwbGF5O2ZvbnQtc2l6ZTogNDA7Zm9udC13ZWlnaHQ6IDcwMDsiPjx0c3BhbiB4PSIwIj5RRTwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGlkPSJzaGFwZTEiIGtyaXRhOnVzZVJpY2hUZXh0PSJ0cnVlIiB0ZXh0LXJlbmRlcmluZz0iYXV0byIga3JpdGE6dGV4dFZlcnNpb249IjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU3LjU2NDgyMDYxNTAzNDIsIDM1LjcyOTY4NzUpIiBmaWxsPSIjZmZmZmZmIiBzdHJva2Utb3BhY2l0eT0iMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIHN0cm9rZS1saW5lam9pbj0iYmV2ZWwiIGxldHRlci1zcGFjaW5nPSIwIiB3b3JkLXNwYWNpbmc9IjAiIHN0eWxlPSJ0ZXh0LWFsaWduOiBzdGFydDt0ZXh0LWFsaWduLWxhc3Q6IGF1dG87Zm9udC1mYW1pbHk6IFJlZCBIYXQgVGV4dDtmb250LXNpemU6IDE0O2ZvbnQtd2VpZ2h0OiA3MDA7Ij48dHNwYW4geD0iMCI+UmVkIEhhdDwvdHNwYW4+PHRzcGFuIHg9IjAiIGR5PSIxOC41MTU2MjUiPkRldmVsb3BlciBIdWI8L3RzcGFuPjwvdGV4dD4KPC9zdmc+Cg==" - iconLogo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLVNWRy0yMDAxMDkwNC9EVEQvc3ZnMTAuZHRkIj4KPCEtLSBDcmVhdGVkIHVzaW5nIEtyaXRhOiBodHRwczovL2tyaXRhLm9yZyAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAogICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICB4bWxuczprcml0YT0iaHR0cDovL2tyaXRhLm9yZy9uYW1lc3BhY2VzL3N2Zy9rcml0YSIKICAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgIHdpZHRoPSI4MHB0IgogICAgaGVpZ2h0PSI4MHB0IgogICAgdmlld0JveD0iMCAwIDgwIDgwIj4KPGRlZnMvPgo8dGV4dCBpZD0ic2hhcGUwIiBrcml0YTp1c2VSaWNoVGV4dD0idHJ1ZSIgdGV4dC1yZW5kZXJpbmc9ImF1dG8iIGtyaXRhOnRleHRWZXJzaW9uPSIzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjU5OTk5OTk5OTk5OTk5LCA2Mi44MTI1KSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlLW9wYWNpdHk9IjAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2UtbGluZWpvaW49ImJldmVsIiBsZXR0ZXItc3BhY2luZz0iMCIgd29yZC1zcGFjaW5nPSIwIiBzdHlsZT0idGV4dC1hbGlnbjogc3RhcnQ7dGV4dC1hbGlnbi1sYXN0OiBhdXRvO2ZvbnQtZmFtaWx5OiBSZWQgSGF0IE1vbm87Zm9udC1zaXplOiA2NDtmb250LXdlaWdodDogNzAwOyI+PHRzcGFuIHg9IjAiPlFFPC90c3Bhbj48L3RleHQ+Cjwvc3ZnPgo=" + fullLogo: # QE Red Hat Developer Hub + light: "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22160pt%22%20height%3D%2280pt%22%20viewBox%3D%220%200%20160%2080%22%3E%3Cg%20fill%3D%22%23000%22%20style%3D%22text-align%3Astart%3Btext-align-last%3Aauto%22%20letter-spacing%3D%220%22%3E%3Ctext%20font-family%3D%22Red%20Hat%20Display%22%20font-size%3D%2240%22%20font-weight%3D%22700%22%20transform%3D%22translate(-.177%2054.263)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3EQE%3C%2Ftspan%3E%3C%2Ftext%3E%3Ctext%20font-family%3D%22Red%20Hat%20Text%22%20font-size%3D%2214%22%20font-weight%3D%22700%22%20transform%3D%22translate(57.565%2035.73)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3ERed%20Hat%3C%2Ftspan%3E%3Ctspan%20x%3D%220%22%20dy%3D%2218.516%22%3EDeveloper%20Hub%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E" + dark: "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22160pt%22%20height%3D%2280pt%22%20viewBox%3D%220%200%20160%2080%22%3E%3Cg%20fill%3D%22%23fff%22%20style%3D%22text-align%3Astart%3Btext-align-last%3Aauto%22%20letter-spacing%3D%220%22%3E%3Ctext%20font-family%3D%22Red%20Hat%20Display%22%20font-size%3D%2240%22%20font-weight%3D%22700%22%20transform%3D%22translate(-.177%2054.263)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3EQE%3C%2Ftspan%3E%3C%2Ftext%3E%3Ctext%20font-family%3D%22Red%20Hat%20Text%22%20font-size%3D%2214%22%20font-weight%3D%22700%22%20transform%3D%22translate(57.565%2035.73)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3ERed%20Hat%3C%2Ftspan%3E%3Ctspan%20x%3D%220%22%20dy%3D%2218.516%22%3EDeveloper%20Hub%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E" + iconLogo: # QE icon + light: "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2280pt%22%20height%3D%2280pt%22%20viewBox%3D%220%200%2080%2080%22%3E%3Ctext%20fill%3D%22%23000%22%20font-family%3D%22Red%20Hat%20Mono%22%20font-size%3D%2264%22%20font-weight%3D%22700%22%20letter-spacing%3D%220%22%20style%3D%22text-align%3Astart%3Btext-align-last%3Aauto%22%20transform%3D%22translate(1.6%2062.813)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3EQE%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fsvg%3E" + dark: "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2280pt%22%20height%3D%2280pt%22%20viewBox%3D%220%200%2080%2080%22%3E%3Ctext%20fill%3D%22%23fff%22%20font-family%3D%22Red%20Hat%20Mono%22%20font-size%3D%2264%22%20font-weight%3D%22700%22%20letter-spacing%3D%220%22%20style%3D%22text-align%3Astart%3Btext-align-last%3Aauto%22%20transform%3D%22translate(1.6%2062.813)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3EQE%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fsvg%3E" theme: light: primaryColor: "#2A61A7" @@ -75,7 +81,7 @@ auth: # see https://backstage.io/docs/auth/ to learn about auth providers environment: development session: - secret: superSecretSecret + secret: superSecretSecret providers: guest: dangerouslyAllowOutsideDevelopment: true @@ -123,7 +129,7 @@ proxy: X-Requested-With: 'XMLHttpRequest' changeOrigin: true secure: true - '/add-test-header': + '/add-test-header': target: ${RHDH_BASE_URL_HTTP}/api/simple-chat credentials: forward headers: diff --git a/app-config.dynamic-plugins.yaml b/app-config.dynamic-plugins.yaml index 3f16965a71..9b9f4efc6a 100644 --- a/app-config.dynamic-plugins.yaml +++ b/app-config.dynamic-plugins.yaml @@ -496,6 +496,3 @@ dynamicPlugins: title: Catalog app: title: Red Hat Developer Hub - branding: - fullLogo: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxvZ29zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgOTMxLjggMjQ0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA5MzEuOCAyNDQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCiAgICAgIDxwYXRoCiAgICAgICAgZmlsbD0iI2ZmZiIKICAgICAgICBkPSJNMjI4LjcgMjE5LjV2LTcyLjhoMjUuN2M1LjUgMCAxMC43LjkgMTUuNCAyLjggNC43IDEuOSA4LjggNC40IDEyLjIgNy43IDMuNCAzLjMgNiA3LjEgOCAxMS42IDEuOSA0LjUgMi45IDkuMyAyLjkgMTQuNHMtMSA5LjktMi45IDE0LjRjLTEuOSA0LjQtNC42IDguMy04IDExLjUtMy40IDMuMi03LjUgNS44LTEyLjIgNy42LTQuNyAxLjktOS44IDIuOC0xNS40IDIuOGgtMjUuN3ptMjUuOC02M2gtMTV2NTMuMmgxNWMzLjggMCA3LjQtLjcgMTAuNy0yIDMuMy0xLjQgNi4xLTMuMiA4LjUtNS42IDIuNC0yLjQgNC4zLTUuMiA1LjctOC40IDEuNC0zLjIgMi4xLTYuNyAyLjEtMTAuNXMtLjctNy4yLTIuMS0xMC41Yy0xLjQtMy4zLTMuMy02LjEtNS43LTguNS0yLjQtMi40LTUuMi00LjMtOC41LTUuNy0zLjMtMS4zLTYuOC0yLTEwLjctMnpNMzAwLjcgMTkzYzAtMy43LjctNy4zIDItMTAuNiAxLjQtMy4zIDMuMi02LjIgNS42LTguNyAyLjQtMi41IDUuMi00LjQgOC40LTUuOCAzLjItMS40IDYuNy0yLjEgMTAuNS0yLjEgMy42IDAgNyAuNyAxMC4xIDIuMSAzLjIgMS40IDUuOSAzLjQgOC4xIDUuOCAyLjMgMi41IDQgNS40IDUuNCA4LjggMS4zIDMuNCAyIDcgMiAxMC45djNIMzExYy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTM3Ny43IDIxOS41bC0yMi45LTUyLjloMTEuNGwxNi41IDM5LjYgMTYuNS0zOS42aDExLjFsLTIyLjkgNTIuOWgtOS43ek00MTIuNCAxOTNjMC0zLjcuNy03LjMgMi0xMC42IDEuNC0zLjMgMy4yLTYuMiA1LjYtOC43IDIuNC0yLjUgNS4yLTQuNCA4LjQtNS44IDMuMi0xLjQgNi43LTIuMSAxMC41LTIuMSAzLjYgMCA3IC43IDEwLjEgMi4xIDMuMiAxLjQgNS45IDMuNCA4LjEgNS44IDIuMyAyLjUgNCA1LjQgNS40IDguOCAxLjMgMy40IDIgNyAyIDEwLjl2M2gtNDEuOGMuNyA0LjQgMi43IDggNiAxMC45IDMuMyAyLjkgNy4zIDQuMyAxMS45IDQuMyAyLjYgMCA1LS40IDcuNC0xLjIgMi40LS44IDQuNC0yIDYtMy40bDYuNyA2LjZjLTMuMSAyLjQtNi4zIDQuMi05LjYgNS4zLTMuMyAxLjEtNi45IDEuNy0xMC45IDEuNy0zLjkgMC03LjUtLjctMTAuOS0yLjEtMy40LTEuNC02LjMtMy4zLTguOC01LjgtMi41LTIuNC00LjUtNS4zLTUuOS04LjctMS41LTMuNS0yLjItNy4xLTIuMi0xMXptMjYuMy0xOC41Yy00IDAtNy41IDEuMy0xMC40IDQtMi45IDIuNi00LjggNi01LjUgMTAuMmgzMS40Yy0uNy00LTIuNS03LjQtNS40LTEwLjEtMi45LTIuNy02LjMtNC4xLTEwLjEtNC4xek00ODQuNyAxNDQuNXY3NS4xaC0xMC40di03Mi44bDEwLjQtMi4zek00OTQuNSAxOTNjMC0zLjguNy03LjQgMi4xLTEwLjggMS40LTMuNCAzLjQtNi4zIDUuOS04LjcgMi41LTIuNSA1LjQtNC40IDguOC01LjggMy40LTEuNCA3LTIuMSAxMC44LTIuMSAzLjggMCA3LjQuNyAxMC44IDIuMSAzLjQgMS40IDYuMyAzLjQgOC43IDUuOCAyLjUgMi41IDQuNCA1LjQgNS44IDguNyAxLjQgMy40IDIuMSA3IDIuMSAxMC44IDAgMy45LS43IDcuNS0yLjEgMTAuOS0xLjQgMy40LTMuNCA2LjMtNS44IDguNy0yLjUgMi41LTUuNCA0LjQtOC43IDUuOC0zLjQgMS40LTcgMi4xLTEwLjggMi4xLTMuOCAwLTcuNC0uNy0xMC44LTIuMS0zLjQtMS40LTYuMy0zLjQtOC44LTUuOC0yLjUtMi41LTQuNS01LjQtNS45LTguNy0xLjQtMy40LTIuMS03LTIuMS0xMC45em00NC45IDBjMC01LjEtMS43LTkuNS01LjEtMTMtMy40LTMuNS03LjUtNS4zLTEyLjMtNS4zcy04LjkgMS44LTEyLjMgNS4zYy0zLjQgMy41LTUuMSA3LjktNS4xIDEzczEuNyA5LjUgNSAxMy4xYzMuNCAzLjYgNy41IDUuNCAxMi4zIDUuNCA0LjggMCA4LjktMS44IDEyLjMtNS40IDMuNS0zLjYgNS4yLTcuOSA1LjItMTMuMXpNNTU5LjMgMjQxLjF2LTc0LjVoMTAuM3Y1YzIuMi0xLjkgNC43LTMuMyA3LjUtNC4zczUuNy0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy4zIDIuMSA2LjkgMi4xIDEwLjYgMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjQtMi43LS45LTUuMS0yLjItNy4zLTMuOFYyNDFoLTEwLjR6bTI1LTY2LjNjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3pNNjIwIDE5M2MwLTMuNy43LTcuMyAyLTEwLjYgMS40LTMuMyAzLjItNi4yIDUuNi04LjcgMi40LTIuNSA1LjItNC40IDguNC01LjggMy4yLTEuNCA2LjctMi4xIDEwLjUtMi4xIDMuNiAwIDcgLjcgMTAuMSAyLjEgMy4yIDEuNCA1LjkgMy40IDguMSA1LjggMi4zIDIuNSA0IDUuNCA1LjQgOC44IDEuMyAzLjQgMiA3IDIgMTAuOXYzaC00MS44Yy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTY4MS45IDIxOS41di01Mi45aDEwLjR2Ni42YzEuNy0yLjYgMy45LTQuNiA2LjQtNS44IDIuNi0xLjIgNS4yLTEuOSA4LTEuOSAxLjIgMCAyLjIuMSAzLjEuMi45LjEgMS42LjMgMi4zLjZ2OS40Yy0uOC0uMy0xLjgtLjUtMi45LS44LTEuMS0uMi0yLjItLjQtMy4zLS40LTIuOCAwLTUuNC43LTcuOCAyLjItMi40IDEuNS00LjQgMy45LTUuOCA3LjN2MzUuNWgtMTAuNHpNNzQzLjcgMjE5LjV2LTcyLjhoMTAuOXYzMS4yaDM4Ljd2LTMxLjJoMTAuOXY3Mi44aC0xMC45di0zMS43aC0zOC43djMxLjdoLTEwLjl6TTgyOCAxNjYuNnYzMS41YzAgNC4xIDEuMiA3LjMgMy41IDkuOCAyLjQgMi40IDUuNiAzLjYgOS43IDMuNiAyLjggMCA1LjMtLjYgNy41LTEuOCAyLjItMS4yIDQuMS0yLjkgNS41LTUuMXYtMzguMWgxMC40djUyLjloLTEwLjR2LTUuM2MtMi4xIDIuMS00LjUgMy43LTcuMSA0LjctMi43IDEuMS01LjYgMS42LTguOCAxLjYtNiAwLTExLTEuOS0xNC44LTUuOC0zLjgtMy45LTUuOC04LjgtNS44LTE0Ljl2LTMzLjNIODI4ek05MjkuOSAxOTNjMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjRzLTUuMi0yLjItNy40LTR2NC41aC0xMC4zdi03Mi44bDEwLjQtMi4zdjI3YzIuMi0xLjkgNC43LTMuMyA3LjQtNC4zczUuNi0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy42IDIuMSA3LjIgMi4xIDEwLjl6bS0yOC4yLTE4LjJjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3oiCiAgICAgIC8+CiAgPGc+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xMjkgODVjMTIuNSAwIDMwLjYtMi42IDMwLjYtMTcuNSAwLTEuMiAwLTIuMy0uMy0zLjRsLTcuNC0zMi40Yy0xLjctNy4xLTMuMi0xMC4zLTE1LjctMTYuNkMxMjYuNCAxMC4yIDEwNS4zIDIgOTkgMmMtNS44IDAtNy41IDcuNS0xNC40IDcuNS02LjcgMC0xMS42LTUuNi0xNy45LTUuNi02IDAtOS45IDQuMS0xMi45IDEyLjUgMCAwLTguNCAyMy43LTkuNSAyNy4yLS4zLjctLjMgMS40LS4zIDEuOUM0NCA1NC44IDgwLjMgODUgMTI5IDg1bTMyLjUtMTEuNGMxLjcgOC4yIDEuNyA5LjEgMS43IDEwLjEgMCAxNC0xNS43IDIxLjgtMzYuNCAyMS44LTQ2LjggMC04Ny43LTI3LjQtODcuNy00NS41IDAtMi44LjYtNS40IDEuNS03LjMtMTYuOC44LTM4LjYgMy44LTM4LjYgMjNDMiAxMDcuMiA3Ni42IDE0NiAxMzUuNyAxNDZjNDUuMyAwIDU2LjctMjAuNSA1Ni43LTM2LjYtLjEtMTIuOC0xMS0yNy4yLTMwLjktMzUuOCIKICAgICAgICAgIGZpbGw9IiNlMDAiCiAgICAgICAgLz4KICAgIDxwYXRoIGQ9Ik0xNjEuNSA3My42YzEuNyA4LjIgMS43IDkuMSAxLjcgMTAuMSAwIDE0LTE1LjcgMjEuOC0zNi40IDIxLjgtNDYuOCAwLTg3LjctMjcuNC04Ny43LTQ1LjUgMC0yLjguNi01LjQgMS41LTcuM2wzLjctOS4xYy0uMy43LS4zIDEuNC0uMyAxLjlDNDQgNTQuOCA4MC4zIDg1IDEyOSA4NWMxMi41IDAgMzAuNi0yLjYgMzAuNi0xNy41IDAtMS4yIDAtMi4zLS4zLTMuNGwyLjIgOS41eiIgLz4KICAgIDxwYXRoCiAgICAgIGZpbGw9IiNmZmYiCiAgICAgIGQ9Ik01ODEuMiA5NC4zYzAgMTEuOSA3LjIgMTcuNyAyMC4yIDE3LjcgMy4yIDAgOC42LS43IDExLjktMS43Vjk2LjVjLTIuOC44LTQuOSAxLjItNy43IDEuMi01LjQgMC03LjQtMS43LTcuNC02LjdWNjkuOGgxNS42VjU1LjZoLTE1LjZ2LTE4bC0xNyAzLjd2MTQuM0g1NzB2MTQuMmgxMS4zdjI0LjV6bS01Mi45LjNjMC0zLjcgMy43LTUuNSA5LjMtNS41IDMuNyAwIDcgLjUgMTAuMSAxLjN2Ny4yYy0zLjIgMS44LTYuOCAyLjYtMTAuNiAyLjYtNS41IDAtOC44LTIuMS04LjgtNS42bTUuMiAxNy42YzYgMCAxMC44LTEuMyAxNS40LTQuM3YzLjRoMTYuOFY3NS42YzAtMTMuNi05LjEtMjEtMjQuNC0yMS04LjUgMC0xNi45IDItMjYgNi4xbDYuMSAxMi41YzYuNS0yLjcgMTItNC40IDE2LjgtNC40IDcgMCAxMC42IDIuNyAxMC42IDguM3YyLjdjLTQtMS4xLTguMi0xLjYtMTIuNi0xLjYtMTQuMyAwLTIyLjkgNi0yMi45IDE2LjcgMCA5LjggNy44IDE3LjMgMjAuMiAxNy4zbS05Mi40LTFoMTguMVY4Mi40aDMwLjN2MjguOGgxOC4xVjM3LjZoLTE4LjF2MjguM2gtMzAuM1YzNy42aC0xOC4xdjczLjZ6bS02OS0yNy44YzAtOCA2LjMtMTQuMSAxNC42LTE0LjEgNC42IDAgOC44IDEuNiAxMS44IDQuM1Y5M2MtMyAyLjktNyA0LjQtMTEuOCA0LjQtOC4yLjEtMTQuNi02LTE0LjYtMTRtMjYuNiAyNy44aDE2LjhWMzMuOWwtMTcgMy43djIwLjljLTQuMi0yLjQtOS0zLjctMTQuMi0zLjctMTYuMiAwLTI4LjkgMTIuNS0yOC45IDI4LjVzMTIuNSAyOC42IDI4LjQgMjguNmM1LjUgMCAxMC42LTEuNyAxNC45LTQuOHY0LjF6bS03Ny4yLTQyLjdjNS40IDAgOS45IDMuNSAxMS43IDguOEgzMTBjMS43LTUuNSA1LjktOC44IDExLjUtOC44bS0yOC43IDE1YzAgMTYuMiAxMy4zIDI4LjggMzAuMyAyOC44IDkuNCAwIDE2LjItMi41IDIzLjItOC40bC0xMS4zLTEwYy0yLjYgMi43LTYuNSA0LjItMTEuMSA0LjItNi4zIDAtMTEuNS0zLjUtMTMuNy04LjhoMzkuNlY4NWMwLTE3LjctMTEuOS0zMC40LTI4LjEtMzAuNC0xNi4xLjEtMjguOSAxMi43LTI4LjkgMjguOW0tMjkuMy0zMC40YzYgMCA5LjQgMy44IDkuNCA4LjNzLTMuNCA4LjMtOS40IDguM2gtMTcuOVY1My4xaDE3Ljl6bS0zNiA1OC4xaDE4LjFWODQuNGgxMy44bDEzLjkgMjYuOGgyMC4ybC0xNi4yLTI5LjRjOC43LTMuOCAxMy45LTExLjcgMTMuOS0yMC43IDAtMTMuMy0xMC40LTIzLjUtMjYtMjMuNWgtMzcuN3Y3My42eiIKICAgIC8+CiAgICAgIDwvZz4KPC9zdmc+Cg== - iconLogo: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTQ1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlJlZEhhdC1Mb2dvLUhhdC1Db2xvcjwvdGl0bGU+PHBhdGggZD0iTTE1Ny43Nyw2Mi42MWExNCwxNCwwLDAsMSwuMzEsMy40MmMwLDE0Ljg4LTE4LjEsMTcuNDYtMzAuNjEsMTcuNDZDNzguODMsODMuNDksNDIuNTMsNTMuMjYsNDIuNTMsNDRhNi40Myw2LjQzLDAsMCwxLC4yMi0xLjk0bC0zLjY2LDkuMDZhMTguNDUsMTguNDUsMCwwLDAtMS41MSw3LjMzYzAsMTguMTEsNDEsNDUuNDgsODcuNzQsNDUuNDgsMjAuNjksMCwzNi40My03Ljc2LDM2LjQzLTIxLjc3LDAtMS4wOCwwLTEuOTQtMS43My0xMC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjcuNDcsODMuNDljMTIuNTEsMCwzMC42MS0yLjU4LDMwLjYxLTE3LjQ2YTE0LDE0LDAsMCwwLS4zMS0zLjQybC03LjQ1LTMyLjM2Yy0xLjcyLTcuMTItMy4yMy0xMC4zNS0xNS43My0xNi42QzEyNC44OSw4LjY5LDEwMy43Ni41LDk3LjUxLjUsOTEuNjkuNSw5MCw4LDgzLjA2LDhjLTYuNjgsMC0xMS42NC01LjYtMTcuODktNS42LTYsMC05LjkxLDQuMDktMTIuOTMsMTIuNSwwLDAtOC40MSwyMy43Mi05LjQ5LDI3LjE2QTYuNDMsNi40MywwLDAsMCw0Mi41Myw0NGMwLDkuMjIsMzYuMywzOS40NSw4NC45NCwzOS40NU0xNjAsNzIuMDdjMS43Myw4LjE5LDEuNzMsOS4wNSwxLjczLDEwLjEzLDAsMTQtMTUuNzQsMjEuNzctMzYuNDMsMjEuNzdDNzguNTQsMTA0LDM3LjU4LDc2LjYsMzcuNTgsNTguNDlhMTguNDUsMTguNDUsMCwwLDEsMS41MS03LjMzQzIyLjI3LDUyLC41LDU1LC41LDc0LjIyYzAsMzEuNDgsNzQuNTksNzAuMjgsMTMzLjY1LDcwLjI4LDQ1LjI4LDAsNTYuNy0yMC40OCw1Ni43LTM2LjY1LDAtMTIuNzItMTEtMjcuMTYtMzAuODMtMzUuNzgiLz48L3N2Zz4= diff --git a/app-config.example.production.yaml b/app-config.example.production.yaml index 3d318376db..90d15e3ea7 100644 --- a/app-config.example.production.yaml +++ b/app-config.example.production.yaml @@ -2,9 +2,6 @@ app: # Should be the same as backend.baseUrl when using the `app-backend` plugin. baseUrl: http://localhost:7007 title: Red Hat Developer Hub - branding: - fullLogo: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxvZ29zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgOTMxLjggMjQ0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA5MzEuOCAyNDQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCiAgICAgIDxwYXRoCiAgICAgICAgZmlsbD0iI2ZmZiIKICAgICAgICBkPSJNMjI4LjcgMjE5LjV2LTcyLjhoMjUuN2M1LjUgMCAxMC43LjkgMTUuNCAyLjggNC43IDEuOSA4LjggNC40IDEyLjIgNy43IDMuNCAzLjMgNiA3LjEgOCAxMS42IDEuOSA0LjUgMi45IDkuMyAyLjkgMTQuNHMtMSA5LjktMi45IDE0LjRjLTEuOSA0LjQtNC42IDguMy04IDExLjUtMy40IDMuMi03LjUgNS44LTEyLjIgNy42LTQuNyAxLjktOS44IDIuOC0xNS40IDIuOGgtMjUuN3ptMjUuOC02M2gtMTV2NTMuMmgxNWMzLjggMCA3LjQtLjcgMTAuNy0yIDMuMy0xLjQgNi4xLTMuMiA4LjUtNS42IDIuNC0yLjQgNC4zLTUuMiA1LjctOC40IDEuNC0zLjIgMi4xLTYuNyAyLjEtMTAuNXMtLjctNy4yLTIuMS0xMC41Yy0xLjQtMy4zLTMuMy02LjEtNS43LTguNS0yLjQtMi40LTUuMi00LjMtOC41LTUuNy0zLjMtMS4zLTYuOC0yLTEwLjctMnpNMzAwLjcgMTkzYzAtMy43LjctNy4zIDItMTAuNiAxLjQtMy4zIDMuMi02LjIgNS42LTguNyAyLjQtMi41IDUuMi00LjQgOC40LTUuOCAzLjItMS40IDYuNy0yLjEgMTAuNS0yLjEgMy42IDAgNyAuNyAxMC4xIDIuMSAzLjIgMS40IDUuOSAzLjQgOC4xIDUuOCAyLjMgMi41IDQgNS40IDUuNCA4LjggMS4zIDMuNCAyIDcgMiAxMC45djNIMzExYy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTM3Ny43IDIxOS41bC0yMi45LTUyLjloMTEuNGwxNi41IDM5LjYgMTYuNS0zOS42aDExLjFsLTIyLjkgNTIuOWgtOS43ek00MTIuNCAxOTNjMC0zLjcuNy03LjMgMi0xMC42IDEuNC0zLjMgMy4yLTYuMiA1LjYtOC43IDIuNC0yLjUgNS4yLTQuNCA4LjQtNS44IDMuMi0xLjQgNi43LTIuMSAxMC41LTIuMSAzLjYgMCA3IC43IDEwLjEgMi4xIDMuMiAxLjQgNS45IDMuNCA4LjEgNS44IDIuMyAyLjUgNCA1LjQgNS40IDguOCAxLjMgMy40IDIgNyAyIDEwLjl2M2gtNDEuOGMuNyA0LjQgMi43IDggNiAxMC45IDMuMyAyLjkgNy4zIDQuMyAxMS45IDQuMyAyLjYgMCA1LS40IDcuNC0xLjIgMi40LS44IDQuNC0yIDYtMy40bDYuNyA2LjZjLTMuMSAyLjQtNi4zIDQuMi05LjYgNS4zLTMuMyAxLjEtNi45IDEuNy0xMC45IDEuNy0zLjkgMC03LjUtLjctMTAuOS0yLjEtMy40LTEuNC02LjMtMy4zLTguOC01LjgtMi41LTIuNC00LjUtNS4zLTUuOS04LjctMS41LTMuNS0yLjItNy4xLTIuMi0xMXptMjYuMy0xOC41Yy00IDAtNy41IDEuMy0xMC40IDQtMi45IDIuNi00LjggNi01LjUgMTAuMmgzMS40Yy0uNy00LTIuNS03LjQtNS40LTEwLjEtMi45LTIuNy02LjMtNC4xLTEwLjEtNC4xek00ODQuNyAxNDQuNXY3NS4xaC0xMC40di03Mi44bDEwLjQtMi4zek00OTQuNSAxOTNjMC0zLjguNy03LjQgMi4xLTEwLjggMS40LTMuNCAzLjQtNi4zIDUuOS04LjcgMi41LTIuNSA1LjQtNC40IDguOC01LjggMy40LTEuNCA3LTIuMSAxMC44LTIuMSAzLjggMCA3LjQuNyAxMC44IDIuMSAzLjQgMS40IDYuMyAzLjQgOC43IDUuOCAyLjUgMi41IDQuNCA1LjQgNS44IDguNyAxLjQgMy40IDIuMSA3IDIuMSAxMC44IDAgMy45LS43IDcuNS0yLjEgMTAuOS0xLjQgMy40LTMuNCA2LjMtNS44IDguNy0yLjUgMi41LTUuNCA0LjQtOC43IDUuOC0zLjQgMS40LTcgMi4xLTEwLjggMi4xLTMuOCAwLTcuNC0uNy0xMC44LTIuMS0zLjQtMS40LTYuMy0zLjQtOC44LTUuOC0yLjUtMi41LTQuNS01LjQtNS45LTguNy0xLjQtMy40LTIuMS03LTIuMS0xMC45em00NC45IDBjMC01LjEtMS43LTkuNS01LjEtMTMtMy40LTMuNS03LjUtNS4zLTEyLjMtNS4zcy04LjkgMS44LTEyLjMgNS4zYy0zLjQgMy41LTUuMSA3LjktNS4xIDEzczEuNyA5LjUgNSAxMy4xYzMuNCAzLjYgNy41IDUuNCAxMi4zIDUuNCA0LjggMCA4LjktMS44IDEyLjMtNS40IDMuNS0zLjYgNS4yLTcuOSA1LjItMTMuMXpNNTU5LjMgMjQxLjF2LTc0LjVoMTAuM3Y1YzIuMi0xLjkgNC43LTMuMyA3LjUtNC4zczUuNy0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy4zIDIuMSA2LjkgMi4xIDEwLjYgMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjQtMi43LS45LTUuMS0yLjItNy4zLTMuOFYyNDFoLTEwLjR6bTI1LTY2LjNjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3pNNjIwIDE5M2MwLTMuNy43LTcuMyAyLTEwLjYgMS40LTMuMyAzLjItNi4yIDUuNi04LjcgMi40LTIuNSA1LjItNC40IDguNC01LjggMy4yLTEuNCA2LjctMi4xIDEwLjUtMi4xIDMuNiAwIDcgLjcgMTAuMSAyLjEgMy4yIDEuNCA1LjkgMy40IDguMSA1LjggMi4zIDIuNSA0IDUuNCA1LjQgOC44IDEuMyAzLjQgMiA3IDIgMTAuOXYzaC00MS44Yy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTY4MS45IDIxOS41di01Mi45aDEwLjR2Ni42YzEuNy0yLjYgMy45LTQuNiA2LjQtNS44IDIuNi0xLjIgNS4yLTEuOSA4LTEuOSAxLjIgMCAyLjIuMSAzLjEuMi45LjEgMS42LjMgMi4zLjZ2OS40Yy0uOC0uMy0xLjgtLjUtMi45LS44LTEuMS0uMi0yLjItLjQtMy4zLS40LTIuOCAwLTUuNC43LTcuOCAyLjItMi40IDEuNS00LjQgMy45LTUuOCA3LjN2MzUuNWgtMTAuNHpNNzQzLjcgMjE5LjV2LTcyLjhoMTAuOXYzMS4yaDM4Ljd2LTMxLjJoMTAuOXY3Mi44aC0xMC45di0zMS43aC0zOC43djMxLjdoLTEwLjl6TTgyOCAxNjYuNnYzMS41YzAgNC4xIDEuMiA3LjMgMy41IDkuOCAyLjQgMi40IDUuNiAzLjYgOS43IDMuNiAyLjggMCA1LjMtLjYgNy41LTEuOCAyLjItMS4yIDQuMS0yLjkgNS41LTUuMXYtMzguMWgxMC40djUyLjloLTEwLjR2LTUuM2MtMi4xIDIuMS00LjUgMy43LTcuMSA0LjctMi43IDEuMS01LjYgMS42LTguOCAxLjYtNiAwLTExLTEuOS0xNC44LTUuOC0zLjgtMy45LTUuOC04LjgtNS44LTE0Ljl2LTMzLjNIODI4ek05MjkuOSAxOTNjMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjRzLTUuMi0yLjItNy40LTR2NC41aC0xMC4zdi03Mi44bDEwLjQtMi4zdjI3YzIuMi0xLjkgNC43LTMuMyA3LjQtNC4zczUuNi0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy42IDIuMSA3LjIgMi4xIDEwLjl6bS0yOC4yLTE4LjJjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3oiCiAgICAgIC8+CiAgPGc+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xMjkgODVjMTIuNSAwIDMwLjYtMi42IDMwLjYtMTcuNSAwLTEuMiAwLTIuMy0uMy0zLjRsLTcuNC0zMi40Yy0xLjctNy4xLTMuMi0xMC4zLTE1LjctMTYuNkMxMjYuNCAxMC4yIDEwNS4zIDIgOTkgMmMtNS44IDAtNy41IDcuNS0xNC40IDcuNS02LjcgMC0xMS42LTUuNi0xNy45LTUuNi02IDAtOS45IDQuMS0xMi45IDEyLjUgMCAwLTguNCAyMy43LTkuNSAyNy4yLS4zLjctLjMgMS40LS4zIDEuOUM0NCA1NC44IDgwLjMgODUgMTI5IDg1bTMyLjUtMTEuNGMxLjcgOC4yIDEuNyA5LjEgMS43IDEwLjEgMCAxNC0xNS43IDIxLjgtMzYuNCAyMS44LTQ2LjggMC04Ny43LTI3LjQtODcuNy00NS41IDAtMi44LjYtNS40IDEuNS03LjMtMTYuOC44LTM4LjYgMy44LTM4LjYgMjNDMiAxMDcuMiA3Ni42IDE0NiAxMzUuNyAxNDZjNDUuMyAwIDU2LjctMjAuNSA1Ni43LTM2LjYtLjEtMTIuOC0xMS0yNy4yLTMwLjktMzUuOCIKICAgICAgICAgIGZpbGw9IiNlMDAiCiAgICAgICAgLz4KICAgIDxwYXRoIGQ9Ik0xNjEuNSA3My42YzEuNyA4LjIgMS43IDkuMSAxLjcgMTAuMSAwIDE0LTE1LjcgMjEuOC0zNi40IDIxLjgtNDYuOCAwLTg3LjctMjcuNC04Ny43LTQ1LjUgMC0yLjguNi01LjQgMS41LTcuM2wzLjctOS4xYy0uMy43LS4zIDEuNC0uMyAxLjlDNDQgNTQuOCA4MC4zIDg1IDEyOSA4NWMxMi41IDAgMzAuNi0yLjYgMzAuNi0xNy41IDAtMS4yIDAtMi4zLS4zLTMuNGwyLjIgOS41eiIgLz4KICAgIDxwYXRoCiAgICAgIGZpbGw9IiNmZmYiCiAgICAgIGQ9Ik01ODEuMiA5NC4zYzAgMTEuOSA3LjIgMTcuNyAyMC4yIDE3LjcgMy4yIDAgOC42LS43IDExLjktMS43Vjk2LjVjLTIuOC44LTQuOSAxLjItNy43IDEuMi01LjQgMC03LjQtMS43LTcuNC02LjdWNjkuOGgxNS42VjU1LjZoLTE1LjZ2LTE4bC0xNyAzLjd2MTQuM0g1NzB2MTQuMmgxMS4zdjI0LjV6bS01Mi45LjNjMC0zLjcgMy43LTUuNSA5LjMtNS41IDMuNyAwIDcgLjUgMTAuMSAxLjN2Ny4yYy0zLjIgMS44LTYuOCAyLjYtMTAuNiAyLjYtNS41IDAtOC44LTIuMS04LjgtNS42bTUuMiAxNy42YzYgMCAxMC44LTEuMyAxNS40LTQuM3YzLjRoMTYuOFY3NS42YzAtMTMuNi05LjEtMjEtMjQuNC0yMS04LjUgMC0xNi45IDItMjYgNi4xbDYuMSAxMi41YzYuNS0yLjcgMTItNC40IDE2LjgtNC40IDcgMCAxMC42IDIuNyAxMC42IDguM3YyLjdjLTQtMS4xLTguMi0xLjYtMTIuNi0xLjYtMTQuMyAwLTIyLjkgNi0yMi45IDE2LjcgMCA5LjggNy44IDE3LjMgMjAuMiAxNy4zbS05Mi40LTFoMTguMVY4Mi40aDMwLjN2MjguOGgxOC4xVjM3LjZoLTE4LjF2MjguM2gtMzAuM1YzNy42aC0xOC4xdjczLjZ6bS02OS0yNy44YzAtOCA2LjMtMTQuMSAxNC42LTE0LjEgNC42IDAgOC44IDEuNiAxMS44IDQuM1Y5M2MtMyAyLjktNyA0LjQtMTEuOCA0LjQtOC4yLjEtMTQuNi02LTE0LjYtMTRtMjYuNiAyNy44aDE2LjhWMzMuOWwtMTcgMy43djIwLjljLTQuMi0yLjQtOS0zLjctMTQuMi0zLjctMTYuMiAwLTI4LjkgMTIuNS0yOC45IDI4LjVzMTIuNSAyOC42IDI4LjQgMjguNmM1LjUgMCAxMC42LTEuNyAxNC45LTQuOHY0LjF6bS03Ny4yLTQyLjdjNS40IDAgOS45IDMuNSAxMS43IDguOEgzMTBjMS43LTUuNSA1LjktOC44IDExLjUtOC44bS0yOC43IDE1YzAgMTYuMiAxMy4zIDI4LjggMzAuMyAyOC44IDkuNCAwIDE2LjItMi41IDIzLjItOC40bC0xMS4zLTEwYy0yLjYgMi43LTYuNSA0LjItMTEuMSA0LjItNi4zIDAtMTEuNS0zLjUtMTMuNy04LjhoMzkuNlY4NWMwLTE3LjctMTEuOS0zMC40LTI4LjEtMzAuNC0xNi4xLjEtMjguOSAxMi43LTI4LjkgMjguOW0tMjkuMy0zMC40YzYgMCA5LjQgMy44IDkuNCA4LjNzLTMuNCA4LjMtOS40IDguM2gtMTcuOVY1My4xaDE3Ljl6bS0zNiA1OC4xaDE4LjFWODQuNGgxMy44bDEzLjkgMjYuOGgyMC4ybC0xNi4yLTI5LjRjOC43LTMuOCAxMy45LTExLjcgMTMuOS0yMC43IDAtMTMuMy0xMC40LTIzLjUtMjYtMjMuNWgtMzcuN3Y3My42eiIKICAgIC8+CiAgICAgIDwvZz4KPC9zdmc+Cg== - iconLogo: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTQ1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlJlZEhhdC1Mb2dvLUhhdC1Db2xvcjwvdGl0bGU+PHBhdGggZD0iTTE1Ny43Nyw2Mi42MWExNCwxNCwwLDAsMSwuMzEsMy40MmMwLDE0Ljg4LTE4LjEsMTcuNDYtMzAuNjEsMTcuNDZDNzguODMsODMuNDksNDIuNTMsNTMuMjYsNDIuNTMsNDRhNi40Myw2LjQzLDAsMCwxLC4yMi0xLjk0bC0zLjY2LDkuMDZhMTguNDUsMTguNDUsMCwwLDAtMS41MSw3LjMzYzAsMTguMTEsNDEsNDUuNDgsODcuNzQsNDUuNDgsMjAuNjksMCwzNi40My03Ljc2LDM2LjQzLTIxLjc3LDAtMS4wOCwwLTEuOTQtMS43My0xMC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjcuNDcsODMuNDljMTIuNTEsMCwzMC42MS0yLjU4LDMwLjYxLTE3LjQ2YTE0LDE0LDAsMCwwLS4zMS0zLjQybC03LjQ1LTMyLjM2Yy0xLjcyLTcuMTItMy4yMy0xMC4zNS0xNS43My0xNi42QzEyNC44OSw4LjY5LDEwMy43Ni41LDk3LjUxLjUsOTEuNjkuNSw5MCw4LDgzLjA2LDhjLTYuNjgsMC0xMS42NC01LjYtMTcuODktNS42LTYsMC05LjkxLDQuMDktMTIuOTMsMTIuNSwwLDAtOC40MSwyMy43Mi05LjQ5LDI3LjE2QTYuNDMsNi40MywwLDAsMCw0Mi41Myw0NGMwLDkuMjIsMzYuMywzOS40NSw4NC45NCwzOS40NU0xNjAsNzIuMDdjMS43Myw4LjE5LDEuNzMsOS4wNSwxLjczLDEwLjEzLDAsMTQtMTUuNzQsMjEuNzctMzYuNDMsMjEuNzdDNzguNTQsMTA0LDM3LjU4LDc2LjYsMzcuNTgsNTguNDlhMTguNDUsMTguNDUsMCwwLDEsMS41MS03LjMzQzIyLjI3LDUyLC41LDU1LC41LDc0LjIyYzAsMzEuNDgsNzQuNTksNzAuMjgsMTMzLjY1LDcwLjI4LDQ1LjI4LDAsNTYuNy0yMC40OCw1Ni43LTM2LjY1LDAtMTIuNzItMTEtMjcuMTYtMzAuODMtMzUuNzgiLz48L3N2Zz4= backend: # Required for authentication. This secret is shared by all backend plugins. # See https://backstage.io/docs/auth/service-to-service-auth for diff --git a/app-config.example.yaml b/app-config.example.yaml index b0a4b66b3b..f52e40b7e1 100644 --- a/app-config.example.yaml +++ b/app-config.example.yaml @@ -1,9 +1,6 @@ app: title: Red Hat Developer Hub baseUrl: http://localhost:7007 - branding: - fullLogo: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxvZ29zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgOTMxLjggMjQ0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA5MzEuOCAyNDQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCiAgICAgIDxwYXRoCiAgICAgICAgZmlsbD0iI2ZmZiIKICAgICAgICBkPSJNMjI4LjcgMjE5LjV2LTcyLjhoMjUuN2M1LjUgMCAxMC43LjkgMTUuNCAyLjggNC43IDEuOSA4LjggNC40IDEyLjIgNy43IDMuNCAzLjMgNiA3LjEgOCAxMS42IDEuOSA0LjUgMi45IDkuMyAyLjkgMTQuNHMtMSA5LjktMi45IDE0LjRjLTEuOSA0LjQtNC42IDguMy04IDExLjUtMy40IDMuMi03LjUgNS44LTEyLjIgNy42LTQuNyAxLjktOS44IDIuOC0xNS40IDIuOGgtMjUuN3ptMjUuOC02M2gtMTV2NTMuMmgxNWMzLjggMCA3LjQtLjcgMTAuNy0yIDMuMy0xLjQgNi4xLTMuMiA4LjUtNS42IDIuNC0yLjQgNC4zLTUuMiA1LjctOC40IDEuNC0zLjIgMi4xLTYuNyAyLjEtMTAuNXMtLjctNy4yLTIuMS0xMC41Yy0xLjQtMy4zLTMuMy02LjEtNS43LTguNS0yLjQtMi40LTUuMi00LjMtOC41LTUuNy0zLjMtMS4zLTYuOC0yLTEwLjctMnpNMzAwLjcgMTkzYzAtMy43LjctNy4zIDItMTAuNiAxLjQtMy4zIDMuMi02LjIgNS42LTguNyAyLjQtMi41IDUuMi00LjQgOC40LTUuOCAzLjItMS40IDYuNy0yLjEgMTAuNS0yLjEgMy42IDAgNyAuNyAxMC4xIDIuMSAzLjIgMS40IDUuOSAzLjQgOC4xIDUuOCAyLjMgMi41IDQgNS40IDUuNCA4LjggMS4zIDMuNCAyIDcgMiAxMC45djNIMzExYy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTM3Ny43IDIxOS41bC0yMi45LTUyLjloMTEuNGwxNi41IDM5LjYgMTYuNS0zOS42aDExLjFsLTIyLjkgNTIuOWgtOS43ek00MTIuNCAxOTNjMC0zLjcuNy03LjMgMi0xMC42IDEuNC0zLjMgMy4yLTYuMiA1LjYtOC43IDIuNC0yLjUgNS4yLTQuNCA4LjQtNS44IDMuMi0xLjQgNi43LTIuMSAxMC41LTIuMSAzLjYgMCA3IC43IDEwLjEgMi4xIDMuMiAxLjQgNS45IDMuNCA4LjEgNS44IDIuMyAyLjUgNCA1LjQgNS40IDguOCAxLjMgMy40IDIgNyAyIDEwLjl2M2gtNDEuOGMuNyA0LjQgMi43IDggNiAxMC45IDMuMyAyLjkgNy4zIDQuMyAxMS45IDQuMyAyLjYgMCA1LS40IDcuNC0xLjIgMi40LS44IDQuNC0yIDYtMy40bDYuNyA2LjZjLTMuMSAyLjQtNi4zIDQuMi05LjYgNS4zLTMuMyAxLjEtNi45IDEuNy0xMC45IDEuNy0zLjkgMC03LjUtLjctMTAuOS0yLjEtMy40LTEuNC02LjMtMy4zLTguOC01LjgtMi41LTIuNC00LjUtNS4zLTUuOS04LjctMS41LTMuNS0yLjItNy4xLTIuMi0xMXptMjYuMy0xOC41Yy00IDAtNy41IDEuMy0xMC40IDQtMi45IDIuNi00LjggNi01LjUgMTAuMmgzMS40Yy0uNy00LTIuNS03LjQtNS40LTEwLjEtMi45LTIuNy02LjMtNC4xLTEwLjEtNC4xek00ODQuNyAxNDQuNXY3NS4xaC0xMC40di03Mi44bDEwLjQtMi4zek00OTQuNSAxOTNjMC0zLjguNy03LjQgMi4xLTEwLjggMS40LTMuNCAzLjQtNi4zIDUuOS04LjcgMi41LTIuNSA1LjQtNC40IDguOC01LjggMy40LTEuNCA3LTIuMSAxMC44LTIuMSAzLjggMCA3LjQuNyAxMC44IDIuMSAzLjQgMS40IDYuMyAzLjQgOC43IDUuOCAyLjUgMi41IDQuNCA1LjQgNS44IDguNyAxLjQgMy40IDIuMSA3IDIuMSAxMC44IDAgMy45LS43IDcuNS0yLjEgMTAuOS0xLjQgMy40LTMuNCA2LjMtNS44IDguNy0yLjUgMi41LTUuNCA0LjQtOC43IDUuOC0zLjQgMS40LTcgMi4xLTEwLjggMi4xLTMuOCAwLTcuNC0uNy0xMC44LTIuMS0zLjQtMS40LTYuMy0zLjQtOC44LTUuOC0yLjUtMi41LTQuNS01LjQtNS45LTguNy0xLjQtMy40LTIuMS03LTIuMS0xMC45em00NC45IDBjMC01LjEtMS43LTkuNS01LjEtMTMtMy40LTMuNS03LjUtNS4zLTEyLjMtNS4zcy04LjkgMS44LTEyLjMgNS4zYy0zLjQgMy41LTUuMSA3LjktNS4xIDEzczEuNyA5LjUgNSAxMy4xYzMuNCAzLjYgNy41IDUuNCAxMi4zIDUuNCA0LjggMCA4LjktMS44IDEyLjMtNS40IDMuNS0zLjYgNS4yLTcuOSA1LjItMTMuMXpNNTU5LjMgMjQxLjF2LTc0LjVoMTAuM3Y1YzIuMi0xLjkgNC43LTMuMyA3LjUtNC4zczUuNy0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy4zIDIuMSA2LjkgMi4xIDEwLjYgMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjQtMi43LS45LTUuMS0yLjItNy4zLTMuOFYyNDFoLTEwLjR6bTI1LTY2LjNjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3pNNjIwIDE5M2MwLTMuNy43LTcuMyAyLTEwLjYgMS40LTMuMyAzLjItNi4yIDUuNi04LjcgMi40LTIuNSA1LjItNC40IDguNC01LjggMy4yLTEuNCA2LjctMi4xIDEwLjUtMi4xIDMuNiAwIDcgLjcgMTAuMSAyLjEgMy4yIDEuNCA1LjkgMy40IDguMSA1LjggMi4zIDIuNSA0IDUuNCA1LjQgOC44IDEuMyAzLjQgMiA3IDIgMTAuOXYzaC00MS44Yy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTY4MS45IDIxOS41di01Mi45aDEwLjR2Ni42YzEuNy0yLjYgMy45LTQuNiA2LjQtNS44IDIuNi0xLjIgNS4yLTEuOSA4LTEuOSAxLjIgMCAyLjIuMSAzLjEuMi45LjEgMS42LjMgMi4zLjZ2OS40Yy0uOC0uMy0xLjgtLjUtMi45LS44LTEuMS0uMi0yLjItLjQtMy4zLS40LTIuOCAwLTUuNC43LTcuOCAyLjItMi40IDEuNS00LjQgMy45LTUuOCA3LjN2MzUuNWgtMTAuNHpNNzQzLjcgMjE5LjV2LTcyLjhoMTAuOXYzMS4yaDM4Ljd2LTMxLjJoMTAuOXY3Mi44aC0xMC45di0zMS43aC0zOC43djMxLjdoLTEwLjl6TTgyOCAxNjYuNnYzMS41YzAgNC4xIDEuMiA3LjMgMy41IDkuOCAyLjQgMi40IDUuNiAzLjYgOS43IDMuNiAyLjggMCA1LjMtLjYgNy41LTEuOCAyLjItMS4yIDQuMS0yLjkgNS41LTUuMXYtMzguMWgxMC40djUyLjloLTEwLjR2LTUuM2MtMi4xIDIuMS00LjUgMy43LTcuMSA0LjctMi43IDEuMS01LjYgMS42LTguOCAxLjYtNiAwLTExLTEuOS0xNC44LTUuOC0zLjgtMy45LTUuOC04LjgtNS44LTE0Ljl2LTMzLjNIODI4ek05MjkuOSAxOTNjMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjRzLTUuMi0yLjItNy40LTR2NC41aC0xMC4zdi03Mi44bDEwLjQtMi4zdjI3YzIuMi0xLjkgNC43LTMuMyA3LjQtNC4zczUuNi0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy42IDIuMSA3LjIgMi4xIDEwLjl6bS0yOC4yLTE4LjJjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3oiCiAgICAgIC8+CiAgPGc+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xMjkgODVjMTIuNSAwIDMwLjYtMi42IDMwLjYtMTcuNSAwLTEuMiAwLTIuMy0uMy0zLjRsLTcuNC0zMi40Yy0xLjctNy4xLTMuMi0xMC4zLTE1LjctMTYuNkMxMjYuNCAxMC4yIDEwNS4zIDIgOTkgMmMtNS44IDAtNy41IDcuNS0xNC40IDcuNS02LjcgMC0xMS42LTUuNi0xNy45LTUuNi02IDAtOS45IDQuMS0xMi45IDEyLjUgMCAwLTguNCAyMy43LTkuNSAyNy4yLS4zLjctLjMgMS40LS4zIDEuOUM0NCA1NC44IDgwLjMgODUgMTI5IDg1bTMyLjUtMTEuNGMxLjcgOC4yIDEuNyA5LjEgMS43IDEwLjEgMCAxNC0xNS43IDIxLjgtMzYuNCAyMS44LTQ2LjggMC04Ny43LTI3LjQtODcuNy00NS41IDAtMi44LjYtNS40IDEuNS03LjMtMTYuOC44LTM4LjYgMy44LTM4LjYgMjNDMiAxMDcuMiA3Ni42IDE0NiAxMzUuNyAxNDZjNDUuMyAwIDU2LjctMjAuNSA1Ni43LTM2LjYtLjEtMTIuOC0xMS0yNy4yLTMwLjktMzUuOCIKICAgICAgICAgIGZpbGw9IiNlMDAiCiAgICAgICAgLz4KICAgIDxwYXRoIGQ9Ik0xNjEuNSA3My42YzEuNyA4LjIgMS43IDkuMSAxLjcgMTAuMSAwIDE0LTE1LjcgMjEuOC0zNi40IDIxLjgtNDYuOCAwLTg3LjctMjcuNC04Ny43LTQ1LjUgMC0yLjguNi01LjQgMS41LTcuM2wzLjctOS4xYy0uMy43LS4zIDEuNC0uMyAxLjlDNDQgNTQuOCA4MC4zIDg1IDEyOSA4NWMxMi41IDAgMzAuNi0yLjYgMzAuNi0xNy41IDAtMS4yIDAtMi4zLS4zLTMuNGwyLjIgOS41eiIgLz4KICAgIDxwYXRoCiAgICAgIGZpbGw9IiNmZmYiCiAgICAgIGQ9Ik01ODEuMiA5NC4zYzAgMTEuOSA3LjIgMTcuNyAyMC4yIDE3LjcgMy4yIDAgOC42LS43IDExLjktMS43Vjk2LjVjLTIuOC44LTQuOSAxLjItNy43IDEuMi01LjQgMC03LjQtMS43LTcuNC02LjdWNjkuOGgxNS42VjU1LjZoLTE1LjZ2LTE4bC0xNyAzLjd2MTQuM0g1NzB2MTQuMmgxMS4zdjI0LjV6bS01Mi45LjNjMC0zLjcgMy43LTUuNSA5LjMtNS41IDMuNyAwIDcgLjUgMTAuMSAxLjN2Ny4yYy0zLjIgMS44LTYuOCAyLjYtMTAuNiAyLjYtNS41IDAtOC44LTIuMS04LjgtNS42bTUuMiAxNy42YzYgMCAxMC44LTEuMyAxNS40LTQuM3YzLjRoMTYuOFY3NS42YzAtMTMuNi05LjEtMjEtMjQuNC0yMS04LjUgMC0xNi45IDItMjYgNi4xbDYuMSAxMi41YzYuNS0yLjcgMTItNC40IDE2LjgtNC40IDcgMCAxMC42IDIuNyAxMC42IDguM3YyLjdjLTQtMS4xLTguMi0xLjYtMTIuNi0xLjYtMTQuMyAwLTIyLjkgNi0yMi45IDE2LjcgMCA5LjggNy44IDE3LjMgMjAuMiAxNy4zbS05Mi40LTFoMTguMVY4Mi40aDMwLjN2MjguOGgxOC4xVjM3LjZoLTE4LjF2MjguM2gtMzAuM1YzNy42aC0xOC4xdjczLjZ6bS02OS0yNy44YzAtOCA2LjMtMTQuMSAxNC42LTE0LjEgNC42IDAgOC44IDEuNiAxMS44IDQuM1Y5M2MtMyAyLjktNyA0LjQtMTEuOCA0LjQtOC4yLjEtMTQuNi02LTE0LjYtMTRtMjYuNiAyNy44aDE2LjhWMzMuOWwtMTcgMy43djIwLjljLTQuMi0yLjQtOS0zLjctMTQuMi0zLjctMTYuMiAwLTI4LjkgMTIuNS0yOC45IDI4LjVzMTIuNSAyOC42IDI4LjQgMjguNmM1LjUgMCAxMC42LTEuNyAxNC45LTQuOHY0LjF6bS03Ny4yLTQyLjdjNS40IDAgOS45IDMuNSAxMS43IDguOEgzMTBjMS43LTUuNSA1LjktOC44IDExLjUtOC44bS0yOC43IDE1YzAgMTYuMiAxMy4zIDI4LjggMzAuMyAyOC44IDkuNCAwIDE2LjItMi41IDIzLjItOC40bC0xMS4zLTEwYy0yLjYgMi43LTYuNSA0LjItMTEuMSA0LjItNi4zIDAtMTEuNS0zLjUtMTMuNy04LjhoMzkuNlY4NWMwLTE3LjctMTEuOS0zMC40LTI4LjEtMzAuNC0xNi4xLjEtMjguOSAxMi43LTI4LjkgMjguOW0tMjkuMy0zMC40YzYgMCA5LjQgMy44IDkuNCA4LjNzLTMuNCA4LjMtOS40IDguM2gtMTcuOVY1My4xaDE3Ljl6bS0zNiA1OC4xaDE4LjFWODQuNGgxMy44bDEzLjkgMjYuOGgyMC4ybC0xNi4yLTI5LjRjOC43LTMuOCAxMy45LTExLjcgMTMuOS0yMC43IDAtMTMuMy0xMC40LTIzLjUtMjYtMjMuNWgtMzcuN3Y3My42eiIKICAgIC8+CiAgICAgIDwvZz4KPC9zdmc+Cg== - iconLogo: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTQ1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlJlZEhhdC1Mb2dvLUhhdC1Db2xvcjwvdGl0bGU+PHBhdGggZD0iTTE1Ny43Nyw2Mi42MWExNCwxNCwwLDAsMSwuMzEsMy40MmMwLDE0Ljg4LTE4LjEsMTcuNDYtMzAuNjEsMTcuNDZDNzguODMsODMuNDksNDIuNTMsNTMuMjYsNDIuNTMsNDRhNi40Myw2LjQzLDAsMCwxLC4yMi0xLjk0bC0zLjY2LDkuMDZhMTguNDUsMTguNDUsMCwwLDAtMS41MSw3LjMzYzAsMTguMTEsNDEsNDUuNDgsODcuNzQsNDUuNDgsMjAuNjksMCwzNi40My03Ljc2LDM2LjQzLTIxLjc3LDAtMS4wOCwwLTEuOTQtMS43My0xMC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjcuNDcsODMuNDljMTIuNTEsMCwzMC42MS0yLjU4LDMwLjYxLTE3LjQ2YTE0LDE0LDAsMCwwLS4zMS0zLjQybC03LjQ1LTMyLjM2Yy0xLjcyLTcuMTItMy4yMy0xMC4zNS0xNS43My0xNi42QzEyNC44OSw4LjY5LDEwMy43Ni41LDk3LjUxLjUsOTEuNjkuNSw5MCw4LDgzLjA2LDhjLTYuNjgsMC0xMS42NC01LjYtMTcuODktNS42LTYsMC05LjkxLDQuMDktMTIuOTMsMTIuNSwwLDAtOC40MSwyMy43Mi05LjQ5LDI3LjE2QTYuNDMsNi40MywwLDAsMCw0Mi41Myw0NGMwLDkuMjIsMzYuMywzOS40NSw4NC45NCwzOS40NU0xNjAsNzIuMDdjMS43Myw4LjE5LDEuNzMsOS4wNSwxLjczLDEwLjEzLDAsMTQtMTUuNzQsMjEuNzctMzYuNDMsMjEuNzdDNzguNTQsMTA0LDM3LjU4LDc2LjYsMzcuNTgsNTguNDlhMTguNDUsMTguNDUsMCwwLDEsMS41MS03LjMzQzIyLjI3LDUyLC41LDU1LC41LDc0LjIyYzAsMzEuNDgsNzQuNTksNzAuMjgsMTMzLjY1LDcwLjI4LDQ1LjI4LDAsNTYuNy0yMC40OCw1Ni43LTM2LjY1LDAtMTIuNzItMTEtMjcuMTYtMzAuODMtMzUuNzgiLz48L3N2Zz4= organization: name: My Org backend: diff --git a/app-config.production.yaml b/app-config.production.yaml index 03b247764f..e16f0ff2db 100644 --- a/app-config.production.yaml +++ b/app-config.production.yaml @@ -2,9 +2,6 @@ app: # Should be the same as backend.baseUrl when using the `app-backend` plugin. baseUrl: http://localhost:7007 title: Red Hat Developer Hub - branding: - fullLogo: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxvZ29zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgOTMxLjggMjQ0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA5MzEuOCAyNDQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCiAgICAgIDxwYXRoCiAgICAgICAgZmlsbD0iI2ZmZiIKICAgICAgICBkPSJNMjI4LjcgMjE5LjV2LTcyLjhoMjUuN2M1LjUgMCAxMC43LjkgMTUuNCAyLjggNC43IDEuOSA4LjggNC40IDEyLjIgNy43IDMuNCAzLjMgNiA3LjEgOCAxMS42IDEuOSA0LjUgMi45IDkuMyAyLjkgMTQuNHMtMSA5LjktMi45IDE0LjRjLTEuOSA0LjQtNC42IDguMy04IDExLjUtMy40IDMuMi03LjUgNS44LTEyLjIgNy42LTQuNyAxLjktOS44IDIuOC0xNS40IDIuOGgtMjUuN3ptMjUuOC02M2gtMTV2NTMuMmgxNWMzLjggMCA3LjQtLjcgMTAuNy0yIDMuMy0xLjQgNi4xLTMuMiA4LjUtNS42IDIuNC0yLjQgNC4zLTUuMiA1LjctOC40IDEuNC0zLjIgMi4xLTYuNyAyLjEtMTAuNXMtLjctNy4yLTIuMS0xMC41Yy0xLjQtMy4zLTMuMy02LjEtNS43LTguNS0yLjQtMi40LTUuMi00LjMtOC41LTUuNy0zLjMtMS4zLTYuOC0yLTEwLjctMnpNMzAwLjcgMTkzYzAtMy43LjctNy4zIDItMTAuNiAxLjQtMy4zIDMuMi02LjIgNS42LTguNyAyLjQtMi41IDUuMi00LjQgOC40LTUuOCAzLjItMS40IDYuNy0yLjEgMTAuNS0yLjEgMy42IDAgNyAuNyAxMC4xIDIuMSAzLjIgMS40IDUuOSAzLjQgOC4xIDUuOCAyLjMgMi41IDQgNS40IDUuNCA4LjggMS4zIDMuNCAyIDcgMiAxMC45djNIMzExYy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTM3Ny43IDIxOS41bC0yMi45LTUyLjloMTEuNGwxNi41IDM5LjYgMTYuNS0zOS42aDExLjFsLTIyLjkgNTIuOWgtOS43ek00MTIuNCAxOTNjMC0zLjcuNy03LjMgMi0xMC42IDEuNC0zLjMgMy4yLTYuMiA1LjYtOC43IDIuNC0yLjUgNS4yLTQuNCA4LjQtNS44IDMuMi0xLjQgNi43LTIuMSAxMC41LTIuMSAzLjYgMCA3IC43IDEwLjEgMi4xIDMuMiAxLjQgNS45IDMuNCA4LjEgNS44IDIuMyAyLjUgNCA1LjQgNS40IDguOCAxLjMgMy40IDIgNyAyIDEwLjl2M2gtNDEuOGMuNyA0LjQgMi43IDggNiAxMC45IDMuMyAyLjkgNy4zIDQuMyAxMS45IDQuMyAyLjYgMCA1LS40IDcuNC0xLjIgMi40LS44IDQuNC0yIDYtMy40bDYuNyA2LjZjLTMuMSAyLjQtNi4zIDQuMi05LjYgNS4zLTMuMyAxLjEtNi45IDEuNy0xMC45IDEuNy0zLjkgMC03LjUtLjctMTAuOS0yLjEtMy40LTEuNC02LjMtMy4zLTguOC01LjgtMi41LTIuNC00LjUtNS4zLTUuOS04LjctMS41LTMuNS0yLjItNy4xLTIuMi0xMXptMjYuMy0xOC41Yy00IDAtNy41IDEuMy0xMC40IDQtMi45IDIuNi00LjggNi01LjUgMTAuMmgzMS40Yy0uNy00LTIuNS03LjQtNS40LTEwLjEtMi45LTIuNy02LjMtNC4xLTEwLjEtNC4xek00ODQuNyAxNDQuNXY3NS4xaC0xMC40di03Mi44bDEwLjQtMi4zek00OTQuNSAxOTNjMC0zLjguNy03LjQgMi4xLTEwLjggMS40LTMuNCAzLjQtNi4zIDUuOS04LjcgMi41LTIuNSA1LjQtNC40IDguOC01LjggMy40LTEuNCA3LTIuMSAxMC44LTIuMSAzLjggMCA3LjQuNyAxMC44IDIuMSAzLjQgMS40IDYuMyAzLjQgOC43IDUuOCAyLjUgMi41IDQuNCA1LjQgNS44IDguNyAxLjQgMy40IDIuMSA3IDIuMSAxMC44IDAgMy45LS43IDcuNS0yLjEgMTAuOS0xLjQgMy40LTMuNCA2LjMtNS44IDguNy0yLjUgMi41LTUuNCA0LjQtOC43IDUuOC0zLjQgMS40LTcgMi4xLTEwLjggMi4xLTMuOCAwLTcuNC0uNy0xMC44LTIuMS0zLjQtMS40LTYuMy0zLjQtOC44LTUuOC0yLjUtMi41LTQuNS01LjQtNS45LTguNy0xLjQtMy40LTIuMS03LTIuMS0xMC45em00NC45IDBjMC01LjEtMS43LTkuNS01LjEtMTMtMy40LTMuNS03LjUtNS4zLTEyLjMtNS4zcy04LjkgMS44LTEyLjMgNS4zYy0zLjQgMy41LTUuMSA3LjktNS4xIDEzczEuNyA5LjUgNSAxMy4xYzMuNCAzLjYgNy41IDUuNCAxMi4zIDUuNCA0LjggMCA4LjktMS44IDEyLjMtNS40IDMuNS0zLjYgNS4yLTcuOSA1LjItMTMuMXpNNTU5LjMgMjQxLjF2LTc0LjVoMTAuM3Y1YzIuMi0xLjkgNC43LTMuMyA3LjUtNC4zczUuNy0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy4zIDIuMSA2LjkgMi4xIDEwLjYgMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjQtMi43LS45LTUuMS0yLjItNy4zLTMuOFYyNDFoLTEwLjR6bTI1LTY2LjNjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3pNNjIwIDE5M2MwLTMuNy43LTcuMyAyLTEwLjYgMS40LTMuMyAzLjItNi4yIDUuNi04LjcgMi40LTIuNSA1LjItNC40IDguNC01LjggMy4yLTEuNCA2LjctMi4xIDEwLjUtMi4xIDMuNiAwIDcgLjcgMTAuMSAyLjEgMy4yIDEuNCA1LjkgMy40IDguMSA1LjggMi4zIDIuNSA0IDUuNCA1LjQgOC44IDEuMyAzLjQgMiA3IDIgMTAuOXYzaC00MS44Yy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTY4MS45IDIxOS41di01Mi45aDEwLjR2Ni42YzEuNy0yLjYgMy45LTQuNiA2LjQtNS44IDIuNi0xLjIgNS4yLTEuOSA4LTEuOSAxLjIgMCAyLjIuMSAzLjEuMi45LjEgMS42LjMgMi4zLjZ2OS40Yy0uOC0uMy0xLjgtLjUtMi45LS44LTEuMS0uMi0yLjItLjQtMy4zLS40LTIuOCAwLTUuNC43LTcuOCAyLjItMi40IDEuNS00LjQgMy45LTUuOCA3LjN2MzUuNWgtMTAuNHpNNzQzLjcgMjE5LjV2LTcyLjhoMTAuOXYzMS4yaDM4Ljd2LTMxLjJoMTAuOXY3Mi44aC0xMC45di0zMS43aC0zOC43djMxLjdoLTEwLjl6TTgyOCAxNjYuNnYzMS41YzAgNC4xIDEuMiA3LjMgMy41IDkuOCAyLjQgMi40IDUuNiAzLjYgOS43IDMuNiAyLjggMCA1LjMtLjYgNy41LTEuOCAyLjItMS4yIDQuMS0yLjkgNS41LTUuMXYtMzguMWgxMC40djUyLjloLTEwLjR2LTUuM2MtMi4xIDIuMS00LjUgMy43LTcuMSA0LjctMi43IDEuMS01LjYgMS42LTguOCAxLjYtNiAwLTExLTEuOS0xNC44LTUuOC0zLjgtMy45LTUuOC04LjgtNS44LTE0Ljl2LTMzLjNIODI4ek05MjkuOSAxOTNjMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjRzLTUuMi0yLjItNy40LTR2NC41aC0xMC4zdi03Mi44bDEwLjQtMi4zdjI3YzIuMi0xLjkgNC43LTMuMyA3LjQtNC4zczUuNi0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy42IDIuMSA3LjIgMi4xIDEwLjl6bS0yOC4yLTE4LjJjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3oiCiAgICAgIC8+CiAgPGc+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xMjkgODVjMTIuNSAwIDMwLjYtMi42IDMwLjYtMTcuNSAwLTEuMiAwLTIuMy0uMy0zLjRsLTcuNC0zMi40Yy0xLjctNy4xLTMuMi0xMC4zLTE1LjctMTYuNkMxMjYuNCAxMC4yIDEwNS4zIDIgOTkgMmMtNS44IDAtNy41IDcuNS0xNC40IDcuNS02LjcgMC0xMS42LTUuNi0xNy45LTUuNi02IDAtOS45IDQuMS0xMi45IDEyLjUgMCAwLTguNCAyMy43LTkuNSAyNy4yLS4zLjctLjMgMS40LS4zIDEuOUM0NCA1NC44IDgwLjMgODUgMTI5IDg1bTMyLjUtMTEuNGMxLjcgOC4yIDEuNyA5LjEgMS43IDEwLjEgMCAxNC0xNS43IDIxLjgtMzYuNCAyMS44LTQ2LjggMC04Ny43LTI3LjQtODcuNy00NS41IDAtMi44LjYtNS40IDEuNS03LjMtMTYuOC44LTM4LjYgMy44LTM4LjYgMjNDMiAxMDcuMiA3Ni42IDE0NiAxMzUuNyAxNDZjNDUuMyAwIDU2LjctMjAuNSA1Ni43LTM2LjYtLjEtMTIuOC0xMS0yNy4yLTMwLjktMzUuOCIKICAgICAgICAgIGZpbGw9IiNlMDAiCiAgICAgICAgLz4KICAgIDxwYXRoIGQ9Ik0xNjEuNSA3My42YzEuNyA4LjIgMS43IDkuMSAxLjcgMTAuMSAwIDE0LTE1LjcgMjEuOC0zNi40IDIxLjgtNDYuOCAwLTg3LjctMjcuNC04Ny43LTQ1LjUgMC0yLjguNi01LjQgMS41LTcuM2wzLjctOS4xYy0uMy43LS4zIDEuNC0uMyAxLjlDNDQgNTQuOCA4MC4zIDg1IDEyOSA4NWMxMi41IDAgMzAuNi0yLjYgMzAuNi0xNy41IDAtMS4yIDAtMi4zLS4zLTMuNGwyLjIgOS41eiIgLz4KICAgIDxwYXRoCiAgICAgIGZpbGw9IiNmZmYiCiAgICAgIGQ9Ik01ODEuMiA5NC4zYzAgMTEuOSA3LjIgMTcuNyAyMC4yIDE3LjcgMy4yIDAgOC42LS43IDExLjktMS43Vjk2LjVjLTIuOC44LTQuOSAxLjItNy43IDEuMi01LjQgMC03LjQtMS43LTcuNC02LjdWNjkuOGgxNS42VjU1LjZoLTE1LjZ2LTE4bC0xNyAzLjd2MTQuM0g1NzB2MTQuMmgxMS4zdjI0LjV6bS01Mi45LjNjMC0zLjcgMy43LTUuNSA5LjMtNS41IDMuNyAwIDcgLjUgMTAuMSAxLjN2Ny4yYy0zLjIgMS44LTYuOCAyLjYtMTAuNiAyLjYtNS41IDAtOC44LTIuMS04LjgtNS42bTUuMiAxNy42YzYgMCAxMC44LTEuMyAxNS40LTQuM3YzLjRoMTYuOFY3NS42YzAtMTMuNi05LjEtMjEtMjQuNC0yMS04LjUgMC0xNi45IDItMjYgNi4xbDYuMSAxMi41YzYuNS0yLjcgMTItNC40IDE2LjgtNC40IDcgMCAxMC42IDIuNyAxMC42IDguM3YyLjdjLTQtMS4xLTguMi0xLjYtMTIuNi0xLjYtMTQuMyAwLTIyLjkgNi0yMi45IDE2LjcgMCA5LjggNy44IDE3LjMgMjAuMiAxNy4zbS05Mi40LTFoMTguMVY4Mi40aDMwLjN2MjguOGgxOC4xVjM3LjZoLTE4LjF2MjguM2gtMzAuM1YzNy42aC0xOC4xdjczLjZ6bS02OS0yNy44YzAtOCA2LjMtMTQuMSAxNC42LTE0LjEgNC42IDAgOC44IDEuNiAxMS44IDQuM1Y5M2MtMyAyLjktNyA0LjQtMTEuOCA0LjQtOC4yLjEtMTQuNi02LTE0LjYtMTRtMjYuNiAyNy44aDE2LjhWMzMuOWwtMTcgMy43djIwLjljLTQuMi0yLjQtOS0zLjctMTQuMi0zLjctMTYuMiAwLTI4LjkgMTIuNS0yOC45IDI4LjVzMTIuNSAyOC42IDI4LjQgMjguNmM1LjUgMCAxMC42LTEuNyAxNC45LTQuOHY0LjF6bS03Ny4yLTQyLjdjNS40IDAgOS45IDMuNSAxMS43IDguOEgzMTBjMS43LTUuNSA1LjktOC44IDExLjUtOC44bS0yOC43IDE1YzAgMTYuMiAxMy4zIDI4LjggMzAuMyAyOC44IDkuNCAwIDE2LjItMi41IDIzLjItOC40bC0xMS4zLTEwYy0yLjYgMi43LTYuNSA0LjItMTEuMSA0LjItNi4zIDAtMTEuNS0zLjUtMTMuNy04LjhoMzkuNlY4NWMwLTE3LjctMTEuOS0zMC40LTI4LjEtMzAuNC0xNi4xLjEtMjguOSAxMi43LTI4LjkgMjguOW0tMjkuMy0zMC40YzYgMCA5LjQgMy44IDkuNCA4LjNzLTMuNCA4LjMtOS40IDguM2gtMTcuOVY1My4xaDE3Ljl6bS0zNiA1OC4xaDE4LjFWODQuNGgxMy44bDEzLjkgMjYuOGgyMC4ybC0xNi4yLTI5LjRjOC43LTMuOCAxMy45LTExLjcgMTMuOS0yMC43IDAtMTMuMy0xMC40LTIzLjUtMjYtMjMuNWgtMzcuN3Y3My42eiIKICAgIC8+CiAgICAgIDwvZz4KPC9zdmc+Cg== - iconLogo: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTQ1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlJlZEhhdC1Mb2dvLUhhdC1Db2xvcjwvdGl0bGU+PHBhdGggZD0iTTE1Ny43Nyw2Mi42MWExNCwxNCwwLDAsMSwuMzEsMy40MmMwLDE0Ljg4LTE4LjEsMTcuNDYtMzAuNjEsMTcuNDZDNzguODMsODMuNDksNDIuNTMsNTMuMjYsNDIuNTMsNDRhNi40Myw2LjQzLDAsMCwxLC4yMi0xLjk0bC0zLjY2LDkuMDZhMTguNDUsMTguNDUsMCwwLDAtMS41MSw3LjMzYzAsMTguMTEsNDEsNDUuNDgsODcuNzQsNDUuNDgsMjAuNjksMCwzNi40My03Ljc2LDM2LjQzLTIxLjc3LDAtMS4wOCwwLTEuOTQtMS43My0xMC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjcuNDcsODMuNDljMTIuNTEsMCwzMC42MS0yLjU4LDMwLjYxLTE3LjQ2YTE0LDE0LDAsMCwwLS4zMS0zLjQybC03LjQ1LTMyLjM2Yy0xLjcyLTcuMTItMy4yMy0xMC4zNS0xNS43My0xNi42QzEyNC44OSw4LjY5LDEwMy43Ni41LDk3LjUxLjUsOTEuNjkuNSw5MCw4LDgzLjA2LDhjLTYuNjgsMC0xMS42NC01LjYtMTcuODktNS42LTYsMC05LjkxLDQuMDktMTIuOTMsMTIuNSwwLDAtOC40MSwyMy43Mi05LjQ5LDI3LjE2QTYuNDMsNi40MywwLDAsMCw0Mi41Myw0NGMwLDkuMjIsMzYuMywzOS40NSw4NC45NCwzOS40NU0xNjAsNzIuMDdjMS43Myw4LjE5LDEuNzMsOS4wNSwxLjczLDEwLjEzLDAsMTQtMTUuNzQsMjEuNzctMzYuNDMsMjEuNzdDNzguNTQsMTA0LDM3LjU4LDc2LjYsMzcuNTgsNTguNDlhMTguNDUsMTguNDUsMCwwLDEsMS41MS03LjMzQzIyLjI3LDUyLC41LDU1LC41LDc0LjIyYzAsMzEuNDgsNzQuNTksNzAuMjgsMTMzLjY1LDcwLjI4LDQ1LjI4LDAsNTYuNy0yMC40OCw1Ni43LTM2LjY1LDAtMTIuNzItMTEtMjcuMTYtMzAuODMtMzUuNzgiLz48L3N2Zz4= backend: # Required for authentication. This secret is shared by all backend plugins. # See https://backstage.io/docs/auth/service-to-service-auth for diff --git a/app-config.yaml b/app-config.yaml index 0a85f299b0..57a26f086b 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -4,8 +4,6 @@ app: title: Red Hat Developer Hub baseUrl: http://localhost:3000 branding: - fullLogo: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxvZ29zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgOTMxLjggMjQ0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA5MzEuOCAyNDQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCiAgICAgIDxwYXRoCiAgICAgICAgZmlsbD0iI2ZmZiIKICAgICAgICBkPSJNMjI4LjcgMjE5LjV2LTcyLjhoMjUuN2M1LjUgMCAxMC43LjkgMTUuNCAyLjggNC43IDEuOSA4LjggNC40IDEyLjIgNy43IDMuNCAzLjMgNiA3LjEgOCAxMS42IDEuOSA0LjUgMi45IDkuMyAyLjkgMTQuNHMtMSA5LjktMi45IDE0LjRjLTEuOSA0LjQtNC42IDguMy04IDExLjUtMy40IDMuMi03LjUgNS44LTEyLjIgNy42LTQuNyAxLjktOS44IDIuOC0xNS40IDIuOGgtMjUuN3ptMjUuOC02M2gtMTV2NTMuMmgxNWMzLjggMCA3LjQtLjcgMTAuNy0yIDMuMy0xLjQgNi4xLTMuMiA4LjUtNS42IDIuNC0yLjQgNC4zLTUuMiA1LjctOC40IDEuNC0zLjIgMi4xLTYuNyAyLjEtMTAuNXMtLjctNy4yLTIuMS0xMC41Yy0xLjQtMy4zLTMuMy02LjEtNS43LTguNS0yLjQtMi40LTUuMi00LjMtOC41LTUuNy0zLjMtMS4zLTYuOC0yLTEwLjctMnpNMzAwLjcgMTkzYzAtMy43LjctNy4zIDItMTAuNiAxLjQtMy4zIDMuMi02LjIgNS42LTguNyAyLjQtMi41IDUuMi00LjQgOC40LTUuOCAzLjItMS40IDYuNy0yLjEgMTAuNS0yLjEgMy42IDAgNyAuNyAxMC4xIDIuMSAzLjIgMS40IDUuOSAzLjQgOC4xIDUuOCAyLjMgMi41IDQgNS40IDUuNCA4LjggMS4zIDMuNCAyIDcgMiAxMC45djNIMzExYy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTM3Ny43IDIxOS41bC0yMi45LTUyLjloMTEuNGwxNi41IDM5LjYgMTYuNS0zOS42aDExLjFsLTIyLjkgNTIuOWgtOS43ek00MTIuNCAxOTNjMC0zLjcuNy03LjMgMi0xMC42IDEuNC0zLjMgMy4yLTYuMiA1LjYtOC43IDIuNC0yLjUgNS4yLTQuNCA4LjQtNS44IDMuMi0xLjQgNi43LTIuMSAxMC41LTIuMSAzLjYgMCA3IC43IDEwLjEgMi4xIDMuMiAxLjQgNS45IDMuNCA4LjEgNS44IDIuMyAyLjUgNCA1LjQgNS40IDguOCAxLjMgMy40IDIgNyAyIDEwLjl2M2gtNDEuOGMuNyA0LjQgMi43IDggNiAxMC45IDMuMyAyLjkgNy4zIDQuMyAxMS45IDQuMyAyLjYgMCA1LS40IDcuNC0xLjIgMi40LS44IDQuNC0yIDYtMy40bDYuNyA2LjZjLTMuMSAyLjQtNi4zIDQuMi05LjYgNS4zLTMuMyAxLjEtNi45IDEuNy0xMC45IDEuNy0zLjkgMC03LjUtLjctMTAuOS0yLjEtMy40LTEuNC02LjMtMy4zLTguOC01LjgtMi41LTIuNC00LjUtNS4zLTUuOS04LjctMS41LTMuNS0yLjItNy4xLTIuMi0xMXptMjYuMy0xOC41Yy00IDAtNy41IDEuMy0xMC40IDQtMi45IDIuNi00LjggNi01LjUgMTAuMmgzMS40Yy0uNy00LTIuNS03LjQtNS40LTEwLjEtMi45LTIuNy02LjMtNC4xLTEwLjEtNC4xek00ODQuNyAxNDQuNXY3NS4xaC0xMC40di03Mi44bDEwLjQtMi4zek00OTQuNSAxOTNjMC0zLjguNy03LjQgMi4xLTEwLjggMS40LTMuNCAzLjQtNi4zIDUuOS04LjcgMi41LTIuNSA1LjQtNC40IDguOC01LjggMy40LTEuNCA3LTIuMSAxMC44LTIuMSAzLjggMCA3LjQuNyAxMC44IDIuMSAzLjQgMS40IDYuMyAzLjQgOC43IDUuOCAyLjUgMi41IDQuNCA1LjQgNS44IDguNyAxLjQgMy40IDIuMSA3IDIuMSAxMC44IDAgMy45LS43IDcuNS0yLjEgMTAuOS0xLjQgMy40LTMuNCA2LjMtNS44IDguNy0yLjUgMi41LTUuNCA0LjQtOC43IDUuOC0zLjQgMS40LTcgMi4xLTEwLjggMi4xLTMuOCAwLTcuNC0uNy0xMC44LTIuMS0zLjQtMS40LTYuMy0zLjQtOC44LTUuOC0yLjUtMi41LTQuNS01LjQtNS45LTguNy0xLjQtMy40LTIuMS03LTIuMS0xMC45em00NC45IDBjMC01LjEtMS43LTkuNS01LjEtMTMtMy40LTMuNS03LjUtNS4zLTEyLjMtNS4zcy04LjkgMS44LTEyLjMgNS4zYy0zLjQgMy41LTUuMSA3LjktNS4xIDEzczEuNyA5LjUgNSAxMy4xYzMuNCAzLjYgNy41IDUuNCAxMi4zIDUuNCA0LjggMCA4LjktMS44IDEyLjMtNS40IDMuNS0zLjYgNS4yLTcuOSA1LjItMTMuMXpNNTU5LjMgMjQxLjF2LTc0LjVoMTAuM3Y1YzIuMi0xLjkgNC43LTMuMyA3LjUtNC4zczUuNy0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy4zIDIuMSA2LjkgMi4xIDEwLjYgMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjQtMi43LS45LTUuMS0yLjItNy4zLTMuOFYyNDFoLTEwLjR6bTI1LTY2LjNjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3pNNjIwIDE5M2MwLTMuNy43LTcuMyAyLTEwLjYgMS40LTMuMyAzLjItNi4yIDUuNi04LjcgMi40LTIuNSA1LjItNC40IDguNC01LjggMy4yLTEuNCA2LjctMi4xIDEwLjUtMi4xIDMuNiAwIDcgLjcgMTAuMSAyLjEgMy4yIDEuNCA1LjkgMy40IDguMSA1LjggMi4zIDIuNSA0IDUuNCA1LjQgOC44IDEuMyAzLjQgMiA3IDIgMTAuOXYzaC00MS44Yy43IDQuNCAyLjcgOCA2IDEwLjkgMy4zIDIuOSA3LjMgNC4zIDExLjkgNC4zIDIuNiAwIDUtLjQgNy40LTEuMiAyLjQtLjggNC40LTIgNi0zLjRsNi43IDYuNmMtMy4xIDIuNC02LjMgNC4yLTkuNiA1LjMtMy4zIDEuMS02LjkgMS43LTEwLjkgMS43LTMuOSAwLTcuNS0uNy0xMC45LTIuMS0zLjQtMS40LTYuMy0zLjMtOC44LTUuOC0yLjUtMi40LTQuNS01LjMtNS45LTguNy0xLjUtMy41LTIuMi03LjEtMi4yLTExem0yNi4zLTE4LjVjLTQgMC03LjUgMS4zLTEwLjQgNC0yLjkgMi42LTQuOCA2LTUuNSAxMC4yaDMxLjRjLS43LTQtMi41LTcuNC01LjQtMTAuMS0yLjktMi43LTYuMy00LjEtMTAuMS00LjF6TTY4MS45IDIxOS41di01Mi45aDEwLjR2Ni42YzEuNy0yLjYgMy45LTQuNiA2LjQtNS44IDIuNi0xLjIgNS4yLTEuOSA4LTEuOSAxLjIgMCAyLjIuMSAzLjEuMi45LjEgMS42LjMgMi4zLjZ2OS40Yy0uOC0uMy0xLjgtLjUtMi45LS44LTEuMS0uMi0yLjItLjQtMy4zLS40LTIuOCAwLTUuNC43LTcuOCAyLjItMi40IDEuNS00LjQgMy45LTUuOCA3LjN2MzUuNWgtMTAuNHpNNzQzLjcgMjE5LjV2LTcyLjhoMTAuOXYzMS4yaDM4Ljd2LTMxLjJoMTAuOXY3Mi44aC0xMC45di0zMS43aC0zOC43djMxLjdoLTEwLjl6TTgyOCAxNjYuNnYzMS41YzAgNC4xIDEuMiA3LjMgMy41IDkuOCAyLjQgMi40IDUuNiAzLjYgOS43IDMuNiAyLjggMCA1LjMtLjYgNy41LTEuOCAyLjItMS4yIDQuMS0yLjkgNS41LTUuMXYtMzguMWgxMC40djUyLjloLTEwLjR2LTUuM2MtMi4xIDIuMS00LjUgMy43LTcuMSA0LjctMi43IDEuMS01LjYgMS42LTguOCAxLjYtNiAwLTExLTEuOS0xNC44LTUuOC0zLjgtMy45LTUuOC04LjgtNS44LTE0Ljl2LTMzLjNIODI4ek05MjkuOSAxOTNjMCAzLjgtLjcgNy40LTIuMSAxMC43LTEuNCAzLjMtMy4zIDYuMi01LjcgOC43LTIuNCAyLjUtNS4zIDQuNC04LjYgNS44LTMuMyAxLjQtNi45IDIuMS0xMC43IDIuMS0zIDAtNS44LS41LTguNS0xLjRzLTUuMi0yLjItNy40LTR2NC41aC0xMC4zdi03Mi44bDEwLjQtMi4zdjI3YzIuMi0xLjkgNC43LTMuMyA3LjQtNC4zczUuNi0xLjUgOC43LTEuNWMzLjcgMCA3LjIuNyAxMC41IDIuMSAzLjMgMS40IDYuMSAzLjQgOC41IDUuOCAyLjQgMi41IDQuMyA1LjQgNS43IDguNyAxLjQgMy42IDIuMSA3LjIgMi4xIDEwLjl6bS0yOC4yLTE4LjJjLTMuMSAwLTUuOC42LTguMyAxLjctMi41IDEuMS00LjYgMi42LTYuMyA0LjZ2MjQuMWMxLjcgMS45IDMuOCAzLjQgNi4zIDQuNSAyLjYgMS4xIDUuMyAxLjcgOC4zIDEuNyA1LjEgMCA5LjQtMS44IDEyLjgtNS4zIDMuNC0zLjUgNS4xLTcuOCA1LjEtMTIuOSAwLTUuMi0xLjgtOS42LTUuMy0xMy4xLTMuMy0zLjUtNy42LTUuMy0xMi42LTUuM3oiCiAgICAgIC8+CiAgPGc+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xMjkgODVjMTIuNSAwIDMwLjYtMi42IDMwLjYtMTcuNSAwLTEuMiAwLTIuMy0uMy0zLjRsLTcuNC0zMi40Yy0xLjctNy4xLTMuMi0xMC4zLTE1LjctMTYuNkMxMjYuNCAxMC4yIDEwNS4zIDIgOTkgMmMtNS44IDAtNy41IDcuNS0xNC40IDcuNS02LjcgMC0xMS42LTUuNi0xNy45LTUuNi02IDAtOS45IDQuMS0xMi45IDEyLjUgMCAwLTguNCAyMy43LTkuNSAyNy4yLS4zLjctLjMgMS40LS4zIDEuOUM0NCA1NC44IDgwLjMgODUgMTI5IDg1bTMyLjUtMTEuNGMxLjcgOC4yIDEuNyA5LjEgMS43IDEwLjEgMCAxNC0xNS43IDIxLjgtMzYuNCAyMS44LTQ2LjggMC04Ny43LTI3LjQtODcuNy00NS41IDAtMi44LjYtNS40IDEuNS03LjMtMTYuOC44LTM4LjYgMy44LTM4LjYgMjNDMiAxMDcuMiA3Ni42IDE0NiAxMzUuNyAxNDZjNDUuMyAwIDU2LjctMjAuNSA1Ni43LTM2LjYtLjEtMTIuOC0xMS0yNy4yLTMwLjktMzUuOCIKICAgICAgICAgIGZpbGw9IiNlMDAiCiAgICAgICAgLz4KICAgIDxwYXRoIGQ9Ik0xNjEuNSA3My42YzEuNyA4LjIgMS43IDkuMSAxLjcgMTAuMSAwIDE0LTE1LjcgMjEuOC0zNi40IDIxLjgtNDYuOCAwLTg3LjctMjcuNC04Ny43LTQ1LjUgMC0yLjguNi01LjQgMS41LTcuM2wzLjctOS4xYy0uMy43LS4zIDEuNC0uMyAxLjlDNDQgNTQuOCA4MC4zIDg1IDEyOSA4NWMxMi41IDAgMzAuNi0yLjYgMzAuNi0xNy41IDAtMS4yIDAtMi4zLS4zLTMuNGwyLjIgOS41eiIgLz4KICAgIDxwYXRoCiAgICAgIGZpbGw9IiNmZmYiCiAgICAgIGQ9Ik01ODEuMiA5NC4zYzAgMTEuOSA3LjIgMTcuNyAyMC4yIDE3LjcgMy4yIDAgOC42LS43IDExLjktMS43Vjk2LjVjLTIuOC44LTQuOSAxLjItNy43IDEuMi01LjQgMC03LjQtMS43LTcuNC02LjdWNjkuOGgxNS42VjU1LjZoLTE1LjZ2LTE4bC0xNyAzLjd2MTQuM0g1NzB2MTQuMmgxMS4zdjI0LjV6bS01Mi45LjNjMC0zLjcgMy43LTUuNSA5LjMtNS41IDMuNyAwIDcgLjUgMTAuMSAxLjN2Ny4yYy0zLjIgMS44LTYuOCAyLjYtMTAuNiAyLjYtNS41IDAtOC44LTIuMS04LjgtNS42bTUuMiAxNy42YzYgMCAxMC44LTEuMyAxNS40LTQuM3YzLjRoMTYuOFY3NS42YzAtMTMuNi05LjEtMjEtMjQuNC0yMS04LjUgMC0xNi45IDItMjYgNi4xbDYuMSAxMi41YzYuNS0yLjcgMTItNC40IDE2LjgtNC40IDcgMCAxMC42IDIuNyAxMC42IDguM3YyLjdjLTQtMS4xLTguMi0xLjYtMTIuNi0xLjYtMTQuMyAwLTIyLjkgNi0yMi45IDE2LjcgMCA5LjggNy44IDE3LjMgMjAuMiAxNy4zbS05Mi40LTFoMTguMVY4Mi40aDMwLjN2MjguOGgxOC4xVjM3LjZoLTE4LjF2MjguM2gtMzAuM1YzNy42aC0xOC4xdjczLjZ6bS02OS0yNy44YzAtOCA2LjMtMTQuMSAxNC42LTE0LjEgNC42IDAgOC44IDEuNiAxMS44IDQuM1Y5M2MtMyAyLjktNyA0LjQtMTEuOCA0LjQtOC4yLjEtMTQuNi02LTE0LjYtMTRtMjYuNiAyNy44aDE2LjhWMzMuOWwtMTcgMy43djIwLjljLTQuMi0yLjQtOS0zLjctMTQuMi0zLjctMTYuMiAwLTI4LjkgMTIuNS0yOC45IDI4LjVzMTIuNSAyOC42IDI4LjQgMjguNmM1LjUgMCAxMC42LTEuNyAxNC45LTQuOHY0LjF6bS03Ny4yLTQyLjdjNS40IDAgOS45IDMuNSAxMS43IDguOEgzMTBjMS43LTUuNSA1LjktOC44IDExLjUtOC44bS0yOC43IDE1YzAgMTYuMiAxMy4zIDI4LjggMzAuMyAyOC44IDkuNCAwIDE2LjItMi41IDIzLjItOC40bC0xMS4zLTEwYy0yLjYgMi43LTYuNSA0LjItMTEuMSA0LjItNi4zIDAtMTEuNS0zLjUtMTMuNy04LjhoMzkuNlY4NWMwLTE3LjctMTEuOS0zMC40LTI4LjEtMzAuNC0xNi4xLjEtMjguOSAxMi43LTI4LjkgMjguOW0tMjkuMy0zMC40YzYgMCA5LjQgMy44IDkuNCA4LjNzLTMuNCA4LjMtOS40IDguM2gtMTcuOVY1My4xaDE3Ljl6bS0zNiA1OC4xaDE4LjFWODQuNGgxMy44bDEzLjkgMjYuOGgyMC4ybC0xNi4yLTI5LjRjOC43LTMuOCAxMy45LTExLjcgMTMuOS0yMC43IDAtMTMuMy0xMC40LTIzLjUtMjYtMjMuNWgtMzcuN3Y3My42eiIKICAgIC8+CiAgICAgIDwvZz4KPC9zdmc+Cg== - iconLogo: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTQ1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlJlZEhhdC1Mb2dvLUhhdC1Db2xvcjwvdGl0bGU+PHBhdGggZD0iTTE1Ny43Nyw2Mi42MWExNCwxNCwwLDAsMSwuMzEsMy40MmMwLDE0Ljg4LTE4LjEsMTcuNDYtMzAuNjEsMTcuNDZDNzguODMsODMuNDksNDIuNTMsNTMuMjYsNDIuNTMsNDRhNi40Myw2LjQzLDAsMCwxLC4yMi0xLjk0bC0zLjY2LDkuMDZhMTguNDUsMTguNDUsMCwwLDAtMS41MSw3LjMzYzAsMTguMTEsNDEsNDUuNDgsODcuNzQsNDUuNDgsMjAuNjksMCwzNi40My03Ljc2LDM2LjQzLTIxLjc3LDAtMS4wOCwwLTEuOTQtMS43My0xMC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjcuNDcsODMuNDljMTIuNTEsMCwzMC42MS0yLjU4LDMwLjYxLTE3LjQ2YTE0LDE0LDAsMCwwLS4zMS0zLjQybC03LjQ1LTMyLjM2Yy0xLjcyLTcuMTItMy4yMy0xMC4zNS0xNS43My0xNi42QzEyNC44OSw4LjY5LDEwMy43Ni41LDk3LjUxLjUsOTEuNjkuNSw5MCw4LDgzLjA2LDhjLTYuNjgsMC0xMS42NC01LjYtMTcuODktNS42LTYsMC05LjkxLDQuMDktMTIuOTMsMTIuNSwwLDAtOC40MSwyMy43Mi05LjQ5LDI3LjE2QTYuNDMsNi40MywwLDAsMCw0Mi41Myw0NGMwLDkuMjIsMzYuMywzOS40NSw4NC45NCwzOS40NU0xNjAsNzIuMDdjMS43Myw4LjE5LDEuNzMsOS4wNSwxLjczLDEwLjEzLDAsMTQtMTUuNzQsMjEuNzctMzYuNDMsMjEuNzdDNzguNTQsMTA0LDM3LjU4LDc2LjYsMzcuNTgsNTguNDlhMTguNDUsMTguNDUsMCwwLDEsMS41MS03LjMzQzIyLjI3LDUyLC41LDU1LC41LDc0LjIyYzAsMzEuNDgsNzQuNTksNzAuMjgsMTMzLjY1LDcwLjI4LDQ1LjI4LDAsNTYuNy0yMC40OCw1Ni43LTM2LjY1LDAtMTIuNzItMTEtMjcuMTYtMzAuODMtMzUuNzgiLz48L3N2Zz4= fullLogoWidth: ${FULL_LOGO_WIDTH} theme: light: diff --git a/catalog-entities/marketplace/packages/red-hat-developer-hub-backstage-plugin-global-header.yaml b/catalog-entities/marketplace/packages/red-hat-developer-hub-backstage-plugin-global-header.yaml index 33547d491a..d8fbc8020a 100644 --- a/catalog-entities/marketplace/packages/red-hat-developer-hub-backstage-plugin-global-header.yaml +++ b/catalog-entities/marketplace/packages/red-hat-developer-hub-backstage-plugin-global-header.yaml @@ -18,7 +18,7 @@ metadata: spec: packageName: "@red-hat-developer-hub/backstage-plugin-global-header" dynamicArtifact: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-header - version: 1.6.0 + version: 1.11.2 backstage: role: frontend-plugin supportedVersions: 1.36.1 diff --git a/docs/customization.md b/docs/customization.md index 583c22c5bf..33da2ce096 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -8,14 +8,16 @@ Plugins can use field `developerHub.flavor` of the `app-config.yaml` to identify The sidebar uses two logos - one for the expanded sidebar and one for the collapsed sidebar. -- To customize the logo for the expanded sidebar, provide a Base64 encoded image of your logo in the `app.branding.fullLogo` field of the `app-config.yaml`. +- To customize the logo for the expanded sidebar, provide a both light and dark mode Base64 encoded images of your logo in the `app.branding.fullLogo` field of the `app-config.yaml`. You may also opt to provide a single Base64 encoded image that will be used for both light and dark modes. - To change the width of logo, provide your required size of logo in the `app.branding.fullLogoWidth` field of `app-config.yaml` -- Similarly, to customize the logo for the collapsed sidebar, provide a Base64 encoded image of your logo in the `app.branding.iconLogo` field of the `app-config.yaml`: +- Similarly, to customize the logo for the collapsed sidebar, provide either a string value of a Base64 encoded image, or both light and dark mode Base64 encoded images of your logo in the `app.branding.iconLogo` field of the `app-config.yaml`. ```yaml title="app-config.yaml" app: branding: - fullLogo: ${BASE64_EMBEDDED_FULL_LOGO} # SVG Example: data:image/svg+xml;base64,PD94... + fullLogo: + light: ${BASE64_EMBEDDED_FULL_LOGO_LIGHT} # SVG Example: data:image/svg+xml;base64,PD94... + dark: ${BASE64_EMBEDDED_FULL_LOGO} # SVG Example: data:image/svg+xml;base64,PD94... fullLogoWidth: ${FULL_LOGO_WIDTH} # The following units are supported: , px, em, rem, iconLogo: ${BASE64_EMBEDDED_ICON_LOGO} # PNG Example: data:image/png;base64,iVBO... ``` diff --git a/dynamic-plugins.default.yaml b/dynamic-plugins.default.yaml index a5449ac22e..01a9cbd5c6 100644 --- a/dynamic-plugins.default.yaml +++ b/dynamic-plugins.default.yaml @@ -505,6 +505,7 @@ plugins: sidebar: search: false settings: false + logo: false dynamicPlugins: frontend: default.main-menu-items: @@ -516,7 +517,13 @@ plugins: - mountPoint: application/header importName: GlobalHeader config: - position: above-main-content # above-main-content | above-sidebar + position: above-sidebar # above-main-content | above-sidebar + - mountPoint: global.header/component + importName: CompanyLogo + config: + priority: 200 + props: + to: '/' - mountPoint: global.header/component importName: SearchComponent config: @@ -535,6 +542,35 @@ plugins: title: Self-service icon: add to: create + - mountPoint: global.header/component + importName: StarredDropdown + config: + priority: 85 + + - mountPoint: global.header/component + importName: ApplicationLauncherDropdown + config: + priority: 82 + + - mountPoint: global.header/application-launcher + importName: MenuItemLink + config: + section: Documentation + priority: 150 + props: + title: Developer Hub + icon: developerHub + link: https://docs.redhat.com/en/documentation/red_hat_developer_hub + + - mountPoint: global.header/application-launcher + importName: MenuItemLink + config: + section: Developer Tools + priority: 100 + props: + title: RHDH Local + icon: developerHub + link: https://github.com/redhat-developer/rhdh-local - mountPoint: global.header/component importName: SupportButton config: diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-header/package.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-header/package.json index 7d6984e9d7..e1c945f42e 100644 --- a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-header/package.json +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-header/package.json @@ -1,6 +1,6 @@ { "name": "red-hat-developer-hub-backstage-plugin-global-header", - "version": "1.6.0", + "version": "1.11.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,7 +29,7 @@ }, "dependencies": { "@mui/material": "5.17.1", - "@red-hat-developer-hub/backstage-plugin-global-header": "1.6.0" + "@red-hat-developer-hub/backstage-plugin-global-header": "1.11.2" }, "devDependencies": { "@backstage/cli": "0.30.0", diff --git a/dynamic-plugins/yarn.lock b/dynamic-plugins/yarn.lock index 3ca4198e92..d0e3e62770 100644 --- a/dynamic-plugins/yarn.lock +++ b/dynamic-plugins/yarn.lock @@ -4111,6 +4111,17 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-app-api@npm:^1.2.4": + version: 1.2.4 + resolution: "@backstage/backend-app-api@npm:1.2.4" + dependencies: + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + checksum: 4df278872bbdac686fea186f4b9b3ab2257c6cecef881ad2df7e2ce3a0ea4c2c7323d1c0b109f2cea6f01fdf01d6fc64fd0edcaa6a3f2b62ba155aa6c7e70748 + languageName: node + linkType: hard + "@backstage/backend-common@npm:^0.20.1": version: 0.20.2 resolution: "@backstage/backend-common@npm:0.20.2" @@ -4549,6 +4560,89 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-defaults@npm:^0.11.0": + version: 0.11.0 + resolution: "@backstage/backend-defaults@npm:0.11.0" + dependencies: + "@aws-sdk/abort-controller": ^3.347.0 + "@aws-sdk/client-codecommit": ^3.350.0 + "@aws-sdk/client-s3": ^3.350.0 + "@aws-sdk/credential-providers": ^3.350.0 + "@aws-sdk/types": ^3.347.0 + "@azure/storage-blob": ^12.5.0 + "@backstage/backend-app-api": ^1.2.4 + "@backstage/backend-dev-utils": ^0.1.5 + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/cli-node": ^0.2.13 + "@backstage/config": ^1.3.2 + "@backstage/config-loader": ^1.10.1 + "@backstage/errors": ^1.2.7 + "@backstage/integration": ^1.17.0 + "@backstage/integration-aws-node": ^0.1.16 + "@backstage/plugin-auth-node": ^0.6.4 + "@backstage/plugin-events-node": ^0.4.12 + "@backstage/plugin-permission-node": ^0.10.1 + "@backstage/types": ^1.2.1 + "@google-cloud/storage": ^7.0.0 + "@keyv/memcache": ^2.0.1 + "@keyv/redis": ^4.0.1 + "@keyv/valkey": ^1.0.1 + "@manypkg/get-packages": ^1.1.3 + "@octokit/rest": ^19.0.3 + "@opentelemetry/api": ^1.9.0 + "@types/cors": ^2.8.6 + "@types/express": ^4.17.6 + archiver: ^7.0.0 + base64-stream: ^1.0.0 + better-sqlite3: ^11.0.0 + compression: ^1.7.4 + concat-stream: ^2.0.0 + cookie: ^0.7.0 + cors: ^2.8.5 + cron: ^3.0.0 + express: ^4.17.1 + express-promise-router: ^4.1.0 + express-rate-limit: ^7.5.0 + fs-extra: ^11.2.0 + git-url-parse: ^15.0.0 + helmet: ^6.0.0 + is-glob: ^4.0.3 + jose: ^5.0.0 + keyv: ^5.2.1 + knex: ^3.0.0 + lodash: ^4.17.21 + logform: ^2.3.2 + luxon: ^3.0.0 + minimatch: ^9.0.0 + mysql2: ^3.0.0 + node-fetch: ^2.7.0 + node-forge: ^1.3.1 + p-limit: ^3.1.0 + path-to-regexp: ^8.0.0 + pg: ^8.11.3 + pg-connection-string: ^2.3.0 + pg-format: ^1.0.4 + rate-limit-redis: ^4.2.0 + raw-body: ^2.4.1 + selfsigned: ^2.0.0 + tar: ^6.1.12 + triple-beam: ^1.4.1 + uuid: ^11.0.0 + winston: ^3.2.1 + winston-transport: ^4.5.0 + yauzl: ^3.0.0 + yn: ^4.0.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + peerDependencies: + "@google-cloud/cloud-sql-connector": ^1.4.0 + peerDependenciesMeta: + "@google-cloud/cloud-sql-connector": + optional: true + checksum: 9862ad103476b3d347ea96910f8ef6bca3f67e96f87db3f052dbf93f051d067e467d24747be998984ee2eced963ccd36031fa682a1918f31b37a27c77a6f5dbe + languageName: node + linkType: hard + "@backstage/backend-defaults@npm:^0.4.1": version: 0.4.4 resolution: "@backstage/backend-defaults@npm:0.4.4" @@ -4819,6 +4913,30 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-openapi-utils@npm:^0.5.4": + version: 0.5.4 + resolution: "@backstage/backend-openapi-utils@npm:0.5.4" + dependencies: + "@apidevtools/swagger-parser": ^10.1.0 + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/errors": ^1.2.7 + "@backstage/types": ^1.2.1 + "@types/express": ^4.17.6 + "@types/express-serve-static-core": ^4.17.5 + ajv: ^8.16.0 + express: ^4.17.1 + express-openapi-validator: ^5.0.4 + express-promise-router: ^4.1.0 + get-port: ^5.1.1 + json-schema-to-ts: ^3.0.0 + lodash: ^4.17.21 + mockttp: ^3.13.0 + openapi-merge: ^1.3.2 + openapi3-ts: ^3.1.2 + checksum: d9104279f67e100409b736c5df016dd6eb99edbfd394436f62790eeb9f18463dc186ad14cadfc63da3d6994c777b9d8b33c04663f41d4a69e83f8a6baa6e87d2 + languageName: node + linkType: hard + "@backstage/backend-plugin-api@npm:1.2.0": version: 1.2.0 resolution: "@backstage/backend-plugin-api@npm:1.2.0" @@ -4914,6 +5032,28 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-plugin-api@npm:^1.4.0": + version: 1.4.0 + resolution: "@backstage/backend-plugin-api@npm:1.4.0" + dependencies: + "@backstage/cli-common": ^0.1.15 + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + "@backstage/plugin-auth-node": ^0.6.4 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-permission-node": ^0.10.1 + "@backstage/types": ^1.2.1 + "@types/express": ^4.17.6 + "@types/json-schema": ^7.0.6 + "@types/luxon": ^3.0.0 + json-schema: ^0.4.0 + knex: ^3.0.0 + luxon: ^3.0.0 + zod: ^3.22.4 + checksum: 2a87546a1cdc71a6369986a4dd611c5e2c345b7f2cf69da19d5cfeffc912b0f0eb3c4b1fc28b6db4141d25fddc5be50977e4a87b3a05b3cdb82a8d542df73718 + languageName: node + linkType: hard + "@backstage/backend-tasks@npm:^0.5.18, @backstage/backend-tasks@npm:^0.5.26, @backstage/backend-tasks@npm:^0.5.27": version: 0.5.27 resolution: "@backstage/backend-tasks@npm:0.5.27" @@ -4972,6 +5112,18 @@ __metadata: languageName: node linkType: hard +"@backstage/catalog-client@npm:^1.10.1": + version: 1.10.1 + resolution: "@backstage/catalog-client@npm:1.10.1" + dependencies: + "@backstage/catalog-model": ^1.7.4 + "@backstage/errors": ^1.2.7 + cross-fetch: ^4.0.0 + uri-template: ^2.0.0 + checksum: ea5cff781d524299766ac19499087f64a9b1c63a9ea02d2e5a982d332061d074c768f11dbc5e4949a415213e13fe9924ebda9013f3fefb31620c87ac60327b2a + languageName: node + linkType: hard + "@backstage/catalog-client@npm:^1.6.5, @backstage/catalog-client@npm:^1.8.0, @backstage/catalog-client@npm:^1.9.1": version: 1.9.1 resolution: "@backstage/catalog-client@npm:1.9.1" @@ -4996,6 +5148,18 @@ __metadata: languageName: node linkType: hard +"@backstage/catalog-model@npm:^1.7.4": + version: 1.7.4 + resolution: "@backstage/catalog-model@npm:1.7.4" + dependencies: + "@backstage/errors": ^1.2.7 + "@backstage/types": ^1.2.1 + ajv: ^8.10.0 + lodash: ^4.17.21 + checksum: 23091382334fe8cf38cb671089bb81392211851a0e193d6742de46238b8fb373d25932b363274a705dcc3bdbd48ed19bba2d4641a861340aa53d62e60a250e2f + languageName: node + linkType: hard + "@backstage/cli-common@npm:^0.1.13, @backstage/cli-common@npm:^0.1.14, @backstage/cli-common@npm:^0.1.15": version: 0.1.15 resolution: "@backstage/cli-common@npm:0.1.15" @@ -5313,6 +5477,29 @@ __metadata: languageName: node linkType: hard +"@backstage/config-loader@npm:^1.10.1": + version: 1.10.1 + resolution: "@backstage/config-loader@npm:1.10.1" + dependencies: + "@backstage/cli-common": ^0.1.15 + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + "@backstage/types": ^1.2.1 + "@types/json-schema": ^7.0.6 + ajv: ^8.10.0 + chokidar: ^3.5.2 + fs-extra: ^11.2.0 + json-schema: ^0.4.0 + json-schema-merge-allof: ^0.8.1 + json-schema-traverse: ^1.0.0 + lodash: ^4.17.21 + minimist: ^1.2.5 + typescript-json-schema: ^0.65.0 + yaml: ^2.0.0 + checksum: 89e49c51ee401d9fe2a843cf756bfc41f178494d7f9499ca2abef9dcff99a0770bd74099b4720e54567d9c7e506fe5de89b079876079fd127b2f066826e694b7 + languageName: node + linkType: hard + "@backstage/config@npm:^1.1.1, @backstage/config@npm:^1.2.0, @backstage/config@npm:^1.3.0, @backstage/config@npm:^1.3.2": version: 1.3.2 resolution: "@backstage/config@npm:1.3.2" @@ -5324,7 +5511,7 @@ __metadata: languageName: node linkType: hard -"@backstage/core-app-api@npm:^1.15.2, @backstage/core-app-api@npm:^1.15.5, @backstage/core-app-api@npm:^1.16.0, @backstage/core-app-api@npm:^1.16.1": +"@backstage/core-app-api@npm:^1.15.2, @backstage/core-app-api@npm:^1.15.5, @backstage/core-app-api@npm:^1.16.0": version: 1.16.1 resolution: "@backstage/core-app-api@npm:1.16.1" dependencies: @@ -5352,6 +5539,34 @@ __metadata: languageName: node linkType: hard +"@backstage/core-app-api@npm:^1.17.1": + version: 1.17.1 + resolution: "@backstage/core-app-api@npm:1.17.1" + dependencies: + "@backstage/config": ^1.3.2 + "@backstage/core-plugin-api": ^1.10.8 + "@backstage/types": ^1.2.1 + "@backstage/version-bridge": ^1.0.11 + "@types/prop-types": ^15.7.3 + history: ^5.0.0 + i18next: ^22.4.15 + lodash: ^4.17.21 + prop-types: ^15.7.2 + react-use: ^17.2.4 + zen-observable: ^0.10.0 + zod: ^3.22.4 + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 986d585240b8d276eeb2576205775d24ba1ed045ffbcb39cac99d16427644ad43c1969159a82f07638daa187421c0da9f2374fc11e83f201be317c4cb97b55cc + languageName: node + linkType: hard + "@backstage/core-compat-api@npm:^0.3.3, @backstage/core-compat-api@npm:^0.3.5, @backstage/core-compat-api@npm:^0.3.6": version: 0.3.6 resolution: "@backstage/core-compat-api@npm:0.3.6" @@ -5393,13 +5608,13 @@ __metadata: languageName: node linkType: hard -"@backstage/core-compat-api@npm:^0.4.1": - version: 0.4.1 - resolution: "@backstage/core-compat-api@npm:0.4.1" +"@backstage/core-compat-api@npm:^0.4.3": + version: 0.4.3 + resolution: "@backstage/core-compat-api@npm:0.4.3" dependencies: - "@backstage/core-plugin-api": ^1.10.6 - "@backstage/frontend-plugin-api": ^0.10.1 - "@backstage/plugin-catalog-react": ^1.17.0 + "@backstage/core-plugin-api": ^1.10.8 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/plugin-catalog-react": ^1.19.0 "@backstage/version-bridge": ^1.0.11 lodash: ^4.17.21 peerDependencies: @@ -5410,7 +5625,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 6d52a0355b7e516651a092de104192af18ec2d6b865a24721116702c19eaca973bcc9173bab026a3ca1d729f0c7ec3eb1e2b603351486f1440e3238d15ceca6a + checksum: 123d4d5bd02443bf6ee1b7b0d08be69850214447aaf4e7a100817e932e961331eea496f35b3cf0f1d8edef98fad75c511307f329ca0a3df4002cb60b8e84bec9 languageName: node linkType: hard @@ -5571,14 +5786,14 @@ __metadata: languageName: node linkType: hard -"@backstage/core-components@npm:^0.17.1": - version: 0.17.1 - resolution: "@backstage/core-components@npm:0.17.1" +"@backstage/core-components@npm:^0.17.2, @backstage/core-components@npm:^0.17.3": + version: 0.17.3 + resolution: "@backstage/core-components@npm:0.17.3" dependencies: "@backstage/config": ^1.3.2 - "@backstage/core-plugin-api": ^1.10.6 + "@backstage/core-plugin-api": ^1.10.8 "@backstage/errors": ^1.2.7 - "@backstage/theme": ^0.6.5 + "@backstage/theme": ^0.6.6 "@backstage/version-bridge": ^1.0.11 "@dagrejs/dagre": ^1.1.4 "@date-io/core": ^1.3.13 @@ -5621,7 +5836,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 73f46610e4ab7cbfc78dcda5320ecb7d08dab2dc9d9c6ad1b294277f0871e7e36869b40537ab83eb8a8f3a061fb7a4a9fb8cef3e7534ae924449a1bb46904674 + checksum: 7341d7f21223175919e7974e5ef83734d5286a9d480b024490abc90f986be977b735c3aaef4d48de1ee6dcaa969a7106ae0c21030aaccc024c60177a869d6b36 languageName: node linkType: hard @@ -5667,6 +5882,27 @@ __metadata: languageName: node linkType: hard +"@backstage/core-plugin-api@npm:^1.10.7, @backstage/core-plugin-api@npm:^1.10.8": + version: 1.10.8 + resolution: "@backstage/core-plugin-api@npm:1.10.8" + dependencies: + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + "@backstage/types": ^1.2.1 + "@backstage/version-bridge": ^1.0.11 + history: ^5.0.0 + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: c73a0fa667a80f7623881f96dd75aa3d5b7b358ac7c3570f5c5e24cb1695d9e84b1a2b7aeb4d1e5090b8418b4c0db6a883901b8daa827da5cc09613db79f896d + languageName: node + linkType: hard + "@backstage/errors@npm:^1.2.3, @backstage/errors@npm:^1.2.4, @backstage/errors@npm:^1.2.5, @backstage/errors@npm:^1.2.7": version: 1.2.7 resolution: "@backstage/errors@npm:1.2.7" @@ -5739,16 +5975,16 @@ __metadata: languageName: node linkType: hard -"@backstage/frontend-app-api@npm:^0.11.1": - version: 0.11.1 - resolution: "@backstage/frontend-app-api@npm:0.11.1" +"@backstage/frontend-app-api@npm:^0.11.3": + version: 0.11.3 + resolution: "@backstage/frontend-app-api@npm:0.11.3" dependencies: "@backstage/config": ^1.3.2 - "@backstage/core-app-api": ^1.16.1 - "@backstage/core-plugin-api": ^1.10.6 + "@backstage/core-app-api": ^1.17.1 + "@backstage/core-plugin-api": ^1.10.8 "@backstage/errors": ^1.2.7 - "@backstage/frontend-defaults": ^0.2.1 - "@backstage/frontend-plugin-api": ^0.10.1 + "@backstage/frontend-defaults": ^0.2.3 + "@backstage/frontend-plugin-api": ^0.10.3 "@backstage/types": ^1.2.1 "@backstage/version-bridge": ^1.0.11 lodash: ^4.17.21 @@ -5761,7 +5997,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 8381f70ef8c4c47b23eff338616fe6e4b73f71a8e24f98117e845b0a5b30d03b4e8b285fd167ceae089d39f5293ffd8b8771c89f10ddcd583c88ee01343d3698 + checksum: 9c37c997671bf14bcd245e640e371eb3bf6f5c08cea6c5935397c24a8df9e767432f532fda7d8c8e71ae0aafd6d285df3351607185fee0004b335fe134f10814 languageName: node linkType: hard @@ -5809,15 +6045,15 @@ __metadata: languageName: node linkType: hard -"@backstage/frontend-defaults@npm:^0.2.1": - version: 0.2.1 - resolution: "@backstage/frontend-defaults@npm:0.2.1" +"@backstage/frontend-defaults@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/frontend-defaults@npm:0.2.3" dependencies: "@backstage/config": ^1.3.2 "@backstage/errors": ^1.2.7 - "@backstage/frontend-app-api": ^0.11.1 - "@backstage/frontend-plugin-api": ^0.10.1 - "@backstage/plugin-app": ^0.1.8 + "@backstage/frontend-app-api": ^0.11.3 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/plugin-app": ^0.1.10 "@react-hookz/web": ^24.0.0 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -5827,7 +6063,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 7a227a93303b87ef384b9194f810f3f08d38f561059f01a6999a251c26ee1176de5dd588a147067a6788e086dab2dabd5a796a48ba527da5d6bf327ee766dc99 + checksum: b03f5d7f36284a629f2d628e8275f4256745954003a006ec80e31701029ce56cb022d60debc281a860ffb83b8544035cb828ecc5e79306dc09304c37a712d443 languageName: node linkType: hard @@ -5855,12 +6091,12 @@ __metadata: languageName: node linkType: hard -"@backstage/frontend-plugin-api@npm:^0.10.1": - version: 0.10.1 - resolution: "@backstage/frontend-plugin-api@npm:0.10.1" +"@backstage/frontend-plugin-api@npm:^0.10.3": + version: 0.10.3 + resolution: "@backstage/frontend-plugin-api@npm:0.10.3" dependencies: - "@backstage/core-components": ^0.17.1 - "@backstage/core-plugin-api": ^1.10.6 + "@backstage/core-components": ^0.17.3 + "@backstage/core-plugin-api": ^1.10.8 "@backstage/types": ^1.2.1 "@backstage/version-bridge": ^1.0.11 "@material-ui/core": ^4.12.4 @@ -5875,7 +6111,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 8870293e5c2f151f66d4f3e256de7efd53a29421a77726880d0e6f365f7321829eb962b8aea88e075560b41c847769df0e9f371a69252e3b1a0dc6a9103e9bd8 + checksum: 5bf7a5cf03ceaea5f63d4db188fe97174fda1a04592dd3e0b2571a77c6865ec8fd51f1a58adfcf0c8220189e0f0b2f77fc62d492d61374ebb7c2e2c72b47e6fa languageName: node linkType: hard @@ -5953,15 +6189,15 @@ __metadata: languageName: node linkType: hard -"@backstage/frontend-test-utils@npm:^0.3.1": - version: 0.3.1 - resolution: "@backstage/frontend-test-utils@npm:0.3.1" +"@backstage/frontend-test-utils@npm:^0.3.3": + version: 0.3.3 + resolution: "@backstage/frontend-test-utils@npm:0.3.3" dependencies: "@backstage/config": ^1.3.2 - "@backstage/frontend-app-api": ^0.11.1 - "@backstage/frontend-plugin-api": ^0.10.1 - "@backstage/plugin-app": ^0.1.8 - "@backstage/test-utils": ^1.7.7 + "@backstage/frontend-app-api": ^0.11.3 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/plugin-app": ^0.1.10 + "@backstage/test-utils": ^1.7.9 "@backstage/types": ^1.2.1 "@backstage/version-bridge": ^1.0.11 zod: ^3.22.4 @@ -5974,7 +6210,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 34b2018c1ea86a651cba8689e4e59735f2f0a50b68ae0bee991d9c8b2c5504356de7562088729d7998eea7fab9813a329f5be244d24ac812b54523adc7a14ed2 + checksum: 363be516ac8e5fad43432cbe6a712778f0a3942909f009823cf0c58ab397f41ac9e6aaa9d7718dadec00bb145b1dc44f021fbb165c105c04dead93ee2b6679fb languageName: node linkType: hard @@ -5993,6 +6229,21 @@ __metadata: languageName: node linkType: hard +"@backstage/integration-aws-node@npm:^0.1.16": + version: 0.1.16 + resolution: "@backstage/integration-aws-node@npm:0.1.16" + dependencies: + "@aws-sdk/client-sts": ^3.350.0 + "@aws-sdk/credential-provider-node": ^3.350.0 + "@aws-sdk/credential-providers": ^3.350.0 + "@aws-sdk/types": ^3.347.0 + "@aws-sdk/util-arn-parser": ^3.310.0 + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + checksum: fd9460168c72dfacbdcd0497daa5600ab0c650485686190f60d5b5b60b6a33f8e997d660dcc22245c1ff1aee4f30912e1e35a20977e73b8f74f41d1aee23fb50 + languageName: node + linkType: hard + "@backstage/integration-react@npm:^1.2.1, @backstage/integration-react@npm:^1.2.4, @backstage/integration-react@npm:^1.2.5": version: 1.2.5 resolution: "@backstage/integration-react@npm:1.2.5" @@ -6014,13 +6265,13 @@ __metadata: languageName: node linkType: hard -"@backstage/integration-react@npm:^1.2.6": - version: 1.2.6 - resolution: "@backstage/integration-react@npm:1.2.6" +"@backstage/integration-react@npm:^1.2.8": + version: 1.2.8 + resolution: "@backstage/integration-react@npm:1.2.8" dependencies: "@backstage/config": ^1.3.2 - "@backstage/core-plugin-api": ^1.10.6 - "@backstage/integration": ^1.16.3 + "@backstage/core-plugin-api": ^1.10.8 + "@backstage/integration": ^1.17.0 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 peerDependencies: @@ -6031,7 +6282,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 0cdf92a9d8d5e017d8dc9eef3f1e38c95ba68c3b8cfa1e8bf19b34deed83ec3552fd9ba0fcc8bd5ff832007f2826503870f52d9b31a14ef7a97ab027d6ab340d + checksum: 9f1b9efe9c669b7c9394003699da9d9ed0ff30048645c444e4daa131f5a0a3de17dca9a8faf60b04fea78ed085df00faab5c8324fb046c924e813a3eb9037e99 languageName: node linkType: hard @@ -6053,9 +6304,9 @@ __metadata: languageName: node linkType: hard -"@backstage/integration@npm:^1.16.3": - version: 1.16.3 - resolution: "@backstage/integration@npm:1.16.3" +"@backstage/integration@npm:^1.17.0": + version: 1.17.0 + resolution: "@backstage/integration@npm:1.17.0" dependencies: "@azure/identity": ^4.0.0 "@azure/storage-blob": ^12.5.0 @@ -6067,20 +6318,20 @@ __metadata: git-url-parse: ^15.0.0 lodash: ^4.17.21 luxon: ^3.0.0 - checksum: db33dfd032c151ce22ebee51d4da3cbbefebbe4e7b1f4cccca9a6ed89c68ebe6cd37bf7c0cbaebf1aae390c0683a9e85211079247b9bffa17fdd440c46925b17 + checksum: a74abea5c5c3546ff6e3fc62db58285c5887b0da2c48fcc8abc2a59be4662f2d27c9672facb44e40131faa93ee65d0102975f7947d548feedbb5c38b7a182736 languageName: node linkType: hard -"@backstage/plugin-app@npm:^0.1.6, @backstage/plugin-app@npm:^0.1.7": - version: 0.1.7 - resolution: "@backstage/plugin-app@npm:0.1.7" - dependencies: - "@backstage/core-components": ^0.17.0 - "@backstage/core-plugin-api": ^1.10.5 - "@backstage/frontend-plugin-api": ^0.10.0 - "@backstage/integration-react": ^1.2.5 - "@backstage/plugin-permission-react": ^0.4.32 - "@backstage/theme": ^0.6.4 +"@backstage/plugin-app@npm:^0.1.10": + version: 0.1.10 + resolution: "@backstage/plugin-app@npm:0.1.10" + dependencies: + "@backstage/core-components": ^0.17.3 + "@backstage/core-plugin-api": ^1.10.8 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/integration-react": ^1.2.8 + "@backstage/plugin-permission-react": ^0.4.35 + "@backstage/theme": ^0.6.6 "@backstage/types": ^1.2.1 "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.9.1 @@ -6094,20 +6345,20 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 55251477a365584f176adfbfa48c1ed71568d15edfc7db3fab2d49f66f43690889c19336c5c7d513f1af41cebca60d5beef2cf591936fd90fd92ff43da28dd4f + checksum: b5be19e2a8aff12ece0cf065adfcf0f9a53744d4a465f4ab816f735043084349f68e0b8327e5d2fdf7e10f8eaf21c3a92a0b61b92a7a92e775d22f993f0fc2d1 languageName: node linkType: hard -"@backstage/plugin-app@npm:^0.1.8": - version: 0.1.8 - resolution: "@backstage/plugin-app@npm:0.1.8" +"@backstage/plugin-app@npm:^0.1.6, @backstage/plugin-app@npm:^0.1.7": + version: 0.1.7 + resolution: "@backstage/plugin-app@npm:0.1.7" dependencies: - "@backstage/core-components": ^0.17.1 - "@backstage/core-plugin-api": ^1.10.6 - "@backstage/frontend-plugin-api": ^0.10.1 - "@backstage/integration-react": ^1.2.6 - "@backstage/plugin-permission-react": ^0.4.33 - "@backstage/theme": ^0.6.5 + "@backstage/core-components": ^0.17.0 + "@backstage/core-plugin-api": ^1.10.5 + "@backstage/frontend-plugin-api": ^0.10.0 + "@backstage/integration-react": ^1.2.5 + "@backstage/plugin-permission-react": ^0.4.32 + "@backstage/theme": ^0.6.4 "@backstage/types": ^1.2.1 "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.9.1 @@ -6121,7 +6372,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 2b23c9148a881564af94d9239568023fda12a5246fa6f4db2322d004d511b2092efd6cf2fb1522970c9fe1c0d9f0b2f9f846b61ef25aefef7351899c1bad3e35 + checksum: 55251477a365584f176adfbfa48c1ed71568d15edfc7db3fab2d49f66f43690889c19336c5c7d513f1af41cebca60d5beef2cf591936fd90fd92ff43da28dd4f languageName: node linkType: hard @@ -6196,6 +6447,29 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-auth-node@npm:^0.6.4": + version: 0.6.4 + resolution: "@backstage/plugin-auth-node@npm:0.6.4" + dependencies: + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/catalog-client": ^1.10.1 + "@backstage/catalog-model": ^1.7.4 + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + "@backstage/types": ^1.2.1 + "@types/express": ^4.17.6 + "@types/passport": ^1.0.3 + express: ^4.17.1 + jose: ^5.0.0 + lodash: ^4.17.21 + passport: ^0.7.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.21.4 + zod-validation-error: ^3.4.0 + checksum: 1b7580516568772106b560ef17bcd432244259b94b42560000abe8b230263d18cceca51c909da26ea1dd072218dfbe535e062315dde3a31534c7483eb6bbcffd + languageName: node + linkType: hard + "@backstage/plugin-auth-node@patch:@backstage/plugin-auth-node@npm%3A0.6.0#./.yarn/patches/@backstage-plugin-auth-node-npm-0.6.0-69f2f0dc3f.patch::locator=dynamic-plugins-root%40workspace%3A.": version: 0.6.0 resolution: "@backstage/plugin-auth-node@patch:@backstage/plugin-auth-node@npm%3A0.6.0#./.yarn/patches/@backstage-plugin-auth-node-npm-0.6.0-69f2f0dc3f.patch::version=0.6.0&hash=45bb46&locator=dynamic-plugins-root%40workspace%3A." @@ -6460,6 +6734,17 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-catalog-common@npm:^1.1.4": + version: 1.1.4 + resolution: "@backstage/plugin-catalog-common@npm:1.1.4" + dependencies: + "@backstage/catalog-model": ^1.7.4 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-search-common": ^1.2.18 + checksum: 24fd4ff866ff1190bfbef41e8d51a69613c30a9a29deb443257a761dfb89f2cac9550382c125db239347acb9b27cae56859d9784bd7464eef1f09d730d964176 + languageName: node + linkType: hard + "@backstage/plugin-catalog-import@npm:^0.12.10": version: 0.12.11 resolution: "@backstage/plugin-catalog-import@npm:0.12.11" @@ -6514,6 +6799,24 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-catalog-node@npm:^1.17.1": + version: 1.17.1 + resolution: "@backstage/plugin-catalog-node@npm:1.17.1" + dependencies: + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/catalog-client": ^1.10.1 + "@backstage/catalog-model": ^1.7.4 + "@backstage/errors": ^1.2.7 + "@backstage/plugin-catalog-common": ^1.1.4 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-permission-node": ^0.10.1 + "@backstage/types": ^1.2.1 + lodash: ^4.17.21 + yaml: ^2.0.0 + checksum: c003c936dde86ac31c560d2d8c1f162489ae76ed00c256aab8fa37c0a3581b26340fcd8d5acac1bb076b286313cefb9e3ec54e9e34e6251de8ed6849d13fa6d0 + languageName: node + linkType: hard + "@backstage/plugin-catalog-react@npm:1.15.2": version: 1.15.2 resolution: "@backstage/plugin-catalog-react@npm:1.15.2" @@ -6596,22 +6899,22 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-catalog-react@npm:^1.17.0": - version: 1.17.0 - resolution: "@backstage/plugin-catalog-react@npm:1.17.0" +"@backstage/plugin-catalog-react@npm:^1.18.0, @backstage/plugin-catalog-react@npm:^1.19.0": + version: 1.19.0 + resolution: "@backstage/plugin-catalog-react@npm:1.19.0" dependencies: - "@backstage/catalog-client": ^1.9.1 - "@backstage/catalog-model": ^1.7.3 - "@backstage/core-compat-api": ^0.4.1 - "@backstage/core-components": ^0.17.1 - "@backstage/core-plugin-api": ^1.10.6 + "@backstage/catalog-client": ^1.10.1 + "@backstage/catalog-model": ^1.7.4 + "@backstage/core-compat-api": ^0.4.3 + "@backstage/core-components": ^0.17.3 + "@backstage/core-plugin-api": ^1.10.8 "@backstage/errors": ^1.2.7 - "@backstage/frontend-plugin-api": ^0.10.1 - "@backstage/frontend-test-utils": ^0.3.1 - "@backstage/integration-react": ^1.2.6 - "@backstage/plugin-catalog-common": ^1.1.3 - "@backstage/plugin-permission-common": ^0.8.4 - "@backstage/plugin-permission-react": ^0.4.33 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/frontend-test-utils": ^0.3.3 + "@backstage/integration-react": ^1.2.8 + "@backstage/plugin-catalog-common": ^1.1.4 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-permission-react": ^0.4.35 "@backstage/types": ^1.2.1 "@backstage/version-bridge": ^1.0.11 "@material-ui/core": ^4.12.2 @@ -6633,7 +6936,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 3724d8ca4dc0f6d9c7de706e5597c5e86cc634ff9dadeca815afc7e7e03148101150a64a22dafda8376304b6e78088286a9a91510627a41e7dcc66ee38e5e12b + checksum: 85220cadb17208def57dba164b5de3c9f690f7b3f1bad4b119835de01fdc4a0e8f09a281d00badc06989c609d95782353a78aa17018b94585c6f76e776a54e82 languageName: node linkType: hard @@ -6688,6 +6991,23 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-events-node@npm:^0.4.12": + version: 0.4.12 + resolution: "@backstage/plugin-events-node@npm:0.4.12" + dependencies: + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/errors": ^1.2.7 + "@backstage/types": ^1.2.1 + "@types/content-type": ^1.1.8 + "@types/express": ^4.17.6 + content-type: ^1.0.5 + cross-fetch: ^4.0.0 + express: ^4.17.1 + uri-template: ^2.0.0 + checksum: 74d139f0aff95734aca807483c61397a7c9cb8a6ada46e32ba9354c98cb97062cba698e89f6a508d4ad2da421385b779f6ab13aef11f4ac7895cac4f7afd5394 + languageName: node + linkType: hard + "@backstage/plugin-events-node@npm:^0.4.7, @backstage/plugin-events-node@npm:^0.4.8, @backstage/plugin-events-node@npm:^0.4.9": version: 0.4.9 resolution: "@backstage/plugin-events-node@npm:0.4.9" @@ -7012,6 +7332,16 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-notifications-common@npm:^0.0.9": + version: 0.0.9 + resolution: "@backstage/plugin-notifications-common@npm:0.0.9" + dependencies: + "@backstage/config": ^1.3.2 + "@material-ui/icons": ^4.9.1 + checksum: d30bbd79eaa75eb395c761201dda6fd8e2045d50452ffcb15c410133b6cf071e3f59c05ceaf8ab86cb8660256a2000ae2a9b24f432613862136aca7aeabf0fa5 + languageName: node + linkType: hard + "@backstage/plugin-notifications-node@npm:^0.2.12": version: 0.2.12 resolution: "@backstage/plugin-notifications-node@npm:0.2.12" @@ -7060,18 +7390,18 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-notifications@npm:^0.5.2": - version: 0.5.3 - resolution: "@backstage/plugin-notifications@npm:0.5.3" +"@backstage/plugin-notifications@npm:^0.5.5": + version: 0.5.6 + resolution: "@backstage/plugin-notifications@npm:0.5.6" dependencies: - "@backstage/core-compat-api": ^0.4.0 - "@backstage/core-components": ^0.17.0 - "@backstage/core-plugin-api": ^1.10.5 + "@backstage/core-compat-api": ^0.4.3 + "@backstage/core-components": ^0.17.3 + "@backstage/core-plugin-api": ^1.10.8 "@backstage/errors": ^1.2.7 - "@backstage/frontend-plugin-api": ^0.10.0 - "@backstage/plugin-notifications-common": ^0.0.8 - "@backstage/plugin-signals-react": ^0.0.11 - "@backstage/theme": ^0.6.4 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/plugin-notifications-common": ^0.0.9 + "@backstage/plugin-signals-react": ^0.0.14 + "@backstage/theme": ^0.6.6 "@backstage/types": ^1.2.1 "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.9.1 @@ -7089,7 +7419,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: cae570012e968cdbd73a5663bec56285b9ad579b7014fd5e21aa20e14b71879e91720a717da7975c067e7eb035a04c42dfe29f89ca6ae5e415018aab08786178 + checksum: 7cecdc12e1f7e1a99a6d2577b600d9a5fb68acdf4f67841d96a46286c15f2fb530e9933e1f968087100673f29a72f18bd726c744c69468a9c09aeed0cc321324 languageName: node linkType: hard @@ -7122,6 +7452,39 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-permission-common@npm:^0.9.0": + version: 0.9.0 + resolution: "@backstage/plugin-permission-common@npm:0.9.0" + dependencies: + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + "@backstage/types": ^1.2.1 + cross-fetch: ^4.0.0 + uuid: ^11.0.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + checksum: 15d9a0df8636aa164c43b4aced6a76eb86ee081f8baef5a1e0221312b37b2ae76ea1e1c4351f4cdb562ae7e2a1a94d696a08868ca2ea6fde15c47d29cdee375c + languageName: node + linkType: hard + +"@backstage/plugin-permission-node@npm:^0.10.1": + version: 0.10.1 + resolution: "@backstage/plugin-permission-node@npm:0.10.1" + dependencies: + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + "@backstage/plugin-auth-node": ^0.6.4 + "@backstage/plugin-permission-common": ^0.9.0 + "@types/express": ^4.17.6 + express: ^4.17.1 + express-promise-router: ^4.1.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + checksum: e6e5a4c201c08757df0c6380ad0b2de368ff06200436b394d7c271748734568e1fe09eff19eaaf011d0a4f843bae13b158a1f35325a41df7b858061b3dd1f287 + languageName: node + linkType: hard + "@backstage/plugin-permission-node@npm:^0.7.24, @backstage/plugin-permission-node@npm:^0.7.32": version: 0.7.32 resolution: "@backstage/plugin-permission-node@npm:0.7.32" @@ -7198,13 +7561,13 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-permission-react@npm:^0.4.33": - version: 0.4.33 - resolution: "@backstage/plugin-permission-react@npm:0.4.33" +"@backstage/plugin-permission-react@npm:^0.4.35": + version: 0.4.35 + resolution: "@backstage/plugin-permission-react@npm:0.4.35" dependencies: "@backstage/config": ^1.3.2 - "@backstage/core-plugin-api": ^1.10.6 - "@backstage/plugin-permission-common": ^0.8.4 + "@backstage/core-plugin-api": ^1.10.8 + "@backstage/plugin-permission-common": ^0.9.0 swr: ^2.0.0 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -7214,7 +7577,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 7b92abfb8700fe1d67b3046c7141cb56203b95b02093d763ef1587f581b97f0ed4be74dc65c0d9be5ef2a1adbfb0c73788c339318ced906d4306e458bf5208d5 + checksum: 39148fa786eed315ca8607aa8708a104c4a505d21c4a2d975fadc6085db044c77b837af5506f04d20c92aeef4f82a014f80ab14ce7680fddd9c05019d64c7f56 languageName: node linkType: hard @@ -7536,18 +7899,36 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-search-backend-module-pg@npm:^0.5.41": - version: 0.5.42 - resolution: "@backstage/plugin-search-backend-module-pg@npm:0.5.42" +"@backstage/plugin-search-backend-module-catalog@npm:^0.3.4": + version: 0.3.5 + resolution: "@backstage/plugin-search-backend-module-catalog@npm:0.3.5" dependencies: - "@backstage/backend-plugin-api": ^1.2.1 + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/catalog-client": ^1.10.1 + "@backstage/catalog-model": ^1.7.4 "@backstage/config": ^1.3.2 - "@backstage/plugin-search-backend-node": ^1.3.9 - "@backstage/plugin-search-common": ^1.2.17 + "@backstage/errors": ^1.2.7 + "@backstage/plugin-catalog-common": ^1.1.4 + "@backstage/plugin-catalog-node": ^1.17.1 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-search-backend-node": ^1.3.12 + "@backstage/plugin-search-common": ^1.2.18 + checksum: 31a6e567a245beb41f9280fecf61161290d24e009f29e1a2d6891797a08d837753ca70d61e1890ba013d202188b714695e0649a0d03e916429c479548cd615cc + languageName: node + linkType: hard + +"@backstage/plugin-search-backend-module-pg@npm:^0.5.44": + version: 0.5.45 + resolution: "@backstage/plugin-search-backend-module-pg@npm:0.5.45" + dependencies: + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/config": ^1.3.2 + "@backstage/plugin-search-backend-node": ^1.3.12 + "@backstage/plugin-search-common": ^1.2.18 knex: ^3.0.0 lodash: ^4.17.21 uuid: ^11.0.0 - checksum: fd76f6246c92fa0993c32e5510dcaf39af64f7404c55d8dfa66dce2a153c1071070d98ca931a915dc9652f16bb75d2782a4c0212bac822943ce90d1f573d0b87 + checksum: 861c3db0d1675f3612a8df355029d8956730270bf673d7c79e4391bc54d27b8a81ceadabdbc966d904e4bb0387b2d8c4eacc50170960c286c448868d49f6e926 languageName: node linkType: hard @@ -7572,7 +7953,45 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-search-backend-node@npm:^1.3.8, @backstage/plugin-search-backend-node@npm:^1.3.9": +"@backstage/plugin-search-backend-module-techdocs@npm:^0.4.2": + version: 0.4.3 + resolution: "@backstage/plugin-search-backend-module-techdocs@npm:0.4.3" + dependencies: + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/catalog-client": ^1.10.1 + "@backstage/catalog-model": ^1.7.4 + "@backstage/config": ^1.3.2 + "@backstage/plugin-catalog-common": ^1.1.4 + "@backstage/plugin-catalog-node": ^1.17.1 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-search-backend-node": ^1.3.12 + "@backstage/plugin-search-common": ^1.2.18 + "@backstage/plugin-techdocs-node": ^1.13.4 + lodash: ^4.17.21 + p-limit: ^3.1.0 + checksum: 860a384a547704e3f91a1f9bd39b8eec2cecdfe88d7991b3730ee8c26f738ba64be0a3c1a6c1f6d72a628de18b3c013ac261703e77d2090487c75eff12c460f3 + languageName: node + linkType: hard + +"@backstage/plugin-search-backend-node@npm:^1.3.12": + version: 1.3.12 + resolution: "@backstage/plugin-search-backend-node@npm:1.3.12" + dependencies: + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-search-common": ^1.2.18 + "@types/lunr": ^2.3.3 + lodash: ^4.17.21 + lunr: ^2.3.9 + ndjson: ^2.0.0 + uuid: ^11.0.0 + checksum: 62314d04c77832f353b08aae1ca09bb3f6e7514ec5854625a09e340a089cc6985af8cafbb8ab93f4545f0317eb7622b77c8116917ffe741fb371608b6a216db6 + languageName: node + linkType: hard + +"@backstage/plugin-search-backend-node@npm:^1.3.8": version: 1.3.9 resolution: "@backstage/plugin-search-backend-node@npm:1.3.9" dependencies: @@ -7590,29 +8009,27 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-search-backend@npm:^1.8.2": - version: 1.8.2 - resolution: "@backstage/plugin-search-backend@npm:1.8.2" +"@backstage/plugin-search-backend@npm:^2.0.2": + version: 2.0.3 + resolution: "@backstage/plugin-search-backend@npm:2.0.3" dependencies: - "@backstage/backend-common": ^0.25.0 - "@backstage/backend-defaults": ^0.8.0 - "@backstage/backend-openapi-utils": ^0.5.0 - "@backstage/backend-plugin-api": ^1.2.0 + "@backstage/backend-defaults": ^0.11.0 + "@backstage/backend-openapi-utils": ^0.5.4 + "@backstage/backend-plugin-api": ^1.4.0 "@backstage/config": ^1.3.2 "@backstage/errors": ^1.2.7 - "@backstage/plugin-permission-common": ^0.8.4 - "@backstage/plugin-permission-node": ^0.8.8 - "@backstage/plugin-search-backend-node": ^1.3.8 - "@backstage/plugin-search-common": ^1.2.17 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-permission-node": ^0.10.1 + "@backstage/plugin-search-backend-node": ^1.3.12 + "@backstage/plugin-search-common": ^1.2.18 "@backstage/types": ^1.2.1 - "@types/express": ^4.17.6 dataloader: ^2.0.0 express: ^4.17.1 lodash: ^4.17.21 qs: ^6.10.1 yn: ^4.0.0 zod: ^3.22.4 - checksum: a2daf23a9e62c39c53b669a84b6c1be6609a45632c7d15d22268519324a04c35365581aff09413397a4134bf270457812ca57ceb7240af248d20c302a1900fa1 + checksum: 523b493fbd7bfb745d8a65a7e89c5e83b8ea36600aaed56b80c411c9b97086688ba5c5355f67bd66e96c0e93814580e11e1308c65fad7fdceb7b32ac74ab8ca2 languageName: node linkType: hard @@ -7626,6 +8043,16 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-search-common@npm:^1.2.18": + version: 1.2.18 + resolution: "@backstage/plugin-search-common@npm:1.2.18" + dependencies: + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/types": ^1.2.1 + checksum: 2c3e380d5f97be4e251d97120db642a09528abd1fbcd4875f7ef121b8e9d63a9c385918da01e07aafb5ca93591dc4948ce5c2a675f11269749d0e6c9b32285ae + languageName: node + linkType: hard + "@backstage/plugin-search-react@npm:1.8.6": version: 1.8.6 resolution: "@backstage/plugin-search-react@npm:1.8.6" @@ -7656,7 +8083,7 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-search-react@npm:^1.8.6, @backstage/plugin-search-react@npm:^1.8.7": +"@backstage/plugin-search-react@npm:^1.8.6": version: 1.8.7 resolution: "@backstage/plugin-search-react@npm:1.8.7" dependencies: @@ -7686,18 +8113,48 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-search@npm:^1.4.23": - version: 1.4.24 - resolution: "@backstage/plugin-search@npm:1.4.24" +"@backstage/plugin-search-react@npm:^1.9.0, @backstage/plugin-search-react@npm:^1.9.1": + version: 1.9.1 + resolution: "@backstage/plugin-search-react@npm:1.9.1" dependencies: - "@backstage/core-compat-api": ^0.4.0 - "@backstage/core-components": ^0.17.0 - "@backstage/core-plugin-api": ^1.10.5 + "@backstage/core-components": ^0.17.3 + "@backstage/core-plugin-api": ^1.10.8 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/plugin-search-common": ^1.2.18 + "@backstage/theme": ^0.6.6 + "@backstage/types": ^1.2.1 + "@backstage/version-bridge": ^1.0.11 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + lodash: ^4.17.21 + qs: ^6.9.4 + react-use: ^17.3.2 + uuid: ^11.0.2 + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: a90093a4098347a0ba1ffd9230fe3fcbf8e7047476b07380a11c474e650b358987b934fc5e37137b61587969265acbb3f56a1ee47a1383a0916ba58545d8bae0 + languageName: node + linkType: hard + +"@backstage/plugin-search@npm:^1.4.26": + version: 1.4.27 + resolution: "@backstage/plugin-search@npm:1.4.27" + dependencies: + "@backstage/core-compat-api": ^0.4.3 + "@backstage/core-components": ^0.17.3 + "@backstage/core-plugin-api": ^1.10.8 "@backstage/errors": ^1.2.7 - "@backstage/frontend-plugin-api": ^0.10.0 - "@backstage/plugin-catalog-react": ^1.16.0 - "@backstage/plugin-search-common": ^1.2.17 - "@backstage/plugin-search-react": ^1.8.7 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/plugin-catalog-react": ^1.19.0 + "@backstage/plugin-search-common": ^1.2.18 + "@backstage/plugin-search-react": ^1.9.1 "@backstage/types": ^1.2.1 "@backstage/version-bridge": ^1.0.11 "@material-ui/core": ^4.12.2 @@ -7712,7 +8169,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 4a23e1f581b8f951bd9496c3aacd2954b9a38d9bf6864dad60764115e338be42e994eec5eaa682659efb9381fe4d5e8510ea86f6cb4fafe0b7be39615e0eae5f + checksum: 22f6aab03a05b7e4a5a66ee1a154dcb7daaf6fec87b163a1e28bdc4675bb38207936c4d606bf5a4dae3f0e7c67b02dcf105507c4b542d6b589cdbad87a2162bc languageName: node linkType: hard @@ -7772,11 +8229,11 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-signals-react@npm:^0.0.11": - version: 0.0.11 - resolution: "@backstage/plugin-signals-react@npm:0.0.11" +"@backstage/plugin-signals-react@npm:^0.0.13": + version: 0.0.13 + resolution: "@backstage/plugin-signals-react@npm:0.0.13" dependencies: - "@backstage/core-plugin-api": ^1.10.5 + "@backstage/core-plugin-api": ^1.10.7 "@backstage/types": ^1.2.1 "@material-ui/core": ^4.12.4 peerDependencies: @@ -7787,15 +8244,15 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 40e1e7942cafb2c17e33f771b41cb540ed254583141e743bf69424bf46b7adb326ff7e719feabd830b3172d3bf520e5b9e2890c01e62abf5c5fc3744d92f6ff3 + checksum: d874c8fe7dee12ad7dbc9282a3580630bc595210c915411388169a00dba994be49752667e7d44d291692f1df73278724d1401ab20d597e95d15c9efa30ac386e languageName: node linkType: hard -"@backstage/plugin-signals-react@npm:^0.0.12": - version: 0.0.12 - resolution: "@backstage/plugin-signals-react@npm:0.0.12" +"@backstage/plugin-signals-react@npm:^0.0.14": + version: 0.0.14 + resolution: "@backstage/plugin-signals-react@npm:0.0.14" dependencies: - "@backstage/core-plugin-api": ^1.10.6 + "@backstage/core-plugin-api": ^1.10.8 "@backstage/types": ^1.2.1 "@material-ui/core": ^4.12.4 peerDependencies: @@ -7806,7 +8263,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 783f4a3243d9eb473f9f00939018c0a22a70f8053ad244ac0ac3abdfc917b07a459b6c728a2c72f333931ada1ce913608a521b37312e485ae7727fe9e6d75416 + checksum: b3e139835651787d00cc30587c5efa226741cbc5814bacc98b820a4ee380a9217f89a94ef4184d0609770865d7bccb0d02d050a2184f0254068285f6dcf5bec5 languageName: node linkType: hard @@ -7873,6 +8330,13 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-techdocs-common@npm:^0.1.1": + version: 0.1.1 + resolution: "@backstage/plugin-techdocs-common@npm:0.1.1" + checksum: e0c197facff4c393c6d43677345cf86ed2b5c9cdf2c273a2a5ee6beb00deb837691288bfea91f32fffe757fdd89ebd2d5b5864e55b24d9af72fcc0a320f355fc + languageName: node + linkType: hard + "@backstage/plugin-techdocs-module-addons-contrib@npm:1.1.21": version: 1.1.21 resolution: "@backstage/plugin-techdocs-module-addons-contrib@npm:1.1.21" @@ -7936,6 +8400,43 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-techdocs-node@npm:^1.13.4": + version: 1.13.4 + resolution: "@backstage/plugin-techdocs-node@npm:1.13.4" + dependencies: + "@aws-sdk/client-s3": ^3.350.0 + "@aws-sdk/credential-providers": ^3.350.0 + "@aws-sdk/lib-storage": ^3.350.0 + "@aws-sdk/types": ^3.347.0 + "@azure/identity": ^4.0.0 + "@azure/storage-blob": ^12.5.0 + "@backstage/backend-plugin-api": ^1.4.0 + "@backstage/catalog-model": ^1.7.4 + "@backstage/config": ^1.3.2 + "@backstage/errors": ^1.2.7 + "@backstage/integration": ^1.17.0 + "@backstage/integration-aws-node": ^0.1.16 + "@backstage/plugin-search-common": ^1.2.18 + "@backstage/plugin-techdocs-common": ^0.1.1 + "@google-cloud/storage": ^7.0.0 + "@smithy/node-http-handler": ^3.0.0 + "@trendyol-js/openstack-swift-sdk": ^0.0.7 + "@types/express": ^4.17.6 + dockerode: ^4.0.0 + express: ^4.17.1 + fs-extra: ^11.2.0 + git-url-parse: ^15.0.0 + hpagent: ^1.2.0 + js-yaml: ^4.0.0 + json5: ^2.1.3 + mime-types: ^2.1.27 + p-limit: ^3.1.0 + recursive-readdir: ^2.2.2 + winston: ^3.2.1 + checksum: 6f6a2c7f6e53e3cbf10ed8b107de54d6b7f83aa1327fac2ecf4637ec19d28cf2033834f853ffb1141a4c311c4905ef4fbdff6eabb53a78414085e2434f9643b5 + languageName: node + linkType: hard + "@backstage/plugin-techdocs-react@npm:1.2.14, @backstage/plugin-techdocs-react@npm:^1.2.14": version: 1.2.14 resolution: "@backstage/plugin-techdocs-react@npm:1.2.14" @@ -8014,21 +8515,21 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-user-settings@npm:^0.8.19": - version: 0.8.21 - resolution: "@backstage/plugin-user-settings@npm:0.8.21" +"@backstage/plugin-user-settings@npm:^0.8.22": + version: 0.8.23 + resolution: "@backstage/plugin-user-settings@npm:0.8.23" dependencies: - "@backstage/catalog-model": ^1.7.3 - "@backstage/core-app-api": ^1.16.1 - "@backstage/core-compat-api": ^0.4.1 - "@backstage/core-components": ^0.17.1 - "@backstage/core-plugin-api": ^1.10.6 + "@backstage/catalog-model": ^1.7.4 + "@backstage/core-app-api": ^1.17.1 + "@backstage/core-compat-api": ^0.4.3 + "@backstage/core-components": ^0.17.3 + "@backstage/core-plugin-api": ^1.10.8 "@backstage/errors": ^1.2.7 - "@backstage/frontend-plugin-api": ^0.10.1 - "@backstage/plugin-catalog-react": ^1.17.0 - "@backstage/plugin-signals-react": ^0.0.12 + "@backstage/frontend-plugin-api": ^0.10.3 + "@backstage/plugin-catalog-react": ^1.19.0 + "@backstage/plugin-signals-react": ^0.0.14 "@backstage/plugin-user-settings-common": ^0.0.1 - "@backstage/theme": ^0.6.5 + "@backstage/theme": ^0.6.6 "@backstage/types": ^1.2.1 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 @@ -8043,7 +8544,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: f5b54088afa04f0d316989b1413d9fbb862a40b3a1e5f82c00e22ad5d420cf336bd3994ef3363ac05d2ee34d9d574ac8c113bbf1f0f57243eb202899923413fc + checksum: 1379a2cfd921e85da291771035116b2438b0bcab8add141842e5911f91cacbb78a179bb03a68c1d6cfb86c6131ecd44c8242d2a0ee60910ca67b113c366cf271 languageName: node linkType: hard @@ -8092,16 +8593,16 @@ __metadata: languageName: node linkType: hard -"@backstage/test-utils@npm:^1.7.7": - version: 1.7.7 - resolution: "@backstage/test-utils@npm:1.7.7" +"@backstage/test-utils@npm:^1.7.9": + version: 1.7.9 + resolution: "@backstage/test-utils@npm:1.7.9" dependencies: "@backstage/config": ^1.3.2 - "@backstage/core-app-api": ^1.16.1 - "@backstage/core-plugin-api": ^1.10.6 - "@backstage/plugin-permission-common": ^0.8.4 - "@backstage/plugin-permission-react": ^0.4.33 - "@backstage/theme": ^0.6.5 + "@backstage/core-app-api": ^1.17.1 + "@backstage/core-plugin-api": ^1.10.8 + "@backstage/plugin-permission-common": ^0.9.0 + "@backstage/plugin-permission-react": ^0.4.35 + "@backstage/theme": ^0.6.6 "@backstage/types": ^1.2.1 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 @@ -8117,7 +8618,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 2a359b933a86b8b10ac4f9c07d54070e905c8f1715ea21a563648e75b03ee0aab9b6d28e1c42d4d8fc321ead4af8cccdf93997b0c7cd2f9b26cfb6874d5b4011 + checksum: 0913f9e5697581bc4914e074507c88b2826979bf30a75cbe5baddb641d5b1c0d168d8af10a48e1ba062e996d915b47a4b528c9e6be56b68554ad97c6bc7bf1fa languageName: node linkType: hard @@ -8157,9 +8658,9 @@ __metadata: languageName: node linkType: hard -"@backstage/theme@npm:^0.6.5": - version: 0.6.5 - resolution: "@backstage/theme@npm:0.6.5" +"@backstage/theme@npm:^0.6.6": + version: 0.6.6 + resolution: "@backstage/theme@npm:0.6.6" dependencies: "@emotion/react": ^11.10.5 "@emotion/styled": ^11.10.5 @@ -8173,7 +8674,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: b1c3d7bad9851a20e1b503817672ab39b663c40772612c3c3835bc0b1d962032139d0979a88c43501adbedd8fff567d1d6343c3f45c0a9b08bdd1d1bc670a2fd + checksum: fdc96e1debf056013bd8a4d726caa53708a3a51ec96bdcf97dad5282daf363c1315779b4942c3117eb2152c3ac5321bd0627f8f972f4b306adaad28a292577a9 languageName: node linkType: hard @@ -9681,6 +10182,13 @@ __metadata: languageName: node linkType: hard +"@iovalkey/commands@npm:^0.1.0": + version: 0.1.0 + resolution: "@iovalkey/commands@npm:0.1.0" + checksum: 0dc1cd4ea1626e4640978e449a0146b7d073fd2b07e113d177d59a8a67df3a56af84e28ac76279646878d17942f54b4f69aa42ce15ab2871335275af754f40fb + languageName: node + linkType: hard + "@isaacs/balanced-match@npm:^4.0.1": version: 4.0.1 resolution: "@isaacs/balanced-match@npm:4.0.1" @@ -10262,6 +10770,15 @@ __metadata: languageName: node linkType: hard +"@keyv/valkey@npm:^1.0.1": + version: 1.0.4 + resolution: "@keyv/valkey@npm:1.0.4" + dependencies: + iovalkey: ^0.3.1 + checksum: b12998a2953c82d68f6dad16f69745e8e1dc0a08efb537c9781134f111bd36f2dbae4e16e28d8446324c2b7e00f74c31bf74636d568f1211a8fd25901c1a0cd7 + languageName: node + linkType: hard + "@kubernetes-models/apimachinery@npm:^1.2.1": version: 1.2.1 resolution: "@kubernetes-models/apimachinery@npm:1.2.1" @@ -13006,35 +13523,35 @@ __metadata: languageName: node linkType: hard -"@red-hat-developer-hub/backstage-plugin-global-header@npm:1.6.0": - version: 1.6.0 - resolution: "@red-hat-developer-hub/backstage-plugin-global-header@npm:1.6.0" +"@red-hat-developer-hub/backstage-plugin-global-header@npm:1.11.2": + version: 1.11.2 + resolution: "@red-hat-developer-hub/backstage-plugin-global-header@npm:1.11.2" dependencies: - "@backstage/catalog-model": ^1.7.3 - "@backstage/core-components": ^0.16.4 - "@backstage/core-plugin-api": ^1.10.4 - "@backstage/plugin-catalog-react": ^1.15.2 - "@backstage/plugin-notifications": ^0.5.2 + "@backstage/catalog-model": ^1.7.4 + "@backstage/core-components": ^0.17.2 + "@backstage/core-plugin-api": ^1.10.7 + "@backstage/plugin-catalog-react": ^1.18.0 + "@backstage/plugin-notifications": ^0.5.5 "@backstage/plugin-notifications-common": ^0.0.8 - "@backstage/plugin-search": ^1.4.23 - "@backstage/plugin-search-backend": ^1.8.2 - "@backstage/plugin-search-backend-module-catalog": ^0.3.1 - "@backstage/plugin-search-backend-module-pg": ^0.5.41 - "@backstage/plugin-search-backend-module-techdocs": ^0.3.6 - "@backstage/plugin-search-common": ^1.2.17 - "@backstage/plugin-search-react": ^1.8.6 - "@backstage/plugin-signals-react": ^0.0.10 - "@backstage/plugin-user-settings": ^0.8.19 - "@backstage/theme": ^0.6.4 - "@mui/icons-material": 5.16.14 - "@mui/material": 5.16.14 + "@backstage/plugin-search": ^1.4.26 + "@backstage/plugin-search-backend": ^2.0.2 + "@backstage/plugin-search-backend-module-catalog": ^0.3.4 + "@backstage/plugin-search-backend-module-pg": ^0.5.44 + "@backstage/plugin-search-backend-module-techdocs": ^0.4.2 + "@backstage/plugin-search-common": ^1.2.18 + "@backstage/plugin-search-react": ^1.9.0 + "@backstage/plugin-signals-react": ^0.0.13 + "@backstage/plugin-user-settings": ^0.8.22 + "@backstage/theme": ^0.6.6 + "@mui/icons-material": 5.17.1 + "@mui/material": 5.17.1 "@mui/styled-engine": 5.16.14 - "@scalprum/react-core": 0.9.3 + "@scalprum/react-core": 0.9.5 react-use: ^17.5.0 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: ^6.0.0 - checksum: 2f86fcc5101ef5cf27ac02414d822af6d15c68d6e3f56592238ab1fafe34bbfcc5f777f42b939b40ef113e2cdcb9a43839f927a04b47a5038a04dd1039913937 + checksum: c8798e5b584ea94708a4090a32f9ef5d909e66fcb66ddb9872cd88aeb1a54f377bf33bae6b0d42c422313647b981789cc193b8f0c54166d986771d449d61fd48 languageName: node linkType: hard @@ -13736,7 +14253,7 @@ __metadata: languageName: node linkType: hard -"@scalprum/core@npm:^0.8.1": +"@scalprum/core@npm:^0.8.1, @scalprum/core@npm:^0.8.3": version: 0.8.3 resolution: "@scalprum/core@npm:0.8.3" dependencies: @@ -13760,6 +14277,20 @@ __metadata: languageName: node linkType: hard +"@scalprum/react-core@npm:0.9.5": + version: 0.9.5 + resolution: "@scalprum/react-core@npm:0.9.5" + dependencies: + "@openshift/dynamic-plugin-sdk": ^5.0.1 + "@scalprum/core": ^0.8.3 + lodash: ^4.17.0 + peerDependencies: + react: ">=16.8.0 || >=17.0.0 || ^18.0.0" + react-dom: ">=16.8.0 || >=17.0.0 || ^18.0.0" + checksum: 824cc4c53437a3d0da9a760fefa31a6aba436caef7b2cad69838fb43bd19b6301f90d60e33e823628596ef5e7174a208ba0e67ab129688cf122771fc101b0598 + languageName: node + linkType: hard + "@segment/analytics-core@npm:1.8.0": version: 1.8.0 resolution: "@segment/analytics-core@npm:1.8.0" @@ -23360,6 +23891,15 @@ __metadata: languageName: node linkType: hard +"express-rate-limit@npm:^7.5.0": + version: 7.5.0 + resolution: "express-rate-limit@npm:7.5.0" + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + checksum: 2807341039c111eed292e28768aff3c69515cb96ff15799976a44ead776c41931d6947fe3da3cea021fa0490700b1ab468b4832bbed7d231bed63c195d22b959 + languageName: node + linkType: hard + "express@npm:^4.14.0, express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.1, express@npm:^4.18.2, express@npm:^4.19.2": version: 4.21.2 resolution: "express@npm:4.21.2" @@ -25689,6 +26229,23 @@ __metadata: languageName: node linkType: hard +"iovalkey@npm:^0.3.1": + version: 0.3.3 + resolution: "iovalkey@npm:0.3.3" + dependencies: + "@iovalkey/commands": ^0.1.0 + cluster-key-slot: ^1.1.0 + debug: ^4.3.4 + denque: ^2.1.0 + lodash.defaults: ^4.2.0 + lodash.isarguments: ^3.1.0 + redis-errors: ^1.2.0 + redis-parser: ^3.0.0 + standard-as-callback: ^2.1.0 + checksum: 932628533cd265f8d98372c745ecf2b4bf673839d87234e900c93eb44b0862d12300b7d6f2923f57100e5a3381e54ad15a8a54fd53078562983957dab60bfd1a + languageName: node + linkType: hard + "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -32813,6 +33370,15 @@ __metadata: languageName: node linkType: hard +"rate-limit-redis@npm:^4.2.0": + version: 4.2.1 + resolution: "rate-limit-redis@npm:4.2.1" + peerDependencies: + express-rate-limit: ">= 6" + checksum: 0893832991dbcca3f9f9c3b695772a6652917ae0ba5c9e2b802e9267a97fe07431477f9b4af34d79fe3157d292a3403cb5d397098c73c4f8412c82088dca46d6 + languageName: node + linkType: hard + "rate-limiter-flexible@npm:^4.0.0, rate-limiter-flexible@npm:^4.0.1": version: 4.0.1 resolution: "rate-limiter-flexible@npm:4.0.1" @@ -33568,7 +34134,7 @@ __metadata: "@backstage/cli": 0.30.0 "@janus-idp/cli": 3.6.1 "@mui/material": 5.17.1 - "@red-hat-developer-hub/backstage-plugin-global-header": 1.6.0 + "@red-hat-developer-hub/backstage-plugin-global-header": 1.11.2 typescript: 5.8.3 languageName: unknown linkType: soft diff --git a/e2e-tests/playwright/e2e/custom-theme.spec.ts b/e2e-tests/playwright/e2e/custom-theme.spec.ts index a9c5fc9bf6..e6e5d07631 100644 --- a/e2e-tests/playwright/e2e/custom-theme.spec.ts +++ b/e2e-tests/playwright/e2e/custom-theme.spec.ts @@ -2,8 +2,8 @@ import { test, Page, TestInfo, expect } from "@playwright/test"; import { Common, setupBrowser } from "../utils/common"; import { ThemeVerifier } from "../utils/custom-theme/theme-verifier"; import { - CUSTOM_TAB_ICON, - CUSTOM_BRAND_ICON, + CUSTOM_FAVICON, + CUSTOM_SIDEBAR_LOGO, } from "../support/testData/custom-theme"; import { ThemeConstants } from "../data/theme-constants"; @@ -40,15 +40,22 @@ test.describe("CustomTheme should be applied", () => { } }); - test("Verify that tab icon for Backstage can be customized", async () => { + test("Verify that the RHDH favicon can be customized", async () => { expect(await page.locator("#dynamic-favicon").getAttribute("href")).toEqual( - CUSTOM_TAB_ICON, + CUSTOM_FAVICON.LIGHT, ); }); - test("Verify that brand icon for Backstage can be customized", async () => { + test("Verify that RHDH SidebarLogo can be customized", async () => { + await themeVerifier.setTheme("Light"); + + expect(await page.getByTestId("home-logo").getAttribute("src")).toEqual( + CUSTOM_SIDEBAR_LOGO.LIGHT, + ); + + await themeVerifier.setTheme("Dark"); expect(await page.getByTestId("home-logo").getAttribute("src")).toEqual( - CUSTOM_BRAND_ICON, + CUSTOM_SIDEBAR_LOGO.DARK, ); }); diff --git a/e2e-tests/playwright/support/testData/custom-theme.ts b/e2e-tests/playwright/support/testData/custom-theme.ts index 604123c223..132e93a245 100644 --- a/e2e-tests/playwright/support/testData/custom-theme.ts +++ b/e2e-tests/playwright/support/testData/custom-theme.ts @@ -1,4 +1,11 @@ -export const CUSTOM_TAB_ICON = - "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLVNWRy0yMDAxMDkwNC9EVEQvc3ZnMTAuZHRkIj4KPCEtLSBDcmVhdGVkIHVzaW5nIEtyaXRhOiBodHRwczovL2tyaXRhLm9yZyAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAogICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICB4bWxuczprcml0YT0iaHR0cDovL2tyaXRhLm9yZy9uYW1lc3BhY2VzL3N2Zy9rcml0YSIKICAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgIHdpZHRoPSI4MHB0IgogICAgaGVpZ2h0PSI4MHB0IgogICAgdmlld0JveD0iMCAwIDgwIDgwIj4KPGRlZnMvPgo8dGV4dCBpZD0ic2hhcGUwIiBrcml0YTp1c2VSaWNoVGV4dD0idHJ1ZSIgdGV4dC1yZW5kZXJpbmc9ImF1dG8iIGtyaXRhOnRleHRWZXJzaW9uPSIzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjU5OTk5OTk5OTk5OTk5LCA2Mi44MTI1KSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlLW9wYWNpdHk9IjAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2UtbGluZWpvaW49ImJldmVsIiBsZXR0ZXItc3BhY2luZz0iMCIgd29yZC1zcGFjaW5nPSIwIiBzdHlsZT0idGV4dC1hbGlnbjogc3RhcnQ7dGV4dC1hbGlnbi1sYXN0OiBhdXRvO2ZvbnQtZmFtaWx5OiBSZWQgSGF0IE1vbm87Zm9udC1zaXplOiA2NDtmb250LXdlaWdodDogNzAwOyI+PHRzcGFuIHg9IjAiPlFFPC90c3Bhbj48L3RleHQ+Cjwvc3ZnPgo="; -export const CUSTOM_BRAND_ICON = - "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLVNWRy0yMDAxMDkwNC9EVEQvc3ZnMTAuZHRkIj4KPCEtLSBDcmVhdGVkIHVzaW5nIEtyaXRhOiBodHRwczovL2tyaXRhLm9yZyAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAogICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICB4bWxuczprcml0YT0iaHR0cDovL2tyaXRhLm9yZy9uYW1lc3BhY2VzL3N2Zy9rcml0YSIKICAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgIHdpZHRoPSIxNjBwdCIKICAgIGhlaWdodD0iODBwdCIKICAgIHZpZXdCb3g9IjAgMCAxNjAgODAiPgo8ZGVmcy8+Cjx0ZXh0IGlkPSJzaGFwZTAiIGtyaXRhOnVzZVJpY2hUZXh0PSJ0cnVlIiB0ZXh0LXJlbmRlcmluZz0iYXV0byIga3JpdGE6dGV4dFZlcnNpb249IjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjE3NzMyMDYxNTAzNDE1NSwgNTQuMjYyNSkiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZS1vcGFjaXR5PSIwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLWxpbmVqb2luPSJiZXZlbCIgbGV0dGVyLXNwYWNpbmc9IjAiIHdvcmQtc3BhY2luZz0iMCIgc3R5bGU9InRleHQtYWxpZ246IHN0YXJ0O3RleHQtYWxpZ24tbGFzdDogYXV0bztmb250LWZhbWlseTogUmVkIEhhdCBEaXNwbGF5O2ZvbnQtc2l6ZTogNDA7Zm9udC13ZWlnaHQ6IDcwMDsiPjx0c3BhbiB4PSIwIj5RRTwvdHNwYW4+PC90ZXh0Pjx0ZXh0IGlkPSJzaGFwZTEiIGtyaXRhOnVzZVJpY2hUZXh0PSJ0cnVlIiB0ZXh0LXJlbmRlcmluZz0iYXV0byIga3JpdGE6dGV4dFZlcnNpb249IjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU3LjU2NDgyMDYxNTAzNDIsIDM1LjcyOTY4NzUpIiBmaWxsPSIjZmZmZmZmIiBzdHJva2Utb3BhY2l0eT0iMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIHN0cm9rZS1saW5lam9pbj0iYmV2ZWwiIGxldHRlci1zcGFjaW5nPSIwIiB3b3JkLXNwYWNpbmc9IjAiIHN0eWxlPSJ0ZXh0LWFsaWduOiBzdGFydDt0ZXh0LWFsaWduLWxhc3Q6IGF1dG87Zm9udC1mYW1pbHk6IFJlZCBIYXQgVGV4dDtmb250LXNpemU6IDE0O2ZvbnQtd2VpZ2h0OiA3MDA7Ij48dHNwYW4geD0iMCI+UmVkIEhhdDwvdHNwYW4+PHRzcGFuIHg9IjAiIGR5PSIxOC41MTU2MjUiPkRldmVsb3BlciBIdWI8L3RzcGFuPjwvdGV4dD4KPC9zdmc+Cg=="; +export const CUSTOM_FAVICON = { + LIGHT: + "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2280pt%22%20height%3D%2280pt%22%20viewBox%3D%220%200%2080%2080%22%3E%3Ctext%20fill%3D%22%23000%22%20font-family%3D%22Red%20Hat%20Mono%22%20font-size%3D%2264%22%20font-weight%3D%22700%22%20letter-spacing%3D%220%22%20style%3D%22text-align%3Astart%3Btext-align-last%3Aauto%22%20transform%3D%22translate(1.6%2062.813)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3EQE%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fsvg%3E", + DARK: "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2280pt%22%20height%3D%2280pt%22%20viewBox%3D%220%200%2080%2080%22%3E%3Ctext%20fill%3D%22%23fff%22%20font-family%3D%22Red%20Hat%20Mono%22%20font-size%3D%2264%22%20font-weight%3D%22700%22%20letter-spacing%3D%220%22%20style%3D%22text-align%3Astart%3Btext-align-last%3Aauto%22%20transform%3D%22translate(1.6%2062.813)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3EQE%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fsvg%3E", +}; + +export const CUSTOM_SIDEBAR_LOGO = { + LIGHT: + "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22160pt%22%20height%3D%2280pt%22%20viewBox%3D%220%200%20160%2080%22%3E%3Cg%20fill%3D%22%23000%22%20style%3D%22text-align%3Astart%3Btext-align-last%3Aauto%22%20letter-spacing%3D%220%22%3E%3Ctext%20font-family%3D%22Red%20Hat%20Display%22%20font-size%3D%2240%22%20font-weight%3D%22700%22%20transform%3D%22translate(-.177%2054.263)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3EQE%3C%2Ftspan%3E%3C%2Ftext%3E%3Ctext%20font-family%3D%22Red%20Hat%20Text%22%20font-size%3D%2214%22%20font-weight%3D%22700%22%20transform%3D%22translate(57.565%2035.73)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3ERed%20Hat%3C%2Ftspan%3E%3Ctspan%20x%3D%220%22%20dy%3D%2218.516%22%3EDeveloper%20Hub%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E", + DARK: "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22160pt%22%20height%3D%2280pt%22%20viewBox%3D%220%200%20160%2080%22%3E%3Cg%20fill%3D%22%23fff%22%20style%3D%22text-align%3Astart%3Btext-align-last%3Aauto%22%20letter-spacing%3D%220%22%3E%3Ctext%20font-family%3D%22Red%20Hat%20Display%22%20font-size%3D%2240%22%20font-weight%3D%22700%22%20transform%3D%22translate(-.177%2054.263)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3EQE%3C%2Ftspan%3E%3C%2Ftext%3E%3Ctext%20font-family%3D%22Red%20Hat%20Text%22%20font-size%3D%2214%22%20font-weight%3D%22700%22%20transform%3D%22translate(57.565%2035.73)%22%20word-spacing%3D%220%22%3E%3Ctspan%20x%3D%220%22%3ERed%20Hat%3C%2Ftspan%3E%3Ctspan%20x%3D%220%22%20dy%3D%2218.516%22%3EDeveloper%20Hub%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E", +}; diff --git a/packages/app/config.d.ts b/packages/app/config.d.ts index 5bfcb1d38e..1b1554a731 100644 --- a/packages/app/config.d.ts +++ b/packages/app/config.d.ts @@ -15,10 +15,24 @@ export interface Config { app: { branding?: { /** - * Base64 URI for the full logo + * Base64 URI for the full logo. If the value is a string, it is used as the logo for both themes. * @visibility frontend */ - fullLogo?: string; + // this config is copied to rhdh-plugins/global-header config.d.ts and should be kept in sync + fullLogo?: + | string + | { + /** + * Base64 URI for the logo in light theme + * @visibility frontend + */ + light: string; + /** + * Base64 URI for the logo in dark theme + * @visibility frontend + */ + dark: string; + }; /** * size Configuration for the full logo * The following units are supported: , px, em, rem, @@ -26,10 +40,23 @@ export interface Config { */ fullLogoWidth?: string | number; /** - * Base64 URI for the icon logo + * Base64 URI for the icon logo. If the value is a string, it is used as the logo for both themes. * @visibility frontend */ - iconLogo?: string; + iconLogo?: + | string + | { + /** + * Base64 URI for the icon logo in light theme + * @visibility frontend + */ + light: string; + /** + * Base64 URI for the icon logo in dark theme + * @visibility frontend + */ + dark: string; + }; /** * @deepVisibility frontend */ diff --git a/packages/app/package.json b/packages/app/package.json index 0f020cd217..b1af200ce5 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -45,7 +45,7 @@ "@mui/icons-material": "5.17.1", "@mui/material": "5.17.1", "@mui/styled-engine": "5.16.14", - "@red-hat-developer-hub/backstage-plugin-theme": "0.9.0", + "@red-hat-developer-hub/backstage-plugin-theme": "0.9.1", "@red-hat-developer-hub/plugin-utils": "1.0.0", "@scalprum/core": "0.8.3", "@scalprum/react-core": "0.9.5", diff --git a/packages/app/public/index.html b/packages/app/public/index.html index ee647d187c..6fd0a27964 100644 --- a/packages/app/public/index.html +++ b/packages/app/public/index.html @@ -8,10 +8,10 @@ name="description" content="<%= config.getOptionalString('app.title') ?? 'Red Hat Developer Hub' %>" /> - <% if (config.getOptionalString('app.branding.iconLogo')) { %> + <% if (config.getOptional('app.branding.iconLogo')) { %> <% } else { %> diff --git a/packages/app/src/components/CustomIcons/DeveloperHub.tsx b/packages/app/src/components/CustomIcons/DeveloperHub.tsx new file mode 100644 index 0000000000..0c05130722 --- /dev/null +++ b/packages/app/src/components/CustomIcons/DeveloperHub.tsx @@ -0,0 +1,59 @@ +import { createSvgIcon } from '@mui/material/utils'; + +const DeveloperHubIcon = createSvgIcon( + + + + + + + + + + + + + + + + , + 'DeveloperHub', +); + +export default DeveloperHubIcon; diff --git a/packages/app/src/components/DynamicRoot/CommonIcons.tsx b/packages/app/src/components/DynamicRoot/CommonIcons.tsx index d104c5ad61..86bf904d3b 100644 --- a/packages/app/src/components/DynamicRoot/CommonIcons.tsx +++ b/packages/app/src/components/DynamicRoot/CommonIcons.tsx @@ -24,6 +24,8 @@ import Star from '@mui/icons-material/Star'; import Storefront from '@mui/icons-material/StorefrontOutlined'; import Textsms from '@mui/icons-material/TextsmsOutlined'; +import DeveloperHub from '../CustomIcons/DeveloperHub'; + const CommonIcons: { [k: string]: React.ComponentType<{}>; } = { @@ -52,6 +54,7 @@ const CommonIcons: { notifications: Notifications, manageAccounts: ManageAccounts, logout: Logout, + developerHub: DeveloperHub, }; export default CommonIcons; diff --git a/packages/app/src/components/Root/ConfigUpdater.tsx b/packages/app/src/components/Root/ConfigUpdater.tsx index 8171612980..d7d996da61 100644 --- a/packages/app/src/components/Root/ConfigUpdater.tsx +++ b/packages/app/src/components/Root/ConfigUpdater.tsx @@ -1,34 +1,27 @@ -import React, { useEffect } from 'react'; +import { useEffect } from 'react'; -import { configApiRef, useApi } from '@backstage/core-plugin-api'; +import { useSystemThemedConfig } from '../../hooks/useThemedConfig'; -const ConfigUpdater: React.FC = () => { - const configApi = useApi(configApiRef); +const ConfigUpdater = () => { + const logoIconBase64URI = useSystemThemedConfig('app.branding.iconLogo'); useEffect(() => { - const updateConfig = () => { - const logoIconBase64URI = configApi.getOptionalString( - 'app.branding.iconLogo', - ); + if (logoIconBase64URI) { + const favicon = document.getElementById( + 'dynamic-favicon', + ) as HTMLLinkElement; - if (logoIconBase64URI) { - const favicon = document.getElementById( - 'dynamic-favicon', - ) as HTMLLinkElement; - if (favicon) { - favicon.href = logoIconBase64URI; - } else { - const newFavicon = document.createElement('link'); - newFavicon.id = 'dynamic-favicon'; - newFavicon.rel = 'icon'; - newFavicon.href = logoIconBase64URI; - document.head.appendChild(newFavicon); - } + if (favicon) { + favicon.href = logoIconBase64URI; + } else { + const newFavicon = document.createElement('link'); + newFavicon.id = 'dynamic-favicon'; + newFavicon.rel = 'icon'; + newFavicon.href = logoIconBase64URI; + document.head.appendChild(newFavicon); } - }; - - updateConfig(); - }, [configApi]); + } + }, [logoIconBase64URI]); return null; }; diff --git a/packages/app/src/components/Root/LogoFull.tsx b/packages/app/src/components/Root/LogoFull.tsx index 6ba78efeb7..bc60d17af9 100644 --- a/packages/app/src/components/Root/LogoFull.tsx +++ b/packages/app/src/components/Root/LogoFull.tsx @@ -1,53 +1,80 @@ -import { styled } from '@mui/material/styles'; +import { useAppBarBackgroundScheme } from '../../hooks/useThemedConfig'; -const Svg: (props: React.ComponentProps<'svg'>) => React.ReactNode = styled( - 'svg', -)` - width: auto; - height: 35px; -`; +export const LogoFull = (props: React.ComponentProps<'svg'>) => { + const appBarBackgroundScheme = useAppBarBackgroundScheme(); -const LogoFull = (props: React.ComponentProps<'svg'>) => { return ( - - + + + - - - - - - - - - - + ); }; - -export default LogoFull; diff --git a/packages/app/src/components/Root/LogoIcon.tsx b/packages/app/src/components/Root/LogoIcon.tsx index 8aedb0c1f8..34a6b0bb89 100644 --- a/packages/app/src/components/Root/LogoIcon.tsx +++ b/packages/app/src/components/Root/LogoIcon.tsx @@ -1,48 +1,19 @@ -import { styled } from '@mui/material/styles'; - -const Svg: (props: React.ComponentProps<'svg'>) => React.ReactNode = styled( - 'svg', -)` - width: auto; - height: 28px; -`; - -const LogoIcon = (props: React.ComponentProps<'svg'>) => { +export const LogoIcon = (props: React.ComponentProps<'svg'>) => { return ( - - - - - - - - - - - - - - + + + ); }; - -export default LogoIcon; diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx index a06dcb6086..68c20eb3de 100644 --- a/packages/app/src/components/Root/Root.tsx +++ b/packages/app/src/components/Root/Root.tsx @@ -48,6 +48,8 @@ import { SidebarLogo } from './SidebarLogo'; * to support the application headers (and the global header plugin) * without having multiple scrollbars. * + * Note that we cannot target class names directly, due to obfuscation in production builds. + * * This solves also the duplicate scrollbar issues in tech docs: * https://issues.redhat.com/browse/RHIDP-4637 (Scrollbar for docs behaves weirdly if there are over a page of headings) * @@ -79,6 +81,7 @@ import { SidebarLogo } from './SidebarLogo'; * * ``` */ +// this component is copied to rhdh-plugins/global-header packages/app/src/components/Root/Root.tsx and should be kept in sync const PageWithoutFixHeight = styled(Box, { name: 'RHDHPageWithoutFixHeight', slot: 'root', @@ -98,6 +101,7 @@ const PageWithoutFixHeight = styled(Box, { }, })); +// this component is copied to rhdh-plugins/global-header packages/app/src/components/Root/Root.tsx and should be kept in sync const SidebarLayout = styled(Box, { name: 'RHDHPageWithoutFixHeight', slot: 'sidebarLayout', @@ -118,7 +122,8 @@ const SidebarLayout = styled(Box, { flexGrow: 1, maxHeight: `calc(100vh - ${aboveSidebarHeaderHeight ?? 0}px)`, - '& div[class*="BackstageSidebarPage"]': { + // BackstageSidebarPage-root + '& > div': { display: 'flex', flexDirection: 'column', height: 'unset', @@ -134,15 +139,16 @@ const SidebarLayout = styled(Box, { }, }, - // The height is controlled by the flexbox in the BackstageSidebarPage. - '& main[class*="BackstagePage-root"]': { + '& main': { + // The height is controlled by the flexbox in the BackstageSidebarPage. height: `calc(100vh - ${aboveSidebarHeaderHeight! + aboveMainContentHeaderHeight!}px)`, flexGrow: 1, }, - // We need to compensate for the above-sidebar position of the global header - // as it takes up a fixed height at the top of the page. - '& div[class*="BackstageSidebar-drawer"]': { + // BackstageSidebarPage-root > nav > BackstageSidebar-root > BackstageSidebar-drawer + '& > div > nav > div > div': { + // We need to compensate for the above-sidebar position of the global header + // as it takes up a fixed height at the top of the page. top: `max(0px, ${aboveSidebarHeaderHeight ?? 0}px)`, }, }), @@ -423,16 +429,17 @@ export const Root = ({ children }: PropsWithChildren<{}>) => { return ( -
+
diff --git a/packages/app/src/components/Root/SidebarLogo.test.tsx b/packages/app/src/components/Root/SidebarLogo.test.tsx index 505acb4b34..6e836190aa 100644 --- a/packages/app/src/components/Root/SidebarLogo.test.tsx +++ b/packages/app/src/components/Root/SidebarLogo.test.tsx @@ -5,6 +5,7 @@ import { useApi } from '@backstage/core-plugin-api'; import { render } from '@testing-library/react'; +import { useAppBarThemedConfig } from '../../hooks/useThemedConfig'; import { SidebarLogo } from './SidebarLogo'; jest.mock('@backstage/core-components', () => ({ @@ -17,19 +18,17 @@ jest.mock('@backstage/core-plugin-api', () => ({ useApi: jest.fn(), })); -jest.mock('./LogoFull.tsx', () => () => ( - -)); -jest.mock('./LogoIcon.tsx', () => () => ( - -)); +jest.mock('../../hooks/useThemedConfig', () => ({ + ...jest.requireActual('../../hooks/useThemedConfig'), + useAppBarThemedConfig: jest.fn(), +})); describe('SidebarLogo', () => { it('when sidebar is open renders the component with full logo base64 provided by config', () => { (useApi as any).mockReturnValue({ - getOptionalString: jest.fn().mockReturnValue('fullLogoBase64URI'), getOptional: jest.fn().mockReturnValue('fullLogoWidth'), }); + (useAppBarThemedConfig as any).mockReturnValue('fullLogoBase64URI'); (useSidebarOpenState as any).mockReturnValue({ isOpen: true }); const { getByTestId } = render( @@ -45,10 +44,11 @@ describe('SidebarLogo', () => { it('when sidebar is open renders the component with default full logo if config is undefined', () => { (useApi as any).mockReturnValue({ - getOptionalString: jest.fn().mockReturnValue(undefined), getOptional: jest.fn().mockReturnValue(undefined), }); + (useAppBarThemedConfig as any).mockReturnValue(undefined); + (useSidebarOpenState as any).mockReturnValue({ isOpen: true }); const { getByTestId } = render( @@ -61,9 +61,9 @@ describe('SidebarLogo', () => { it('when sidebar is closed renders the component with icon logo base64 provided by config', () => { (useApi as any).mockReturnValue({ - getOptionalString: jest.fn().mockReturnValue('iconLogoBase64URI'), getOptional: jest.fn().mockReturnValue('fullLogoWidth'), }); + (useAppBarThemedConfig as any).mockReturnValue('iconLogoBase64URI'); (useSidebarOpenState as any).mockReturnValue({ isOpen: false }); const { getByTestId } = render( @@ -79,10 +79,11 @@ describe('SidebarLogo', () => { it('when sidebar is closed renders the component with icon logo from default if not provided with config', () => { (useApi as any).mockReturnValue({ - getOptionalString: jest.fn().mockReturnValue(undefined), getOptional: jest.fn().mockReturnValue(undefined), }); + (useAppBarThemedConfig as any).mockReturnValue(undefined); + (useSidebarOpenState as any).mockReturnValue({ isOpen: false }); const { getByTestId } = render( diff --git a/packages/app/src/components/Root/SidebarLogo.tsx b/packages/app/src/components/Root/SidebarLogo.tsx index cf608332fd..fa0e196fe8 100644 --- a/packages/app/src/components/Root/SidebarLogo.tsx +++ b/packages/app/src/components/Root/SidebarLogo.tsx @@ -1,10 +1,13 @@ +import type { ComponentType } from 'react'; + import { Link, useSidebarOpenState } from '@backstage/core-components'; import { configApiRef, useApi } from '@backstage/core-plugin-api'; import { makeStyles } from 'tss-react/mui'; -import LogoFull from './LogoFull'; -import LogoIcon from './LogoIcon'; +import { useAppBarThemedConfig } from '../../hooks/useThemedConfig'; +import { LogoFull } from './LogoFull'; +import { LogoIcon } from './LogoIcon'; const useStyles = makeStyles()({ sidebarLogo: { @@ -14,11 +17,11 @@ const useStyles = makeStyles()({ const LogoRender = ({ base64Logo, - defaultLogo, + DefaultLogo, width, }: { base64Logo: string | undefined; - defaultLogo: React.JSX.Element; + DefaultLogo: ComponentType>; width: string | number; }) => { return base64Logo ? ( @@ -29,24 +32,23 @@ const LogoRender = ({ width={width} /> ) : ( - defaultLogo + ); }; export const SidebarLogo = () => { const { classes } = useStyles(); const { isOpen } = useSidebarOpenState(); + const configApi = useApi(configApiRef); - const logoFullBase64URI = configApi.getOptionalString( - 'app.branding.fullLogo', - ); + + const logoFullBase64URI = useAppBarThemedConfig('app.branding.fullLogo'); + const fullLogoWidth = configApi .getOptional('app.branding.fullLogoWidth') ?.toString(); - const logoIconBase64URI = configApi.getOptionalString( - 'app.branding.iconLogo', - ); + const logoIconBase64URI = useAppBarThemedConfig('app.branding.iconLogo'); return (
@@ -54,13 +56,13 @@ export const SidebarLogo = () => { {isOpen ? ( } + DefaultLogo={LogoFull} width={fullLogoWidth ?? 170} /> ) : ( } + DefaultLogo={LogoIcon} width={28} /> )} diff --git a/packages/app/src/hooks/useThemedConfig.ts b/packages/app/src/hooks/useThemedConfig.ts new file mode 100644 index 0000000000..20d6472262 --- /dev/null +++ b/packages/app/src/hooks/useThemedConfig.ts @@ -0,0 +1,71 @@ +import { useEffect, useState } from 'react'; + +import { configApiRef, useApi } from '@backstage/core-plugin-api'; + +import { useTheme } from '@mui/material/styles'; +import type { ThemeConfig } from '@red-hat-developer-hub/backstage-plugin-theme'; + +import type { Config } from '../../config'; + +type fullLogoType = NonNullable['fullLogo']; +type iconLogoType = NonNullable['fullLogo']; + +/** + * Get the app bar background scheme from the theme. Defaults to 'dark' if not set. + */ +export const useAppBarBackgroundScheme = () => { + const theme = useTheme(); + + return ( + (theme as ThemeConfig)?.palette?.rhdh?.general?.appBarBackgroundScheme ?? + 'dark' + ); +}; + +/** + * Gets a config value based on the value of `theme.palette.rhdh.general.appBarBackgroundScheme`. + */ +export const useAppBarThemedConfig = ( + key: 'app.branding.fullLogo' | 'app.branding.iconLogo', +) => { + const appBarBackgroundScheme = useAppBarBackgroundScheme(); + + const configApi = useApi(configApiRef); + + /** The fullLogo config specified by Red Hat Developer Hub */ + const fullLogo = configApi.getOptional(key); + + return typeof fullLogo === 'string' + ? fullLogo + : fullLogo?.[appBarBackgroundScheme]; +}; + +/** + * Gets a config value based on the user's system theme. + */ +export const useSystemThemedConfig = ( + key: 'app.branding.fullLogo' | 'app.branding.iconLogo', +) => { + const configApi = useApi(configApiRef); + + /** The fullLogo config specified by Red Hat Developer Hub */ + const fullLogo = configApi.getOptional(key); + + const [colorScheme, setColorScheme] = useState<'light' | 'dark'>('light'); + + useEffect(() => { + const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); + const handleChange = (event: MediaQueryListEvent) => { + setColorScheme(event.matches ? 'dark' : 'light'); + }; + + mediaQuery.addEventListener('change', handleChange); + setColorScheme(mediaQuery.matches ? 'dark' : 'light'); + + return () => { + mediaQuery.removeEventListener('change', handleChange); + }; + }, []); + + return typeof fullLogo === 'string' ? fullLogo : fullLogo?.[colorScheme]; +}; diff --git a/yarn.lock b/yarn.lock index f7bdbbe5bd..c70037221d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11990,9 +11990,9 @@ __metadata: languageName: node linkType: hard -"@red-hat-developer-hub/backstage-plugin-theme@npm:0.9.0": - version: 0.9.0 - resolution: "@red-hat-developer-hub/backstage-plugin-theme@npm:0.9.0" +"@red-hat-developer-hub/backstage-plugin-theme@npm:0.9.1": + version: 0.9.1 + resolution: "@red-hat-developer-hub/backstage-plugin-theme@npm:0.9.1" dependencies: "@mui/icons-material": ^5.17.1 peerDependencies: @@ -12002,7 +12002,7 @@ __metadata: "@mui/icons-material": ^5.17.1 "@mui/material": ^5.0.0 react: ^16.13.1 || ^17.0.0 || ^18.0.0 - checksum: 365e81ba8af0fe38587e21bd842ede6eb6ee2d1590dbad26c3e5e6ca42c885b4e19de3cfc9435f43113f67960cf57c4614011596d4332def1bac93b9a6199860 + checksum: 876923b59c7f7bd6cf56218004770dd5b9c34873ca0a04f7ae9b6b9cbe33214de9f867d27702045785bd865cdc7dee23277cb58711447b5859bd1dae1d4a66db languageName: node linkType: hard @@ -16260,7 +16260,7 @@ __metadata: "@mui/icons-material": 5.17.1 "@mui/material": 5.17.1 "@mui/styled-engine": 5.16.14 - "@red-hat-developer-hub/backstage-plugin-theme": 0.9.0 + "@red-hat-developer-hub/backstage-plugin-theme": 0.9.1 "@red-hat-developer-hub/plugin-utils": 1.0.0 "@scalprum/core": 0.8.3 "@scalprum/react-core": 0.9.5