{"version":3,"file":"button-group.mjs","sources":["../../../src/components/button-group.tsx"],"sourcesContent":["import React, { forwardRef, useId, type ReactElement } from \"react\";\nimport { matchChildByType } from \"../utils/components\";\nimport { Button, type ButtonProps } from \"./button\";\nimport { cva } from \"class-variance-authority\";\nimport { BaseInputWrapper } from \"./commons/input\";\n\nconst rootStyles = cva([\n    \"cui-w-full\",\n    \"cui-flex\",\n    \"cui-flex-col\",\n    \"[&>button]:cui-w-full\",\n    \"[&>button]:cui-rounded-none\",\n    \"[&>button:last-of-type]:cui-rounded-b-xxl\",\n    \"[&>button:last-of-type]:cui-border-t-0\",\n    \"[&>button:first-of-type]:cui-rounded-t-xxl\",\n    \"[&>button:first-of-type]:cui-border-t\",\n    \"[&>button]:cui-border-t-0\",\n    \"md:cui-flex-row\",\n    \"md:cui-w-fit\",\n    \"md:[&>button:last-of-type]:cui-rounded-bl-none\",\n    \"md:[&>button:last-of-type]:cui-rounded-r-xxl\",\n    \"md:[&>button:first-of-type]:cui-rounded-tr-none\",\n    \"md:[&>button:last-of-type]:cui-border-t\",\n    \"md:[&>button:last-of-type]:cui-border-l-0\",\n    \"md:[&>button:first-of-type]:cui-rounded-l-xxl\",\n    \"md:[&>button:first-of-type]:cui-border-l\",\n    \"md:[&>button]:cui-border\",\n    \"md:[&>button]:cui-border-l-0\",\n    \"md:[&>button]:cui-w-fit\",\n]);\n\nexport interface ButtonGroupProps {\n    label?: string;\n    children: ReactElement[];\n    className?: {\n        root?: string;\n    };\n}\n\nexport const ButtonGroup = forwardRef<\n    HTMLInputElement,\n    ButtonGroupProps & Pick<ButtonProps, \"size\" | \"disabled\">\n>(function ButtonGroup({ children, label, className, ...rest }) {\n    const buttons = children.filter((child) => matchChildByType(child, Button));\n\n    return (\n        <BaseInputWrapper\n            id={useId()}\n            label={label}\n            className={{ inputWrapper: \"cui-w-full md:cui-w-fit\" }}\n        >\n            <div className={rootStyles({ className: className?.root })}>\n                {buttons.map((button, index) =>\n                    React.cloneElement<ButtonProps>(button, {\n                        key: index,\n                        ...rest,\n                    }),\n                )}\n            </div>\n        </BaseInputWrapper>\n    );\n});\n"],"names":["ButtonGroup","React"],"mappings":";;;;;;AAMA,MAAM,aAAa,GAAI,CAAA;AAAA,EACnB,YAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,uBAAA;AAAA,EACA,6BAAA;AAAA,EACA,2CAAA;AAAA,EACA,wCAAA;AAAA,EACA,4CAAA;AAAA,EACA,uCAAA;AAAA,EACA,2BAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,gDAAA;AAAA,EACA,8CAAA;AAAA,EACA,iDAAA;AAAA,EACA,yCAAA;AAAA,EACA,2CAAA;AAAA,EACA,+CAAA;AAAA,EACA,0CAAA;AAAA,EACA,0BAAA;AAAA,EACA,8BAAA;AAAA,EACA,yBAAA;AACJ,CAAC,CAAA,CAAA;AAUY,MAAA,WAAA,GAAc,UAGzB,CAAA,SAASA,YAAY,CAAA,EAAE,UAAU,KAAO,EAAA,SAAA,EAAW,GAAG,IAAA,EAAQ,EAAA;AAC5D,EAAM,MAAA,OAAA,GAAU,SAAS,MAAO,CAAA,CAAC,UAAU,gBAAiB,CAAA,KAAA,EAAO,MAAM,CAAC,CAAA,CAAA;AAE1E,EACI,uBAAAC,cAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACG,IAAI,KAAM,EAAA;AAAA,MACV,KAAA;AAAA,MACA,SAAA,EAAW,EAAE,YAAA,EAAc,yBAA0B,EAAA;AAAA,KAAA;AAAA,oBAErDA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,UAAW,CAAA,EAAE,WAAW,SAAW,EAAA,IAAA,EAAM,CAAA,EAAA,EACpD,OAAQ,CAAA,GAAA;AAAA,MAAI,CAAC,MAAA,EAAQ,KAClB,KAAAA,cAAA,CAAM,aAA0B,MAAQ,EAAA;AAAA,QACpC,GAAK,EAAA,KAAA;AAAA,QACL,GAAG,IAAA;AAAA,OACN,CAAA;AAAA,KAET,CAAA;AAAA,GACJ,CAAA;AAER,CAAC;;;;"}