@mesob/ui 0.5.3 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -248,7 +248,7 @@ function AppBreadcrumbs({
248
248
  className
249
249
  }) {
250
250
  const mesob = useMesob();
251
- const Link2 = linkProp ?? mesob?.linkComponent ?? mesob?.navigation?.Link;
251
+ const Link2 = linkProp ?? mesob?.navigation?.Link;
252
252
  const locale = mesob?.locale;
253
253
  const { items } = useBreadcrumbs2(void 0);
254
254
  if (items.length === 0) {
@@ -1457,7 +1457,7 @@ import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1457
1457
  var DROPDOWN_MENU_POSITIONER_CN = "isolate z-50 outline-none";
1458
1458
  var DROPDOWN_MENU_CONTENT_CN = cn(
1459
1459
  "cn-dropdown-menu-content cn-dropdown-menu-content-logical cn-menu-target",
1460
- "z-50 max-h-(--available-height) w-(--anchor-width)",
1460
+ "z-50 max-h-[min(100dvh,var(--available-height,100dvh))] w-[var(--anchor-width,auto)]",
1461
1461
  "origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none",
1462
1462
  "data-closed:overflow-hidden"
1463
1463
  );
@@ -1749,12 +1749,12 @@ function AppHeaderActions({
1749
1749
  accountMenuFooter
1750
1750
  }) {
1751
1751
  const mesob = useMesob2();
1752
- const LinkComponent = mesob?.linkComponent ?? mesob?.navigation?.Link;
1752
+ const LinkComponent = mesob?.navigation?.Link;
1753
1753
  const locale = mesob?.locale;
1754
1754
  const hasHrefItems = topMenuItems.some((i) => i.href) || menuItems.some((i) => i.href);
1755
1755
  if (hasHrefItems && !LinkComponent) {
1756
1756
  throw new Error(
1757
- "[AppHeaderActions] MesobProvider with routing is required for menu items with href"
1757
+ "[AppHeaderActions] MesobProvider is required for menu items with href"
1758
1758
  );
1759
1759
  }
1760
1760
  const initials = user?.fullName?.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2) || "U";
@@ -1876,7 +1876,6 @@ import { grant } from "@mesob/common/permission";
1876
1876
  import { useMesob as useMesob3 } from "@mesob/ui/providers";
1877
1877
  import { IconChevronDown } from "@tabler/icons-react";
1878
1878
  import { useEffect as useEffect8, useRef as useRef2, useState as useState5 } from "react";
1879
- import { useToggle } from "react-use";
1880
1879
 
1881
1880
  // src/components/ui/sidebar.tsx
1882
1881
  import { useRender as useRender3 } from "@base-ui/react/use-render";
@@ -2077,8 +2076,27 @@ function TooltipProvider({
2077
2076
  }
2078
2077
  );
2079
2078
  }
2080
- function Tooltip({ ...props }) {
2081
- return /* @__PURE__ */ jsx19(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
2079
+ function Tooltip({
2080
+ label,
2081
+ contentProps,
2082
+ triggerProps,
2083
+ children,
2084
+ ...props
2085
+ }) {
2086
+ if (label !== void 0) {
2087
+ return /* @__PURE__ */ jsxs12(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props, children: [
2088
+ /* @__PURE__ */ jsx19(
2089
+ TooltipTrigger,
2090
+ {
2091
+ render: /* @__PURE__ */ jsx19("span", { className: "inline-block" }),
2092
+ ...triggerProps,
2093
+ children
2094
+ }
2095
+ ),
2096
+ /* @__PURE__ */ jsx19(TooltipContent, { ...contentProps, children: label })
2097
+ ] });
2098
+ }
2099
+ return /* @__PURE__ */ jsx19(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props, children });
2082
2100
  }
2083
2101
  function TooltipTrigger({ ...props }) {
2084
2102
  return /* @__PURE__ */ jsx19(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
@@ -2807,6 +2825,20 @@ function RowContent({
2807
2825
  )
2808
2826
  ] });
2809
2827
  }
2828
+ function useNavBranchOpen(activeBranch) {
2829
+ const [open, setOpen] = useState5(activeBranch);
2830
+ useEffect8(() => {
2831
+ if (activeBranch) {
2832
+ setOpen(true);
2833
+ } else {
2834
+ setOpen(false);
2835
+ }
2836
+ }, [activeBranch]);
2837
+ const toggle = () => {
2838
+ setOpen((o) => !o);
2839
+ };
2840
+ return { open, toggle };
2841
+ }
2810
2842
  function NavItemRow({
2811
2843
  item,
2812
2844
  level,
@@ -2815,11 +2847,12 @@ function NavItemRow({
2815
2847
  onNavClick
2816
2848
  }) {
2817
2849
  const mesob = useMesob3();
2818
- const Link2 = mesob?.linkComponent ?? mesob?.navigation?.Link;
2850
+ const Link2 = mesob?.navigation?.Link;
2819
2851
  const locale = mesob?.locale;
2820
- const [open, toggle] = useToggle(hasActiveDescendant(item, pathname));
2852
+ const activeBranch = hasActiveDescendant(item, pathname);
2853
+ const { open, toggle } = useNavBranchOpen(activeBranch);
2821
2854
  const hasChildren = (item.children?.length ?? 0) > 0;
2822
- const showChildren = (open || hasActiveDescendant(item, pathname)) && hasChildren;
2855
+ const showChildren = open && hasChildren;
2823
2856
  const pathMatch = item.pathMatch ?? "prefix";
2824
2857
  const isActive = isLinkActive(pathname, item.href, pathMatch);
2825
2858
  const lineLeft = 28 + 20 * level;
@@ -3496,7 +3529,7 @@ function NoDataAvailable({
3496
3529
  icon
3497
3530
  }) {
3498
3531
  const mesob = useMesob4();
3499
- const Link2 = mesob?.linkComponent ?? mesob?.navigation?.Link;
3532
+ const Link2 = mesob?.navigation?.Link;
3500
3533
  const locale = mesob?.locale;
3501
3534
  const iconMap = {
3502
3535
  certificate: IconCertificateOff,
@@ -4121,7 +4154,7 @@ import { IconCheck as IconCheck2, IconChevronDown as IconChevronDown3, IconChevr
4121
4154
  import { jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
4122
4155
  var Select = SelectPrimitive.Root;
4123
4156
  var SELECT_TRIGGER_BASE_CN = "flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0";
4124
- var SELECT_CONTENT_BASE_CN = "cn-menu-target relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none";
4157
+ var SELECT_CONTENT_BASE_CN = "cn-menu-target relative isolate z-50 max-h-[min(100dvh,var(--available-height,100dvh))] w-[var(--anchor-width,auto)] origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none";
4125
4158
  var SELECT_ITEM_BASE_CN = "relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0";
4126
4159
  function SelectGroup({ className, ...props }) {
4127
4160
  return /* @__PURE__ */ jsx36(
@@ -4170,7 +4203,7 @@ function SelectContent({
4170
4203
  sideOffset = 4,
4171
4204
  align = "center",
4172
4205
  alignOffset = 0,
4173
- alignItemWithTrigger = true,
4206
+ alignItemWithTrigger = false,
4174
4207
  ...props
4175
4208
  }) {
4176
4209
  return /* @__PURE__ */ jsx36(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx36(
@@ -4295,11 +4328,10 @@ function EntityDetailHeader({
4295
4328
  className
4296
4329
  }) {
4297
4330
  const mesob = useMesob5();
4298
- const LinkComponent = mesob?.linkComponent ?? mesob?.navigation?.Link;
4331
+ const LinkComponent = mesob?.navigation?.Link;
4299
4332
  const pathname = mesob?.pathname ?? "";
4300
4333
  const locale = mesob?.locale;
4301
- const goBack = mesob?.goBack ?? (() => window.history.back());
4302
- const resolvedBackButton = showBack ? /* @__PURE__ */ jsx37(PageGoBack, { onBack: goBack, label: "Go back" }) : void 0;
4334
+ const resolvedBackButton = showBack && mesob?.goBack ? /* @__PURE__ */ jsx37(PageGoBack, { onBack: mesob.goBack, label: "Go back" }) : void 0;
4303
4335
  const hrefBasedActiveTab = useMemo3(() => {
4304
4336
  const hasPathname = Boolean(pathname);
4305
4337
  const allHaveHref = tabs.every((t) => t.href);
@@ -7968,7 +8000,6 @@ import { useState as useState22 } from "react";
7968
8000
  import { Controller as Controller2 } from "react-hook-form";
7969
8001
 
7970
8002
  // src/provider/mesob-provider.tsx
7971
- import { createNavigation } from "next-intl/navigation";
7972
8003
  import { createContext as createContext3, useContext as useContext3, useMemo as useMemo10 } from "react";
7973
8004
  import { z as z2 } from "zod";
7974
8005
 
@@ -15399,7 +15430,7 @@ function Anchor({
15399
15430
  ...props
15400
15431
  }) {
15401
15432
  const mesob = useMesob7();
15402
- const Link2 = mesob?.linkComponent ?? mesob?.navigation?.Link;
15433
+ const Link2 = mesob?.navigation?.Link;
15403
15434
  const locale = mesob?.locale;
15404
15435
  const useLink = href && !isExternal2(href) && Link2;
15405
15436
  const Comp = useLink ? Link2 : "a";
@@ -15601,7 +15632,7 @@ function AnimatedTabs({
15601
15632
  linkComponent: linkProp
15602
15633
  }) {
15603
15634
  const mesob = useMesob8();
15604
- const LinkComponent = linkProp ?? mesob?.linkComponent ?? mesob?.navigation?.Link;
15635
+ const LinkComponent = linkProp ?? mesob?.navigation?.Link;
15605
15636
  const locale = mesob?.locale;
15606
15637
  const [internalActiveTab, setInternalActiveTab] = useState36(
15607
15638
  defaultTab ?? tabs[0]?.value ?? ""
@@ -17891,7 +17922,7 @@ import { Combobox as ComboboxPrimitive } from "@base-ui/react/combobox";
17891
17922
  import { IconCheck as IconCheck4, IconChevronDown as IconChevronDown9 } from "@tabler/icons-react";
17892
17923
  import { useMemo as useMemo13, useState as useState40 } from "react";
17893
17924
  import { jsx as jsx142, jsxs as jsxs85 } from "react/jsx-runtime";
17894
- var COMBOBOX_CONTENT_BASE_CN = "cn-menu-target group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) data-[chips=true]:min-w-(--anchor-width)";
17925
+ var COMBOBOX_CONTENT_BASE_CN = "cn-menu-target group/combobox-content relative max-h-[min(100dvh,var(--available-height,100dvh))] w-[var(--anchor-width,auto)] max-w-[min(100vw,var(--available-width,100vw))] min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) data-[chips=true]:min-w-[var(--anchor-width,auto)]";
17895
17926
  var COMBOBOX_ITEM_BASE_CN = "relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0";
17896
17927
  function Combobox({
17897
17928
  options,
@@ -18084,7 +18115,7 @@ import { jsx as jsx144, jsxs as jsxs86 } from "react/jsx-runtime";
18084
18115
  var CONTEXT_MENU_POSITIONER_CN = "isolate z-50 outline-none";
18085
18116
  var CONTEXT_MENU_CONTENT_CN = cn(
18086
18117
  "cn-context-menu-content cn-context-menu-content-logical cn-menu-target",
18087
- "z-50 max-h-(--available-height)",
18118
+ "z-50 max-h-[min(100dvh,var(--available-height,100dvh))]",
18088
18119
  "origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none",
18089
18120
  "data-closed:overflow-hidden"
18090
18121
  );
@@ -18189,7 +18220,7 @@ function ContextMenuSubContent({
18189
18220
  "data-slot": "context-menu-sub-content",
18190
18221
  className: cn(
18191
18222
  "cn-context-menu-sub-content cn-context-menu-content-logical cn-context-menu-subcontent",
18192
- "z-50 max-h-(--available-height) w-auto origin-(--transform-origin)",
18223
+ "z-50 max-h-[min(100dvh,var(--available-height,100dvh))] w-auto origin-(--transform-origin)",
18193
18224
  "overflow-x-hidden overflow-y-auto outline-none",
18194
18225
  className
18195
18226
  ),
@@ -18849,6 +18880,7 @@ function DropdownButton({
18849
18880
  mainButtonClassName,
18850
18881
  triggerClassName,
18851
18882
  contentClassName,
18883
+ align = "end",
18852
18884
  positionerProps,
18853
18885
  contentProps,
18854
18886
  className,
@@ -18879,7 +18911,7 @@ function DropdownButton({
18879
18911
  children
18880
18912
  }
18881
18913
  ),
18882
- /* @__PURE__ */ jsx151(DropdownMenuPositioner, { ...positionerProps, children: /* @__PURE__ */ jsx151(
18914
+ /* @__PURE__ */ jsx151(DropdownMenuPositioner, { align, ...positionerProps, children: /* @__PURE__ */ jsx151(
18883
18915
  DropdownMenuContent,
18884
18916
  {
18885
18917
  ...contentProps,
@@ -18933,7 +18965,7 @@ function DropdownButton({
18933
18965
  }
18934
18966
  )
18935
18967
  ] }),
18936
- /* @__PURE__ */ jsx151(DropdownMenuPositioner, { ...positionerProps, children: /* @__PURE__ */ jsx151(
18968
+ /* @__PURE__ */ jsx151(DropdownMenuPositioner, { align, ...positionerProps, children: /* @__PURE__ */ jsx151(
18937
18969
  DropdownMenuContent,
18938
18970
  {
18939
18971
  ...contentProps,
@@ -20684,7 +20716,7 @@ import { jsx as jsx169, jsxs as jsxs97 } from "react/jsx-runtime";
20684
20716
  var MENUBAR_POSITIONER_CN = "isolate z-50 outline-none";
20685
20717
  var MENUBAR_CONTENT_CN = cn(
20686
20718
  "cn-menubar-content cn-menubar-content-logical cn-menu-target",
20687
- "z-50 max-h-(--available-height)",
20719
+ "z-50 max-h-[min(100dvh,var(--available-height,100dvh))]",
20688
20720
  "origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none",
20689
20721
  "data-closed:overflow-hidden"
20690
20722
  );
@@ -20936,7 +20968,7 @@ function MenubarSubContent({
20936
20968
  "data-slot": "menubar-sub-content",
20937
20969
  className: cn(
20938
20970
  "cn-menubar-sub-content cn-menubar-content-logical",
20939
- "z-50 max-h-(--available-height) w-auto origin-(--transform-origin)",
20971
+ "z-50 max-h-[min(100dvh,var(--available-height,100dvh))] w-auto origin-(--transform-origin)",
20940
20972
  "overflow-x-hidden overflow-y-auto outline-none",
20941
20973
  className
20942
20974
  ),
@@ -21354,7 +21386,7 @@ function NavLink({
21354
21386
  ...props
21355
21387
  }) {
21356
21388
  const mesob = useMesob9();
21357
- const Link2 = mesob?.linkComponent ?? mesob?.navigation?.Link;
21389
+ const Link2 = mesob?.navigation?.Link;
21358
21390
  const locale = mesob?.locale;
21359
21391
  const useLink = href && !isExternal3(href) && Link2;
21360
21392
  const Comp = useLink ? Link2 : "a";
@@ -22983,10 +23015,165 @@ function Stack({
22983
23015
  );
22984
23016
  }
22985
23017
 
23018
+ // src/components/ui/status-dropdown-button.tsx
23019
+ import { useCallback as useCallback25, useMemo as useMemo16, useState as useState53 } from "react";
23020
+ import { Fragment as Fragment30, jsx as jsx192, jsxs as jsxs110 } from "react/jsx-runtime";
23021
+ var STATUS_MENU_SEPARATOR = "separator";
23022
+ function resolveConfirmConfig(target, entityLabel) {
23023
+ if (!target.confirm) {
23024
+ return null;
23025
+ }
23026
+ const baseVariant = target.variant === "destructive" ? "destructive" : "default";
23027
+ if (target.confirm === true) {
23028
+ return {
23029
+ title: "Confirm status change",
23030
+ description: entityLabel !== void 0 ? `This will update this ${entityLabel}.` : "You can change it again later.",
23031
+ cancelLabel: "Cancel",
23032
+ confirmLabel: "Continue",
23033
+ confirmVariant: baseVariant
23034
+ };
23035
+ }
23036
+ return {
23037
+ cancelLabel: "Cancel",
23038
+ confirmLabel: "Continue",
23039
+ confirmVariant: baseVariant,
23040
+ ...target.confirm
23041
+ };
23042
+ }
23043
+ function buildItems(value, states, transitions, groupLabel, onPick) {
23044
+ const row = transitions !== void 0 && value in transitions ? transitions[value] ?? [] : states.filter((s) => s.value !== value).map((s) => s.value);
23045
+ const items = [];
23046
+ if (groupLabel !== null) {
23047
+ items.push({
23048
+ type: "label",
23049
+ key: "status-group",
23050
+ label: groupLabel === void 0 ? "Change status" : groupLabel
23051
+ });
23052
+ }
23053
+ for (let i = 0; i < row.length; i++) {
23054
+ const slot = row[i];
23055
+ if (slot === STATUS_MENU_SEPARATOR) {
23056
+ items.push({
23057
+ type: "separator",
23058
+ key: `status-sep-${value}-${i}`
23059
+ });
23060
+ continue;
23061
+ }
23062
+ const def = states.find((s) => s.value === slot);
23063
+ if (!def) {
23064
+ continue;
23065
+ }
23066
+ items.push({
23067
+ key: `status-${slot}`,
23068
+ label: def.label,
23069
+ icon: def.icon,
23070
+ variant: def.variant,
23071
+ disabled: def.disabled,
23072
+ inset: def.inset,
23073
+ onSelect: () => onPick(slot)
23074
+ });
23075
+ }
23076
+ return items;
23077
+ }
23078
+ function StatusDropdownButton({
23079
+ value,
23080
+ onStatusChange,
23081
+ states,
23082
+ transitions,
23083
+ groupLabel,
23084
+ labelPrefix,
23085
+ buttonClassName,
23086
+ entityLabel,
23087
+ className,
23088
+ variant,
23089
+ ...dropdownProps
23090
+ }) {
23091
+ const [pending, setPending] = useState53(null);
23092
+ const onPick = useCallback25(
23093
+ (next) => {
23094
+ const target = states.find((s) => s.value === next);
23095
+ if (!target) {
23096
+ onStatusChange(next);
23097
+ return;
23098
+ }
23099
+ const cfg = resolveConfirmConfig(target, entityLabel);
23100
+ if (cfg) {
23101
+ setPending({ next, config: cfg });
23102
+ } else {
23103
+ onStatusChange(next);
23104
+ }
23105
+ },
23106
+ [states, entityLabel, onStatusChange]
23107
+ );
23108
+ const items = useMemo16(
23109
+ () => buildItems(value, states, transitions, groupLabel, onPick),
23110
+ [value, states, transitions, groupLabel, onPick]
23111
+ );
23112
+ const current = states.find((s) => s.value === value);
23113
+ return /* @__PURE__ */ jsxs110(Fragment30, { children: [
23114
+ /* @__PURE__ */ jsx192(
23115
+ DropdownButton,
23116
+ {
23117
+ ...dropdownProps,
23118
+ className,
23119
+ items,
23120
+ variant,
23121
+ children: /* @__PURE__ */ jsxs110(
23122
+ "span",
23123
+ {
23124
+ className: cn(
23125
+ "inline-flex min-w-0 items-center gap-2",
23126
+ buttonClassName
23127
+ ),
23128
+ children: [
23129
+ labelPrefix ? /* @__PURE__ */ jsx192("span", { className: "text-muted-foreground shrink-0", children: labelPrefix }) : null,
23130
+ current?.icon ? /* @__PURE__ */ jsx192("span", { className: "inline-flex shrink-0", children: current.icon }) : null,
23131
+ /* @__PURE__ */ jsx192("span", { className: "min-w-0 truncate", children: current?.label ?? value })
23132
+ ]
23133
+ }
23134
+ )
23135
+ }
23136
+ ),
23137
+ /* @__PURE__ */ jsx192(
23138
+ AlertDialog,
23139
+ {
23140
+ open: pending !== null,
23141
+ onOpenChange: (open) => {
23142
+ if (!open) {
23143
+ setPending(null);
23144
+ }
23145
+ },
23146
+ children: /* @__PURE__ */ jsxs110(AlertDialogContent, { children: [
23147
+ /* @__PURE__ */ jsxs110(AlertDialogHeader, { children: [
23148
+ /* @__PURE__ */ jsx192(AlertDialogTitle, { children: pending?.config.title ?? "Confirm?" }),
23149
+ pending?.config.description != null ? /* @__PURE__ */ jsx192(AlertDialogDescription, { children: pending.config.description }) : null
23150
+ ] }),
23151
+ /* @__PURE__ */ jsxs110(AlertDialogFooter, { children: [
23152
+ /* @__PURE__ */ jsx192(AlertDialogCancel, { children: pending?.config.cancelLabel ?? "Cancel" }),
23153
+ /* @__PURE__ */ jsx192(
23154
+ AlertDialogAction,
23155
+ {
23156
+ variant: pending?.config.confirmVariant ?? "default",
23157
+ onClick: () => {
23158
+ if (pending) {
23159
+ onStatusChange(pending.next);
23160
+ setPending(null);
23161
+ }
23162
+ },
23163
+ children: pending?.config.confirmLabel ?? "Continue"
23164
+ }
23165
+ )
23166
+ ] })
23167
+ ] })
23168
+ }
23169
+ )
23170
+ ] });
23171
+ }
23172
+
22986
23173
  // src/components/ui/stepper.tsx
22987
23174
  import { IconCheck as IconCheck9 } from "@tabler/icons-react";
22988
23175
  import { createContext as createContext8, useContext as useContext9 } from "react";
22989
- import { jsx as jsx192, jsxs as jsxs110 } from "react/jsx-runtime";
23176
+ import { jsx as jsx193, jsxs as jsxs111 } from "react/jsx-runtime";
22990
23177
  var StepperContext = createContext8({
22991
23178
  activeStep: 0,
22992
23179
  orientation: "horizontal"
@@ -22999,7 +23186,7 @@ function Stepper({
22999
23186
  children,
23000
23187
  ...props
23001
23188
  }) {
23002
- return /* @__PURE__ */ jsx192(StepperContext.Provider, { value: { activeStep, orientation }, children: /* @__PURE__ */ jsx192(
23189
+ return /* @__PURE__ */ jsx193(StepperContext.Provider, { value: { activeStep, orientation }, children: /* @__PURE__ */ jsx193(
23003
23190
  "div",
23004
23191
  {
23005
23192
  "data-slot": "stepper",
@@ -23031,7 +23218,7 @@ function Step({
23031
23218
  } else if (isActive) {
23032
23219
  state2 = "active";
23033
23220
  }
23034
- return /* @__PURE__ */ jsxs110(
23221
+ return /* @__PURE__ */ jsxs111(
23035
23222
  "div",
23036
23223
  {
23037
23224
  "data-slot": "step",
@@ -23043,7 +23230,7 @@ function Step({
23043
23230
  ),
23044
23231
  ...props,
23045
23232
  children: [
23046
- /* @__PURE__ */ jsxs110(
23233
+ /* @__PURE__ */ jsxs111(
23047
23234
  "div",
23048
23235
  {
23049
23236
  className: cn(
@@ -23051,16 +23238,16 @@ function Step({
23051
23238
  orientation === "horizontal" && "flex-col gap-2"
23052
23239
  ),
23053
23240
  children: [
23054
- /* @__PURE__ */ jsx192(
23241
+ /* @__PURE__ */ jsx193(
23055
23242
  "div",
23056
23243
  {
23057
23244
  "data-slot": "step-indicator",
23058
23245
  "data-state": state2,
23059
23246
  className: cn("cn-step-indicator"),
23060
- children: isCompleted ? /* @__PURE__ */ jsx192(IconCheck9, { className: "size-5" }) : /* @__PURE__ */ jsx192("span", { children: index + 1 })
23247
+ children: isCompleted ? /* @__PURE__ */ jsx193(IconCheck9, { className: "size-5" }) : /* @__PURE__ */ jsx193("span", { children: index + 1 })
23061
23248
  }
23062
23249
  ),
23063
- (label || description) && /* @__PURE__ */ jsxs110(
23250
+ (label || description) && /* @__PURE__ */ jsxs111(
23064
23251
  "div",
23065
23252
  {
23066
23253
  className: cn(
@@ -23068,15 +23255,15 @@ function Step({
23068
23255
  orientation === "vertical" && "text-left"
23069
23256
  ),
23070
23257
  children: [
23071
- label && /* @__PURE__ */ jsx192("div", { className: cn("cn-step-label"), children: label }),
23072
- description && /* @__PURE__ */ jsx192("div", { className: "cn-step-description", children: description })
23258
+ label && /* @__PURE__ */ jsx193("div", { className: cn("cn-step-label"), children: label }),
23259
+ description && /* @__PURE__ */ jsx193("div", { className: "cn-step-description", children: description })
23073
23260
  ]
23074
23261
  }
23075
23262
  )
23076
23263
  ]
23077
23264
  }
23078
23265
  ),
23079
- orientation === "horizontal" && !isLast && /* @__PURE__ */ jsx192(
23266
+ orientation === "horizontal" && !isLast && /* @__PURE__ */ jsx193(
23080
23267
  "div",
23081
23268
  {
23082
23269
  "data-slot": "step-connector",
@@ -23084,7 +23271,7 @@ function Step({
23084
23271
  className: cn("cn-step-connector")
23085
23272
  }
23086
23273
  ),
23087
- orientation === "vertical" && /* @__PURE__ */ jsx192("div", { className: "flex flex-1 flex-col gap-2", children })
23274
+ orientation === "vertical" && /* @__PURE__ */ jsx193("div", { className: "flex flex-1 flex-col gap-2", children })
23088
23275
  ]
23089
23276
  }
23090
23277
  );
@@ -23092,7 +23279,7 @@ function Step({
23092
23279
 
23093
23280
  // src/components/ui/switch.tsx
23094
23281
  import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
23095
- import { jsx as jsx193 } from "react/jsx-runtime";
23282
+ import { jsx as jsx194 } from "react/jsx-runtime";
23096
23283
  function mapSwitchSize(size) {
23097
23284
  return size === "xs" || size === "sm" ? "sm" : "default";
23098
23285
  }
@@ -23103,7 +23290,7 @@ function Switch({
23103
23290
  ...props
23104
23291
  }) {
23105
23292
  const mappedSize = mapSwitchSize(size);
23106
- return /* @__PURE__ */ jsx193(
23293
+ return /* @__PURE__ */ jsx194(
23107
23294
  SwitchPrimitive.Root,
23108
23295
  {
23109
23296
  "data-slot": "switch",
@@ -23115,7 +23302,7 @@ function Switch({
23115
23302
  className
23116
23303
  ),
23117
23304
  ...props,
23118
- children: /* @__PURE__ */ jsx193(
23305
+ children: /* @__PURE__ */ jsx194(
23119
23306
  SwitchPrimitive.Thumb,
23120
23307
  {
23121
23308
  "data-slot": "switch-thumb",
@@ -23127,7 +23314,7 @@ function Switch({
23127
23314
  }
23128
23315
 
23129
23316
  // src/components/ui/table-of-contents.tsx
23130
- import { jsx as jsx194 } from "react/jsx-runtime";
23317
+ import { jsx as jsx195 } from "react/jsx-runtime";
23131
23318
  function TableOfContents({
23132
23319
  className,
23133
23320
  items,
@@ -23138,7 +23325,7 @@ function TableOfContents({
23138
23325
  minDepth = 1,
23139
23326
  ...props
23140
23327
  }) {
23141
- return /* @__PURE__ */ jsx194(
23328
+ return /* @__PURE__ */ jsx195(
23142
23329
  "nav",
23143
23330
  {
23144
23331
  "data-slot": "table-of-contents",
@@ -23149,7 +23336,7 @@ function TableOfContents({
23149
23336
  const depth = item.depth ?? 1;
23150
23337
  const paddingLeft = Math.max(0, depth - minDepth) * depthOffset;
23151
23338
  const isActive = activeId === item.id;
23152
- return /* @__PURE__ */ jsx194(
23339
+ return /* @__PURE__ */ jsx195(
23153
23340
  UnstyledButton,
23154
23341
  {
23155
23342
  type: "button",
@@ -23171,8 +23358,8 @@ function TableOfContents({
23171
23358
 
23172
23359
  // src/components/ui/tags-input.tsx
23173
23360
  import { IconX as IconX14 } from "@tabler/icons-react";
23174
- import { useState as useState53 } from "react";
23175
- import { jsx as jsx195, jsxs as jsxs111 } from "react/jsx-runtime";
23361
+ import { useState as useState54 } from "react";
23362
+ import { jsx as jsx196, jsxs as jsxs112 } from "react/jsx-runtime";
23176
23363
  function TagsInput({
23177
23364
  className,
23178
23365
  value,
@@ -23185,8 +23372,8 @@ function TagsInput({
23185
23372
  disabled = false,
23186
23373
  ...props
23187
23374
  }) {
23188
- const [internalValue, setInternalValue] = useState53(defaultValue);
23189
- const [inputValue, setInputValue] = useState53("");
23375
+ const [internalValue, setInternalValue] = useState54(defaultValue);
23376
+ const [inputValue, setInputValue] = useState54("");
23190
23377
  const tags = value ?? internalValue;
23191
23378
  const addTag = (tag) => {
23192
23379
  const trimmed = tag.trim();
@@ -23230,21 +23417,21 @@ function TagsInput({
23230
23417
  }
23231
23418
  setInputValue(newValue);
23232
23419
  };
23233
- return /* @__PURE__ */ jsxs111(
23420
+ return /* @__PURE__ */ jsxs112(
23234
23421
  "div",
23235
23422
  {
23236
23423
  "data-slot": "tags-input",
23237
23424
  className: cn("cn-tags-input cn-combobox-chips", className),
23238
23425
  ...props,
23239
23426
  children: [
23240
- tags.map((tag, index) => /* @__PURE__ */ jsxs111(
23427
+ tags.map((tag, index) => /* @__PURE__ */ jsxs112(
23241
23428
  "span",
23242
23429
  {
23243
23430
  "data-slot": "tags-input-tag",
23244
23431
  className: "cn-combobox-chip",
23245
23432
  children: [
23246
23433
  tag,
23247
- /* @__PURE__ */ jsxs111(
23434
+ /* @__PURE__ */ jsxs112(
23248
23435
  "button",
23249
23436
  {
23250
23437
  type: "button",
@@ -23253,8 +23440,8 @@ function TagsInput({
23253
23440
  disabled,
23254
23441
  className: "cn-combobox-chip-remove",
23255
23442
  children: [
23256
- /* @__PURE__ */ jsx195("span", { className: "sr-only", children: "Remove" }),
23257
- /* @__PURE__ */ jsx195(IconX14, { className: "size-3" })
23443
+ /* @__PURE__ */ jsx196("span", { className: "sr-only", children: "Remove" }),
23444
+ /* @__PURE__ */ jsx196(IconX14, { className: "size-3" })
23258
23445
  ]
23259
23446
  }
23260
23447
  )
@@ -23262,7 +23449,7 @@ function TagsInput({
23262
23449
  },
23263
23450
  allowDuplicates ? `${tag}-${index}` : tag
23264
23451
  )),
23265
- /* @__PURE__ */ jsx195(
23452
+ /* @__PURE__ */ jsx196(
23266
23453
  "input",
23267
23454
  {
23268
23455
  type: "text",
@@ -23281,7 +23468,7 @@ function TagsInput({
23281
23468
 
23282
23469
  // src/components/ui/text-input.tsx
23283
23470
  import { forwardRef as forwardRef16 } from "react";
23284
- import { jsx as jsx196, jsxs as jsxs112 } from "react/jsx-runtime";
23471
+ import { jsx as jsx197, jsxs as jsxs113 } from "react/jsx-runtime";
23285
23472
  var TextInput = forwardRef16(
23286
23473
  ({
23287
23474
  label,
@@ -23310,14 +23497,14 @@ var TextInput = forwardRef16(
23310
23497
  xl: "h-12"
23311
23498
  };
23312
23499
  const hasWrapper = label || description || error || required || withAsterisk;
23313
- const inputElement = /* @__PURE__ */ jsxs112(
23500
+ const inputElement = /* @__PURE__ */ jsxs113(
23314
23501
  InputGroup,
23315
23502
  {
23316
23503
  disabled,
23317
23504
  className: cn(size && groupSizeClasses[size]),
23318
23505
  children: [
23319
- leftSection && /* @__PURE__ */ jsx196(InputGroupAddon, { align: "inline-start", className: "pointer-events-none", children: leftSection }),
23320
- /* @__PURE__ */ jsx196(
23506
+ leftSection && /* @__PURE__ */ jsx197(InputGroupAddon, { align: "inline-start", className: "pointer-events-none", children: leftSection }),
23507
+ /* @__PURE__ */ jsx197(
23321
23508
  InputGroupInput,
23322
23509
  {
23323
23510
  ref,
@@ -23328,7 +23515,7 @@ var TextInput = forwardRef16(
23328
23515
  ...inputProps
23329
23516
  }
23330
23517
  ),
23331
- rightSection && /* @__PURE__ */ jsx196(
23518
+ rightSection && /* @__PURE__ */ jsx197(
23332
23519
  InputGroupAddon,
23333
23520
  {
23334
23521
  align: "inline-end",
@@ -23344,7 +23531,7 @@ var TextInput = forwardRef16(
23344
23531
  if (!hasWrapper) {
23345
23532
  return inputElement;
23346
23533
  }
23347
- return /* @__PURE__ */ jsx196(
23534
+ return /* @__PURE__ */ jsx197(
23348
23535
  InputWrapper,
23349
23536
  {
23350
23537
  label,
@@ -23367,7 +23554,7 @@ TextInput.displayName = "TextInput";
23367
23554
 
23368
23555
  // src/components/ui/theme-icon.tsx
23369
23556
  import { cva as cva25 } from "class-variance-authority";
23370
- import { jsx as jsx197 } from "react/jsx-runtime";
23557
+ import { jsx as jsx198 } from "react/jsx-runtime";
23371
23558
  var themeIconVariants = cva25(
23372
23559
  "cn-theme-icon inline-flex items-center justify-center shrink-0 transition-colors",
23373
23560
  {
@@ -23500,7 +23687,7 @@ function ThemeIcon({
23500
23687
  children,
23501
23688
  ...props
23502
23689
  }) {
23503
- return /* @__PURE__ */ jsx197(
23690
+ return /* @__PURE__ */ jsx198(
23504
23691
  "div",
23505
23692
  {
23506
23693
  "data-slot": "theme-icon",
@@ -23515,9 +23702,9 @@ function ThemeIcon({
23515
23702
  }
23516
23703
 
23517
23704
  // src/components/ui/timeline.tsx
23518
- import { jsx as jsx198 } from "react/jsx-runtime";
23705
+ import { jsx as jsx199 } from "react/jsx-runtime";
23519
23706
  function Timeline({ className, ...props }) {
23520
- return /* @__PURE__ */ jsx198(
23707
+ return /* @__PURE__ */ jsx199(
23521
23708
  "ol",
23522
23709
  {
23523
23710
  "data-slot": "timeline",
@@ -23527,7 +23714,7 @@ function Timeline({ className, ...props }) {
23527
23714
  );
23528
23715
  }
23529
23716
  function TimelineItem({ className, ...props }) {
23530
- return /* @__PURE__ */ jsx198(
23717
+ return /* @__PURE__ */ jsx199(
23531
23718
  "li",
23532
23719
  {
23533
23720
  "data-slot": "timeline-item",
@@ -23541,7 +23728,7 @@ function TimelineDot({
23541
23728
  variant = "default",
23542
23729
  ...props
23543
23730
  }) {
23544
- return /* @__PURE__ */ jsx198(
23731
+ return /* @__PURE__ */ jsx199(
23545
23732
  "div",
23546
23733
  {
23547
23734
  "data-slot": "timeline-dot",
@@ -23552,7 +23739,7 @@ function TimelineDot({
23552
23739
  );
23553
23740
  }
23554
23741
  function TimelineContent({ className, ...props }) {
23555
- return /* @__PURE__ */ jsx198(
23742
+ return /* @__PURE__ */ jsx199(
23556
23743
  "div",
23557
23744
  {
23558
23745
  "data-slot": "timeline-content",
@@ -23566,13 +23753,13 @@ function TimelineTitle({
23566
23753
  children,
23567
23754
  ...props
23568
23755
  }) {
23569
- return /* @__PURE__ */ jsx198(
23756
+ return /* @__PURE__ */ jsx199(
23570
23757
  "h3",
23571
23758
  {
23572
23759
  "data-slot": "timeline-title",
23573
23760
  className: cn("cn-timeline-title", className),
23574
23761
  ...props,
23575
- children: children ?? /* @__PURE__ */ jsx198("span", { className: "sr-only", children: "Timeline item" })
23762
+ children: children ?? /* @__PURE__ */ jsx199("span", { className: "sr-only", children: "Timeline item" })
23576
23763
  }
23577
23764
  );
23578
23765
  }
@@ -23580,7 +23767,7 @@ function TimelineDescription({
23580
23767
  className,
23581
23768
  ...props
23582
23769
  }) {
23583
- return /* @__PURE__ */ jsx198(
23770
+ return /* @__PURE__ */ jsx199(
23584
23771
  "p",
23585
23772
  {
23586
23773
  "data-slot": "timeline-description",
@@ -23590,7 +23777,7 @@ function TimelineDescription({
23590
23777
  );
23591
23778
  }
23592
23779
  function TimelineTime({ className, ...props }) {
23593
- return /* @__PURE__ */ jsx198(
23780
+ return /* @__PURE__ */ jsx199(
23594
23781
  "time",
23595
23782
  {
23596
23783
  "data-slot": "timeline-time",
@@ -23602,7 +23789,7 @@ function TimelineTime({ className, ...props }) {
23602
23789
 
23603
23790
  // src/components/ui/title.tsx
23604
23791
  import { cva as cva26 } from "class-variance-authority";
23605
- import { jsx as jsx199 } from "react/jsx-runtime";
23792
+ import { jsx as jsx200 } from "react/jsx-runtime";
23606
23793
  var titleVariants = cva26("font-semibold tracking-tight text-pretty", {
23607
23794
  variants: {
23608
23795
  order: {
@@ -23653,7 +23840,7 @@ function Title({
23653
23840
  ...props
23654
23841
  }) {
23655
23842
  const Component = `h${order}`;
23656
- return /* @__PURE__ */ jsx199(
23843
+ return /* @__PURE__ */ jsx200(
23657
23844
  Component,
23658
23845
  {
23659
23846
  "data-slot": "title",
@@ -23670,7 +23857,7 @@ function Title({
23670
23857
  // src/components/ui/toggle.tsx
23671
23858
  import { Toggle as TogglePrimitive } from "@base-ui/react/toggle";
23672
23859
  import { cva as cva27 } from "class-variance-authority";
23673
- import { jsx as jsx200 } from "react/jsx-runtime";
23860
+ import { jsx as jsx201 } from "react/jsx-runtime";
23674
23861
  var toggleVariants = cva27(
23675
23862
  'cn-toggle inline-flex items-center justify-center gap-2 whitespace-nowrap border border-transparent outline-none transition-colors [&_svg]:pointer-events-none [&_svg:not([class*="size-"])]:size-4 [&_svg]:shrink-0',
23676
23863
  {
@@ -23697,7 +23884,7 @@ function Toggle({
23697
23884
  size,
23698
23885
  ...props
23699
23886
  }) {
23700
- return /* @__PURE__ */ jsx200(
23887
+ return /* @__PURE__ */ jsx201(
23701
23888
  TogglePrimitive,
23702
23889
  {
23703
23890
  "data-slot": "toggle",
@@ -23711,7 +23898,7 @@ function Toggle({
23711
23898
  import { Toggle as TogglePrimitive2 } from "@base-ui/react/toggle";
23712
23899
  import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group";
23713
23900
  import * as React16 from "react";
23714
- import { jsx as jsx201 } from "react/jsx-runtime";
23901
+ import { jsx as jsx202 } from "react/jsx-runtime";
23715
23902
  var ToggleGroupContext = React16.createContext({
23716
23903
  size: "default",
23717
23904
  variant: "default",
@@ -23725,7 +23912,7 @@ function ToggleGroup({
23725
23912
  children,
23726
23913
  ...props
23727
23914
  }) {
23728
- return /* @__PURE__ */ jsx201(
23915
+ return /* @__PURE__ */ jsx202(
23729
23916
  ToggleGroupPrimitive,
23730
23917
  {
23731
23918
  "data-slot": "toggle-group",
@@ -23738,7 +23925,7 @@ function ToggleGroup({
23738
23925
  className
23739
23926
  ),
23740
23927
  ...props,
23741
- children: /* @__PURE__ */ jsx201(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
23928
+ children: /* @__PURE__ */ jsx202(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
23742
23929
  }
23743
23930
  );
23744
23931
  }
@@ -23750,7 +23937,7 @@ function ToggleGroupItem({
23750
23937
  ...props
23751
23938
  }) {
23752
23939
  const context = React16.useContext(ToggleGroupContext);
23753
- return /* @__PURE__ */ jsx201(
23940
+ return /* @__PURE__ */ jsx202(
23754
23941
  TogglePrimitive2,
23755
23942
  {
23756
23943
  "data-slot": "toggle-group-item",
@@ -23772,8 +23959,8 @@ function ToggleGroupItem({
23772
23959
  }
23773
23960
 
23774
23961
  // src/components/ui/transition.tsx
23775
- import { useEffect as useEffect31, useState as useState54 } from "react";
23776
- import { Fragment as Fragment30, jsx as jsx202 } from "react/jsx-runtime";
23962
+ import { useEffect as useEffect31, useState as useState55 } from "react";
23963
+ import { Fragment as Fragment31, jsx as jsx203 } from "react/jsx-runtime";
23777
23964
  var TRANSITIONS = {
23778
23965
  fade: {
23779
23966
  in: { opacity: 1 },
@@ -23827,10 +24014,10 @@ var TRANSITIONS = {
23827
24014
  }
23828
24015
  };
23829
24016
  function useTransitionState(mounted, duration, exitDuration, timingFunction, onEnter, onEntered, onExit, onExited, enterDelay, exitDelay) {
23830
- const [status, setStatus] = useState54(
24017
+ const [status, setStatus] = useState55(
23831
24018
  mounted ? "entered" : "exited"
23832
24019
  );
23833
- const [displayDuration, setDisplayDuration] = useState54(duration);
24020
+ const [displayDuration, setDisplayDuration] = useState55(duration);
23834
24021
  useEffect31(() => {
23835
24022
  if (mounted) {
23836
24023
  setDisplayDuration(duration);
@@ -23913,7 +24100,7 @@ function Transition({
23913
24100
  const t = TRANSITIONS[transition];
23914
24101
  if (!t) {
23915
24102
  if (mounted) {
23916
- return /* @__PURE__ */ jsx202(Fragment30, { children: children({}) });
24103
+ return /* @__PURE__ */ jsx203(Fragment31, { children: children({}) });
23917
24104
  }
23918
24105
  if (keepMounted) {
23919
24106
  return children({ display: "none" });
@@ -23939,13 +24126,13 @@ function Transition({
23939
24126
  transitionDuration: `${d}ms`,
23940
24127
  transitionTimingFunction: tf
23941
24128
  };
23942
- return /* @__PURE__ */ jsx202(Fragment30, { children: children(styles) });
24129
+ return /* @__PURE__ */ jsx203(Fragment31, { children: children(styles) });
23943
24130
  }
23944
24131
 
23945
24132
  // src/components/ui/tree.tsx
23946
24133
  import { IconChevronRight as IconChevronRight11 } from "@tabler/icons-react";
23947
- import { useState as useState55 } from "react";
23948
- import { jsx as jsx203, jsxs as jsxs113 } from "react/jsx-runtime";
24134
+ import { useState as useState56 } from "react";
24135
+ import { jsx as jsx204, jsxs as jsxs114 } from "react/jsx-runtime";
23949
24136
  function Tree({
23950
24137
  className,
23951
24138
  data,
@@ -23959,7 +24146,7 @@ function Tree({
23959
24146
  renderNode,
23960
24147
  ...props
23961
24148
  }) {
23962
- const [internalExpanded, setInternalExpanded] = useState55(
24149
+ const [internalExpanded, setInternalExpanded] = useState56(
23963
24150
  /* @__PURE__ */ new Set()
23964
24151
  );
23965
24152
  const expanded = expandedProp !== void 0 ? expandedProp : internalExpanded;
@@ -23981,14 +24168,14 @@ function Tree({
23981
24168
  onSelectedValueChange?.(node.value);
23982
24169
  }
23983
24170
  };
23984
- return /* @__PURE__ */ jsx203(
24171
+ return /* @__PURE__ */ jsx204(
23985
24172
  "div",
23986
24173
  {
23987
24174
  "data-slot": "tree",
23988
24175
  role: "tree",
23989
24176
  className: cn("cn-tree", className),
23990
24177
  ...props,
23991
- children: data.map((node) => /* @__PURE__ */ jsx203(
24178
+ children: data.map((node) => /* @__PURE__ */ jsx204(
23992
24179
  TreeNode,
23993
24180
  {
23994
24181
  node,
@@ -24026,14 +24213,14 @@ function TreeNode({
24026
24213
  hasChildren,
24027
24214
  selected
24028
24215
  }) ?? node.label;
24029
- return /* @__PURE__ */ jsxs113(
24216
+ return /* @__PURE__ */ jsxs114(
24030
24217
  "div",
24031
24218
  {
24032
24219
  role: "treeitem",
24033
24220
  tabIndex: 0,
24034
24221
  "aria-expanded": hasChildren ? expanded : void 0,
24035
24222
  children: [
24036
- /* @__PURE__ */ jsxs113(
24223
+ /* @__PURE__ */ jsxs114(
24037
24224
  UnstyledButton,
24038
24225
  {
24039
24226
  type: "button",
@@ -24042,21 +24229,21 @@ function TreeNode({
24042
24229
  style: { paddingLeft: `${level * levelOffset + 4}px` },
24043
24230
  onClick: () => handleNodeClick(node, hasChildren),
24044
24231
  children: [
24045
- hasChildren ? /* @__PURE__ */ jsx203(
24232
+ hasChildren ? /* @__PURE__ */ jsx204(
24046
24233
  "span",
24047
24234
  {
24048
24235
  className: cn(
24049
24236
  "cn-tree-node-chevron text-muted-foreground flex shrink-0 transition-transform",
24050
24237
  expanded && "rotate-90"
24051
24238
  ),
24052
- children: /* @__PURE__ */ jsx203(IconChevronRight11, { className: "size-4" })
24239
+ children: /* @__PURE__ */ jsx204(IconChevronRight11, { className: "size-4" })
24053
24240
  }
24054
- ) : /* @__PURE__ */ jsx203("span", { "aria-hidden": true, className: "cn-tree-node-spacer w-4 shrink-0" }),
24055
- /* @__PURE__ */ jsx203("span", { className: "cn-tree-node-label min-w-0 flex-1 truncate", children: label })
24241
+ ) : /* @__PURE__ */ jsx204("span", { "aria-hidden": true, className: "cn-tree-node-spacer w-4 shrink-0" }),
24242
+ /* @__PURE__ */ jsx204("span", { className: "cn-tree-node-label min-w-0 flex-1 truncate", children: label })
24056
24243
  ]
24057
24244
  }
24058
24245
  ),
24059
- hasChildren && expanded && node.children && /* @__PURE__ */ jsx203("fieldset", { className: "cn-tree-node-children list-none border-0 p-0 m-0 min-w-0", children: node.children.map((child) => /* @__PURE__ */ jsx203(
24246
+ hasChildren && expanded && node.children && /* @__PURE__ */ jsx204("fieldset", { className: "cn-tree-node-children list-none border-0 p-0 m-0 min-w-0", children: node.children.map((child) => /* @__PURE__ */ jsx204(
24060
24247
  TreeNode,
24061
24248
  {
24062
24249
  node: child,
@@ -24430,6 +24617,7 @@ export {
24430
24617
  RichTextEditorToolbar,
24431
24618
  RichTextInput,
24432
24619
  RingProgress,
24620
+ STATUS_MENU_SEPARATOR,
24433
24621
  ScrollArea,
24434
24622
  ScrollBar,
24435
24623
  DisplayTableScrollContainer as ScrollContainer,
@@ -24487,6 +24675,7 @@ export {
24487
24675
  Spoiler,
24488
24676
  SpotlightSearch,
24489
24677
  Stack,
24678
+ StatusDropdownButton,
24490
24679
  Step,
24491
24680
  Stepper,
24492
24681
  Switch,