fix: nextjs is slow dev server (#364)
* fix: nextjs slow compile time * fix: change optimized package imports and transpile packages * fix: format issue
This commit is contained in:
@@ -6,17 +6,6 @@ import "@homarr/auth/env.mjs";
|
|||||||
const config = {
|
const config = {
|
||||||
output: "standalone",
|
output: "standalone",
|
||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
/** Enables hot reloading for local packages without a build step */
|
|
||||||
transpilePackages: [
|
|
||||||
"@homarr/api",
|
|
||||||
"@homarr/auth",
|
|
||||||
"@homarr/db",
|
|
||||||
"@homarr/ui",
|
|
||||||
"@homarr/validation",
|
|
||||||
"@homarr/form",
|
|
||||||
"@homarr/notifications",
|
|
||||||
"@homarr/spotlight",
|
|
||||||
],
|
|
||||||
/** We already do linting and typechecking as separate tasks in CI */
|
/** We already do linting and typechecking as separate tasks in CI */
|
||||||
eslint: { ignoreDuringBuilds: true },
|
eslint: { ignoreDuringBuilds: true },
|
||||||
typescript: { ignoreBuildErrors: true },
|
typescript: { ignoreBuildErrors: true },
|
||||||
@@ -24,12 +13,16 @@ const config = {
|
|||||||
optimizePackageImports: [
|
optimizePackageImports: [
|
||||||
"@mantine/core",
|
"@mantine/core",
|
||||||
"@mantine/hooks",
|
"@mantine/hooks",
|
||||||
"@mantine/dates",
|
"@tabler/icons-react",
|
||||||
"@mantine/notifications",
|
|
||||||
"@mantine/form",
|
|
||||||
"@mantine/spotlight",
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
transpilePackages: [
|
||||||
|
"@homarr/ui",
|
||||||
|
"@homarr/notifications",
|
||||||
|
"@homarr/modals",
|
||||||
|
"@homarr/spotlight",
|
||||||
|
"@homarr/widgets",
|
||||||
|
],
|
||||||
images: {
|
images: {
|
||||||
domains: ["cdn.jsdelivr.net"],
|
domains: ["cdn.jsdelivr.net"],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
|
import { ActionIcon } from "@mantine/core";
|
||||||
|
import { IconTrash } from "@tabler/icons-react";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
@@ -10,7 +12,6 @@ import {
|
|||||||
showSuccessNotification,
|
showSuccessNotification,
|
||||||
} from "@homarr/notifications";
|
} from "@homarr/notifications";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { ActionIcon, IconTrash } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { revalidatePathAction } from "../../../revalidatePathAction";
|
import { revalidatePathAction } from "../../../revalidatePathAction";
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { Button, Group, Stack, Textarea, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import { useForm, zodResolver } from "@homarr/form";
|
import { useForm, zodResolver } from "@homarr/form";
|
||||||
import type { TranslationFunction } from "@homarr/translation";
|
import type { TranslationFunction } from "@homarr/translation";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, Group, Stack, Textarea, TextInput } from "@homarr/ui";
|
|
||||||
import type { z } from "@homarr/validation";
|
import type { z } from "@homarr/validation";
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
import { Container, Stack, Title } from "@mantine/core";
|
||||||
|
|
||||||
import { api } from "@homarr/api/server";
|
import { api } from "@homarr/api/server";
|
||||||
import { getI18n } from "@homarr/translation/server";
|
import { getI18n } from "@homarr/translation/server";
|
||||||
import { Container, Stack, Title } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { AppEditForm } from "./_app-edit-form";
|
import { AppEditForm } from "./_app-edit-form";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Container, Stack, Title } from "@homarr/ui";
|
import { Container, Stack, Title } from "@mantine/core";
|
||||||
|
|
||||||
import { AppNewForm } from "./_app-new-form";
|
import { AppNewForm } from "./_app-new-form";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
|
||||||
import { api } from "@homarr/api/server";
|
|
||||||
import { getI18n } from "@homarr/translation/server";
|
|
||||||
import {
|
import {
|
||||||
ActionIcon,
|
ActionIcon,
|
||||||
ActionIconGroup,
|
ActionIconGroup,
|
||||||
@@ -12,12 +8,15 @@ import {
|
|||||||
Card,
|
Card,
|
||||||
Container,
|
Container,
|
||||||
Group,
|
Group,
|
||||||
IconApps,
|
|
||||||
IconPencil,
|
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { IconApps, IconPencil } from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
|
import { api } from "@homarr/api/server";
|
||||||
|
import { getI18n } from "@homarr/translation/server";
|
||||||
|
|
||||||
import { AppDeleteButton } from "./_app-delete-button";
|
import { AppDeleteButton } from "./_app-delete-button";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
import { Avatar } from "@mantine/core";
|
||||||
|
import type { MantineSize } from "@mantine/core";
|
||||||
|
|
||||||
import { getIconUrl } from "@homarr/definitions";
|
import { getIconUrl } from "@homarr/definitions";
|
||||||
import type { IntegrationKind } from "@homarr/definitions";
|
import type { IntegrationKind } from "@homarr/definitions";
|
||||||
import { Avatar } from "@homarr/ui";
|
|
||||||
import type { MantineSize } from "@homarr/ui";
|
|
||||||
|
|
||||||
interface IntegrationAvatarProps {
|
interface IntegrationAvatarProps {
|
||||||
size: MantineSize;
|
size: MantineSize;
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import { ActionIcon } from "@mantine/core";
|
||||||
|
import { IconTrash } from "@tabler/icons-react";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useConfirmModal } from "@homarr/modals";
|
import { useConfirmModal } from "@homarr/modals";
|
||||||
@@ -9,7 +11,6 @@ import {
|
|||||||
showSuccessNotification,
|
showSuccessNotification,
|
||||||
} from "@homarr/notifications";
|
} from "@homarr/notifications";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { ActionIcon, IconTrash } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { revalidatePathAction } from "../../../revalidatePathAction";
|
import { revalidatePathAction } from "../../../revalidatePathAction";
|
||||||
|
|
||||||
|
|||||||
@@ -2,13 +2,6 @@
|
|||||||
|
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { useParams } from "next/navigation";
|
import { useParams } from "next/navigation";
|
||||||
import { useDisclosure } from "@mantine/hooks";
|
|
||||||
import dayjs from "dayjs";
|
|
||||||
import relativeTime from "dayjs/plugin/relativeTime";
|
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
|
||||||
import { integrationSecretKindObject } from "@homarr/definitions";
|
|
||||||
import { useI18n } from "@homarr/translation/client";
|
|
||||||
import {
|
import {
|
||||||
ActionIcon,
|
ActionIcon,
|
||||||
Avatar,
|
Avatar,
|
||||||
@@ -16,12 +9,18 @@ import {
|
|||||||
Card,
|
Card,
|
||||||
Collapse,
|
Collapse,
|
||||||
Group,
|
Group,
|
||||||
IconEye,
|
|
||||||
IconEyeOff,
|
|
||||||
Kbd,
|
Kbd,
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { useDisclosure } from "@mantine/hooks";
|
||||||
|
import { IconEye, IconEyeOff } from "@tabler/icons-react";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import relativeTime from "dayjs/plugin/relativeTime";
|
||||||
|
|
||||||
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
|
import { integrationSecretKindObject } from "@homarr/definitions";
|
||||||
|
import { useI18n } from "@homarr/translation/client";
|
||||||
|
|
||||||
import { integrationSecretIcons } from "./_integration-secret-icons";
|
import { integrationSecretIcons } from "./_integration-secret-icons";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
import { IconKey, IconPassword, IconUser } from "@tabler/icons-react";
|
||||||
|
|
||||||
import type { IntegrationSecretKind } from "@homarr/definitions";
|
import type { IntegrationSecretKind } from "@homarr/definitions";
|
||||||
import type { TablerIcon } from "@homarr/ui";
|
import type { TablerIcon } from "@homarr/ui";
|
||||||
import { IconKey, IconPassword, IconUser } from "@homarr/ui";
|
|
||||||
|
|
||||||
export const integrationSecretIcons = {
|
export const integrationSecretIcons = {
|
||||||
username: IconUser,
|
username: IconUser,
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import type { ChangeEventHandler, FocusEventHandler } from "react";
|
import type { ChangeEventHandler, FocusEventHandler } from "react";
|
||||||
|
import { PasswordInput, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import { integrationSecretKindObject } from "@homarr/definitions";
|
import { integrationSecretKindObject } from "@homarr/definitions";
|
||||||
import type { IntegrationSecretKind } from "@homarr/definitions";
|
import type { IntegrationSecretKind } from "@homarr/definitions";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { PasswordInput, TextInput } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { integrationSecretIcons } from "./_integration-secret-icons";
|
import { integrationSecretIcons } from "./_integration-secret-icons";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useRef, useState } from "react";
|
import { useRef, useState } from "react";
|
||||||
|
import { Alert, Anchor, Group, Loader } from "@mantine/core";
|
||||||
|
import { IconCheck, IconInfoCircle, IconX } from "@tabler/icons-react";
|
||||||
|
|
||||||
import type { RouterInputs } from "@homarr/api";
|
import type { RouterInputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
@@ -9,15 +11,6 @@ import {
|
|||||||
showSuccessNotification,
|
showSuccessNotification,
|
||||||
} from "@homarr/notifications";
|
} from "@homarr/notifications";
|
||||||
import { useI18n, useScopedI18n } from "@homarr/translation/client";
|
import { useI18n, useScopedI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
Alert,
|
|
||||||
Anchor,
|
|
||||||
Group,
|
|
||||||
IconCheck,
|
|
||||||
IconInfoCircle,
|
|
||||||
IconX,
|
|
||||||
Loader,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
|
|
||||||
interface UseTestConnectionDirtyProps {
|
interface UseTestConnectionDirtyProps {
|
||||||
defaultDirty: boolean;
|
defaultDirty: boolean;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import { Button, Fieldset, Group, Stack, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
@@ -16,7 +17,6 @@ import {
|
|||||||
showSuccessNotification,
|
showSuccessNotification,
|
||||||
} from "@homarr/notifications";
|
} from "@homarr/notifications";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, Fieldset, Group, Stack, TextInput } from "@homarr/ui";
|
|
||||||
import type { z } from "@homarr/validation";
|
import type { z } from "@homarr/validation";
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
import { Container, Group, Stack, Title } from "@mantine/core";
|
||||||
|
|
||||||
import { api } from "@homarr/api/server";
|
import { api } from "@homarr/api/server";
|
||||||
import { getIntegrationName } from "@homarr/definitions";
|
import { getIntegrationName } from "@homarr/definitions";
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
import { Container, Group, Stack, Title } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { IntegrationAvatar } from "../../_integration-avatar";
|
import { IntegrationAvatar } from "../../_integration-avatar";
|
||||||
import { EditIntegrationForm } from "./_integration-edit-form";
|
import { EditIntegrationForm } from "./_integration-edit-form";
|
||||||
|
|||||||
@@ -2,18 +2,11 @@
|
|||||||
|
|
||||||
import { useMemo, useState } from "react";
|
import { useMemo, useState } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { Group, Menu, ScrollArea, Stack, Text, TextInput } from "@mantine/core";
|
||||||
|
import { IconSearch } from "@tabler/icons-react";
|
||||||
|
|
||||||
import { getIntegrationName, integrationKinds } from "@homarr/definitions";
|
import { getIntegrationName, integrationKinds } from "@homarr/definitions";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
Group,
|
|
||||||
IconSearch,
|
|
||||||
Menu,
|
|
||||||
ScrollArea,
|
|
||||||
Stack,
|
|
||||||
Text,
|
|
||||||
TextInput,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
|
|
||||||
import { IntegrationAvatar } from "../_integration-avatar";
|
import { IntegrationAvatar } from "../_integration-avatar";
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import {
|
||||||
|
Button,
|
||||||
|
Fieldset,
|
||||||
|
Group,
|
||||||
|
SegmentedControl,
|
||||||
|
Stack,
|
||||||
|
TextInput,
|
||||||
|
} from "@mantine/core";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import type {
|
import type {
|
||||||
@@ -17,14 +25,6 @@ import {
|
|||||||
showSuccessNotification,
|
showSuccessNotification,
|
||||||
} from "@homarr/notifications";
|
} from "@homarr/notifications";
|
||||||
import { useI18n, useScopedI18n } from "@homarr/translation/client";
|
import { useI18n, useScopedI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
Button,
|
|
||||||
Fieldset,
|
|
||||||
Group,
|
|
||||||
SegmentedControl,
|
|
||||||
Stack,
|
|
||||||
TextInput,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
import type { z } from "@homarr/validation";
|
import type { z } from "@homarr/validation";
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
|
import { Container, Group, Stack, Title } from "@mantine/core";
|
||||||
|
|
||||||
import type { IntegrationKind } from "@homarr/definitions";
|
import type { IntegrationKind } from "@homarr/definitions";
|
||||||
import { getIntegrationName, integrationKinds } from "@homarr/definitions";
|
import { getIntegrationName, integrationKinds } from "@homarr/definitions";
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
import { Container, Group, Stack, Title } from "@homarr/ui";
|
|
||||||
import type { validation } from "@homarr/validation";
|
import type { validation } from "@homarr/validation";
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
|
||||||
import { api } from "@homarr/api/server";
|
|
||||||
import { objectEntries } from "@homarr/common";
|
|
||||||
import type { IntegrationKind } from "@homarr/definitions";
|
|
||||||
import { getIntegrationName } from "@homarr/definitions";
|
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
|
||||||
import {
|
import {
|
||||||
AccordionControl,
|
AccordionControl,
|
||||||
AccordionItem,
|
AccordionItem,
|
||||||
@@ -15,10 +8,7 @@ import {
|
|||||||
Anchor,
|
Anchor,
|
||||||
Button,
|
Button,
|
||||||
Container,
|
Container,
|
||||||
CountBadge,
|
|
||||||
Group,
|
Group,
|
||||||
IconChevronDown,
|
|
||||||
IconPencil,
|
|
||||||
Menu,
|
Menu,
|
||||||
MenuDropdown,
|
MenuDropdown,
|
||||||
MenuTarget,
|
MenuTarget,
|
||||||
@@ -31,7 +21,16 @@ import {
|
|||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { IconChevronDown, IconPencil } from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
|
import { api } from "@homarr/api/server";
|
||||||
|
import { objectEntries } from "@homarr/common";
|
||||||
|
import type { IntegrationKind } from "@homarr/definitions";
|
||||||
|
import { getIntegrationName } from "@homarr/definitions";
|
||||||
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
|
import { CountBadge } from "@homarr/ui";
|
||||||
|
|
||||||
import { ActiveTabAccordion } from "../../../../components/active-tab-accordion";
|
import { ActiveTabAccordion } from "../../../../components/active-tab-accordion";
|
||||||
import { IntegrationAvatar } from "./_integration-avatar";
|
import { IntegrationAvatar } from "./_integration-avatar";
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import type { PropsWithChildren } from "react";
|
import type { PropsWithChildren } from "react";
|
||||||
|
import { AppShellMain } from "@mantine/core";
|
||||||
import { AppShellMain } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { MainHeader } from "~/components/layout/header";
|
import { MainHeader } from "~/components/layout/header";
|
||||||
import { ClientShell } from "~/components/layout/shell";
|
import { ClientShell } from "~/components/layout/shell";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Stack, Title } from "@homarr/ui";
|
import { Stack, Title } from "@mantine/core";
|
||||||
|
|
||||||
export default function HomePage() {
|
export default function HomePage() {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
|
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
|
||||||
import { signIn } from "@homarr/auth/client";
|
|
||||||
import { useForm, zodResolver } from "@homarr/form";
|
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
|
||||||
import {
|
import {
|
||||||
Alert,
|
Alert,
|
||||||
Button,
|
Button,
|
||||||
IconAlertTriangle,
|
|
||||||
PasswordInput,
|
PasswordInput,
|
||||||
rem,
|
rem,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { IconAlertTriangle } from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import { signIn } from "@homarr/auth/client";
|
||||||
|
import { useForm, zodResolver } from "@homarr/form";
|
||||||
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import type { z } from "@homarr/validation";
|
import type { z } from "@homarr/validation";
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
import { Card, Center, Stack, Text, Title } from "@mantine/core";
|
||||||
|
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
import { Card, Center, Stack, Text, Title } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo";
|
import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo";
|
||||||
import { LoginForm } from "./_login-form";
|
import { LoginForm } from "./_login-form";
|
||||||
|
|||||||
@@ -1,6 +1,17 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
|
import { Group, Menu } from "@mantine/core";
|
||||||
|
import {
|
||||||
|
IconBox,
|
||||||
|
IconBoxAlignTop,
|
||||||
|
IconChevronDown,
|
||||||
|
IconPackageImport,
|
||||||
|
IconPencil,
|
||||||
|
IconPencilOff,
|
||||||
|
IconPlus,
|
||||||
|
IconSettings,
|
||||||
|
} from "@tabler/icons-react";
|
||||||
import { useAtom, useAtomValue } from "jotai";
|
import { useAtom, useAtomValue } from "jotai";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
@@ -10,18 +21,6 @@ import {
|
|||||||
showSuccessNotification,
|
showSuccessNotification,
|
||||||
} from "@homarr/notifications";
|
} from "@homarr/notifications";
|
||||||
import { useI18n, useScopedI18n } from "@homarr/translation/client";
|
import { useI18n, useScopedI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
Group,
|
|
||||||
IconBox,
|
|
||||||
IconBoxAlignTop,
|
|
||||||
IconChevronDown,
|
|
||||||
IconPackageImport,
|
|
||||||
IconPencil,
|
|
||||||
IconPencilOff,
|
|
||||||
IconPlus,
|
|
||||||
IconSettings,
|
|
||||||
Menu,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
|
|
||||||
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
||||||
import { editModeAtom } from "~/components/board/editMode";
|
import { editModeAtom } from "~/components/board/editMode";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { IconLayoutBoard } from "@homarr/ui";
|
import { IconLayoutBoard } from "@tabler/icons-react";
|
||||||
|
|
||||||
import { HeaderButton } from "~/components/layout/header/button";
|
import { HeaderButton } from "~/components/layout/header/button";
|
||||||
import { useRequiredBoard } from "../../../_context";
|
import { useRequiredBoard } from "../../../_context";
|
||||||
|
|||||||
@@ -1,24 +1,11 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
|
import type { SelectProps } from "@mantine/core";
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
|
||||||
import type { BoardPermission } from "@homarr/definitions";
|
|
||||||
import { boardPermissions } from "@homarr/definitions";
|
|
||||||
import { useForm } from "@homarr/form";
|
|
||||||
import { createModal, useModalAction } from "@homarr/modals";
|
|
||||||
import { useI18n } from "@homarr/translation/client";
|
|
||||||
import type { SelectProps, TablerIcon } from "@homarr/ui";
|
|
||||||
import {
|
import {
|
||||||
Button,
|
Button,
|
||||||
Flex,
|
Flex,
|
||||||
Group,
|
Group,
|
||||||
IconCheck,
|
|
||||||
IconEye,
|
|
||||||
IconPencil,
|
|
||||||
IconPlus,
|
|
||||||
IconSettings,
|
|
||||||
Select,
|
Select,
|
||||||
Stack,
|
Stack,
|
||||||
Table,
|
Table,
|
||||||
@@ -28,7 +15,23 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import {
|
||||||
|
IconCheck,
|
||||||
|
IconEye,
|
||||||
|
IconPencil,
|
||||||
|
IconPlus,
|
||||||
|
IconSettings,
|
||||||
|
} from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
|
import { clientApi } from "@homarr/api/client";
|
||||||
|
import type { BoardPermission } from "@homarr/definitions";
|
||||||
|
import { boardPermissions } from "@homarr/definitions";
|
||||||
|
import { useForm } from "@homarr/form";
|
||||||
|
import { createModal, useModalAction } from "@homarr/modals";
|
||||||
|
import { useI18n } from "@homarr/translation/client";
|
||||||
|
import type { TablerIcon } from "@homarr/ui";
|
||||||
|
|
||||||
import type { Board } from "../../_types";
|
import type { Board } from "../../_types";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import { Button, Grid, Group, Stack, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
backgroundImageAttachments,
|
backgroundImageAttachments,
|
||||||
backgroundImageRepeats,
|
backgroundImageRepeats,
|
||||||
@@ -8,14 +10,9 @@ import {
|
|||||||
import { useForm } from "@homarr/form";
|
import { useForm } from "@homarr/form";
|
||||||
import type { TranslationObject } from "@homarr/translation";
|
import type { TranslationObject } from "@homarr/translation";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import type { SelectItemWithDescriptionBadge } from "@homarr/ui";
|
|
||||||
import {
|
import {
|
||||||
Button,
|
SelectItemWithDescriptionBadge,
|
||||||
Grid,
|
|
||||||
Group,
|
|
||||||
SelectWithDescriptionBadge,
|
SelectWithDescriptionBadge,
|
||||||
Stack,
|
|
||||||
TextInput,
|
|
||||||
} from "@homarr/ui";
|
} from "@homarr/ui";
|
||||||
|
|
||||||
import type { Board } from "../../_types";
|
import type { Board } from "../../_types";
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useDisclosure } from "@mantine/hooks";
|
|
||||||
|
|
||||||
import { useForm } from "@homarr/form";
|
|
||||||
import { useI18n } from "@homarr/translation/client";
|
|
||||||
import {
|
import {
|
||||||
Anchor,
|
Anchor,
|
||||||
Button,
|
Button,
|
||||||
@@ -18,7 +14,11 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
useMantineTheme,
|
useMantineTheme,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { useDisclosure } from "@mantine/hooks";
|
||||||
|
|
||||||
|
import { useForm } from "@homarr/form";
|
||||||
|
import { useI18n } from "@homarr/translation/client";
|
||||||
|
|
||||||
import { generateColors } from "../../_theme";
|
import { generateColors } from "../../_theme";
|
||||||
import type { Board } from "../../_types";
|
import type { Board } from "../../_types";
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import { Button, Divider, Group, Stack, Text } from "@mantine/core";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useConfirmModal, useModalAction } from "@homarr/modals";
|
import { useConfirmModal, useModalAction } from "@homarr/modals";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { Button, Divider, Group, Stack, Text } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { BoardRenameModal } from "~/components/board/modals/board-rename-modal";
|
import { BoardRenameModal } from "~/components/board/modals/board-rename-modal";
|
||||||
import { useRequiredBoard } from "../../_context";
|
import { useRequiredBoard } from "../../_context";
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useEffect, useRef } from "react";
|
import { useEffect, useRef } from "react";
|
||||||
|
import {
|
||||||
|
Button,
|
||||||
|
Grid,
|
||||||
|
Group,
|
||||||
|
Loader,
|
||||||
|
Stack,
|
||||||
|
TextInput,
|
||||||
|
Tooltip,
|
||||||
|
} from "@mantine/core";
|
||||||
import {
|
import {
|
||||||
useDebouncedValue,
|
useDebouncedValue,
|
||||||
useDocumentTitle,
|
useDocumentTitle,
|
||||||
useFavicon,
|
useFavicon,
|
||||||
} from "@mantine/hooks";
|
} from "@mantine/hooks";
|
||||||
|
import { IconAlertTriangle } from "@tabler/icons-react";
|
||||||
|
|
||||||
import { useForm } from "@homarr/form";
|
import { useForm } from "@homarr/form";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
Button,
|
|
||||||
Grid,
|
|
||||||
Group,
|
|
||||||
IconAlertTriangle,
|
|
||||||
Loader,
|
|
||||||
Stack,
|
|
||||||
TextInput,
|
|
||||||
Tooltip,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
|
|
||||||
import { useUpdateBoard } from "../../_client";
|
import { useUpdateBoard } from "../../_client";
|
||||||
import type { Board } from "../../_types";
|
import type { Board } from "../../_types";
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import { Button, Grid, Group, Input, Slider, Stack } from "@mantine/core";
|
||||||
|
|
||||||
import { useForm } from "@homarr/form";
|
import { useForm } from "@homarr/form";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, Grid, Group, Input, Slider, Stack } from "@homarr/ui";
|
|
||||||
|
|
||||||
import type { Board } from "../../_types";
|
import type { Board } from "../../_types";
|
||||||
import { useSavePartialSettingsMutation } from "./_shared";
|
import { useSavePartialSettingsMutation } from "./_shared";
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
import type { PropsWithChildren } from "react";
|
import type { PropsWithChildren } from "react";
|
||||||
|
|
||||||
import { api } from "@homarr/api/server";
|
|
||||||
import { capitalize } from "@homarr/common";
|
|
||||||
import type { TranslationObject } from "@homarr/translation";
|
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
|
||||||
import type { TablerIcon } from "@homarr/ui";
|
|
||||||
import {
|
import {
|
||||||
AccordionControl,
|
AccordionControl,
|
||||||
AccordionItem,
|
AccordionItem,
|
||||||
AccordionPanel,
|
AccordionPanel,
|
||||||
Container,
|
Container,
|
||||||
|
Stack,
|
||||||
|
Text,
|
||||||
|
Title,
|
||||||
|
} from "@mantine/core";
|
||||||
|
import {
|
||||||
IconAlertTriangle,
|
IconAlertTriangle,
|
||||||
IconBrush,
|
IconBrush,
|
||||||
IconFileTypeCss,
|
IconFileTypeCss,
|
||||||
@@ -17,10 +16,13 @@ import {
|
|||||||
IconPhoto,
|
IconPhoto,
|
||||||
IconSettings,
|
IconSettings,
|
||||||
IconUser,
|
IconUser,
|
||||||
Stack,
|
} from "@tabler/icons-react";
|
||||||
Text,
|
|
||||||
Title,
|
import { api } from "@homarr/api/server";
|
||||||
} from "@homarr/ui";
|
import { capitalize } from "@homarr/common";
|
||||||
|
import type { TranslationObject } from "@homarr/translation";
|
||||||
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
|
import type { TablerIcon } from "@homarr/ui";
|
||||||
|
|
||||||
import { ActiveTabAccordion } from "../../../../../components/active-tab-accordion";
|
import { ActiveTabAccordion } from "../../../../../components/active-tab-accordion";
|
||||||
import { AccessSettingsContent } from "./_access";
|
import { AccessSettingsContent } from "./_access";
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback, useRef } from "react";
|
import { useCallback, useRef } from "react";
|
||||||
|
import { Box, LoadingOverlay, Stack } from "@mantine/core";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { Box, LoadingOverlay, Stack } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { BoardCategorySection } from "~/components/board/sections/category-section";
|
import { BoardCategorySection } from "~/components/board/sections/category-section";
|
||||||
import { BoardEmptySection } from "~/components/board/sections/empty-section";
|
import { BoardEmptySection } from "~/components/board/sections/empty-section";
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import type { PropsWithChildren, ReactNode } from "react";
|
import type { PropsWithChildren, ReactNode } from "react";
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
|
import { AppShellMain } from "@mantine/core";
|
||||||
|
|
||||||
import { capitalize } from "@homarr/common";
|
import { capitalize } from "@homarr/common";
|
||||||
import { AppShellMain } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { MainHeader } from "~/components/layout/header";
|
import { MainHeader } from "~/components/layout/header";
|
||||||
import { BoardLogoWithTitle } from "~/components/layout/logo/board-logo";
|
import { BoardLogoWithTitle } from "~/components/layout/logo/board-logo";
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import type { PropsWithChildren } from "react";
|
import type { PropsWithChildren } from "react";
|
||||||
|
import type { MantineColorsTuple } from "@mantine/core";
|
||||||
import type { MantineColorsTuple } from "@homarr/ui";
|
import { createTheme, darken, lighten, MantineProvider } from "@mantine/core";
|
||||||
import { createTheme, darken, lighten, MantineProvider } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { useRequiredBoard } from "./_context";
|
import { useRequiredBoard } from "./_context";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import { Button, PasswordInput, Stack, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useForm, zodResolver } from "@homarr/form";
|
import { useForm, zodResolver } from "@homarr/form";
|
||||||
@@ -9,7 +10,6 @@ import {
|
|||||||
showSuccessNotification,
|
showSuccessNotification,
|
||||||
} from "@homarr/notifications";
|
} from "@homarr/notifications";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { Button, PasswordInput, Stack, TextInput } from "@homarr/ui";
|
|
||||||
import type { z } from "@homarr/validation";
|
import type { z } from "@homarr/validation";
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
|
import { Card, Center, Stack, Text, Title } from "@mantine/core";
|
||||||
|
|
||||||
import { db } from "@homarr/db";
|
import { db } from "@homarr/db";
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
import { Card, Center, Stack, Text, Title } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo";
|
import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo";
|
||||||
import { InitUserForm } from "./_init-user-form";
|
import { InitUserForm } from "./_init-user-form";
|
||||||
|
|||||||
@@ -3,12 +3,13 @@ import { Inter } from "next/font/google";
|
|||||||
|
|
||||||
import "@homarr/notifications/styles.css";
|
import "@homarr/notifications/styles.css";
|
||||||
import "@homarr/spotlight/styles.css";
|
import "@homarr/spotlight/styles.css";
|
||||||
import "@homarr/ui/styles.css";
|
import "@mantine/core/styles.css";
|
||||||
|
|
||||||
|
import { ColorSchemeScript, createTheme, MantineProvider } from "@mantine/core";
|
||||||
|
|
||||||
import { auth } from "@homarr/auth";
|
import { auth } from "@homarr/auth";
|
||||||
import { ModalProvider } from "@homarr/modals";
|
import { ModalProvider } from "@homarr/modals";
|
||||||
import { Notifications } from "@homarr/notifications";
|
import { Notifications } from "@homarr/notifications";
|
||||||
import { ColorSchemeScript, createTheme, MantineProvider } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { JotaiProvider } from "./_client-providers/jotai";
|
import { JotaiProvider } from "./_client-providers/jotai";
|
||||||
import { NextInternationalProvider } from "./_client-providers/next-international";
|
import { NextInternationalProvider } from "./_client-providers/next-international";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Center, Loader } from "@homarr/ui";
|
import { Center, Loader } from "@mantine/core";
|
||||||
|
|
||||||
export default function CommonLoading() {
|
export default function CommonLoading() {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
import { Center, Stack, Text, Title } from "@mantine/core";
|
||||||
|
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
import { Center, Stack, Text, Title } from "@homarr/ui";
|
|
||||||
|
|
||||||
export default async function NotFound() {
|
export default async function NotFound() {
|
||||||
const t = await getScopedI18n("management.notFound");
|
const t = await getScopedI18n("management.notFound");
|
||||||
|
|||||||
@@ -2,12 +2,13 @@
|
|||||||
|
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { Menu } from "@mantine/core";
|
||||||
|
import { IconSettings, IconTrash } from "@tabler/icons-react";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useConfirmModal } from "@homarr/modals";
|
import { useConfirmModal } from "@homarr/modals";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { IconSettings, IconTrash, Menu } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
|
import { Button } from "@mantine/core";
|
||||||
|
import { IconCategoryPlus } from "@tabler/icons-react";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useModalAction } from "@homarr/modals";
|
import { useModalAction } from "@homarr/modals";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, IconCategoryPlus } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
||||||
import { AddBoardModal } from "~/components/manage/boards/add-board-modal";
|
import { AddBoardModal } from "~/components/manage/boards/add-board-modal";
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
|
||||||
import { api } from "@homarr/api/server";
|
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
|
||||||
import {
|
import {
|
||||||
ActionIcon,
|
ActionIcon,
|
||||||
Button,
|
Button,
|
||||||
@@ -11,15 +7,17 @@ import {
|
|||||||
Grid,
|
Grid,
|
||||||
GridCol,
|
GridCol,
|
||||||
Group,
|
Group,
|
||||||
IconDotsVertical,
|
|
||||||
IconLock,
|
|
||||||
IconWorld,
|
|
||||||
Menu,
|
Menu,
|
||||||
MenuTarget,
|
MenuTarget,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { IconDotsVertical, IconLock, IconWorld } from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
|
import { api } from "@homarr/api/server";
|
||||||
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
|
|
||||||
import { BoardCardMenuDropdown } from "./_components/board-card-menu-dropdown";
|
import { BoardCardMenuDropdown } from "./_components/board-card-menu-dropdown";
|
||||||
import { CreateBoardButton } from "./_components/create-board-button";
|
import { CreateBoardButton } from "./_components/create-board-button";
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import type { PropsWithChildren } from "react";
|
import type { PropsWithChildren } from "react";
|
||||||
|
import { AppShellMain } from "@mantine/core";
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
|
||||||
import {
|
import {
|
||||||
AppShellMain,
|
|
||||||
IconBook2,
|
IconBook2,
|
||||||
IconBrandDiscord,
|
IconBrandDiscord,
|
||||||
IconBrandDocker,
|
IconBrandDocker,
|
||||||
@@ -17,7 +15,9 @@ import {
|
|||||||
IconTool,
|
IconTool,
|
||||||
IconUser,
|
IconUser,
|
||||||
IconUsers,
|
IconUsers,
|
||||||
} from "@homarr/ui";
|
} from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
|
|
||||||
import { MainHeader } from "~/components/layout/header";
|
import { MainHeader } from "~/components/layout/header";
|
||||||
import type { NavigationLink } from "~/components/layout/navigation";
|
import type { NavigationLink } from "~/components/layout/navigation";
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
import { Title } from "@mantine/core";
|
||||||
|
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
import { Title } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { Test } from "./test";
|
import { Test } from "./test";
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
import { useCallback, useState } from "react";
|
import { useCallback, useState } from "react";
|
||||||
import type { ChangeEvent } from "react";
|
import type { ChangeEvent } from "react";
|
||||||
|
import { Button, Stack, Text, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { Button, Stack, Text, TextInput } from "@homarr/ui";
|
|
||||||
|
|
||||||
export const Test = () => {
|
export const Test = () => {
|
||||||
const [value, setValue] = useState("");
|
const [value, setValue] = useState("");
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
import { Box } from "@mantine/core";
|
||||||
|
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
import { Box } from "@homarr/ui";
|
|
||||||
|
|
||||||
import "@xterm/xterm/css/xterm.css";
|
import "@xterm/xterm/css/xterm.css";
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useEffect, useRef } from "react";
|
import { useEffect, useRef } from "react";
|
||||||
|
import { Box } from "@mantine/core";
|
||||||
import { CanvasAddon } from "@xterm/addon-canvas";
|
import { CanvasAddon } from "@xterm/addon-canvas";
|
||||||
import { FitAddon } from "@xterm/addon-fit";
|
import { FitAddon } from "@xterm/addon-fit";
|
||||||
import { Terminal } from "@xterm/xterm";
|
import { Terminal } from "@xterm/xterm";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { Box } from "@homarr/ui";
|
|
||||||
|
|
||||||
import classes from "./terminal.module.css";
|
import classes from "./terminal.module.css";
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import { Button, Divider, Group, Stack, Text } from "@mantine/core";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { Button, Divider, Group, Stack, Text } from "@homarr/ui";
|
|
||||||
|
|
||||||
interface DangerZoneAccordionProps {
|
interface DangerZoneAccordionProps {
|
||||||
user: NonNullable<RouterOutputs["user"]["getById"]>;
|
user: NonNullable<RouterOutputs["user"]["getById"]>;
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import { Button, Stack, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useForm, zodResolver } from "@homarr/form";
|
import { useForm, zodResolver } from "@homarr/form";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { Button, Stack, TextInput } from "@homarr/ui";
|
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import { Button, PasswordInput, Stack, Title } from "@mantine/core";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useForm, zodResolver } from "@homarr/form";
|
import { useForm, zodResolver } from "@homarr/form";
|
||||||
import { showSuccessNotification } from "@homarr/notifications";
|
import { showSuccessNotification } from "@homarr/notifications";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, PasswordInput, Stack, Title } from "@homarr/ui";
|
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
import { revalidatePathAction } from "~/app/revalidatePathAction";
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
|
|
||||||
import { api } from "@homarr/api/server";
|
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
|
||||||
import {
|
import {
|
||||||
Accordion,
|
Accordion,
|
||||||
AccordionControl,
|
AccordionControl,
|
||||||
@@ -9,14 +6,19 @@ import {
|
|||||||
AccordionPanel,
|
AccordionPanel,
|
||||||
Avatar,
|
Avatar,
|
||||||
Group,
|
Group,
|
||||||
|
Stack,
|
||||||
|
Text,
|
||||||
|
Title,
|
||||||
|
} from "@mantine/core";
|
||||||
|
import {
|
||||||
IconAlertTriangleFilled,
|
IconAlertTriangleFilled,
|
||||||
IconSettingsFilled,
|
IconSettingsFilled,
|
||||||
IconShieldLockFilled,
|
IconShieldLockFilled,
|
||||||
IconUserFilled,
|
IconUserFilled,
|
||||||
Stack,
|
} from "@tabler/icons-react";
|
||||||
Text,
|
|
||||||
Title,
|
import { api } from "@homarr/api/server";
|
||||||
} from "@homarr/ui";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
|
|
||||||
import { DangerZoneAccordion } from "./_components/dangerZone.accordion";
|
import { DangerZoneAccordion } from "./_components/dangerZone.accordion";
|
||||||
import { ProfileAccordion } from "./_components/profile.accordion";
|
import { ProfileAccordion } from "./_components/profile.accordion";
|
||||||
|
|||||||
@@ -2,21 +2,14 @@
|
|||||||
|
|
||||||
import { useMemo } from "react";
|
import { useMemo } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { Avatar, Button, Group, Text, ThemeIcon, Title } from "@mantine/core";
|
||||||
|
import { IconCheck } from "@tabler/icons-react";
|
||||||
import type { MRT_ColumnDef } from "mantine-react-table";
|
import type { MRT_ColumnDef } from "mantine-react-table";
|
||||||
import { MantineReactTable, useMantineReactTable } from "mantine-react-table";
|
import { MantineReactTable, useMantineReactTable } from "mantine-react-table";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
Avatar,
|
|
||||||
Button,
|
|
||||||
Group,
|
|
||||||
IconCheck,
|
|
||||||
Text,
|
|
||||||
ThemeIcon,
|
|
||||||
Title,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
|
|
||||||
interface UserListComponentProps {
|
interface UserListComponentProps {
|
||||||
initialUserList: RouterOutputs["user"]["getAll"];
|
initialUserList: RouterOutputs["user"]["getAll"];
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback, useMemo, useState } from "react";
|
import { useCallback, useMemo, useState } from "react";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
|
||||||
import { useForm, zodResolver } from "@homarr/form";
|
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
|
||||||
import {
|
import {
|
||||||
Avatar,
|
Avatar,
|
||||||
Card,
|
Card,
|
||||||
IconUserCheck,
|
|
||||||
PasswordInput,
|
PasswordInput,
|
||||||
Stack,
|
Stack,
|
||||||
Stepper,
|
Stepper,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { IconUserCheck } from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import { clientApi } from "@homarr/api/client";
|
||||||
|
import { useForm, zodResolver } from "@homarr/form";
|
||||||
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { validation, z } from "@homarr/validation";
|
import { validation, z } from "@homarr/validation";
|
||||||
|
|
||||||
import { StepperNavigationComponent } from "./stepper-navigation.component";
|
import { StepperNavigationComponent } from "./stepper-navigation.component";
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { Button, Card, Group } from "@mantine/core";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
|
||||||
import {
|
import {
|
||||||
Button,
|
|
||||||
Card,
|
|
||||||
Group,
|
|
||||||
IconArrowBackUp,
|
IconArrowBackUp,
|
||||||
IconArrowLeft,
|
IconArrowLeft,
|
||||||
IconArrowRight,
|
IconArrowRight,
|
||||||
IconRotate,
|
IconRotate,
|
||||||
} from "@homarr/ui";
|
} from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import { useI18n } from "@homarr/translation/client";
|
||||||
|
|
||||||
interface StepperNavigationComponentProps {
|
interface StepperNavigationComponentProps {
|
||||||
hasPrevious: boolean;
|
hasPrevious: boolean;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Center } from "@homarr/ui";
|
import { Center } from "@mantine/core";
|
||||||
|
|
||||||
export default function CommonNotFound() {
|
export default function CommonNotFound() {
|
||||||
return <Center h="100vh">404</Center>;
|
return <Center h="100vh">404</Center>;
|
||||||
|
|||||||
@@ -1,20 +1,18 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback, useMemo, useState } from "react";
|
import { useCallback, useMemo, useState } from "react";
|
||||||
|
import { ActionIcon, Affix, Card } from "@mantine/core";
|
||||||
|
import {
|
||||||
|
IconDimensions,
|
||||||
|
IconPencil,
|
||||||
|
IconToggleLeft,
|
||||||
|
IconToggleRight,
|
||||||
|
} from "@tabler/icons-react";
|
||||||
|
|
||||||
import type { IntegrationKind, WidgetKind } from "@homarr/definitions";
|
import type { IntegrationKind, WidgetKind } from "@homarr/definitions";
|
||||||
import { useModalAction } from "@homarr/modals";
|
import { useModalAction } from "@homarr/modals";
|
||||||
import { showSuccessNotification } from "@homarr/notifications";
|
import { showSuccessNotification } from "@homarr/notifications";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
ActionIcon,
|
|
||||||
Affix,
|
|
||||||
Card,
|
|
||||||
IconDimensions,
|
|
||||||
IconPencil,
|
|
||||||
IconToggleLeft,
|
|
||||||
IconToggleRight,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
import {
|
import {
|
||||||
loadWidgetDynamic,
|
loadWidgetDynamic,
|
||||||
reduceWidgetOptionsWithDefaultValues,
|
reduceWidgetOptionsWithDefaultValues,
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import { Button, Group, InputWrapper, Slider, Stack } from "@mantine/core";
|
||||||
|
|
||||||
import { useForm } from "@homarr/form";
|
import { useForm } from "@homarr/form";
|
||||||
import { createModal } from "@homarr/modals";
|
import { createModal } from "@homarr/modals";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, Group, InputWrapper, Slider, Stack } from "@homarr/ui";
|
|
||||||
|
|
||||||
interface InnerProps {
|
interface InnerProps {
|
||||||
dimensions: Dimensions;
|
dimensions: Dimensions;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
|
import { Center } from "@mantine/core";
|
||||||
|
|
||||||
import { db } from "@homarr/db";
|
import { db } from "@homarr/db";
|
||||||
import type { WidgetKind } from "@homarr/definitions";
|
import type { WidgetKind } from "@homarr/definitions";
|
||||||
import { Center } from "@homarr/ui";
|
|
||||||
import { widgetImports } from "@homarr/widgets";
|
import { widgetImports } from "@homarr/widgets";
|
||||||
|
|
||||||
import { env } from "~/env.mjs";
|
import { env } from "~/env.mjs";
|
||||||
|
|||||||
@@ -3,11 +3,10 @@
|
|||||||
import type { PropsWithChildren } from "react";
|
import type { PropsWithChildren } from "react";
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
import { usePathname } from "next/navigation";
|
import { usePathname } from "next/navigation";
|
||||||
|
import type { AccordionProps } from "@mantine/core";
|
||||||
|
import { Accordion } from "@mantine/core";
|
||||||
import { useShallowEffect } from "@mantine/hooks";
|
import { useShallowEffect } from "@mantine/hooks";
|
||||||
|
|
||||||
import type { AccordionProps } from "@homarr/ui";
|
|
||||||
import { Accordion } from "@homarr/ui";
|
|
||||||
|
|
||||||
type ActiveTabAccordionProps = PropsWithChildren<
|
type ActiveTabAccordionProps = PropsWithChildren<
|
||||||
Omit<AccordionProps<false>, "onChange">
|
Omit<AccordionProps<false>, "onChange">
|
||||||
>;
|
>;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
import { Button, Card, Center, Grid, Stack, Text } from "@mantine/core";
|
||||||
|
|
||||||
import type { WidgetKind } from "@homarr/definitions";
|
import type { WidgetKind } from "@homarr/definitions";
|
||||||
import { createModal } from "@homarr/modals";
|
import { createModal } from "@homarr/modals";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, Card, Center, Grid, Stack, Text } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { objectEntries } from "../../../../../../packages/common/src";
|
import { objectEntries } from "../../../../../../packages/common/src";
|
||||||
import { widgetImports } from "../../../../../../packages/widgets/src";
|
import { widgetImports } from "../../../../../../packages/widgets/src";
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import { Button, Group, Stack, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import { useForm } from "@homarr/form";
|
import { useForm } from "@homarr/form";
|
||||||
import { createModal } from "@homarr/modals";
|
import { createModal } from "@homarr/modals";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, Group, Stack, TextInput } from "@homarr/ui";
|
|
||||||
import type { validation, z } from "@homarr/validation";
|
import type { validation, z } from "@homarr/validation";
|
||||||
|
|
||||||
interface InnerProps {
|
interface InnerProps {
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
import type { RefObject } from "react";
|
import type { RefObject } from "react";
|
||||||
import { useDisclosure } from "@mantine/hooks";
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Card,
|
Card,
|
||||||
Collapse,
|
Collapse,
|
||||||
Group,
|
Group,
|
||||||
IconChevronDown,
|
|
||||||
IconChevronUp,
|
|
||||||
Stack,
|
Stack,
|
||||||
Title,
|
Title,
|
||||||
UnstyledButton,
|
UnstyledButton,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { useDisclosure } from "@mantine/hooks";
|
||||||
|
import { IconChevronDown, IconChevronUp } from "@tabler/icons-react";
|
||||||
|
|
||||||
import type { CategorySection } from "~/app/[locale]/boards/_types";
|
import type { CategorySection } from "~/app/[locale]/boards/_types";
|
||||||
import { CategoryMenu } from "./category/category-menu";
|
import { CategoryMenu } from "./category/category-menu";
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
import { Button, Group, Stack, TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import { useForm } from "@homarr/form";
|
import { useForm } from "@homarr/form";
|
||||||
import { createModal } from "@homarr/modals";
|
import { createModal } from "@homarr/modals";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, Group, Stack, TextInput } from "@homarr/ui";
|
|
||||||
|
|
||||||
interface Category {
|
interface Category {
|
||||||
id: string;
|
id: string;
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import React, { useMemo } from "react";
|
import React, { useMemo } from "react";
|
||||||
import { useAtomValue } from "jotai";
|
import { ActionIcon, Menu } from "@mantine/core";
|
||||||
|
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
|
||||||
import type { TablerIcon } from "@homarr/ui";
|
|
||||||
import {
|
import {
|
||||||
ActionIcon,
|
|
||||||
IconDotsVertical,
|
IconDotsVertical,
|
||||||
IconEdit,
|
IconEdit,
|
||||||
IconRowInsertBottom,
|
IconRowInsertBottom,
|
||||||
@@ -14,8 +10,11 @@ import {
|
|||||||
IconTransitionBottom,
|
IconTransitionBottom,
|
||||||
IconTransitionTop,
|
IconTransitionTop,
|
||||||
IconTrash,
|
IconTrash,
|
||||||
Menu,
|
} from "@tabler/icons-react";
|
||||||
} from "@homarr/ui";
|
import { useAtomValue } from "jotai";
|
||||||
|
|
||||||
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
|
import type { TablerIcon } from "@homarr/ui";
|
||||||
|
|
||||||
import type { CategorySection } from "~/app/[locale]/boards/_types";
|
import type { CategorySection } from "~/app/[locale]/boards/_types";
|
||||||
import { editModeAtom } from "../../editMode";
|
import { editModeAtom } from "../../editMode";
|
||||||
|
|||||||
@@ -2,21 +2,19 @@
|
|||||||
// Ignored because of gridstack attributes
|
// Ignored because of gridstack attributes
|
||||||
|
|
||||||
import type { RefObject } from "react";
|
import type { RefObject } from "react";
|
||||||
|
import { ActionIcon, Card, Menu } from "@mantine/core";
|
||||||
import { useElementSize } from "@mantine/hooks";
|
import { useElementSize } from "@mantine/hooks";
|
||||||
|
import {
|
||||||
|
IconDotsVertical,
|
||||||
|
IconLayoutKanban,
|
||||||
|
IconPencil,
|
||||||
|
IconTrash,
|
||||||
|
} from "@tabler/icons-react";
|
||||||
import combineClasses from "clsx";
|
import combineClasses from "clsx";
|
||||||
import { useAtomValue } from "jotai";
|
import { useAtomValue } from "jotai";
|
||||||
|
|
||||||
import { useConfirmModal, useModalAction } from "@homarr/modals";
|
import { useConfirmModal, useModalAction } from "@homarr/modals";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
ActionIcon,
|
|
||||||
Card,
|
|
||||||
IconDotsVertical,
|
|
||||||
IconLayoutKanban,
|
|
||||||
IconPencil,
|
|
||||||
IconTrash,
|
|
||||||
Menu,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
import {
|
import {
|
||||||
loadWidgetDynamic,
|
loadWidgetDynamic,
|
||||||
reduceWidgetOptionsWithDefaultValues,
|
reduceWidgetOptionsWithDefaultValues,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { usePathname } from "next/navigation";
|
import { usePathname } from "next/navigation";
|
||||||
|
import type { AppShellProps } from "@mantine/core";
|
||||||
import type { AppShellProps } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { useOptionalBoard } from "~/app/[locale]/boards/_context";
|
import { useOptionalBoard } from "~/app/[locale]/boards/_context";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { AppShellHeader, Group, UnstyledButton } from "@mantine/core";
|
||||||
|
|
||||||
import { Spotlight } from "@homarr/spotlight";
|
import { Spotlight } from "@homarr/spotlight";
|
||||||
import { AppShellHeader, Group, UnstyledButton } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { ClientBurger } from "./header/burger";
|
import { ClientBurger } from "./header/burger";
|
||||||
import { DesktopSearchInput, MobileSearchButton } from "./header/search";
|
import { DesktopSearchInput, MobileSearchButton } from "./header/search";
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
|
import { Burger } from "@mantine/core";
|
||||||
import { atom, useAtom } from "jotai";
|
import { atom, useAtom } from "jotai";
|
||||||
|
|
||||||
import { Burger } from "@homarr/ui";
|
|
||||||
|
|
||||||
export const navigationCollapsedAtom = atom(true);
|
export const navigationCollapsedAtom = atom(true);
|
||||||
|
|
||||||
export const ClientBurger = () => {
|
export const ClientBurger = () => {
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import type { ForwardedRef, ReactNode } from "react";
|
import type { ForwardedRef, ReactNode } from "react";
|
||||||
import { forwardRef } from "react";
|
import { forwardRef } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import type { ActionIconProps } from "@mantine/core";
|
||||||
import type { ActionIconProps } from "@homarr/ui";
|
import { ActionIcon } from "@mantine/core";
|
||||||
import { ActionIcon } from "@homarr/ui";
|
|
||||||
|
|
||||||
type HeaderButtonProps = (
|
type HeaderButtonProps = (
|
||||||
| {
|
| {
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import { TextInput, UnstyledButton } from "@mantine/core";
|
||||||
|
import { IconSearch } from "@tabler/icons-react";
|
||||||
|
|
||||||
import { openSpotlight } from "@homarr/spotlight";
|
import { openSpotlight } from "@homarr/spotlight";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { IconSearch, TextInput, UnstyledButton } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { HeaderButton } from "./button";
|
import { HeaderButton } from "./button";
|
||||||
import classes from "./search.module.css";
|
import classes from "./search.module.css";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { UnstyledButton } from "@homarr/ui";
|
import { UnstyledButton } from "@mantine/core";
|
||||||
|
|
||||||
import { UserAvatar } from "~/components/user-avatar";
|
import { UserAvatar } from "~/components/user-avatar";
|
||||||
import { UserAvatarMenu } from "~/components/user-avatar-menu";
|
import { UserAvatarMenu } from "~/components/user-avatar-menu";
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
import type { TitleOrder } from "@mantine/core";
|
||||||
import type { TitleOrder } from "@homarr/ui";
|
import { Group, Title } from "@mantine/core";
|
||||||
import { Group, Title } from "@homarr/ui";
|
|
||||||
|
|
||||||
interface LogoProps {
|
interface LogoProps {
|
||||||
size: number;
|
size: number;
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { usePathname } from "next/navigation";
|
import { usePathname } from "next/navigation";
|
||||||
|
import { NavLink } from "@mantine/core";
|
||||||
import { NavLink } from "@homarr/ui";
|
|
||||||
|
|
||||||
export const CommonNavLink = (props: ClientNavigationLink) =>
|
export const CommonNavLink = (props: ClientNavigationLink) =>
|
||||||
"href" in props ? (
|
"href" in props ? (
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
import { AppShellNavbar, AppShellSection, ScrollArea } from "@mantine/core";
|
||||||
|
|
||||||
import type { TablerIcon } from "@homarr/ui";
|
import type { TablerIcon } from "@homarr/ui";
|
||||||
import { AppShellNavbar, AppShellSection, ScrollArea } from "@homarr/ui";
|
|
||||||
|
|
||||||
import type { ClientNavigationLink } from "./navigation-link";
|
import type { ClientNavigationLink } from "./navigation-link";
|
||||||
import { CommonNavLink } from "./navigation-link";
|
import { CommonNavLink } from "./navigation-link";
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import type { PropsWithChildren } from "react";
|
import type { PropsWithChildren } from "react";
|
||||||
|
import { AppShell } from "@mantine/core";
|
||||||
import { useAtomValue } from "jotai";
|
import { useAtomValue } from "jotai";
|
||||||
|
|
||||||
import { AppShell } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { useOptionalBackgroundProps } from "./background";
|
import { useOptionalBackgroundProps } from "./background";
|
||||||
import { navigationCollapsedAtom } from "./header/burger";
|
import { navigationCollapsedAtom } from "./header/burger";
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
|
import { Button, Group, Stack, TextInput } from "@mantine/core";
|
||||||
import { boardSchemas } from "node_modules/@homarr/validation/src/board";
|
import { boardSchemas } from "node_modules/@homarr/validation/src/board";
|
||||||
|
|
||||||
import { useForm, zodResolver } from "@homarr/form";
|
import { useForm, zodResolver } from "@homarr/form";
|
||||||
import { createModal } from "@homarr/modals";
|
import { createModal } from "@homarr/modals";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { Button, Group, Stack, TextInput } from "@homarr/ui";
|
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|
||||||
interface InnerProps {
|
interface InnerProps {
|
||||||
|
|||||||
@@ -2,17 +2,16 @@
|
|||||||
|
|
||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { Menu, useMantineColorScheme } from "@mantine/core";
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
|
||||||
import {
|
import {
|
||||||
IconDashboard,
|
IconDashboard,
|
||||||
IconLogout,
|
IconLogout,
|
||||||
IconMoon,
|
IconMoon,
|
||||||
IconSun,
|
IconSun,
|
||||||
IconTool,
|
IconTool,
|
||||||
Menu,
|
} from "@tabler/icons-react";
|
||||||
useMantineColorScheme,
|
|
||||||
} from "@homarr/ui";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
|
|
||||||
interface UserAvatarMenuProps {
|
interface UserAvatarMenuProps {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
import type { AvatarProps, MantineSize } from "@mantine/core";
|
||||||
|
import { Avatar } from "@mantine/core";
|
||||||
|
|
||||||
import { auth } from "@homarr/auth";
|
import { auth } from "@homarr/auth";
|
||||||
import type { AvatarProps, MantineSize } from "@homarr/ui";
|
|
||||||
import { Avatar } from "@homarr/ui";
|
|
||||||
|
|
||||||
interface UserAvatarProps {
|
interface UserAvatarProps {
|
||||||
size: MantineSize;
|
size: MantineSize;
|
||||||
|
|||||||
@@ -40,5 +40,11 @@
|
|||||||
"vite-tsconfig-paths": "^4.3.2",
|
"vite-tsconfig-paths": "^4.3.2",
|
||||||
"vitest": "^1.5.0"
|
"vitest": "^1.5.0"
|
||||||
},
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@mantine/core": "^7.8.0",
|
||||||
|
"@mantine/dates": "^7.8.0",
|
||||||
|
"@tabler/icons-react": "^3.2.0",
|
||||||
|
"mantine-react-table": "2.0.0-beta.1"
|
||||||
|
},
|
||||||
"prettier": "@homarr/prettier-config"
|
"prettier": "@homarr/prettier-config"
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
import type { ComponentPropsWithoutRef, ReactNode } from "react";
|
import type { ComponentPropsWithoutRef, ReactNode } from "react";
|
||||||
|
import type { ButtonProps, GroupProps } from "@mantine/core";
|
||||||
|
import { Box, Button, Group } from "@mantine/core";
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
stringOrTranslation,
|
stringOrTranslation,
|
||||||
@@ -7,8 +9,6 @@ import type {
|
|||||||
} from "@homarr/translation";
|
} from "@homarr/translation";
|
||||||
import { translateIfNecessary } from "@homarr/translation";
|
import { translateIfNecessary } from "@homarr/translation";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import type { ButtonProps, GroupProps } from "@homarr/ui";
|
|
||||||
import { Box, Button, Group } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { createModal } from "./creator";
|
import { createModal } from "./creator";
|
||||||
|
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ import {
|
|||||||
useReducer,
|
useReducer,
|
||||||
useRef,
|
useRef,
|
||||||
} from "react";
|
} from "react";
|
||||||
|
import { getDefaultZIndex, Modal } from "@mantine/core";
|
||||||
import { randomId } from "@mantine/hooks";
|
import { randomId } from "@mantine/hooks";
|
||||||
|
|
||||||
import type { stringOrTranslation } from "@homarr/translation";
|
import type { stringOrTranslation } from "@homarr/translation";
|
||||||
import { translateIfNecessary } from "@homarr/translation";
|
import { translateIfNecessary } from "@homarr/translation";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import { getDefaultZIndex, Modal } from "@homarr/ui";
|
|
||||||
|
|
||||||
import type { ConfirmModalProps } from "./confirm-modal";
|
import type { ConfirmModalProps } from "./confirm-modal";
|
||||||
import { ConfirmModal } from "./confirm-modal";
|
import { ConfirmModal } from "./confirm-modal";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
|
import type { ModalProps } from "@mantine/core";
|
||||||
|
|
||||||
import type { stringOrTranslation } from "@homarr/translation";
|
import type { stringOrTranslation } from "@homarr/translation";
|
||||||
import type { ModalProps } from "@homarr/ui";
|
|
||||||
|
|
||||||
export type ModalComponent<TInnerProps> = (props: {
|
export type ModalComponent<TInnerProps> = (props: {
|
||||||
actions: { closeModal: () => void };
|
actions: { closeModal: () => void };
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import type { NotificationData } from "@mantine/notifications";
|
import type { NotificationData } from "@mantine/notifications";
|
||||||
import { notifications } from "@mantine/notifications";
|
import { notifications } from "@mantine/notifications";
|
||||||
|
import { IconCheck, IconX } from "@tabler/icons-react";
|
||||||
import { IconCheck, IconX } from "@homarr/ui";
|
|
||||||
|
|
||||||
type CommonNotificationProps = Pick<NotificationData, "title" | "message">;
|
type CommonNotificationProps = Pick<NotificationData, "title" | "message">;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
import { Chip } from "@mantine/core";
|
||||||
|
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
import { Chip } from "@homarr/ui";
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
selectNextAction,
|
selectNextAction,
|
||||||
|
|||||||
@@ -2,23 +2,16 @@
|
|||||||
|
|
||||||
import { useCallback, useState } from "react";
|
import { useCallback, useState } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { Center, Chip, Divider, Flex, Group, Text } from "@mantine/core";
|
||||||
import {
|
import {
|
||||||
Spotlight as MantineSpotlight,
|
Spotlight as MantineSpotlight,
|
||||||
SpotlightAction,
|
SpotlightAction,
|
||||||
} from "@mantine/spotlight";
|
} from "@mantine/spotlight";
|
||||||
|
import { IconSearch } from "@tabler/icons-react";
|
||||||
import { useAtomValue } from "jotai";
|
import { useAtomValue } from "jotai";
|
||||||
|
|
||||||
import type { TranslationFunction } from "@homarr/translation";
|
import type { TranslationFunction } from "@homarr/translation";
|
||||||
import { useI18n } from "@homarr/translation/client";
|
import { useI18n } from "@homarr/translation/client";
|
||||||
import {
|
|
||||||
Center,
|
|
||||||
Chip,
|
|
||||||
Divider,
|
|
||||||
Flex,
|
|
||||||
Group,
|
|
||||||
IconSearch,
|
|
||||||
Text,
|
|
||||||
} from "@homarr/ui";
|
|
||||||
|
|
||||||
import { GroupChip } from "./chip-group";
|
import { GroupChip } from "./chip-group";
|
||||||
import classes from "./component.module.css";
|
import classes from "./component.module.css";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IconDownload } from "@homarr/ui";
|
import { IconDownload } from "@tabler/icons-react";
|
||||||
|
|
||||||
import { useRegisterSpotlightActions } from "./data-store";
|
import { useRegisterSpotlightActions } from "./data-store";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
import type { Icon123 } from "@tabler/icons-react";
|
import type { Icon123 } from "@tabler/icons-react";
|
||||||
|
|
||||||
export * from "@mantine/core";
|
|
||||||
export * from "@mantine/dates";
|
|
||||||
export * from "@tabler/icons-react";
|
|
||||||
export * from "./src";
|
export * from "./src";
|
||||||
|
|
||||||
export type TablerIcon = typeof Icon123;
|
export type TablerIcon = typeof Icon123;
|
||||||
|
|||||||
@@ -33,11 +33,5 @@
|
|||||||
"@homarr/eslint-config/base"
|
"@homarr/eslint-config/base"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"prettier": "@homarr/prettier-config",
|
"prettier": "@homarr/prettier-config"
|
||||||
"dependencies": {
|
|
||||||
"@mantine/core": "^7.8.0",
|
|
||||||
"@mantine/dates": "^7.8.0",
|
|
||||||
"@tabler/icons-react": "^3.2.0",
|
|
||||||
"mantine-react-table": "2.0.0-beta.1"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { memo, useMemo } from "react";
|
import { memo, useMemo } from "react";
|
||||||
|
import type { SelectProps } from "@mantine/core";
|
||||||
|
import { Group, Loader, Select } from "@mantine/core";
|
||||||
|
import { IconCheck } from "@tabler/icons-react";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
import { clientApi } from "@homarr/api/client";
|
import { clientApi } from "@homarr/api/client";
|
||||||
import type { SelectProps } from "@homarr/ui";
|
|
||||||
import { Group, IconCheck, Loader, Select } from "@homarr/ui";
|
|
||||||
|
|
||||||
import type { CommonWidgetInputProps } from "./common";
|
import type { CommonWidgetInputProps } from "./common";
|
||||||
import { useWidgetInputTranslation } from "./common";
|
import { useWidgetInputTranslation } from "./common";
|
||||||
|
|||||||
@@ -2,19 +2,12 @@
|
|||||||
|
|
||||||
import type { ChangeEvent } from "react";
|
import type { ChangeEvent } from "react";
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
|
|
||||||
import type { RouterOutputs } from "@homarr/api";
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
|
||||||
import { createModal, useModalAction } from "@homarr/modals";
|
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
|
||||||
import {
|
import {
|
||||||
ActionIcon,
|
ActionIcon,
|
||||||
Anchor,
|
Anchor,
|
||||||
Button,
|
Button,
|
||||||
Fieldset,
|
Fieldset,
|
||||||
Group,
|
Group,
|
||||||
IconClick,
|
|
||||||
IconListSearch,
|
|
||||||
Loader,
|
Loader,
|
||||||
NumberInput,
|
NumberInput,
|
||||||
Stack,
|
Stack,
|
||||||
@@ -22,7 +15,13 @@ import {
|
|||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { IconClick, IconListSearch } from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import type { RouterOutputs } from "@homarr/api";
|
||||||
|
import { clientApi } from "@homarr/api/client";
|
||||||
|
import { createModal, useModalAction } from "@homarr/modals";
|
||||||
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
|
|
||||||
import type { OptionLocation } from "../options";
|
import type { OptionLocation } from "../options";
|
||||||
import type { CommonWidgetInputProps } from "./common";
|
import type { CommonWidgetInputProps } from "./common";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { MultiSelect } from "@homarr/ui";
|
import { MultiSelect } from "@mantine/core";
|
||||||
|
|
||||||
import type { CommonWidgetInputProps } from "./common";
|
import type { CommonWidgetInputProps } from "./common";
|
||||||
import { useWidgetInputTranslation } from "./common";
|
import { useWidgetInputTranslation } from "./common";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { NumberInput } from "@homarr/ui";
|
import { NumberInput } from "@mantine/core";
|
||||||
|
|
||||||
import type { CommonWidgetInputProps } from "./common";
|
import type { CommonWidgetInputProps } from "./common";
|
||||||
import { useWidgetInputTranslation } from "./common";
|
import { useWidgetInputTranslation } from "./common";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { Select } from "@homarr/ui";
|
import { Select } from "@mantine/core";
|
||||||
|
|
||||||
import type { CommonWidgetInputProps } from "./common";
|
import type { CommonWidgetInputProps } from "./common";
|
||||||
import { useWidgetInputTranslation } from "./common";
|
import { useWidgetInputTranslation } from "./common";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { InputWrapper, Slider } from "@homarr/ui";
|
import { InputWrapper, Slider } from "@mantine/core";
|
||||||
|
|
||||||
import type { CommonWidgetInputProps } from "./common";
|
import type { CommonWidgetInputProps } from "./common";
|
||||||
import { useWidgetInputTranslation } from "./common";
|
import { useWidgetInputTranslation } from "./common";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { Switch } from "@homarr/ui";
|
import { Switch } from "@mantine/core";
|
||||||
|
|
||||||
import type { CommonWidgetInputProps } from "./common";
|
import type { CommonWidgetInputProps } from "./common";
|
||||||
import { useWidgetInputTranslation } from "./common";
|
import { useWidgetInputTranslation } from "./common";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { TextInput } from "@homarr/ui";
|
import { TextInput } from "@mantine/core";
|
||||||
|
|
||||||
import type { CommonWidgetInputProps } from "./common";
|
import type { CommonWidgetInputProps } from "./common";
|
||||||
import { useWidgetInputTranslation } from "./common";
|
import { useWidgetInputTranslation } from "./common";
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import type { PropsWithChildren } from "react";
|
import type { PropsWithChildren } from "react";
|
||||||
|
|
||||||
import { clientApi } from "@homarr/api/client";
|
|
||||||
import { useRegisterSpotlightActions } from "@homarr/spotlight";
|
|
||||||
import { useScopedI18n } from "@homarr/translation/client";
|
|
||||||
import {
|
import {
|
||||||
Center,
|
Center,
|
||||||
Flex,
|
Flex,
|
||||||
IconDeviceDesktopX,
|
|
||||||
Loader,
|
Loader,
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
UnstyledButton,
|
UnstyledButton,
|
||||||
} from "@homarr/ui";
|
} from "@mantine/core";
|
||||||
|
import { IconDeviceDesktopX } from "@tabler/icons-react";
|
||||||
|
|
||||||
|
import { clientApi } from "@homarr/api/client";
|
||||||
|
import { useRegisterSpotlightActions } from "@homarr/spotlight";
|
||||||
|
import { useScopedI18n } from "@homarr/translation/client";
|
||||||
|
|
||||||
import type { WidgetComponentProps } from "../definition";
|
import type { WidgetComponentProps } from "../definition";
|
||||||
import classes from "./app.module.css";
|
import classes from "./app.module.css";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IconApps } from "@homarr/ui";
|
import { IconApps } from "@tabler/icons-react";
|
||||||
|
|
||||||
import { createWidgetDefinition } from "../definition";
|
import { createWidgetDefinition } from "../definition";
|
||||||
import { optionsBuilder } from "../options";
|
import { optionsBuilder } from "../options";
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useEffect, useMemo, useRef, useState } from "react";
|
import { useEffect, useMemo, useRef, useState } from "react";
|
||||||
|
import { Flex, Stack, Text } from "@mantine/core";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import advancedFormat from "dayjs/plugin/advancedFormat";
|
import advancedFormat from "dayjs/plugin/advancedFormat";
|
||||||
import timezones from "dayjs/plugin/timezone";
|
import timezones from "dayjs/plugin/timezone";
|
||||||
import utc from "dayjs/plugin/utc";
|
import utc from "dayjs/plugin/utc";
|
||||||
|
|
||||||
import { Flex, Stack, Text } from "@homarr/ui";
|
|
||||||
|
|
||||||
import type { WidgetComponentProps } from "../definition";
|
import type { WidgetComponentProps } from "../definition";
|
||||||
|
|
||||||
dayjs.extend(advancedFormat);
|
dayjs.extend(advancedFormat);
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
|
import { IconClock } from "@tabler/icons-react";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
import { IconClock } from "@homarr/ui";
|
|
||||||
|
|
||||||
import { createWidgetDefinition } from "../definition";
|
import { createWidgetDefinition } from "../definition";
|
||||||
import { optionsBuilder } from "../options";
|
import { optionsBuilder } from "../options";
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user