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 (
);
};
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 (
);
};
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')}
);
};
}