mirror of https://github.com/harness/drone.git
feat: [CDE-670]: New gitspace infra screens (#3560)
* fix: Applied prettier * fix: lint issues * fix: Resolved the PR comments * fix: lint issues * feat: New gitspace infra screensmain
parent
4fc663ed04
commit
a86659cb45
|
@ -50,7 +50,8 @@ const App: React.FC<AppProps> = React.memo(function App({
|
|||
currentUserProfileURL = '',
|
||||
defaultSettingsURL = '',
|
||||
isPublicAccessEnabledOnResources = false,
|
||||
isCurrentSessionPublic = !!window.publicAccessOnGitness
|
||||
isCurrentSessionPublic = !!window.publicAccessOnGitness,
|
||||
accountInfo = {}
|
||||
}: AppProps) {
|
||||
const [strings, setStrings] = useState<LanguageRecord>()
|
||||
const getRequestOptions = useCallback(
|
||||
|
@ -100,7 +101,8 @@ const App: React.FC<AppProps> = React.memo(function App({
|
|||
currentUserProfileURL,
|
||||
defaultSettingsURL,
|
||||
isPublicAccessEnabledOnResources,
|
||||
isCurrentSessionPublic
|
||||
isCurrentSessionPublic,
|
||||
accountInfo
|
||||
}}>
|
||||
<IconoirProvider
|
||||
iconProps={{
|
||||
|
|
|
@ -56,7 +56,8 @@ const AppContext = React.createContext<AppContextProps>({
|
|||
routingId: '',
|
||||
defaultSettingsURL: '',
|
||||
isPublicAccessEnabledOnResources: false,
|
||||
isCurrentSessionPublic: !!window.publicAccessOnGitness
|
||||
isCurrentSessionPublic: !!window.publicAccessOnGitness,
|
||||
accountInfo: noop
|
||||
})
|
||||
|
||||
export const AppContextProvider: React.FC<{ value: AppProps }> = React.memo(function AppContextProvider({
|
||||
|
|
|
@ -87,6 +87,8 @@ export interface AppProps {
|
|||
isCurrentSessionPublic: boolean
|
||||
module?: string
|
||||
|
||||
accountInfo?: Unknown
|
||||
|
||||
arAppStore?: {
|
||||
repositoryIdentifier?: string
|
||||
artifactIdentifier?: string
|
||||
|
|
|
@ -54,6 +54,7 @@ ReactDOM.render(
|
|||
defaultSettingsURL=""
|
||||
isPublicAccessEnabledOnResources
|
||||
isCurrentSessionPublic={!!window.publicAccessOnGitness}
|
||||
accountInfo={noop}
|
||||
/>,
|
||||
document.getElementById('react-root')
|
||||
)
|
||||
|
|
|
@ -17,11 +17,13 @@
|
|||
export interface CDEProps {
|
||||
space?: string
|
||||
gitspaceId?: string
|
||||
accountId?: string
|
||||
}
|
||||
|
||||
export const pathProps: Readonly<Required<CDEProps>> = {
|
||||
space: ':space*',
|
||||
gitspaceId: ':gitspaceId'
|
||||
gitspaceId: ':gitspaceId',
|
||||
accountId: ':accountId'
|
||||
}
|
||||
|
||||
export interface CDERoutes {
|
||||
|
@ -29,11 +31,17 @@ export interface CDERoutes {
|
|||
toCDEGitspaceDetail: (args: Required<Pick<CDEProps, 'space' | 'gitspaceId'>>) => string
|
||||
toCDEGitspacesCreate: (args: Required<Pick<CDEProps, 'space'>>) => string
|
||||
toCDEGitspacesEdit: (args: Required<Pick<CDEProps, 'space' | 'gitspaceId'>>) => string
|
||||
toCDEGitspaceInfra: (args: Required<Pick<CDEProps, 'accountId'>>) => string
|
||||
toCDEInfraConfigure: (args: Required<Pick<CDEProps, 'accountId'>>) => string
|
||||
toModuleRoute: (args: Required<Pick<CDEProps, 'accountId'>>) => string
|
||||
}
|
||||
|
||||
export const routes: CDERoutes = {
|
||||
toCDEGitspaces: ({ space }) => `/${space}/gitspaces`,
|
||||
toCDEGitspaceDetail: ({ space, gitspaceId }) => `/${space}/gitspaces/${gitspaceId}`,
|
||||
toCDEGitspacesCreate: ({ space }) => `/${space}/gitspaces/create`,
|
||||
toCDEGitspacesEdit: ({ space, gitspaceId }) => `/${space}/gitspaces/edit/${gitspaceId}`
|
||||
toCDEGitspacesEdit: ({ space, gitspaceId }) => `/${space}/gitspaces/edit/${gitspaceId}`,
|
||||
toCDEGitspaceInfra: ({ accountId }) => `/account/${accountId}/module/cde/gitspace-infrastructure`,
|
||||
toCDEInfraConfigure: ({ accountId }) => `/account/${accountId}/module/cde/gitspace-infrastructure/configure`,
|
||||
toModuleRoute: ({ accountId }) => `/account/${accountId}/module/cde`
|
||||
}
|
||||
|
|
|
@ -32,7 +32,9 @@ module.exports = {
|
|||
'./App': './src/App.tsx',
|
||||
'./Gitspaces': './src/cde-gitness/pages/GitspaceCreate/GitspaceCreate.tsx',
|
||||
'./GitspaceDetail': './src/cde-gitness/pages/GitspaceDetails/GitspaceDetails.tsx',
|
||||
'./GitspaceList': './src/cde-gitness/pages/GitspaceListing/GitspaceListing.tsx'
|
||||
'./GitspaceList': './src/cde-gitness/pages/GitspaceListing/GitspaceListing.tsx',
|
||||
'./GitspaceInfra': './src/cde-gitness/pages/GitspaceInfra/GitspaceInfraHomePage.tsx',
|
||||
'./GitspaceInfraDetail': './src/cde-gitness/pages/InfraConfigure/InfraConfigure.tsx'
|
||||
},
|
||||
shared: Object.assign(
|
||||
{},
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* Copyright 2024 Harness, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
.main {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
margin-top: 4% !important;
|
||||
|
||||
.titleContainer {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.cardMain {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.cardTitle {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.subContainers {
|
||||
margin: var(--spacing-xlarge) 0 !important;
|
||||
margin-bottom: 0px !important;
|
||||
}
|
||||
|
||||
.customBreadcumbStyles {
|
||||
[class*='Layout--horizontal']:last-child > span[class*='bp3-icon'] {
|
||||
/* Your styles here */
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.infraLogo {
|
||||
margin: 0 auto !important;
|
||||
width: 318px !important;
|
||||
height: 318px !important;
|
||||
}
|
||||
|
||||
.containerHeading {
|
||||
margin-bottom: var(--spacing-small) !important;
|
||||
font-weight: 600 !important;
|
||||
font-size: var(--font-size-medium) !important;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.infraDescription {
|
||||
margin-bottom: var(--spacing-xlarge) !important;
|
||||
font-size: var(--font-size-normal) !important;
|
||||
font-weight: 400 !important;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.configureButton {
|
||||
padding: var(--spacing-medium) var(--spacing-medium) !important;
|
||||
width: fit-content !important;
|
||||
font-size: var(--font-size-small) !important;
|
||||
font-weight: 200 !important;
|
||||
margin: 0 auto var(--spacing-xxlarge) auto !important;
|
||||
}
|
||||
|
||||
.supportText {
|
||||
font-weight: 400 !important;
|
||||
font-size: var(--font-size-small) !important;
|
||||
text-align: center !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.learnMoreText {
|
||||
font-weight: 400 !important;
|
||||
font-size: var(--font-size-small) !important;
|
||||
color: var(--primary-7) !important;
|
||||
cursor: pointer;
|
||||
}
|
30
web/src/cde-gitness/pages/GitspaceInfra/GitspaceInfraHomePage.module.scss.d.ts
vendored
Normal file
30
web/src/cde-gitness/pages/GitspaceInfra/GitspaceInfraHomePage.module.scss.d.ts
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright 2023 Harness, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* eslint-disable */
|
||||
// This is an auto-generated file
|
||||
export declare const cardMain: string
|
||||
export declare const cardTitle: string
|
||||
export declare const configureButton: string
|
||||
export declare const containerHeading: string
|
||||
export declare const customBreadcumbStyles: string
|
||||
export declare const infraDescription: string
|
||||
export declare const infraLogo: string
|
||||
export declare const learnMoreText: string
|
||||
export declare const main: string
|
||||
export declare const subContainers: string
|
||||
export declare const supportText: string
|
||||
export declare const titleContainer: string
|
|
@ -0,0 +1,51 @@
|
|||
import React from 'react'
|
||||
import { Breadcrumbs, Button, ButtonVariation, Page } from '@harnessio/uicore'
|
||||
import { useAppContext } from 'AppContext'
|
||||
import { useStrings } from 'framework/strings'
|
||||
import { routes } from 'cde-gitness/RouteDefinitions'
|
||||
import NoDataCard from './NoDataCard'
|
||||
import css from './GitspaceInfraHomePage.module.scss'
|
||||
|
||||
const GitspaceInfraHomePage = () => {
|
||||
const { getString } = useStrings()
|
||||
const { accountInfo } = useAppContext()
|
||||
const data = null
|
||||
|
||||
return (
|
||||
<>
|
||||
<Page.Header
|
||||
title={getString('cde.gitspaceInfra')}
|
||||
content={
|
||||
data ? (
|
||||
<Button
|
||||
icon="Edit"
|
||||
iconProps={{ size: 12 }}
|
||||
variation={ButtonVariation.SECONDARY}
|
||||
text={getString('cde.edit')}
|
||||
/>
|
||||
) : (
|
||||
<></>
|
||||
)
|
||||
}
|
||||
breadcrumbs={
|
||||
<Breadcrumbs
|
||||
className={css.customBreadcumbStyles}
|
||||
links={[
|
||||
{
|
||||
url: routes.toModuleRoute({ accountId: accountInfo?.identifier }),
|
||||
label: `${getString('cde.account')}: ${accountInfo?.name}`
|
||||
},
|
||||
{
|
||||
url: routes.toCDEGitspaceInfra({ accountId: accountInfo?.identifier }),
|
||||
label: getString('cde.gitspaceInfra')
|
||||
}
|
||||
]}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
<Page.Body className={css.main}>{data ? <>Data</> : <NoDataCard />}</Page.Body>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default GitspaceInfraHomePage
|
|
@ -0,0 +1,42 @@
|
|||
import React from 'react'
|
||||
import { Button, ButtonVariation, Container, Layout, Text } from '@harnessio/uicore'
|
||||
import { Color } from '@harnessio/design-system'
|
||||
import { Link, useHistory } from 'react-router-dom'
|
||||
import { routes } from 'cde-gitness/RouteDefinitions'
|
||||
import { useStrings } from 'framework/strings'
|
||||
import { useAppContext } from 'AppContext'
|
||||
import InfraLogo from '../../../icons/infra_home_icon.svg?url'
|
||||
import css from './GitspaceInfraHomePage.module.scss'
|
||||
|
||||
const NoDataCard = () => {
|
||||
const { getString } = useStrings()
|
||||
const history = useHistory()
|
||||
const { accountInfo } = useAppContext()
|
||||
|
||||
return (
|
||||
<Container className={css.titleContainer}>
|
||||
<Layout.Vertical spacing="small" margin={{ bottom: 'medium' }}>
|
||||
<img src={InfraLogo} className={css.infraLogo} />
|
||||
<Text className={css.containerHeading} color={Color.BLACK}>
|
||||
{getString('cde.configureGitspaceInfra')}
|
||||
</Text>
|
||||
<Text className={css.infraDescription}>{getString('cde.gitspaceInfraHome.description')}</Text>
|
||||
<Button
|
||||
onClick={() => history.push(routes.toCDEInfraConfigure({ accountId: accountInfo?.identifier }))}
|
||||
font={{ size: 'small' }}
|
||||
className={css.configureButton}
|
||||
variation={ButtonVariation.PRIMARY}>
|
||||
{getString('cde.gitspaceInfraHome.configureGCPButton')}
|
||||
</Button>
|
||||
<Text className={css.supportText} icon="info-messaging">
|
||||
{getString('cde.gitspaceInfraHome.gcpSupportText')}
|
||||
<Link to={'/'} className={css.learnMoreText} style={{ paddingLeft: '4px' }}>
|
||||
{getString('cde.gitspaceInfraHome.learnMore')}
|
||||
</Link>
|
||||
</Text>
|
||||
</Layout.Vertical>
|
||||
</Container>
|
||||
)
|
||||
}
|
||||
|
||||
export default NoDataCard
|
|
@ -0,0 +1,56 @@
|
|||
.main {
|
||||
padding: 64px 264px !important;
|
||||
}
|
||||
|
||||
.pageTitle {
|
||||
font-size: var(--spacing-medium) !important;
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
|
||||
.bodyContainer {
|
||||
background-color: var(--grey-0) !important;
|
||||
border-radius: 4px !important;
|
||||
border: 1px solid var(--grey-100) !important;
|
||||
padding: var(--spacing-xlarge) !important;
|
||||
margin-bottom: var(--spacing-large) !important;
|
||||
}
|
||||
|
||||
.formFooter {
|
||||
padding: var(--spacing-medium) 0 !important;
|
||||
width: 100% !important;
|
||||
display: flex;
|
||||
justify-content: space-between !important;
|
||||
}
|
||||
|
||||
.listTitle {
|
||||
font-size: var(--font-size-normal) !important;
|
||||
font-weight: 400 !important;
|
||||
|
||||
img {
|
||||
margin-right: var(--spacing-small) !important;
|
||||
}
|
||||
}
|
||||
|
||||
.buttonStyle {
|
||||
width: fit-content !important;
|
||||
margin-top: var(--spacing-medium) !important;
|
||||
margin-bottom: var(--spacing-xlarge) !important;
|
||||
margin-left: var(--spacing-xlarge) !important;
|
||||
}
|
||||
|
||||
.codeBlockContainer {
|
||||
padding-left: var(--spacing-xlarge) !important;
|
||||
|
||||
[class*='CodeBlock'] {
|
||||
width: 70% !important;
|
||||
min-width: 350px !important;
|
||||
border-radius: var(--spacing-small) !important;
|
||||
background-color: var(--grey-1000) !important;
|
||||
color: var(--grey-0) !important;
|
||||
|
||||
pre {
|
||||
font-size: var(--font-size-normal) !important;
|
||||
padding-left: var(--spacing-small) !important;
|
||||
}
|
||||
}
|
||||
}
|
25
web/src/cde-gitness/pages/InfraConfigure/DownloadAndApply/DownloadAndApply.module.scss.d.ts
vendored
Normal file
25
web/src/cde-gitness/pages/InfraConfigure/DownloadAndApply/DownloadAndApply.module.scss.d.ts
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* Copyright 2023 Harness, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* eslint-disable */
|
||||
// This is an auto-generated file
|
||||
export declare const bodyContainer: string
|
||||
export declare const buttonStyle: string
|
||||
export declare const codeBlockContainer: string
|
||||
export declare const formFooter: string
|
||||
export declare const listTitle: string
|
||||
export declare const main: string
|
||||
export declare const pageTitle: string
|
|
@ -0,0 +1,68 @@
|
|||
import React from 'react'
|
||||
import { Button, ButtonVariation, CodeBlock, Layout, Page, Text } from '@harnessio/uicore'
|
||||
import { Color } from '@harnessio/design-system'
|
||||
import { useHistory } from 'react-router-dom'
|
||||
import { useAppContext } from 'AppContext'
|
||||
import { useStrings } from 'framework/strings'
|
||||
import { routes } from 'cde-gitness/RouteDefinitions'
|
||||
import Index1 from '../../../../icons/num1.svg?url'
|
||||
import Index2 from '../../../../icons/num2.svg?url'
|
||||
import css from './DownloadAndApply.module.scss'
|
||||
|
||||
interface InfraDetailProps {
|
||||
onTabChange: (key: string) => void
|
||||
tabOptions: { [key: string]: string }
|
||||
}
|
||||
|
||||
const DownloadAndApplySection = ({ onTabChange, tabOptions }: InfraDetailProps) => {
|
||||
const { getString } = useStrings()
|
||||
const { accountInfo } = useAppContext()
|
||||
const history = useHistory()
|
||||
return (
|
||||
<Page.Body className={css.main}>
|
||||
<Layout.Vertical spacing={'medium'}>
|
||||
<Text className={css.pageTitle} color={Color.GREY_1000}>
|
||||
{getString('cde.downloadAndApplySection.title')}
|
||||
</Text>
|
||||
<Layout.Vertical spacing="medium" className={css.bodyContainer}>
|
||||
<Layout.Vertical spacing={'medium'}>
|
||||
<Text icon={<img src={Index1} width={16} />} className={css.listTitle}>
|
||||
{getString('cde.downloadAndApplySection.downloadGeneratedYaml')}
|
||||
</Text>
|
||||
<Button
|
||||
className={css.buttonStyle}
|
||||
icon={'download-manifests-inverse'}
|
||||
iconProps={{ size: 14 }}
|
||||
text={getString('cde.downloadAndApplySection.downloadYaml')}
|
||||
variation={ButtonVariation.PRIMARY}
|
||||
/>
|
||||
</Layout.Vertical>
|
||||
<Layout.Vertical spacing="none">
|
||||
<Text icon={<img src={Index2} width={16} />} className={css.listTitle}>
|
||||
{getString('cde.downloadAndApplySection.applyYamlText')}
|
||||
</Text>
|
||||
<Layout.Vertical spacing={'medium'} className={css.codeBlockContainer}>
|
||||
<CodeBlock allowCopy format="pre" snippet={'tofu apply [options] [plan file]'} />
|
||||
<CodeBlock allowCopy format="pre" snippet={'tofu apply [options] [plan file]'} />
|
||||
</Layout.Vertical>
|
||||
</Layout.Vertical>
|
||||
</Layout.Vertical>
|
||||
<Layout.Horizontal className={css.formFooter}>
|
||||
<Button
|
||||
text={getString('cde.downloadAndApplySection.back')}
|
||||
icon="chevron-left"
|
||||
variation={ButtonVariation.SECONDARY}
|
||||
onClick={() => onTabChange(tabOptions.tab1)}
|
||||
/>
|
||||
<Button
|
||||
text={getString('cde.downloadAndApplySection.done')}
|
||||
variation={ButtonVariation.PRIMARY}
|
||||
onClick={() => history.push(routes.toCDEGitspaceInfra({ accountId: accountInfo?.identifier }))}
|
||||
/>
|
||||
</Layout.Horizontal>
|
||||
</Layout.Vertical>
|
||||
</Page.Body>
|
||||
)
|
||||
}
|
||||
|
||||
export default DownloadAndApplySection
|
|
@ -0,0 +1,30 @@
|
|||
.customBreadcumbStyles {
|
||||
[class*='Layout--horizontal']:last-child > span[class*='bp3-icon'] {
|
||||
/* Your styles here */
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.learnMoreLink {
|
||||
font-weight: 500 !important;
|
||||
font-size: var(--font-size-normal) !important;
|
||||
cursor: pointer !important;
|
||||
|
||||
.bp3-icon {
|
||||
padding-left: var(--spacing-small) !important;
|
||||
}
|
||||
}
|
||||
|
||||
.tabContainer {
|
||||
width: 100% !important;
|
||||
|
||||
[class*='bp3-tab-list'] {
|
||||
background-color: var(--grey-0) !important;
|
||||
border-bottom: 1px solid var(--grey-200) !important;
|
||||
padding: 0 var(--spacing-xlarge) !important;
|
||||
}
|
||||
|
||||
[class*='bp3-tab'] {
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
/*
|
||||
* Copyright 2023 Harness, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* eslint-disable */
|
||||
// This is an auto-generated file
|
||||
export declare const bp3Icon: string
|
||||
export declare const customBreadcumbStyles: string
|
||||
export declare const learnMoreLink: string
|
||||
export declare const tabContainer: string
|
|
@ -0,0 +1,96 @@
|
|||
import React, { useState } from 'react'
|
||||
import { Breadcrumbs, Container, Heading, Layout, Page, Tabs, Text } from '@harnessio/uicore'
|
||||
import { Icon } from '@harnessio/icons'
|
||||
import { Color, FontVariation } from '@harnessio/design-system'
|
||||
import { useAppContext } from 'AppContext'
|
||||
import { useStrings } from 'framework/strings'
|
||||
import { routes } from 'cde-gitness/RouteDefinitions'
|
||||
import InfraDetails from './InfraDetails/InfraDetails'
|
||||
import DownloadAndApplySection from './DownloadAndApply/DownloadAndApply'
|
||||
import GCPIcon from '../../../icons/google-cloud.svg?url'
|
||||
import css from './InfraConfigure.module.scss'
|
||||
|
||||
const InfraConfigurePage = () => {
|
||||
const { getString } = useStrings()
|
||||
const { accountInfo } = useAppContext()
|
||||
const tabOptions = {
|
||||
tab1: 'infra-details',
|
||||
tab2: 'download-and-apply'
|
||||
}
|
||||
const [tab, selectedTab] = useState(tabOptions.tab1)
|
||||
|
||||
const onTabChange = (key: string) => {
|
||||
selectedTab(key)
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Page.Header
|
||||
title={
|
||||
<Layout.Horizontal>
|
||||
<img src={GCPIcon} width={24} />
|
||||
<Heading level={4} font={{ variation: FontVariation.H4 }} padding={{ left: 'small' }}>
|
||||
{getString('cde.configureGCPInfra')}
|
||||
</Heading>
|
||||
</Layout.Horizontal>
|
||||
}
|
||||
content={
|
||||
<Text
|
||||
rightIcon="share"
|
||||
color={Color.PRIMARY_7}
|
||||
rightIconProps={{ size: 12, color: Color.PRIMARY_7 }}
|
||||
className={css.learnMoreLink}
|
||||
onClick={() => {
|
||||
window.open('/', '_blank')
|
||||
}}>
|
||||
{getString('cde.configureInfra.learnMoreAboutHybrid')}
|
||||
</Text>
|
||||
}
|
||||
breadcrumbs={
|
||||
<Breadcrumbs
|
||||
className={css.customBreadcumbStyles}
|
||||
links={[
|
||||
{
|
||||
url: routes.toModuleRoute({ accountId: accountInfo?.identifier }),
|
||||
label: `${getString('cde.account')}: ${accountInfo?.name}`
|
||||
},
|
||||
{
|
||||
url: routes.toCDEGitspaceInfra({ accountId: accountInfo?.identifier }),
|
||||
label: getString('cde.gitspaceInfra')
|
||||
},
|
||||
{
|
||||
url: routes.toCDEInfraConfigure({ accountId: accountInfo?.identifier }),
|
||||
label: getString('cde.configureInfra.configure')
|
||||
}
|
||||
]}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
<Page.Body>
|
||||
<Container className={css.tabContainer}>
|
||||
<Tabs
|
||||
id={'horizontalTabs'}
|
||||
selectedTabId={tab}
|
||||
tabList={[
|
||||
{
|
||||
id: tabOptions.tab1,
|
||||
title: getString('cde.configureInfra.provideInfraDetails'),
|
||||
disabled: tab !== tabOptions.tab1,
|
||||
panel: <InfraDetails onTabChange={onTabChange} tabOptions={tabOptions} />
|
||||
},
|
||||
{ id: '', title: <Icon name="chevron-right" size={16} />, disabled: true },
|
||||
{
|
||||
id: tabOptions.tab2,
|
||||
title: getString('cde.configureInfra.downloadAndApply'),
|
||||
disabled: tab !== tabOptions.tab2,
|
||||
panel: <DownloadAndApplySection onTabChange={onTabChange} tabOptions={tabOptions} />
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</Container>
|
||||
</Page.Body>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default InfraConfigurePage
|
|
@ -0,0 +1,48 @@
|
|||
import React from 'react'
|
||||
import { Container, FormInput, Label, Layout, Text } from '@harnessio/uicore'
|
||||
import { Color } from '@harnessio/design-system'
|
||||
import { useStrings } from 'framework/strings'
|
||||
import css from './InfraDetails.module.scss'
|
||||
|
||||
const BasicDetails = () => {
|
||||
const { getString } = useStrings()
|
||||
return (
|
||||
<Layout.Vertical spacing="medium" className={css.containerSpacing}>
|
||||
<Text className={css.basicDetailsHeading}>{getString('cde.configureInfra.basicDetails')}</Text>
|
||||
<Container className={css.basicDetailsBody}>
|
||||
<Label>
|
||||
<Layout.Horizontal className={css.inlineContainer}>
|
||||
<Text className={css.inputLabel}>{getString('cde.configureInfra.name')}</Text>
|
||||
<Layout.Horizontal>
|
||||
<Text className={css.inputLabel}>{getString('cde.configureInfra.id')}: </Text>
|
||||
<Text
|
||||
color={Color.PRIMARY_7}
|
||||
rightIcon="code-edit"
|
||||
className={css.valueText}
|
||||
rightIconProps={{ size: 16 }}>
|
||||
Dhruv Test
|
||||
</Text>
|
||||
</Layout.Horizontal>
|
||||
</Layout.Horizontal>
|
||||
</Label>
|
||||
<FormInput.Text name="name" placeholder={getString('cde.configureInfra.name')} />
|
||||
<FormInput.Text
|
||||
name="domain"
|
||||
className={css.inputWithNote}
|
||||
label={
|
||||
<Text
|
||||
rightIcon="info"
|
||||
className={css.inputLabel}
|
||||
rightIconProps={{ color: Color.PRIMARY_7, size: 12, margin: 5 }}>
|
||||
{getString('cde.configureInfra.domain')}
|
||||
</Text>
|
||||
}
|
||||
placeholder={getString('cde.configureInfra.domain')}
|
||||
/>
|
||||
<Text className={css.noteText}>{getString('cde.configureInfra.basicNoteText')}</Text>
|
||||
</Container>
|
||||
</Layout.Vertical>
|
||||
)
|
||||
}
|
||||
|
||||
export default BasicDetails
|
|
@ -0,0 +1,26 @@
|
|||
import React from 'react'
|
||||
import { Container, Layout, Text } from '@harnessio/uicore'
|
||||
import { Color } from '@harnessio/design-system'
|
||||
import { useStrings } from 'framework/strings'
|
||||
import css from './InfraDetails.module.scss'
|
||||
|
||||
const ConfigureLocations = () => {
|
||||
const { getString } = useStrings()
|
||||
return (
|
||||
<Layout.Vertical spacing="small" className={css.containerSpacing}>
|
||||
<Text className={css.basicDetailsHeading}>{getString('cde.configureInfra.configureLocations')}</Text>
|
||||
<Layout.Horizontal spacing="small">
|
||||
<Text color={Color.GREY_400} className={css.headerLinkText}>
|
||||
{getString('cde.configureInfra.configureLocationNote')}
|
||||
</Text>
|
||||
<Text color={Color.PRIMARY_7} className={css.headerLinkText}>
|
||||
{getString('cde.configureInfra.learnMore')}
|
||||
</Text>
|
||||
</Layout.Horizontal>
|
||||
|
||||
<Container className={css.basicDetailsBody}></Container>
|
||||
</Layout.Vertical>
|
||||
)
|
||||
}
|
||||
|
||||
export default ConfigureLocations
|
|
@ -0,0 +1,38 @@
|
|||
import React from 'react'
|
||||
import { Container, FormInput, Layout, Text } from '@harnessio/uicore'
|
||||
import { Color } from '@harnessio/design-system'
|
||||
import { useStrings } from 'framework/strings'
|
||||
import css from './InfraDetails.module.scss'
|
||||
|
||||
const GatewayDetails = () => {
|
||||
const { getString } = useStrings()
|
||||
return (
|
||||
<Layout.Vertical spacing="medium" className={css.containerSpacing}>
|
||||
<Text className={css.basicDetailsHeading}>{getString('cde.configureInfra.gateway')}</Text>
|
||||
<Container className={css.basicDetailsBody}>
|
||||
<FormInput.Text
|
||||
name="domain"
|
||||
className={css.inputWithNote}
|
||||
label={
|
||||
<Text
|
||||
rightIcon="info"
|
||||
className={css.inputLabel}
|
||||
rightIconProps={{ color: Color.PRIMARY_7, size: 12, margin: 5 }}>
|
||||
{getString('cde.configureInfra.numberOfInstance')}
|
||||
</Text>
|
||||
}
|
||||
placeholder={getString('cde.configureInfra.numberOfInstance')}
|
||||
/>
|
||||
<Text className={css.noteText}>{getString('cde.configureInfra.gatewayNoteText')}</Text>
|
||||
<FormInput.Text
|
||||
className={css.inputWithMargin}
|
||||
name="machineType"
|
||||
label={getString('cde.configureInfra.machineType')}
|
||||
placeholder={getString('cde.configureInfra.machineType')}
|
||||
/>
|
||||
</Container>
|
||||
</Layout.Vertical>
|
||||
)
|
||||
}
|
||||
|
||||
export default GatewayDetails
|
|
@ -0,0 +1,66 @@
|
|||
.main {
|
||||
padding: 40px 160px !important;
|
||||
}
|
||||
|
||||
.basicDetailsContainer {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.basicDetailsHeading {
|
||||
font-size: var(--font-size-normal) !important;
|
||||
font-weight: 600 !important;
|
||||
color: var(--grey-800) !important;
|
||||
}
|
||||
|
||||
.basicDetailsBody {
|
||||
background-color: var(--grey-0) !important;
|
||||
border-radius: var(--spacing-small) !important;
|
||||
padding: var(--spacing-xlarge) !important;
|
||||
border: 1px solid var(--grey-100) !important;
|
||||
}
|
||||
|
||||
.noteText {
|
||||
font-size: 12px !important;
|
||||
font-weight: 400 !important;
|
||||
}
|
||||
|
||||
.inputLabel {
|
||||
font-size: 13px !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
|
||||
.inlineContainer {
|
||||
width: 100% !important;
|
||||
display: flex !important;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.valueText {
|
||||
font-size: 13px !important;
|
||||
font-weight: 400 !important;
|
||||
padding-left: 4px !important;
|
||||
}
|
||||
|
||||
.inputWithNote {
|
||||
margin-bottom: 4px !important;
|
||||
}
|
||||
|
||||
.containerSpacing {
|
||||
margin-bottom: var(--spacing-large) !important;
|
||||
}
|
||||
|
||||
.inputWithMargin {
|
||||
margin-top: var(--spacing-medium) !important;
|
||||
}
|
||||
|
||||
.headerLinkText {
|
||||
font-size: 13px !important;
|
||||
font-weight: 400 !important;
|
||||
}
|
||||
|
||||
.formFooter {
|
||||
padding: var(--spacing-medium) 0 !important;
|
||||
width: 100% !important;
|
||||
display: flex;
|
||||
justify-content: space-between !important;
|
||||
}
|
31
web/src/cde-gitness/pages/InfraConfigure/InfraDetails/InfraDetails.module.scss.d.ts
vendored
Normal file
31
web/src/cde-gitness/pages/InfraConfigure/InfraDetails/InfraDetails.module.scss.d.ts
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright 2023 Harness, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* eslint-disable */
|
||||
// This is an auto-generated file
|
||||
export declare const basicDetailsBody: string
|
||||
export declare const basicDetailsContainer: string
|
||||
export declare const basicDetailsHeading: string
|
||||
export declare const containerSpacing: string
|
||||
export declare const formFooter: string
|
||||
export declare const headerLinkText: string
|
||||
export declare const inlineContainer: string
|
||||
export declare const inputLabel: string
|
||||
export declare const inputWithMargin: string
|
||||
export declare const inputWithNote: string
|
||||
export declare const main: string
|
||||
export declare const noteText: string
|
||||
export declare const valueText: string
|
|
@ -0,0 +1,61 @@
|
|||
import React from 'react'
|
||||
import { Button, ButtonVariation, Container, Formik, FormikForm, Layout, Page } from '@harnessio/uicore'
|
||||
import { useHistory } from 'react-router-dom'
|
||||
import { useStrings } from 'framework/strings'
|
||||
import { routes } from 'cde-gitness/RouteDefinitions'
|
||||
import { useAppContext } from 'AppContext'
|
||||
import BasicDetails from './BasicDetails'
|
||||
import GatewayDetails from './GatewayDetails'
|
||||
import ConfigureLocations from './ConfigureLocations'
|
||||
import css from './InfraDetails.module.scss'
|
||||
|
||||
interface InfraDetailProps {
|
||||
onTabChange: (key: string) => void
|
||||
tabOptions: { [key: string]: string }
|
||||
}
|
||||
|
||||
const InfraDetails = ({ onTabChange, tabOptions }: InfraDetailProps) => {
|
||||
const { getString } = useStrings()
|
||||
const { accountInfo } = useAppContext()
|
||||
const history = useHistory()
|
||||
return (
|
||||
<Page.Body className={css.main}>
|
||||
<Container className={css.basicDetailsContainer}>
|
||||
<Formik
|
||||
formName="edit-layout-name"
|
||||
onSubmit={() => {
|
||||
// handleSubmit(values)
|
||||
}}
|
||||
initialValues={{}}
|
||||
enableReinitialize>
|
||||
{() => {
|
||||
return (
|
||||
<FormikForm>
|
||||
<Layout.Vertical spacing="medium">
|
||||
<BasicDetails />
|
||||
<GatewayDetails />
|
||||
<ConfigureLocations />
|
||||
<Layout.Horizontal className={css.formFooter}>
|
||||
<Button
|
||||
text={getString('cde.configureInfra.cancel')}
|
||||
variation={ButtonVariation.TERTIARY}
|
||||
onClick={() => history.push(routes.toCDEGitspaceInfra({ accountId: accountInfo?.identifier }))}
|
||||
/>
|
||||
<Button
|
||||
text={getString('cde.configureInfra.downloadAndApply')}
|
||||
rightIcon="chevron-right"
|
||||
variation={ButtonVariation.PRIMARY}
|
||||
onClick={() => onTabChange(tabOptions.tab2)}
|
||||
/>
|
||||
</Layout.Horizontal>
|
||||
</Layout.Vertical>
|
||||
</FormikForm>
|
||||
)
|
||||
}}
|
||||
</Formik>
|
||||
</Container>
|
||||
</Page.Body>
|
||||
)
|
||||
}
|
||||
|
||||
export default InfraDetails
|
|
@ -33,6 +33,8 @@ cpu: CPU
|
|||
memory: Memory
|
||||
disk: Disk
|
||||
created: Created
|
||||
edit: Edit
|
||||
account: Account
|
||||
regionSelectWarning: Select a region first
|
||||
gitspaceUpdateSuccess: Gitspace updated successfully
|
||||
regionValidationMessage: Region is required
|
||||
|
@ -55,6 +57,39 @@ createImport: creating or importing repositories
|
|||
regionAndMachineSize: Region & Machine Size
|
||||
copied: Copied
|
||||
id: ID
|
||||
gitspaceInfra: Gitspace Infrastructure
|
||||
configureGCPInfra: Configure GCP Infrastructure
|
||||
configureGitspaceInfra: Configure Gitspace Infrastructure
|
||||
gitspaceInfraHome:
|
||||
configureGCPButton: Configure GCP infrastructure
|
||||
description: Configure an infrastructure with locations and machines to be used as one of the infrastructure while creating a Gitspace
|
||||
gcpSupportText: Currently we support GCP based infrastructure only.
|
||||
learnMore: Learn more about Gitspace Infrastructure
|
||||
configureInfra:
|
||||
configure: Configure
|
||||
learnMoreAboutHybrid: Learn more about hybrid infra
|
||||
provideInfraDetails: Provide Infrastructure Details
|
||||
downloadAndApply: Download and Apply YAML
|
||||
basicDetails: Basic Details
|
||||
learnMore: Learn More
|
||||
cancel: Cancel
|
||||
id: Id
|
||||
name: Name
|
||||
domain: Domain
|
||||
gateway: Gateway
|
||||
numberOfInstance: Number of instances
|
||||
machineType: Machine Type
|
||||
configureLocations: Configure Locations
|
||||
configureLocationNote: Users will only be able to host gitspaces in these locations only.
|
||||
gatewayNoteText: More number of instances better reliability of running the Gitspace. However more number of instances incur more costs
|
||||
basicNoteText: The domain on which all the gitspaces created by this infra will be accessible
|
||||
downloadAndApplySection:
|
||||
title: Download and apply YAML to terraform module
|
||||
back: Back
|
||||
done: Done
|
||||
downloadYaml: Download YAML
|
||||
downloadGeneratedYaml: Download the generated YAML file
|
||||
applyYamlText: Apply the YAML in the terraform module and run following commands
|
||||
sshSelect:
|
||||
30days: 30 Days
|
||||
90days: 90 Days
|
||||
|
|
|
@ -1258,12 +1258,32 @@ export interface StringsMap {
|
|||
yours: string
|
||||
zoomIn: string
|
||||
zoomOut: string
|
||||
'cde.account': string
|
||||
'cde.branchPlaceholder': string
|
||||
'cde.branchValidationMessage': string
|
||||
'cde.changes': string
|
||||
'cde.changesTooltip.description': string
|
||||
'cde.changesTooltip.learnMore': string
|
||||
'cde.cloudDeveloperExperience': string
|
||||
'cde.configureGCPInfra': string
|
||||
'cde.configureGitspaceInfra': string
|
||||
'cde.configureInfra.basicDetails': string
|
||||
'cde.configureInfra.basicNoteText': string
|
||||
'cde.configureInfra.cancel': string
|
||||
'cde.configureInfra.configure': string
|
||||
'cde.configureInfra.configureLocationNote': string
|
||||
'cde.configureInfra.configureLocations': string
|
||||
'cde.configureInfra.domain': string
|
||||
'cde.configureInfra.downloadAndApply': string
|
||||
'cde.configureInfra.gateway': string
|
||||
'cde.configureInfra.gatewayNoteText': string
|
||||
'cde.configureInfra.id': string
|
||||
'cde.configureInfra.learnMore': string
|
||||
'cde.configureInfra.learnMoreAboutHybrid': string
|
||||
'cde.configureInfra.machineType': string
|
||||
'cde.configureInfra.name': string
|
||||
'cde.configureInfra.numberOfInstance': string
|
||||
'cde.configureInfra.provideInfraDetails': string
|
||||
'cde.copied': string
|
||||
'cde.cpu': string
|
||||
'cde.create.branchPlaceholder': string
|
||||
|
@ -1310,6 +1330,13 @@ export interface StringsMap {
|
|||
'cde.details.stopProvising': string
|
||||
'cde.details.wrongIdentifier': string
|
||||
'cde.disk': string
|
||||
'cde.downloadAndApplySection.applyYamlText': string
|
||||
'cde.downloadAndApplySection.back': string
|
||||
'cde.downloadAndApplySection.done': string
|
||||
'cde.downloadAndApplySection.downloadGeneratedYaml': string
|
||||
'cde.downloadAndApplySection.downloadYaml': string
|
||||
'cde.downloadAndApplySection.title': string
|
||||
'cde.edit': string
|
||||
'cde.editGitspace': string
|
||||
'cde.errorCard.contactUs': string
|
||||
'cde.errorCard.learnMore': string
|
||||
|
@ -1320,6 +1347,11 @@ export interface StringsMap {
|
|||
'cde.eventTimeline': string
|
||||
'cde.getStarted': string
|
||||
'cde.gitspaceDetail': string
|
||||
'cde.gitspaceInfra': string
|
||||
'cde.gitspaceInfraHome.configureGCPButton': string
|
||||
'cde.gitspaceInfraHome.description': string
|
||||
'cde.gitspaceInfraHome.gcpSupportText': string
|
||||
'cde.gitspaceInfraHome.learnMore': string
|
||||
'cde.gitspaceOwners.allGitspaces': string
|
||||
'cde.gitspaceOwners.myGitspaces': string
|
||||
'cde.gitspaceStatus.active': string
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
<svg height="206" preserveAspectRatio="xMidYMid" viewBox="0 0 256 206" width="256" xmlns="http://www.w3.org/2000/svg"><path d="m170.2517 56.8186 22.253-22.253 1.483-9.37c-40.551-36.873-105.012-32.692-141.567 8.724-10.154 11.503-17.687 25.844-21.704 40.653l7.97-1.123 44.505-7.339 3.436-3.514c19.797-21.742 53.27-24.667 76.128-6.168z" fill="#ea4335"/><path d="m224.2048 73.9182c-5.115-18.836-15.616-35.769-30.217-48.722l-31.232 31.232c13.188 10.776 20.701 27.01 20.379 44.037v5.544c15.351 0 27.797 12.445 27.797 27.796 0 15.352-12.446 27.485-27.797 27.485h-55.671l-5.466 5.934v33.34l5.466 5.231h55.671c39.93.311 72.552-31.494 72.863-71.424.188-24.203-11.745-46.893-31.793-60.453" fill="#4285f4"/><path d="m71.8704 205.7957h55.593v-44.506h-55.593c-3.961-.001-7.797-.852-11.399-2.498l-7.887 2.42-22.409 22.253-1.952 7.574c12.567 9.489 27.9 14.825 43.647 14.757" fill="#34a853"/><path d="m71.8704 61.4255c-39.931.238-72.107 32.802-71.869 72.732.133 22.298 10.547 43.288 28.222 56.881l32.248-32.247c-13.991-6.321-20.208-22.786-13.887-36.776 6.32-13.99 22.786-20.207 36.775-13.887 6.165 2.785 11.102 7.723 13.887 13.887l32.248-32.247c-13.721-17.937-35.041-28.424-57.624-28.343" fill="#fbbc05"/></svg>
|
After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,170 @@
|
|||
<svg width="324" height="324" viewBox="0 0 324 324" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g filter="url(#filter0_f_1531_56747)">
|
||||
<circle cx="162" cy="162" r="90.8533" fill="#CEE7FE"/>
|
||||
</g>
|
||||
<circle cx="162" cy="162" r="101.183" fill="#F5FAFF" stroke="white" stroke-width="5.63431"/>
|
||||
<mask id="mask0_1531_56747" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="64" y="64" width="196" height="196">
|
||||
<circle cx="162" cy="162" r="97.8962" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1531_56747)">
|
||||
<foreignObject x="168.053" y="180.221" width="65.3013" height="62.4444"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(1.7px);clip-path:url(#bgblur_0_1531_56747_clip_path);height:100%;width:100%"></div></foreignObject><g filter="url(#filter1_i_1531_56747)" data-figma-bg-blur-radius="3.40041">
|
||||
<rect width="67.5548" height="21.86" transform="matrix(0.865973 -0.500091 2.20252e-08 1 171.454 217.405)" fill="#268EEC"/>
|
||||
</g>
|
||||
<foreignObject x="162.037" y="174.262" width="81.2081" height="70.6911"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(11.33px);clip-path:url(#bgblur_1_1531_56747_clip_path);height:100%;width:100%"></div></foreignObject><g filter="url(#filter2_ii_1531_56747)" data-figma-bg-blur-radius="22.6546">
|
||||
<rect width="41.4549" height="4.65063" transform="matrix(0.865973 -0.500091 2.20252e-08 1 184.691 217.647)" fill="#3FD9D9"/>
|
||||
</g>
|
||||
<foreignObject x="65.6845" y="147.553" width="126.531" height="112.338"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(10.38px);clip-path:url(#bgblur_2_1531_56747_clip_path);height:100%;width:100%"></div></foreignObject><g filter="url(#filter3_i_1531_56747)" data-figma-bg-blur-radius="20.7613">
|
||||
<rect width="98.1654" height="21.7243" transform="matrix(0.865973 0.500091 -2.20252e-08 1 86.4458 168.314)" fill="#2574DD"/>
|
||||
</g>
|
||||
<foreignObject x="60.3929" y="108.482" width="195.606" height="134.976"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(13.03px);clip-path:url(#bgblur_3_1531_56747_clip_path);height:100%;width:100%"></div></foreignObject><g filter="url(#filter4_i_1531_56747)" data-figma-bg-blur-radius="26.0529">
|
||||
<rect width="98.1654" height="67.5439" transform="matrix(0.865973 0.500091 0.865973 -0.500091 86.4458 168.313)" fill="url(#paint0_radial_1531_56747)" fill-opacity="0.6"/>
|
||||
</g>
|
||||
<foreignObject x="69.3989" y="159.596" width="48.6449" height="49.562"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(11.33px);clip-path:url(#bgblur_4_1531_56747_clip_path);height:100%;width:100%"></div></foreignObject><g filter="url(#filter5_ii_1531_56747)" data-figma-bg-blur-radius="22.6546">
|
||||
<rect width="3.85162" height="3.76363" rx="1.88181" transform="matrix(0.866025 0.5 -2.20305e-08 1 92.0535 181.532)" fill="#3FD9D9"/>
|
||||
</g>
|
||||
<foreignObject x="78.6669" y="165.157" width="48.6449" height="49.562"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(11.33px);clip-path:url(#bgblur_5_1531_56747_clip_path);height:100%;width:100%"></div></foreignObject><g filter="url(#filter6_ii_1531_56747)" data-figma-bg-blur-radius="22.6546">
|
||||
<rect width="3.85162" height="3.76363" rx="1.88181" transform="matrix(0.866025 0.5 -2.20305e-08 1 101.322 187.093)" fill="#3FD9D9"/>
|
||||
</g>
|
||||
<foreignObject x="87.935" y="170.718" width="48.6449" height="49.562"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(11.33px);clip-path:url(#bgblur_6_1531_56747_clip_path);height:100%;width:100%"></div></foreignObject><g filter="url(#filter7_ii_1531_56747)" data-figma-bg-blur-radius="22.6546">
|
||||
<rect width="3.85162" height="3.76363" rx="1.88181" transform="matrix(0.866025 0.5 -2.20305e-08 1 110.59 192.655)" fill="#3FD9D9"/>
|
||||
</g>
|
||||
<path d="M115.769 140.326C115.769 145.924 116.872 151.467 119.014 156.639C121.156 161.811 124.296 166.51 128.255 170.469C132.213 174.427 136.912 177.567 142.084 179.709C147.256 181.852 152.8 182.954 158.398 182.954C163.996 182.954 169.539 181.852 174.711 179.709C179.883 177.567 184.582 174.427 188.541 170.469C192.499 166.51 195.639 161.811 197.781 156.639C199.924 151.467 201.026 145.924 201.026 140.326C201.026 134.727 199.924 129.184 197.781 124.012C195.639 118.84 192.499 114.141 188.541 110.183C184.582 106.224 179.883 103.084 174.711 100.942C169.539 98.7995 163.996 97.6969 158.398 97.6969C152.8 97.6969 147.256 98.7995 142.084 100.942C136.912 103.084 132.213 106.224 128.255 110.183C124.296 114.141 121.156 118.84 119.014 124.012C116.872 129.184 115.769 134.727 115.769 140.326Z" fill="#E5ECFF"/>
|
||||
<path d="M115.769 140.325C115.769 145.923 116.872 151.466 119.014 156.638C121.156 161.81 124.296 166.51 128.255 170.468C132.213 174.427 136.912 177.567 142.084 179.709C147.256 181.851 152.8 182.954 158.398 182.954C163.996 182.954 169.539 181.851 174.711 179.709C179.883 177.567 184.582 174.427 188.541 170.468C192.499 166.51 195.639 161.81 197.781 156.638C199.924 151.466 201.026 145.923 201.026 140.325C201.026 134.727 199.924 129.184 197.781 124.012C195.639 118.84 192.499 114.14 188.541 110.182C184.582 106.224 179.883 103.084 174.711 100.941C169.539 98.799 163.996 97.6964 158.398 97.6964C152.8 97.6964 147.256 98.799 142.084 100.941C136.912 103.084 132.213 106.224 128.255 110.182C124.296 114.14 121.156 118.84 119.014 124.012C116.872 129.184 115.769 134.727 115.769 140.325Z" fill="url(#paint1_radial_1531_56747)"/>
|
||||
<path d="M148.258 168.749C136.073 162.662 118.818 163.679 129.987 140.326C133.881 132.17 126.533 128.153 117.949 126.879C116.541 131.104 115.769 135.623 115.769 140.326C115.769 162.993 133.465 181.509 155.789 182.868C156.193 178.264 155.165 172.202 148.258 168.749ZM174.648 137.289C174.648 137.289 179.718 143.375 171.599 145.408C163.48 147.441 158.41 151.494 160.431 159.613C162.451 167.732 160.431 167.732 171.599 166.716C182.767 165.699 185.804 155.547 185.804 153.527C185.804 151.494 188.854 140.338 182.755 137.289C176.669 134.239 175.652 132.206 174.648 137.289Z" fill="#CEE7FE"/>
|
||||
<path d="M214.705 131.545C213.934 125.998 207.431 122.018 195.908 120.022H195.883C196.679 121.491 197.389 123.01 198.014 124.577C205.57 126.255 210.248 128.998 210.689 132.108C211.178 135.586 206.451 140.081 198.038 144.134C188.707 148.641 175.91 152.192 162.01 154.139C148.111 156.086 134.836 156.184 124.623 154.421C115.426 152.829 109.634 149.804 109.156 146.338C108.801 143.779 111.275 140.668 115.977 137.582C115.953 137.546 115.916 137.521 115.892 137.497C116.002 135.795 116.222 134.129 116.528 132.5C108.385 137.08 104.454 142.028 105.14 146.914C105.911 152.461 112.414 156.441 123.937 158.438C129.007 159.307 134.775 159.748 140.972 159.748C147.768 159.748 155.091 159.221 162.574 158.18C176.877 156.172 190.091 152.498 199.802 147.808C210.321 142.714 215.477 137.093 214.705 131.545Z" fill="#F9DA10"/>
|
||||
<path d="M160.455 97.7459C159.782 97.7214 159.096 97.6969 158.41 97.6969C143.053 97.6969 129.607 105.816 122.1 117.989C128.64 117.915 134.089 114.854 135.632 110.727C136.771 110.837 137.935 110.898 139.122 110.898C146.384 110.898 152.826 108.767 156.891 105.473C158.006 106.318 159.635 106.845 161.447 106.845C161.521 106.845 161.582 106.845 161.643 106.832C162.304 110.016 165.268 118.87 177.636 118.564C177.636 118.564 185.168 118.381 188.67 133.627C188.67 133.627 196.52 136.762 198.7 126.426C193.152 110.323 178.236 98.5909 160.455 97.7459Z" fill="#96C7F2"/>
|
||||
<path d="M150.93 121.552C150.93 122.061 151.045 122.564 151.267 123.033C151.49 123.503 151.816 123.929 152.228 124.289C152.639 124.648 153.128 124.933 153.665 125.128C154.203 125.322 154.779 125.422 155.361 125.422C155.942 125.422 156.519 125.322 157.056 125.128C157.594 124.933 158.082 124.648 158.493 124.289C158.905 123.929 159.231 123.503 159.454 123.033C159.676 122.564 159.791 122.061 159.791 121.552C159.791 121.044 159.676 120.541 159.454 120.071C159.231 119.602 158.905 119.175 158.493 118.816C158.082 118.456 157.594 118.171 157.056 117.977C156.519 117.782 155.942 117.682 155.361 117.682C154.779 117.682 154.203 117.782 153.665 117.977C153.128 118.171 152.639 118.456 152.228 118.816C151.816 119.175 151.49 119.602 151.267 120.071C151.045 120.541 150.93 121.044 150.93 121.552Z" fill="#E1F0FF"/>
|
||||
<g filter="url(#filter8_f_1531_56747)">
|
||||
<path d="M172.579 124.712C172.848 124.908 173.138 125.071 173.431 125.19C173.725 125.309 174.016 125.384 174.29 125.408C174.563 125.433 174.812 125.408 175.024 125.334C175.235 125.26 175.405 125.139 175.522 124.978C175.639 124.817 175.703 124.618 175.708 124.394C175.714 124.17 175.661 123.925 175.554 123.673C175.447 123.42 175.287 123.165 175.083 122.922C174.88 122.679 174.637 122.454 174.367 122.258C174.098 122.062 173.809 121.899 173.515 121.78C173.222 121.66 172.93 121.586 172.657 121.561C172.384 121.537 172.134 121.562 171.923 121.636C171.711 121.71 171.542 121.831 171.424 121.992C171.307 122.153 171.244 122.351 171.238 122.575C171.233 122.799 171.285 123.044 171.392 123.297C171.499 123.55 171.659 123.805 171.863 124.047C172.067 124.29 172.31 124.516 172.579 124.712Z" fill="#E1F0FF"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<filter id="filter0_f_1531_56747" x="0.717583" y="0.717827" width="322.564" height="322.564" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feGaussianBlur stdDeviation="35.2145" result="effect1_foregroundBlur_1531_56747"/>
|
||||
</filter>
|
||||
<filter id="filter1_i_1531_56747" x="168.053" y="180.221" width="65.3013" height="62.4444" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feMorphology radius="0.356861" operator="erode" in="SourceAlpha" result="effect1_innerShadow_1531_56747"/>
|
||||
<feOffset dx="0.340041" dy="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="1.70021"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1531_56747"/>
|
||||
</filter>
|
||||
<clipPath id="bgblur_0_1531_56747_clip_path" transform="translate(-168.053 -180.221)"><rect width="67.5548" height="21.86" transform="matrix(0.865973 -0.500091 2.20252e-08 1 171.454 217.405)"/>
|
||||
</clipPath><filter id="filter2_ii_1531_56747" x="162.037" y="174.262" width="81.2081" height="70.6911" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dx="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="0.17843"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.1 0"/>
|
||||
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1531_56747"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feMorphology radius="0.356861" operator="erode" in="SourceAlpha" result="effect2_innerShadow_1531_56747"/>
|
||||
<feOffset dx="0.340041" dy="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="1.70021"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="effect1_innerShadow_1531_56747" result="effect2_innerShadow_1531_56747"/>
|
||||
</filter>
|
||||
<clipPath id="bgblur_1_1531_56747_clip_path" transform="translate(-162.037 -174.262)"><rect width="41.4549" height="4.65063" transform="matrix(0.865973 -0.500091 2.20252e-08 1 184.691 217.647)"/>
|
||||
</clipPath><filter id="filter3_i_1531_56747" x="65.6845" y="147.553" width="126.531" height="112.338" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feMorphology radius="0.233597" operator="erode" in="SourceAlpha" result="effect1_innerShadow_1531_56747"/>
|
||||
<feOffset dx="0.222588" dy="0.233597"/>
|
||||
<feGaussianBlur stdDeviation="1.11294"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1531_56747"/>
|
||||
</filter>
|
||||
<clipPath id="bgblur_2_1531_56747_clip_path" transform="translate(-65.6845 -147.553)"><rect width="98.1654" height="21.7243" transform="matrix(0.865973 0.500091 -2.20252e-08 1 86.4458 168.314)"/>
|
||||
</clipPath><filter id="filter4_i_1531_56747" x="60.3929" y="108.482" width="195.606" height="134.976" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feMorphology radius="0.356862" operator="erode" in="SourceAlpha" result="effect1_innerShadow_1531_56747"/>
|
||||
<feOffset dx="0.340043" dy="0.356862"/>
|
||||
<feGaussianBlur stdDeviation="1.70021"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1531_56747"/>
|
||||
</filter>
|
||||
<clipPath id="bgblur_3_1531_56747_clip_path" transform="translate(-60.3929 -108.482)"><rect width="98.1654" height="67.5439" transform="matrix(0.865973 0.500091 0.865973 -0.500091 86.4458 168.313)"/>
|
||||
</clipPath><filter id="filter5_ii_1531_56747" x="69.3989" y="159.596" width="48.6449" height="49.562" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dx="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="0.17843"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.1 0"/>
|
||||
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1531_56747"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feMorphology radius="0.356861" operator="erode" in="SourceAlpha" result="effect2_innerShadow_1531_56747"/>
|
||||
<feOffset dx="0.340041" dy="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="1.70021"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="effect1_innerShadow_1531_56747" result="effect2_innerShadow_1531_56747"/>
|
||||
</filter>
|
||||
<clipPath id="bgblur_4_1531_56747_clip_path" transform="translate(-69.3989 -159.596)"><rect width="3.85162" height="3.76363" rx="1.88181" transform="matrix(0.866025 0.5 -2.20305e-08 1 92.0535 181.532)"/>
|
||||
</clipPath><filter id="filter6_ii_1531_56747" x="78.6669" y="165.157" width="48.6449" height="49.562" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dx="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="0.17843"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.1 0"/>
|
||||
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1531_56747"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feMorphology radius="0.356861" operator="erode" in="SourceAlpha" result="effect2_innerShadow_1531_56747"/>
|
||||
<feOffset dx="0.340041" dy="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="1.70021"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="effect1_innerShadow_1531_56747" result="effect2_innerShadow_1531_56747"/>
|
||||
</filter>
|
||||
<clipPath id="bgblur_5_1531_56747_clip_path" transform="translate(-78.6669 -165.157)"><rect width="3.85162" height="3.76363" rx="1.88181" transform="matrix(0.866025 0.5 -2.20305e-08 1 101.322 187.093)"/>
|
||||
</clipPath><filter id="filter7_ii_1531_56747" x="87.935" y="170.718" width="48.6449" height="49.562" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dx="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="0.17843"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.1 0"/>
|
||||
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1531_56747"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feMorphology radius="0.356861" operator="erode" in="SourceAlpha" result="effect2_innerShadow_1531_56747"/>
|
||||
<feOffset dx="0.340041" dy="0.356861"/>
|
||||
<feGaussianBlur stdDeviation="1.70021"/>
|
||||
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.9875 0 0 0 0 0.9875 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="effect1_innerShadow_1531_56747" result="effect2_innerShadow_1531_56747"/>
|
||||
</filter>
|
||||
<clipPath id="bgblur_6_1531_56747_clip_path" transform="translate(-87.935 -170.718)"><rect width="3.85162" height="3.76363" rx="1.88181" transform="matrix(0.866025 0.5 -2.20305e-08 1 110.59 192.655)"/>
|
||||
</clipPath><filter id="filter8_f_1531_56747" x="160.333" y="110.648" width="26.2796" height="25.6738" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feGaussianBlur stdDeviation="5.45217" result="effect1_foregroundBlur_1531_56747"/>
|
||||
</filter>
|
||||
<radialGradient id="paint0_radial_1531_56747" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(81.9261 6.03841) rotate(106.757) scale(105.269 163.206)">
|
||||
<stop stop-color="#2574DD"/>
|
||||
<stop offset="0.546894" stop-color="#0C8EE8" stop-opacity="0.699888"/>
|
||||
<stop offset="1" stop-color="#1DEFC9" stop-opacity="0.04"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint1_radial_1531_56747" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(158.398 140.325) rotate(69.095) scale(45.6319 52.4826)">
|
||||
<stop stop-color="#2574DD"/>
|
||||
<stop offset="1" stop-color="#0880EA"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 19 KiB |
|
@ -0,0 +1,4 @@
|
|||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="10" cy="10" r="10" fill="#D9DAE5"/>
|
||||
<path d="M10.9425 5.27273V14H9.36151V6.81108H9.31037L7.26918 8.11506V6.66619L9.43821 5.27273H10.9425Z" fill="#6B6D85"/>
|
||||
</svg>
|
After Width: | Height: | Size: 271 B |
|
@ -0,0 +1,4 @@
|
|||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="10" cy="10" r="10" fill="#D9DAE5"/>
|
||||
<path d="M6.54901 14V12.858L9.57884 9.88778C9.86861 9.59517 10.1101 9.33523 10.3033 9.10795C10.4964 8.88068 10.6413 8.66051 10.7379 8.44744C10.8345 8.23437 10.8828 8.0071 10.8828 7.76562C10.8828 7.49006 10.8203 7.25426 10.6953 7.05824C10.5703 6.85938 10.3984 6.70597 10.1797 6.59801C9.96094 6.49006 9.71236 6.43608 9.43395 6.43608C9.14702 6.43608 8.8956 6.49574 8.67969 6.61506C8.46378 6.73153 8.29616 6.89773 8.17685 7.11364C8.06037 7.32955 8.00213 7.58665 8.00213 7.88494H6.49787C6.49787 7.33097 6.62429 6.84943 6.87713 6.44034C7.12997 6.03125 7.47798 5.71449 7.92116 5.49006C8.36719 5.26562 8.87855 5.15341 9.45526 5.15341C10.0405 5.15341 10.5547 5.26278 10.9979 5.48153C11.4411 5.70028 11.7848 6 12.0291 6.38068C12.2763 6.76136 12.3999 7.19602 12.3999 7.68466C12.3999 8.01136 12.3374 8.33239 12.2124 8.64773C12.0874 8.96307 11.8672 9.3125 11.5518 9.69602C11.2393 10.0795 10.8004 10.544 10.2351 11.0895L8.73082 12.6193V12.679H12.532V14H6.54901Z" fill="#6B6D85"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -32,6 +32,7 @@ export interface TestWrapperProps {
|
|||
defaultSettingsURL?: string
|
||||
isPublicAccessEnabledOnResources?: boolean
|
||||
isCurrentSessionPublic?: boolean
|
||||
accountInfo?: Unknown
|
||||
}
|
||||
|
||||
export default function TestWrapper(props: PropsWithChildren<TestWrapperProps>) {
|
||||
|
@ -49,7 +50,8 @@ export default function TestWrapper(props: PropsWithChildren<TestWrapperProps>)
|
|||
currentUserProfileURL = '',
|
||||
defaultSettingsURL = '',
|
||||
isPublicAccessEnabledOnResources = false,
|
||||
isCurrentSessionPublic = false
|
||||
isCurrentSessionPublic = false,
|
||||
accountInfo = null
|
||||
} = props
|
||||
const search = QueryString.stringify(queryParams, { addQueryPrefix: true })
|
||||
const routePath = compile(path)(pathParams) + search
|
||||
|
@ -73,7 +75,8 @@ export default function TestWrapper(props: PropsWithChildren<TestWrapperProps>)
|
|||
currentUserProfileURL,
|
||||
defaultSettingsURL,
|
||||
isPublicAccessEnabledOnResources,
|
||||
isCurrentSessionPublic
|
||||
isCurrentSessionPublic,
|
||||
accountInfo
|
||||
}}>
|
||||
<StringsContextProvider initialStrings={stringsData} getString={getString}>
|
||||
<RestfulProvider base="/">
|
||||
|
|
Loading…
Reference in New Issue