{"version":3,"sources":["../src/checkbox-group.tsx"],"sourcesContent":["import type { ComponentArgs, ThemeProps } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { FlexProps } from \"@yamada-ui/layouts\"\nimport type {\n  ForwardedRef,\n  ReactElement,\n  ReactNode,\n  RefAttributes,\n} from \"react\"\nimport type { CheckboxProps } from \"./checkbox\"\nimport type { CheckboxGroupContext } from \"./checkbox-context\"\nimport type { UseCheckboxGroupProps } from \"./use-checkbox-group\"\nimport { useFormControl } from \"@yamada-ui/form-control\"\nimport { Flex } from \"@yamada-ui/layouts\"\nimport { cx, getValidChildren } from \"@yamada-ui/utils\"\nimport { forwardRef } from \"react\"\nimport { Checkbox } from \"./checkbox\"\nimport { CheckboxGroupProvider } from \"./checkbox-context\"\nimport { useCheckboxGroup } from \"./use-checkbox-group\"\n\nexport interface CheckboxItem<Y extends number | string = string>\n  extends CheckboxProps<Y> {\n  label?: ReactNode\n}\n\nexport interface CheckboxGroupSharedProps<Y extends number | string = string>\n  extends Omit<FlexProps, \"defaultValue\" | \"onChange\">,\n    UseCheckboxGroupProps<Y>,\n    FormControlOptions {}\n\nexport interface CheckboxGroupProps<Y extends number | string = string>\n  extends CheckboxGroupSharedProps<Y>,\n    ThemeProps<\"Checkbox\"> {\n  /**\n   * If provided, generate checkboxes based on items.\n   *\n   * @default '[]'\n   */\n  items?: CheckboxItem<Y>[]\n}\n\nexport const CheckboxGroup = forwardRef(\n  <Y extends number | string = string>(\n    {\n      className,\n      colorScheme,\n      size,\n      variant,\n      children,\n      direction = \"column\",\n      gap,\n      items = [],\n      ...props\n    }: CheckboxGroupProps<Y>,\n    ref: ForwardedRef<HTMLDivElement>,\n  ) => {\n    const {\n      props: computedProps,\n      value,\n      getContainerProps,\n      onChange,\n    } = useCheckboxGroup<Y>(props)\n    const {\n      disabled,\n      invalid,\n      isDisabled: _isDisabled,\n      isInvalid: _isInvalid,\n      isReadOnly: _isReadOnly,\n      isRequired: _isRequired,\n      labelId,\n      readOnly,\n      required,\n      ...rest\n    } = useFormControl(computedProps)\n\n    const validChildren = getValidChildren(children)\n    let computedChildren: ReactElement[] = []\n\n    if (!validChildren.length && items.length) {\n      computedChildren = items.map((props, index) => (\n        <Checkbox key={index} {...props} />\n      ))\n    }\n\n    return (\n      <CheckboxGroupProvider\n        value={\n          {\n            colorScheme,\n            size,\n            variant,\n            disabled,\n            invalid,\n            readOnly,\n            required,\n            value,\n            onChange,\n          } as CheckboxGroupContext\n        }\n      >\n        <Flex\n          ref={ref}\n          className={cx(\"ui-checkbox-group\", className)}\n          direction={direction}\n          gap={gap ?? (direction === \"row\" ? \"1rem\" : undefined)}\n          {...getContainerProps({\n            \"aria-labelledby\": labelId,\n            ...rest,\n          })}\n        >\n          {children ?? computedChildren}\n        </Flex>\n      </CheckboxGroupProvider>\n    )\n  },\n) as {\n  <Y extends number | string = string>(\n    props: CheckboxGroupProps<Y> & RefAttributes<HTMLDivElement>,\n  ): ReactElement\n} & ComponentArgs\n\nCheckboxGroup.displayName = \"CheckboxGroup\"\nCheckboxGroup.__ui__ = \"CheckboxGroup\"\n"],"mappings":";;;;;;;;;;;;AAYA,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,IAAI,wBAAwB;AACrC,SAAS,kBAAkB;AAiEnB;AAvCD,IAAM,gBAAgB;AAAA,EAC3B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,QAAQ,CAAC;AAAA,IACT,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,iBAAoB,KAAK;AAC7B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI,eAAe,aAAa;AAEhC,UAAM,gBAAgB,iBAAiB,QAAQ;AAC/C,QAAI,mBAAmC,CAAC;AAExC,QAAI,CAAC,cAAc,UAAU,MAAM,QAAQ;AACzC,yBAAmB,MAAM,IAAI,CAACA,QAAO,UACnC,oBAAC,YAAsB,GAAGA,UAAX,KAAkB,CAClC;AAAA,IACH;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OACE;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAGF;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,WAAW,GAAG,qBAAqB,SAAS;AAAA,YAC5C;AAAA,YACA,KAAK,oBAAQ,cAAc,QAAQ,SAAS;AAAA,YAC3C,GAAG,kBAAkB;AAAA,cACpB,mBAAmB;AAAA,cACnB,GAAG;AAAA,YACL,CAAC;AAAA,YAEA,wCAAY;AAAA;AAAA,QACf;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAMA,cAAc,cAAc;AAC5B,cAAc,SAAS;","names":["props"]}