@homebound/beam 2.413.0 → 2.414.0-alpha.1

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
@@ -6697,7 +6697,7 @@ function Button(props) {
6697
6697
  // Default the icon based on other properties.
6698
6698
  icon = download ? "download" : showExternalLinkIcon ? "linkExternal" : void 0,
6699
6699
  variant = "primary",
6700
- size = "sm",
6700
+ size = "md",
6701
6701
  buttonRef
6702
6702
  } = ariaProps;
6703
6703
  const ref = useGetRef(buttonRef);
@@ -8267,10 +8267,10 @@ function RowImpl(props) {
8267
8267
  const maybeSticky = (isGridCellContent(maybeContent) && maybeContent.sticky || column2.sticky) ?? void 0;
8268
8268
  const maybeStickyColumnStyles = maybeSticky && columnSizes ? {
8269
8269
  ...Css.sticky.z(zIndices.stickyColumns).bgWhite.$,
8270
- ...maybeSticky === "left" ? Css.left(columnIndex === 0 ? 0 : `calc(${columnSizes.slice(0, columnIndex).join(" + ")})`).$ : {},
8271
- ...maybeSticky === "right" ? Css.right(
8272
- columnIndex + 1 === columnSizes.length ? 0 : `calc(${columnSizes.slice(columnIndex + 1 - columnSizes.length).join(" + ")})`
8273
- ).$ : {}
8270
+ // For flex layouts, all sticky columns should have left/right: 0
8271
+ // The flex layout handles their adjacency based on their widths
8272
+ ...maybeSticky === "left" ? Css.left(0).$ : {},
8273
+ ...maybeSticky === "right" ? Css.right(0).$ : {}
8274
8274
  } : {};
8275
8275
  minStickyLeftOffset += maybeSticky === "left" ? parseInt(columnSizes[columnIndex].replace("px", ""), 10) : 0;
8276
8276
  const cellId = `${row.kind}_${row.id}_${column2.id}`;
@@ -8466,7 +8466,7 @@ function TextFieldBase(props) {
8466
8466
  const fieldStyles = {
8467
8467
  container: Css.df.fdc.w100.maxw(fieldMaxWidth).relative.if(labelStyle === "left").maxw100.fdr.gap2.jcsb.aic.$,
8468
8468
  inputWrapper: {
8469
- ...Css[typeScale].df.aic.br4.pxPx(textFieldBasePadding).w100.bgColor(bgColor).gray900.if(contrast && !inputStylePalette).white.if(labelStyle === "left").w(labelLeftFieldWidth).$,
8469
+ ...Css[typeScale].df.aic.br8.pxPx(textFieldBasePadding).w100.bgColor(bgColor).gray900.if(contrast && !inputStylePalette).white.if(labelStyle === "left").w(labelLeftFieldWidth).$,
8470
8470
  // When borderless then perceived vertical alignments are misaligned. As there is no longer a border, then the field looks oddly indented.
8471
8471
  // This typically happens in tables when a column has a mix of static text (i.e. "roll up" rows and table headers) and input fields.
8472
8472
  // To remedy this perceived misalignment then we increase the width by the horizontal padding applied (16px), and set a negative margin left margin to re-center the field.
@@ -14245,7 +14245,7 @@ var variantStyles2 = {
14245
14245
  };
14246
14246
 
14247
14247
  // src/components/BeamContext.tsx
14248
- import { createContext as createContext6, useContext as useContext16, useMemo as useMemo38, useReducer, useRef as useRef47 } from "react";
14248
+ import { createContext as createContext6, useContext as useContext16, useMemo as useMemo38, useReducer, useRef as useRef46 } from "react";
14249
14249
  import { OverlayProvider } from "react-aria";
14250
14250
 
14251
14251
  // src/components/Modal/Modal.tsx
@@ -16165,8 +16165,7 @@ function isSelectionButtonMenuProps(props) {
16165
16165
  }
16166
16166
 
16167
16167
  // src/components/Filters/FilterDropdownMenu.tsx
16168
- import { memo as memo2, useMemo as useMemo34, useRef as useRef46, useState as useState39 } from "react";
16169
- import { useOverlay as useOverlay3 } from "react-aria";
16168
+ import { memo as memo2, useMemo as useMemo34, useState as useState39 } from "react";
16170
16169
 
16171
16170
  // src/components/CountBadge.tsx
16172
16171
  import { jsx as jsx127 } from "@emotion/react/jsx-runtime";
@@ -16221,7 +16220,6 @@ var DateFilter = class extends BaseFilter {
16221
16220
  /* @__PURE__ */ jsx128(
16222
16221
  SelectField,
16223
16222
  {
16224
- compact: true,
16225
16223
  sizeToContent: true,
16226
16224
  options: [
16227
16225
  // Always show the 'Any' option
@@ -16244,7 +16242,6 @@ var DateFilter = class extends BaseFilter {
16244
16242
  /* @__PURE__ */ jsx128(
16245
16243
  DateField,
16246
16244
  {
16247
- compact: true,
16248
16245
  labelStyle: "inline",
16249
16246
  value: value?.value ? new Date(value.value) : /* @__PURE__ */ new Date(),
16250
16247
  label: "Date",
@@ -16271,7 +16268,6 @@ var DateRangeFilter = class extends BaseFilter {
16271
16268
  /* @__PURE__ */ jsx129(
16272
16269
  DateRangeField,
16273
16270
  {
16274
- compact: true,
16275
16271
  labelStyle: "inline",
16276
16272
  isRangeFilterField: true,
16277
16273
  placeholder: placeholderText,
@@ -16325,7 +16321,6 @@ var MultiFilter = class extends BaseFilter {
16325
16321
  MultiSelectField,
16326
16322
  {
16327
16323
  ...props,
16328
- compact: !vertical,
16329
16324
  label: this.label,
16330
16325
  values: value || [],
16331
16326
  labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
@@ -16390,7 +16385,6 @@ var NumberRangeFilter = class extends BaseFilter {
16390
16385
  /* @__PURE__ */ jsx131(
16391
16386
  NumberField,
16392
16387
  {
16393
- compact: true,
16394
16388
  sizeToContent: !inModal,
16395
16389
  labelStyle: "inline",
16396
16390
  clearable: true,
@@ -16408,7 +16402,6 @@ var NumberRangeFilter = class extends BaseFilter {
16408
16402
  /* @__PURE__ */ jsx131(
16409
16403
  NumberField,
16410
16404
  {
16411
- compact: true,
16412
16405
  sizeToContent: !inModal,
16413
16406
  labelStyle: "inline",
16414
16407
  clearable: true,
@@ -16453,7 +16446,6 @@ var SingleFilter = class extends BaseFilter {
16453
16446
  options,
16454
16447
  getOptionValue: (o) => o === allOption ? void 0 : getOptionValue(o),
16455
16448
  getOptionLabel: (o) => o === allOption ? nothingSelectedText ?? "All" : getOptionLabel(o),
16456
- compact: !vertical,
16457
16449
  value,
16458
16450
  label: this.label,
16459
16451
  labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
@@ -16480,7 +16472,6 @@ var TreeFilter = class extends BaseFilter {
16480
16472
  ...props,
16481
16473
  label: this.label,
16482
16474
  values: value,
16483
- compact: !vertical,
16484
16475
  labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
16485
16476
  sizeToContent: !inModal && !vertical,
16486
16477
  onSelect: (options) => {
@@ -16506,7 +16497,6 @@ var BooleanFilter = class extends BaseFilter {
16506
16497
  SelectField,
16507
16498
  {
16508
16499
  ...props,
16509
- compact: !vertical,
16510
16500
  label: this.label,
16511
16501
  value: String(value),
16512
16502
  labelStyle: inModal ? "hidden" : !inModal && !vertical ? "inline" : "above",
@@ -16656,7 +16646,6 @@ function Filters(props) {
16656
16646
  SelectField,
16657
16647
  {
16658
16648
  label: "Group by",
16659
- compact: !vertical,
16660
16649
  labelStyle: !vertical ? "inline" : "above",
16661
16650
  sizeToContent: !vertical,
16662
16651
  options: groupBy.options,
@@ -16680,6 +16669,7 @@ function Filters(props) {
16680
16669
  Button,
16681
16670
  {
16682
16671
  label: "More Filters",
16672
+ size: "md",
16683
16673
  endAdornment: /* @__PURE__ */ jsx138(CountBadge, { count: numModalFilters, hideIfZero: true }),
16684
16674
  variant: "secondary",
16685
16675
  onClick: () => openModal({
@@ -16689,7 +16679,7 @@ function Filters(props) {
16689
16679
  ...testId.moreFiltersBtn
16690
16680
  }
16691
16681
  ),
16692
- Object.keys(filter).length > 0 && /* @__PURE__ */ jsx138("div", { children: /* @__PURE__ */ jsx138(Button, { label: "Clear", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn }) })
16682
+ Object.keys(filter).length > 0 && /* @__PURE__ */ jsx138("div", { children: /* @__PURE__ */ jsx138(Button, { label: "Clear", size: "md", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn }) })
16693
16683
  ]
16694
16684
  }
16695
16685
  );
@@ -16743,20 +16733,6 @@ function FilterDropdownMenu(props) {
16743
16733
  const { filter, onChange, filterDefs, groupBy } = props;
16744
16734
  const testId = useTestIds(props, filterTestIdPrefix);
16745
16735
  const [isOpen, setIsOpen] = useState39(false);
16746
- const buttonRef = useRef46(null);
16747
- const filterContentRef = useRef46(null);
16748
- const { overlayProps } = useOverlay3(
16749
- {
16750
- isOpen,
16751
- onClose: () => setIsOpen(false),
16752
- isDismissable: true,
16753
- shouldCloseOnInteractOutside: (element) => {
16754
- if (buttonRef.current?.contains(element)) return false;
16755
- return true;
16756
- }
16757
- },
16758
- filterContentRef
16759
- );
16760
16736
  const activeFilterCount = useMemo34(() => getActiveFilterCount(filter), [filter]);
16761
16737
  const filterImpls = useMemo34(() => buildFilterImpls(filterDefs), [filterDefs]);
16762
16738
  const renderFilters = () => {
@@ -16766,7 +16742,7 @@ function FilterDropdownMenu(props) {
16766
16742
  return [...nonCheckbox, ...checkbox].map(([key, f]) => /* @__PURE__ */ jsx140("div", { children: f.render(filter[key], (value) => onChange(updateFilter(filter, key, value)), testId, false, false) }, key));
16767
16743
  };
16768
16744
  return /* @__PURE__ */ jsxs68(Fragment31, { children: [
16769
- /* @__PURE__ */ jsx140("div", { ref: buttonRef, children: /* @__PURE__ */ jsx140(
16745
+ /* @__PURE__ */ jsx140(
16770
16746
  Button,
16771
16747
  {
16772
16748
  label: "Filter",
@@ -16780,13 +16756,12 @@ function FilterDropdownMenu(props) {
16780
16756
  onClick: () => setIsOpen(!isOpen),
16781
16757
  ...testId.button
16782
16758
  }
16783
- ) }),
16784
- isOpen && /* @__PURE__ */ jsxs68("div", { ref: filterContentRef, ...overlayProps, css: Css.df.aic.fww.gap1.order(1).$, children: [
16759
+ ),
16760
+ isOpen && /* @__PURE__ */ jsxs68("div", { css: Css.df.aic.fww.gap1.order(1).$, children: [
16785
16761
  groupBy && /* @__PURE__ */ jsx140(
16786
16762
  SelectField,
16787
16763
  {
16788
16764
  label: "Group by",
16789
- compact: true,
16790
16765
  labelStyle: "inline",
16791
16766
  sizeToContent: true,
16792
16767
  options: groupBy.options,
@@ -16797,7 +16772,7 @@ function FilterDropdownMenu(props) {
16797
16772
  }
16798
16773
  ),
16799
16774
  renderFilters(),
16800
- activeFilterCount > 0 && /* @__PURE__ */ jsx140(Button, { label: "Clear", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn })
16775
+ activeFilterCount > 0 && /* @__PURE__ */ jsx140(Button, { label: "Clear", size: "md", variant: "tertiary", onClick: () => onChange({}), ...testId.clearBtn })
16801
16776
  ] }),
16802
16777
  !isOpen && /* @__PURE__ */ jsx140(
16803
16778
  FilterChips,
@@ -16849,7 +16824,7 @@ function FilterChips({
16849
16824
  if (chips.length === 0) return null;
16850
16825
  return /* @__PURE__ */ jsxs68("div", { css: Css.df.gap1.fww.aic.order(1).$, children: [
16851
16826
  chips,
16852
- /* @__PURE__ */ jsx140(Button, { label: "Clear", variant: "tertiary", onClick: onClear, ...testId.clearBtn })
16827
+ /* @__PURE__ */ jsx140(Button, { label: "Clear", size: "md", variant: "tertiary", onClick: onClear, ...testId.clearBtn })
16853
16828
  ] });
16854
16829
  }
16855
16830
  function buildFilterImpls(filterDefs) {
@@ -17371,18 +17346,18 @@ var BeamContext = createContext6({
17371
17346
  });
17372
17347
  function BeamProvider({ children, ...presentationProps }) {
17373
17348
  const [, tick] = useReducer((prev) => prev + 1, 0);
17374
- const modalRef = useRef47();
17349
+ const modalRef = useRef46();
17375
17350
  const modalHeaderDiv = useMemo38(() => document.createElement("div"), []);
17376
17351
  const modalBodyDiv = useMemo38(() => {
17377
17352
  const el = document.createElement("div");
17378
17353
  el.style.height = "100%";
17379
17354
  return el;
17380
17355
  }, []);
17381
- const modalCanCloseChecksRef = useRef47([]);
17356
+ const modalCanCloseChecksRef = useRef46([]);
17382
17357
  const modalFooterDiv = useMemo38(() => document.createElement("div"), []);
17383
- const drawerContentStackRef = useRef47([]);
17384
- const drawerCanCloseChecks = useRef47([]);
17385
- const drawerCanCloseDetailsChecks = useRef47([]);
17358
+ const drawerContentStackRef = useRef46([]);
17359
+ const drawerCanCloseChecks = useRef46([]);
17360
+ const drawerCanCloseDetailsChecks = useRef46([]);
17386
17361
  const sdHeaderDiv = useMemo38(() => document.createElement("div"), []);
17387
17362
  const context = useMemo38(() => {
17388
17363
  return {
@@ -17425,14 +17400,14 @@ function useBeamContext() {
17425
17400
  }
17426
17401
 
17427
17402
  // src/components/ButtonDatePicker.tsx
17428
- import { useRef as useRef48 } from "react";
17403
+ import { useRef as useRef47 } from "react";
17429
17404
  import { useMenuTrigger as useMenuTrigger4 } from "react-aria";
17430
17405
  import { useMenuTriggerState as useMenuTriggerState4 } from "react-stately";
17431
17406
  import { jsx as jsx151 } from "@emotion/react/jsx-runtime";
17432
17407
  function ButtonDatePicker(props) {
17433
17408
  const { defaultOpen, disabled, trigger, onSelect, ...datePickerProps } = props;
17434
17409
  const state = useMenuTriggerState4({ isOpen: defaultOpen });
17435
- const buttonRef = useRef48(null);
17410
+ const buttonRef = useRef47(null);
17436
17411
  const { menuTriggerProps, menuProps } = useMenuTrigger4({ isDisabled: !!disabled }, state, buttonRef);
17437
17412
  const tid = useTestIds(
17438
17413
  props,
@@ -17452,7 +17427,7 @@ function ButtonDatePicker(props) {
17452
17427
  }
17453
17428
 
17454
17429
  // src/components/ButtonGroup.tsx
17455
- import { useRef as useRef49 } from "react";
17430
+ import { useRef as useRef48 } from "react";
17456
17431
  import { useButton as useButton10, useFocusRing as useFocusRing12, useHover as useHover15 } from "react-aria";
17457
17432
  import { jsx as jsx152, jsxs as jsxs75 } from "@emotion/react/jsx-runtime";
17458
17433
  function ButtonGroup(props) {
@@ -17469,7 +17444,7 @@ function ButtonGroup(props) {
17469
17444
  function GroupButton(props) {
17470
17445
  const { icon, iconInc, iconColor, text, active, onClick: onPress, disabled, size, tooltip, ...otherProps } = props;
17471
17446
  const ariaProps = { onPress, isDisabled: !!disabled, ...otherProps };
17472
- const ref = useRef49(null);
17447
+ const ref = useRef48(null);
17473
17448
  const { buttonProps, isPressed } = useButton10(ariaProps, ref);
17474
17449
  const { isFocusVisible, focusProps } = useFocusRing12();
17475
17450
  const { hoverProps, isHovered } = useHover15(ariaProps);
@@ -17533,14 +17508,14 @@ import { useHover as useHover16 } from "react-aria";
17533
17508
 
17534
17509
  // src/components/Tag.tsx
17535
17510
  import { useResizeObserver as useResizeObserver4 } from "@react-aria/utils";
17536
- import { useRef as useRef50, useState as useState42 } from "react";
17511
+ import { useRef as useRef49, useState as useState42 } from "react";
17537
17512
  import { jsx as jsx153, jsxs as jsxs76 } from "@emotion/react/jsx-runtime";
17538
17513
  function Tag(props) {
17539
17514
  const { text, type, xss, preventTooltip = false, ...otherProps } = props;
17540
17515
  const typeStyles2 = getStyles(type);
17541
17516
  const tid = useTestIds(otherProps);
17542
17517
  const [showTooltip, setShowTooltip] = useState42(false);
17543
- const ref = useRef50(null);
17518
+ const ref = useRef49(null);
17544
17519
  useResizeObserver4({
17545
17520
  ref,
17546
17521
  onResize: () => {
@@ -17654,7 +17629,7 @@ function Copy(props) {
17654
17629
 
17655
17630
  // src/components/DnDGrid/DnDGrid.tsx
17656
17631
  import equal2 from "fast-deep-equal";
17657
- import { useCallback as useCallback23, useRef as useRef51 } from "react";
17632
+ import { useCallback as useCallback23, useRef as useRef50 } from "react";
17658
17633
 
17659
17634
  // src/components/DnDGrid/DnDGridContext.tsx
17660
17635
  import { createContext as createContext7, useContext as useContext17 } from "react";
@@ -17671,12 +17646,12 @@ function useDnDGridContext() {
17671
17646
  import { jsx as jsx156 } from "@emotion/react/jsx-runtime";
17672
17647
  function DnDGrid(props) {
17673
17648
  const { children, gridStyles, onReorder, activeItemStyles } = props;
17674
- const gridEl = useRef51(null);
17675
- const dragEl = useRef51();
17676
- const cloneEl = useRef51();
17677
- const initialOrder = useRef51();
17678
- const reorderViaKeyboard = useRef51(false);
17679
- const transformFrom = useRef51({ x: 0, y: 0 });
17649
+ const gridEl = useRef50(null);
17650
+ const dragEl = useRef50();
17651
+ const cloneEl = useRef50();
17652
+ const initialOrder = useRef50();
17653
+ const reorderViaKeyboard = useRef50(false);
17654
+ const transformFrom = useRef50({ x: 0, y: 0 });
17680
17655
  const tid = useTestIds(props, "dndGrid");
17681
17656
  const getGridItems = useCallback23(() => {
17682
17657
  return gridEl.current ? Array.from(gridEl.current.querySelectorAll(`[${gridItemIdKey}]`)) : [];
@@ -18045,10 +18020,10 @@ function HbSpinnerProvider({ quips = [], children }) {
18045
18020
 
18046
18021
  // src/components/MaxLines.tsx
18047
18022
  import { useLayoutEffect as useLayoutEffect2, useResizeObserver as useResizeObserver5 } from "@react-aria/utils";
18048
- import { useCallback as useCallback24, useEffect as useEffect29, useRef as useRef52, useState as useState43 } from "react";
18023
+ import { useCallback as useCallback24, useEffect as useEffect29, useRef as useRef51, useState as useState43 } from "react";
18049
18024
  import { jsx as jsx161, jsxs as jsxs79 } from "@emotion/react/jsx-runtime";
18050
18025
  function MaxLines({ maxLines, children }) {
18051
- const elRef = useRef52(null);
18026
+ const elRef = useRef51(null);
18052
18027
  const [hasMore, setHasMore] = useState43(false);
18053
18028
  const [expanded, setExpanded] = useState43(false);
18054
18029
  useLayoutEffect2(() => {
@@ -18071,7 +18046,7 @@ function MaxLines({ maxLines, children }) {
18071
18046
 
18072
18047
  // src/components/ScrollShadows.tsx
18073
18048
  import { useResizeObserver as useResizeObserver6 } from "@react-aria/utils";
18074
- import { useCallback as useCallback25, useMemo as useMemo43, useRef as useRef53, useState as useState44 } from "react";
18049
+ import { useCallback as useCallback25, useMemo as useMemo43, useRef as useRef52, useState as useState44 } from "react";
18075
18050
  import { jsx as jsx162, jsxs as jsxs80 } from "@emotion/react/jsx-runtime";
18076
18051
  function ScrollShadows(props) {
18077
18052
  const { children, xss, horizontal = false, bgColor = "rgba(255,255,255,1)" /* White */ } = props;
@@ -18082,7 +18057,7 @@ function ScrollShadows(props) {
18082
18057
  }
18083
18058
  const [showStartShadow, setShowStartShadow] = useState44(false);
18084
18059
  const [showEndShadow, setShowEndShadow] = useState44(false);
18085
- const scrollRef = useRef53(null);
18060
+ const scrollRef = useRef52(null);
18086
18061
  const [startShadowStyles, endShadowStyles] = useMemo43(() => {
18087
18062
  const transparentBgColor = bgColor.replace(/,1\)$/, ",0)");
18088
18063
  const commonStyles = Css.absolute.z3.add({ pointerEvents: "none" }).$;
@@ -18193,7 +18168,7 @@ function useSnackbar() {
18193
18168
  var snackbarId = 1;
18194
18169
 
18195
18170
  // src/components/Stepper.tsx
18196
- import { useRef as useRef54 } from "react";
18171
+ import { useRef as useRef53 } from "react";
18197
18172
  import { useButton as useButton11, useFocusRing as useFocusRing14, useHover as useHover18 } from "react-aria";
18198
18173
  import { jsx as jsx163, jsxs as jsxs81 } from "@emotion/react/jsx-runtime";
18199
18174
  function Stepper(props) {
@@ -18237,7 +18212,7 @@ function Stepper(props) {
18237
18212
  function StepButton(props) {
18238
18213
  const { label, disabled, state, isCurrent, onClick } = props;
18239
18214
  const ariaProps = { onPress: onClick, isDisabled: disabled };
18240
- const ref = useRef54(null);
18215
+ const ref = useRef53(null);
18241
18216
  const { buttonProps, isPressed } = useButton11(ariaProps, ref);
18242
18217
  const { isFocusVisible, focusProps } = useFocusRing14();
18243
18218
  const { hoverProps, isHovered } = useHover18(ariaProps);
@@ -18526,7 +18501,7 @@ var SuperDrawerContent = ({ children, actions }) => {
18526
18501
 
18527
18502
  // src/components/Tabs.tsx
18528
18503
  import { camelCase as camelCase5 } from "change-case";
18529
- import { useEffect as useEffect31, useMemo as useMemo45, useRef as useRef55, useState as useState45 } from "react";
18504
+ import { useEffect as useEffect31, useMemo as useMemo45, useRef as useRef54, useState as useState45 } from "react";
18530
18505
  import { mergeProps as mergeProps13, useFocusRing as useFocusRing15, useHover as useHover19 } from "react-aria";
18531
18506
  import { matchPath, Route } from "react-router";
18532
18507
  import { Link as Link5, useLocation } from "react-router-dom";
@@ -18573,7 +18548,7 @@ function Tabs(props) {
18573
18548
  const { isFocusVisible, focusProps } = useFocusRing15();
18574
18549
  const tid = useTestIds(others, "tabs");
18575
18550
  const [active, setActive] = useState45(selected);
18576
- const ref = useRef55(null);
18551
+ const ref = useRef54(null);
18577
18552
  useEffect31(() => setActive(selected), [selected]);
18578
18553
  function onKeyUp(e) {
18579
18554
  if (e.key === "ArrowLeft" || e.key === "ArrowRight") {