UNPKG

@lobehub/ui

Version:

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

172 lines (169 loc) 6.5 kB
'use client'; import { useNativeButton } from "../hooks/useNativeButton.mjs"; import { styles } from "../Menu/sharedStyle.mjs"; import { usePortalContainer } from "../hooks/usePortalContainer.mjs"; import { LOBE_SELECT_CONTAINER_ATTR } from "./constants.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/LobeSelect/atoms.tsx const mergeStateClassName = (base, className) => { if (typeof className === "function") return (state) => cx(base, className(state)); return cx(base, className); }; const LobeSelectRoot = Select.Root; const LobeSelectBackdrop = Select.Backdrop; const LobeSelectSeparator = Select.Separator; const LobeSelectTrigger = ({ 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 }); }; LobeSelectTrigger.displayName = "LobeSelectTrigger"; const LobeSelectIcon = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Icon, { className: mergeStateClassName(styles$1.icon, className), ...rest }); }; LobeSelectIcon.displayName = "LobeSelectIcon"; const LobeSelectValue = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Value, { className: mergeStateClassName(styles$1.value, className), ...rest }); }; LobeSelectValue.displayName = "LobeSelectValue"; const LobeSelectPortal = ({ container, ...rest }) => { const defaultContainer = usePortalContainer(LOBE_SELECT_CONTAINER_ATTR); return /* @__PURE__ */ jsx(Select.Portal, { container: container ?? defaultContainer, ...rest }); }; LobeSelectPortal.displayName = "LobeSelectPortal"; const LobeSelectPositioner = ({ 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 }); }; LobeSelectPositioner.displayName = "LobeSelectPositioner"; const LobeSelectPopup = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Popup, { className: mergeStateClassName(cx(styles.popup, styles$1.popup), className), ...rest }); }; LobeSelectPopup.displayName = "LobeSelectPopup"; const LobeSelectList = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.List, { className: mergeStateClassName(styles$1.list, className), ...rest }); }; LobeSelectList.displayName = "LobeSelectList"; const LobeSelectItem = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Item, { className: mergeStateClassName(cx(styles.item, styles$1.item), className), ...rest }); }; LobeSelectItem.displayName = "LobeSelectItem"; const LobeSelectItemText = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.ItemText, { className: mergeStateClassName(cx(styles.label, styles$1.itemText), className), ...rest }); }; LobeSelectItemText.displayName = "LobeSelectItemText"; const LobeSelectItemIndicator = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.ItemIndicator, { className: mergeStateClassName(styles$1.itemIndicator, className), ...rest }); }; LobeSelectItemIndicator.displayName = "LobeSelectItemIndicator"; const LobeSelectGroup = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Group, { className: mergeStateClassName(styles$1.group, className), ...rest }); }; LobeSelectGroup.displayName = "LobeSelectGroup"; const LobeSelectGroupLabel = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.GroupLabel, { className: mergeStateClassName(cx(styles.groupLabel, styles$1.groupLabel), className), ...rest }); }; LobeSelectGroupLabel.displayName = "LobeSelectGroupLabel"; const LobeSelectScrollUpArrow = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.ScrollUpArrow, { className: mergeStateClassName(styles$1.scrollArrow, className), ...rest }); }; LobeSelectScrollUpArrow.displayName = "LobeSelectScrollUpArrow"; const LobeSelectScrollDownArrow = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.ScrollDownArrow, { className: mergeStateClassName(styles$1.scrollArrow, className), ...rest }); }; LobeSelectScrollDownArrow.displayName = "LobeSelectScrollDownArrow"; const LobeSelectArrow = ({ className, ...rest }) => { return /* @__PURE__ */ jsx(Select.Arrow, { className: mergeStateClassName(styles$1.arrow, className), ...rest }); }; LobeSelectArrow.displayName = "LobeSelectArrow"; //#endregion export { LobeSelectArrow, LobeSelectBackdrop, LobeSelectGroup, LobeSelectGroupLabel, LobeSelectIcon, LobeSelectItem, LobeSelectItemIndicator, LobeSelectItemText, LobeSelectList, LobeSelectPopup, LobeSelectPortal, LobeSelectPositioner, LobeSelectRoot, LobeSelectScrollDownArrow, LobeSelectScrollUpArrow, LobeSelectSeparator, LobeSelectTrigger, LobeSelectValue }; //# sourceMappingURL=atoms.mjs.map