UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

87 lines (86 loc) 3.14 kB
"use client"; import Icon from "../../../Icon/Icon.mjs"; import { groupStyles, groupVariants } from "../style.mjs"; import { memo } from "react"; import { jsx, jsxs } from "react/jsx-runtime"; import { cx, useResponsive } from "antd-style"; import { ChevronDown } from "lucide-react"; import { Collapsible } from "@base-ui/react/collapsible"; //#region src/base-ui/Form/components/FormGroup.tsx const GroupTitle = memo(({ icon, title, desc, variant, mobile }) => /* @__PURE__ */ jsxs("div", { className: cx(groupStyles.title, variant === "borderless" && !mobile && groupStyles.titleBorderless, mobile && groupStyles.mobileTitle), children: [icon && /* @__PURE__ */ jsx(Icon, { icon }), /* @__PURE__ */ jsxs("div", { children: [title, desc && /* @__PURE__ */ jsx("div", { className: groupStyles.desc, children: desc })] })] })); GroupTitle.displayName = "GroupTitle"; const FormGroup = memo(({ className, icon, title, children, extra, variant = "borderless", defaultActive = true, collapsible, active, onCollapse, desc, keyValue: _keyValue, ...rest }) => { const { mobile } = useResponsive(); const isBorderless = variant === "borderless"; const isCollapsible = collapsible === void 0 ? !isBorderless : collapsible; if (mobile) return /* @__PURE__ */ jsxs("div", { className, ...rest, children: [/* @__PURE__ */ jsxs("div", { className: cx(groupStyles.header, groupStyles.mobileHeader), children: [/* @__PURE__ */ jsx(GroupTitle, { mobile: true, desc, icon, title }), extra] }), /* @__PURE__ */ jsx("div", { className: groupStyles.mobileBody, children })] }); if (!isCollapsible) return /* @__PURE__ */ jsxs("div", { className: cx(groupVariants({ variant }), className), ...rest, children: [title && /* @__PURE__ */ jsxs("div", { className: cx(groupStyles.header, isBorderless ? groupStyles.headerBorderless : groupStyles.headerBoxed), children: [/* @__PURE__ */ jsx(GroupTitle, { desc, icon, title, variant }), extra] }), /* @__PURE__ */ jsx("div", { className: cx(groupStyles.body, !isBorderless && groupStyles.bodyBoxed), children })] }); return /* @__PURE__ */ jsxs(Collapsible.Root, { className: cx(groupVariants({ variant }), className), defaultOpen: defaultActive, open: active, onOpenChange: onCollapse, ...rest, children: [/* @__PURE__ */ jsxs("div", { className: cx(groupStyles.header, isBorderless ? groupStyles.headerBorderless : groupStyles.headerBoxed), children: [/* @__PURE__ */ jsxs(Collapsible.Trigger, { className: groupStyles.trigger, children: [/* @__PURE__ */ jsx(GroupTitle, { desc, icon, title, variant }), /* @__PURE__ */ jsx(Icon, { className: groupStyles.chevron, icon: ChevronDown })] }), extra] }), /* @__PURE__ */ jsx(Collapsible.Panel, { className: groupStyles.panel, children: /* @__PURE__ */ jsx("div", { className: cx(groupStyles.body, !isBorderless && groupStyles.bodyBoxed), children }) })] }); }); FormGroup.displayName = "FormGroup"; //#endregion export { FormGroup as default }; //# sourceMappingURL=FormGroup.mjs.map