diff --git a/components/modules/date/DateModule.story.tsx b/components/modules/date/DateModule.story.tsx new file mode 100644 index 000000000..5582bb394 --- /dev/null +++ b/components/modules/date/DateModule.story.tsx @@ -0,0 +1,7 @@ +import DateComponent from "./DateModule"; + +export default { + title: 'Date module', +}; + +export const Default = (args: any) => ; diff --git a/components/modules/date/DateModule.tsx b/components/modules/date/DateModule.tsx new file mode 100644 index 000000000..98953c371 --- /dev/null +++ b/components/modules/date/DateModule.tsx @@ -0,0 +1,41 @@ +import { Box, Card, Group, Text, Title } from '@mantine/core'; +import dayjs from 'dayjs'; +import { useEffect, useState } from 'react'; +import { Clock } from 'tabler-icons-react'; +import { IModule } from '../modules'; + +export const DateModule: IModule = { + title: 'Date', + description: 'Show the current time and date in a card', + icon: Clock, + component: DateComponent, +}; + +export default function DateComponent(props: any) { + const [date, setDate] = useState(new Date()); + const hours = date.getHours(); + const minutes = date.getMinutes(); + + // Change date on minute change + // Note: Using 10 000ms instead of 1000ms to chill a little :) + useEffect(() => { + setInterval(() => { + setDate(new Date()); + }, 10000); + }, []); + + return ( + + + {hours < 10 ? `0${hours}` : hours}:{minutes < 10 ? `0${minutes}` : minutes} + + + { + // Use dayjs to format the date + // https://day.js.org/en/getting-started/installation/ + dayjs(date).format('dddd, MMMM D YYYY') + } + + + ); +}