import React from "react"; import { View } from "react-native"; import { Button, cn } from "heroui-native"; import { type NIcon, resolveIcon } from "../helpers/icons"; import { NText } from "./NText"; export interface ButtonGroupItem { label: string; value: string; icon?: NIcon; isDisabled?: boolean; } export interface NButtonGroupProps { items: ButtonGroupItem[]; value?: string; /** Alias of `value`, as the React package names it. */ selected?: string; onValueChange?: (value: string) => void; /** Alias of `onValueChange`. */ onChange?: (value: string) => void; label?: string; isDisabled?: boolean; /** Alias of `isDisabled`. */ disabled?: boolean; className?: string; buttonClassName?: string; labelClassName?: string; } export const NButtonGroup = React.memo( ({ items, value, selected, onValueChange, onChange, label, isDisabled, disabled, className, buttonClassName, labelClassName, }) => { const current = value ?? selected; const off = disabled ?? isDisabled ?? false; const change = onValueChange ?? onChange; return ( {label && {label}} {items.map((item, index) => { const isSelected = item.value === current; const itemDisabled = off || item.isDisabled; const buttonIcon = resolveIcon(item.icon, { size: 16 }); return ( ); })} ); }, ); NButtonGroup.displayName = "NButtonGroup";