import React, { useMemo, useState, type ComponentPropsWithRef, type ReactNode } from 'react'; import { useInterval } from '@wener/reaction'; import dayjs from 'dayjs'; import { cn } from '../utils/cn'; import { WindowControlButton } from './standalone/WindowControlButton'; import { WindowDockList } from './standalone/WindowDockList'; export namespace WindowDock { const ControlButton = WindowControlButton; export type DockProps = DockLayoutProps; export const Dock = ({ header = ( <> ), footer = ( <> ), children = , ...props }: DockProps) => { return ( {children} ); }; export const Layout = ({ children, dock = , className, ...props }: ComponentPropsWithRef<'div'> & { children?: ReactNode; dock?: ReactNode }) => { /* MD Main | Dock SM Dock Main */ return (
{children}
{dock}
); }; export type DockLayoutProps = ComponentPropsWithRef<'div'> & { open?: boolean; header?: ReactNode; footer?: ReactNode; children?: ReactNode; }; /* MD Header ------ Children ------ Footer SM Header | Children | Footer */ export const DockLayout = ({ open = true, children, header, footer, className, ...props }: DockLayoutProps) => { return (
{/**/} {header}
{children}
{footer}
); }; export const List = WindowDockList; export const Clock = () => { const [date, setDate] = useState(() => dayjs()); useInterval(() => { setDate(dayjs()); }, 1000 * 60); const title = useMemo( () => new Intl.DateTimeFormat('zh-CN', { calendar: 'chinese', dateStyle: 'full' }).format(date.toDate()), [date.dayOfYear()], ); return (
{date.format('ddd hh:mm')} {date.format('YYYY/MM/DD')}
); }; }