"use client";
'use strict';

var lucideReact = require('lucide-react');
var button = require('@base-ui/react/button');
var clsx = require('clsx');
var tailwindMerge = require('tailwind-merge');
var classVarianceAuthority = require('class-variance-authority');
var jsxRuntime = require('react/jsx-runtime');
var menu = require('@base-ui/react/menu');

var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
  for (var prop in b || (b = {}))
    if (__hasOwnProp.call(b, prop))
      __defNormalProp(a, prop, b[prop]);
  if (__getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(b)) {
      if (__propIsEnum.call(b, prop))
        __defNormalProp(a, prop, b[prop]);
    }
  return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
  var target = {};
  for (var prop in source)
    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
      target[prop] = source[prop];
  if (source != null && __getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(source)) {
      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
        target[prop] = source[prop];
    }
  return target;
};
function cn(...inputs) {
  return tailwindMerge.twMerge(clsx.clsx(inputs));
}
var buttonVariants = classVarianceAuthority.cva(
  "group/button inline-flex shrink-0 cursor-pointer items-center justify-center gap-1.5 rounded-[var(--radius-sm)] border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap shadow-none transition-all outline-none select-none active:scale-[0.98] focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
  {
    variants: {
      variant: {
        default: "bg-primary text-primary-foreground shadow-none hover:bg-[var(--primary-hover)] active:bg-[var(--primary-hover)]",
        outline: "border-border bg-background shadow-none hover:bg-muted hover:text-foreground active:bg-muted active:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50 dark:active:bg-input/50",
        secondary: "border border-border bg-card font-medium text-foreground shadow-none hover:border-input-hover hover:bg-zinc-50 active:border-input-hover active:bg-zinc-100 aria-expanded:border-input-hover aria-expanded:bg-zinc-50 aria-expanded:text-foreground dark:bg-secondary dark:text-secondary-foreground dark:hover:bg-[var(--theme-background-button-secondary-hover)] dark:active:bg-[var(--theme-background-button-secondary-hover)] dark:aria-expanded:bg-[var(--theme-background-button-secondary-hover)]",
        soft: "bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/20 focus-visible:border-primary/40 focus-visible:ring-primary/20 dark:bg-primary/20 dark:hover:bg-primary/30 dark:active:bg-primary/30",
        ghost: "hover:bg-muted hover:text-foreground active:bg-muted active:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50 dark:active:bg-muted/50",
        muted: "text-muted-foreground hover:bg-muted hover:text-foreground active:bg-muted active:text-foreground dark:hover:bg-muted/50 dark:active:bg-muted/50",
        destructive: "bg-destructive text-white hover:opacity-95 active:opacity-95 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive dark:text-white dark:hover:opacity-95 dark:active:opacity-95 dark:focus-visible:ring-destructive/40"
      },
      size: {
        "2xs": "h-6 gap-1 rounded-[min(var(--radius-sm),6px)] px-2.5 text-xs in-data-[slot=button-group]:rounded-sm has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3",
        xs: "h-7 gap-1 rounded-[min(var(--radius-sm),7px)] px-2.5 text-xs in-data-[slot=button-group]:rounded-sm has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3",
        sm: "h-8 gap-1.5 rounded-[min(var(--radius-sm),8px)] px-3 text-[0.8rem] in-data-[slot=button-group]:rounded-sm has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3.5",
        default: "h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
        md: "h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
        /** Shift 2.0 top nav: 36px height, 8px vertical / 14px horizontal padding, 14px medium text, 16px icon, 6px gap */
        header: "h-9 min-h-[36px] gap-1.5 py-2 px-3.5 text-sm font-medium has-data-[icon=inline-end]:pr-3.5 has-data-[icon=inline-start]:pl-3.5 [&_svg:not([class*='size-'])]:size-4",
        lg: "h-10 gap-1.5 px-3.5 has-data-[icon=inline-end]:pr-3.5 has-data-[icon=inline-start]:pl-3.5 [&_svg:not([class*='size-'])]:size-4",
        xl: "h-12 gap-2 px-[1.125rem] text-base has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4 [&_svg:not([class*='size-'])]:size-5",
        icon: "h-9 w-9 shrink-0 px-0.5 in-data-[slot=button-group]:rounded-[var(--radius-sm)]",
        "icon-2xs": "h-6 w-6 shrink-0 px-0.5 rounded-[min(var(--radius-sm),6px)] in-data-[slot=button-group]:rounded-sm [&_svg:not([class*='size-'])]:size-3",
        "icon-xs": "h-7 w-7 shrink-0 px-0.5 rounded-[min(var(--radius-sm),6px)] in-data-[slot=button-group]:rounded-sm [&_svg:not([class*='size-'])]:size-3",
        "icon-sm": "h-8 w-8 shrink-0 px-0.5 rounded-[min(var(--radius-sm),8px)] in-data-[slot=button-group]:rounded-sm [&_svg:not([class*='size-'])]:size-3.5",
        "icon-lg": "h-10 w-10 shrink-0 px-0.5 in-data-[slot=button-group]:rounded-[var(--radius-sm)] [&_svg:not([class*='size-'])]:size-4",
        "icon-xl": "h-12 w-12 shrink-0 px-0.5 [&_svg:not([class*='size-'])]:size-5"
      }
    },
    defaultVariants: {
      variant: "default",
      size: "default"
    }
  }
);
function Button(_a) {
  var _b = _a, {
    className,
    variant = "default",
    size = "default",
    leadingIcon,
    trailingIcon,
    badge,
    loading = false,
    children,
    disabled
  } = _b, props = __objRest(_b, [
    "className",
    "variant",
    "size",
    "leadingIcon",
    "trailingIcon",
    "badge",
    "loading",
    "children",
    "disabled"
  ]);
  const isDisabled = disabled || loading;
  return /* @__PURE__ */ jsxRuntime.jsx(
    button.Button,
    __spreadProps(__spreadValues({
      "data-slot": "button",
      "aria-busy": loading || void 0,
      disabled: isDisabled,
      className: cn(buttonVariants({ variant, size, className }))
    }, props), {
      children: loading ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin shrink-0", "aria-hidden": true }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
        leadingIcon ? /* @__PURE__ */ jsxRuntime.jsx("span", { "data-icon": "inline-start", className: "contents", children: leadingIcon }) : null,
        children != null && children !== "" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
          children,
          badge != null ? badge : null
        ] }) : null,
        trailingIcon ? /* @__PURE__ */ jsxRuntime.jsx("span", { "data-icon": "inline-end", className: "contents", children: trailingIcon }) : null
      ] })
    })
  );
}
function DropdownMenu(_a) {
  var props = __objRest(_a, []);
  return /* @__PURE__ */ jsxRuntime.jsx(menu.Menu.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
}
function DropdownMenuTrigger(_a) {
  var props = __objRest(_a, []);
  return /* @__PURE__ */ jsxRuntime.jsx(menu.Menu.Trigger, __spreadValues({ "data-slot": "dropdown-menu-trigger" }, props));
}
function DropdownMenuContent(_a) {
  var _b = _a, {
    align = "start",
    alignOffset = 0,
    side = "bottom",
    sideOffset = 4,
    className
  } = _b, props = __objRest(_b, [
    "align",
    "alignOffset",
    "side",
    "sideOffset",
    "className"
  ]);
  return /* @__PURE__ */ jsxRuntime.jsx(menu.Menu.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
    menu.Menu.Positioner,
    {
      className: "isolate z-50 outline-none",
      align,
      alignOffset,
      side,
      sideOffset,
      children: /* @__PURE__ */ jsxRuntime.jsx(
        menu.Menu.Popup,
        __spreadValues({
          "data-slot": "dropdown-menu-content",
          className: cn("z-50 max-h-(--available-height) min-w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-sm bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95", className)
        }, props)
      )
    }
  ) });
}
function DropdownMenuItem(_a) {
  var _b = _a, {
    className,
    inset,
    variant = "default"
  } = _b, props = __objRest(_b, [
    "className",
    "inset",
    "variant"
  ]);
  return /* @__PURE__ */ jsxRuntime.jsx(
    menu.Menu.Item,
    __spreadValues({
      "data-slot": "dropdown-menu-item",
      "data-inset": inset,
      "data-variant": variant,
      className: cn(
        "group/dropdown-menu-item relative flex cursor-pointer items-center gap-1.5 rounded-xs px-1.5 py-1 text-sm whitespace-nowrap outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",
        className
      )
    }, props)
  );
}
function DropdownMenuRadioGroup(_a) {
  var props = __objRest(_a, []);
  return /* @__PURE__ */ jsxRuntime.jsx(
    menu.Menu.RadioGroup,
    __spreadValues({
      "data-slot": "dropdown-menu-radio-group"
    }, props)
  );
}
function DropdownMenuRadioItem(_a) {
  var _b = _a, {
    className,
    children,
    inset
  } = _b, props = __objRest(_b, [
    "className",
    "children",
    "inset"
  ]);
  return /* @__PURE__ */ jsxRuntime.jsxs(
    menu.Menu.RadioItem,
    __spreadProps(__spreadValues({
      "data-slot": "dropdown-menu-radio-item",
      "data-inset": inset,
      className: cn(
        "relative flex cursor-pointer items-center gap-1.5 rounded-xs py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
        className
      )
    }, props), {
      children: [
        /* @__PURE__ */ jsxRuntime.jsx(
          "span",
          {
            className: "pointer-events-none absolute right-2 flex items-center justify-center",
            "data-slot": "dropdown-menu-radio-item-indicator",
            children: /* @__PURE__ */ jsxRuntime.jsx(menu.Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(
              lucideReact.CheckIcon,
              {}
            ) })
          }
        ),
        children
      ]
    })
  );
}
function DropdownMenuSeparator(_a) {
  var _b = _a, {
    className
  } = _b, props = __objRest(_b, [
    "className"
  ]);
  return /* @__PURE__ */ jsxRuntime.jsx(
    menu.Menu.Separator,
    __spreadValues({
      "data-slot": "dropdown-menu-separator",
      className: cn("-mx-1 my-1 h-px bg-border", className)
    }, props)
  );
}
function MonthSelectButton({
  months,
  value,
  onValueChange,
  size = "header",
  className,
  align = "end"
}) {
  var _a, _b;
  const currentIndex = Math.max(
    0,
    months.findIndex((month) => month.value === value)
  );
  const currentMonth = (_a = months[currentIndex]) != null ? _a : months[0];
  const previousMonth = currentIndex > 0 ? months[currentIndex - 1] : null;
  const nextMonth = currentIndex < months.length - 1 ? months[currentIndex + 1] : null;
  return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { children: [
    /* @__PURE__ */ jsxRuntime.jsxs(
      DropdownMenuTrigger,
      {
        render: /* @__PURE__ */ jsxRuntime.jsx(
          Button,
          {
            variant: "secondary",
            size,
            className: cn("min-w-[168px] justify-between", className)
          }
        ),
        children: [
          /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1.5", children: [
            /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarDays, { className: "size-4" }),
            /* @__PURE__ */ jsxRuntime.jsx("span", { children: (_b = currentMonth == null ? void 0 : currentMonth.label) != null ? _b : "Select month" })
          ] }),
          /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "size-4" })
        ]
      }
    ),
    /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuContent, { align, side: "bottom", sideOffset: 6, className: "w-56", children: [
      /* @__PURE__ */ jsxRuntime.jsxs(
        DropdownMenuItem,
        {
          disabled: !previousMonth,
          onClick: () => {
            if (previousMonth) onValueChange(previousMonth.value);
          },
          children: [
            /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "size-4" }),
            "Previous month"
          ]
        }
      ),
      /* @__PURE__ */ jsxRuntime.jsxs(
        DropdownMenuItem,
        {
          disabled: !nextMonth,
          onClick: () => {
            if (nextMonth) onValueChange(nextMonth.value);
          },
          children: [
            /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-4" }),
            "Next month"
          ]
        }
      ),
      /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
      /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuRadioGroup, { value, children: months.map((month) => /* @__PURE__ */ jsxRuntime.jsx(
        DropdownMenuRadioItem,
        {
          value: month.value,
          onClick: () => onValueChange(month.value),
          children: month.label
        },
        month.value
      )) })
    ] })
  ] });
}

exports.MonthSelectButton = MonthSelectButton;
//# sourceMappingURL=month-select-button.cjs.map
//# sourceMappingURL=month-select-button.cjs.map