diff --git a/frontend/src/components/general/Tabs.tsx b/frontend/src/components/general/Tabs.tsx new file mode 100644 index 00000000..160f7612 --- /dev/null +++ b/frontend/src/components/general/Tabs.tsx @@ -0,0 +1,46 @@ +import { ReactNode } from '@tanstack/react-router'; +import React, { useState } from 'react'; + +interface Tabs { + tabs: { label: string; icon: ReactNode; view: ReactNode; }[] +} + +const Tabs: React.FC = ({ tabs }) => { + const [showTabIndex, setShowTabIndex] = useState(0); + + return ( + <> +
+ {tabs.map((tab, key) => ( + + ))} +
+ + {tabs.map((tab, key) => ( +
+ {tab.view} +
+ ))} + + ); +} + +export default Tabs; diff --git a/frontend/src/components/general/cards/EntitiesStatusCard.tsx b/frontend/src/components/general/cards/EntitiesStatusCard.tsx new file mode 100644 index 00000000..1fc76cbb --- /dev/null +++ b/frontend/src/components/general/cards/EntitiesStatusCard.tsx @@ -0,0 +1,20 @@ +import React from 'react'; + +interface EntitiesStatusCard { + statusDetails: {label: string, color: string, description: string}; + label: string; +} + +const EntitiesStatusCard: React.FC = ({ statusDetails, label }) => { + return ( +
+

{label}

+

+ {statusDetails.label} +

+

{statusDetails.description}

+
+ ); +} + +export default EntitiesStatusCard; diff --git a/frontend/src/components/general/cards/GeneralStatusCard.tsx b/frontend/src/components/general/cards/GeneralStatusCard.tsx index 93e95ca1..aeec3088 100644 --- a/frontend/src/components/general/cards/GeneralStatusCard.tsx +++ b/frontend/src/components/general/cards/GeneralStatusCard.tsx @@ -4,13 +4,14 @@ interface GeneralStatusCard { overline: string; value: string; description?: string; + isLarge?: boolean; } -const GeneralStatusCard: React.FC = ({ overline, value, description = '' }) => { +const GeneralStatusCard: React.FC = ({ overline, value, description = '', isLarge = false }) => { return (

{overline}

-

{value}

+

{value}

{description &&

{description}

}
); diff --git a/frontend/src/components/general/cards/TreeCard.tsx b/frontend/src/components/general/cards/TreeCard.tsx index 8bcbc02f..2f11e418 100644 --- a/frontend/src/components/general/cards/TreeCard.tsx +++ b/frontend/src/components/general/cards/TreeCard.tsx @@ -1,70 +1,37 @@ import { getWateringStatusDetails } from '@/hooks/useDetailsForWateringStatus'; -import { EntitiesTreeClusterWateringStatus } from '@green-ecolution/backend-client'; +import { EntitiesTreeClusterWateringStatus, Tree } from '@green-ecolution/backend-client'; import { Link } from '@tanstack/react-router'; import { MoveRight } from 'lucide-react'; import React from 'react'; - -interface Tree { - id: number; - species: string; - number: string; - hasSensor: boolean; - status: EntitiesTreeClusterWateringStatus; -} - -interface TreeCardContentProps { - tree: Tree; - statusDetails: { - color: string; - label: string; - description: string; - }; -} - -const TreeCardContent: React.FC = ({ tree, statusDetails }) => ( - <> -

- {statusDetails.label} -

-

{tree.species}

- {tree.number && -

- Baumnummer: {tree.number} -

- } - - {tree.hasSensor && -

- Zur Detailansicht - -

- } - -); - interface TreeCardProps { tree: Tree; } const TreeCard: React.FC = ({ tree }) => { - const statusDetails = getWateringStatusDetails(tree.status); + // TODO: Add real status + const statusDetails = getWateringStatusDetails(EntitiesTreeClusterWateringStatus.TreeClusterWateringStatusGood); const wrapperClasses = 'bg-white group border border-dark-50 p-6 rounded-xl shadow-cards flex flex-col gap-y-4 lg:grid lg:grid-cols-[1fr,2fr,1fr,1fr] lg:items-center lg:gap-5 lg:py-5 xl:px-10'; - if (!tree.hasSensor) { - return ( -
- -
- ); - } - return ( - +

+ {statusDetails.label} +

+

{tree.species}

+ {tree.number && +

+ Baumnummer: {tree.number} +

+ } + +

+ Zur Detailansicht + +

); } diff --git a/frontend/src/components/general/cards/WateringStatusCard.tsx b/frontend/src/components/general/cards/WateringStatusCard.tsx deleted file mode 100644 index 5cc00881..00000000 --- a/frontend/src/components/general/cards/WateringStatusCard.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { getWateringStatusDetails } from '@/hooks/useDetailsForWateringStatus'; -import { EntitiesTreeClusterWateringStatus } from '@green-ecolution/backend-client'; -import React from 'react'; - -interface WateringStatusCard { - wateringStatus: EntitiesTreeClusterWateringStatus; -} - -const WateringStatusCard: React.FC = ({ wateringStatus }) => { - const statusDetails = getWateringStatusDetails(wateringStatus); - - return ( -
-

Bewässerungszustand (ø)

-

- {statusDetails.label} -

-

{statusDetails.description}

-
- ); -} - -export default WateringStatusCard; diff --git a/frontend/src/components/general/error/LoadingInfo.tsx b/frontend/src/components/general/error/LoadingInfo.tsx new file mode 100644 index 00000000..52008b3f --- /dev/null +++ b/frontend/src/components/general/error/LoadingInfo.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +interface LoadingInfo { + label: string; +} + +const LoadingInfo: React.FC = ({ label }) => { + return ( +
+ +

{label}

+
+ ); +} + +export default LoadingInfo; diff --git a/frontend/src/components/general/filter/Dialog.tsx b/frontend/src/components/general/filter/Dialog.tsx index 0a129bc1..44da2973 100644 --- a/frontend/src/components/general/filter/Dialog.tsx +++ b/frontend/src/components/general/filter/Dialog.tsx @@ -117,7 +117,7 @@ const Dialog: React.FC = ({ initStatusTags, initRegionTags, headlin