diff --git a/src/components/Dashboard/Modals/ChangePosition/ChangeIntegrationPositionModal.tsx b/src/components/Dashboard/Modals/ChangePosition/ChangeIntegrationPositionModal.tsx index a9d2217b2..68731123b 100644 --- a/src/components/Dashboard/Modals/ChangePosition/ChangeIntegrationPositionModal.tsx +++ b/src/components/Dashboard/Modals/ChangePosition/ChangeIntegrationPositionModal.tsx @@ -3,7 +3,7 @@ import { closeModal, ContextModalProps } from '@mantine/modals'; import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { IntegrationsType } from '../../../../types/integration'; -import { IntegrationChangePositionModalInnerProps } from '../../Tiles/Integrations/IntegrationsMenu'; +import { WidgetChangePositionModalInnerProps } from '../../Tiles/Widgets/WidgetsMenu'; import { Tiles } from '../../Tiles/tilesDefinitions'; import { ChangePositionModal } from './ChangePositionModal'; @@ -11,7 +11,7 @@ export const ChangeIntegrationPositionModal = ({ context, id, innerProps, -}: ContextModalProps) => { +}: ContextModalProps) => { const { name: configName } = useConfigContext(); const updateConfig = useConfigStore((x) => x.updateConfig); diff --git a/src/components/Dashboard/Tiles/Service/ServiceMenu.tsx b/src/components/Dashboard/Tiles/Service/ServiceMenu.tsx index 2ccf5deec..d0ee712cb 100644 --- a/src/components/Dashboard/Tiles/Service/ServiceMenu.tsx +++ b/src/components/Dashboard/Tiles/Service/ServiceMenu.tsx @@ -15,6 +15,11 @@ export const ServiceMenu = ({ service }: TileMenuProps) => { service, allowServiceNamePropagation: false, }, + styles: { + root: { + zIndex: 201, + }, + }, }); }; @@ -24,6 +29,11 @@ export const ServiceMenu = ({ service }: TileMenuProps) => { innerProps: { service, }, + styles: { + root: { + zIndex: 201, + }, + }, }); }; diff --git a/src/components/Dashboard/Tiles/IntegrationsEditModal.tsx b/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx similarity index 91% rename from src/components/Dashboard/Tiles/IntegrationsEditModal.tsx rename to src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx index 738fcfd53..64708e653 100644 --- a/src/components/Dashboard/Tiles/IntegrationsEditModal.tsx +++ b/src/components/Dashboard/Tiles/Widgets/WidgetsEditModal.tsx @@ -2,11 +2,11 @@ import { Button, Group, MultiSelect, Stack, Switch, TextInput } from '@mantine/c import { ContextModalProps } from '@mantine/modals'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; -import { useConfigContext } from '../../../config/provider'; -import { useConfigStore } from '../../../config/store'; -import { DashDotGraphType, IntegrationsType } from '../../../types/integration'; +import { useConfigContext } from '../../../../config/provider'; +import { useConfigStore } from '../../../../config/store'; +import { DashDotGraphType, IntegrationsType } from '../../../../types/integration'; -export type IntegrationEditModalInnerProps< +export type WidgetEditModalInnerProps< TIntegrationKey extends keyof IntegrationsType = keyof IntegrationsType > = { integration: TIntegrationKey; @@ -14,11 +14,11 @@ export type IntegrationEditModalInnerProps< labels: IntegrationOptionLabels>; }; -export const IntegrationsEditModal = ({ +export const WidgetsEditModal = ({ context, id, innerProps, -}: ContextModalProps) => { +}: ContextModalProps) => { const translationKey = integrationModuleTranslationsMap.get(innerProps.integration); const { t } = useTranslation([translationKey ?? '', 'common']); const [moduleProperties, setModuleProperties] = useState(innerProps.options); diff --git a/src/components/Dashboard/Tiles/Integrations/IntegrationsMenu.tsx b/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx similarity index 73% rename from src/components/Dashboard/Tiles/Integrations/IntegrationsMenu.tsx rename to src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx index 822454409..ce2743edc 100644 --- a/src/components/Dashboard/Tiles/Integrations/IntegrationsMenu.tsx +++ b/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx @@ -4,38 +4,38 @@ import { openContextModalGeneric } from '../../../../tools/mantineModalManagerEx import { IntegrationsType } from '../../../../types/integration'; import { TileBaseType } from '../../../../types/tile'; import { GenericTileMenu } from '../GenericTileMenu'; -import { IntegrationRemoveModalInnerProps } from '../IntegrationRemoveModal'; +import { WidgetsRemoveModalInnerProps } from './WidgetsRemoveModal'; import { - IntegrationEditModalInnerProps, + WidgetEditModalInnerProps, integrationModuleTranslationsMap, IntegrationOptionLabels, IntegrationOptions, -} from '../IntegrationsEditModal'; +} from './WidgetsEditModal'; -export type IntegrationChangePositionModalInnerProps = { +export type WidgetChangePositionModalInnerProps = { integration: keyof IntegrationsType; module: TileBaseType; }; -interface IntegrationsMenuProps { +interface WidgetsMenuProps { integration: TIntegrationKey; module: TileBaseType | undefined; options: IntegrationOptions | undefined; labels: IntegrationOptionLabels>; } -export const IntegrationsMenu = ({ +export const WidgetsMenu = ({ integration, options, labels, module, -}: IntegrationsMenuProps) => { +}: WidgetsMenuProps) => { const { t } = useTranslation(integrationModuleTranslationsMap.get(integration)); if (!module) return null; const handleDeleteClick = () => { - openContextModalGeneric({ + openContextModalGeneric({ modal: 'integrationRemove', title: {t('descriptor.remove.title')}, innerProps: { @@ -45,7 +45,7 @@ export const IntegrationsMenu = }; const handleChangeSizeClick = () => { - openContextModalGeneric({ + openContextModalGeneric({ modal: 'changeIntegrationPositionModal', size: 'xl', title: null, @@ -57,7 +57,7 @@ export const IntegrationsMenu = }; const handleEditClick = () => { - openContextModalGeneric>({ + openContextModalGeneric>({ modal: 'integrationOptions', title: {t('descriptor.settings.title')}, innerProps: { diff --git a/src/components/Dashboard/Tiles/IntegrationRemoveModal.tsx b/src/components/Dashboard/Tiles/Widgets/WidgetsRemoveModal.tsx similarity index 74% rename from src/components/Dashboard/Tiles/IntegrationRemoveModal.tsx rename to src/components/Dashboard/Tiles/Widgets/WidgetsRemoveModal.tsx index 32dfb6a83..899f0a2c5 100644 --- a/src/components/Dashboard/Tiles/IntegrationRemoveModal.tsx +++ b/src/components/Dashboard/Tiles/Widgets/WidgetsRemoveModal.tsx @@ -2,18 +2,18 @@ import React from 'react'; import { Button, Group, Stack, Text } from '@mantine/core'; import { ContextModalProps } from '@mantine/modals'; import { useTranslation } from 'next-i18next'; -import { IntegrationsType } from '../../../types/integration'; -import { integrationModuleTranslationsMap } from './IntegrationsEditModal'; +import { IntegrationsType } from '../../../../types/integration'; +import { integrationModuleTranslationsMap } from './WidgetsEditModal'; -export type IntegrationRemoveModalInnerProps = { +export type WidgetsRemoveModalInnerProps = { integration: keyof IntegrationsType; }; -export const IntegrationRemoveModal = ({ +export const WidgetsRemoveModal = ({ context, id, innerProps, -}: ContextModalProps) => { +}: ContextModalProps) => { const translationKey = integrationModuleTranslationsMap.get(innerProps.integration); const { t } = useTranslation([translationKey ?? '', 'common']); const handleDeletion = () => { diff --git a/src/components/Dashboard/Tiles/tilesDefinitions.tsx b/src/components/Dashboard/Tiles/tilesDefinitions.tsx index 4d1b66c1c..712e34fd2 100644 --- a/src/components/Dashboard/Tiles/tilesDefinitions.tsx +++ b/src/components/Dashboard/Tiles/tilesDefinitions.tsx @@ -1,15 +1,13 @@ import { IntegrationsType } from '../../../types/integration'; -import { CalendarTile } from './Calendar/CalendarTile'; -import { ClockTile } from './Clock/ClockTile'; -import { DashDotTile } from './DashDot/DashDotTile'; +import { CalendarTile } from '../../../widgets/calendar/CalendarTile'; +import { ClockTile } from '../../../widgets/clock/ClockTile'; +import { DashDotTile } from '../../../widgets/dashDot/DashDotTile'; +import { UseNetTile } from '../../../widgets/useNet/UseNetTile'; +import { WeatherTile } from '../../../widgets/weather/WeatherTile'; import { EmptyTile } from './EmptyTile'; import { ServiceTile } from './Service/ServiceTile'; -import { UseNetTile } from './UseNet/UseNetTile'; -import { WeatherTile } from './Weather/WeatherTile'; -/*import { CalendarTile } from './calendar'; -import { ClockTile } from './clock'; -import { DashDotTile } from './dash-dot';*/ +// TODO: just remove and use service (later app) directly. For widgets the the definition should contain min/max width/height type TileDefinitionProps = { [key in keyof IntegrationsType | 'service']: { minWidth?: number; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 2e2c4bdf4..96f5f9769 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -13,8 +13,8 @@ import { ChangeIntegrationPositionModal } from '../components/Dashboard/Modals/C import { ChangeServicePositionModal } from '../components/Dashboard/Modals/ChangePosition/ChangeServicePositionModal'; import { EditServiceModal } from '../components/Dashboard/Modals/EditService/EditServiceModal'; import { SelectElementModal } from '../components/Dashboard/Modals/SelectElement/SelectElementModal'; -import { IntegrationRemoveModal } from '../components/Dashboard/Tiles/IntegrationRemoveModal'; -import { IntegrationsEditModal } from '../components/Dashboard/Tiles/IntegrationsEditModal'; +import { WidgetsRemoveModal } from '../components/Dashboard/Tiles/Widgets/WidgetsRemoveModal'; +import { WidgetsEditModal } from '../components/Dashboard/Tiles/Widgets/WidgetsEditModal'; import { CategoryEditModal } from '../components/Dashboard/Wrappers/Category/CategoryEditModal'; import { ConfigProvider } from '../config/provider'; import '../styles/global.scss'; @@ -88,8 +88,8 @@ function App(this: any, props: AppProps & { colorScheme: ColorScheme }) { modals={{ editService: EditServiceModal, selectElement: SelectElementModal, - integrationOptions: IntegrationsEditModal, - integrationRemove: IntegrationRemoveModal, + integrationOptions: WidgetsEditModal, + integrationRemove: WidgetsRemoveModal, categoryEditModal: CategoryEditModal, changeServicePositionModal: ChangeServicePositionModal, changeIntegrationPositionModal: ChangeIntegrationPositionModal, diff --git a/src/components/Dashboard/Tiles/Calendar/CalendarDay.tsx b/src/widgets/calendar/CalendarDay.tsx similarity index 100% rename from src/components/Dashboard/Tiles/Calendar/CalendarDay.tsx rename to src/widgets/calendar/CalendarDay.tsx diff --git a/src/components/Dashboard/Tiles/Calendar/CalendarTile.tsx b/src/widgets/calendar/CalendarTile.tsx similarity index 85% rename from src/components/Dashboard/Tiles/Calendar/CalendarTile.tsx rename to src/widgets/calendar/CalendarTile.tsx index 0c071d68e..a9760c869 100644 --- a/src/components/Dashboard/Tiles/Calendar/CalendarTile.tsx +++ b/src/widgets/calendar/CalendarTile.tsx @@ -2,17 +2,17 @@ import { createStyles, MantineThemeColors, useMantineTheme } from '@mantine/core import { Calendar } from '@mantine/dates'; import { useQuery } from '@tanstack/react-query'; import { useState } from 'react'; -import { useConfigContext } from '../../../../config/provider'; -import { useColorTheme } from '../../../../tools/color'; -import { isToday } from '../../../../tools/isToday'; -import { CalendarIntegrationType } from '../../../../types/integration'; -import { HomarrCardWrapper } from '../HomarrCardWrapper'; -import { BaseTileProps } from '../type'; +import { HomarrCardWrapper } from '../../components/Dashboard/Tiles/HomarrCardWrapper'; +import { BaseTileProps } from '../../components/Dashboard/Tiles/type'; +import { useConfigContext } from '../../config/provider'; +import { useColorTheme } from '../../tools/color'; +import { isToday } from '../../tools/isToday'; +import { CalendarIntegrationType } from '../../types/integration'; import { CalendarDay } from './CalendarDay'; import { MediasType } from './type'; interface CalendarTileProps extends BaseTileProps { - module: CalendarIntegrationType | undefined; + module: CalendarIntegrationType | undefined; // TODO: change to new type defined through widgetDefinition } export const CalendarTile = ({ className, module }: CalendarTileProps) => { diff --git a/src/components/Dashboard/Tiles/Calendar/MediaList.tsx b/src/widgets/calendar/MediaList.tsx similarity index 97% rename from src/components/Dashboard/Tiles/Calendar/MediaList.tsx rename to src/widgets/calendar/MediaList.tsx index 5a33ae71c..f38f39340 100644 --- a/src/components/Dashboard/Tiles/Calendar/MediaList.tsx +++ b/src/widgets/calendar/MediaList.tsx @@ -5,7 +5,7 @@ import { RadarrMediaDisplay, ReadarrMediaDisplay, SonarrMediaDisplay, -} from '../../../../modules/common'; +} from '../../modules/common'; import { MediasType } from './type'; interface MediaListProps { diff --git a/src/components/Dashboard/Tiles/Calendar/type.ts b/src/widgets/calendar/type.ts similarity index 100% rename from src/components/Dashboard/Tiles/Calendar/type.ts rename to src/widgets/calendar/type.ts diff --git a/src/components/Dashboard/Tiles/Clock/ClockTile.tsx b/src/widgets/clock/ClockTile.tsx similarity index 77% rename from src/components/Dashboard/Tiles/Clock/ClockTile.tsx rename to src/widgets/clock/ClockTile.tsx index 4239816c9..0866e8e36 100644 --- a/src/components/Dashboard/Tiles/Clock/ClockTile.tsx +++ b/src/widgets/clock/ClockTile.tsx @@ -1,23 +1,24 @@ import { Center, Stack, Text, Title } from '@mantine/core'; import dayjs from 'dayjs'; import { useEffect, useRef, useState } from 'react'; -import { useSetSafeInterval } from '../../../../tools/hooks/useSetSafeInterval'; -import { ClockIntegrationType } from '../../../../types/integration'; -import { HomarrCardWrapper } from '../HomarrCardWrapper'; -import { IntegrationsMenu } from '../Integrations/IntegrationsMenu'; -import { BaseTileProps } from '../type'; +import { HomarrCardWrapper } from '../../components/Dashboard/Tiles/HomarrCardWrapper'; +import { WidgetsMenu } from '../../components/Dashboard/Tiles/Widgets/WidgetsMenu'; +import { BaseTileProps } from '../../components/Dashboard/Tiles/type'; +import { useSetSafeInterval } from '../../tools/hooks/useSetSafeInterval'; +import { ClockIntegrationType } from '../../types/integration'; interface ClockTileProps extends BaseTileProps { - module: ClockIntegrationType | undefined; + module: ClockIntegrationType; // TODO: change to new type defined through widgetDefinition } export const ClockTile = ({ className, module }: ClockTileProps) => { const date = useDateState(); const formatString = module?.properties.is24HoursFormat ? 'HH:mm' : 'h:mm A'; + // TODO: add widgetWrapper that is generic and uses the definition return ( - + integration="clock" module={module} options={module?.properties} diff --git a/src/components/Dashboard/Tiles/DashDot/DashDotCompactNetwork.tsx b/src/widgets/dashDot/DashDotCompactNetwork.tsx similarity index 95% rename from src/components/Dashboard/Tiles/DashDot/DashDotCompactNetwork.tsx rename to src/widgets/dashDot/DashDotCompactNetwork.tsx index a329e3f8c..b0c0f9f50 100644 --- a/src/components/Dashboard/Tiles/DashDot/DashDotCompactNetwork.tsx +++ b/src/widgets/dashDot/DashDotCompactNetwork.tsx @@ -1,7 +1,7 @@ import { Group, Stack, Text } from '@mantine/core'; import { IconArrowNarrowDown, IconArrowNarrowUp } from '@tabler/icons'; import { useTranslation } from 'next-i18next'; -import { bytes } from '../../../../tools/bytesHelper'; +import { bytes } from '../../tools/bytesHelper'; interface DashDotCompactNetworkProps { info: DashDotInfo; diff --git a/src/components/Dashboard/Tiles/DashDot/DashDotCompactStorage.tsx b/src/widgets/dashDot/DashDotCompactStorage.tsx similarity index 90% rename from src/components/Dashboard/Tiles/DashDot/DashDotCompactStorage.tsx rename to src/widgets/dashDot/DashDotCompactStorage.tsx index b76b61183..f990a7960 100644 --- a/src/components/Dashboard/Tiles/DashDot/DashDotCompactStorage.tsx +++ b/src/widgets/dashDot/DashDotCompactStorage.tsx @@ -2,10 +2,10 @@ import { Group, Stack, Text } from '@mantine/core'; import { useQuery } from '@tanstack/react-query'; import axios from 'axios'; import { useTranslation } from 'next-i18next'; -import { useConfigContext } from '../../../../config/provider'; -import { bytes } from '../../../../tools/bytesHelper'; -import { percentage } from '../../../../tools/percentage'; -import { DashDotInfo } from './DashDotTile'; +import { useConfigContext } from '../../config/provider'; +import { bytes } from '../../tools/bytesHelper'; +import { percentage } from '../../tools/percentage'; +import { DashDotInfo } from './DashDotCompactNetwork'; interface DashDotCompactStorageProps { info: DashDotInfo; diff --git a/src/components/Dashboard/Tiles/DashDot/DashDotGraph.tsx b/src/widgets/dashDot/DashDotGraph.tsx similarity index 100% rename from src/components/Dashboard/Tiles/DashDot/DashDotGraph.tsx rename to src/widgets/dashDot/DashDotGraph.tsx diff --git a/src/components/Dashboard/Tiles/DashDot/DashDotTile.tsx b/src/widgets/dashDot/DashDotTile.tsx similarity index 87% rename from src/components/Dashboard/Tiles/DashDot/DashDotTile.tsx rename to src/widgets/dashDot/DashDotTile.tsx index 4d61c4de2..e8c74e06f 100644 --- a/src/components/Dashboard/Tiles/DashDot/DashDotTile.tsx +++ b/src/widgets/dashDot/DashDotTile.tsx @@ -3,16 +3,16 @@ import { useQuery } from '@tanstack/react-query'; import axios from 'axios'; import { useTranslation } from 'next-i18next'; import { DashDotCompactNetwork, DashDotInfo } from './DashDotCompactNetwork'; -import { BaseTileProps } from '../type'; import { DashDotGraph } from './DashDotGraph'; -import { DashDotIntegrationType } from '../../../../types/integration'; -import { IntegrationsMenu } from '../Integrations/IntegrationsMenu'; -import { useConfigContext } from '../../../../config/provider'; -import { HomarrCardWrapper } from '../HomarrCardWrapper'; import { DashDotCompactStorage } from './DashDotCompactStorage'; +import { BaseTileProps } from '../../components/Dashboard/Tiles/type'; +import { DashDotIntegrationType } from '../../types/integration'; +import { WidgetsMenu } from '../../components/Dashboard/Tiles/Widgets/WidgetsMenu'; +import { HomarrCardWrapper } from '../../components/Dashboard/Tiles/HomarrCardWrapper'; +import { useConfigContext } from '../../config/provider'; interface DashDotTileProps extends BaseTileProps { - module: DashDotIntegrationType | undefined; + module: DashDotIntegrationType; // TODO: change to new type defined through widgetDefinition } export const DashDotTile = ({ module, className }: DashDotTileProps) => { @@ -39,7 +39,8 @@ export const DashDotTile = ({ module, className }: DashDotTileProps) => { ); const menu = ( - + // TODO: add widgetWrapper that is generic and uses the definition + module={module} integration="dashDot" options={module?.properties} diff --git a/src/components/Dashboard/Tiles/DashDot/types.ts b/src/widgets/dashDot/types.ts similarity index 66% rename from src/components/Dashboard/Tiles/DashDot/types.ts rename to src/widgets/dashDot/types.ts index 0cfd98e57..16123735c 100644 --- a/src/components/Dashboard/Tiles/DashDot/types.ts +++ b/src/widgets/dashDot/types.ts @@ -1,4 +1,4 @@ -import { DashDotGraphType } from '../../../../types/integration'; +import { DashDotGraphType } from '../../types/integration'; export interface DashDotGraph { id: DashDotGraphType; diff --git a/src/widgets/index.ts b/src/widgets/index.ts new file mode 100644 index 000000000..56c87d6ff --- /dev/null +++ b/src/widgets/index.ts @@ -0,0 +1,2 @@ +export {}; +// TODO: add exports of new IWidgetDefinitions to here diff --git a/src/components/Dashboard/Tiles/UseNet/UseNetTile.tsx b/src/widgets/useNet/UseNetTile.tsx similarity index 89% rename from src/components/Dashboard/Tiles/UseNet/UseNetTile.tsx rename to src/widgets/useNet/UseNetTile.tsx index d704d9834..2d3364cb3 100644 --- a/src/components/Dashboard/Tiles/UseNet/UseNetTile.tsx +++ b/src/widgets/useNet/UseNetTile.tsx @@ -16,18 +16,14 @@ import { useElementSize } from '@mantine/hooks'; import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { useTranslation } from 'next-i18next'; -import { useConfigContext } from '../../../../config/provider'; import { UsenetQueueList } from './UsenetQueueList'; -import { - useGetUsenetInfo, - usePauseUsenetQueue, - useResumeUsenetQueue, -} from '../../../../tools/hooks/api'; -import { humanFileSize } from '../../../../tools/humanFileSize'; -import { ServiceIntegrationType } from '../../../../types/service'; -import { HomarrCardWrapper } from '../HomarrCardWrapper'; -import { BaseTileProps } from '../type'; import { UsenetHistoryList } from './UsenetHistoryList'; +import { BaseTileProps } from '../../components/Dashboard/Tiles/type'; +import { ServiceIntegrationType } from '../../types/service'; +import { useConfigContext } from '../../config/provider'; +import { useGetUsenetInfo, usePauseUsenetQueue, useResumeUsenetQueue } from '../../tools/hooks/api'; +import { HomarrCardWrapper } from '../../components/Dashboard/Tiles/HomarrCardWrapper'; +import { humanFileSize } from '../../tools/humanFileSize'; dayjs.extend(duration); diff --git a/src/components/Dashboard/Tiles/UseNet/UsenetHistoryList.tsx b/src/widgets/useNet/UsenetHistoryList.tsx similarity index 94% rename from src/components/Dashboard/Tiles/UseNet/UsenetHistoryList.tsx rename to src/widgets/useNet/UsenetHistoryList.tsx index c0f033c00..d3cb6b21c 100644 --- a/src/components/Dashboard/Tiles/UseNet/UsenetHistoryList.tsx +++ b/src/widgets/useNet/UsenetHistoryList.tsx @@ -18,9 +18,9 @@ import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { useTranslation } from 'next-i18next'; import { FunctionComponent, useState } from 'react'; -import { useGetUsenetHistory } from '../../../../tools/hooks/api'; -import { humanFileSize } from '../../../../tools/humanFileSize'; -import { parseDuration } from '../../../../tools/parseDuration'; +import { useGetUsenetHistory } from '../../tools/hooks/api'; +import { humanFileSize } from '../../tools/humanFileSize'; +import { parseDuration } from '../../tools/parseDuration'; dayjs.extend(duration); diff --git a/src/components/Dashboard/Tiles/UseNet/UsenetQueueList.tsx b/src/widgets/useNet/UsenetQueueList.tsx similarity index 97% rename from src/components/Dashboard/Tiles/UseNet/UsenetQueueList.tsx rename to src/widgets/useNet/UsenetQueueList.tsx index 55f3a874a..b1bf50c6f 100644 --- a/src/components/Dashboard/Tiles/UseNet/UsenetQueueList.tsx +++ b/src/widgets/useNet/UsenetQueueList.tsx @@ -21,8 +21,8 @@ import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import { useTranslation } from 'next-i18next'; import { FunctionComponent, useState } from 'react'; -import { useGetUsenetDownloads } from '../../../../tools/hooks/api'; -import { humanFileSize } from '../../../../tools/humanFileSize'; +import { useGetUsenetDownloads } from '../../tools/hooks/api'; +import { humanFileSize } from '../../tools/humanFileSize'; dayjs.extend(duration); diff --git a/src/components/Dashboard/Tiles/UseNet/types.ts b/src/widgets/useNet/types.ts similarity index 100% rename from src/components/Dashboard/Tiles/UseNet/types.ts rename to src/widgets/useNet/types.ts diff --git a/src/components/Dashboard/Tiles/Weather/WeatherIcon.tsx b/src/widgets/weather/WeatherIcon.tsx similarity index 100% rename from src/components/Dashboard/Tiles/Weather/WeatherIcon.tsx rename to src/widgets/weather/WeatherIcon.tsx diff --git a/src/components/Dashboard/Tiles/Weather/WeatherTile.tsx b/src/widgets/weather/WeatherTile.tsx similarity index 84% rename from src/components/Dashboard/Tiles/Weather/WeatherTile.tsx rename to src/widgets/weather/WeatherTile.tsx index 5ebd814e5..342a8d1d4 100644 --- a/src/components/Dashboard/Tiles/Weather/WeatherTile.tsx +++ b/src/widgets/weather/WeatherTile.tsx @@ -1,14 +1,14 @@ import { Center, Group, Skeleton, Stack, Text, Title } from '@mantine/core'; import { IconArrowDownRight, IconArrowUpRight } from '@tabler/icons'; -import { WeatherIcon } from './WeatherIcon'; -import { BaseTileProps } from '../type'; +import { HomarrCardWrapper } from '../../components/Dashboard/Tiles/HomarrCardWrapper'; +import { WidgetsMenu } from '../../components/Dashboard/Tiles/Widgets/WidgetsMenu'; +import { BaseTileProps } from '../../components/Dashboard/Tiles/type'; +import { WeatherIntegrationType } from '../../types/integration'; import { useWeatherForCity } from './useWeatherForCity'; -import { WeatherIntegrationType } from '../../../../types/integration'; -import { HomarrCardWrapper } from '../HomarrCardWrapper'; -import { IntegrationsMenu } from '../Integrations/IntegrationsMenu'; +import { WeatherIcon } from './WeatherIcon'; interface WeatherTileProps extends BaseTileProps { - module: WeatherIntegrationType | undefined; + module: WeatherIntegrationType; // TODO: change to new type defined through widgetDefinition } export const WeatherTile = ({ className, module }: WeatherTileProps) => { @@ -43,9 +43,10 @@ export const WeatherTile = ({ className, module }: WeatherTileProps) => { ); } + // TODO: add widgetWrapper that is generic and uses the definition return ( -