* rebuild keyboard navigation lists * add new keyboard navigation components * remove references to boundless-arrow-key-navigation * fix aria-labels on paginated lists everywhere
42 lines
912 B
TypeScript
42 lines
912 B
TypeScript
import { formatDistanceToNow } from "date-fns";
|
|
import * as React from "react";
|
|
|
|
const LocaleTime = React.lazy(
|
|
() =>
|
|
import(
|
|
/* webpackChunkName: "locale-time" */
|
|
"~/components/LocaleTime"
|
|
)
|
|
);
|
|
|
|
type Props = React.ComponentProps<typeof LocaleTime> & {
|
|
onClick?: () => void;
|
|
};
|
|
|
|
function Time({ onClick, ...props }: Props) {
|
|
let content = formatDistanceToNow(Date.parse(props.dateTime), {
|
|
addSuffix: props.addSuffix,
|
|
});
|
|
|
|
if (props.shorten) {
|
|
content = content
|
|
.replace("about", "")
|
|
.replace("less than a minute ago", "just now")
|
|
.replace("minute", "min");
|
|
}
|
|
|
|
return (
|
|
<span onClick={onClick}>
|
|
<React.Suspense
|
|
fallback={
|
|
<time dateTime={props.dateTime}>{props.children || content}</time>
|
|
}
|
|
>
|
|
<LocaleTime tooltipDelay={250} {...props} />
|
|
</React.Suspense>
|
|
</span>
|
|
);
|
|
}
|
|
|
|
export default Time;
|