From 1663b502ade7b21430fc72721666144b2ecfeecc Mon Sep 17 00:00:00 2001 From: Alex Boungnaseng Date: Tue, 23 Apr 2024 10:42:55 +0200 Subject: [PATCH] fix(generator): update custom hook folder ref: MANAGER-11571 Signed-off-by: Alex Boungnaseng --- .../api/services-template-get.ts.hbs | 8 +- .../api/services-template.ts.hbs | 9 +- .../[serviceName]/Tabs1/TileExemple.tsx | 92 ----------------- .../dashboard/dashboard.test.ts.hbs | 7 -- .../{ => general-informations}/index.tsx | 0 .../{_layout.tsx.hbs => index.tsx.hbs} | 19 ++-- .../dashboard/{Tab2.tsx => tab2/index.tsx} | 0 .../index-api-v2-pagination-cursor.tsx.hbs | 14 +-- .../index-api-v6-pagination-step.tsx.hbs | 13 +-- .../onboarding/index.tsx | 68 +++++++++++++ .../onboarding/index.tsx.hbs | 68 ------------- .../dashboard/Messages_fr_FR.json.hbs | 1 + .../onboarding/Messages_fr_FR.json.hbs | 5 - packages/manager/core/generator/app/index.js | 2 + .../app/templates/{src => }/index.html | 2 +- .../generator/app/templates/package.json.hbs | 2 + .../core/generator/app/templates/src/App.tsx | 6 +- .../app/templates/src/api/index.ts.hbs | 9 -- .../components/Breadcrumb/Breadcrumb.tsx.hbs | 20 ++-- .../ButtonTooltip/ButtonTooltip.scss | 22 ----- .../ButtonTooltip/ButtonTooltip.tsx | 78 --------------- .../templates/src/components/Error/Error.tsx | 2 +- .../components/ManagerTile/ManagerTile.scss | 28 ------ .../components/ManagerTile/ManagerTile.tsx | 98 ------------------- .../src/components/ManagerTile/index.ts | 1 - .../layout-helpers/Dashboard/Dashboard.scss | 38 ------- .../layout-helpers/Dashboard/TileCustom.tsx | 34 ------- .../layout-helpers/Listing/dataGrid.scss | 15 --- .../Onboarding/OnboardingLayout.scss | 30 ------ .../app/templates/src/configInterface.ts.hbs | 12 --- .../hooks => data/hooks/pci}/useProject.tsx | 0 .../{ => breadcrumb}/useBreadcrumb.tsx.hbs | 9 +- .../src/hooks/{ => guide}/useGuideUtils.tsx | 39 ++++---- .../templates/src/{global.css => index.scss} | 0 .../generator/app/templates/src/index.tsx.hbs | 4 +- .../app/templates/src/pages/_app.tsx.hbs | 15 --- .../src/routes/routes.constant.ts.hbs | 17 ++++ .../templates/src/{ => routes}/routes.tsx.hbs | 27 ++--- .../templates/src/{{appName}}.config.ts.hbs | 4 +- .../generator/app/templates/vite.config.mjs | 3 +- .../utils/create-structure-helpers.js | 3 +- .../core/shell-client/src/hooks/index.ts | 1 + .../shell-client/src/hooks/useBreadcrumb.tsx | 2 +- 43 files changed, 183 insertions(+), 644 deletions(-) delete mode 100644 packages/manager/core/generator/app/conditional-templates/dashboard/[serviceName]/Tabs1/TileExemple.tsx delete mode 100644 packages/manager/core/generator/app/conditional-templates/dashboard/dashboard.test.ts.hbs rename packages/manager/core/generator/app/conditional-templates/dashboard/{ => general-informations}/index.tsx (100%) rename packages/manager/core/generator/app/conditional-templates/dashboard/{_layout.tsx.hbs => index.tsx.hbs} (83%) rename packages/manager/core/generator/app/conditional-templates/dashboard/{Tab2.tsx => tab2/index.tsx} (100%) create mode 100644 packages/manager/core/generator/app/conditional-templates/onboarding/index.tsx delete mode 100644 packages/manager/core/generator/app/conditional-templates/onboarding/index.tsx.hbs rename packages/manager/core/generator/app/templates/{src => }/index.html (92%) delete mode 100644 packages/manager/core/generator/app/templates/src/api/index.ts.hbs delete mode 100644 packages/manager/core/generator/app/templates/src/components/ButtonTooltip/ButtonTooltip.scss delete mode 100644 packages/manager/core/generator/app/templates/src/components/ButtonTooltip/ButtonTooltip.tsx delete mode 100644 packages/manager/core/generator/app/templates/src/components/ManagerTile/ManagerTile.scss delete mode 100644 packages/manager/core/generator/app/templates/src/components/ManagerTile/ManagerTile.tsx delete mode 100644 packages/manager/core/generator/app/templates/src/components/ManagerTile/index.ts delete mode 100644 packages/manager/core/generator/app/templates/src/components/layout-helpers/Dashboard/Dashboard.scss delete mode 100644 packages/manager/core/generator/app/templates/src/components/layout-helpers/Dashboard/TileCustom.tsx delete mode 100644 packages/manager/core/generator/app/templates/src/components/layout-helpers/Listing/dataGrid.scss delete mode 100644 packages/manager/core/generator/app/templates/src/components/layout-helpers/Onboarding/OnboardingLayout.scss delete mode 100644 packages/manager/core/generator/app/templates/src/configInterface.ts.hbs rename packages/manager/core/generator/app/templates/src/{api/hooks => data/hooks/pci}/useProject.tsx (100%) rename packages/manager/core/generator/app/templates/src/hooks/{ => breadcrumb}/useBreadcrumb.tsx.hbs (94%) rename packages/manager/core/generator/app/templates/src/hooks/{ => guide}/useGuideUtils.tsx (68%) rename packages/manager/core/generator/app/templates/src/{global.css => index.scss} (100%) delete mode 100644 packages/manager/core/generator/app/templates/src/pages/_app.tsx.hbs create mode 100644 packages/manager/core/generator/app/templates/src/routes/routes.constant.ts.hbs rename packages/manager/core/generator/app/templates/src/{ => routes}/routes.tsx.hbs (84%) diff --git a/packages/manager/core/generator/app/conditional-templates/api/services-template-get.ts.hbs b/packages/manager/core/generator/app/conditional-templates/api/services-template-get.ts.hbs index 361e9d2201f8..883c16e8678c 100644 --- a/packages/manager/core/generator/app/conditional-templates/api/services-template-get.ts.hbs +++ b/packages/manager/core/generator/app/conditional-templates/api/services-template-get.ts.hbs @@ -1,17 +1,17 @@ import { fetchIcebergV2, fetchIcebergV6, apiClient } from '@ovh-ux/manager-core-api'; -{{#if unknownTypeList}} +{{!-- {{#if unknownTypeList}} {{#each unknownTypeList}} type {{this}} = unknown; {{/each}} -{{/if}} +{{/if}} --}} {{#each operationList}} {{#if this.params}} export type {{pascalCase this.functionName}}Params = { {{#each this.params}} /** {{this.description}} */ - '{{this.name}}'{{#if this.required}}?{{/if}}: {{this.type}}; + '{{this.name}}'{{#if this.required}}?{{/if}}: any; {{/each}} }; @@ -23,7 +23,7 @@ export const {{this.functionName}}QueryKey = {{#if this.urlParams}}(params: {{pa * {{this.description}} */ {{/if}} -export const {{this.functionName}} = async ({{#if this.params}}params: {{pascalCase this.functionName}}Params{{/if}}): Promise<{{this.responseType}}> => +export const {{this.functionName}} = async ({{#if this.params}}params: {{pascalCase this.functionName}}Params{{/if}}): Promise => apiClient.{{this.apiVersion}}.{{this.httpMethod}}({{#if this.urlParams}}`{{this.url}}`{{else}}'{{this.url}}'{{/if}}{{#if this.bodyParams}}, { data: params }{{/if}}); {{/each}} {{#ifEq arg1=apiVersion arg2=mainApiPathApiVersion}} diff --git a/packages/manager/core/generator/app/conditional-templates/api/services-template.ts.hbs b/packages/manager/core/generator/app/conditional-templates/api/services-template.ts.hbs index f15d1ac28b0f..9bfe3ca1c629 100644 --- a/packages/manager/core/generator/app/conditional-templates/api/services-template.ts.hbs +++ b/packages/manager/core/generator/app/conditional-templates/api/services-template.ts.hbs @@ -1,12 +1,7 @@ import apiClient from '@ovh-ux/manager-core-api'; -{{#if unknownTypeList}} -{{#each unknownTypeList}} -type {{this}} = unknown; -{{/each}} -{{/if}} -{{#each operationList}} +{{#each operationList}} {{#if this.params}} export type {{pascalCase this.functionName}}Params = { {{#each this.params}} @@ -23,6 +18,6 @@ export const {{this.functionName}}QueryKey = {{#if this.urlParams}}(params: {{pa * {{this.description}} */ {{/if}} -export const {{this.functionName}} = async ({{#if this.params}}params: {{pascalCase this.functionName}}Params{{/if}}): Promise<{{this.responseType}}> => +export const {{this.functionName}} = async ({{#if this.params}}params: {{pascalCase this.functionName}}Params{{/if}}): Promise => apiClient.{{this.apiVersion}}.{{this.httpMethod}}({{#if this.urlParams}}`{{this.url}}`{{else}}'{{this.url}}'{{/if}}{{#if this.bodyParams}}, { data: params }{{/if}}); {{/each}} diff --git a/packages/manager/core/generator/app/conditional-templates/dashboard/[serviceName]/Tabs1/TileExemple.tsx b/packages/manager/core/generator/app/conditional-templates/dashboard/[serviceName]/Tabs1/TileExemple.tsx deleted file mode 100644 index 9fc404ae5a59..000000000000 --- a/packages/manager/core/generator/app/conditional-templates/dashboard/[serviceName]/Tabs1/TileExemple.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import React from 'react'; -import { OsdsText, OsdsDivider } from '@ovhcloud/ods-components/react/'; -import { - ODS_THEME_TYPOGRAPHY_LEVEL, - ODS_THEME_COLOR_INTENT, -} from '@ovhcloud/ods-common-theming'; -import ButtonTooltip from '@/components/ButtonTooltip/ButtonTooltip'; - -const TileToRename1: React.FC = () => { - return ( - <> -
- - Subtitle 1 - -
- -
-
- Label -
-
- -
-
- - - -
-
- - Subtitle 2 - -
- -
- Label -
-
- -
-
- - Subtitle 3 - -
- -
- Label -
-
- -
-
- - Subtitle 4 - -
- -
- Label -
-
- - ); -}; - -export default TileToRename1; diff --git a/packages/manager/core/generator/app/conditional-templates/dashboard/dashboard.test.ts.hbs b/packages/manager/core/generator/app/conditional-templates/dashboard/dashboard.test.ts.hbs deleted file mode 100644 index fc0e547aa146..000000000000 --- a/packages/manager/core/generator/app/conditional-templates/dashboard/dashboard.test.ts.hbs +++ /dev/null @@ -1,7 +0,0 @@ -import { test, expect } from '@playwright/test'; -import '@playwright-helpers/login'; - -test('Navigates to a dashboard page', async ({ page }) => { - await page.click(':nth-child(1) > a'); - await expect(page.locator('h1')).toContainText('Dashboard page'); -}); diff --git a/packages/manager/core/generator/app/conditional-templates/dashboard/index.tsx b/packages/manager/core/generator/app/conditional-templates/dashboard/general-informations/index.tsx similarity index 100% rename from packages/manager/core/generator/app/conditional-templates/dashboard/index.tsx rename to packages/manager/core/generator/app/conditional-templates/dashboard/general-informations/index.tsx diff --git a/packages/manager/core/generator/app/conditional-templates/dashboard/_layout.tsx.hbs b/packages/manager/core/generator/app/conditional-templates/dashboard/index.tsx.hbs similarity index 83% rename from packages/manager/core/generator/app/conditional-templates/dashboard/_layout.tsx.hbs rename to packages/manager/core/generator/app/conditional-templates/dashboard/index.tsx.hbs index 2be0532f3269..b86a03eabeb8 100644 --- a/packages/manager/core/generator/app/conditional-templates/dashboard/_layout.tsx.hbs +++ b/packages/manager/core/generator/app/conditional-templates/dashboard/index.tsx.hbs @@ -1,13 +1,12 @@ import React, { useState, useEffect } from 'react'; -import { useResolvedPath } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; - import { Outlet, NavLink, useLocation, useNavigate, useParams, + useResolvedPath, } from 'react-router-dom'; import { OsdsTabs, @@ -72,14 +71,14 @@ export default function DashboardPage() { {tabsList.map((tab: DashboardTabItemProps) => ( - - - {tab.title} - - + + + {tab.title} + + ))} diff --git a/packages/manager/core/generator/app/conditional-templates/dashboard/Tab2.tsx b/packages/manager/core/generator/app/conditional-templates/dashboard/tab2/index.tsx similarity index 100% rename from packages/manager/core/generator/app/conditional-templates/dashboard/Tab2.tsx rename to packages/manager/core/generator/app/conditional-templates/dashboard/tab2/index.tsx diff --git a/packages/manager/core/generator/app/conditional-templates/listing/index-api-v2-pagination-cursor.tsx.hbs b/packages/manager/core/generator/app/conditional-templates/listing/index-api-v2-pagination-cursor.tsx.hbs index db540d9bf36f..084d30ee5145 100644 --- a/packages/manager/core/generator/app/conditional-templates/listing/index-api-v2-pagination-cursor.tsx.hbs +++ b/packages/manager/core/generator/app/conditional-templates/listing/index-api-v2-pagination-cursor.tsx.hbs @@ -7,7 +7,13 @@ import { OsdsButton, OsdsLink } from '@ovhcloud/ods-components/react'; import { ODS_BUTTON_VARIANT } from '@ovhcloud/ods-components'; import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming'; -import { getListingIcebergV2 } from '@/api'; +import { + Datagrid, + DataGridTextCell, + useDatagridSearchParams, +} from '@ovhcloud/manager-components'; + +import { getListingIcebergV2 } from '@/data/api/{{appName}}'; import Loading from '@/components/Loading/Loading'; import ErrorBanner from '@/components/Error/Error'; @@ -15,12 +21,6 @@ import Breadcrumb from '@/components/Breadcrumb/Breadcrumb'; import appConfig from '@/{{appName}}.config'; -import { - Datagrid, - DataGridTextCell, - useDatagridSearchParams, -} from '@ovhcloud/manager-components'; - export default function Listing() { const { t } = useTranslation('listing'); const myConfig = appConfig; diff --git a/packages/manager/core/generator/app/conditional-templates/listing/index-api-v6-pagination-step.tsx.hbs b/packages/manager/core/generator/app/conditional-templates/listing/index-api-v6-pagination-step.tsx.hbs index a7f0c082411e..b23e0de5fa08 100644 --- a/packages/manager/core/generator/app/conditional-templates/listing/index-api-v6-pagination-step.tsx.hbs +++ b/packages/manager/core/generator/app/conditional-templates/listing/index-api-v6-pagination-step.tsx.hbs @@ -2,21 +2,22 @@ import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Navigate,{{#if isPCI }} useParams, {{/if}} useNavigate, useLocation } from 'react-router-dom'; import { useQuery } from '@tanstack/react-query'; -import { getListingIcebergV6 } from '@/api'; import { OsdsLink } from '@ovhcloud/ods-components/react'; import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming'; -import Loading from '@/components/Loading/Loading'; -import ErrorBanner from '@/components/Error/Error'; -import Breadcrumb from '@/components/Breadcrumb/Breadcrumb'; - import { Datagrid, DataGridTextCell, useDatagridSearchParams, } from '@ovhcloud/manager-components'; +import { getListingIcebergV6 } from '@/data/api/{{appName}}'; + +import Loading from '@/components/Loading/Loading'; +import ErrorBanner from '@/components/Error/Error'; +import Breadcrumb from '@/components/Breadcrumb/Breadcrumb'; + import appConfig from '@/{{appName}}.config'; export default function Listing() { @@ -45,7 +46,7 @@ export default function Listing() { }); const navigateToDashabord = (label: string) => { - let path = + const path = location.pathname.indexOf('pci') > -1 ? `${location.pathname}/` : '/'; navigate(`${path}${label}`); }; diff --git a/packages/manager/core/generator/app/conditional-templates/onboarding/index.tsx b/packages/manager/core/generator/app/conditional-templates/onboarding/index.tsx new file mode 100644 index 000000000000..f3a3f428c829 --- /dev/null +++ b/packages/manager/core/generator/app/conditional-templates/onboarding/index.tsx @@ -0,0 +1,68 @@ +import React from 'react'; +import { useTranslation } from 'react-i18next'; +import { Card, OnboardingLayout } from '@ovhcloud/manager-components'; +import useGuideUtils from '@/hooks/guide/useGuideUtils'; +import Breadcrumb from '@/components/Breadcrumb/Breadcrumb'; +import onboardingImgSrc from './onboarding-img.png'; + +export default function Onboarding() { + const { t } = useTranslation('onboarding'); + const link = useGuideUtils(); + + const tileList = [ + { + id: 1, + texts: { + title: t('guide1Title'), + description: t('guide1Description'), + category: t('guideCategory'), + }, + href: link?.guideLink1, + }, + { + id: 2, + texts: { + title: t('guide2Title'), + description: t('guide2Description'), + category: t('guideCategory'), + }, + href: link?.guideLink2, + }, + { + id: 3, + texts: { + title: t('guide3Title'), + description: t('guide3Description'), + category: t('guideCategory'), + }, + href: link?.guideLink3, + }, + ]; + + const title: string = t('title'); + const description: string = t('description'); + const imgSrc = { + src: onboardingImgSrc, + }; + + return ( + <> + + + + + + ); +} diff --git a/packages/manager/core/generator/app/conditional-templates/onboarding/index.tsx.hbs b/packages/manager/core/generator/app/conditional-templates/onboarding/index.tsx.hbs deleted file mode 100644 index d2d89110c268..000000000000 --- a/packages/manager/core/generator/app/conditional-templates/onboarding/index.tsx.hbs +++ /dev/null @@ -1,68 +0,0 @@ -import React from "react"; -import { useTranslation } from "react-i18next"; -import { Card, OnboardingLayout } from "@ovhcloud/manager-components"; -import useGuideUtils from '@/hooks/useGuideUtils'; -import Breadcrumb from '@/components/Breadcrumb/Breadcrumb'; -import onboardingImgSrc from "./onboarding-img.png"; - -export default function Onboarding() { - const { t } = useTranslation('onboarding'); - const link = useGuideUtils(); - - const tileList = [ - { - id: 1, - texts: { - title: t("guide1Title"), - description: t("guide1Description"), - category: t("guideCategory"), - }, - href: link?.guideLink1, - }, - { - id: 2, - texts: { - title: t("guide2Title"), - description: t("guide2Description"), - category: t("guideCategory"), - }, - href: link?.guideLink2, - }, - { - id: 3, - texts: { - title: t("guide3Title"), - description: t("guide3Description"), - category: t("guideCategory"), - }, - href: link?.guideLink3, - }, - ]; - - const title: string = t("title"); - const description: string = t("description"); - const imgSrc = { - src: onboardingImgSrc - } - - return ( - <> - - - - - - ); -} diff --git a/packages/manager/core/generator/app/conditional-translations/dashboard/Messages_fr_FR.json.hbs b/packages/manager/core/generator/app/conditional-translations/dashboard/Messages_fr_FR.json.hbs index e7e9e99edb9a..f42a27b3366a 100644 --- a/packages/manager/core/generator/app/conditional-translations/dashboard/Messages_fr_FR.json.hbs +++ b/packages/manager/core/generator/app/conditional-translations/dashboard/Messages_fr_FR.json.hbs @@ -2,5 +2,6 @@ "title": "Dashboard page", "error_service": "No services info", "general_informations": "Informations générales", + "tab2": "Tab 2", "back_link": "Retour à la liste" } diff --git a/packages/manager/core/generator/app/conditional-translations/onboarding/Messages_fr_FR.json.hbs b/packages/manager/core/generator/app/conditional-translations/onboarding/Messages_fr_FR.json.hbs index 7fc67dfbd1bd..5a6331a49396 100644 --- a/packages/manager/core/generator/app/conditional-translations/onboarding/Messages_fr_FR.json.hbs +++ b/packages/manager/core/generator/app/conditional-translations/onboarding/Messages_fr_FR.json.hbs @@ -2,17 +2,12 @@ "title": "{{dashCase appName}}", "description": "Découvrez des services de stockage managés qui s’appuient sur le système de fichiers OpenZFS. Bénéficiez en quelques clics d’espaces de stockage centralisés pour entreposer ou sauvegarder vos données et fichiers.", "orderButtonLabel": "Commander un {{dashCase appName}}", - "orderButtonLink": "/#/dedicated/{{appName}}/order", "moreInfoButtonLabel": "En savoir plus sur {{dashCase appName}}", - "moreInfoButtonLink": "/#/dedicated/{{appName}}/info", "guideCategory": "Tutoriel", "guide1Title": "Premiers pas avec un {{dashCase appName}}", "guide1Description": "Découvrez comment gérer un NAS-HA depuis l'espace-client OVHcloud", - "guide1Link": "https://help.ovhcloud.com/csm/fr-public-cloud-storage-nas-get-started?id=kb_article_view&sysparm_article=KB0046704", "guide2Title": "Monter votre NAS via un partage NFS", "guide2Description": "Découvrez comment monter un NAS via un partage NFS", - "guide2Link": "https://help.ovhcloud.com/csm/fr-public-cloud-storage-nas-nfs?id=kb_article_view&sysparm_article=KB0046742", "guide3Title": "Monter votre NAS sur Windows Server via CIFS", "guide3Description": "Découvrez comment monter un NAS sur Windows Server via le protocole CIFS", - "guide3Link": "https://help.ovhcloud.com/csm/fr-public-cloud-storage-nas-cifs?id=kb_article_view&sysparm_article=KB0046672" } diff --git a/packages/manager/core/generator/app/index.js b/packages/manager/core/generator/app/index.js index 8cf034143ffa..5f49591dc0db 100644 --- a/packages/manager/core/generator/app/index.js +++ b/packages/manager/core/generator/app/index.js @@ -245,6 +245,7 @@ export default (plop) => { endpoints: apiV2Computed, apiVersion: 'v2', appDirectory, + appName, }) : []; @@ -254,6 +255,7 @@ export default (plop) => { endpoints: apiV6Computed, apiVersion: 'v6', appDirectory, + appName, }) : []; diff --git a/packages/manager/core/generator/app/templates/src/index.html b/packages/manager/core/generator/app/templates/index.html similarity index 92% rename from packages/manager/core/generator/app/templates/src/index.html rename to packages/manager/core/generator/app/templates/index.html index 3f2a1edf2d06..ec4e92d05007 100644 --- a/packages/manager/core/generator/app/templates/src/index.html +++ b/packages/manager/core/generator/app/templates/index.html @@ -17,6 +17,6 @@
- + diff --git a/packages/manager/core/generator/app/templates/package.json.hbs b/packages/manager/core/generator/app/templates/package.json.hbs index 18dc8c80ae88..fc55a814b643 100644 --- a/packages/manager/core/generator/app/templates/package.json.hbs +++ b/packages/manager/core/generator/app/templates/package.json.hbs @@ -34,6 +34,8 @@ "@ovhcloud/ods-theme-blue-jeans": "17.2.1", "@ovh-ux/manager-tailwind-config": "*", "@ovhcloud/manager-components": "*", + "axios": "^1.1.2", + "clsx": "^1.2.1", "i18next": "^20.4.0", "i18next-http-backend": "^2.4.2", "react": "^18.2.0", diff --git a/packages/manager/core/generator/app/templates/src/App.tsx b/packages/manager/core/generator/app/templates/src/App.tsx index b7a6ad08a908..9bedb39c2cae 100644 --- a/packages/manager/core/generator/app/templates/src/App.tsx +++ b/packages/manager/core/generator/app/templates/src/App.tsx @@ -4,7 +4,9 @@ import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { odsSetup } from '@ovhcloud/ods-common-core'; import { ShellContext } from '@ovh-ux/manager-react-shell-client'; import { RouterProvider, createHashRouter } from 'react-router-dom'; -import { Routes } from './routes'; +import { Routes } from './routes/routes'; + +odsSetup(); const queryClient = new QueryClient({ defaultOptions: { @@ -14,8 +16,6 @@ const queryClient = new QueryClient({ }, }); -odsSetup(); - function App() { const { shell } = useContext(ShellContext); const router = createHashRouter(Routes); diff --git a/packages/manager/core/generator/app/templates/src/api/index.ts.hbs b/packages/manager/core/generator/app/templates/src/api/index.ts.hbs deleted file mode 100644 index bab86652aded..000000000000 --- a/packages/manager/core/generator/app/templates/src/api/index.ts.hbs +++ /dev/null @@ -1,9 +0,0 @@ -{{#each apiV6Computed}} -export * from './{{uppercase @key}}/apiv6/services'; -{{/each}} -{{#each apiV2Computed}} -export * from './{{uppercase @key}}/apiv2/services'; -{{/each}} -{{#if isPCI}} -export * from './hooks/useProject'; -{{/if}} diff --git a/packages/manager/core/generator/app/templates/src/components/Breadcrumb/Breadcrumb.tsx.hbs b/packages/manager/core/generator/app/templates/src/components/Breadcrumb/Breadcrumb.tsx.hbs index f87191c6ae45..941cd74f5dfc 100644 --- a/packages/manager/core/generator/app/templates/src/components/Breadcrumb/Breadcrumb.tsx.hbs +++ b/packages/manager/core/generator/app/templates/src/components/Breadcrumb/Breadcrumb.tsx.hbs @@ -7,15 +7,12 @@ import { useBreadcrumb, {{/if}} BreadcrumbItem, -} from '@/hooks/useBreadcrumb'; - +} from '@/hooks/breadcrumb/useBreadcrumb'; {{#if isPCI}} import { useParams } from 'react-router-dom'; -import { useProject } from '@/api/hooks/useProject'; +import { useProject } from '@/data/hooks/pci/useProject'; {{/if}} - import appConfig from '@/{{appName}}.config'; -import ConfigInterface from '@/configInterface'; export interface BreadcrumbProps { customRootLabel?: string; @@ -24,19 +21,24 @@ export interface BreadcrumbProps { } function Breadcrumb({ customRootLabel }: BreadcrumbProps): JSX.Element { - const myConfig: ConfigInterface = appConfig; - const label = customRootLabel || myConfig.rootLabel; + const label = customRootLabel || appConfig.rootLabel; {{#if isPCI}} const { projectId } = useParams(); const { project } = useProject({ projectId }); if (project) { - const breadcrumbPci = usePciBreadcrumb({ projectId, appName: '{{appName}}' }); + const breadcrumbPci = usePciBreadcrumb({ + projectId, + appName: '{{appName}}', + }); return ; } {{else}} - const breadcrumbItems = useBreadcrumb({ rootLabel: label, appName: '{{appName}}' }); + const breadcrumbItems = useBreadcrumb({ + rootLabel: label, + appName: '{{appName}}', + }); return ; {{/if}} } diff --git a/packages/manager/core/generator/app/templates/src/components/ButtonTooltip/ButtonTooltip.scss b/packages/manager/core/generator/app/templates/src/components/ButtonTooltip/ButtonTooltip.scss deleted file mode 100644 index feb531a990aa..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/ButtonTooltip/ButtonTooltip.scss +++ /dev/null @@ -1,22 +0,0 @@ -.tooltip { - position: relative; - display: inline-block; - left: -80%; - - .tooltip-text { - position: absolute; - background-color: #fff; - border-radius: 4px; - white-space: nowrap; - margin-top: -4px; - right: -100%; - border: 2px solid #e6e6e6; - text-align: left; - z-index: 9999; - - div { - padding: 10px 20px; - cursor: pointer; - } - } -} diff --git a/packages/manager/core/generator/app/templates/src/components/ButtonTooltip/ButtonTooltip.tsx b/packages/manager/core/generator/app/templates/src/components/ButtonTooltip/ButtonTooltip.tsx deleted file mode 100644 index aa62e173ef78..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/ButtonTooltip/ButtonTooltip.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { useState, useRef, useEffect } from 'react'; -import { OsdsButton, OsdsIcon } from '@ovhcloud/ods-components/react'; -import { - ODS_ICON_NAME, - ODS_ICON_SIZE, - ODS_BUTTON_TYPE, - ODS_BUTTON_VARIANT, -} from '@ovhcloud/ods-components'; -import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming'; - -interface TooltipItem { - label: string; -} - -interface ButtonTooltipProps { - tooltipContent: TooltipItem[]; -} - -const ButtonTooltip: React.FC = (props) => { - const { tooltipContent } = props; - const [showTooltip, setShowTooltip] = useState(false); - const tooltipRef = useRef(null); - - useEffect(() => { - const handleDocumentClick = (event: MouseEvent) => { - if ( - tooltipRef.current && - !tooltipRef.current.contains(event.target as Node) - ) { - setShowTooltip(false); - } - }; - - document.addEventListener('click', handleDocumentClick); - - return () => { - document.removeEventListener('click', handleDocumentClick); - }; - }, []); - - const handleTooltipToggle = ( - event: React.MouseEvent, - ) => { - event.stopPropagation(); - setShowTooltip(!showTooltip); - }; - - return ( - <> - - - - {showTooltip && ( -
-
- {tooltipContent.map((item: TooltipItem) => ( -
- {item.label} -
- ))} -
-
- )} - - ); -}; - -export default ButtonTooltip; diff --git a/packages/manager/core/generator/app/templates/src/components/Error/Error.tsx b/packages/manager/core/generator/app/templates/src/components/Error/Error.tsx index 78762cb16476..adbf9ccad975 100644 --- a/packages/manager/core/generator/app/templates/src/components/Error/Error.tsx +++ b/packages/manager/core/generator/app/templates/src/components/Error/Error.tsx @@ -49,4 +49,4 @@ const Errors: React.FC = ({ error }) => { ); }; -export default ErrorBanner; +export default Errors; diff --git a/packages/manager/core/generator/app/templates/src/components/ManagerTile/ManagerTile.scss b/packages/manager/core/generator/app/templates/src/components/ManagerTile/ManagerTile.scss deleted file mode 100644 index 1ae24cc69245..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/ManagerTile/ManagerTile.scss +++ /dev/null @@ -1,28 +0,0 @@ -.manager-tile { - .tile { - width: 100%; - - .tile-type { - display: block; - margin-bottom: 16px; - } - - .tile-title { - display: block; - margin-bottom: 16px; - } - - .tile-description { - display: block; - margin-bottom: 12px; - } - - a { - text-decoration: none; - } - - .link-icon { - margin-left: 10px; - } - } -} diff --git a/packages/manager/core/generator/app/templates/src/components/ManagerTile/ManagerTile.tsx b/packages/manager/core/generator/app/templates/src/components/ManagerTile/ManagerTile.tsx deleted file mode 100644 index 3cccaa51ad75..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/ManagerTile/ManagerTile.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import React from 'react'; -import { - OsdsLink, - OsdsTile, - OsdsText, - OsdsIcon, -} from '@ovhcloud/ods-components/react/'; -import { ODS_ICON_NAME, ODS_ICON_SIZE } from '@ovhcloud/ods-components/'; -import { - ODS_THEME_TYPOGRAPHY_LEVEL, - ODS_THEME_COLOR_INTENT, - ODS_THEME_TYPOGRAPHY_SIZE, -} from '@ovhcloud/ods-common-theming'; -import { OdsHTMLAnchorElementTarget } from '@ovhcloud/ods-common-core'; -import clsx from 'clsx'; -import './ManagerTile.scss'; - -// TODO: add translations for manager tile type -// Is it possible with the super component library ? -// Or should we pass all labels ? -export enum ManagerTileType { - tutorial, - catalog, -} - -export type ManagerTileProps = { - className?: string; - href?: string; - onClick?: () => void; - tileType: ManagerTileType; - moreLabel: string; - title: string; - description?: string; -}; - -export const ManagerTile: React.FC = ({ - className, - href, - onClick, - tileType, - moreLabel, - title, - description, -}) => { - return ( - - -
- - {tileType === ManagerTileType.tutorial ? 'Tutorial' : 'Catalog'} - - - - {title} - - - {description} - - - {moreLabel} - - -
-
-
- ); -}; diff --git a/packages/manager/core/generator/app/templates/src/components/ManagerTile/index.ts b/packages/manager/core/generator/app/templates/src/components/ManagerTile/index.ts deleted file mode 100644 index 72ed60b3b9bd..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/ManagerTile/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './ManagerTile'; diff --git a/packages/manager/core/generator/app/templates/src/components/layout-helpers/Dashboard/Dashboard.scss b/packages/manager/core/generator/app/templates/src/components/layout-helpers/Dashboard/Dashboard.scss deleted file mode 100644 index fa38ce015265..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/layout-helpers/Dashboard/Dashboard.scss +++ /dev/null @@ -1,38 +0,0 @@ -.dashboard-layout-helpers { - osds-tab-bar-item { - a { - text-decoration: none; - } - } - @media (min-width: 768px) { - .dashboard-section { - display: grid; - gap: 30px; - grid-template-columns: repeat(3, 1fr); - .tile-content { - display: block; - width: 100%; - } - } - } - @media (max-width: 767px) { - .dashboard-section { - display: block !important; - .tile-content { - display: block; - width: 100%; - } - } - } - .button-tooltip { - display: flex; - justify-content: space-between; - } - .element-tile-left { - align-items: flex-start; - } - - .element-tile-right { - align-items: flex-end; - } -} diff --git a/packages/manager/core/generator/app/templates/src/components/layout-helpers/Dashboard/TileCustom.tsx b/packages/manager/core/generator/app/templates/src/components/layout-helpers/Dashboard/TileCustom.tsx deleted file mode 100644 index 8740484b7f82..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/layout-helpers/Dashboard/TileCustom.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React, { ReactNode } from 'react'; -import { - OsdsText, - OsdsDivider, - OsdsTile, -} from '@ovhcloud/ods-components/react/'; -import { - ODS_THEME_TYPOGRAPHY_LEVEL, - ODS_THEME_COLOR_INTENT, -} from '@ovhcloud/ods-common-theming'; - -import './Dashboard.scss'; - -interface SectionProps { - title: string; - children: ReactNode; -} - -const TileCustom: React.FC = ({ title, children }) => ( - -
- - {title} - - - {children} -
-
-); - -export default TileCustom; diff --git a/packages/manager/core/generator/app/templates/src/components/layout-helpers/Listing/dataGrid.scss b/packages/manager/core/generator/app/templates/src/components/layout-helpers/Listing/dataGrid.scss deleted file mode 100644 index 752533e7bdb8..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/layout-helpers/Listing/dataGrid.scss +++ /dev/null @@ -1,15 +0,0 @@ -.datagrid { - border: 1px solid #bef1ff; - border-collapse: collapse; - - th { - background-color: #bef1ff; - padding: 15px; - } - - tr { - background-color: #fff; - border: 1px solid #bef1ff; - border-collapse: collapse; - } -} diff --git a/packages/manager/core/generator/app/templates/src/components/layout-helpers/Onboarding/OnboardingLayout.scss b/packages/manager/core/generator/app/templates/src/components/layout-helpers/Onboarding/OnboardingLayout.scss deleted file mode 100644 index 54e36ea35ce9..000000000000 --- a/packages/manager/core/generator/app/templates/src/components/layout-helpers/Onboarding/OnboardingLayout.scss +++ /dev/null @@ -1,30 +0,0 @@ -.manager-on-boarding-layout { - display: flex; - flex-direction: column; - margin-right: auto; - margin-left: auto; - - .on-boarding-illustration-section { - display: flex; - flex-direction: column; - align-items: center; - - .on-boarding-illustration-container { - display: flex; - justify-content: center; - img { - max-height: 150px; - } - } - - .on-boarding-title { - display: block; - text-align: center; - } - - .on-boarding-description { - display: block; - text-align: center; - } - } -} diff --git a/packages/manager/core/generator/app/templates/src/configInterface.ts.hbs b/packages/manager/core/generator/app/templates/src/configInterface.ts.hbs deleted file mode 100644 index b84b31954a8a..000000000000 --- a/packages/manager/core/generator/app/templates/src/configInterface.ts.hbs +++ /dev/null @@ -1,12 +0,0 @@ -export default interface Config { - listing?: Listing; - rootLabel?: string; -} - -export interface Listing { - datagrid?: Datagrid; -} - -export interface Datagrid { - serviceKey?: string; -} diff --git a/packages/manager/core/generator/app/templates/src/api/hooks/useProject.tsx b/packages/manager/core/generator/app/templates/src/data/hooks/pci/useProject.tsx similarity index 100% rename from packages/manager/core/generator/app/templates/src/api/hooks/useProject.tsx rename to packages/manager/core/generator/app/templates/src/data/hooks/pci/useProject.tsx diff --git a/packages/manager/core/generator/app/templates/src/hooks/useBreadcrumb.tsx.hbs b/packages/manager/core/generator/app/templates/src/hooks/breadcrumb/useBreadcrumb.tsx.hbs similarity index 94% rename from packages/manager/core/generator/app/templates/src/hooks/useBreadcrumb.tsx.hbs rename to packages/manager/core/generator/app/templates/src/hooks/breadcrumb/useBreadcrumb.tsx.hbs index 7118c1b5314d..7b8b31c1c2ee 100644 --- a/packages/manager/core/generator/app/templates/src/hooks/useBreadcrumb.tsx.hbs +++ b/packages/manager/core/generator/app/templates/src/hooks/breadcrumb/useBreadcrumb.tsx.hbs @@ -1,11 +1,9 @@ import { useEffect, useState, useContext } from 'react'; import { useLocation } from 'react-router-dom'; import { ShellContext } from '@ovh-ux/manager-react-shell-client'; - {{#if isPCI}} -import { useProject, PciProject } from '@/api'; +import { useProject, PciProject } from '@/data/hooks/pci/useProject'; {{/if}} - export type BreadcrumbItem = { label: string | undefined; href?: string; @@ -17,7 +15,6 @@ export interface BreadcrumbProps { projectId?: string; items?: BreadcrumbItem[]; } - {{#if isPCI}} export const usePciBreadcrumb = ({ projectId, @@ -75,8 +72,8 @@ export const useBreadcrumb = ({ rootLabel, appName }: BreadcrumbProps) => { href: String(response), }; setRoot([rootItem]); - } catch (error) { - console.error('Error fetching root URL:', error); + } catch { + // Fetch navigation error } }; fetchRoot(); diff --git a/packages/manager/core/generator/app/templates/src/hooks/useGuideUtils.tsx b/packages/manager/core/generator/app/templates/src/hooks/guide/useGuideUtils.tsx similarity index 68% rename from packages/manager/core/generator/app/templates/src/hooks/useGuideUtils.tsx rename to packages/manager/core/generator/app/templates/src/hooks/guide/useGuideUtils.tsx index 28090ba610d3..2971e624318e 100644 --- a/packages/manager/core/generator/app/templates/src/hooks/useGuideUtils.tsx +++ b/packages/manager/core/generator/app/templates/src/hooks/guide/useGuideUtils.tsx @@ -1,8 +1,8 @@ -import { useState, useEffect } from 'react'; +import { useContext, useEffect, useState } from 'react'; import { CountryCode } from '@ovh-ux/manager-config'; -import { useAuthentication } from '@ovh-ux/manager-react-core-application'; +import { ShellContext } from '@ovh-ux/manager-react-shell-client'; -const docUrl = 'https://docs.ovh.com/'; +const docUrl = 'https://docs.ovh.com'; type GuideLinks = { [key in CountryCode]: string }; @@ -64,14 +64,15 @@ const GUIDE_LIST: { [guideName: string]: Partial } = { type GetGuideLinkProps = { name?: string; - subsidiary: CountryCode; + subsidiary: CountryCode | string; }; function getGuideListLink({ subsidiary }: GetGuideLinkProps) { const list: { [guideName: string]: string } = {}; - for (const [key, value] of Object.entries(GUIDE_LIST)) { - list[key] = value[subsidiary]; - } + const keys = Object.entries(GUIDE_LIST); + keys.forEach((key) => { + list[key[0]] = docUrl + GUIDE_LIST[key[0]][subsidiary as CountryCode]; + }); return list; } @@ -80,18 +81,20 @@ interface GuideLinkProps { } function useGuideUtils() { - try { - const { subsidiary } = useAuthentication(); - const [linkTabs, setLinkTabs] = useState({}); - - useEffect(() => { - setLinkTabs(getGuideListLink({ subsidiary: subsidiary as CountryCode })); - }, [subsidiary]); + const { shell } = useContext(ShellContext); + const { environment } = shell; + const [list, setList] = useState({}); - return linkTabs; - } catch { - // nothing to do - } + useEffect(() => { + const getSubSidiary = async () => { + const env = await environment.getEnvironment(); + const { ovhSubsidiary } = env.getUser(); + const guideList = getGuideListLink({ subsidiary: ovhSubsidiary }); + setList(guideList); + }; + getSubSidiary(); + }, []); + return list as GuideLinkProps; } export default useGuideUtils; diff --git a/packages/manager/core/generator/app/templates/src/global.css b/packages/manager/core/generator/app/templates/src/index.scss similarity index 100% rename from packages/manager/core/generator/app/templates/src/global.css rename to packages/manager/core/generator/app/templates/src/index.scss diff --git a/packages/manager/core/generator/app/templates/src/index.tsx.hbs b/packages/manager/core/generator/app/templates/src/index.tsx.hbs index 1fad23337a96..40157b2a0b9d 100644 --- a/packages/manager/core/generator/app/templates/src/index.tsx.hbs +++ b/packages/manager/core/generator/app/templates/src/index.tsx.hbs @@ -7,7 +7,7 @@ import { } from '@ovh-ux/manager-react-shell-client'; import App from './App'; import '@ovhcloud/ods-theme-blue-jeans/dist/index.css'; -import './global.css'; +import './index.scss'; import './vite-hmr'; import { UNIVERSE, SUB_UNIVERSE, APP_NAME, LEVEL2 } from './tracking.constant'; @@ -28,7 +28,7 @@ const init = async (appName: string) => { context, reloadOnLocaleChange: true, defaultNS: appName, - ns: [`listing`, `dashboard`, `onboarding`], + ns: ['listing', 'dashboard', 'onboarding'], }); const region = context.environment.getRegion(); diff --git a/packages/manager/core/generator/app/templates/src/pages/_app.tsx.hbs b/packages/manager/core/generator/app/templates/src/pages/_app.tsx.hbs deleted file mode 100644 index b72c67fa234f..000000000000 --- a/packages/manager/core/generator/app/templates/src/pages/_app.tsx.hbs +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react'; -import i18next from 'i18next'; -import { useTranslation } from 'react-i18next'; - -export function breadcrumb() { - return i18next.t('{{appName}}:crumb'); -} - -export default function App({ children }: { children: React.ReactNode }) { - useTranslation('{{appName}}'); - - return ( - <>{children} - ); -} diff --git a/packages/manager/core/generator/app/templates/src/routes/routes.constant.ts.hbs b/packages/manager/core/generator/app/templates/src/routes/routes.constant.ts.hbs new file mode 100644 index 000000000000..6047ad80b4a8 --- /dev/null +++ b/packages/manager/core/generator/app/templates/src/routes/routes.constant.ts.hbs @@ -0,0 +1,17 @@ +{{#if this.isPCI }} +export const urls = { + root: '/', + onboarding: 'onboarding', + listing: '', + dashboard: ':serviceName', + tab2: 'tab2', +}; +{{else}} +export const urls = { + root: '/', + onboarding: '/onboarding', + listing: '/', + dashboard: '/:serviceName', + tab2: 'Tab2', +}; +{{/if}} \ No newline at end of file diff --git a/packages/manager/core/generator/app/templates/src/routes.tsx.hbs b/packages/manager/core/generator/app/templates/src/routes/routes.tsx.hbs similarity index 84% rename from packages/manager/core/generator/app/templates/src/routes.tsx.hbs rename to packages/manager/core/generator/app/templates/src/routes/routes.tsx.hbs index 52989831e4bd..07ae1f5ebd4a 100644 --- a/packages/manager/core/generator/app/templates/src/routes.tsx.hbs +++ b/packages/manager/core/generator/app/templates/src/routes/routes.tsx.hbs @@ -1,7 +1,8 @@ import React from 'react'; import { RouteObject } from 'react-router-dom'; -import NotFound from './pages/404'; import { PageType } from '@ovh-ux/manager-react-shell-client'; +import NotFound from '@/pages/404'; +import { urls } from '@/routes/routes.constant'; const lazyRouteConfig = (importFn: CallableFunction): Partial => { return { @@ -11,7 +12,7 @@ const lazyRouteConfig = (importFn: CallableFunction): Partial => { Component: moduleDefault, ...moduleExports, }; - } + }, }; }; @@ -23,7 +24,7 @@ export const Routes: any = [ children: [ { id: 'listing', - path: '', + path: urls.listing, ...lazyRouteConfig(() => import('@/pages/listing')), handle: { tracking: { @@ -33,13 +34,13 @@ export const Routes: any = [ }, }, { - path: ':serviceName', - ...lazyRouteConfig(() => import('@/pages/dashboard/_layout')), + path: urls.dashboard, + ...lazyRouteConfig(() => import('@/pages/dashboard')), children: [ { id: 'dashboard', path: '', - ...lazyRouteConfig(() => import('@/pages/dashboard/index')), + ...lazyRouteConfig(() => import('@/pages/dashboard/general-informations')), handle: { tracking: { pageName: 'dashboard', @@ -50,7 +51,7 @@ export const Routes: any = [ { id: 'tab2', path: 'Tab2', - ...lazyRouteConfig(() => import('@/pages/dashboard/Tab2')), + ...lazyRouteConfig(() => import('@/pages/dashboard/tab2')), handle: { tracking: { pageName: 'tab2', @@ -62,7 +63,7 @@ export const Routes: any = [ }, { id: 'onboarding', - path: 'onboarding', + path: urls.onboarding, ...lazyRouteConfig(() => import('@/pages/onboarding')), handle: { tracking: { @@ -81,12 +82,12 @@ export const Routes: any = [ {{else}} export const Routes: any = [ { - path: '/', + path: urls.root, ...lazyRouteConfig(() => import('@/pages/layout')), children: [ { id: 'listing', - path: '', + path: urls.listing, ...lazyRouteConfig(() => import('@/pages/listing')), handle: { tracking: { @@ -96,8 +97,8 @@ export const Routes: any = [ }, }, { - path: ':serviceName', - ...lazyRouteConfig(() => import('@/pages/dashboard/_layout')), + path: urls.dashboard, + ...lazyRouteConfig(() => import('@/pages/dashboard')), children: [ { id: 'dashboard', @@ -127,7 +128,7 @@ export const Routes: any = [ }, { id: 'onboarding', - path: 'onboarding', + path: urls.onboarding, ...lazyRouteConfig(() => import('@/pages/onboarding')), handle: { tracking: { diff --git a/packages/manager/core/generator/app/templates/src/{{appName}}.config.ts.hbs b/packages/manager/core/generator/app/templates/src/{{appName}}.config.ts.hbs index 1fd23b76f03a..f98a5eba1870 100644 --- a/packages/manager/core/generator/app/templates/src/{{appName}}.config.ts.hbs +++ b/packages/manager/core/generator/app/templates/src/{{appName}}.config.ts.hbs @@ -2,9 +2,9 @@ export default { {{#if this.hasListing}} listing: { datagrid: { - serviceKey: '{{this.serviceKey}}' + serviceKey: '{{this.serviceKey}}', }, }, {{/if}} - rootLabel: '{{appName}}' + rootLabel: '{{appName}}', }; diff --git a/packages/manager/core/generator/app/templates/vite.config.mjs b/packages/manager/core/generator/app/templates/vite.config.mjs index bf30ad93dabe..f33ab6dc98cd 100644 --- a/packages/manager/core/generator/app/templates/vite.config.mjs +++ b/packages/manager/core/generator/app/templates/vite.config.mjs @@ -1,7 +1,8 @@ import { defineConfig } from 'vite'; import { getBaseConfig } from '@ovh-ux/manager-vite-config'; +import { resolve } from 'path'; export default defineConfig({ ...getBaseConfig(), - publicDir: '../public', + root: resolve(process.cwd()), }); diff --git a/packages/manager/core/generator/utils/create-structure-helpers.js b/packages/manager/core/generator/utils/create-structure-helpers.js index a001d40aec66..5bd44e8ac1df 100644 --- a/packages/manager/core/generator/utils/create-structure-helpers.js +++ b/packages/manager/core/generator/utils/create-structure-helpers.js @@ -10,12 +10,13 @@ export const createApiQueryFilesActions = ({ endpoints, apiVersion, appDirectory, + appName, }) => Object.entries(endpoints).map(([method, data]) => ({ type: 'add', path: join( appDirectory, - `../../../apps/{{dashCase appName}}/src/api/${method.toUpperCase()}/api${apiVersion}/services.ts`, + `../../../apps/{{dashCase appName}}/src/data/api/${appName}.ts`, ), templateFile: join( appDirectory, diff --git a/packages/manager/core/shell-client/src/hooks/index.ts b/packages/manager/core/shell-client/src/hooks/index.ts index 071e2c64030b..df2f65abf7cd 100644 --- a/packages/manager/core/shell-client/src/hooks/index.ts +++ b/packages/manager/core/shell-client/src/hooks/index.ts @@ -8,3 +8,4 @@ export * from './useNavigation'; export * from './useUX'; export * from './useShell'; export * from './useEnvironment'; +export * from './useBreadcrumb'; diff --git a/packages/manager/core/shell-client/src/hooks/useBreadcrumb.tsx b/packages/manager/core/shell-client/src/hooks/useBreadcrumb.tsx index 91257345ea66..0dc973ad3717 100644 --- a/packages/manager/core/shell-client/src/hooks/useBreadcrumb.tsx +++ b/packages/manager/core/shell-client/src/hooks/useBreadcrumb.tsx @@ -2,7 +2,7 @@ import { useEffect, useState, useContext } from 'react'; import { useLocation } from 'react-router-dom'; import { ShellContext } from '../ShellContext'; -type BreadcrumbItem = { +export type BreadcrumbItem = { label: string; href?: string; };