Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ export function getPciProjectMenu(
if (
isFeaturesAvailable(
'pci-databases-analytics-operational',
'pci-databases-analytics-streaming',
'pci-databases-analytics-analysis',
'pci-dataplatform',
'data-platform',
'logs-data-platform',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Title": "QPUs",
"createNotebookButton": "Ein Notebook erstellen",
"Description1": "Entdecken Sie das Quantencomputing in aller Freiheit mit unseren gebrauchsfertigen Notebooks in der Cloud.",
"Description2": "Simulieren Sie bis zu 20 Qubit in wenigen Sekunden ohne Installations- oder KonfigurationseinschrΓ€nkungen.",
"Description3": "Greifen Sie auf eine vorkonfigurierte Umgebung zu, die mit den wichtigsten Frameworks kompatibel ist (Pulser, Mimiq, Perceval, Callisto, Qleo, Qiskit, MyQLM …), und arbeiten Sie ganz einfach ΓΌber ein gemeinsam genutztes und abgesichertes Interface mit Ihren Teams zusammen."
"Title": "Quantencomputer (QPU)",
"createNotebookButton": "Notebook erstellen",
"Description1": "Greifen Sie auf die echte Quantenleistung in QaaS von OVHcloud zu.",
"Description2": "FΓΌhren Sie Ihre Algorithmen sicher auf physischen Quantenprozessoren (QPUs) aus, ohne Infrastruktur verwalten zu mΓΌssen.",
"Description3": "Profitieren Sie von einer nahtlosen Integration mit unseren Emulatoren und einer Abrechnung pro Sekunde, um Ihre Kosten besser zu verwalten."
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Title": "QPUs",
"Title": "Quantum Computers (QPU)",
"createNotebookButton": "Create a Notebook",
"Description1": "Dive into quantum computing with complete freedom using our turnkey, cloud-based notebooks.",
"Description2": "Run 20-qubit simulations in secondsβ€”no installation or configuration needed.",
"Description3": "Access a preconfigured environment compatible with the main frameworks (Pulser, Mimiq, Perceval, Callisto, Qleo, Qiskit, MyQLM) and easily collaborate with your teams via a shared, secure interface"
"Description1": "Access the real power of quantum in QaaS from OVHcloud.",
"Description2": "Run your algorithms on physical quantum processors (QPUs) safely, with no infrastructure to manage.",
"Description3": "Enjoy seamless integration with our emulators, and pay-per-second billing to help manage your costs."
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Title": "QPU",
"createNotebookButton": "Crear un notebook",
"Description1": "Explore la informΓ‘tica cuΓ‘ntica con total libertad gracias a nuestros notebooks listos para usar en el cloud",
"Description2": "Simule hasta 20 cΓΊbits en cuestiΓ³n de segundos, sin restricciones de instalaciΓ³n ni configuraciΓ³n.",
"Description3": "Acceda a un entorno preconfigurado, compatible con los principales frameworks (Pulser, Mimiq, Perceval, Callisto, Qleo, Qiskit, MyQLM...) y colabore fΓ‘cilmente con sus equipos a travΓ©s de una interfaz compartida y segura"
"Title": "Ordenadores CuΓ‘nticos (QPU)",
"createNotebookButton": "Crear un Notebook",
"Description1": "Accede al verdadero poder de la computaciΓ³n cuΓ‘ntica en QaaS desde OVHcloud.",
"Description2": "Ejecuta tus algoritmos en procesadores cuΓ‘nticos fΓ­sicos (QPUs), de forma segura y sin infraestructura que gestionar.",
"Description3": "Disfruta de una integraciΓ³n fluida con nuestros emuladores y de una facturaciΓ³n por segundo para gestionar mejor tus costos."
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Title": "QPUs",
"Title": "Ordinateurs Quantiques (QPU)",
"createNotebookButton": "CrΓ©er un Notebook",
"Description1": "Explorez l'informatique quantique en toute libertΓ© grΓ’ce Γ  nos notebooks prΓͺts Γ  l'emploi dans le cloud",
"Description2": "Simulez jusqu'Γ  20 qubits en quelques secondes, sans contrainte d'installation ni de configuration.",
"Description3": "AccΓ©dez Γ  un environnement prΓ©configurΓ©, compatible avec les principaux frameworks (Pulser, Mimiq, Perceval, Callisto, Qleo, Qiskit, MyQLM, …) et collaborez facilement avec vos Γ©quipes via une interface partagΓ©e et sΓ©curisΓ©e"
"Description1": "AccΓ©dez Γ  la puissance rΓ©elle du quantique en QaaS depuis OVHcloud.",
"Description2": "ExΓ©cutez vos algorithmes sur des processeurs quantiques physiques (QPUs), en toute sΓ©curitΓ© et sans infrastructure Γ  gΓ©rer.",
"Description3": "Profitez d'une intΓ©gration transparente avec nos Γ©mulateurs et d'une facturation Γ  la seconde pour mieux gΓ©rer vos coΓ»ts."
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Title": "QPUs",
"Title": "Ordinateurs Quantiques (QPU)",
"createNotebookButton": "CrΓ©er un Notebook",
"Description1": "Explorez l'informatique quantique en toute libertΓ© grΓ’ce Γ  nos notebooks prΓͺts Γ  l'emploi dans le cloud",
"Description2": "Simulez jusqu'Γ  20 qubits en quelques secondes, sans contrainte d'installation ni de configuration.",
"Description3": "AccΓ©dez Γ  un environnement prΓ©configurΓ©, compatible avec les principaux frameworks (Pulser, Mimiq, Perceval, Callisto, Qleo, Qiskit, MyQLM, …) et collaborez facilement avec vos Γ©quipes via une interface partagΓ©e et sΓ©curisΓ©e"
"Description1": "AccΓ©dez Γ  la puissance rΓ©elle du quantique en QaaS depuis OVHcloud.",
"Description2": "ExΓ©cutez vos algorithmes sur des processeurs quantiques physiques (QPUs), en toute sΓ©curitΓ© et sans infrastructure Γ  gΓ©rer.",
"Description3": "Profitez d'une intΓ©gration transparente avec nos Γ©mulateurs et d'une facturation Γ  la seconde pour mieux gΓ©rer vos coΓ»ts."
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Title": "QPU",
"createNotebookButton": "Crea un notebook",
"Description1": "Esplora il calcolo quantistico in totale libertΓ  grazie ai nostri notebook pronti all'uso nel cloud",
"Description2": "Simula fino a 20 qubit in pochi secondi, senza limiti di installazione e configurazione.",
"Description3": "Accedi a un ambiente preconfigurato, compatibile con i principali framework (Pulser, Mimiq, Perceval, Callisto, Qleo, Qiskit, MyQLM, etc.) e collabora facilmente con i tuoi team tramite un'interfaccia condivisa e sicura."
"Title": "Computer Quantistici (QPU)",
"createNotebookButton": "Crea un Notebook",
"Description1": "Accedi al potere reale del quantistico in QaaS da OVHcloud.",
"Description2": "Esegui i tuoi algoritmi su processori quantistici fisici (QPUs), in tutta sicurezza e senza infrastruttura da gestire.",
"Description3": "Goditi un'integrazione fluida con i nostri emulatori e una fatturazione al secondo per gestire meglio i tuoi costi."
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Title": "QPUs",
"createNotebookButton": "StwΓ³rz notebook",
"Description1": "Realizuj projekty z zakresu informatyki kwantowej, korzystajΔ…c z gotowych notebookΓ³w w chmurze",
"Description2": "Symuluj do 20 kubitΓ³w w kilka sekund - bez instalacji i konfiguracji.",
"Description3": "Zyskaj dostΔ™p do wstΔ™pnie skonfigurowanego Ε›rodowiska kompatybilnego z gΕ‚Γ³wnymi frameworkami (Pulser, Mimiq, Perceval, Callisto, Qleo, Qiskit, MyQLM, ...) i wspΓ³Ε‚pracuj Ε‚atwo dziΔ™ki wspΓ³lnemu i bezpiecznemu interfejsowi"
"Title": "Komputery Kwantowe (QPU)",
"createNotebookButton": "UtwΓ³rz Notatnik",
"Description1": "Uzyskaj dostΔ™p do rzeczywistej mocy kwantowej w QaaS z OVHcloud.",
"Description2": "Uruchom swoje algorytmy na fizycznych procesorach kwantowych (QPU), w peΕ‚ni bezpiecznie i bez potrzeby zarzΔ…dzania infrastrukturΔ….",
"Description3": "Skorzystaj z płynnej integracji z naszymi emulatorami i rozliczania co sekundę, aby lepiej zarządzać swoimi kosztami."
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Title": "QPUs",
"Title": "Computadores QuΓ’nticos (QPU)",
"createNotebookButton": "Criar um Notebook",
"Description1": "Explore a informΓ‘tica quΓ’ntica com toda a liberdade, graΓ§as aos nossos notebooks prontos a usar na cloud",
"Description2": "Simule atΓ© 20 qubits em alguns segundos, sem problemas de instalaΓ§Γ£o ou de configuraΓ§Γ£o.",
"Description3": "Aceda a um ambiente prΓ©-configurado, compatΓ­vel com os principais frameworks (Pulser, Mimiq, Perceval, Calisto, Qleo, Qiskit, MySQL, ...) e colabore facilmente com as suas equipas atravΓ©s de uma interface partilhada e segura"
"Description1": "Aceda ao verdadeiro poder do quΓ’ntico em QaaS a partir da OVHcloud.",
"Description2": "Execute os seus algoritmos em processadores quΓ’nticos fΓ­sicos (QPUs), de forma segura e sem infraestrutura para gerir.",
"Description3": "Desfrute de uma integraΓ§Γ£o perfeita com os nossos emuladores e de uma faturaΓ§Γ£o por segundo para melhor gerir os seus custos."
}
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,13 @@ export function useOrderFunnel(
'frameworkWithVersion.version',
listFramework[0]?.versions[0],
);
}, [regionObject, region, listFramework, flavorQuery.isSuccess]);

}, [
regionObject,
region,
listFramework,
flavorQuery.isSuccess,
qpuFlavorQuery.isSuccess,
]);
// Change editors when region change?
useEffect(() => {
const suggestedEditor =
Expand Down
2 changes: 1 addition & 1 deletion packages/manager/apps/pci-block-storage/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"@ovh-ux/manager-common-translations": "^0.21.1",
"@ovh-ux/manager-config": "^8.6.8",
"@ovh-ux/manager-core-api": "^0.19.1",
"@ovh-ux/manager-pci-common": "^0.20.0",
"@ovh-ux/manager-pci-common": "^0.20.1",
"@ovh-ux/manager-react-components": "^1.46.0",
"@ovh-ux/manager-react-core-application": "^0.12.11",
"@ovh-ux/manager-react-shell-client": "^0.11.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"pci_project_file_storage_alpha_banner_message_title": "Dateispeicher",
"pci_project_file_storage_alpha_banner_message": "Haben Sie Schwierigkeiten, Speicherplatz zwischen Instanzen oder Containern zu teilen? Dateispeicher ist jetzt in der ΓΆffentlichen Alpha-Version bis zum 12. Januar 2026 kostenlos verfΓΌgbar!",
"pci_project_file_storage_alpha_banner_button": "Alpha entdecken"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"pci_project_file_storage_alpha_banner_message_title": "File Storage",
"pci_project_file_storage_alpha_banner_message": "Struggling to share storage volumes between instances or containers? File Storage is now available in Public Alpha until January 12th 2026, free of charge!",
"pci_project_file_storage_alpha_banner_button": "Explore the alpha"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"pci_project_file_storage_alpha_banner_message_title": "Almacenamiento de archivos",
"pci_project_file_storage_alpha_banner_message": "ΒΏTienes dificultades para compartir volΓΊmenes de almacenamiento entre instancias o contenedores? Almacenamiento de archivos ahora estΓ‘ disponible en versiΓ³n Alpha pΓΊblica hasta el 12 de enero de 2026, Β‘sin costo!",
"pci_project_file_storage_alpha_banner_button": "Descubrir la alpha"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"pci_project_file_storage_alpha_banner_message_title": "File Storage",
"pci_project_file_storage_alpha_banner_message": "Vous rencontrez des difficultΓ©s pour partager des volumes de stockage entre instances ou conteneurs ? File Storage est dΓ©sormais disponible en version Alpha publique jusqu'au 12 janvier 2026, sans frais !",
"pci_project_file_storage_alpha_banner_button": "DΓ©couvrir l'alpha"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"pci_project_file_storage_alpha_banner_message_title": "File Storage",
"pci_project_file_storage_alpha_banner_message": "Vous rencontrez des difficultΓ©s pour partager des volumes de stockage entre instances ou conteneurs ? File Storage est dΓ©sormais disponible en version Alpha publique jusqu'au 12 janvier 2026, sans frais !",
"pci_project_file_storage_alpha_banner_button": "DΓ©couvrir l'alpha"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"pci_project_file_storage_alpha_banner_message_title": "File Storage",
"pci_project_file_storage_alpha_banner_message": "Hai difficoltΓ  a condividere volumi di archiviazione tra istanze o contenitori? File Storage Γ¨ ora disponibile in versione Alpha pubblica fino al 12 gennaio 2026, senza costi!",
"pci_project_file_storage_alpha_banner_button": "Scopri l'alpha"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"pci_project_file_storage_alpha_banner_message_title": "Przechowywanie plikΓ³w",
"pci_project_file_storage_alpha_banner_message": "Czy masz trudnoΕ›ci z udostΔ™pnianiem wolumenΓ³w pamiΔ™ci masowej miΔ™dzy instancjami lub kontenerami? Przechowywanie plikΓ³w jest teraz dostΔ™pne w wersji Alpha publicznej do 12 stycznia 2026 roku, bez opΕ‚at!",
"pci_project_file_storage_alpha_banner_button": "Poznaj wersjΔ™ alpha"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"pci_project_file_storage_alpha_banner_message_title": "Armazenamento de Arquivos",
"pci_project_file_storage_alpha_banner_message": "VocΓͺ estΓ‘ tendo dificuldades para compartilhar volumes de armazenamento entre instΓ’ncias ou contΓͺineres? O Armazenamento de Arquivos estΓ‘ agora disponΓ­vel em versΓ£o Alpha pΓΊblica atΓ© 12 de janeiro de 2026, sem custos!",
"pci_project_file_storage_alpha_banner_button": "Descobrir a alpha"
}
7 changes: 5 additions & 2 deletions packages/manager/apps/pci-block-storage/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RouterProvider, createHashRouter } from 'react-router-dom';
import { createHashRouter, RouterProvider } from 'react-router-dom';
import { QueryClientProvider } from '@tanstack/react-query';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
import { odsSetup } from '@ovhcloud/ods-common-core';
Expand All @@ -10,6 +10,7 @@ import '@ovhcloud/ods-themes/default';
import '@ovhcloud/ods-theme-blue-jeans';
import '@ovh-ux/manager-pci-common/dist/style.css';
import './index.scss';
import { GeneralBannerContextProvider } from '@/contexts/GeneralBanner.context';

odsSetup();

Expand All @@ -18,7 +19,9 @@ const router = createHashRouter(appRoutes);
function App() {
return (
<QueryClientProvider client={queryClient}>
<RouterProvider router={router}></RouterProvider>
<GeneralBannerContextProvider>
<RouterProvider router={router} />
</GeneralBannerContextProvider>
<ReactQueryDevtools initialIsOpen={false} />
</QueryClientProvider>
);
Expand Down
9 changes: 9 additions & 0 deletions packages/manager/apps/pci-block-storage/src/api/feature.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { usePCIFeatureAvailability } from '@ovh-ux/manager-pci-common';

export const FILE_STORAGE_ALPHA = 'pci-block-storage:file-storage-alpha-banner';

export const useIsFileStorageAlphaBannerAvailable = () => {
const { data } = usePCIFeatureAvailability([FILE_STORAGE_ALPHA]);

return data?.get(FILE_STORAGE_ALPHA) ?? false;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { PropsWithChildren, useState } from 'react';
import {
IconName,
Message,
MessageBody,
MessageIcon,
MessageProp,
} from '@ovhcloud/ods-react';

type BannerProps = PropsWithChildren<
{
iconName?: IconName;
} & MessageProp
>;

export const Banner = ({
iconName,
children,
onRemove,
dismissible = false,
...messageProps
}: BannerProps) => {
const [displayBanner, setDisplayBanner] = useState(true);

const handleRemove = () => {
onRemove?.();
if (dismissible) setDisplayBanner(false);
};

if (!displayBanner) return null;

return (
<Message
dismissible={dismissible}
onRemove={handleRemove}
{...messageProps}
>
{iconName && <MessageIcon name={iconName} />}
<MessageBody>{children}</MessageBody>
</Message>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { useGeneralBannerContext } from '@/contexts/GeneralBanner.context';
import { Banner } from '@/components/banner/Banner.component';
import { ButtonLink } from '@/components/button-link/ButtonLink';
import { useIsFileStorageAlphaBannerAvailable } from '@/api/feature';

export const FileStorageAlphaBanner = () => {
const { t } = useTranslation(['general-banners']);

const { addBanner, getBanner } = useGeneralBannerContext();
const isFileStorageAlphaBannerAvailable = useIsFileStorageAlphaBannerAvailable();

useEffect(() => {
if (!isFileStorageAlphaBannerAvailable) return;

addBanner('alpha_file_storage', ({ onRemove }) => (
<Banner
iconName="circle-info"
dismissible
onRemove={onRemove}
className="w-full"
>
<div className="w-full flex flex-col gap-4 items-start">
<h4 className="m-0">
{t('pci_project_file_storage_alpha_banner_message_title')}
</h4>
<div>{t('pci_project_file_storage_alpha_banner_message')}</div>
<ButtonLink
isExternal
href="https://labs.ovhcloud.com/en/file-storage/"
target="_blank"
rel="noopener noreferrer"
size="xs"
>
{t('pci_project_file_storage_alpha_banner_button')}
</ButtonLink>
</div>
</Banner>
));
}, [isFileStorageAlphaBannerAvailable]);

return getBanner('alpha_file_storage');
};
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,25 @@ import {
useMemo,
} from 'react';
import { Link } from 'react-router-dom';
import { ButtonColor, ButtonVariant, ButtonSize } from '@ovhcloud/ods-react';
import { ButtonColor, ButtonSize, ButtonVariant } from '@ovhcloud/ods-react';
import './style.scss';
import clsx from 'clsx';
import { TrackActionParams, useTrackAction } from '@/hooks/useTrackAction';
import { Icon } from '../icon/Icon';

type ButtonLinkProps = {
type InternalButtonProps = {
isExternal?: false;
to: string;
href?: undefined;
};

type ExternalButtonProps = {
isExternal: true;
href: string;
to?: undefined;
} & React.AnchorHTMLAttributes<HTMLAnchorElement>;

type ButtonLinkProps = (InternalButtonProps | ExternalButtonProps) & {
variant?: ButtonVariant;
color?: ButtonColor;
size?: ButtonSize;
Expand All @@ -30,7 +41,9 @@ export const ButtonLink = forwardRef<
>(
(
{
isExternal,
to,
href,
variant = 'default',
color = 'primary',
size = 'md',
Expand All @@ -52,21 +65,35 @@ export const ButtonLink = forwardRef<
[actionName, actionValues],
);

const onTrackingClick = useTrackAction(trackingParams);
const handleTrackingClick = useTrackAction(trackingParams);

const classNames = clsx([
'button-link',
`button-link--${color}`,
`button-link--${size}`,
`button-link--${variant}`,
'box-border',
'no-underline',
className,
]);

return isExternal ? (
<a
className={classNames}
href={href}
onClick={handleTrackingClick}
ref={ref}
{...htmlProps}
>
{!!icon && <Icon name={icon} />}

return (
{children}
</a>
) : (
<Link
className={clsx([
'button-link',
`button-link--${color}`,
`button-link--${size}`,
`button-link--${variant}`,
'box-border',
'no-underline',
className,
])}
className={classNames}
to={to}
onClick={onTrackingClick}
onClick={handleTrackingClick}
ref={ref}
{...htmlProps}
>
Expand Down
Loading
Loading