{"version":3,"file":"SplitButton.mjs","names":[],"sources":["../../../src/base-ui/Button/SplitButton.tsx"],"sourcesContent":["'use client';\n\nimport { createStaticStyles, cx } from 'antd-style';\nimport { ChevronDownIcon } from 'lucide-react';\nimport { createContext, type CSSProperties, type ReactNode, use, useMemo } from 'react';\n\nimport { DropdownMenu, type DropdownMenuProps } from '@/base-ui/DropdownMenu';\n\nimport Button from './Button';\nimport type { ButtonProps } from './type';\n\ninterface SharedVisualProps {\n  danger?: boolean;\n  disabled?: boolean;\n  loading?: boolean;\n  size?: ButtonProps['size'];\n  type?: ButtonProps['type'];\n}\n\ninterface SplitButtonProps extends SharedVisualProps {\n  children: ReactNode;\n  className?: string;\n  style?: CSSProperties;\n}\n\nconst SplitButtonContext = createContext<SharedVisualProps>({});\n\nconst styles = createStaticStyles(({ css }) => ({\n  splitButton: css`\n    display: inline-flex;\n    flex-direction: row;\n\n    & > :where(button, a):first-of-type {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n\n    & > :where(button, a):last-of-type {\n      margin-inline-start: -1px;\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n  `,\n}));\n\nconst SplitButton = ({\n  children,\n  className,\n  style,\n  danger,\n  disabled,\n  loading,\n  size,\n  type,\n}: SplitButtonProps) => {\n  const shared = useMemo<SharedVisualProps>(\n    () => ({ danger, disabled, loading, size, type }),\n    [danger, disabled, loading, size, type],\n  );\n  return (\n    <SplitButtonContext value={shared}>\n      <div className={cx(styles.splitButton, className)} style={style}>\n        {children}\n      </div>\n    </SplitButtonContext>\n  );\n};\n\nconst SplitButtonMain = (props: ButtonProps) => {\n  const shared = use(SplitButtonContext);\n  return <Button {...shared} {...props} />;\n};\n\ninterface SplitButtonMenuProps extends Omit<DropdownMenuProps, 'children'> {\n  icon?: ReactNode;\n}\n\nconst SplitButtonMenu = ({\n  icon = <ChevronDownIcon size={14} />,\n  ...menuProps\n}: SplitButtonMenuProps) => {\n  const shared = use(SplitButtonContext);\n  return (\n    <DropdownMenu {...menuProps}>\n      <Button {...shared} icon={icon} />\n    </DropdownMenu>\n  );\n};\n\ntype SplitButtonComponent = typeof SplitButton & {\n  Main: typeof SplitButtonMain;\n  Menu: typeof SplitButtonMenu;\n};\n\n(SplitButton as SplitButtonComponent).Main = SplitButtonMain;\n(SplitButton as SplitButtonComponent).Menu = SplitButtonMenu;\n\nexport type { SplitButtonMenuProps, SplitButtonProps };\nexport default SplitButton as SplitButtonComponent;\n"],"mappings":";;;;;;;;AAyBA,MAAM,qBAAqB,cAAiC,EAAE,CAAC;AAE/D,MAAM,SAAS,oBAAoB,EAAE,WAAW,EAC9C,aAAa,GAAG;;;;;;;;;;;;;;KAejB,EAAE;AAEH,MAAM,eAAe,EACnB,UACA,WACA,OACA,QACA,UACA,SACA,MACA,WACsB;AAKtB,QACE,oBAAC,oBAAD;EAAoB,OALP,eACN;GAAE;GAAQ;GAAU;GAAS;GAAM;GAAM,GAChD;GAAC;GAAQ;GAAU;GAAS;GAAM;GAAK,CAGN;YAC/B,oBAAC,OAAD;GAAK,WAAW,GAAG,OAAO,aAAa,UAAU;GAAS;GACvD;GACG,CAAA;EACa,CAAA;;AAIzB,MAAM,mBAAmB,UAAuB;AAE9C,QAAO,oBAAC,QAAD;EAAQ,GADA,IAAI,mBACM;EAAE,GAAI;EAAS,CAAA;;AAO1C,MAAM,mBAAmB,EACvB,OAAO,oBAAC,iBAAD,EAAiB,MAAM,IAAM,CAAA,EACpC,GAAG,gBACuB;CAC1B,MAAM,SAAS,IAAI,mBAAmB;AACtC,QACE,oBAAC,cAAD;EAAc,GAAI;YAChB,oBAAC,QAAD;GAAQ,GAAI;GAAc;GAAQ,CAAA;EACrB,CAAA;;AASnB,YAAsC,OAAO;AAC7C,YAAsC,OAAO"}