diff --git a/web/src/features/dev/debug/context.ts b/web/src/features/dev/debug/context.ts index a10901d..0d20746 100644 --- a/web/src/features/dev/debug/context.ts +++ b/web/src/features/dev/debug/context.ts @@ -17,6 +17,21 @@ export const debugContext = () => { metadata: [{ label: 'Value 1', value: 300 }], disabled: true, }, + { + title: 'Oil Level', + description: 'Vehicle oil level', + progress: 30, + icon: 'oil-can', + metadata: [{ label: 'Remaining Oil', value: '30%' }], + arrow: true, + }, + { + title: 'Durability', + progress: 80, + icon: 'car-side', + metadata: [{ label: 'Durability', value: '80%' }], + colorScheme: 'blue' + }, { title: 'Menu button', icon: 'bars', diff --git a/web/src/features/dev/debug/menu.ts b/web/src/features/dev/debug/menu.ts index afc66cf..1a0a1ec 100644 --- a/web/src/features/dev/debug/menu.ts +++ b/web/src/features/dev/debug/menu.ts @@ -22,6 +22,20 @@ export const debugMenu = () => { icon: 'tag', description: 'Side scroll general description', }, + { + label: 'Oil Level', + progress: 30, + icon: 'oil-can', + description: 'Remaining Oil: 30%', + }, + { + label: 'Durability', + progress: 80, + icon: 'car-side', + description: 'Durability: 80%', + colorScheme: 'blue', + iconColor: '#55778d' + }, { label: 'Option 1' }, { label: 'Option 2' }, { diff --git a/web/src/features/menu/context/Item.tsx b/web/src/features/menu/context/Item.tsx index 401e47f..662c320 100644 --- a/web/src/features/menu/context/Item.tsx +++ b/web/src/features/menu/context/Item.tsx @@ -10,6 +10,7 @@ import { Spacer, Image, HStack, + Progress, } from '@chakra-ui/react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Option, ContextMenuProps } from '../../../interfaces/context'; @@ -66,8 +67,8 @@ const Item: React.FC<{ }} /> )} - - + + {button.title ? button.title : buttonKey} @@ -77,6 +78,15 @@ const Item: React.FC<{ {button.description} )} + {button?.progress && ( + + )} {(button.menu || button.arrow) && button.arrow !== false && ( <> diff --git a/web/src/features/menu/list/ListItem.tsx b/web/src/features/menu/list/ListItem.tsx index 26846b2..8b1ec32 100644 --- a/web/src/features/menu/list/ListItem.tsx +++ b/web/src/features/menu/list/ListItem.tsx @@ -1,4 +1,4 @@ -import { Box, Flex, Stack, Text } from '@chakra-ui/react'; +import { Box, Flex, Stack, Text, Progress } from '@chakra-ui/react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import React, { forwardRef } from 'react'; import CustomCheckbox from './CustomCheckbox'; @@ -28,10 +28,10 @@ const ListItem = forwardRef, Props>(({ item, index, return (ref.current = [...ref.current, element]); }} > - + {item.icon && ( - + )} {Array.isArray(item.values) ? ( @@ -60,6 +60,13 @@ const ListItem = forwardRef, Props>(({ item, index, {item.label} + ) : item.progress !== undefined ? ( + + + {item.label} + + + ) : ( {item.label} )} diff --git a/web/src/features/menu/list/index.tsx b/web/src/features/menu/list/index.tsx index 0622e3c..14f6c0d 100644 --- a/web/src/features/menu/list/index.tsx +++ b/web/src/features/menu/list/index.tsx @@ -11,10 +11,13 @@ import React from 'react'; export interface MenuItem { label: string; + progress?: number; + colorScheme?: string; checked?: boolean; values?: Array; description?: string; icon?: IconProp; + iconColor?: string; defaultIndex?: number; close?: boolean; } diff --git a/web/src/interfaces/context.ts b/web/src/interfaces/context.ts index 4b0b2f3..5d6efb5 100644 --- a/web/src/interfaces/context.ts +++ b/web/src/interfaces/context.ts @@ -8,6 +8,8 @@ export interface Option { image?: string; icon?: IconProp; iconColor?: string; + progress?: number; + colorScheme?: string; metadata?: string[] | { [key: string]: any } | { label: string; value: any }[]; disabled?: boolean; event?: string;