import { defineComponent, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
import { extend, createNamespace, unknownProp, numericProp } from "../utils/index.mjs";
import { ACTION_BAR_KEY } from "../action-bar/ActionBar.mjs";
import { useParent } from "@vant/use";
import { useRoute, routeProps } from "../composables/use-route.mjs";
import { Icon } from "../icon/index.mjs";
import { Badge } from "../badge/index.mjs";
const [name, bem] = createNamespace("action-bar-icon");
const actionBarIconProps = extend({}, routeProps, {
  dot: Boolean,
  text: String,
  icon: String,
  color: String,
  badge: numericProp,
  iconClass: unknownProp,
  badgeProps: Object,
  iconPrefix: String
});
var stdin_default = defineComponent({
  name,
  props: actionBarIconProps,
  setup(props, {
    slots
  }) {
    const route = useRoute();
    useParent(ACTION_BAR_KEY);
    const renderIcon = () => {
      const {
        dot,
        badge,
        icon,
        color,
        iconClass,
        badgeProps,
        iconPrefix
      } = props;
      if (slots.icon) {
        return _createVNode(Badge, _mergeProps({
          "dot": dot,
          "class": bem("icon"),
          "content": badge
        }, badgeProps), {
          default: slots.icon
        });
      }
      return _createVNode(Icon, {
        "tag": "div",
        "dot": dot,
        "name": icon,
        "badge": badge,
        "color": color,
        "class": [bem("icon"), iconClass],
        "badgeProps": badgeProps,
        "classPrefix": iconPrefix
      }, null);
    };
    return () => _createVNode("div", {
      "role": "button",
      "class": bem(),
      "tabindex": 0,
      "onClick": route
    }, [renderIcon(), slots.default ? slots.default() : props.text]);
  }
});
export {
  actionBarIconProps,
  stdin_default as default
};