diff --git a/apps/nextjs/src/app/[locale]/(main)/apps/_app-delete-button.tsx b/apps/nextjs/src/app/[locale]/manage/apps/_app-delete-button.tsx similarity index 96% rename from apps/nextjs/src/app/[locale]/(main)/apps/_app-delete-button.tsx rename to apps/nextjs/src/app/[locale]/manage/apps/_app-delete-button.tsx index 0d0181891..7f582e8ac 100644 --- a/apps/nextjs/src/app/[locale]/(main)/apps/_app-delete-button.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/_app-delete-button.tsx @@ -37,7 +37,7 @@ export const AppDeleteButton = ({ app }: AppDeleteButtonProps) => { title: t("notification.success.title"), message: t("notification.success.message"), }); - void revalidatePathAction("/apps"); + void revalidatePathAction("/manage/apps"); }, onError: () => { showErrorNotification({ diff --git a/apps/nextjs/src/app/[locale]/(main)/apps/_form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx similarity index 95% rename from apps/nextjs/src/app/[locale]/(main)/apps/_form.tsx rename to apps/nextjs/src/app/[locale]/manage/apps/_form.tsx index 7e897ba30..367092e30 100644 --- a/apps/nextjs/src/app/[locale]/(main)/apps/_form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx @@ -47,7 +47,7 @@ export const AppForm = (props: AppFormProps) => { - @@ -82,7 +82,7 @@ const AppCard = ({ app }: AppCardProps) => { { {t("app.page.list.noResults.title")} - + {t("app.page.list.noResults.description")} diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/_integration-avatar.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/_integration-avatar.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/_integration-avatar.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/_integration-avatar.tsx diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/_integration-buttons.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/_integration-buttons.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/_integration-buttons.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/_integration-buttons.tsx diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/_integration-secret-card.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/_integration-secret-card.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/_integration-secret-card.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/_integration-secret-card.tsx diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/_integration-secret-icons.ts b/apps/nextjs/src/app/[locale]/manage/integrations/_integration-secret-icons.ts similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/_integration-secret-icons.ts rename to apps/nextjs/src/app/[locale]/manage/integrations/_integration-secret-icons.ts diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/_integration-secret-inputs.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/_integration-secret-inputs.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/_integration-secret-inputs.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/_integration-secret-inputs.tsx diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/_integration-test-connection.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/_integration-test-connection.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/_integration-test-connection.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/_integration-test-connection.tsx diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/edit/[id]/_integration-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx similarity index 98% rename from apps/nextjs/src/app/[locale]/(main)/integrations/edit/[id]/_integration-edit-form.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx index 4986a9b16..884d3f51c 100644 --- a/apps/nextjs/src/app/[locale]/(main)/integrations/edit/[id]/_integration-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx @@ -20,6 +20,7 @@ import { useI18n } from "@homarr/translation/client"; import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; +import { revalidatePathAction } from "~/app/revalidatePathAction"; import { SecretCard } from "../../_integration-secret-card"; import { IntegrationSecretInput } from "../../_integration-secret-inputs"; import { @@ -27,7 +28,6 @@ import { TestConnectionNoticeAlert, useTestConnectionDirty, } from "../../_integration-test-connection"; -import { revalidatePathAction } from "../../../../../revalidatePathAction"; interface EditIntegrationForm { integration: RouterOutputs["integration"]["byId"]; diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/edit/[id]/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/page.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/edit/[id]/page.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/page.tsx diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/new/_integration-new-dropdown.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-dropdown.tsx similarity index 85% rename from apps/nextjs/src/app/[locale]/(main)/integrations/new/_integration-new-dropdown.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-dropdown.tsx index 4d278a70e..221b5dad7 100644 --- a/apps/nextjs/src/app/[locale]/(main)/integrations/new/_integration-new-dropdown.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-dropdown.tsx @@ -1,6 +1,6 @@ "use client"; -import { useMemo, useState } from "react"; +import React, { ChangeEvent, useMemo, useState } from "react"; import Link from "next/link"; import { Group, Menu, ScrollArea, Stack, Text, TextInput } from "@mantine/core"; import { IconSearch } from "@tabler/icons-react"; @@ -20,13 +20,18 @@ export const IntegrationCreateDropdownContent = () => { ); }, [search]); + const handleSearch = React.useCallback( + (event: ChangeEvent) => setSearch(event.target.value), + [setSearch], + ); + return ( } placeholder={t("integration.page.list.search")} value={search} - onChange={(event) => setSearch(event.target.value)} + onChange={handleSearch} /> {filteredKinds.length > 0 ? ( diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/new/_integration-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/new/_integration-new-form.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/new/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/new/page.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx diff --git a/apps/nextjs/src/app/[locale]/(main)/integrations/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/(main)/integrations/page.tsx rename to apps/nextjs/src/app/[locale]/manage/integrations/page.tsx diff --git a/apps/nextjs/src/app/[locale]/manage/layout.tsx b/apps/nextjs/src/app/[locale]/manage/layout.tsx index cbda3cf72..ce95f27f9 100644 --- a/apps/nextjs/src/app/[locale]/manage/layout.tsx +++ b/apps/nextjs/src/app/[locale]/manage/layout.tsx @@ -2,6 +2,7 @@ import type { PropsWithChildren } from "react"; import { AppShellMain } from "@mantine/core"; import { IconBook2, + IconBox, IconBrandDiscord, IconBrandDocker, IconBrandGithub, @@ -11,6 +12,7 @@ import { IconLayoutDashboard, IconLogs, IconMailForward, + IconPlug, IconQuestionMark, IconTool, IconUser, @@ -38,6 +40,16 @@ export default async function ManageLayout({ children }: PropsWithChildren) { href: "/manage/boards", label: t("items.boards"), }, + { + icon: IconBox, + href: "/manage/apps", + label: t("items.apps"), + }, + { + icon: IconPlug, + href: "/manage/integrations", + label: t("items.integrations"), + }, { icon: IconUser, label: t("items.users.label"), diff --git a/packages/translation/src/lang/en.ts b/packages/translation/src/lang/en.ts index 52269b0d2..338e07f8c 100644 --- a/packages/translation/src/lang/en.ts +++ b/packages/translation/src/lang/en.ts @@ -961,6 +961,8 @@ export default { items: { home: "Home", boards: "Boards", + apps: "Apps", + integrations: "Integrations", users: { label: "Users", items: {