import * as React from "react" import { Primitive } from "@radix-ui/react-primitive" import { useAccount } from "@/lib/providers/jazz-provider" import { PageItem } from "./partials/page-item" import { useMedia } from "@/hooks/use-media" import { useColumnStyles } from "./hooks/use-column-styles" import { useActiveItemScroll } from "@/hooks/use-active-item-scroll" import { Column } from "@/components/custom/column" import { useKeyDown } from "@/hooks/use-key-down" interface PageListProps {} export const PageList: React.FC = () => { const isTablet = useMedia("(max-width: 640px)") const { me } = useAccount({ root: { personalPages: [] } }) const [activeItemIndex, setActiveItemIndex] = React.useState(null) const [keyboardActiveIndex, setKeyboardActiveIndex] = React.useState(null) const personalPages = React.useMemo(() => me?.root?.personalPages, [me?.root?.personalPages]) const next = () => Math.min((activeItemIndex ?? 0) + 1, (personalPages?.length ?? 0) - 1) const prev = () => Math.max((activeItemIndex ?? 0) - 1, 0) const handleKeyDown = (ev: KeyboardEvent) => { switch (ev.key) { case "ArrowDown": ev.preventDefault() ev.stopPropagation() setActiveItemIndex(next()) setKeyboardActiveIndex(next()) break case "ArrowUp": ev.preventDefault() ev.stopPropagation() setActiveItemIndex(prev()) setKeyboardActiveIndex(prev()) } } useKeyDown(() => true, handleKeyDown) const { setElementRef } = useActiveItemScroll({ activeIndex: keyboardActiveIndex }) return (
{!isTablet && } {personalPages?.map( (page, index) => page?.id && ( setElementRef(el, index)} page={page} isActive={index === activeItemIndex} onPointerMove={() => { setKeyboardActiveIndex(null) setActiveItemIndex(index) }} data-keyboard-active={keyboardActiveIndex === index} /> ) )}
) } export const ColumnHeader: React.FC = () => { const columnStyles = useColumnStyles() return (
Title Topic Updated
) }