// Copyright 2025 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import type { CSSProperties, ReactNode } from 'react'; import React from 'react'; import { FocusScope } from 'react-aria'; import classNames from 'classnames'; import { Button, Dialog, Header, Popover } from 'react-aria-components'; import { FunScrollerSection } from './FunScroller'; /** * Grid Container */ export type FunGridContainerProps = Readonly<{ totalSize: number; columnCount: number; cellWidth: number; cellHeight: number; children: ReactNode; }>; export function FunGridContainer(props: FunGridContainerProps): JSX.Element { return (
{props.children}
); } /** * Grid Section */ export type FunGridScrollerSectionProps = Readonly<{ id: string; sectionOffset: number; sectionSize: number; children: ReactNode; }>; export function FunGridScrollerSection( props: FunGridScrollerSectionProps ): JSX.Element { return ( {props.children} ); } /** * Grid Header */ export type FunGridHeaderProps = Readonly<{ id: string; headerOffset: number; headerSize: number; children: ReactNode; }>; export function FunGridHeader(props: FunGridHeaderProps): JSX.Element { return (

{props.children}

); } /** * Grid Header Text */ export type FunGridHeaderTextProps = Readonly<{ children: ReactNode; }>; export function FunGridHeaderText(props: FunGridHeaderTextProps): JSX.Element { return {props.children}; } /** * Grid Header Button */ export type FunGridHeaderButtonProps = Readonly<{ label: string; onPress?: () => void; children: ReactNode; }>; export function FunGridHeaderButton( props: FunGridHeaderButtonProps ): JSX.Element { return ( ); } /** * Grid Header Button */ export type FunGridHeaderIconProps = Readonly<{ iconClassName: `FunGrid__HeaderIcon--${string}`; }>; export function FunGridHeaderIcon(props: FunGridHeaderIconProps): JSX.Element { return (
); } /** * Grid Header Popover */ export type FunGridHeaderPopoverProps = Readonly<{ children: ReactNode; }>; export function FunGridHeaderPopover( props: FunGridHeaderPopoverProps ): JSX.Element { return ( {props.children} ); } export type FunGridHeaderPopoverTextProps = Readonly<{ children: ReactNode; }>; export function FunGridHeaderPopoverHeader( props: FunGridHeaderPopoverTextProps ): JSX.Element { return (
{props.children}
); } /** * Grid Row Group */ export type FunGridRowGroupProps = Readonly<{ 'aria-labelledby': string; colCount: number; rowCount: number; rowGroupOffset: number; rowGroupSize: number; children: ReactNode; }>; export function FunGridRowGroup(props: FunGridRowGroupProps): JSX.Element { return (
{props.children}
); } /** * Grid Row */ export type FunGridRowProps = Readonly<{ rowIndex: number; children: ReactNode; }>; export function FunGridRow(props: FunGridRowProps): JSX.Element { return (
{props.children}
); } /** * Grid Cell */ export type FunGridCellProps = Readonly<{ 'data-key': string; rowIndex: number; colIndex: number; children: ReactNode; }>; export function FunGridCell(props: FunGridCellProps): JSX.Element { return (
{props.children}
); }