From dec4b7d1ef82675320a24ae78f0ca0210f9a8ed6 Mon Sep 17 00:00:00 2001 From: Simon Chaumet Date: Thu, 19 Dec 2024 12:05:23 +0100 Subject: [PATCH] feat(pci-common): add 3AZ region and 1AZ chip ref: TAPC-2357 Signed-off-by: Simon Chaumet --- .../src/api/data/regions.ts | 2 +- .../Region3AZChip.component.spec.tsx | 35 ++++++ .../Region3AZChip.component.tsx | 78 +++++++++++++ .../RegionGlobalzoneChip.component.spec.tsx | 92 ++++++++++++++-- .../RegionGlobalzoneChip.component.tsx | 104 +++++++++++------- .../RegionLocalzoneChip.component.spec.tsx | 34 +++++- .../RegionLocalzoneChip.component.tsx | 80 +++++++------- .../region-selector/RegionTile.spec.tsx | 79 +++++++++++++ .../components/region-selector/RegionTile.tsx | 20 +++- .../components/region-selector/constants.ts | 26 +++++ .../src/components/region-selector/style.scss | 36 ++++++ .../modules/manager-pci-common/src/index.ts | 5 +- .../region-selector/Messages_fr_FR.json | 5 + 13 files changed, 498 insertions(+), 98 deletions(-) create mode 100644 packages/manager/modules/manager-pci-common/src/components/region-selector/Region3AZChip.component.spec.tsx create mode 100644 packages/manager/modules/manager-pci-common/src/components/region-selector/Region3AZChip.component.tsx create mode 100644 packages/manager/modules/manager-pci-common/src/components/region-selector/RegionTile.spec.tsx diff --git a/packages/manager/modules/manager-pci-common/src/api/data/regions.ts b/packages/manager/modules/manager-pci-common/src/api/data/regions.ts index cb9f3fa65fcb..4f74dc765953 100644 --- a/packages/manager/modules/manager-pci-common/src/api/data/regions.ts +++ b/packages/manager/modules/manager-pci-common/src/api/data/regions.ts @@ -2,7 +2,7 @@ import { fetchIcebergV6 } from '@ovh-ux/manager-core-api'; export type TRegion = { name: string; - type: string; + type: 'region' | 'localzone' | 'region-3-az' | string; status: string; continentCode: string; services: { diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/Region3AZChip.component.spec.tsx b/packages/manager/modules/manager-pci-common/src/components/region-selector/Region3AZChip.component.spec.tsx new file mode 100644 index 000000000000..9e84bcd0e507 --- /dev/null +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/Region3AZChip.component.spec.tsx @@ -0,0 +1,35 @@ +import { render, screen } from '@testing-library/react'; +import { describe, it } from 'vitest'; +import { wrapper } from '@/wrapperRenders'; +import { Region3AZChip } from '@/components/region-selector/Region3AZChip.component'; +import { URL_INFO } from '@/components/region-selector/constants'; + +describe('Region3AZChip', () => { + it.each([undefined, false, true])( + 'should render chip with showTooltip %s with correct texts and links', + (showTooltip: boolean | undefined) => { + render(, { wrapper }); + + expect( + screen.getByText('pci_project_flavors_zone_3AZ'), + ).toBeInTheDocument(); + + if (showTooltip ?? true) { + expect( + screen.getByText('pci_project_flavors_zone_3AZ_tooltip'), + ).toBeInTheDocument(); + + const link = screen.getByText('pci_project_flavors_zone_tooltip_link'); + expect(link).toBeInTheDocument(); + expect(link).toHaveAttribute('href', URL_INFO.REGION_3AZ.DEFAULT); + } else { + expect( + screen.queryByText('pci_project_flavors_zone_3AZ_tooltip'), + ).not.toBeInTheDocument(); + expect( + screen.queryByText('pci_project_flavors_zone_tooltip_link'), + ).not.toBeInTheDocument(); + } + }, + ); +}); diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/Region3AZChip.component.tsx b/packages/manager/modules/manager-pci-common/src/components/region-selector/Region3AZChip.component.tsx new file mode 100644 index 000000000000..ad3ec799739f --- /dev/null +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/Region3AZChip.component.tsx @@ -0,0 +1,78 @@ +import { useContext } from 'react'; +import { Links, LinkType } from '@ovh-ux/manager-react-components'; +import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming'; +import { ShellContext } from '@ovh-ux/manager-react-shell-client'; +import { + ODS_CHIP_SIZE, + ODS_ICON_NAME, + ODS_ICON_SIZE, + ODS_TEXT_LEVEL, + ODS_TEXT_SIZE, +} from '@ovhcloud/ods-components'; +import { + OsdsChip, + OsdsIcon, + OsdsPopover, + OsdsPopoverContent, + OsdsText, +} from '@ovhcloud/ods-components/react'; +import { OdsHTMLAnchorElementTarget } from '@ovhcloud/ods-common-core'; +import { useTranslation } from 'react-i18next'; +import { URL_INFO } from './constants'; + +export function Region3AZChip({ + showTooltip = true, +}: Readonly<{ + showTooltip?: boolean; +}>) { + const { t } = useTranslation('pci-region-selector'); + const context = useContext(ShellContext); + const { ovhSubsidiary } = context.environment.getUser(); + const documentURL = + URL_INFO.REGION_3AZ[ovhSubsidiary] || URL_INFO.REGION_3AZ.DEFAULT; + + const chip = ( + event.stopPropagation()} + > + + {t('pci_project_flavors_zone_3AZ')} + + {showTooltip && ( + + )} + + ); + + if (showTooltip) { + return ( + + {chip} + + + {t('pci_project_flavors_zone_3AZ_tooltip')} + +   + + + + ); + } + + return chip; +} diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionGlobalzoneChip.component.spec.tsx b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionGlobalzoneChip.component.spec.tsx index 7891fcddade3..10c5b447d2e5 100644 --- a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionGlobalzoneChip.component.spec.tsx +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionGlobalzoneChip.component.spec.tsx @@ -1,12 +1,90 @@ import { render, screen } from '@testing-library/react'; -import { RegionGlobalzoneChip } from './RegionGlobalzoneChip.component'; +import { vi } from 'vitest'; +import { + useFeatureAvailability, + UseFeatureAvailabilityResult, +} from '@ovh-ux/manager-react-components'; +import { + FEATURE_REGION_1AZ, + RegionGlobalzoneChip, +} from './RegionGlobalzoneChip.component'; import { wrapper } from '@/wrapperRenders'; +import { URL_INFO } from '@/components/region-selector/constants'; + +vi.mock('@ovh-ux/manager-react-components', async (importOriginal) => { + const module = await importOriginal< + typeof import('@ovh-ux/manager-react-components') + >(); + return { ...module, useFeatureAvailability: vi.fn() }; +}); + +enum ExpectedType { + GLOBAL_REGIONS = 'GLOBAL_REGIONS', + '1AZ_REGIONS' = '1AZ_REGIONS', +} + +const EXPECTED_VALUES = { + [ExpectedType.GLOBAL_REGIONS]: { + label: 'pci_project_flavors_zone_global_region', + tooltip: 'pci_project_flavors_zone_globalregions_tooltip', + link: URL_INFO.GLOBAL_REGIONS.DEFAULT, + }, + [ExpectedType['1AZ_REGIONS']]: { + label: 'pci_project_flavors_zone_1AZ', + tooltip: 'pci_project_flavors_zone_1AZ_tooltip', + link: URL_INFO['1AZ_REGIONS'].DEFAULT, + }, +}; describe('RegionGlobalzoneChip', () => { - it('renders chip with correct text', () => { - render(, { wrapper }); - expect( - screen.getByText('pci_project_flavors_zone_global_region'), - ).toBeInTheDocument(); - }); + it.each([ + [undefined, undefined, ExpectedType.GLOBAL_REGIONS], + [undefined, false, ExpectedType.GLOBAL_REGIONS], + [undefined, true, ExpectedType['1AZ_REGIONS']], + [false, undefined, ExpectedType.GLOBAL_REGIONS], + [false, false, ExpectedType.GLOBAL_REGIONS], + [false, true, ExpectedType['1AZ_REGIONS']], + [true, undefined, ExpectedType.GLOBAL_REGIONS], + [true, false, ExpectedType.GLOBAL_REGIONS], + [true, true, ExpectedType['1AZ_REGIONS']], + ])( + 'should render chip with showTooltip %s show1AZ %s with correct texts and links', + ( + showTooltip: boolean | undefined, + show1AZ: boolean | undefined, + expectedType, + ) => { + const expected = EXPECTED_VALUES[expectedType]; + + vi.mocked(useFeatureAvailability).mockImplementationOnce( + (features) => + ({ + data: { + ...Object.fromEntries( + features.map((feature) => [feature, false]), + ), + [FEATURE_REGION_1AZ]: show1AZ, + }, + isLoading: false, + } as UseFeatureAvailabilityResult), + ); + + render(, { wrapper }); + + expect(screen.getByText(expected.label)).toBeInTheDocument(); + + if (showTooltip ?? true) { + expect(screen.getByText(expected.tooltip)).toBeInTheDocument(); + + const link = screen.getByText('pci_project_flavors_zone_tooltip_link'); + expect(link).toBeInTheDocument(); + expect(link).toHaveAttribute('href', expected.link); + } else { + expect(screen.queryByText(expected.tooltip)).not.toBeInTheDocument(); + expect( + screen.queryByText('pci_project_flavors_zone_tooltip_link'), + ).not.toBeInTheDocument(); + } + }, + ); }); diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionGlobalzoneChip.component.tsx b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionGlobalzoneChip.component.tsx index 2c3816540d91..24405c881544 100644 --- a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionGlobalzoneChip.component.tsx +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionGlobalzoneChip.component.tsx @@ -1,5 +1,9 @@ import React, { useContext } from 'react'; -import { Links, LinkType } from '@ovh-ux/manager-react-components'; +import { + Links, + LinkType, + useFeatureAvailability, +} from '@ovh-ux/manager-react-components'; import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming'; import { ShellContext } from '@ovh-ux/manager-react-shell-client'; import { @@ -20,53 +24,73 @@ import { OdsHTMLAnchorElementTarget } from '@ovhcloud/ods-common-core'; import { useTranslation } from 'react-i18next'; import { URL_INFO } from './constants'; -export function RegionGlobalzoneChip() { +export const FEATURE_REGION_1AZ = 'public-cloud:region-1AZ'; + +export function RegionGlobalzoneChip({ + showTooltip = true, +}: Readonly<{ + showTooltip?: boolean; +}>) { const { t } = useTranslation('pci-region-selector'); + const { data } = useFeatureAvailability([FEATURE_REGION_1AZ]); const context = useContext(ShellContext); const { ovhSubsidiary } = context.environment.getUser(); - const getDocumentUrl = (linkType: string) => - URL_INFO[linkType as keyof typeof URL_INFO][ovhSubsidiary] || - URL_INFO[linkType as keyof typeof URL_INFO].DEFAULT; - return ( - - - event.stopPropagation()} + > + + {t( + `pci_project_flavors_zone_${ + data?.['region-1AZ'] ? '1AZ' : 'global_region' + }`, + )} + + {showTooltip && ( + event.stopPropagation()} - > + /> + )} + + ); + + if (showTooltip) { + return ( + + {chip} + - {t('pci_project_flavors_zone_global_region')} + {t( + `pci_project_flavors_zone_${ + data?.['region-1AZ'] ? '1AZ' : 'globalregions' + }_tooltip`, + )} - - - - - - {t('pci_project_flavors_zone_globalregions_tooltip')} - -   - - - - ); + + + ); + } + + return chip; } diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionLocalzoneChip.component.spec.tsx b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionLocalzoneChip.component.spec.tsx index 773318733739..10a00261ad7c 100644 --- a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionLocalzoneChip.component.spec.tsx +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionLocalzoneChip.component.spec.tsx @@ -2,12 +2,34 @@ import { render, screen } from '@testing-library/react'; import { describe, it } from 'vitest'; import { RegionLocalzoneChip } from './RegionLocalzoneChip.component'; import { wrapper } from '@/wrapperRenders'; +import { URL_INFO } from '@/components/region-selector/constants'; describe('RegionLocalzoneChip', () => { - it('renders chip with correct text', () => { - render(, { wrapper }); - expect( - screen.getByText('pci_project_flavors_zone_localzone'), - ).toBeInTheDocument(); - }); + it.each([undefined, false, true])( + 'should render chip with showTooltip %s with correct texts and links', + (showTooltip: boolean | undefined) => { + render(, { wrapper }); + + expect( + screen.getByText('pci_project_flavors_zone_localzone'), + ).toBeInTheDocument(); + + if (showTooltip ?? true) { + expect( + screen.getByText('pci_project_flavors_zone_localzone_tooltip'), + ).toBeInTheDocument(); + + const link = screen.getByText('pci_project_flavors_zone_tooltip_link'); + expect(link).toBeInTheDocument(); + expect(link).toHaveAttribute('href', URL_INFO.LOCAL_ZONE.DEFAULT); + } else { + expect( + screen.queryByText('pci_project_flavors_zone_localzone_tooltip'), + ).not.toBeInTheDocument(); + expect( + screen.queryByText('pci_project_flavors_zone_tooltip_link'), + ).not.toBeInTheDocument(); + } + }, + ); }); diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionLocalzoneChip.component.tsx b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionLocalzoneChip.component.tsx index f3a61fe38a9f..e4d7053a0c78 100644 --- a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionLocalzoneChip.component.tsx +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionLocalzoneChip.component.tsx @@ -20,7 +20,11 @@ import { OdsHTMLAnchorElementTarget } from '@ovhcloud/ods-common-core'; import { useTranslation } from 'react-i18next'; import { URL_INFO } from './constants'; -export function RegionLocalzoneChip() { +export function RegionLocalzoneChip({ + showTooltip = true, +}: Readonly<{ + showTooltip?: boolean; +}>) { const { t } = useTranslation('pci-region-selector'); const context = useContext(ShellContext); const { ovhSubsidiary } = context.environment.getUser(); @@ -28,45 +32,47 @@ export function RegionLocalzoneChip() { URL_INFO[linkType as keyof typeof URL_INFO][ovhSubsidiary] || URL_INFO[linkType as keyof typeof URL_INFO].DEFAULT; - return ( - - - event.stopPropagation()} - > + const chip = ( + event.stopPropagation()} + > + + {t('pci_project_flavors_zone_localzone')} + + {showTooltip && ( + + )} + + ); + + if (showTooltip) + return ( + + {chip} + - {t('pci_project_flavors_zone_localzone')} + {t('pci_project_flavors_zone_localzone_tooltip')} - - - - - - {t('pci_project_flavors_zone_localzone_tooltip')} - -   - - - - ); + + + ); + + return chip; } diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionTile.spec.tsx b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionTile.spec.tsx new file mode 100644 index 000000000000..ca8a169b88b6 --- /dev/null +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionTile.spec.tsx @@ -0,0 +1,79 @@ +import React from 'react'; +import { describe, it, vi } from 'vitest'; +import { render, screen } from '@testing-library/react'; +import { ODS_TEXT_SIZE } from '@ovhcloud/ods-components'; +import { wrapper } from '@/wrapperRenders'; +import { TLocalisation } from '@/components/region-selector/useRegions'; +import { + RegionTile, + RegionTileProps, +} from '@/components/region-selector/RegionTile'; + +vi.mock('./RegionLocalzoneChip.component', () => ({ + RegionLocalzoneChip: () => `chip-localzone`, +})); +vi.mock('./RegionGlobalzoneChip.component', () => ({ + RegionGlobalzoneChip: () => `chip-region`, +})); +vi.mock('./Region3AZChip.component', () => ({ + Region3AZChip: () => `chip-region-3-az`, +})); + +const POSSIBLE_REGIONS: Pick< + RegionTileProps['region'], + 'isMacro' | 'macroLabel' | 'microLabel' | 'type' +>[] = [ + { isMacro: true, macroLabel: 'MacroRegion', microLabel: '', type: 'region' }, + { isMacro: false, macroLabel: '', microLabel: 'MicroRegion', type: 'region' }, + { isMacro: true, macroLabel: 'LocalZone', microLabel: '', type: 'localzone' }, + { + isMacro: true, + macroLabel: '3AZRegion', + microLabel: '', + type: 'region-3-az', + }, +]; + +const POSSIBLE_SELECTED: RegionTileProps['isSelected'][] = [true, false]; + +const POSSIBLE_COMPACT: RegionTileProps['isCompact'][] = [ + true, + false, + undefined, +]; + +describe('RegionTile', () => { + POSSIBLE_REGIONS.forEach((region) => { + POSSIBLE_SELECTED.forEach((isSelected) => { + POSSIBLE_COMPACT.forEach((isCompact) => { + it(`should render region ${region.macroLabel || + region.microLabel} with isSelected ${isSelected}, isCompact ${isCompact}`, () => { + render( + , + { wrapper }, + ); + const label = screen.getByText( + region.isMacro ? region.macroLabel : region.microLabel, + ); + expect(label).toBeInTheDocument(); + expect(label).toHaveAttribute( + 'size', + isSelected ? ODS_TEXT_SIZE._500 : ODS_TEXT_SIZE._400, + ); + screen.debug(); + + const chip = screen.queryByText(`chip-${region.type}`); + if (isCompact) { + expect(chip).not.toBeInTheDocument(); + } else { + expect(chip).toBeInTheDocument(); + } + }); + }); + }); + }); +}); diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionTile.tsx b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionTile.tsx index bd59cfe37f38..ee69be51ee92 100644 --- a/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionTile.tsx +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/RegionTile.tsx @@ -5,6 +5,7 @@ import { OsdsText } from '@ovhcloud/ods-components/react'; import { TLocalisation } from './useRegions'; import { RegionLocalzoneChip } from './RegionLocalzoneChip.component'; import { RegionGlobalzoneChip } from './RegionGlobalzoneChip.component'; +import { Region3AZChip } from './Region3AZChip.component'; export interface RegionTileProps { region: TLocalisation; @@ -12,6 +13,19 @@ export interface RegionTileProps { isCompact?: boolean; } +export const RegionChip = ({ region }: Readonly<{ region: TLocalisation }>) => { + switch (region.type) { + case 'localzone': + return ; + case 'region': + return ; + case 'region-3-az': + return ; + default: + return null; + } +}; + export const RegionTile = ({ region, isSelected, @@ -31,11 +45,7 @@ export const RegionTile = ({ <>
- {region?.isLocalZone ? ( - - ) : ( - - )} +
)} diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/constants.ts b/packages/manager/modules/manager-pci-common/src/components/region-selector/constants.ts index ea2f009f2af7..36417ce67894 100644 --- a/packages/manager/modules/manager-pci-common/src/components/region-selector/constants.ts +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/constants.ts @@ -49,7 +49,33 @@ export const GLOBAL_REGIONS_INFO_URL: Record = { WE: 'https://ovhcloud.com/us-en/public-cloud/compute/', }; +export const EXPANSIONS_REGIONS_AZ = { + DEFAULT: 'https://www.ovhcloud.com/en/about-us/global-infrastructure/', + ASIA: 'https://www.ovhcloud.com/asia/about-us/global-infrastructure/', + AU: 'https://www.ovhcloud.com/en-au/about-us/global-infrastructure/', + CA: 'https://www.ovhcloud.com/en-ca/about-us/global-infrastructure/', + GB: 'https://www.ovhcloud.com/en-gb/about-us/global-infrastructure/', + IE: 'https://www.ovhcloud.com/en-ie/about-us/global-infrastructure/', + IN: 'https://www.ovhcloud.com/en-in/about-us/global-infrastructure/', + SG: 'https://www.ovhcloud.com/en-sg/about-us/global-infrastructure/', + DE: 'https://www.ovhcloud.com/de/about-us/global-infrastructure/', + ES: 'https://www.ovhcloud.com/es-es/about-us/global-infrastructure/', + FR: 'https://www.ovhcloud.com/fr/about-us/global-infrastructure/', + IT: 'https://www.ovhcloud.com/it/about-us/global-infrastructure/', + MA: 'https://www.ovhcloud.com/fr-ma/about-us/global-infrastructure/', + SN: 'https://www.ovhcloud.com/fr-sn/about-us/global-infrastructure/', + TN: 'https://www.ovhcloud.com/fr-tn/about-us/global-infrastructure/', + NL: 'https://www.ovhcloud.com/nl/about-us/global-infrastructure/', + PL: 'https://www.ovhcloud.com/nl/about-us/global-infrastructure/', + PT: 'https://www.ovhcloud.com/pt/about-us/global-infrastructure/', + QC: 'https://www.ovhcloud.com/fr-ca/about-us/global-infrastructure/', + US: 'https://www.ovhcloud.com/en/about-us/global-infrastructure/', + WS: 'https://www.ovhcloud.com/es/about-us/global-infrastructure/', +}; + export const URL_INFO = { GLOBAL_REGIONS: GLOBAL_REGIONS_INFO_URL, LOCAL_ZONE: LOCAL_ZONE_INFO_URL, + REGION_3AZ: EXPANSIONS_REGIONS_AZ, + '1AZ_REGIONS': EXPANSIONS_REGIONS_AZ, }; diff --git a/packages/manager/modules/manager-pci-common/src/components/region-selector/style.scss b/packages/manager/modules/manager-pci-common/src/components/region-selector/style.scss index 65916addb92a..2210729455c6 100644 --- a/packages/manager/modules/manager-pci-common/src/components/region-selector/style.scss +++ b/packages/manager/modules/manager-pci-common/src/components/region-selector/style.scss @@ -3,3 +3,39 @@ .border-ods-primary-200 { border-color: var(--ods-color-primary-200); } + +.chip-3AZ { + background-color: var(--ods-color-primary-700); + + & osds-text { + color: var(--ods-color-primary-000); + } + + & osds-icon { + background-color: var(--ods-color-primary-000); + } +} + +.chip-1AZ { + background-color: var(--ods-color-primary-200); + + & osds-text { + color: var(--ods-color-primary-700); + } + + & osds-icon { + background-color: var(--ods-color-primary-700); + } +} + +.chip-LZ { + background-color: var(--ods-color-primary-100); + + & osds-text { + color: var(--ods-color-primary-700); + } + + & osds-icon { + background-color: var(--ods-color-primary-700); + } +} diff --git a/packages/manager/modules/manager-pci-common/src/index.ts b/packages/manager/modules/manager-pci-common/src/index.ts index eb660b04e2e7..a5bed219b64b 100644 --- a/packages/manager/modules/manager-pci-common/src/index.ts +++ b/packages/manager/modules/manager-pci-common/src/index.ts @@ -2,14 +2,15 @@ export * from './api/data'; export * from './api/hook'; export * from './components/accordion/Accordion.component'; export * from './components/banner'; -export * from './components/region-selector/RegionSelector.component'; -export * from './components/region-selector/RegionSummary.component'; export * from './components/logs'; export * from './components/modal'; export * from './components/flavor-selector'; export * from './components/region-selector/RegionSelector.component'; export * from './components/region-selector/RegionSummary.component'; export * from './components/region-selector/useRegions'; +export * from './components/region-selector/RegionGlobalzoneChip.component'; +export * from './components/region-selector/RegionLocalzoneChip.component'; +export * from './components/region-selector/Region3AZChip.component'; export * from './hooks'; export * from './constants'; export * from './components/quantity-selector'; diff --git a/packages/manager/modules/manager-pci-common/src/translations/region-selector/Messages_fr_FR.json b/packages/manager/modules/manager-pci-common/src/translations/region-selector/Messages_fr_FR.json index 4a6023e0513a..6f8235d82f65 100644 --- a/packages/manager/modules/manager-pci-common/src/translations/region-selector/Messages_fr_FR.json +++ b/packages/manager/modules/manager-pci-common/src/translations/region-selector/Messages_fr_FR.json @@ -7,7 +7,12 @@ "pci_project_flavors_zone_compatible": "Compatible avec", "pci_project_flavors_zone_localzone": "Local Zones", "pci_project_flavors_zone_global_region": "Régions", + "pci_project_flavors_zone_1AZ": "1-AZ", + "pci_project_flavors_zone_3AZ": "3-AZ", "pci_project_flavors_zone_localzone_tooltip": "Les Local Zones sont un nouveau type de localisation, qui prennent en charge une partie de notre portefeuille de produits Public Cloud. Nous allons progressivement augmenter le nombre total de Local Zones dans le monde au cours des prochaines années.", + "pci_project_flavors_zone_localzone_1AZ_tooltip": "Une Local Zone correspond à un mode de déploiement des produits Public Cloud d’OVHcloud dans des datacenters situés au plus près des utilisateurs finaux.", "pci_project_flavors_zone_globalregions_tooltip": "Les Régions sont supportées par un ou plusieurs datacenters gérés par OVHCloud. Chaque région fournit une ou plusieurs Availability Zone avec le portefeuille complet de services OVHCloud.", + "pci_project_flavors_zone_1AZ_tooltip": "Une région 1-AZ (zone de disponibilité) regroupe un ou plusieurs datacenters localisés sur un même site.", + "pci_project_flavors_zone_3AZ_tooltip": "Une région 3-AZ comprend trois zones de disponibilités situées dans une même aire métropolitaine, séparées par quelques kilomètres. Elle répond aux exigences les plus élevées en matière de résilience tout en garantissant une latence extrêmement faible entre les AZ.", "pci_project_flavors_zone_tooltip_link": "En savoir plus" }