import React, { HTMLAttributes, forwardRef } from "react"; import { cl } from "../utils/helpers"; import RemovableChips, { ChipsRemovableProps } from "./Removable"; import ToggleChips, { ChipsToggleProps } from "./Toggle"; interface ChipsProps extends HTMLAttributes { children: React.ReactNode; /** * Changes padding and font-sizes. * @default "medium" */ size?: "medium" | "small"; } interface ChipsComponent extends React.ForwardRefExoticComponent< ChipsProps & React.RefAttributes > { /** * Toggle between selected-states. * @see 🏷️ {@link ToggleChipsProps} * @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support */ Toggle: typeof ToggleChips; /** * Remove filter or the likes on click. * @see 🏷️ {@link RemovableChipsProps} * @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support */ Removable: typeof RemovableChips; } /** * A component that displays a list of items as chips. * * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/chips) * @see 🏷️ {@link ChipsProps} * * @example * ```jsx * * {options.map((c) => ( * * setSelected( * selected.includes(c) * ? selected.filter((x) => x !== c) * : [...selected, c] * ) * } * > * {c} * * ))} * * ``` */ export const Chips: ChipsComponent = forwardRef( ({ className, size = "medium", children, ...rest }, ref) => { return (
    {React.Children.map(children, (chip, index) => { return
  • {chip}
  • ; })}
); }, ) as ChipsComponent; Chips.Toggle = ToggleChips; Chips.Removable = RemovableChips; export default Chips; export { ToggleChips as ChipsToggle, RemovableChips as ChipsRemovable }; export type { ChipsProps, ChipsToggleProps, ChipsRemovableProps };