import { List as SurfaceList } from '@ankhorage/surface';
import React from 'react';
import type {
ListItemProps,
ListItemsProps,
ListItemVariant,
ListProps,
} from '../../../../types/list';
import { Divider, View } from '../../../layout/public';
import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
import { resolveListSeparator } from '../../utils/resolveListSeparator';
import { ListItem } from './ListItem';
function resolveItemVariant({
item,
defaultVariant,
}: {
item: ListItemProps;
defaultVariant: ListItemVariant;
}): ListItemVariant {
return item.variant ?? defaultVariant;
}
function resolveItemCompact({
item,
compact,
}: {
item: ListItemProps;
compact: boolean | undefined;
}): boolean {
return item.compact ?? compact ?? false;
}
function ListItemsInner({
themeId: _themeId,
mode: _mode,
testID,
items,
itemVariant = 'divider',
compact,
}: ListItemsProps) {
return (
{items.map((item, index) => {
const effectiveVariant = resolveItemVariant({ item, defaultVariant: itemVariant });
const separator = resolveListSeparator(effectiveVariant, index);
return (
{separator === 'divider' ? : null}
{separator === 'spacer' ? : null}
);
})}
);
}
function ListInner(props: ListProps) {
if ('items' in props) return ;
const {
themeId: _themeId,
mode: _mode,
interactionPolicy: _interactionPolicy,
children,
testID,
} = props;
return {children};
}
/*** List composition built on the Surface list boundary with ZORA item/separator policy. */
export const List = withZoraThemeScope(ListInner);