@homebound/beam 3.97.0 → 3.99.0

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.
package/dist/index.js CHANGED
@@ -20015,7 +20015,7 @@ function SuperDrawer() {
20015
20015
  }
20016
20016
 
20017
20017
  // src/components/Layout/FormPageLayout.tsx
20018
- import React19, { createRef, useCallback as useCallback29, useEffect as useEffect26, useMemo as useMemo37, useRef as useRef52, useState as useState44 } from "react";
20018
+ import React19, { createRef, useCallback as useCallback29, useEffect as useEffect26, useMemo as useMemo37, useRef as useRef53, useState as useState44 } from "react";
20019
20019
  import { useButton as useButton9, useFocusRing as useFocusRing14 } from "react-aria";
20020
20020
 
20021
20021
  // src/forms/BoundCheckboxField.tsx
@@ -21415,20 +21415,78 @@ function applyActiveStyles(el, activeStyles3) {
21415
21415
  if (style) setInlineStyles(el, style);
21416
21416
  }
21417
21417
 
21418
- // src/components/Headers/HeaderActions.tsx
21418
+ // src/components/ButtonMenu.tsx
21419
+ import { useRef as useRef51 } from "react";
21420
+ import { useMenuTrigger as useMenuTrigger2 } from "react-aria";
21421
+ import { useMenuTriggerState as useMenuTriggerState2 } from "react-stately";
21419
21422
  import { jsx as jsx148 } from "react/jsx-runtime";
21423
+ function ButtonMenu(props) {
21424
+ const { defaultOpen, disabled, items, persistentItems, trigger, searchable } = props;
21425
+ let selectedItem, onChange;
21426
+ if (isSelectionButtonMenuProps(props)) {
21427
+ selectedItem = props.selectedItem;
21428
+ onChange = props.onChange;
21429
+ }
21430
+ const state = useMenuTriggerState2({ isOpen: defaultOpen });
21431
+ const buttonRef = useRef51(null);
21432
+ const { menuTriggerProps, menuProps } = useMenuTrigger2({ isDisabled: !!disabled }, state, buttonRef);
21433
+ const tid = useTestIds(
21434
+ props,
21435
+ isTextButton(trigger) ? labelOr(trigger, "buttonMenu") : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
21436
+ );
21437
+ return /* @__PURE__ */ jsx148(OverlayTrigger, { ...props, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ jsx148(
21438
+ Menu,
21439
+ {
21440
+ ariaMenuProps: menuProps,
21441
+ onClose: () => state.close(),
21442
+ items,
21443
+ persistentItems,
21444
+ searchable,
21445
+ selectedItem,
21446
+ onChange,
21447
+ ...tid
21448
+ }
21449
+ ) });
21450
+ }
21451
+ function isSelectionButtonMenuProps(props) {
21452
+ return typeof props === "object" && "selectedItem" in props && "onChange" in props;
21453
+ }
21454
+
21455
+ // src/components/Headers/HeaderActions.tsx
21456
+ import { jsx as jsx149 } from "react/jsx-runtime";
21420
21457
  function HeaderActions(props) {
21421
21458
  const {
21422
21459
  actions,
21423
21460
  ...otherProps
21424
21461
  } = props;
21425
21462
  const tid = useTestIds(otherProps, "headerActions");
21426
- return /* @__PURE__ */ jsx148("div", { className: "df gap1 fs0", ...tid, children: actions.map((action) => action.kind === "icon" ? /* @__PURE__ */ jsx148(IconButton, { ...action, variant: "outline" }, action.icon) : /* @__PURE__ */ jsx148(Button, { ...action }, `${action.label}`)) });
21463
+ return /* @__PURE__ */ jsx149("div", { className: "df aic gap1 fs0", ...tid, children: actions.map((action, i) => {
21464
+ const key = headerActionKey(action, i);
21465
+ if (action.kind === "icon") {
21466
+ return /* @__PURE__ */ jsx149(IconButton, { ...action, variant: "outline" }, key);
21467
+ }
21468
+ if (action.kind === "menu") {
21469
+ const {
21470
+ kind,
21471
+ ...menuProps
21472
+ } = action;
21473
+ void kind;
21474
+ return /* @__PURE__ */ jsx149(ButtonMenu, { ...menuProps, trigger: {
21475
+ icon: "verticalDots"
21476
+ } }, key);
21477
+ }
21478
+ return /* @__PURE__ */ jsx149(Button, { ...action }, key);
21479
+ }) });
21480
+ }
21481
+ function headerActionKey(action, index) {
21482
+ if (action.kind === "icon") return `${action.icon}-${index}`;
21483
+ if (action.kind === "menu") return `menu-${index}`;
21484
+ return `${String(action.label)}-${index}`;
21427
21485
  }
21428
21486
 
21429
21487
  // src/components/Headers/ContentHeader.tsx
21430
21488
  import { trussProps as trussProps89 } from "@homebound/truss/runtime";
21431
- import { jsx as jsx149, jsxs as jsxs73 } from "react/jsx-runtime";
21489
+ import { jsx as jsx150, jsxs as jsxs73 } from "react/jsx-runtime";
21432
21490
  function ContentHeader(props) {
21433
21491
  const {
21434
21492
  title,
@@ -21458,7 +21516,7 @@ function ContentHeader(props) {
21458
21516
  if (!title && !description && !actions && !withAutoSave) {
21459
21517
  return null;
21460
21518
  }
21461
- const descriptionEl = description && /* @__PURE__ */ jsx149("div", { ...trussProps89({
21519
+ const descriptionEl = description && /* @__PURE__ */ jsx150("div", { ...trussProps89({
21462
21520
  fontWeight: "fw4",
21463
21521
  fontSize: "fz_14px",
21464
21522
  lineHeight: "lh_20px",
@@ -21484,11 +21542,11 @@ function ContentHeader(props) {
21484
21542
  /* @__PURE__ */ jsxs73("div", { className: "df aic jcsb mw0", children: [
21485
21543
  title ? /* @__PURE__ */ jsxs73("div", { className: "df aic gap1 mw0", children: [
21486
21544
  startAdornment,
21487
- /* @__PURE__ */ jsx149(Heading, { ...trussProps89(titleCss), ...tid.title, children: title })
21545
+ /* @__PURE__ */ jsx150(Heading, { ...trussProps89(titleCss), ...tid.title, children: title })
21488
21546
  ] }) : descriptionEl,
21489
21547
  (withAutoSave || actions) && /* @__PURE__ */ jsxs73("div", { className: "df gap1 fs0", ...tid.actions, children: [
21490
- withAutoSave && /* @__PURE__ */ jsx149(AutoSaveIndicator, {}),
21491
- actions && /* @__PURE__ */ jsx149(HeaderActions, { actions })
21548
+ withAutoSave && /* @__PURE__ */ jsx150(AutoSaveIndicator, {}),
21549
+ actions && /* @__PURE__ */ jsx150(HeaderActions, { actions })
21492
21550
  ] })
21493
21551
  ] }),
21494
21552
  title && descriptionEl
@@ -21525,12 +21583,12 @@ var headingByLevel = {
21525
21583
  import { trussProps as trussProps92, maybeCssVar as maybeCssVar44 } from "@homebound/truss/runtime";
21526
21584
 
21527
21585
  // src/forms/FormSection/FormSectionChild.tsx
21528
- import { useRef as useRef51 } from "react";
21586
+ import { useRef as useRef52 } from "react";
21529
21587
 
21530
21588
  // src/components/DnDGrid/DnDGridItemHandle.tsx
21531
21589
  import { mergeProps as mergeProps23, useFocusRing as useFocusRing13, useHover as useHover16 } from "react-aria";
21532
21590
  import { trussProps as trussProps90 } from "@homebound/truss/runtime";
21533
- import { jsx as jsx150 } from "react/jsx-runtime";
21591
+ import { jsx as jsx151 } from "react/jsx-runtime";
21534
21592
  function DnDGridItemHandle(props) {
21535
21593
  const {
21536
21594
  dragHandleProps,
@@ -21559,7 +21617,7 @@ function DnDGridItemHandle(props) {
21559
21617
  borderRadius: "br4",
21560
21618
  borderWidth: "bw1"
21561
21619
  };
21562
- return /* @__PURE__ */ jsx150("button", { ...trussProps90({
21620
+ return /* @__PURE__ */ jsx151("button", { ...trussProps90({
21563
21621
  ...compact ? iconButtonCompact : iconButtonNormal,
21564
21622
  ...{
21565
21623
  cursor: "cursor_grab",
@@ -21578,7 +21636,7 @@ function DnDGridItemHandle(props) {
21578
21636
  ...isHovered && {
21579
21637
  backgroundColor: "bgGray200"
21580
21638
  }
21581
- }), ...mergeProps23(dragHandleProps, focusProps, hoverProps), ...tid, children: /* @__PURE__ */ jsx150(Icon, { icon, inc: compact ? 2 : void 0, color }) });
21639
+ }), ...mergeProps23(dragHandleProps, focusProps, hoverProps), ...tid, children: /* @__PURE__ */ jsx151(Icon, { icon, inc: compact ? 2 : void 0, color }) });
21582
21640
  }
21583
21641
 
21584
21642
  // src/components/DnDGrid/useDnDGridItem.tsx
@@ -21609,7 +21667,7 @@ function useDnDGridItem(props) {
21609
21667
 
21610
21668
  // src/forms/FormSection/FormSectionChild.tsx
21611
21669
  import { trussProps as trussProps91 } from "@homebound/truss/runtime";
21612
- import { jsx as jsx151, jsxs as jsxs74 } from "react/jsx-runtime";
21670
+ import { jsx as jsx152, jsxs as jsxs74 } from "react/jsx-runtime";
21613
21671
  function FormSectionChild(props) {
21614
21672
  const {
21615
21673
  title,
@@ -21619,7 +21677,7 @@ function FormSectionChild(props) {
21619
21677
  orderField
21620
21678
  } = props;
21621
21679
  const tid = useTestIds(props, "formSectionChild");
21622
- const itemRef = useRef51(null);
21680
+ const itemRef = useRef52(null);
21623
21681
  const isDraggable = !!orderField;
21624
21682
  const {
21625
21683
  dragItemProps,
@@ -21647,13 +21705,13 @@ function FormSectionChild(props) {
21647
21705
  borderStyle: "lot_bsn",
21648
21706
  borderWidth: "lot_bw_0"
21649
21707
  }), ...tid, children: [
21650
- /* @__PURE__ */ jsx151(ContentHeader, { ...tid.header, title, description, actions, level: 4, startAdornment: isDraggable ? /* @__PURE__ */ jsx151(DnDGridItemHandle, { dragHandleProps, icon: "drag", compact: true }) : void 0 }),
21708
+ /* @__PURE__ */ jsx152(ContentHeader, { ...tid.header, title, description, actions, level: 4, startAdornment: isDraggable ? /* @__PURE__ */ jsx152(DnDGridItemHandle, { dragHandleProps, icon: "drag", compact: true }) : void 0 }),
21651
21709
  fields
21652
21710
  ] });
21653
21711
  }
21654
21712
 
21655
21713
  // src/forms/FormSection/FormSection.tsx
21656
- import { jsx as jsx152, jsxs as jsxs75 } from "react/jsx-runtime";
21714
+ import { jsx as jsx153, jsxs as jsxs75 } from "react/jsx-runtime";
21657
21715
  function FormSection(props) {
21658
21716
  const {
21659
21717
  title,
@@ -21671,9 +21729,9 @@ function FormSection(props) {
21671
21729
  "--scrollMarginTop": maybeCssVar44(stickyNavAndHeaderOffset())
21672
21730
  }]
21673
21731
  }), ...tid.section, children: [
21674
- /* @__PURE__ */ jsx152(ContentHeader, { ...tid, title, description, actions, level: 3 }),
21732
+ /* @__PURE__ */ jsx153(ContentHeader, { ...tid, title, description, actions, level: 3 }),
21675
21733
  fields,
21676
- childSections && (isReorderable(childSections) ? /* @__PURE__ */ jsx152(DraggableChildren, { childSections, ...tid.childSection }) : /* @__PURE__ */ jsx152("div", { className: "df fdc gap3", children: childSections.map((child) => /* @__PURE__ */ jsx152(FormSectionChild, { ...child, ...tid.childSection }, child.id ?? child.title)) }))
21734
+ childSections && (isReorderable(childSections) ? /* @__PURE__ */ jsx153(DraggableChildren, { childSections, ...tid.childSection }) : /* @__PURE__ */ jsx153("div", { className: "df fdc gap3", children: childSections.map((child) => /* @__PURE__ */ jsx153(FormSectionChild, { ...child, ...tid.childSection }, child.id ?? child.title)) }))
21677
21735
  ] });
21678
21736
  }
21679
21737
  function isReorderable(childSections) {
@@ -21696,10 +21754,10 @@ function DraggableChildren(props) {
21696
21754
  }
21697
21755
  });
21698
21756
  };
21699
- return /* @__PURE__ */ jsx152(DnDGrid, { onReorder: handleReorder, gridStyles: {
21757
+ return /* @__PURE__ */ jsx153(DnDGrid, { onReorder: handleReorder, gridStyles: {
21700
21758
  gridTemplateColumns: "gtc_minmax_0_1fr",
21701
21759
  gap: "gap3"
21702
- }, children: sorted.map((child) => /* @__PURE__ */ jsx152(FormSectionChild, { ...child, ...tid }, child.id)) });
21760
+ }, children: sorted.map((child) => /* @__PURE__ */ jsx153(FormSectionChild, { ...child, ...tid }, child.id)) });
21703
21761
  }
21704
21762
  function sortByOrderField(childSections) {
21705
21763
  return [...childSections].sort((a, b) => (a.orderField.value ?? 0) - (b.orderField.value ?? 0));
@@ -21708,7 +21766,7 @@ function sortByOrderField(childSections) {
21708
21766
  // src/forms/StaticField.tsx
21709
21767
  import { useId as useId3 } from "@react-aria/utils";
21710
21768
  import { trussProps as trussProps93 } from "@homebound/truss/runtime";
21711
- import { jsx as jsx153, jsxs as jsxs76 } from "react/jsx-runtime";
21769
+ import { jsx as jsx154, jsxs as jsxs76 } from "react/jsx-runtime";
21712
21770
  function StaticField(props) {
21713
21771
  const {
21714
21772
  fieldProps
@@ -21728,7 +21786,7 @@ function StaticField(props) {
21728
21786
  maxWidth: "maxw100"
21729
21787
  } : {}
21730
21788
  }), ...tid.container, children: [
21731
- /* @__PURE__ */ jsx153("label", { ...trussProps93({
21789
+ /* @__PURE__ */ jsx154("label", { ...trussProps93({
21732
21790
  display: "db",
21733
21791
  fontWeight: "fw4",
21734
21792
  fontSize: "fz_14px",
@@ -21738,7 +21796,7 @@ function StaticField(props) {
21738
21796
  }],
21739
21797
  marginBottom: "mb_4px"
21740
21798
  }), htmlFor: id, ...tid.label, children: label }),
21741
- /* @__PURE__ */ jsx153("div", { id, ...trussProps93({
21799
+ /* @__PURE__ */ jsx154("div", { id, ...trussProps93({
21742
21800
  fontWeight: "fw4",
21743
21801
  fontSize: "fz_14px",
21744
21802
  lineHeight: "lh_20px",
@@ -21756,7 +21814,7 @@ function StaticField(props) {
21756
21814
 
21757
21815
  // src/forms/SubmitButton.tsx
21758
21816
  import { useLocalObservable } from "mobx-react";
21759
- import { jsx as jsx154 } from "react/jsx-runtime";
21817
+ import { jsx as jsx155 } from "react/jsx-runtime";
21760
21818
  function SubmitButton(props) {
21761
21819
  const { form, disabled, onClick, label = "Submit", ...others } = props;
21762
21820
  if (typeof onClick === "string") {
@@ -21766,7 +21824,7 @@ function SubmitButton(props) {
21766
21824
  const canSubmit = useComputed(() => {
21767
21825
  return form.isNewEntity && !state.clicked ? true : form.dirty && form.valid;
21768
21826
  }, [form]);
21769
- return /* @__PURE__ */ jsx154(
21827
+ return /* @__PURE__ */ jsx155(
21770
21828
  Button,
21771
21829
  {
21772
21830
  label,
@@ -21789,7 +21847,7 @@ import { useDebouncedCallback as useDebouncedCallback5 } from "use-debounce";
21789
21847
  import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-motion";
21790
21848
  import { useState as useState41 } from "react";
21791
21849
  import { trussProps as trussProps94, maybeCssVar as maybeCssVar45 } from "@homebound/truss/runtime";
21792
- import { Fragment as Fragment29, jsx as jsx155, jsxs as jsxs77 } from "react/jsx-runtime";
21850
+ import { Fragment as Fragment29, jsx as jsx156, jsxs as jsxs77 } from "react/jsx-runtime";
21793
21851
  var __maybeInc20 = (inc) => {
21794
21852
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
21795
21853
  };
@@ -21801,7 +21859,7 @@ function RightSidebar({
21801
21859
  const [selectedIcon, setSelectedIcon] = useState41(void 0);
21802
21860
  const tid = useTestIds({}, "rightSidebar");
21803
21861
  return /* @__PURE__ */ jsxs77(Fragment29, { children: [
21804
- /* @__PURE__ */ jsx155("div", { className: "df jcfe absolute right0 pr3", children: /* @__PURE__ */ jsx155(AnimatePresence2, { children: !selectedIcon && /* @__PURE__ */ jsx155(motion2.div, { className: "df fdc gap2 z1", initial: {
21862
+ /* @__PURE__ */ jsx156("div", { className: "df jcfe absolute right0 pr3", children: /* @__PURE__ */ jsx156(AnimatePresence2, { children: !selectedIcon && /* @__PURE__ */ jsx156(motion2.div, { className: "df fdc gap2 z1", initial: {
21805
21863
  x: "100%",
21806
21864
  opacity: 0
21807
21865
  }, animate: {
@@ -21814,8 +21872,8 @@ function RightSidebar({
21814
21872
  ease: [0.51, 0.92, 0.24, 1],
21815
21873
  duration: 0.3,
21816
21874
  delay: 0.2
21817
- }, children: /* @__PURE__ */ jsx155(IconButtonList, { content, selectedIcon, onIconClick: setSelectedIcon }) }) }) }),
21818
- /* @__PURE__ */ jsx155(AnimatePresence2, { children: selectedIcon && /* @__PURE__ */ jsx155(motion2.div, { initial: {
21875
+ }, children: /* @__PURE__ */ jsx156(IconButtonList, { content, selectedIcon, onIconClick: setSelectedIcon }) }) }) }),
21876
+ /* @__PURE__ */ jsx156(AnimatePresence2, { children: selectedIcon && /* @__PURE__ */ jsx156(motion2.div, { initial: {
21819
21877
  x: "100%",
21820
21878
  opacity: 0
21821
21879
  }, animate: {
@@ -21861,8 +21919,8 @@ function RightSidebar({
21861
21919
  flexDirection: "fdc",
21862
21920
  alignItems: "aic"
21863
21921
  }), children: [
21864
- /* @__PURE__ */ jsx155(IconButton, { bgColor: "--b-surface" /* Surface */, variant: "circle", onClick: () => setSelectedIcon(void 0), icon: "x", inc: 3.5 }),
21865
- /* @__PURE__ */ jsx155("div", { ...trussProps94({
21922
+ /* @__PURE__ */ jsx156(IconButton, { bgColor: "--b-surface" /* Surface */, variant: "circle", onClick: () => setSelectedIcon(void 0), icon: "x", inc: 3.5 }),
21923
+ /* @__PURE__ */ jsx156("div", { ...trussProps94({
21866
21924
  position: "absolute",
21867
21925
  top: "top_48px",
21868
21926
  height: "h_calc_100vh_168px",
@@ -21872,9 +21930,9 @@ function RightSidebar({
21872
21930
  }]
21873
21931
  }) })
21874
21932
  ] }),
21875
- /* @__PURE__ */ jsx155("div", { className: "df aic jcfe gap2 mb3", children: /* @__PURE__ */ jsx155(IconButtonList, { content, selectedIcon, onIconClick: setSelectedIcon }) })
21933
+ /* @__PURE__ */ jsx156("div", { className: "df aic jcfe gap2 mb3", children: /* @__PURE__ */ jsx156(IconButtonList, { content, selectedIcon, onIconClick: setSelectedIcon }) })
21876
21934
  ] }),
21877
- selectedIcon && /* @__PURE__ */ jsx155("div", { ...tid.content, className: "pl3", children: content.find((sidebar) => sidebar.icon === selectedIcon)?.render() })
21935
+ selectedIcon && /* @__PURE__ */ jsx156("div", { ...tid.content, className: "pl3", children: content.find((sidebar) => sidebar.icon === selectedIcon)?.render() })
21878
21936
  ] }) }, "rightSidebar") })
21879
21937
  ] });
21880
21938
  }
@@ -21883,9 +21941,9 @@ function IconButtonList({
21883
21941
  selectedIcon,
21884
21942
  onIconClick
21885
21943
  }) {
21886
- return /* @__PURE__ */ jsx155(Fragment29, { children: content.map(({
21944
+ return /* @__PURE__ */ jsx156(Fragment29, { children: content.map(({
21887
21945
  icon
21888
- }) => /* @__PURE__ */ jsx155(
21946
+ }) => /* @__PURE__ */ jsx156(
21889
21947
  IconButton,
21890
21948
  {
21891
21949
  variant: "circle",
@@ -21900,7 +21958,7 @@ function IconButtonList({
21900
21958
 
21901
21959
  // src/components/Toast/ToastContext.tsx
21902
21960
  import { createContext as createContext10, useCallback as useCallback28, useContext as useContext20, useMemo as useMemo35, useState as useState42 } from "react";
21903
- import { jsx as jsx156 } from "react/jsx-runtime";
21961
+ import { jsx as jsx157 } from "react/jsx-runtime";
21904
21962
  var ToastContext = createContext10({
21905
21963
  setNotice: () => {
21906
21964
  throw new Error("Missing ToastProvider");
@@ -21913,25 +21971,25 @@ function ToastProvider(props) {
21913
21971
  const [notice, setNotice] = useState42();
21914
21972
  const clear = useCallback28(() => setNotice(void 0), [setNotice]);
21915
21973
  const contextValue = useMemo35(() => ({ setNotice, notice, clear }), [notice, clear]);
21916
- return /* @__PURE__ */ jsx156(ToastContext.Provider, { value: contextValue, children: props.children });
21974
+ return /* @__PURE__ */ jsx157(ToastContext.Provider, { value: contextValue, children: props.children });
21917
21975
  }
21918
21976
  function useToastContext() {
21919
21977
  return useContext20(ToastContext);
21920
21978
  }
21921
21979
 
21922
21980
  // src/components/Toast/Toast.tsx
21923
- import { Fragment as Fragment30, jsx as jsx157 } from "react/jsx-runtime";
21981
+ import { Fragment as Fragment30, jsx as jsx158 } from "react/jsx-runtime";
21924
21982
  function Toast() {
21925
21983
  const { setNotice, notice } = useToastContext();
21926
21984
  const tid = useTestIds({}, "toast");
21927
- return /* @__PURE__ */ jsx157(Fragment30, { children: notice && /* @__PURE__ */ jsx157(Banner, { ...notice, ...tid, onClose: () => setNotice(void 0) }) });
21985
+ return /* @__PURE__ */ jsx158(Fragment30, { children: notice && /* @__PURE__ */ jsx158(Banner, { ...notice, ...tid, onClose: () => setNotice(void 0) }) });
21928
21986
  }
21929
21987
 
21930
21988
  // src/components/Layout/PageHeaderBreadcrumbs.tsx
21931
21989
  import { Fragment as Fragment31, useMemo as useMemo36, useState as useState43 } from "react";
21932
21990
  import { Link as Link5 } from "react-router-dom";
21933
21991
  import { trussProps as trussProps95, mergeProps as mergeProps24 } from "@homebound/truss/runtime";
21934
- import { Fragment as Fragment32, jsx as jsx158, jsxs as jsxs78 } from "react/jsx-runtime";
21992
+ import { Fragment as Fragment32, jsx as jsx159, jsxs as jsxs78 } from "react/jsx-runtime";
21935
21993
  function PageHeaderBreadcrumbs({
21936
21994
  breadcrumb
21937
21995
  }) {
@@ -21942,7 +22000,7 @@ function PageHeaderBreadcrumbs({
21942
22000
  return (
21943
22001
  // Adding index to key to prevent rendering issues when multiple items have the same label
21944
22002
  /* @__PURE__ */ jsxs78(Fragment31, { children: [
21945
- index > 0 && !hideDivisor && /* @__PURE__ */ jsx158("span", { ...trussProps95({
22003
+ index > 0 && !hideDivisor && /* @__PURE__ */ jsx159("span", { ...trussProps95({
21946
22004
  fontWeight: "fw6",
21947
22005
  fontSize: "fz_14px",
21948
22006
  lineHeight: "lh_20px",
@@ -21954,7 +22012,7 @@ function PageHeaderBreadcrumbs({
21954
22012
  marginTop: "mt_2px",
21955
22013
  marginBottom: "mb_2px"
21956
22014
  }), children: "/" }),
21957
- /* @__PURE__ */ jsx158(Link5, { to: bc.href, ...mergeProps24("navLink", void 0, {
22015
+ /* @__PURE__ */ jsx159(Link5, { to: bc.href, ...mergeProps24("navLink", void 0, {
21958
22016
  fontWeight: "fw6",
21959
22017
  fontSize: "fz_14px",
21960
22018
  lineHeight: "lh_20px",
@@ -21967,9 +22025,9 @@ function PageHeaderBreadcrumbs({
21967
22025
  ] }, `${bc.label}-${index}`)
21968
22026
  );
21969
22027
  }
21970
- return /* @__PURE__ */ jsx158("div", { className: "df aic mb_4px", children: breadcrumbs.length > 3 && collapsed ? /* @__PURE__ */ jsxs78(Fragment32, { children: [
22028
+ return /* @__PURE__ */ jsx159("div", { className: "df aic mb_4px", children: breadcrumbs.length > 3 && collapsed ? /* @__PURE__ */ jsxs78(Fragment32, { children: [
21971
22029
  renderBreadcrumb(breadcrumbs[0], 0),
21972
- /* @__PURE__ */ jsx158("button", { ...tids.expand, ...trussProps95({
22030
+ /* @__PURE__ */ jsx159("button", { ...tids.expand, ...trussProps95({
21973
22031
  color: ["color_var", {
21974
22032
  "--color": "var(--b-on-surface-muted)"
21975
22033
  }],
@@ -21983,7 +22041,7 @@ function PageHeaderBreadcrumbs({
21983
22041
 
21984
22042
  // src/components/Layout/FormPageLayout.tsx
21985
22043
  import { trussProps as trussProps96, maybeCssVar as maybeCssVar46 } from "@homebound/truss/runtime";
21986
- import { jsx as jsx159, jsxs as jsxs79 } from "react/jsx-runtime";
22044
+ import { jsx as jsx160, jsxs as jsxs79 } from "react/jsx-runtime";
21987
22045
  var headerHeightPx = 120;
21988
22046
  var maxContentWidthPx = 1600;
21989
22047
  function FormPageLayoutComponent(props) {
@@ -22005,7 +22063,7 @@ function FormPageLayoutComponent(props) {
22005
22063
  // since this layout will be replacing most superdrawers/sidebars, we keep the listing mounted below to preserve the users's
22006
22064
  // scroll position & filters
22007
22065
  // Adding "align-items: start" allows "position: sticky" to work within a grid for the sidebars
22008
- /* @__PURE__ */ jsx159("div", { ...trussProps96({
22066
+ /* @__PURE__ */ jsx160("div", { ...trussProps96({
22009
22067
  position: "fixed",
22010
22068
  top: "top0",
22011
22069
  bottom: "bottom0",
@@ -22034,17 +22092,17 @@ function FormPageLayoutComponent(props) {
22034
22092
  columnGap: "cg3",
22035
22093
  alignItems: "ais"
22036
22094
  }), children: [
22037
- /* @__PURE__ */ jsx159(PageHeader, { ...props, ...tids.pageHeader }),
22038
- /* @__PURE__ */ jsx159(LeftNav, { sectionsWithRefs, ...tids }),
22039
- /* @__PURE__ */ jsx159(FormSections, { sectionsWithRefs, formState, ...tids }),
22040
- rightSideBar && /* @__PURE__ */ jsx159("aside", { ...trussProps96({
22095
+ /* @__PURE__ */ jsx160(PageHeader, { ...props, ...tids.pageHeader }),
22096
+ /* @__PURE__ */ jsx160(LeftNav, { sectionsWithRefs, ...tids }),
22097
+ /* @__PURE__ */ jsx160(FormSections, { sectionsWithRefs, formState, ...tids }),
22098
+ rightSideBar && /* @__PURE__ */ jsx160("aside", { ...trussProps96({
22041
22099
  gridRow: "gr_2",
22042
22100
  gridColumn: "gc_3_4",
22043
22101
  position: "sticky",
22044
22102
  top: ["top_var", {
22045
22103
  "--top": `${headerHeightPx}px`
22046
22104
  }]
22047
- }), children: /* @__PURE__ */ jsx159(RightSidebar, { content: rightSideBar, headerHeightPx }) })
22105
+ }), children: /* @__PURE__ */ jsx160(RightSidebar, { content: rightSideBar, headerHeightPx }) })
22048
22106
  ] }) })
22049
22107
  );
22050
22108
  }
@@ -22079,16 +22137,16 @@ function PageHeader(props) {
22079
22137
  }]
22080
22138
  } : {}
22081
22139
  }), ...tids, children: [
22082
- /* @__PURE__ */ jsx159(Toast, {}),
22140
+ /* @__PURE__ */ jsx160(Toast, {}),
22083
22141
  /* @__PURE__ */ jsxs79("div", { className: "pt2 pb2 pl3 pr3 df jcsb aic", children: [
22084
22142
  /* @__PURE__ */ jsxs79("div", { children: [
22085
- breadCrumb && /* @__PURE__ */ jsx159(PageHeaderBreadcrumbs, { breadcrumb: breadCrumb }),
22086
- /* @__PURE__ */ jsx159("h1", { className: "fw6 fz_30px lh_36px", ...tids.pageTitle, children: pageTitle })
22143
+ breadCrumb && /* @__PURE__ */ jsx160(PageHeaderBreadcrumbs, { breadcrumb: breadCrumb }),
22144
+ /* @__PURE__ */ jsx160("h1", { className: "fw6 fz_30px lh_36px", ...tids.pageTitle, children: pageTitle })
22087
22145
  ] }),
22088
22146
  /* @__PURE__ */ jsxs79("div", { className: "df gap1", children: [
22089
- tertiaryAction && /* @__PURE__ */ jsx159(Button, { label: tertiaryAction.label, onClick: tertiaryAction.onClick, variant: "tertiary", disabled: tertiaryAction.disabled, tooltip: tertiaryAction.tooltip }),
22090
- cancelAction && /* @__PURE__ */ jsx159(Button, { label: cancelAction.label, onClick: cancelAction.onClick, variant: "quaternary", disabled: cancelAction.disabled, tooltip: cancelAction.tooltip }),
22091
- /* @__PURE__ */ jsx159(SubmitButton, { form: formState, ...submitAction })
22147
+ tertiaryAction && /* @__PURE__ */ jsx160(Button, { label: tertiaryAction.label, onClick: tertiaryAction.onClick, variant: "tertiary", disabled: tertiaryAction.disabled, tooltip: tertiaryAction.tooltip }),
22148
+ cancelAction && /* @__PURE__ */ jsx160(Button, { label: cancelAction.label, onClick: cancelAction.onClick, variant: "quaternary", disabled: cancelAction.disabled, tooltip: cancelAction.tooltip }),
22149
+ /* @__PURE__ */ jsx160(SubmitButton, { form: formState, ...submitAction })
22092
22150
  ] })
22093
22151
  ] })
22094
22152
  ] });
@@ -22100,7 +22158,7 @@ function FormSections(props) {
22100
22158
  } = props;
22101
22159
  const tids = useTestIds(props);
22102
22160
  const bottomPaddingPx = sectionsWithRefs.length > 1 ? 200 : 0;
22103
- return /* @__PURE__ */ jsx159("article", { ...trussProps96({
22161
+ return /* @__PURE__ */ jsx160("article", { ...trussProps96({
22104
22162
  gridRow: "gr_2",
22105
22163
  gridColumn: "gc_2_3",
22106
22164
  paddingBottom: ["pb_var", {
@@ -22129,10 +22187,10 @@ function FormSections(props) {
22129
22187
  }),
22130
22188
  ...tids.formSection,
22131
22189
  children: [
22132
- /* @__PURE__ */ jsx159("div", { className: "gc_1", children: section.icon && /* @__PURE__ */ jsx159(Icon, { icon: section.icon, inc: 3.5 }) }),
22190
+ /* @__PURE__ */ jsx160("div", { className: "gc_1", children: section.icon && /* @__PURE__ */ jsx160(Icon, { icon: section.icon, inc: 3.5 }) }),
22133
22191
  /* @__PURE__ */ jsxs79("div", { className: "gc_2", children: [
22134
- section.title && /* @__PURE__ */ jsx159("h2", { className: "fw6 fz_20px lh_28px mb3", children: section.title }),
22135
- /* @__PURE__ */ jsx159(BoundForm, { formState, rows: section.rows })
22192
+ section.title && /* @__PURE__ */ jsx160("h2", { className: "fw6 fz_20px lh_28px mb3", children: section.title }),
22193
+ /* @__PURE__ */ jsx160(BoundForm, { formState, rows: section.rows })
22136
22194
  ] })
22137
22195
  ]
22138
22196
  },
@@ -22149,7 +22207,7 @@ function LeftNav(props) {
22149
22207
  section
22150
22208
  }) => !!section.title), [sectionsWithRefs]);
22151
22209
  const activeSection = useActiveSection(sectionWithTitles);
22152
- return /* @__PURE__ */ jsx159("aside", { ...trussProps96({
22210
+ return /* @__PURE__ */ jsx160("aside", { ...trussProps96({
22153
22211
  gridRow: "gr_2",
22154
22212
  gridColumn: "gc_1_2",
22155
22213
  position: "sticky",
@@ -22161,7 +22219,7 @@ function LeftNav(props) {
22161
22219
  display: "df",
22162
22220
  flexDirection: "fdc",
22163
22221
  gap: "gap1"
22164
- }), ...tids.nav, children: sectionWithTitles.map((sectionWithRef) => /* @__PURE__ */ jsx159(SectionNavLink, { sectionWithRef, activeSection, ...tids }, `nav-${sectionWithRef.sectionKey}`)) });
22222
+ }), ...tids.nav, children: sectionWithTitles.map((sectionWithRef) => /* @__PURE__ */ jsx160(SectionNavLink, { sectionWithRef, activeSection, ...tids }, `nav-${sectionWithRef.sectionKey}`)) });
22165
22223
  }
22166
22224
  var activeStyles = {
22167
22225
  fontWeight: "fw6",
@@ -22203,7 +22261,7 @@ function SectionNavLink(props) {
22203
22261
  });
22204
22262
  }, [sectionRef]);
22205
22263
  const tids = useTestIds(props);
22206
- const buttonRef = useRef52(null);
22264
+ const buttonRef = useRef53(null);
22207
22265
  const {
22208
22266
  buttonProps,
22209
22267
  isPressed
@@ -22218,7 +22276,7 @@ function SectionNavLink(props) {
22218
22276
  hoverProps,
22219
22277
  isHovered
22220
22278
  } = useHover2({});
22221
- return /* @__PURE__ */ jsx159("button", { ref: buttonRef, ...buttonProps, ...focusProps, ...hoverProps, ...trussProps96({
22279
+ return /* @__PURE__ */ jsx160("button", { ref: buttonRef, ...buttonProps, ...focusProps, ...hoverProps, ...trussProps96({
22222
22280
  ...{
22223
22281
  fontWeight: "fw6",
22224
22282
  fontSize: "fz_14px",
@@ -22385,10 +22443,10 @@ import { createPortal as createPortal5 } from "react-dom";
22385
22443
 
22386
22444
  // src/layouts/EnvironmentBannerLayout/EnvironmentBannerLayoutHeightContext.tsx
22387
22445
  import { createContext as createContext11, useContext as useContext21 } from "react";
22388
- import { jsx as jsx160 } from "react/jsx-runtime";
22446
+ import { jsx as jsx161 } from "react/jsx-runtime";
22389
22447
  var EnvironmentBannerLayoutHeightContext = createContext11(0);
22390
22448
  function EnvironmentBannerLayoutHeightProvider({ value, children }) {
22391
- return /* @__PURE__ */ jsx160(EnvironmentBannerLayoutHeightContext.Provider, { value, children });
22449
+ return /* @__PURE__ */ jsx161(EnvironmentBannerLayoutHeightContext.Provider, { value, children });
22392
22450
  }
22393
22451
  function useEnvironmentBannerLayoutHeight() {
22394
22452
  return useContext21(EnvironmentBannerLayoutHeightContext);
@@ -22396,7 +22454,7 @@ function useEnvironmentBannerLayoutHeight() {
22396
22454
 
22397
22455
  // src/components/Layout/RightPaneLayout/RightPaneContext.tsx
22398
22456
  import React20, { useCallback as useCallback30, useContext as useContext22, useMemo as useMemo38, useState as useState45 } from "react";
22399
- import { jsx as jsx161 } from "react/jsx-runtime";
22457
+ import { jsx as jsx162 } from "react/jsx-runtime";
22400
22458
  var RightPaneContext = React20.createContext({
22401
22459
  openInPane: () => {
22402
22460
  },
@@ -22423,7 +22481,7 @@ function RightPaneProvider({ children }) {
22423
22481
  () => ({ openInPane, closePane, clearPane, rightPaneContent, isRightPaneOpen }),
22424
22482
  [openInPane, closePane, rightPaneContent, clearPane, isRightPaneOpen]
22425
22483
  );
22426
- return /* @__PURE__ */ jsx161(RightPaneContext.Provider, { value: context, children });
22484
+ return /* @__PURE__ */ jsx162(RightPaneContext.Provider, { value: context, children });
22427
22485
  }
22428
22486
  function useRightPaneContext() {
22429
22487
  return useContext22(RightPaneContext);
@@ -22431,7 +22489,7 @@ function useRightPaneContext() {
22431
22489
 
22432
22490
  // src/components/Layout/RightPaneLayout/DocumentScrollRightPane.tsx
22433
22491
  import { mergeProps as mergeProps26, maybeCssVar as maybeCssVar48 } from "@homebound/truss/runtime";
22434
- import { jsx as jsx162 } from "react/jsx-runtime";
22492
+ import { jsx as jsx163 } from "react/jsx-runtime";
22435
22493
  var __maybeInc22 = (inc) => {
22436
22494
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
22437
22495
  };
@@ -22455,7 +22513,7 @@ function DocumentScrollRightPane({
22455
22513
  });
22456
22514
  useEffect27(() => closePane, [closePane]);
22457
22515
  const slideX = sm ? "100%" : paneWidth;
22458
- const pane = /* @__PURE__ */ jsx162(AnimatePresence3, { children: isRightPaneOpen && /* @__PURE__ */ jsx162(motion3.div, { ...tid, ...mergeProps26(void 0, sm ? {
22516
+ const pane = /* @__PURE__ */ jsx163(AnimatePresence3, { children: isRightPaneOpen && /* @__PURE__ */ jsx163(motion3.div, { ...tid, ...mergeProps26(void 0, sm ? {
22459
22517
  top: bannerHeightPx
22460
22518
  } : void 0, sm ? {
22461
22519
  position: "fixed",
@@ -22508,7 +22566,7 @@ function DocumentScrollRightPane({
22508
22566
  }
22509
22567
 
22510
22568
  // src/components/Layout/RightPaneLayout/DocumentScrollRightPaneLayout.tsx
22511
- import { jsx as jsx163, jsxs as jsxs80 } from "react/jsx-runtime";
22569
+ import { jsx as jsx164, jsxs as jsxs80 } from "react/jsx-runtime";
22512
22570
  var defaultDocumentScrollRightPaneWidth = 450;
22513
22571
  function DocumentScrollRightPaneLayout(props) {
22514
22572
  const {
@@ -22541,8 +22599,8 @@ function DocumentScrollRightPaneLayout(props) {
22541
22599
  }, {
22542
22600
  width: "w100"
22543
22601
  }), ...tid, children: [
22544
- /* @__PURE__ */ jsx163(DocumentScrollRightPaneSpacer, { paneWidth, isOpen: isSplitPaneOpen, children }),
22545
- /* @__PURE__ */ jsx163(DocumentScrollRightPane, { paneWidth })
22602
+ /* @__PURE__ */ jsx164(DocumentScrollRightPaneSpacer, { paneWidth, isOpen: isSplitPaneOpen, children }),
22603
+ /* @__PURE__ */ jsx164(DocumentScrollRightPane, { paneWidth })
22546
22604
  ] });
22547
22605
  }
22548
22606
  function DocumentScrollRightPaneSpacer({
@@ -22558,13 +22616,13 @@ function DocumentScrollRightPaneSpacer({
22558
22616
  display: "df",
22559
22617
  minWidth: "mw100"
22560
22618
  }), children: [
22561
- /* @__PURE__ */ jsx163("div", { ...mergeProps27(void 0, {
22619
+ /* @__PURE__ */ jsx164("div", { ...mergeProps27(void 0, {
22562
22620
  width: `min(100%, ${documentScrollChromeWidth()})`
22563
22621
  }, {
22564
22622
  flexShrink: "fs0",
22565
22623
  minWidth: "mw_fit_content"
22566
22624
  }), children }),
22567
- /* @__PURE__ */ jsx163("div", { "aria-hidden": true, ...mergeProps27(void 0, {
22625
+ /* @__PURE__ */ jsx164("div", { "aria-hidden": true, ...mergeProps27(void 0, {
22568
22626
  width: isOpen ? effectivePaneWidth : 0
22569
22627
  }, {
22570
22628
  flexShrink: "fs0",
@@ -22576,43 +22634,6 @@ function DocumentScrollRightPaneSpacer({
22576
22634
  // src/components/Layout/GridTableLayout/GridTableLayoutActions.tsx
22577
22635
  import { memo as memo2, useMemo as useMemo41, useState as useState47 } from "react";
22578
22636
 
22579
- // src/components/ButtonMenu.tsx
22580
- import { useRef as useRef53 } from "react";
22581
- import { useMenuTrigger as useMenuTrigger2 } from "react-aria";
22582
- import { useMenuTriggerState as useMenuTriggerState2 } from "react-stately";
22583
- import { jsx as jsx164 } from "react/jsx-runtime";
22584
- function ButtonMenu(props) {
22585
- const { defaultOpen, disabled, items, persistentItems, trigger, searchable } = props;
22586
- let selectedItem, onChange;
22587
- if (isSelectionButtonMenuProps(props)) {
22588
- selectedItem = props.selectedItem;
22589
- onChange = props.onChange;
22590
- }
22591
- const state = useMenuTriggerState2({ isOpen: defaultOpen });
22592
- const buttonRef = useRef53(null);
22593
- const { menuTriggerProps, menuProps } = useMenuTrigger2({ isDisabled: !!disabled }, state, buttonRef);
22594
- const tid = useTestIds(
22595
- props,
22596
- isTextButton(trigger) ? labelOr(trigger, "buttonMenu") : isNavLinkButton(trigger) ? defaultTestId(trigger.navLabel) : isIconButton(trigger) ? trigger.icon : trigger.name
22597
- );
22598
- return /* @__PURE__ */ jsx164(OverlayTrigger, { ...props, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ jsx164(
22599
- Menu,
22600
- {
22601
- ariaMenuProps: menuProps,
22602
- onClose: () => state.close(),
22603
- items,
22604
- persistentItems,
22605
- searchable,
22606
- selectedItem,
22607
- onChange,
22608
- ...tid
22609
- }
22610
- ) });
22611
- }
22612
- function isSelectionButtonMenuProps(props) {
22613
- return typeof props === "object" && "selectedItem" in props && "onChange" in props;
22614
- }
22615
-
22616
22637
  // src/components/CountBadge.tsx
22617
22638
  import { trussProps as trussProps97, maybeCssVar as maybeCssVar49 } from "@homebound/truss/runtime";
22618
22639
  import { jsx as jsx165 } from "react/jsx-runtime";
@@ -23545,7 +23566,7 @@ function GridTableLayoutActionsComponent(props) {
23545
23566
  setView,
23546
23567
  clearFilters,
23547
23568
  searchApi,
23548
- actionMenu
23569
+ actions
23549
23570
  } = props;
23550
23571
  const testId = useTestIds(props, "gridTableLayoutActions");
23551
23572
  const filterTid = useTestIds({}, filterTestIdPrefix);
@@ -23620,12 +23641,10 @@ function GridTableLayoutActionsComponent(props) {
23620
23641
  /* @__PURE__ */ jsx183(Icon, { icon: showFilters ? "chevronUp" : "chevronDown" })
23621
23642
  ] }), variant: "secondaryBlack", onClick: () => setShowFilters(!showFilters), active: showFilters, ...testId.filterButton })
23622
23643
  ] }),
23623
- (hasHideableColumns || withCardView || actionMenu) && /* @__PURE__ */ jsxs89("div", { className: "df aic gap_12px", children: [
23644
+ (hasHideableColumns || withCardView || !!actions?.length) && /* @__PURE__ */ jsxs89("div", { className: "df aic gap_12px", children: [
23624
23645
  hasHideableColumns && view === "list" && columns && api && /* @__PURE__ */ jsx183(EditColumnsButton, { columns, api, tooltip: "Display columns" }),
23625
23646
  withCardView && view !== void 0 && setView && /* @__PURE__ */ jsx183(ViewToggleButton, { view, onChange: setView }),
23626
- actionMenu && /* @__PURE__ */ jsx183(ButtonMenu, { ...actionMenu, trigger: {
23627
- icon: "verticalDots"
23628
- } })
23647
+ !!actions?.length && /* @__PURE__ */ jsx183(HeaderActions, { actions, ...testId.actions })
23629
23648
  ] })
23630
23649
  ] }),
23631
23650
  sm && showSearch && /* @__PURE__ */ jsx183("div", { ...trussProps102(pageContentPaddingX), children: searchTextField }),
@@ -23756,7 +23775,7 @@ function GridTableLayoutComponent(props) {
23756
23775
  const {
23757
23776
  tableProps,
23758
23777
  layoutState,
23759
- actionMenu,
23778
+ actions,
23760
23779
  hideEditColumns = false,
23761
23780
  withCardView,
23762
23781
  defaultView = "list",
@@ -23774,7 +23793,7 @@ function GridTableLayoutComponent(props) {
23774
23793
  const api = useMemo43(() => tableProps.api ?? new GridTableApiImpl(), [tableProps.api]);
23775
23794
  const [view, setView] = usePersistedTableView(defaultView, !!withCardView);
23776
23795
  const clientSearch = layoutState?.search === "client" ? layoutState.searchString : void 0;
23777
- const showTableActions = !!(layoutState?.filterDefs || layoutState?.search || hasHideableColumns || withCardView || actionMenu);
23796
+ const showTableActions = !!(layoutState?.filterDefs || layoutState?.search || hasHideableColumns || withCardView || actions?.length);
23778
23797
  const isVirtualized = tableProps.as === "virtual" || view === "card";
23779
23798
  const inDocumentScrollLayout = useDocumentScrollLayout();
23780
23799
  const tableActionsRef = useRef55(null);
@@ -23796,7 +23815,7 @@ function GridTableLayoutComponent(props) {
23796
23815
  searchApiRef.current?.clear();
23797
23816
  }, [layoutState]);
23798
23817
  const emptyState = useMemo43(() => composeEmptyState(tableProps, layoutState, layoutEmptyFallback, clearFilters), [layoutEmptyFallback, layoutState, tableProps, clearFilters]);
23799
- const tableActionsEl = /* @__PURE__ */ jsx186(_GridTableLayoutActions, { filterDefs: layoutState?.filterDefs, filter: layoutState?.filter, setFilter: layoutState?.setFilter, groupBy: layoutState?.groupBy, searchProps: filterSearchProps, hasHideableColumns, columns, api, withCardView, view, setView, clearFilters, searchApi: searchApiRef, actionMenu });
23818
+ const tableActionsEl = /* @__PURE__ */ jsx186(_GridTableLayoutActions, { filterDefs: layoutState?.filterDefs, filter: layoutState?.filter, setFilter: layoutState?.setFilter, groupBy: layoutState?.groupBy, searchProps: filterSearchProps, hasHideableColumns, columns, api, withCardView, view, setView, clearFilters, searchApi: searchApiRef, actions });
23800
23819
  const cardAs = view === "card" ? "card" : void 0;
23801
23820
  const tableStyle = resolveGridTableLayoutStyle(tableProps.style, inDocumentScrollLayout);
23802
23821
  const tableBody = /* @__PURE__ */ jsx186(Fragment40, { children: isGridTableProps(tableProps) ? /* @__PURE__ */ jsx186(GridTable, { ...tableProps, ...cardAs ? {