UNPKG

@lobehub/ui

Version:

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

171 lines (168 loc) 6.15 kB
'use client'; import { useNativeButton } from "../../hooks/useNativeButton.mjs"; import { useAppElement } from "../../ThemeProvider/AppElementContext.mjs"; import { styles } from "../../Menu/sharedStyle.mjs"; import { styles as styles$1, triggerVariants } from "./style.mjs"; import { cloneElement, isValidElement } from "react"; import { jsx } from "react/jsx-runtime"; import { cx, useThemeMode } from "antd-style"; import { mergeProps } from "@base-ui/react/merge-props"; import { mergeRefs } from "react-merge-refs"; import { Select } from "@base-ui/react/select"; //#region src/base-ui/Select/atoms.tsx const mergeStateClassName = (base, className) => { if (typeof className === "function") return (state) => cx(base, className(state)); return cx(base, className); }; const SelectRoot = Select.Root; const SelectBackdrop = Select.Backdrop; const SelectSeparator = Select.Separator; const SelectTrigger = ({ children, className, nativeButton, shadow, size = "middle", variant, ref: refProp, ...rest }) => { const { isDarkMode } = useThemeMode(); const baseClassName = triggerVariants({ shadow, size, variant: variant ?? (isDarkMode ? "filled" : "outlined") }); const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({ children, nativeButton }); if (isValidElement(children)) return /* @__PURE__ */ jsx(Select.Trigger, { ...rest, nativeButton: resolvedNativeButton, render: (props, state) => { const resolvedProps = (() => { if (isNativeButtonTriggerElement) return props; const { type, ref: triggerRef, ...restProps } = props; return restProps; })(); const mergedProps = mergeProps(children.props, resolvedProps); const childClassName = typeof mergedProps.className === "function" ? mergedProps.className(state) : mergedProps.className; const extraClassName = typeof className === "function" ? className(state) : className; return cloneElement(children, { ...mergedProps, className: cx(baseClassName, childClassName, extraClassName), ref: mergeRefs([ children.ref, props.ref, refProp ]) }); } }); return /* @__PURE__ */ jsx(Select.Trigger, { ...rest, className: mergeStateClassName(baseClassName, className), nativeButton: resolvedNativeButton, ref: refProp, children }); }; SelectTrigger.displayName = "SelectTrigger"; const SelectIcon = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Icon, { className: mergeStateClassName(styles$1.icon, className), ...rest }); }; SelectIcon.displayName = "SelectIcon"; const SelectValue = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Value, { className: mergeStateClassName(styles$1.value, className), ...rest }); }; SelectValue.displayName = "SelectValue"; const SelectPortal = ({ container, ...rest }) => { const appElement = useAppElement(); return /* @__PURE__ */ jsx(Select.Portal, { container: container ?? appElement ?? void 0, ...rest }); }; SelectPortal.displayName = "SelectPortal"; const SelectPositioner = ({ align, alignItemWithTrigger, className, side, sideOffset, ...rest }) => { return /* @__PURE__ */ jsx(Select.Positioner, { align: align ?? "start", alignItemWithTrigger: alignItemWithTrigger ?? false, className: mergeStateClassName(styles$1.positioner, className), side: side ?? "bottom", sideOffset: sideOffset ?? 6, ...rest }); }; SelectPositioner.displayName = "SelectPositioner"; const SelectPopup = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Popup, { className: mergeStateClassName(cx(styles.popup, styles$1.popup), className), ...rest }); }; SelectPopup.displayName = "SelectPopup"; const SelectList = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.List, { className: mergeStateClassName(styles$1.list, className), ...rest }); }; SelectList.displayName = "SelectList"; const SelectItem = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Item, { className: mergeStateClassName(cx(styles.item, styles$1.item), className), ...rest }); }; SelectItem.displayName = "SelectItem"; const SelectItemText = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.ItemText, { className: mergeStateClassName(cx(styles.label, styles$1.itemText), className), ...rest }); }; SelectItemText.displayName = "SelectItemText"; const SelectItemIndicator = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.ItemIndicator, { className: mergeStateClassName(styles$1.itemIndicator, className), ...rest }); }; SelectItemIndicator.displayName = "SelectItemIndicator"; const SelectGroup = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Group, { className: mergeStateClassName(styles$1.group, className), ...rest }); }; SelectGroup.displayName = "SelectGroup"; const SelectGroupLabel = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.GroupLabel, { className: mergeStateClassName(cx(styles.groupLabel, styles$1.groupLabel), className), ...rest }); }; SelectGroupLabel.displayName = "SelectGroupLabel"; const SelectScrollUpArrow = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.ScrollUpArrow, { className: mergeStateClassName(styles$1.scrollArrow, className), ...rest }); }; SelectScrollUpArrow.displayName = "SelectScrollUpArrow"; const SelectScrollDownArrow = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.ScrollDownArrow, { className: mergeStateClassName(styles$1.scrollArrow, className), ...rest }); }; SelectScrollDownArrow.displayName = "SelectScrollDownArrow"; const SelectArrow = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Arrow, { className: mergeStateClassName(styles$1.arrow, className), ...rest }); }; SelectArrow.displayName = "SelectArrow"; //#endregion export { SelectArrow, SelectBackdrop, SelectGroup, SelectGroupLabel, SelectIcon, SelectItem, SelectItemIndicator, SelectItemText, SelectList, SelectPopup, SelectPortal, SelectPositioner, SelectRoot, SelectScrollDownArrow, SelectScrollUpArrow, SelectSeparator, SelectTrigger, SelectValue }; //# sourceMappingURL=atoms.mjs.map