mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-08 14:35:49 +01:00
refactor: use relative TS path
This commit is contained in:
@@ -2,8 +2,8 @@ import { ActionIcon, Space, createStyles } from '@mantine/core';
|
|||||||
import { useDisclosure } from '@mantine/hooks';
|
import { useDisclosure } from '@mantine/hooks';
|
||||||
import { IconChevronLeft, IconChevronRight } from '@tabler/icons-react';
|
import { IconChevronLeft, IconChevronRight } from '@tabler/icons-react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useScreenLargerThan } from '../../../../hooks/useScreenLargerThan';
|
import { useScreenLargerThan } from '~/hooks/useScreenLargerThan';
|
||||||
import { MobileRibbonSidebarDrawer } from './MobileRibbonSidebarDrawer';
|
import { MobileRibbonSidebarDrawer } from './MobileRibbonSidebarDrawer';
|
||||||
|
|
||||||
export const MobileRibbons = () => {
|
export const MobileRibbons = () => {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { SelectItem } from '@mantine/core';
|
import { SelectItem } from '@mantine/core';
|
||||||
import { ContextModalProps, closeModal } from '@mantine/modals';
|
import { ContextModalProps, closeModal } from '@mantine/modals';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { AppType } from '../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { useGridstackStore, useWrapperColumnCount } from '../../Wrappers/gridstack/store';
|
import { useGridstackStore, useWrapperColumnCount } from '../../Wrappers/gridstack/store';
|
||||||
import { ChangePositionModal } from './ChangePositionModal';
|
import { ChangePositionModal } from './ChangePositionModal';
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Button, Flex, Grid, NumberInput, Select, SelectItem } from '@mantine/co
|
|||||||
import { useForm } from '@mantine/form';
|
import { useForm } from '@mantine/form';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
|
|
||||||
interface ChangePositionModalProps {
|
interface ChangePositionModalProps {
|
||||||
initialX?: number;
|
initialX?: number;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { SelectItem } from '@mantine/core';
|
import { SelectItem } from '@mantine/core';
|
||||||
import { ContextModalProps, closeModal } from '@mantine/modals';
|
import { ContextModalProps, closeModal } from '@mantine/modals';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import widgets from '../../../../widgets';
|
import widgets from '../../../../widgets';
|
||||||
import { WidgetChangePositionModalInnerProps } from '../../Tiles/Widgets/WidgetsMenu';
|
import { WidgetChangePositionModalInnerProps } from '../../Tiles/Widgets/WidgetsMenu';
|
||||||
import { useGridstackStore, useWrapperColumnCount } from '../../Wrappers/gridstack/store';
|
import { useGridstackStore, useWrapperColumnCount } from '../../Wrappers/gridstack/store';
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ import {
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { AppType } from '../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { DebouncedImage } from '../../../IconSelector/DebouncedImage';
|
import { DebouncedImage } from '../../../IconSelector/DebouncedImage';
|
||||||
import { useEditModeStore } from '../../Views/useEditModeStore';
|
import { useEditModeStore } from '../../Views/useEditModeStore';
|
||||||
import { AppearanceTab } from './Tabs/AppereanceTab/AppereanceTab';
|
import { AppearanceTab } from './Tabs/AppereanceTab/AppereanceTab';
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { useDebouncedValue } from '@mantine/hooks';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useEffect, useRef } from 'react';
|
import { useEffect, useRef } from 'react';
|
||||||
|
|
||||||
import { AppType } from '../../../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { IconSelector } from '../../../../../IconSelector/IconSelector';
|
import { IconSelector } from '~/components/IconSelector/IconSelector';
|
||||||
|
|
||||||
interface AppearanceTabProps {
|
interface AppearanceTabProps {
|
||||||
form: UseFormReturnType<AppType, (values: AppType) => AppType>;
|
form: UseFormReturnType<AppType, (values: AppType) => AppType>;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Text, TextInput, Tooltip, Stack, Switch, Tabs, Group, useMantineTheme,
|
|||||||
import { UseFormReturnType } from '@mantine/form';
|
import { UseFormReturnType } from '@mantine/form';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { AppType } from '../../../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { InfoCard } from '~/components/InfoCard/InfoCard'
|
import { InfoCard } from '~/components/InfoCard/InfoCard'
|
||||||
|
|
||||||
interface BehaviourTabProps {
|
interface BehaviourTabProps {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { UseFormReturnType } from '@mantine/form';
|
|||||||
import { IconClick, IconCursorText, IconLink } from '@tabler/icons-react';
|
import { IconClick, IconCursorText, IconLink } from '@tabler/icons-react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { AppType } from '../../../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { EditAppModalTab } from '../type';
|
import { EditAppModalTab } from '../type';
|
||||||
|
|
||||||
interface GeneralTabProps {
|
interface GeneralTabProps {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { Icon } from '@tabler/icons-react';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|
||||||
import { AppIntegrationPropertyAccessabilityType } from '../../../../../../../../types/app';
|
import { AppIntegrationPropertyAccessabilityType } from '~/types/app';
|
||||||
|
|
||||||
interface GenericSecretInputProps {
|
interface GenericSecretInputProps {
|
||||||
label: string;
|
label: string;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
IntegrationField,
|
IntegrationField,
|
||||||
integrationFieldDefinitions,
|
integrationFieldDefinitions,
|
||||||
integrationFieldProperties,
|
integrationFieldProperties,
|
||||||
} from '../../../../../../../../types/app';
|
} from '~/types/app';
|
||||||
|
|
||||||
interface IntegrationSelectorProps {
|
interface IntegrationSelectorProps {
|
||||||
form: UseFormReturnType<AppType, (item: AppType) => AppType>;
|
form: UseFormReturnType<AppType, (item: AppType) => AppType>;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
IntegrationField,
|
IntegrationField,
|
||||||
integrationFieldDefinitions,
|
integrationFieldDefinitions,
|
||||||
integrationFieldProperties,
|
integrationFieldProperties,
|
||||||
} from '../../../../../../../../types/app';
|
} from '~/types/app';
|
||||||
import { GenericSecretInput } from '../InputElements/GenericSecretInput';
|
import { GenericSecretInput } from '../InputElements/GenericSecretInput';
|
||||||
|
|
||||||
interface IntegrationOptionsRendererProps {
|
interface IntegrationOptionsRendererProps {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { UseFormReturnType } from '@mantine/form';
|
|||||||
import { IconAlertTriangle } from '@tabler/icons-react';
|
import { IconAlertTriangle } from '@tabler/icons-react';
|
||||||
import { Trans, useTranslation } from 'next-i18next';
|
import { Trans, useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { AppType } from '../../../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { IntegrationSelector } from './Components/InputElements/IntegrationSelector';
|
import { IntegrationSelector } from './Components/InputElements/IntegrationSelector';
|
||||||
import { IntegrationOptionsRenderer } from './Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer';
|
import { IntegrationOptionsRenderer } from './Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer';
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { MultiSelect, Stack, Switch, Tabs } from '@mantine/core';
|
|||||||
import { UseFormReturnType } from '@mantine/form';
|
import { UseFormReturnType } from '@mantine/form';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { StatusCodes } from '../../../../../../tools/acceptableStatusCodes';
|
import { StatusCodes } from '~/tools/acceptableStatusCodes';
|
||||||
import { AppType } from '../../../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
|
|
||||||
interface NetworkTabProps {
|
interface NetworkTabProps {
|
||||||
form: UseFormReturnType<AppType, (values: AppType) => AppType>;
|
form: UseFormReturnType<AppType, (values: AppType) => AppType>;
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import { useTranslation } from 'next-i18next';
|
|||||||
import { ReactNode } from 'react';
|
import { ReactNode } from 'react';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { openContextModalGeneric } from '../../../../../../tools/mantineModalManagerExtensions';
|
import { openContextModalGeneric } from '~/tools/mantineModalManagerExtensions';
|
||||||
import { AppType } from '../../../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { CategoryEditModalInnerProps } from '../../../../Wrappers/Category/CategoryEditModal';
|
import { CategoryEditModalInnerProps } from '../../../../Wrappers/Category/CategoryEditModal';
|
||||||
import { useStyles } from '../Shared/styles';
|
import { useStyles } from '../Shared/styles';
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import { Icon, IconChecks } from '@tabler/icons-react';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { IWidget, IWidgetDefinition } from '../../../../../../widgets/widgets';
|
import { IWidget, IWidgetDefinition } from '~/widgets/widgets';
|
||||||
import { useEditModeStore } from '../../../../Views/useEditModeStore';
|
import { useEditModeStore } from '../../../../Views/useEditModeStore';
|
||||||
import { GenericAvailableElementType } from '../Shared/GenericElementType';
|
import { GenericAvailableElementType } from '../Shared/GenericElementType';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { openContextModalGeneric } from '../../../../tools/mantineModalManagerExtensions';
|
import { openContextModalGeneric } from '~/tools/mantineModalManagerExtensions';
|
||||||
import { AppType } from '../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { GenericTileMenu } from '../GenericTileMenu';
|
import { GenericTileMenu } from '../GenericTileMenu';
|
||||||
|
|
||||||
interface TileMenuProps {
|
interface TileMenuProps {
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import { useSession } from 'next-auth/react';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { RouterOutputs, api } from '~/utils/api';
|
import { RouterOutputs, api } from '~/utils/api';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { AppType } from '../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
|
|
||||||
interface AppPingProps {
|
interface AppPingProps {
|
||||||
app: AppType;
|
app: AppType;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { createStyles, useMantineTheme } from '@mantine/styles';
|
|||||||
import { motion } from 'framer-motion';
|
import { motion } from 'framer-motion';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
|
||||||
import { AppType } from '../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { useEditModeStore } from '../../Views/useEditModeStore';
|
import { useEditModeStore } from '../../Views/useEditModeStore';
|
||||||
import { HomarrCardWrapper } from '../HomarrCardWrapper';
|
import { HomarrCardWrapper } from '../HomarrCardWrapper';
|
||||||
import { BaseTileProps } from '../type';
|
import { BaseTileProps } from '../type';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { ActionIcon, Menu } from '@mantine/core';
|
|||||||
import { IconLayoutKanban, IconPencil, IconSettings, IconTrash } from '@tabler/icons-react';
|
import { IconLayoutKanban, IconPencil, IconSettings, IconTrash } from '@tabler/icons-react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { useColorTheme } from '../../../tools/color';
|
import { useColorTheme } from '~/tools/color';
|
||||||
import { useEditModeStore } from '../Views/useEditModeStore';
|
import { useEditModeStore } from '../Views/useEditModeStore';
|
||||||
|
|
||||||
interface GenericTileMenuProps {
|
interface GenericTileMenuProps {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { IconChevronDown, IconGripVertical } from '@tabler/icons-react';
|
|||||||
import { Reorder, useDragControls } from 'framer-motion';
|
import { Reorder, useDragControls } from 'framer-motion';
|
||||||
import { FC, useEffect, useRef } from 'react';
|
import { FC, useEffect, useRef } from 'react';
|
||||||
|
|
||||||
import { IDraggableEditableListInputValue } from '../../../../../widgets/widgets';
|
import { IDraggableEditableListInputValue } from '~/widgets/widgets';
|
||||||
|
|
||||||
interface DraggableListProps {
|
interface DraggableListProps {
|
||||||
items: {
|
items: {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { IconChevronDown, IconGripVertical } from '@tabler/icons-react';
|
|||||||
import { Reorder, useDragControls } from 'framer-motion';
|
import { Reorder, useDragControls } from 'framer-motion';
|
||||||
import { FC, ReactNode, useEffect, useRef } from 'react';
|
import { FC, ReactNode, useEffect, useRef } from 'react';
|
||||||
|
|
||||||
import { IDraggableListInputValue } from '../../../../../widgets/widgets';
|
import { IDraggableListInputValue } from '~/widgets/widgets';
|
||||||
|
|
||||||
const useStyles = createStyles((theme) => ({
|
const useStyles = createStyles((theme) => ({
|
||||||
container: {
|
container: {
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ import { IconAlertTriangle, IconPlaylistX, IconPlus } from '@tabler/icons-react'
|
|||||||
import { Trans, useTranslation } from 'next-i18next';
|
import { Trans, useTranslation } from 'next-i18next';
|
||||||
import { FC, useState } from 'react';
|
import { FC, useState } from 'react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { mapObject } from '../../../../tools/client/objects';
|
import { mapObject } from '~/tools/client/objects';
|
||||||
import Widgets from '../../../../widgets';
|
import Widgets from '../../../../widgets';
|
||||||
import type { IDraggableListInputValue, IWidgetOptionValue } from '../../../../widgets/widgets';
|
import type { IDraggableListInputValue, IWidgetOptionValue } from '~/widgets/widgets';
|
||||||
import { IWidget } from '../../../../widgets/widgets';
|
import { IWidget } from '~/widgets/widgets';
|
||||||
import { InfoCard } from '../../../InfoCard/InfoCard';
|
import { InfoCard } from '../../../InfoCard/InfoCard';
|
||||||
import { DraggableList } from './Inputs/DraggableList';
|
import { DraggableList } from './Inputs/DraggableList';
|
||||||
import { LocationSelection } from './Inputs/LocationSelection';
|
import { LocationSelection } from './Inputs/LocationSelection';
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { Title } from '@mantine/core';
|
import { Title } from '@mantine/core';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { openContextModalGeneric } from '../../../../tools/mantineModalManagerExtensions';
|
import { openContextModalGeneric } from '~/tools/mantineModalManagerExtensions';
|
||||||
import WidgetsDefinitions from '../../../../widgets';
|
import WidgetsDefinitions from '../../../../widgets';
|
||||||
import { IWidget } from '../../../../widgets/widgets';
|
import { IWidget } from '~/widgets/widgets';
|
||||||
import { useWrapperColumnCount } from '../../Wrappers/gridstack/store';
|
import { useWrapperColumnCount } from '../../Wrappers/gridstack/store';
|
||||||
import { GenericTileMenu } from '../GenericTileMenu';
|
import { GenericTileMenu } from '../GenericTileMenu';
|
||||||
import { WidgetEditModalInnerProps } from './WidgetsEditModal';
|
import { WidgetEditModalInnerProps } from './WidgetsEditModal';
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { Button, Group, Stack, Text } from '@mantine/core';
|
|||||||
import { ContextModalProps } from '@mantine/modals';
|
import { ContextModalProps } from '@mantine/modals';
|
||||||
import { Trans, useTranslation } from 'next-i18next';
|
import { Trans, useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
|
|
||||||
export type WidgetsRemoveModalInnerProps = {
|
export type WidgetsRemoveModalInnerProps = {
|
||||||
widgetId: string;
|
widgetId: string;
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Group, Stack } from '@mantine/core';
|
import { Group, Stack } from '@mantine/core';
|
||||||
import { useEffect, useMemo, useRef } from 'react';
|
import { useEffect, useMemo, useRef } from 'react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useResize } from '../../../hooks/use-resize';
|
import { useResize } from '~/hooks/use-resize';
|
||||||
import { useScreenLargerThan } from '../../../hooks/useScreenLargerThan';
|
import { useScreenLargerThan } from '~/hooks/useScreenLargerThan';
|
||||||
import { CategoryType } from '../../../types/category';
|
import { CategoryType } from '~/types/category';
|
||||||
import { WrapperType } from '../../../types/wrapper';
|
import { WrapperType } from '~/types/wrapper';
|
||||||
import { DashboardCategory } from '../Wrappers/Category/Category';
|
import { DashboardCategory } from '../Wrappers/Category/Category';
|
||||||
import { DashboardSidebar } from '../Wrappers/Sidebar/Sidebar';
|
import { DashboardSidebar } from '../Wrappers/Sidebar/Sidebar';
|
||||||
import { DashboardWrapper } from '../Wrappers/Wrapper/Wrapper';
|
import { DashboardWrapper } from '../Wrappers/Wrapper/Wrapper';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { ActionIcon, Button, Text, Tooltip } from '@mantine/core';
|
|||||||
import { IconEdit, IconEditOff } from '@tabler/icons-react';
|
import { IconEdit, IconEditOff } from '@tabler/icons-react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { useScreenLargerThan } from '../../../hooks/useScreenLargerThan';
|
import { useScreenLargerThan } from '~/hooks/useScreenLargerThan';
|
||||||
import { useEditModeStore } from './useEditModeStore';
|
import { useEditModeStore } from './useEditModeStore';
|
||||||
|
|
||||||
export const ViewToggleButton = () => {
|
export const ViewToggleButton = () => {
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ import { modals } from '@mantine/modals';
|
|||||||
import { IconDotsVertical, IconShare3 } from '@tabler/icons-react';
|
import { IconDotsVertical, IconShare3 } from '@tabler/icons-react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { CategoryType } from '../../../../types/category';
|
import { CategoryType } from '~/types/category';
|
||||||
import { useCardStyles } from '../../../layout/Common/useCardStyles';
|
import { useCardStyles } from '../../../layout/Common/useCardStyles';
|
||||||
import { useEditModeStore } from '../../Views/useEditModeStore';
|
import { useEditModeStore } from '../../Views/useEditModeStore';
|
||||||
import { WrapperContent } from '../WrapperContent';
|
import { WrapperContent } from '../WrapperContent';
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import {
|
|||||||
IconTrash,
|
IconTrash,
|
||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { CategoryType } from '../../../../types/category';
|
import { CategoryType } from '~/types/category';
|
||||||
import { useCategoryActions } from './useCategoryActions';
|
import { useCategoryActions } from './useCategoryActions';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import { useForm } from '@mantine/form';
|
|||||||
import { ContextModalProps } from '@mantine/modals';
|
import { ContextModalProps } from '@mantine/modals';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { CategoryType } from '../../../../types/category';
|
import { CategoryType } from '~/types/category';
|
||||||
|
|
||||||
export type CategoryEditModalInnerProps = {
|
export type CategoryEditModalInnerProps = {
|
||||||
category: CategoryType;
|
category: CategoryType;
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { openContextModalGeneric } from '../../../../tools/mantineModalManagerExtensions';
|
import { openContextModalGeneric } from '~/tools/mantineModalManagerExtensions';
|
||||||
import { AppType } from '../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { CategoryType } from '../../../../types/category';
|
import { CategoryType } from '~/types/category';
|
||||||
import { WrapperType } from '../../../../types/wrapper';
|
import { WrapperType } from '~/types/wrapper';
|
||||||
import { IWidget } from '../../../../widgets/widgets';
|
import { IWidget } from '~/widgets/widgets';
|
||||||
import { CategoryEditModalInnerProps } from './CategoryEditModal';
|
import { CategoryEditModalInnerProps } from './CategoryEditModal';
|
||||||
|
|
||||||
export const useCategoryActions = (configName: string | undefined, category: CategoryType) => {
|
export const useCategoryActions = (configName: string | undefined, category: CategoryType) => {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { WrapperType } from '../../../../types/wrapper';
|
import { WrapperType } from '~/types/wrapper';
|
||||||
import { useEditModeStore } from '../../Views/useEditModeStore';
|
import { useEditModeStore } from '../../Views/useEditModeStore';
|
||||||
import { WrapperContent } from '../WrapperContent';
|
import { WrapperContent } from '../WrapperContent';
|
||||||
import { useGridstack } from '../gridstack/use-gridstack';
|
import { useGridstack } from '../gridstack/use-gridstack';
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { GridStack } from 'fily-publish-gridstack';
|
import { GridStack } from 'fily-publish-gridstack';
|
||||||
import { MutableRefObject, RefObject } from 'react';
|
import { MutableRefObject, RefObject } from 'react';
|
||||||
|
|
||||||
import { AppType } from '../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import Widgets from '../../../widgets';
|
import Widgets from '../../../widgets';
|
||||||
import { WidgetWrapper } from '../../../widgets/WidgetWrapper';
|
import { WidgetWrapper } from '~/widgets/WidgetWrapper';
|
||||||
import { IWidget, IWidgetDefinition } from '../../../widgets/widgets';
|
import { IWidget, IWidgetDefinition } from '~/widgets/widgets';
|
||||||
import { appTileDefinition } from '../Tiles/Apps/AppTile';
|
import { appTileDefinition } from '../Tiles/Apps/AppTile';
|
||||||
import { GridstackTileWrapper } from '../Tiles/TileWrapper';
|
import { GridstackTileWrapper } from '../Tiles/TileWrapper';
|
||||||
import { useGridstackStore } from './gridstack/store';
|
import { useGridstackStore } from './gridstack/store';
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { GridItemHTMLElement, GridStack, GridStackNode } from 'fily-publish-gridstack';
|
import { GridItemHTMLElement, GridStack, GridStackNode } from 'fily-publish-gridstack';
|
||||||
import { MutableRefObject, RefObject } from 'react';
|
import { MutableRefObject, RefObject } from 'react';
|
||||||
|
|
||||||
import { AppType } from '../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { ShapeType } from '../../../../types/shape';
|
import { ShapeType } from '~/types/shape';
|
||||||
import { IWidget } from '../../../../widgets/widgets';
|
import { IWidget } from '~/widgets/widgets';
|
||||||
|
|
||||||
export const initializeGridstack = (
|
export const initializeGridstack = (
|
||||||
areaType: 'wrapper' | 'category' | 'sidebar',
|
areaType: 'wrapper' | 'category' | 'sidebar',
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { createWithEqualityFn } from 'zustand/traditional';
|
import { createWithEqualityFn } from 'zustand/traditional';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { GridstackBreakpoints } from '../../../../constants/gridstack-breakpoints';
|
import { GridstackBreakpoints } from '~/constants/gridstack-breakpoints';
|
||||||
|
|
||||||
export const useGridstackStore = createWithEqualityFn<GridstackStoreType>(
|
export const useGridstackStore = createWithEqualityFn<GridstackStoreType>(
|
||||||
(set, get) => ({
|
(set, get) => ({
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { GridStack, GridStackNode } from 'fily-publish-gridstack';
|
import { GridStack, GridStackNode } from 'fily-publish-gridstack';
|
||||||
import { MutableRefObject, RefObject, createRef, useEffect, useMemo, useRef } from 'react';
|
import { MutableRefObject, RefObject, createRef, useEffect, useMemo, useRef } from 'react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { AppType } from '../../../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { AreaType } from '../../../../types/area';
|
import { AreaType } from '~/types/area';
|
||||||
import { IWidget } from '../../../../widgets/widgets';
|
import { IWidget } from '~/widgets/widgets';
|
||||||
import { useEditModeStore } from '../../Views/useEditModeStore';
|
import { useEditModeStore } from '../../Views/useEditModeStore';
|
||||||
import { TileWithUnknownLocation, initializeGridstack } from './init-gridstack';
|
import { TileWithUnknownLocation, initializeGridstack } from './init-gridstack';
|
||||||
import { useGridstackStore, useWrapperColumnCount } from './store';
|
import { useGridstackStore, useWrapperColumnCount } from './store';
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import { useTranslation } from 'next-i18next';
|
|||||||
import { forwardRef, useImperativeHandle, useState } from 'react';
|
import { forwardRef, useImperativeHandle, useState } from 'react';
|
||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
import { humanFileSize } from '../../tools/humanFileSize';
|
import { humanFileSize } from '~/tools/humanFileSize';
|
||||||
import { DebouncedImage } from './DebouncedImage';
|
import { DebouncedImage } from './DebouncedImage';
|
||||||
|
|
||||||
export const IconSelector = forwardRef(
|
export const IconSelector = forwardRef(
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { forwardRef, useState } from 'react';
|
|||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
import { COOKIE_LOCALE_KEY } from '../../../../../data/constants';
|
import { COOKIE_LOCALE_KEY } from '../../../../../data/constants';
|
||||||
import { Language, getLanguageByCode } from '../../../../tools/language';
|
import { Language, getLanguageByCode } from '~/tools/language';
|
||||||
|
|
||||||
export default function LanguageSelect() {
|
export default function LanguageSelect() {
|
||||||
const { data: sessionData } = useSession();
|
const { data: sessionData } = useSession();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Group, Image, Text } from '@mantine/core';
|
import { Group, Image, Text } from '@mantine/core';
|
||||||
import { useScreenLargerThan } from '~/hooks/useScreenLargerThan';
|
import { useScreenLargerThan } from '~/hooks/useScreenLargerThan';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { usePrimaryGradient } from './useGradient';
|
import { usePrimaryGradient } from './useGradient';
|
||||||
|
|
||||||
interface LogoProps {
|
interface LogoProps {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { createStyles } from '@mantine/core';
|
import { createStyles } from '@mantine/core';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
|
|
||||||
export const useCardStyles = (isCategory: boolean) => {
|
export const useCardStyles = (isCategory: boolean) => {
|
||||||
const { config } = useConfigContext();
|
const { config } = useConfigContext();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { MantineGradient } from '@mantine/core';
|
import { MantineGradient } from '@mantine/core';
|
||||||
|
|
||||||
import { useColorTheme } from '../../../tools/color';
|
import { useColorTheme } from '~/tools/color';
|
||||||
|
|
||||||
export const usePrimaryGradient = () => {
|
export const usePrimaryGradient = () => {
|
||||||
const { primaryColor, secondaryColor } = useColorTheme();
|
const { primaryColor, secondaryColor } = useColorTheme();
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import Head from 'next/head';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { firstUpperCase } from '~/tools/shared/strings';
|
import { firstUpperCase } from '~/tools/shared/strings';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
|
|
||||||
export const BoardHeadOverride = () => {
|
export const BoardHeadOverride = () => {
|
||||||
const { config, name } = useConfigContext();
|
const { config, name } = useConfigContext();
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ import { Trans, i18n, useTranslation } from 'next-i18next';
|
|||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import { ReactNode } from 'react';
|
import { ReactNode } from 'react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useConfigStore } from '../../../../config/store';
|
import { useConfigStore } from '~/config/store';
|
||||||
import { usePackageAttributesStore } from '../../../../tools/client/zustands/usePackageAttributesStore';
|
import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore';
|
||||||
import { useColorTheme } from '../../../../tools/color';
|
import { useColorTheme } from '~/tools/color';
|
||||||
import { usePrimaryGradient } from '../../Common/useGradient';
|
import { usePrimaryGradient } from '../../Common/useGradient';
|
||||||
import Credits from './Credits';
|
import Credits from './Credits';
|
||||||
import Tip from './Tip';
|
import Tip from './Tip';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Anchor, Box, Collapse, Flex, Table, Text } from '@mantine/core';
|
|||||||
import { useDisclosure } from '@mantine/hooks';
|
import { useDisclosure } from '@mantine/hooks';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { usePackageAttributesStore } from '../../../../tools/client/zustands/usePackageAttributesStore';
|
import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore';
|
||||||
|
|
||||||
export default function Credits() {
|
export default function Credits() {
|
||||||
const { t } = useTranslation('settings/common');
|
const { t } = useTranslation('settings/common');
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
import { ConfigType } from '../types/config';
|
import { ConfigType } from '~/types/config';
|
||||||
import { useConfigContext } from './provider';
|
import { useConfigContext } from './provider';
|
||||||
import { useConfigStore } from './store';
|
import { useConfigStore } from './store';
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { ReactNode, createContext, useContext, useEffect, useState } from 'react';
|
import { ReactNode, createContext, useContext, useEffect, useState } from 'react';
|
||||||
import { shallow } from 'zustand/shallow';
|
import { shallow } from 'zustand/shallow';
|
||||||
|
|
||||||
import { useColorTheme } from '../tools/color';
|
import { useColorTheme } from '~/tools/color';
|
||||||
import { ConfigType } from '../types/config';
|
import { ConfigType } from '~/types/config';
|
||||||
import { useConfigStore } from './store';
|
import { useConfigStore } from './store';
|
||||||
|
|
||||||
export type ConfigContextType = {
|
export type ConfigContextType = {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { createWithEqualityFn } from 'zustand/traditional';
|
import { createWithEqualityFn } from 'zustand/traditional';
|
||||||
import { trcpProxyClient } from '~/utils/api';
|
import { trcpProxyClient } from '~/utils/api';
|
||||||
|
|
||||||
import { ConfigType } from '../types/config';
|
import { ConfigType } from '~/types/config';
|
||||||
|
|
||||||
export const useConfigStore = createWithEqualityFn<UseConfigStoreType>(
|
export const useConfigStore = createWithEqualityFn<UseConfigStoreType>(
|
||||||
(set, get) => ({
|
(set, get) => ({
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import { useTranslation } from 'next-i18next';
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
import { useCardStyles } from '../../components/layout/Common/useCardStyles';
|
import { useCardStyles } from '~/components/layout/Common/useCardStyles';
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import ContainerActionBar from './ContainerActionBar';
|
import ContainerActionBar from './ContainerActionBar';
|
||||||
import DockerTable from './DockerTable';
|
import DockerTable from './DockerTable';
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import Dockerode, { ContainerInfo } from 'dockerode';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { Dispatch, SetStateAction, useEffect, useMemo, useState } from 'react';
|
import { Dispatch, SetStateAction, useEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import { MIN_WIDTH_MOBILE } from '../../constants/constants';
|
import { MIN_WIDTH_MOBILE } from '~/constants/constants';
|
||||||
import ContainerState from './ContainerState';
|
import ContainerState from './ContainerState';
|
||||||
|
|
||||||
const useStyles = createStyles((theme) => ({
|
const useStyles = createStyles((theme) => ({
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import { IconDownload, IconExternalLink, IconPlayerPlay } from '@tabler/icons-re
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useColorTheme } from '../../tools/color';
|
import { useColorTheme } from '~/tools/color';
|
||||||
import { RequestModal } from '../overseerr/RequestModal';
|
import { RequestModal } from '../overseerr/RequestModal';
|
||||||
import { Result } from '../overseerr/SearchResult';
|
import { Result } from '../overseerr/SearchResult';
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { useState } from 'react';
|
|||||||
import { useConfigContext } from '~/config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
import { useColorTheme } from '../../tools/color';
|
import { useColorTheme } from '~/tools/color';
|
||||||
import { MovieResult } from './Movie.d';
|
import { MovieResult } from './Movie.d';
|
||||||
import { Result } from './SearchResult';
|
import { Result } from './SearchResult';
|
||||||
import { TvShowResult, TvShowResultSeason } from './TvShow.d';
|
import { TvShowResult, TvShowResultSeason } from './TvShow.d';
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import Link from 'next/link';
|
|||||||
import pageNotFoundImage from '~/images/undraw_page_not_found_re_e9o6.svg';
|
import pageNotFoundImage from '~/images/undraw_page_not_found_re_e9o6.svg';
|
||||||
import { pageNotFoundNamespaces } from '~/tools/server/translation-namespaces';
|
import { pageNotFoundNamespaces } from '~/tools/server/translation-namespaces';
|
||||||
|
|
||||||
import { getServerSideTranslations } from '../tools/server/getServerSideTranslations';
|
import { getServerSideTranslations } from '~/tools/server/getServerSideTranslations';
|
||||||
|
|
||||||
export default function Custom404() {
|
export default function Custom404() {
|
||||||
const { classes } = useStyles();
|
const { classes } = useStyles();
|
||||||
|
|||||||
@@ -26,15 +26,15 @@ import { colorSchemeParser } from '~/validations/user';
|
|||||||
|
|
||||||
import { COOKIE_COLOR_SCHEME_KEY, COOKIE_LOCALE_KEY } from '../../data/constants';
|
import { COOKIE_COLOR_SCHEME_KEY, COOKIE_LOCALE_KEY } from '../../data/constants';
|
||||||
import nextI18nextConfig from '../../next-i18next.config.js';
|
import nextI18nextConfig from '../../next-i18next.config.js';
|
||||||
import { ConfigProvider } from '../config/provider';
|
import { ConfigProvider } from '~/config/provider';
|
||||||
import '../styles/global.scss';
|
import '../styles/global.scss';
|
||||||
import { usePackageAttributesStore } from '../tools/client/zustands/usePackageAttributesStore';
|
import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore';
|
||||||
import { ColorTheme } from '../tools/color';
|
import { ColorTheme } from '~/tools/color';
|
||||||
import {
|
import {
|
||||||
ServerSidePackageAttributesType,
|
ServerSidePackageAttributesType,
|
||||||
getServiceSidePackageAttributes,
|
getServiceSidePackageAttributes,
|
||||||
} from '../tools/server/getPackageVersion';
|
} from '~/tools/server/getPackageVersion';
|
||||||
import { theme } from '../tools/server/theme/theme';
|
import { theme } from '~/tools/server/theme/theme';
|
||||||
|
|
||||||
dayjs.extend(locale);
|
dayjs.extend(locale);
|
||||||
dayjs.extend(utc);
|
dayjs.extend(utc);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { BackendConfigType, ConfigType } from '~/types/config';
|
|||||||
import { boardCustomizationSchema } from '~/validations/boards';
|
import { boardCustomizationSchema } from '~/validations/boards';
|
||||||
import { IRssWidget } from '~/widgets/rss/RssWidgetTile';
|
import { IRssWidget } from '~/widgets/rss/RssWidgetTile';
|
||||||
|
|
||||||
import { getConfig } from '../../../tools/config/getConfig';
|
import { getConfig } from '~/tools/config/getConfig';
|
||||||
import { adminProcedure, createTRPCRouter, publicProcedure } from '../trpc';
|
import { adminProcedure, createTRPCRouter, publicProcedure } from '../trpc';
|
||||||
|
|
||||||
const configNameSchema = z.string().regex(/^[a-zA-Z0-9-_]+$/);
|
const configNameSchema = z.string().regex(/^[a-zA-Z0-9-_]+$/);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ConfigAppType, IntegrationField, IntegrationType } from '../../types/app';
|
import { ConfigAppType, IntegrationField, IntegrationType } from '~/types/app';
|
||||||
|
|
||||||
export const findAppProperty = (app: ConfigAppType, key: IntegrationField) =>
|
export const findAppProperty = (app: ConfigAppType, key: IntegrationField) =>
|
||||||
app.integration?.properties.find((prop) => prop.field === key)?.value ?? '';
|
app.integration?.properties.find((prop) => prop.field === key)?.value ?? '';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import Consola from 'consola';
|
import Consola from 'consola';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
import { BackendConfigType, ConfigType } from '../../types/config';
|
import { BackendConfigType, ConfigType } from '~/types/config';
|
||||||
import { configExists } from './configExists';
|
import { configExists } from './configExists';
|
||||||
import { getFallbackConfig } from './getFallbackConfig';
|
import { getFallbackConfig } from './getFallbackConfig';
|
||||||
import { readConfig } from './readConfig';
|
import { readConfig } from './readConfig';
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import fs from 'fs';
|
|||||||
import { fetchCity } from '~/server/api/routers/weather';
|
import { fetchCity } from '~/server/api/routers/weather';
|
||||||
import { IntegrationField } from '~/types/app';
|
import { IntegrationField } from '~/types/app';
|
||||||
|
|
||||||
import { BackendConfigType, ConfigType } from '../../types/config';
|
import { BackendConfigType, ConfigType } from '~/types/config';
|
||||||
import { getConfig } from './getConfig';
|
import { getConfig } from './getConfig';
|
||||||
|
|
||||||
export const getFrontendConfig = async (name: string): Promise<ConfigType> => {
|
export const getFrontendConfig = async (name: string): Promise<ConfigType> => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
|
||||||
import { BackendConfigType } from '../../types/config';
|
import { BackendConfigType } from '~/types/config';
|
||||||
import { generateConfigPath } from './generateConfigPath';
|
import { generateConfigPath } from './generateConfigPath';
|
||||||
|
|
||||||
export function writeConfig(config: BackendConfigType) {
|
export function writeConfig(config: BackendConfigType) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import { trimStringEnding } from '../../../shared/strings';
|
import { trimStringEnding } from '~/tools/shared/strings';
|
||||||
import {
|
import {
|
||||||
adGuardApiFilteringStatusSchema,
|
adGuardApiFilteringStatusSchema,
|
||||||
adGuardApiStatsResponseSchema,
|
adGuardApiStatsResponseSchema,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { trimStringEnding } from '../../../shared/strings';
|
import { trimStringEnding } from '~/tools/shared/strings';
|
||||||
import { PiHoleApiStatusChangeResponse, PiHoleApiSummaryResponse } from './piHole.type';
|
import { PiHoleApiStatusChangeResponse, PiHoleApiSummaryResponse } from './piHole.type';
|
||||||
|
|
||||||
export class PiHoleClient {
|
export class PiHoleClient {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { Element, xml2js } from 'xml-js';
|
|||||||
import {
|
import {
|
||||||
GenericCurrentlyPlaying,
|
GenericCurrentlyPlaying,
|
||||||
GenericSessionInfo,
|
GenericSessionInfo,
|
||||||
} from '../../../../types/api/media-server/session-info';
|
} from '~/types/api/media-server/session-info';
|
||||||
|
|
||||||
export class PlexClient {
|
export class PlexClient {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { NormalizedTorrent } from '@ctrl/shared-torrent';
|
import { NormalizedTorrent } from '@ctrl/shared-torrent';
|
||||||
|
|
||||||
import { UsenetQueueItem } from '../../../../widgets/useNet/types';
|
import { UsenetQueueItem } from '~/widgets/useNet/types';
|
||||||
|
|
||||||
export type NormalizedDownloadQueueResponse = {
|
export type NormalizedDownloadQueueResponse = {
|
||||||
apps: NormalizedDownloadAppStat[];
|
apps: NormalizedDownloadAppStat[];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IWidget } from '../widgets/widgets';
|
import { IWidget } from '~/widgets/widgets';
|
||||||
import { AppType, ConfigAppType } from './app';
|
import { AppType, ConfigAppType } from './app';
|
||||||
import { CategoryType } from './category';
|
import { CategoryType } from './category';
|
||||||
import { SettingsType } from './settings';
|
import { SettingsType } from './settings';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { ComponentType } from 'react';
|
import { ComponentType } from 'react';
|
||||||
|
|
||||||
import Widgets from '.';
|
import Widgets from '.';
|
||||||
import { HomarrCardWrapper } from '../components/Dashboard/Tiles/HomarrCardWrapper';
|
import { HomarrCardWrapper } from '~/components/Dashboard/Tiles/HomarrCardWrapper';
|
||||||
import { WidgetsMenu } from '../components/Dashboard/Tiles/Widgets/WidgetsMenu';
|
import { WidgetsMenu } from '~/components/Dashboard/Tiles/Widgets/WidgetsMenu';
|
||||||
import ErrorBoundary from './boundary';
|
import ErrorBoundary from './boundary';
|
||||||
import { IWidget } from './widgets';
|
import { IWidget } from './widgets';
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ import { v4 } from 'uuid';
|
|||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore';
|
import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore';
|
||||||
import { IconSelector } from '../../components/IconSelector/IconSelector';
|
import { IconSelector } from '~/components/IconSelector/IconSelector';
|
||||||
import { defineWidget } from '../helper';
|
import { defineWidget } from '../helper';
|
||||||
import { IDraggableEditableListInputValue, IWidget } from '../widgets';
|
import { IDraggableEditableListInputValue, IWidget } from '../widgets';
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Consola from 'consola';
|
|||||||
import { withTranslation } from 'next-i18next';
|
import { withTranslation } from 'next-i18next';
|
||||||
import React, { ReactNode } from 'react';
|
import React, { ReactNode } from 'react';
|
||||||
|
|
||||||
import { WidgetsMenu } from '../components/Dashboard/Tiles/Widgets/WidgetsMenu';
|
import { WidgetsMenu } from '~/components/Dashboard/Tiles/Widgets/WidgetsMenu';
|
||||||
import { IWidget } from './widgets';
|
import { IWidget } from './widgets';
|
||||||
|
|
||||||
type ErrorBoundaryState = {
|
type ErrorBoundaryState = {
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import { useState } from 'react';
|
|||||||
import { getLanguageByCode } from '~/tools/language';
|
import { getLanguageByCode } from '~/tools/language';
|
||||||
import { RouterOutputs, api } from '~/utils/api';
|
import { RouterOutputs, api } from '~/utils/api';
|
||||||
|
|
||||||
import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore';
|
import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore';
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { defineWidget } from '../helper';
|
import { defineWidget } from '../helper';
|
||||||
import { IWidget } from '../widgets';
|
import { IWidget } from '../widgets';
|
||||||
import { CalendarDay } from './CalendarDay';
|
import { CalendarDay } from './CalendarDay';
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
RadarrMediaDisplay,
|
RadarrMediaDisplay,
|
||||||
ReadarrMediaDisplay,
|
ReadarrMediaDisplay,
|
||||||
SonarrMediaDisplay,
|
SonarrMediaDisplay,
|
||||||
} from '../../modules/common';
|
} from '~/modules/common';
|
||||||
import { MediasType } from './type';
|
import { MediasType } from './type';
|
||||||
|
|
||||||
interface MediaListProps {
|
interface MediaListProps {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ColorScheme, useMantineTheme } from '@mantine/core';
|
import { ColorScheme, useMantineTheme } from '@mantine/core';
|
||||||
|
|
||||||
import { isToday } from '../../tools/shared/time/date.tool';
|
import { isToday } from '~/tools/shared/time/date.tool';
|
||||||
|
|
||||||
export const getBgColorByDateAndTheme = (colorScheme: ColorScheme, date: Date) => {
|
export const getBgColorByDateAndTheme = (colorScheme: ColorScheme, date: Date) => {
|
||||||
if (!isToday(date)) {
|
if (!isToday(date)) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { IconArrowNarrowDown, IconArrowNarrowUp } from '@tabler/icons-react';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { RouterOutputs } from '~/utils/api';
|
import { RouterOutputs } from '~/utils/api';
|
||||||
|
|
||||||
import { bytes } from '../../tools/bytesHelper';
|
import { bytes } from '~/tools/bytesHelper';
|
||||||
|
|
||||||
interface DashDotCompactNetworkProps {
|
interface DashDotCompactNetworkProps {
|
||||||
info: DashDotInfo;
|
info: DashDotInfo;
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { Group, Stack, Text } from '@mantine/core';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
import { bytes } from '../../tools/bytesHelper';
|
import { bytes } from '~/tools/bytesHelper';
|
||||||
import { percentage } from '../../tools/shared/math/percentage.tool';
|
import { percentage } from '~/tools/shared/math/percentage.tool';
|
||||||
import { DashDotInfo } from './DashDotCompactNetwork';
|
import { DashDotInfo } from './DashDotCompactNetwork';
|
||||||
|
|
||||||
interface DashDotCompactStorageProps {
|
interface DashDotCompactStorageProps {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { useEffect, useRef, useState } from 'react';
|
|||||||
import { getLanguageByCode } from '~/tools/language';
|
import { getLanguageByCode } from '~/tools/language';
|
||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
import { useSetSafeInterval } from '../../hooks/useSetSafeInterval';
|
import { useSetSafeInterval } from '~/hooks/useSetSafeInterval';
|
||||||
import { defineWidget } from '../helper';
|
import { defineWidget } from '../helper';
|
||||||
import { IWidget } from '../widgets';
|
import { IWidget } from '../widgets';
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { useSession } from 'next-auth/react';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { defineWidget } from '../helper';
|
import { defineWidget } from '../helper';
|
||||||
import { WidgetLoading } from '../loading';
|
import { WidgetLoading } from '../loading';
|
||||||
import { IWidget } from '../widgets';
|
import { IWidget } from '../widgets';
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { useTranslation } from 'next-i18next';
|
|||||||
import { useConfigContext } from '~/config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { RouterOutputs, api } from '~/utils/api';
|
import { RouterOutputs, api } from '~/utils/api';
|
||||||
|
|
||||||
import { formatNumber, formatPercentage } from '../../tools/client/math';
|
import { formatNumber, formatPercentage } from '~/tools/client/math';
|
||||||
import { defineWidget } from '../helper';
|
import { defineWidget } from '../helper';
|
||||||
import { WidgetLoading } from '../loading';
|
import { WidgetLoading } from '../loading';
|
||||||
import { IWidget } from '../widgets';
|
import { IWidget } from '../widgets';
|
||||||
|
|||||||
@@ -16,15 +16,15 @@ import { IconDownload, IconUpload } from '@tabler/icons-react';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
import { AppAvatar } from '../../components/AppAvatar';
|
import { AppAvatar } from '~/components/AppAvatar';
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useGetDownloadClientsQueue } from './useGetNetworkSpeed';
|
import { useGetDownloadClientsQueue } from './useGetNetworkSpeed';
|
||||||
import { useColorTheme } from '../../tools/color';
|
import { useColorTheme } from '~/tools/color';
|
||||||
import { humanFileSize } from '../../tools/humanFileSize';
|
import { humanFileSize } from '~/tools/humanFileSize';
|
||||||
import {
|
import {
|
||||||
NormalizedDownloadQueueResponse,
|
NormalizedDownloadQueueResponse,
|
||||||
TorrentTotalDownload,
|
TorrentTotalDownload,
|
||||||
} from '../../types/api/downloads/queue/NormalizedDownloadQueueResponse';
|
} from '~/types/api/downloads/queue/NormalizedDownloadQueueResponse';
|
||||||
import definition, { ITorrentNetworkTraffic } from './TorrentNetworkTrafficTile';
|
import definition, { ITorrentNetworkTraffic } from './TorrentNetworkTrafficTile';
|
||||||
|
|
||||||
interface TorrentNetworkTrafficTileProps {
|
interface TorrentNetworkTrafficTileProps {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Card, Divider, Flex, Grid, Group, Text } from '@mantine/core';
|
import { Card, Divider, Flex, Grid, Group, Text } from '@mantine/core';
|
||||||
import { IconDeviceMobile, IconId } from '@tabler/icons-react';
|
import { IconDeviceMobile, IconId } from '@tabler/icons-react';
|
||||||
|
|
||||||
import { GenericSessionInfo } from '../../types/api/media-server/session-info';
|
import { GenericSessionInfo } from '~/types/api/media-server/session-info';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
export const DetailCollapseable = ({ session }: { session: GenericSessionInfo }) => {
|
export const DetailCollapseable = ({ session }: { session: GenericSessionInfo }) => {
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ import {
|
|||||||
import { IconAlertTriangle, IconMovie } from '@tabler/icons-react';
|
import { IconAlertTriangle, IconMovie } from '@tabler/icons-react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { AppAvatar } from '../../components/AppAvatar';
|
import { AppAvatar } from '~/components/AppAvatar';
|
||||||
import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore';
|
import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore';
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { useGetMediaServers } from './useGetMediaServers';
|
import { useGetMediaServers } from './useGetMediaServers';
|
||||||
import { defineWidget } from '../helper';
|
import { defineWidget } from '../helper';
|
||||||
import { IWidget } from '../widgets';
|
import { IWidget } from '../widgets';
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
|
||||||
import { GenericSessionInfo } from '../../types/api/media-server/session-info';
|
import { GenericSessionInfo } from '~/types/api/media-server/session-info';
|
||||||
|
|
||||||
export const NowPlayingDisplay = ({ session }: { session: GenericSessionInfo }) => {
|
export const NowPlayingDisplay = ({ session }: { session: GenericSessionInfo }) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { Avatar, Collapse, Flex, Text, createStyles } from '@mantine/core';
|
import { Avatar, Collapse, Flex, Text, createStyles } from '@mantine/core';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|
||||||
import { AppAvatar } from '../../components/AppAvatar';
|
import { AppAvatar } from '~/components/AppAvatar';
|
||||||
import { GenericSessionInfo } from '../../types/api/media-server/session-info';
|
import { GenericSessionInfo } from '~/types/api/media-server/session-info';
|
||||||
import { AppType } from '../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
import { DetailCollapseable } from './DetailCollapseable';
|
import { DetailCollapseable } from './DetailCollapseable';
|
||||||
import { NowPlayingDisplay } from './NowPlayingDisplay';
|
import { NowPlayingDisplay } from './NowPlayingDisplay';
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import { useConfigStore } from '~/config/store';
|
|||||||
import { useColorTheme } from '~/tools/color';
|
import { useColorTheme } from '~/tools/color';
|
||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore';
|
import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore';
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { WidgetLoading } from '../loading';
|
import { WidgetLoading } from '../loading';
|
||||||
import { INotebookWidget } from './NotebookWidgetTile';
|
import { INotebookWidget } from './NotebookWidgetTile';
|
||||||
|
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ import {
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { MIN_WIDTH_MOBILE } from '~/constants/constants';
|
import { MIN_WIDTH_MOBILE } from '~/constants/constants';
|
||||||
|
|
||||||
import { calculateETA } from '../../tools/client/calculateEta';
|
import { calculateETA } from '~/tools/client/calculateEta';
|
||||||
import { humanFileSize } from '../../tools/humanFileSize';
|
import { humanFileSize } from '~/tools/humanFileSize';
|
||||||
import { AppType } from '../../types/app';
|
import { AppType } from '~/types/app';
|
||||||
|
|
||||||
interface TorrentQueueItemProps {
|
interface TorrentQueueItemProps {
|
||||||
torrent: NormalizedTorrent;
|
torrent: NormalizedTorrent;
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ import relativeTime from 'dayjs/plugin/relativeTime';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useCardStyles } from '~/components/layout/Common/useCardStyles';
|
import { useCardStyles } from '~/components/layout/Common/useCardStyles';
|
||||||
|
|
||||||
import { MIN_WIDTH_MOBILE } from '../../constants/constants';
|
import { MIN_WIDTH_MOBILE } from '~/constants/constants';
|
||||||
import { NormalizedDownloadQueueResponse } from '../../types/api/downloads/queue/NormalizedDownloadQueueResponse';
|
import { NormalizedDownloadQueueResponse } from '~/types/api/downloads/queue/NormalizedDownloadQueueResponse';
|
||||||
import { AppIntegrationType } from '../../types/app';
|
import { AppIntegrationType } from '~/types/app';
|
||||||
import { useGetDownloadClientsQueue } from '../download-speed/useGetNetworkSpeed';
|
import { useGetDownloadClientsQueue } from '../download-speed/useGetNetworkSpeed';
|
||||||
import { defineWidget } from '../helper';
|
import { defineWidget } from '../helper';
|
||||||
import { IWidget } from '../widgets';
|
import { IWidget } from '../widgets';
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import { useSession } from 'next-auth/react';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
import { useConfigContext } from '../../config/provider';
|
import { useConfigContext } from '~/config/provider';
|
||||||
import { MIN_WIDTH_MOBILE } from '../../constants/constants';
|
import { MIN_WIDTH_MOBILE } from '~/constants/constants';
|
||||||
import { humanFileSize } from '../../tools/humanFileSize';
|
import { humanFileSize } from '~/tools/humanFileSize';
|
||||||
import { AppIntegrationType } from '../../types/app';
|
import { AppIntegrationType } from '~/types/app';
|
||||||
import {
|
import {
|
||||||
useGetUsenetInfo,
|
useGetUsenetInfo,
|
||||||
usePauseUsenetQueueMutation,
|
usePauseUsenetQueueMutation,
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ import { useTranslation } from 'next-i18next';
|
|||||||
import { FunctionComponent, useState } from 'react';
|
import { FunctionComponent, useState } from 'react';
|
||||||
|
|
||||||
import { useGetUsenetHistory } from '../dashDot/api';
|
import { useGetUsenetHistory } from '../dashDot/api';
|
||||||
import { parseDuration } from '../../tools/client/parseDuration';
|
import { parseDuration } from '~/tools/client/parseDuration';
|
||||||
import { humanFileSize } from '../../tools/humanFileSize';
|
import { humanFileSize } from '~/tools/humanFileSize';
|
||||||
|
|
||||||
dayjs.extend(duration);
|
dayjs.extend(duration);
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import duration from 'dayjs/plugin/duration';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { FunctionComponent, useState } from 'react';
|
import { FunctionComponent, useState } from 'react';
|
||||||
|
|
||||||
import { humanFileSize } from '../../tools/humanFileSize';
|
import { humanFileSize } from '~/tools/humanFileSize';
|
||||||
import { useGetUsenetDownloads } from '../dashDot/api';
|
import { useGetUsenetDownloads } from '../dashDot/api';
|
||||||
|
|
||||||
dayjs.extend(duration);
|
dayjs.extend(duration);
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import {
|
|||||||
import { Icon } from '@tabler/icons-react';
|
import { Icon } from '@tabler/icons-react';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import { AreaType } from '../types/area';
|
import { AreaType } from '~/types/area';
|
||||||
import { ShapeType } from '../types/shape';
|
import { ShapeType } from '~/types/shape';
|
||||||
|
|
||||||
// Type of widgets which are saved to config
|
// Type of widgets which are saved to config
|
||||||
export type IWidget<TKey extends string, TDefinition extends IWidgetDefinition> = {
|
export type IWidget<TKey extends string, TDefinition extends IWidgetDefinition> = {
|
||||||
|
|||||||
Reference in New Issue
Block a user