@homebound/beam 4.34.0 → 4.36.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
@@ -7982,6 +7982,12 @@ var RowState = class {
7982
7982
  if (this.isParent) return this.selectedState === "checked";
7983
7983
  return this.selected;
7984
7984
  }
7985
+ /** This row's share of `TableState.selectedLeafRowCount`, see `GridDataRow.childrenCount`. */
7986
+ get selectedLeafRowCount() {
7987
+ if (this.isReservedKind || !this.selected) return 0;
7988
+ if (this.children?.some((c) => c.row.selectable !== false)) return 0;
7989
+ return this.row.childrenCount ?? 1;
7990
+ }
7985
7991
  /** The UI state for checked/unchecked + "partially checked" for parents. */
7986
7992
  get selectedState() {
7987
7993
  if (this.isParent && this.hasSelectableChildren) {
@@ -8632,6 +8638,10 @@ var TableState = class {
8632
8638
  get selectedRows() {
8633
8639
  return this.rowStates.allStates.filter((rs) => rs.isSelected && !reservedRowKinds.includes(rs.row.kind));
8634
8640
  }
8641
+ /** How many leaf rows are selected, for `GridTableLayout`'s selection summary; see `GridDataRow.childrenCount`. */
8642
+ get selectedLeafRowCount() {
8643
+ return this.rowStates.allStates.reduce((sum, rs) => sum + rs.selectedLeafRowCount, 0);
8644
+ }
8635
8645
  /** Returns kept group row, with the latest kept children, if any. */
8636
8646
  get keptRowGroup() {
8637
8647
  return this.rowStates.get(KEPT_GROUP).row;
@@ -9535,6 +9545,9 @@ var GridTableApiImpl = class {
9535
9545
  getSelectedRowsImpl(kind) {
9536
9546
  return this.tableState.selectedRows.filter((rs) => !kind || rs.kind === kind).map((rs) => rs.row);
9537
9547
  }
9548
+ getSelectedLeafRowCount() {
9549
+ return this.tableState.selectedLeafRowCount;
9550
+ }
9538
9551
  // The `any` is not great, but getting the overload to handle the optional kind is annoying
9539
9552
  getVisibleRows(kind) {
9540
9553
  return this.getVisibleRowsImpl(kind ?? void 0);
@@ -11259,6 +11272,22 @@ function ProposedValue(props) {
11259
11272
  }), ...tid.proposed, children: proposed })
11260
11273
  ] });
11261
11274
  }
11275
+ function OriginalValue(props) {
11276
+ const {
11277
+ originalValue,
11278
+ ...others
11279
+ } = props;
11280
+ return /* @__PURE__ */ jsx38("div", { ...trussProps23({
11281
+ color: ["color_var", {
11282
+ "--color": "var(--b-text-helper)"
11283
+ }],
11284
+ fontWeight: "fw4",
11285
+ fontSize: "fz_12px",
11286
+ lineHeight: "lh_16px",
11287
+ marginTop: "mt_4px",
11288
+ textDecoration: "tdlt"
11289
+ }), ...others, children: originalValue });
11290
+ }
11262
11291
 
11263
11292
  // src/components/Table/components/Row.css.ts
11264
11293
  var css = {
@@ -11285,9 +11314,8 @@ function getFieldWidth(fullWidth) {
11285
11314
  return fullWidth ? "100%" : "550px";
11286
11315
  }
11287
11316
 
11288
- // src/inputs/TextFieldBase.tsx
11289
- import { trussProps as trussProps24, mergeProps as mergeProps_13, maybeCssVar as maybeCssVar17 } from "@homebound/truss/runtime";
11290
- import { Fragment as Fragment13, jsx as jsx39, jsxs as jsxs20 } from "react/jsx-runtime";
11317
+ // src/inputs/fieldChrome.ts
11318
+ import { maybeCssVar as maybeCssVar17 } from "@homebound/truss/runtime";
11291
11319
  var __maybeInc10 = (inc) => {
11292
11320
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
11293
11321
  };
@@ -11348,6 +11376,221 @@ var __typography4 = {
11348
11376
  lineHeight: "lh_32px"
11349
11377
  }
11350
11378
  };
11379
+ var fieldHeight = 40;
11380
+ var compactFieldHeight = 32;
11381
+ function getFieldChrome(options) {
11382
+ const {
11383
+ typeScale,
11384
+ labelStyle,
11385
+ labelLeftFieldWidth = "50%",
11386
+ compact,
11387
+ borderless,
11388
+ borderOnHover,
11389
+ fullWidth,
11390
+ visuallyDisabled,
11391
+ isHovered,
11392
+ compound = false,
11393
+ multiline = false,
11394
+ showProposal = false,
11395
+ inputStylePalette
11396
+ } = options;
11397
+ const maybeSmaller = compound ? 2 : 0;
11398
+ const [bgColor, hoverBgColor, disabledBgColor] = fieldBackgrounds({
11399
+ showProposal,
11400
+ inputStylePalette,
11401
+ borderOnHover,
11402
+ borderless,
11403
+ compound
11404
+ });
11405
+ const fixedHeight = {
11406
+ height: ["h_var", {
11407
+ "--height": `${fieldHeight - maybeSmaller}px`
11408
+ }],
11409
+ ...compact ? {
11410
+ height: ["h_var", {
11411
+ "--height": `${compactFieldHeight - maybeSmaller}px`
11412
+ }]
11413
+ } : {}
11414
+ };
11415
+ const minHeight = {
11416
+ minHeight: ["mh_var", {
11417
+ "--minHeight": `${fieldHeight - maybeSmaller}px`
11418
+ }],
11419
+ ...compact ? {
11420
+ minHeight: ["mh_var", {
11421
+ "--minHeight": `${compactFieldHeight - maybeSmaller}px`
11422
+ }]
11423
+ } : {}
11424
+ };
11425
+ return {
11426
+ container: {
11427
+ display: "df",
11428
+ flexDirection: "fdc",
11429
+ width: "w100",
11430
+ maxWidth: ["maxw_var", {
11431
+ "--maxWidth": maybeCssVar17(getFieldWidth(fullWidth))
11432
+ }],
11433
+ position: "relative",
11434
+ ...labelStyle === "left" ? {
11435
+ maxWidth: "maxw100",
11436
+ flexDirection: "fdr",
11437
+ gap: "g_2",
11438
+ justifyContent: "jcsb",
11439
+ alignItems: "aic"
11440
+ } : {}
11441
+ },
11442
+ control: {
11443
+ ...{
11444
+ ...__typography4[typeScale] ?? {},
11445
+ display: "df",
11446
+ alignItems: "aic",
11447
+ borderRadius: "br8",
11448
+ paddingLeft: ["px_var", {
11449
+ "--paddingLeft": `${textFieldBasePadding}px`
11450
+ }],
11451
+ paddingRight: ["px_var", {
11452
+ "--paddingRight": `${textFieldBasePadding}px`
11453
+ }],
11454
+ width: "w100",
11455
+ backgroundColor: ["bgColor_var", {
11456
+ "--backgroundColor": maybeCssVar17(bgColor)
11457
+ }],
11458
+ color: ["color_var", {
11459
+ "--color": "var(--b-on-surface)"
11460
+ }],
11461
+ ...labelStyle === "left" ? {
11462
+ width: ["w_var", {
11463
+ "--width": maybeCssVar17(__maybeInc10(labelLeftFieldWidth))
11464
+ }]
11465
+ } : {}
11466
+ },
11467
+ // Borderless fields sit next to plain text in tables. Grow by the horizontal padding and pull
11468
+ // back left so the text lines up. Compound fields own their own width.
11469
+ ...borderless && !compound ? {
11470
+ borderColor: "bcTransparent",
11471
+ width: "w_calc_100_16px",
11472
+ marginLeft: "ml_neg1"
11473
+ } : {
11474
+ borderColor: ["bc_var", {
11475
+ "--borderColor": "var(--b-field-border-default)"
11476
+ }]
11477
+ },
11478
+ ...!compound ? {
11479
+ borderStyle: "bss",
11480
+ borderWidth: "bw1"
11481
+ } : {},
11482
+ ...borderOnHover ? {
11483
+ borderRadius: "br4",
11484
+ borderStyle: "bss",
11485
+ borderWidth: "bw1",
11486
+ borderColor: "bcTransparent",
11487
+ transition: "tsn_border_color_200ms"
11488
+ } : {},
11489
+ ...borderOnHover && isHovered ? {
11490
+ backgroundColor: ["bgColor_var", {
11491
+ "--backgroundColor": maybeCssVar17(hoverBgColor)
11492
+ }],
11493
+ borderStyle: "bss",
11494
+ borderWidth: "bw1",
11495
+ borderColor: "bcBlue300"
11496
+ } : {},
11497
+ ...multiline ? minHeight : fixedHeight
11498
+ },
11499
+ readOnly: {
11500
+ ...{
11501
+ ...__typography4[typeScale] ?? {},
11502
+ display: "df",
11503
+ alignItems: "aic",
11504
+ width: "w100",
11505
+ color: ["color_var", {
11506
+ "--color": "var(--b-on-surface)"
11507
+ }],
11508
+ ...labelStyle === "left" ? {
11509
+ width: ["w_var", {
11510
+ "--width": maybeCssVar17(__maybeInc10(labelLeftFieldWidth))
11511
+ }]
11512
+ } : {}
11513
+ },
11514
+ // Hidden labels mean a table cell. Min-height matches an editable field so the row lines up.
11515
+ ...labelStyle === "hidden" ? minHeight : {}
11516
+ },
11517
+ hover: {
11518
+ backgroundColor: ["bgColor_var", {
11519
+ "--backgroundColor": maybeCssVar17(hoverBgColor)
11520
+ }],
11521
+ borderColor: ["bc_var", {
11522
+ "--borderColor": "var(--b-field-border-hover)"
11523
+ }]
11524
+ },
11525
+ focus: {
11526
+ borderColor: ["bc_var", {
11527
+ "--borderColor": "var(--b-field-border-focus)"
11528
+ }],
11529
+ backgroundColor: ["bgColor_var", {
11530
+ "--backgroundColor": maybeCssVar17(hoverBgColor)
11531
+ }],
11532
+ ...borderOnHover ? {
11533
+ borderColor: ["bc_var", {
11534
+ "--borderColor": "var(--b-field-border-focus)"
11535
+ }]
11536
+ } : {}
11537
+ },
11538
+ disabled: visuallyDisabled ? {
11539
+ cursor: "cur_not_allowed",
11540
+ color: ["color_var", {
11541
+ "--color": "var(--b-field-text-disabled)"
11542
+ }],
11543
+ backgroundColor: ["bgColor_var", {
11544
+ "--backgroundColor": maybeCssVar17(disabledBgColor)
11545
+ }]
11546
+ } : {
11547
+ cursor: "cur_not_allowed"
11548
+ },
11549
+ error: {
11550
+ borderColor: ["bc_var", {
11551
+ "--borderColor": "var(--b-field-border-error)"
11552
+ }]
11553
+ }
11554
+ };
11555
+ }
11556
+ function selectedValueCss(labelStyle, readOnly) {
11557
+ return labelStyle !== "inline" && !readOnly ? {
11558
+ fontWeight: "fw5"
11559
+ } : void 0;
11560
+ }
11561
+ var textFieldBasePadding = increment(1);
11562
+ function fieldBackgrounds(options) {
11563
+ const {
11564
+ showProposal,
11565
+ inputStylePalette,
11566
+ borderOnHover,
11567
+ borderless,
11568
+ compound
11569
+ } = options;
11570
+ if (showProposal) return ["--b-ai-field-bg" /* AiFieldBg */, "rgba(237, 233, 254, 1)" /* Purple100 */, "--b-field-bg-disabled" /* FieldBgDisabled */];
11571
+ if (inputStylePalette) return inputStylePaletteBackgrounds(inputStylePalette);
11572
+ if (borderOnHover) return ["rgba(0,0,0,0)" /* Transparent */, "rgba(219, 234, 254, 1)" /* Blue100 */, "rgba(247, 245, 245, 1)" /* Gray100 */];
11573
+ if (borderless && !compound) return ["rgba(247, 245, 245, 1)" /* Gray100 */, "rgba(236, 235, 235, 1)" /* Gray200 */, "rgba(236, 235, 235, 1)" /* Gray200 */];
11574
+ return ["--b-field-bg-default" /* FieldBgDefault */, "--b-field-bg-hover" /* FieldBgHover */, "--b-field-bg-disabled" /* FieldBgDisabled */];
11575
+ }
11576
+ function inputStylePaletteBackgrounds(inputStylePalette) {
11577
+ switch (inputStylePalette) {
11578
+ case "success":
11579
+ return ["rgba(236, 253, 245, 1)" /* Green50 */, "rgba(209, 250, 229, 1)" /* Green100 */, "rgba(236, 253, 245, 1)" /* Green50 */];
11580
+ case "caution":
11581
+ return ["rgba(254, 252, 232, 1)" /* Yellow50 */, "rgba(254, 249, 195, 1)" /* Yellow100 */, "rgba(254, 252, 232, 1)" /* Yellow50 */];
11582
+ case "warning":
11583
+ return ["rgba(254, 242, 242, 1)" /* Red50 */, "rgba(254, 226, 226, 1)" /* Red100 */, "rgba(254, 242, 242, 1)" /* Red50 */];
11584
+ case "info":
11585
+ return ["rgba(239, 246, 255, 1)" /* Blue50 */, "rgba(219, 234, 254, 1)" /* Blue100 */, "rgba(239, 246, 255, 1)" /* Blue50 */];
11586
+ default:
11587
+ return ["rgba(255, 255, 255, 1)" /* White */, "rgba(247, 245, 245, 1)" /* Gray100 */, "rgba(247, 245, 245, 1)" /* Gray100 */];
11588
+ }
11589
+ }
11590
+
11591
+ // src/inputs/TextFieldBase.tsx
11592
+ import { trussProps as trussProps24, mergeProps as mergeProps_13 } from "@homebound/truss/runtime";
11593
+ import { Fragment as Fragment13, jsx as jsx39, jsxs as jsxs20 } from "react/jsx-runtime";
11351
11594
  function TextFieldBase(props) {
11352
11595
  const {
11353
11596
  fieldProps,
@@ -11417,147 +11660,30 @@ function TextFieldBase(props) {
11417
11660
  onFocusWithinChange: setIsFocused
11418
11661
  });
11419
11662
  const fieldRef = useGetRef(inputRef);
11420
- const maybeSmaller = compound ? 2 : 0;
11421
- const fieldHeight = 40;
11422
- const compactFieldHeight = 32;
11423
11663
  const showProposal = proposedValue !== void 0;
11424
11664
  const showOriginal = originalValue !== void 0 && originalValue !== "";
11425
11665
  const originalBelow = showOriginal && !inputProps.readOnly && !compound ? originalValue : void 0;
11426
11666
  const showErrorAndHelper = alwaysShowHelperText || !compound && !inputProps.disabled && !inputProps.readOnly;
11427
- const [bgColor, hoverBgColor, disabledBgColor] = showProposal ? ["--b-ai-field-bg" /* AiFieldBg */, "rgba(237, 233, 254, 1)" /* Purple100 */, "--b-field-bg-disabled" /* FieldBgDisabled */] : inputStylePalette ? getInputStylePalette(inputStylePalette) : borderOnHover ? (
11428
- // Use transparent backgrounds to blend with the table row hover color
11429
- ["rgba(0,0,0,0)" /* Transparent */, "rgba(219, 234, 254, 1)" /* Blue100 */, "rgba(247, 245, 245, 1)" /* Gray100 */]
11430
- ) : borderless && !compound ? ["rgba(247, 245, 245, 1)" /* Gray100 */, "rgba(236, 235, 235, 1)" /* Gray200 */, "rgba(236, 235, 235, 1)" /* Gray200 */] : ["--b-field-bg-default" /* FieldBgDefault */, "--b-field-bg-hover" /* FieldBgHover */, "--b-field-bg-disabled" /* FieldBgDisabled */];
11431
- const fieldMaxWidth = getFieldWidth(fullWidth);
11432
- const fieldStyles = {
11433
- container: {
11434
- ...{
11435
- display: "df",
11436
- flexDirection: "fdc",
11437
- width: "w100",
11438
- maxWidth: ["maxw_var", {
11439
- "--maxWidth": maybeCssVar17(fieldMaxWidth)
11440
- }],
11441
- position: "relative",
11442
- ...labelStyle === "left" ? {
11443
- maxWidth: "maxw100",
11444
- flexDirection: "fdr",
11445
- gap: "g_2",
11446
- justifyContent: "jcsb",
11447
- alignItems: "aic"
11448
- } : {}
11449
- }
11450
- },
11451
- inputWrapper: {
11452
- ...{
11453
- ...__typography4[typeScale] ?? {},
11454
- display: "df",
11455
- alignItems: "aic",
11456
- borderRadius: "br8",
11457
- paddingLeft: ["px_var", {
11458
- "--paddingLeft": `${textFieldBasePadding}px`
11459
- }],
11460
- paddingRight: ["px_var", {
11461
- "--paddingRight": `${textFieldBasePadding}px`
11462
- }],
11463
- width: "w100",
11464
- backgroundColor: ["bgColor_var", {
11465
- "--backgroundColor": maybeCssVar17(bgColor)
11466
- }],
11467
- color: ["color_var", {
11468
- "--color": "var(--b-on-surface)"
11469
- }],
11470
- ...labelStyle === "left" ? {
11471
- width: ["w_var", {
11472
- "--width": maybeCssVar17(__maybeInc10(labelLeftFieldWidth))
11473
- }]
11474
- } : {}
11475
- },
11476
- // When borderless then perceived vertical alignments are misaligned. As there is no longer a border, then the field looks oddly indented.
11477
- // 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.
11478
- // 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.
11479
- // Note: Do not modify width and position of 'compound' fields.
11480
- ...borderless && !compound ? {
11481
- borderColor: "bcTransparent",
11482
- width: "w_calc_100_16px",
11483
- marginLeft: "ml_neg1"
11484
- } : {
11485
- borderColor: ["bc_var", {
11486
- "--borderColor": "var(--b-field-border-default)"
11487
- }]
11488
- },
11489
- // Do not add borders to compound fields. A compound field is responsible for drawing its own borders
11490
- ...!compound ? {
11491
- borderStyle: "bss",
11492
- borderWidth: "bw1"
11493
- } : {},
11494
- ...borderOnHover && {
11495
- borderRadius: "br4",
11496
- borderStyle: "bss",
11497
- borderWidth: "bw1",
11498
- borderColor: "bcTransparent",
11499
- transition: "tsn_border_color_200ms"
11500
- },
11501
- ...borderOnHover && {
11502
- ...isHovered ? {
11503
- backgroundColor: ["bgColor_var", {
11504
- "--backgroundColor": maybeCssVar17(hoverBgColor)
11505
- }],
11506
- borderStyle: "bss",
11507
- borderWidth: "bw1",
11508
- borderColor: "bcBlue300"
11509
- } : {}
11510
- },
11511
- // When multiline is true, then we want to allow the field to grow to the height of the content, but not shrink below the minHeight
11512
- // Otherwise, set fixed heights values accordingly.
11513
- ...multiline ? {
11514
- minHeight: ["mh_var", {
11515
- "--minHeight": `${fieldHeight - maybeSmaller}px`
11516
- }],
11517
- ...compact ? {
11518
- minHeight: ["mh_var", {
11519
- "--minHeight": `${compactFieldHeight - maybeSmaller}px`
11520
- }]
11521
- } : {}
11522
- } : {
11523
- height: ["h_var", {
11524
- "--height": `${fieldHeight - maybeSmaller}px`
11525
- }],
11526
- ...compact ? {
11527
- height: ["h_var", {
11528
- "--height": `${compactFieldHeight - maybeSmaller}px`
11529
- }]
11530
- } : {}
11531
- }
11532
- },
11533
- // Border-hover-on-row styling is handled by Row.css.ts (imported above as a side-effect)
11534
- inputWrapperReadOnly: {
11535
- ...{
11536
- ...__typography4[typeScale] ?? {},
11537
- display: "df",
11538
- alignItems: "aic",
11539
- width: "w100",
11540
- color: ["color_var", {
11541
- "--color": "var(--b-on-surface)"
11542
- }],
11543
- ...labelStyle === "left" ? {
11544
- width: ["w_var", {
11545
- "--width": maybeCssVar17(__maybeInc10(labelLeftFieldWidth))
11546
- }]
11547
- } : {}
11548
- },
11549
- // If we are hiding the label, then we are typically in a table. Keep the `mh` in this case to ensure editable and non-editable fields in a single table row line up properly
11550
- ...labelStyle === "hidden" && {
11551
- minHeight: ["mh_var", {
11552
- "--minHeight": `${fieldHeight - maybeSmaller}px`
11553
- }],
11554
- ...compact ? {
11555
- minHeight: ["mh_var", {
11556
- "--minHeight": `${compactFieldHeight - maybeSmaller}px`
11557
- }]
11558
- } : {}
11559
- }
11560
- },
11667
+ const fieldChrome = getFieldChrome({
11668
+ typeScale,
11669
+ labelStyle,
11670
+ labelLeftFieldWidth,
11671
+ compact,
11672
+ borderless,
11673
+ borderOnHover,
11674
+ fullWidth,
11675
+ visuallyDisabled,
11676
+ isHovered,
11677
+ compound,
11678
+ multiline,
11679
+ showProposal,
11680
+ inputStylePalette
11681
+ });
11682
+ const fieldStyles = {
11683
+ container: fieldChrome.container,
11684
+ inputWrapper: fieldChrome.control,
11685
+ // Border-hover-on-row styling is handled by Row.css.ts (imported above as a side-effect)
11686
+ inputWrapperReadOnly: fieldChrome.readOnly,
11561
11687
  input: {
11562
11688
  ...{
11563
11689
  width: "w100",
@@ -11593,43 +11719,10 @@ function TextFieldBase(props) {
11593
11719
  }]
11594
11720
  } : {}
11595
11721
  },
11596
- hover: {
11597
- backgroundColor: ["bgColor_var", {
11598
- "--backgroundColor": maybeCssVar17(hoverBgColor)
11599
- }],
11600
- borderColor: ["bc_var", {
11601
- "--borderColor": "var(--b-field-border-hover)"
11602
- }]
11603
- },
11604
- focus: {
11605
- borderColor: ["bc_var", {
11606
- "--borderColor": "var(--b-field-border-focus)"
11607
- }],
11608
- backgroundColor: ["bgColor_var", {
11609
- "--backgroundColor": maybeCssVar17(hoverBgColor)
11610
- }],
11611
- ...borderOnHover ? {
11612
- borderColor: ["bc_var", {
11613
- "--borderColor": "var(--b-field-border-focus)"
11614
- }]
11615
- } : {}
11616
- },
11617
- disabled: visuallyDisabled ? {
11618
- cursor: "cur_not_allowed",
11619
- color: ["color_var", {
11620
- "--color": "var(--b-field-text-disabled)"
11621
- }],
11622
- backgroundColor: ["bgColor_var", {
11623
- "--backgroundColor": maybeCssVar17(disabledBgColor)
11624
- }]
11625
- } : {
11626
- cursor: "cur_not_allowed"
11627
- },
11628
- error: {
11629
- borderColor: ["bc_var", {
11630
- "--borderColor": "var(--b-field-border-error)"
11631
- }]
11632
- }
11722
+ hover: fieldChrome.hover,
11723
+ focus: fieldChrome.focus,
11724
+ disabled: fieldChrome.disabled,
11725
+ error: fieldChrome.error
11633
11726
  };
11634
11727
  function onDomChange(e) {
11635
11728
  maybeCall(onUserEdit);
@@ -11816,37 +11909,6 @@ function TextFieldBase(props) {
11816
11909
  ] })
11817
11910
  ] });
11818
11911
  }
11819
- function OriginalValue(props) {
11820
- const {
11821
- originalValue,
11822
- ...others
11823
- } = props;
11824
- return /* @__PURE__ */ jsx39("div", { ...trussProps24({
11825
- color: ["color_var", {
11826
- "--color": "var(--b-text-helper)"
11827
- }],
11828
- fontWeight: "fw4",
11829
- fontSize: "fz_12px",
11830
- lineHeight: "lh_16px",
11831
- marginTop: "mt_4px",
11832
- textDecoration: "tdlt"
11833
- }), ...others, children: originalValue });
11834
- }
11835
- function getInputStylePalette(inputStylePalette) {
11836
- switch (inputStylePalette) {
11837
- case "success":
11838
- return ["rgba(236, 253, 245, 1)" /* Green50 */, "rgba(209, 250, 229, 1)" /* Green100 */, "rgba(236, 253, 245, 1)" /* Green50 */];
11839
- case "caution":
11840
- return ["rgba(254, 252, 232, 1)" /* Yellow50 */, "rgba(254, 249, 195, 1)" /* Yellow100 */, "rgba(254, 252, 232, 1)" /* Yellow50 */];
11841
- case "warning":
11842
- return ["rgba(254, 242, 242, 1)" /* Red50 */, "rgba(254, 226, 226, 1)" /* Red100 */, "rgba(254, 242, 242, 1)" /* Red50 */];
11843
- case "info":
11844
- return ["rgba(239, 246, 255, 1)" /* Blue50 */, "rgba(219, 234, 254, 1)" /* Blue100 */, "rgba(239, 246, 255, 1)" /* Blue50 */];
11845
- default:
11846
- return ["rgba(255, 255, 255, 1)" /* White */, "rgba(247, 245, 245, 1)" /* Gray100 */, "rgba(247, 245, 245, 1)" /* Gray100 */];
11847
- }
11848
- }
11849
- var textFieldBasePadding = increment(1);
11850
11912
  var textFieldBaseMultilineTopPadding = 11;
11851
11913
 
11852
11914
  // src/inputs/internal/MenuSearchField.tsx
@@ -12692,6 +12754,16 @@ var iconStyles = {
12692
12754
  // src/components/internal/Popover.tsx
12693
12755
  import "react";
12694
12756
  import { DismissButton, OverlayContainer, useOverlay } from "react-aria";
12757
+
12758
+ // src/components/internal/shouldDismissOverlay.ts
12759
+ function shouldDismissOverlay(el, trigger) {
12760
+ if (el.closest(".tribute-container") || el.closest("[role='alert']")) return false;
12761
+ const dialog = el.closest("[role='dialog']");
12762
+ if (dialog && !dialog.contains(trigger)) return false;
12763
+ return true;
12764
+ }
12765
+
12766
+ // src/components/internal/Popover.tsx
12695
12767
  import { jsx as jsx44, jsxs as jsxs24 } from "react/jsx-runtime";
12696
12768
  function Popover(props) {
12697
12769
  const { triggerRef, popoverRef, positionProps, children, onClose, isOpen: isOpen2, ...others } = props;
@@ -12702,12 +12774,8 @@ function Popover(props) {
12702
12774
  isOpen: isOpen2,
12703
12775
  isDismissable: true,
12704
12776
  shouldCloseOnInteractOutside: (e) => {
12705
- if (triggerRef.current?.contains(e)) {
12706
- return true;
12707
- }
12708
- const dialog = e.closest("[role='dialog']");
12709
- const isDialogOnTop = !!dialog && !dialog.contains(triggerRef.current);
12710
- return !(e.closest(".tribute-container") || isDialogOnTop || e.closest("[role='alert']"));
12777
+ if (triggerRef.current?.contains(e)) return true;
12778
+ return shouldDismissOverlay(e, triggerRef.current);
12711
12779
  },
12712
12780
  ...others
12713
12781
  },
@@ -17420,7 +17488,8 @@ function ConfirmCloseModal(props) {
17420
17488
  title = "Are you sure you want to leave?",
17421
17489
  message = "Any changes you've made so far will be lost.",
17422
17490
  discardText = "Discard Changes",
17423
- continueText = "Continue Editing"
17491
+ continueText = "Continue Editing",
17492
+ isDestructive = false
17424
17493
  } = props;
17425
17494
  const { modalState } = useBeamContext();
17426
17495
  function closeModal() {
@@ -17445,6 +17514,7 @@ function ConfirmCloseModal(props) {
17445
17514
  Button,
17446
17515
  {
17447
17516
  label: continueText,
17517
+ variant: isDestructive ? "danger" : "primary",
17448
17518
  onClick: () => {
17449
17519
  onContinue?.();
17450
17520
  closeModal();
@@ -19767,9 +19837,7 @@ function ComboBoxInput(props) {
19767
19837
  inputWrapRef,
19768
19838
  value: inputProps.value
19769
19839
  });
19770
- return /* @__PURE__ */ jsx116(TextFieldBase, { ...otherProps, ...multilineProps, unfocusedPlaceholder: showChipSelection && /* @__PURE__ */ jsx116(Chips, { compact: otherProps.compact, values: chipLabels, wrap: allowWrap }), inputRef, inputWrapRef, errorMsg, xss: otherProps.labelStyle !== "inline" && !inputProps.readOnly ? {
19771
- fontWeight: "fw5"
19772
- } : void 0, startAdornment: showNumSelection && /* @__PURE__ */ jsx116(Tooltip, { title: /* @__PURE__ */ jsx116(SelectedOptionBullets, { labels: chipLabels }), children: /* @__PURE__ */ jsx116(CountBadge, { count: selectedChipCount, "data-testid": "selectedOptionsCount" }) }) || showFieldDecoration && fieldDecoration(selectedOptions[0]), endAdornment: !inputProps.readOnly && /* @__PURE__ */ jsx116("button", { ...buttonProps, disabled: inputProps.disabled, ref: buttonRef, ...trussProps75({
19840
+ return /* @__PURE__ */ jsx116(TextFieldBase, { ...otherProps, ...multilineProps, unfocusedPlaceholder: showChipSelection && /* @__PURE__ */ jsx116(Chips, { compact: otherProps.compact, values: chipLabels, wrap: allowWrap }), inputRef, inputWrapRef, errorMsg, xss: selectedValueCss(otherProps.labelStyle, inputProps.readOnly), startAdornment: showNumSelection && /* @__PURE__ */ jsx116(Tooltip, { title: /* @__PURE__ */ jsx116(SelectedOptionBullets, { labels: chipLabels }), children: /* @__PURE__ */ jsx116(CountBadge, { count: selectedChipCount, "data-testid": "selectedOptionsCount" }) }) || showFieldDecoration && fieldDecoration(selectedOptions[0]), endAdornment: !inputProps.readOnly && /* @__PURE__ */ jsx116("button", { ...buttonProps, disabled: inputProps.disabled, ref: buttonRef, ...trussProps75({
19773
19841
  ...{
19774
19842
  borderRadius: "br4",
19775
19843
  outline: "ol_0",
@@ -24897,12 +24965,82 @@ import React18, { useCallback as useCallback35, useEffect as useEffect28, useMem
24897
24965
  // src/components/Layout/GridTableLayout/GridTableLayoutActions.tsx
24898
24966
  import { memo as memo2, useMemo as useMemo43, useState as useState44 } from "react";
24899
24967
 
24968
+ // src/components/Pills/SelectionSummaryPill/SelectionSummaryPill.tsx
24969
+ import { useHover as useHover18 } from "react-aria";
24970
+ import { trussProps as trussProps104, maybeCssVar as maybeCssVar47 } from "@homebound/truss/runtime";
24971
+ import { Fragment as Fragment37, jsx as jsx178, jsxs as jsxs92 } from "react/jsx-runtime";
24972
+ function SelectionSummaryPill(props) {
24973
+ const {
24974
+ text,
24975
+ count,
24976
+ onClick,
24977
+ disabled = false,
24978
+ numberOnly = false,
24979
+ __storyState
24980
+ } = props;
24981
+ const tid = useTestIds(props, "selectionSummaryPill");
24982
+ const {
24983
+ hoverProps,
24984
+ isHovered: isHoveredFromEvents
24985
+ } = useHover18({
24986
+ isDisabled: !!disabled
24987
+ });
24988
+ const isHovered = __storyState?.hovered ?? isHoveredFromEvents;
24989
+ return maybeTooltip({
24990
+ title: resolveTooltip(disabled),
24991
+ placement: "top",
24992
+ children: /* @__PURE__ */ jsx178("button", { type: "button", disabled: !!disabled, onClick, "aria-label": `Clear ${text}`, ...trussProps104(pillStyles(!!disabled, isHovered, numberOnly)), ...hoverProps, ...tid, children: numberOnly ? /* @__PURE__ */ jsxs92(Fragment37, { children: [
24993
+ /* @__PURE__ */ jsx178(CountBadge, { count, bgColor: disabled ? "rgba(201, 201, 201, 1)" /* Gray400 */ : "rgba(37, 99, 235, 1)" /* Blue600 */, ...tid.count }),
24994
+ /* @__PURE__ */ jsx178("span", { className: "df fs0", ...tid.clear, children: /* @__PURE__ */ jsx178(Icon, { icon: "x", color: disabled ? "--b-on-surface-active-disabled" /* OnSurfaceActiveDisabled */ : "rgba(36, 36, 36, 1)" /* Gray900 */ }) })
24995
+ ] }) : /* @__PURE__ */ jsxs92(Fragment37, { children: [
24996
+ text,
24997
+ /* @__PURE__ */ jsx178("span", { ...trussProps104({
24998
+ color: ["color_var", {
24999
+ "--color": maybeCssVar47(disabled ? "--b-on-surface-active-disabled" /* OnSurfaceActiveDisabled */ : "--b-on-surface-active" /* OnSurfaceActive */)
25000
+ }]
25001
+ }), ...tid.clear, children: "Clear" })
25002
+ ] }) })
25003
+ });
25004
+ }
25005
+ function pillStyles(disabled, hovered, numberOnly) {
25006
+ return {
25007
+ fontWeight: "fw6",
25008
+ fontSize: "fz_14px",
25009
+ lineHeight: "lh_20px",
25010
+ display: "dif",
25011
+ alignItems: "aic",
25012
+ gap: "g_1",
25013
+ whiteSpace: "wsnw",
25014
+ borderStyle: "bss",
25015
+ borderWidth: "bw1",
25016
+ borderRadius: "brPill",
25017
+ paddingLeft: ["pl_var", {
25018
+ "--paddingLeft": `${numberOnly ? 19 : 15}px`
25019
+ }],
25020
+ paddingRight: "pr_15px",
25021
+ paddingTop: "pt_7px",
25022
+ paddingBottom: "pb_7px",
25023
+ borderColor: ["bc_var", {
25024
+ "--borderColor": "var(--b-surface-active-border)"
25025
+ }],
25026
+ color: ["color_var", {
25027
+ "--color": maybeCssVar47(disabled ? "--b-on-surface-active-disabled" /* OnSurfaceActiveDisabled */ : "rgba(36, 36, 36, 1)" /* Gray900 */)
25028
+ }],
25029
+ backgroundColor: ["bgColor_var", {
25030
+ "--backgroundColor": maybeCssVar47(hovered ? "--b-surface-active-hover" /* SurfaceActiveHover */ : "--b-surface-active" /* SurfaceActive */)
25031
+ }],
25032
+ ...disabled ? {
25033
+ cursor: "cur_not_allowed"
25034
+ } : {}
25035
+ };
25036
+ }
25037
+
24900
25038
  // src/components/Table/components/EditColumnsButton.tsx
24901
- import { Fragment as Fragment37, useCallback as useCallback27, useMemo as useMemo42, useRef as useRef53 } from "react";
25039
+ import { Fragment as Fragment38, useCallback as useCallback27, useMemo as useMemo42, useRef as useRef53 } from "react";
24902
25040
  import { useMenuTrigger as useMenuTrigger4 } from "react-aria";
24903
25041
  import { useMenuTriggerState as useMenuTriggerState4 } from "react-stately";
24904
- import { trussProps as trussProps104 } from "@homebound/truss/runtime";
24905
- import { jsx as jsx178, jsxs as jsxs92 } from "react/jsx-runtime";
25042
+ import { trussProps as trussProps105 } from "@homebound/truss/runtime";
25043
+ import { jsx as jsx179, jsxs as jsxs93 } from "react/jsx-runtime";
24906
25044
  function EditColumnsButton(props) {
24907
25045
  const {
24908
25046
  defaultOpen,
@@ -24943,7 +25081,7 @@ function EditColumnsButton(props) {
24943
25081
  const selectableOptionValues = options.map((option) => option.value);
24944
25082
  return selectableOptionValues.some((option) => !selectedValues.includes(option));
24945
25083
  }, [options, selectedValues]);
24946
- return /* @__PURE__ */ jsx178(OverlayTrigger, { ...props, trigger: sm ? {
25084
+ return /* @__PURE__ */ jsx179(OverlayTrigger, { ...props, trigger: sm ? {
24947
25085
  icon: hasHiddenColumn ? "columnsBadged" : "columns",
24948
25086
  variant: "outline"
24949
25087
  } : {
@@ -24951,7 +25089,7 @@ function EditColumnsButton(props) {
24951
25089
  label: "",
24952
25090
  size: "md",
24953
25091
  variant: "secondaryBlack"
24954
- }, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ jsxs92("div", { ...trussProps104({
25092
+ }, menuTriggerProps, state, buttonRef, ...tid, children: /* @__PURE__ */ jsxs93("div", { ...trussProps105({
24955
25093
  display: "df",
24956
25094
  flexDirection: "fdc",
24957
25095
  backgroundColor: ["bgColor_var", {
@@ -24964,14 +25102,14 @@ function EditColumnsButton(props) {
24964
25102
  maxHeight: "maxh_512px",
24965
25103
  boxShadow: "bshBasic h_bshHover"
24966
25104
  }), children: [
24967
- /* @__PURE__ */ jsx178("div", { className: "dg gtc_1fr_auto g_2 pt2 pb2 pr2 pl2 fg1 mh0 oya", children: options.map((option) => /* @__PURE__ */ jsxs92(Fragment37, { children: [
24968
- /* @__PURE__ */ jsxs92("div", { className: "df aic g_4px mw0 pr1", children: [
24969
- /* @__PURE__ */ jsx178("span", { className: "fw4 fz_14px lh_20px wsnw oh to_ellipsis mw0", children: option.label }),
24970
- option.tooltip ? /* @__PURE__ */ jsx178(ColumnTooltipIcon, { ...tid[`tooltip_${option.value}`], tooltip: closeMenuOnClickTooltip(option.tooltip, state.close), color: "--b-text-link-default" /* TextLinkDefault */, label: option.label }) : null
25105
+ /* @__PURE__ */ jsx179("div", { className: "dg gtc_1fr_auto g_2 pt2 pb2 pr2 pl2 fg1 mh0 oya", children: options.map((option) => /* @__PURE__ */ jsxs93(Fragment38, { children: [
25106
+ /* @__PURE__ */ jsxs93("div", { className: "df aic g_4px mw0 pr1", children: [
25107
+ /* @__PURE__ */ jsx179("span", { className: "fw4 fz_14px lh_20px wsnw oh to_ellipsis mw0", children: option.label }),
25108
+ option.tooltip ? /* @__PURE__ */ jsx179(ColumnTooltipIcon, { ...tid[`tooltip_${option.value}`], tooltip: closeMenuOnClickTooltip(option.tooltip, state.close), color: "--b-text-link-default" /* TextLinkDefault */, label: option.label }) : null
24971
25109
  ] }),
24972
- /* @__PURE__ */ jsx178(Switch, { compact: true, selected: selectedValues.includes(option.value), onChange: (value) => setSelectedValues(value ? [...selectedValues, option.value] : selectedValues.filter((v) => v !== option.value)), labelStyle: "hidden", label: option.label, ...tid[`option${option.value}`] })
25110
+ /* @__PURE__ */ jsx179(Switch, { compact: true, selected: selectedValues.includes(option.value), onChange: (value) => setSelectedValues(value ? [...selectedValues, option.value] : selectedValues.filter((v) => v !== option.value)), labelStyle: "hidden", label: option.label, ...tid[`option${option.value}`] })
24973
25111
  ] }, option.value)) }),
24974
- /* @__PURE__ */ jsx178("div", { ...trussProps104({
25112
+ /* @__PURE__ */ jsx179("div", { ...trussProps105({
24975
25113
  display: "df",
24976
25114
  justifyContent: "jcc",
24977
25115
  paddingTop: "pt2",
@@ -24983,7 +25121,7 @@ function EditColumnsButton(props) {
24983
25121
  borderColor: ["bc_var", {
24984
25122
  "--borderColor": "var(--b-surface-separator)"
24985
25123
  }]
24986
- }), children: /* @__PURE__ */ jsx178(Button, { variant: "tertiary", label: "Reset Column Widths", onClick: () => api.resetColumnWidths() }) })
25124
+ }), children: /* @__PURE__ */ jsx179(Button, { variant: "tertiary", label: "Reset Column Widths", onClick: () => api.resetColumnWidths() }) })
24987
25125
  ] }) });
24988
25126
  }
24989
25127
  function closeMenuOnClickTooltip(tooltip, closeMenu) {
@@ -24995,7 +25133,7 @@ function closeMenuOnClickTooltip(tooltip, closeMenu) {
24995
25133
  }
24996
25134
 
24997
25135
  // src/components/Table/components/ViewToggleButton.tsx
24998
- import { jsx as jsx179 } from "react/jsx-runtime";
25136
+ import { jsx as jsx180 } from "react/jsx-runtime";
24999
25137
  function ViewToggleButton({ view, onChange, defaultOpen }) {
25000
25138
  const { sm } = useBreakpoint();
25001
25139
  const tid = useTestIds({}, "viewToggleButton");
@@ -25004,7 +25142,7 @@ function ViewToggleButton({ view, onChange, defaultOpen }) {
25004
25142
  { label: "Card", icon: "tile", onClick: () => onChange("card") }
25005
25143
  ];
25006
25144
  const icon = view === "list" ? "projects" : "tile";
25007
- return /* @__PURE__ */ jsx179(
25145
+ return /* @__PURE__ */ jsx180(
25008
25146
  ButtonMenu,
25009
25147
  {
25010
25148
  trigger: sm ? { icon, variant: "outline" } : { icon, label: "", size: "md", variant: "secondaryBlack" },
@@ -25020,9 +25158,9 @@ import { useDebouncedCallback as useDebouncedCallback6 } from "use-debounce";
25020
25158
  import { StringParam, useQueryParams } from "use-query-params";
25021
25159
 
25022
25160
  // src/components/Pills/FilterPill/FilterPill.tsx
25023
- import { useHover as useHover18 } from "react-aria";
25024
- import { trussProps as trussProps105, maybeCssVar as maybeCssVar47 } from "@homebound/truss/runtime";
25025
- import { jsx as jsx180, jsxs as jsxs93 } from "react/jsx-runtime";
25161
+ import { useHover as useHover19 } from "react-aria";
25162
+ import { trussProps as trussProps106, maybeCssVar as maybeCssVar48 } from "@homebound/truss/runtime";
25163
+ import { jsx as jsx181, jsxs as jsxs94 } from "react/jsx-runtime";
25026
25164
  function FilterPill(props) {
25027
25165
  const {
25028
25166
  text,
@@ -25035,7 +25173,7 @@ function FilterPill(props) {
25035
25173
  const {
25036
25174
  hoverProps,
25037
25175
  isHovered: isHoveredFromEvents
25038
- } = useHover18({
25176
+ } = useHover19({
25039
25177
  isDisabled
25040
25178
  });
25041
25179
  const isHovered = __storyState?.hovered ?? isHoveredFromEvents;
@@ -25043,13 +25181,13 @@ function FilterPill(props) {
25043
25181
  return maybeTooltip({
25044
25182
  title: resolveTooltip(disabled),
25045
25183
  placement: "top",
25046
- children: /* @__PURE__ */ jsxs93("button", { type: "button", disabled: isDisabled, onClick, ...trussProps105(pillStyles(isDisabled, isHovered)), ...hoverProps, ...tid, children: [
25047
- /* @__PURE__ */ jsx180("span", { className: "tal oh d_negwebkit_box wbo_vertical to_ellipsis wlc_1 wbba", title: text, children: text }),
25048
- /* @__PURE__ */ jsx180("span", { className: "fs0", ...tid.x, children: /* @__PURE__ */ jsx180(Icon, { icon: "x", color: ink, inc: 2 }) })
25184
+ children: /* @__PURE__ */ jsxs94("button", { type: "button", disabled: isDisabled, onClick, ...trussProps106(pillStyles2(isDisabled, isHovered)), ...hoverProps, ...tid, children: [
25185
+ /* @__PURE__ */ jsx181("span", { className: "tal oh d_negwebkit_box wbo_vertical to_ellipsis wlc_1 wbba", title: text, children: text }),
25186
+ /* @__PURE__ */ jsx181("span", { className: "fs0", ...tid.x, children: /* @__PURE__ */ jsx181(Icon, { icon: "x", color: ink, inc: 2 }) })
25049
25187
  ] })
25050
25188
  });
25051
25189
  }
25052
- function pillStyles(disabled, hovered) {
25190
+ function pillStyles2(disabled, hovered) {
25053
25191
  return {
25054
25192
  fontWeight: "fw6",
25055
25193
  fontSize: "fz_12px",
@@ -25064,10 +25202,10 @@ function pillStyles(disabled, hovered) {
25064
25202
  paddingBottom: "pb_4px",
25065
25203
  minHeight: "mh_24px",
25066
25204
  color: ["color_var", {
25067
- "--color": maybeCssVar47(disabled ? "--b-on-surface-active-disabled" /* OnSurfaceActiveDisabled */ : "rgba(36, 36, 36, 1)" /* Gray900 */)
25205
+ "--color": maybeCssVar48(disabled ? "--b-on-surface-active-disabled" /* OnSurfaceActiveDisabled */ : "rgba(36, 36, 36, 1)" /* Gray900 */)
25068
25206
  }],
25069
25207
  backgroundColor: ["bgColor_var", {
25070
- "--backgroundColor": maybeCssVar47(hovered ? "--b-surface-active-hover" /* SurfaceActiveHover */ : "--b-surface-active" /* SurfaceActive */)
25208
+ "--backgroundColor": maybeCssVar48(hovered ? "--b-surface-active-hover" /* SurfaceActiveHover */ : "--b-surface-active" /* SurfaceActive */)
25071
25209
  }],
25072
25210
  ...disabled ? {
25073
25211
  cursor: "cur_not_allowed"
@@ -25076,12 +25214,12 @@ function pillStyles(disabled, hovered) {
25076
25214
  }
25077
25215
 
25078
25216
  // src/components/Layout/GridTableLayout/FilterPanel.tsx
25079
- import { trussProps as trussProps106 } from "@homebound/truss/runtime";
25217
+ import { trussProps as trussProps107 } from "@homebound/truss/runtime";
25080
25218
 
25081
25219
  // src/components/Layout/GridTableLayout/GroupByField.tsx
25082
- import { jsx as jsx181 } from "react/jsx-runtime";
25220
+ import { jsx as jsx182 } from "react/jsx-runtime";
25083
25221
  function GroupByField({ value, setValue, options }) {
25084
- return /* @__PURE__ */ jsx181(
25222
+ return /* @__PURE__ */ jsx182(
25085
25223
  SelectField,
25086
25224
  {
25087
25225
  label: "Group by",
@@ -25097,9 +25235,9 @@ function GroupByField({ value, setValue, options }) {
25097
25235
  }
25098
25236
 
25099
25237
  // src/components/Layout/GridTableLayout/FilterPanel.tsx
25100
- import { jsx as jsx182, jsxs as jsxs94 } from "react/jsx-runtime";
25238
+ import { jsx as jsx183, jsxs as jsxs95 } from "react/jsx-runtime";
25101
25239
  function FilterPanel(props) {
25102
- return props.isOpen ? /* @__PURE__ */ jsx182(FilterPanelOpen, { ...props }) : /* @__PURE__ */ jsx182(FilterPanelClosed, { ...props });
25240
+ return props.isOpen ? /* @__PURE__ */ jsx183(FilterPanelOpen, { ...props }) : /* @__PURE__ */ jsx183(FilterPanelClosed, { ...props });
25103
25241
  }
25104
25242
  function FilterPanelOpen({
25105
25243
  groupBy,
@@ -25114,7 +25252,7 @@ function FilterPanelOpen({
25114
25252
  const withPagePadding = inDocumentScrollLayout && !insetHandled;
25115
25253
  const activeFilterCount = getActiveFilterCount(filter ?? {});
25116
25254
  const filterControls = filter && setFilter ? buildFilterControls(filterImpls, filter, setFilter, tid) : null;
25117
- return /* @__PURE__ */ jsxs94("div", { ...trussProps106({
25255
+ return /* @__PURE__ */ jsxs95("div", { ...trussProps107({
25118
25256
  ...{
25119
25257
  display: "df",
25120
25258
  alignItems: "aic",
@@ -25130,9 +25268,9 @@ function FilterPanelOpen({
25130
25268
  },
25131
25269
  ...withPagePadding ? pageContentPaddingX : void 0
25132
25270
  }), children: [
25133
- groupBy && /* @__PURE__ */ jsx182("div", { children: /* @__PURE__ */ jsx182(GroupByField, { ...groupBy }) }),
25271
+ groupBy && /* @__PURE__ */ jsx183("div", { children: /* @__PURE__ */ jsx183(GroupByField, { ...groupBy }) }),
25134
25272
  filterControls,
25135
- activeFilterCount > 0 && /* @__PURE__ */ jsx182(Button, { label: "Clear", variant: "tertiary", onClick: () => maybeCall(onClear), ...tid.clearBtn })
25273
+ activeFilterCount > 0 && /* @__PURE__ */ jsx183(Button, { label: "Clear", variant: "tertiary", onClick: () => maybeCall(onClear), ...tid.clearBtn })
25136
25274
  ] });
25137
25275
  }
25138
25276
  function FilterPanelClosed({
@@ -25148,7 +25286,7 @@ function FilterPanelClosed({
25148
25286
  if (!filter || !setFilter) return null;
25149
25287
  const pills = getFilterPills(filterImpls, filter);
25150
25288
  if (pills.length === 0) return null;
25151
- return /* @__PURE__ */ jsxs94("div", { ...trussProps106({
25289
+ return /* @__PURE__ */ jsxs95("div", { ...trussProps107({
25152
25290
  ...{
25153
25291
  display: "df",
25154
25292
  gap: "g_1",
@@ -25158,15 +25296,15 @@ function FilterPanelClosed({
25158
25296
  },
25159
25297
  ...withPagePadding ? pageContentPaddingX : void 0
25160
25298
  }), children: [
25161
- pills.map((pill) => /* @__PURE__ */ jsx182(FilterPill, { text: pill.label, onClick: () => setFilter(pill.nextFilter), ...tid[`pill_${pill.key}`] }, pill.key)),
25162
- /* @__PURE__ */ jsx182(Button, { label: "Clear", variant: "tertiary", onClick: () => maybeCall(onClear), ...tid.clearBtn })
25299
+ pills.map((pill) => /* @__PURE__ */ jsx183(FilterPill, { text: pill.label, onClick: () => setFilter(pill.nextFilter), ...tid[`pill_${pill.key}`] }, pill.key)),
25300
+ /* @__PURE__ */ jsx183(Button, { label: "Clear", variant: "tertiary", onClick: () => maybeCall(onClear), ...tid.clearBtn })
25163
25301
  ] });
25164
25302
  }
25165
25303
  function buildFilterControls(filterImpls, filter, setFilter, testId) {
25166
25304
  const entries = safeEntries(filterImpls);
25167
25305
  const nonCheckbox = entries.filter(([_, f]) => !f.hideLabelInModal);
25168
25306
  const checkbox = entries.filter(([_, f]) => f.hideLabelInModal);
25169
- return [...nonCheckbox, ...checkbox].map(([key, f]) => /* @__PURE__ */ jsx182("div", { children: f.render(filter[key], (value) => setFilter(updateFilter(filter, key, value)), testId, false, false) }, key));
25307
+ return [...nonCheckbox, ...checkbox].map(([key, f]) => /* @__PURE__ */ jsx183("div", { children: f.render(filter[key], (value) => setFilter(updateFilter(filter, key, value)), testId, false, false) }, key));
25170
25308
  }
25171
25309
  function buildFilterImpls(filterDefs) {
25172
25310
  return Object.fromEntries(safeEntries(filterDefs).map(([key, fn]) => [key, fn(key)]));
@@ -25199,8 +25337,8 @@ function filterPillsForKey(key, f, filter) {
25199
25337
  }
25200
25338
 
25201
25339
  // src/components/Layout/GridTableLayout/GridTableLayoutActions.tsx
25202
- import { trussProps as trussProps107 } from "@homebound/truss/runtime";
25203
- import { jsx as jsx183, jsxs as jsxs95 } from "react/jsx-runtime";
25340
+ import { trussProps as trussProps108 } from "@homebound/truss/runtime";
25341
+ import { jsx as jsx184, jsxs as jsxs96 } from "react/jsx-runtime";
25204
25342
  function GridTableLayoutActionsComponent(props) {
25205
25343
  const {
25206
25344
  filter,
@@ -25216,7 +25354,8 @@ function GridTableLayoutActionsComponent(props) {
25216
25354
  setView,
25217
25355
  clearFilters,
25218
25356
  searchApi,
25219
- actions
25357
+ actions,
25358
+ selectionSummary = false
25220
25359
  } = props;
25221
25360
  const testId = useTestIds(props, "gridTableLayoutActions");
25222
25361
  const filterTid = useTestIds({}, filterTestIdPrefix);
@@ -25253,10 +25392,10 @@ function GridTableLayoutActionsComponent(props) {
25253
25392
  const showInlineControl = !inModal && !sm && controlCount === 1 && (hasGroupBy || !!(filter && setFilter));
25254
25393
  const filterImpls = useMemo43(() => filterDefs ? buildFilterImpls(filterDefs) : {}, [filterDefs]);
25255
25394
  const activeFilterCount = useMemo43(() => filter ? getFilterPills(filterImpls, filter).length : 0, [filter, filterImpls]);
25256
- const searchTextField = /* @__PURE__ */ jsx183(TextField, { label: "Search", labelStyle: "hidden", value: searchValue, onChange: (v) => {
25395
+ const searchTextField = /* @__PURE__ */ jsx184(TextField, { label: "Search", labelStyle: "hidden", value: searchValue, onChange: (v) => {
25257
25396
  setSearchValue(v ?? "");
25258
25397
  handleSearchDebounced(v ?? "");
25259
- }, placeholder: "Search", clearable: true, fullWidth: true, startAdornment: /* @__PURE__ */ jsx183(Icon, { icon: "search", color: "--b-on-surface-muted" /* OnSurfaceMuted */ }) });
25398
+ }, placeholder: "Search", clearable: true, fullWidth: true, startAdornment: /* @__PURE__ */ jsx184(Icon, { icon: "search", color: "--b-on-surface-muted" /* OnSurfaceMuted */ }) });
25260
25399
  if (searchApi) {
25261
25400
  searchApi.current = {
25262
25401
  clear: () => {
@@ -25268,7 +25407,7 @@ function GridTableLayoutActionsComponent(props) {
25268
25407
  }
25269
25408
  };
25270
25409
  }
25271
- return /* @__PURE__ */ jsxs95("div", { ...trussProps107({
25410
+ return /* @__PURE__ */ jsxs96("div", { ...trussProps108({
25272
25411
  display: "df",
25273
25412
  flexDirection: "fdc",
25274
25413
  gap: "g_1",
@@ -25278,35 +25417,49 @@ function GridTableLayoutActionsComponent(props) {
25278
25417
  paddingBottom: "pb3"
25279
25418
  } : {}
25280
25419
  }), children: [
25281
- /* @__PURE__ */ jsxs95("div", { ...trussProps107({
25420
+ /* @__PURE__ */ jsxs96("div", { ...trussProps108({
25421
+ // Holds the row at the 40px button height, so a pill alone in it doesn't shift the table when it appears
25282
25422
  ...{
25283
25423
  display: "df",
25284
25424
  gap: "g_1",
25285
- justifyContent: "jcsb"
25425
+ justifyContent: "jcsb",
25426
+ ...selectionSummary ? {
25427
+ minHeight: "mh_40px"
25428
+ } : {}
25286
25429
  },
25287
25430
  ...withPagePadding ? pageContentPaddingX : void 0
25288
25431
  }), ...testId.toolbar, children: [
25289
- /* @__PURE__ */ jsxs95("div", { className: "df g_12px aic", children: [
25290
- !sm && hasSearch && /* @__PURE__ */ jsx183("div", { className: "w_244px", children: searchTextField }),
25291
- sm && hasSearch && /* @__PURE__ */ jsx183(IconButton, { variant: "outline", icon: searchValue ? "searchBadged" : "search", label: "Search", onClick: () => setShowSearch(!showSearch), active: showSearch, ...testId.searchButton }),
25292
- sm && hasFilterControls && /* @__PURE__ */ jsx183(IconButton, { variant: "outline", icon: activeFilterCount > 0 ? "filterBadged" : "filter", label: "Filter", onClick: () => setShowFilters(!showFilters), active: showFilters, ...testId.filterSmallButton }),
25293
- showInlineControl && (groupBy ? /* @__PURE__ */ jsx183(GroupByField, { ...groupBy }) : filter && setFilter && buildFilterControls(filterImpls, filter, setFilter, filterTid)),
25294
- !sm && hasFilterControls && !showInlineControl && /* @__PURE__ */ jsx183(Button, { label: "Filter", icon: "filter", size: "md", endAdornment: /* @__PURE__ */ jsxs95("div", { className: "df aic g_1", children: [
25295
- activeFilterCount > 0 && /* @__PURE__ */ jsx183(CountBadge, { count: activeFilterCount }),
25296
- /* @__PURE__ */ jsx183(Icon, { icon: showFilters ? "chevronUp" : "chevronDown" })
25432
+ /* @__PURE__ */ jsxs96("div", { className: "df g_12px aic", children: [
25433
+ !sm && hasSearch && /* @__PURE__ */ jsx184("div", { className: "w_244px", children: searchTextField }),
25434
+ sm && hasSearch && /* @__PURE__ */ jsx184(IconButton, { variant: "outline", icon: searchValue ? "searchBadged" : "search", label: "Search", onClick: () => setShowSearch(!showSearch), active: showSearch, ...testId.searchButton }),
25435
+ sm && hasFilterControls && /* @__PURE__ */ jsx184(IconButton, { variant: "outline", icon: activeFilterCount > 0 ? "filterBadged" : "filter", label: "Filter", onClick: () => setShowFilters(!showFilters), active: showFilters, ...testId.filterSmallButton }),
25436
+ showInlineControl && (groupBy ? /* @__PURE__ */ jsx184(GroupByField, { ...groupBy }) : filter && setFilter && buildFilterControls(filterImpls, filter, setFilter, filterTid)),
25437
+ !sm && hasFilterControls && !showInlineControl && /* @__PURE__ */ jsx184(Button, { label: "Filter", icon: "filter", size: "md", endAdornment: /* @__PURE__ */ jsxs96("div", { className: "df aic g_1", children: [
25438
+ activeFilterCount > 0 && /* @__PURE__ */ jsx184(CountBadge, { count: activeFilterCount }),
25439
+ /* @__PURE__ */ jsx184(Icon, { icon: showFilters ? "chevronUp" : "chevronDown" })
25297
25440
  ] }), variant: "secondaryBlack", onClick: () => setShowFilters(!showFilters), active: showFilters, ...testId.filterButton })
25298
25441
  ] }),
25299
- (hasHideableColumns || withCardView || !!actions?.length) && /* @__PURE__ */ jsxs95("div", { className: "df aic g_12px", children: [
25300
- hasHideableColumns && view === "list" && columns && api && /* @__PURE__ */ jsx183(EditColumnsButton, { columns, api, tooltip: "Display columns" }),
25301
- withCardView && view !== void 0 && setView && /* @__PURE__ */ jsx183(ViewToggleButton, { view, onChange: setView }),
25302
- !!actions?.length && /* @__PURE__ */ jsx183(HeaderActions, { actions, ...testId.actions })
25442
+ (hasHideableColumns || withCardView || !!actions?.length || selectionSummary) && /* @__PURE__ */ jsxs96("div", { className: "df aic g_12px", children: [
25443
+ selectionSummary && api && /* @__PURE__ */ jsx184(SelectionSummaryAction, { api, numberOnly: sm }),
25444
+ hasHideableColumns && view === "list" && columns && api && /* @__PURE__ */ jsx184(EditColumnsButton, { columns, api, tooltip: "Display columns" }),
25445
+ withCardView && view !== void 0 && setView && /* @__PURE__ */ jsx184(ViewToggleButton, { view, onChange: setView }),
25446
+ !!actions?.length && /* @__PURE__ */ jsx184(HeaderActions, { actions, ...testId.actions })
25303
25447
  ] })
25304
25448
  ] }),
25305
- sm && showSearch && /* @__PURE__ */ jsx183("div", { ...trussProps107(withPagePadding ? pageContentPaddingX : void 0), children: searchTextField }),
25306
- hasFilterControls && !showInlineControl && /* @__PURE__ */ jsx183(FilterPanel, { isOpen: showFilters, groupBy, filterImpls, filter, setFilter, onClear: clearFilters })
25449
+ sm && showSearch && /* @__PURE__ */ jsx184("div", { ...trussProps108(withPagePadding ? pageContentPaddingX : void 0), children: searchTextField }),
25450
+ hasFilterControls && !showInlineControl && /* @__PURE__ */ jsx184(FilterPanel, { isOpen: showFilters, groupBy, filterImpls, filter, setFilter, onClear: clearFilters })
25307
25451
  ] });
25308
25452
  }
25309
25453
  var _GridTableLayoutActions = memo2(GridTableLayoutActionsComponent);
25454
+ function SelectionSummaryAction(props) {
25455
+ const {
25456
+ api,
25457
+ numberOnly
25458
+ } = props;
25459
+ const count = useComputed(() => api.getSelectedLeafRowCount(), [api]);
25460
+ if (count === 0) return null;
25461
+ return /* @__PURE__ */ jsx184(SelectionSummaryPill, { text: `${count} ${pluralize(count, "Row")} Selected`, count, onClick: () => api.clearSelections(), numberOnly });
25462
+ }
25310
25463
 
25311
25464
  // src/components/Layout/GridTableLayout/GridTableLayoutHost.tsx
25312
25465
  import { useResizeObserver as useResizeObserver8 } from "@react-aria/utils";
@@ -25324,10 +25477,10 @@ import { createPortal as createPortal6 } from "react-dom";
25324
25477
 
25325
25478
  // src/layouts/EnvironmentBannerLayout/EnvironmentBannerLayoutHeightContext.tsx
25326
25479
  import { createContext as createContext12, useContext as useContext22 } from "react";
25327
- import { jsx as jsx184 } from "react/jsx-runtime";
25480
+ import { jsx as jsx185 } from "react/jsx-runtime";
25328
25481
  var EnvironmentBannerLayoutHeightContext = createContext12(0);
25329
25482
  function EnvironmentBannerLayoutHeightProvider({ value, children }) {
25330
- return /* @__PURE__ */ jsx184(EnvironmentBannerLayoutHeightContext.Provider, { value, children });
25483
+ return /* @__PURE__ */ jsx185(EnvironmentBannerLayoutHeightContext.Provider, { value, children });
25331
25484
  }
25332
25485
  function useEnvironmentBannerLayoutHeight() {
25333
25486
  return useContext22(EnvironmentBannerLayoutHeightContext);
@@ -25476,8 +25629,8 @@ function waitForRightPaneExit(onComplete) {
25476
25629
  }
25477
25630
 
25478
25631
  // src/components/Layout/RightPaneLayout/DocumentScrollRightPane.tsx
25479
- import { mergeProps as mergeProps28, maybeCssVar as maybeCssVar48 } from "@homebound/truss/runtime";
25480
- import { jsx as jsx185 } from "react/jsx-runtime";
25632
+ import { mergeProps as mergeProps28, maybeCssVar as maybeCssVar49 } from "@homebound/truss/runtime";
25633
+ import { jsx as jsx186 } from "react/jsx-runtime";
25481
25634
  var __maybeInc20 = (inc) => {
25482
25635
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25483
25636
  };
@@ -25530,7 +25683,7 @@ function DocumentScrollRightPane({
25530
25683
  height: paneBounds.heightPx,
25531
25684
  maxHeight: paneBounds.heightPx
25532
25685
  } : void 0;
25533
- const pane = /* @__PURE__ */ jsx185(AnimatePresence3, { children: isRightPaneOpen && /* @__PURE__ */ jsx185(
25686
+ const pane = /* @__PURE__ */ jsx186(AnimatePresence3, { children: isRightPaneOpen && /* @__PURE__ */ jsx186(
25534
25687
  motion3.div,
25535
25688
  {
25536
25689
  ref: paneRef,
@@ -25548,20 +25701,20 @@ function DocumentScrollRightPane({
25548
25701
  "--backgroundColor": "var(--b-surface)"
25549
25702
  }],
25550
25703
  zIndex: ["z_var", {
25551
- "--zIndex": maybeCssVar48(zIndices.rightPaneMobile)
25704
+ "--zIndex": maybeCssVar49(zIndices.rightPaneMobile)
25552
25705
  }]
25553
25706
  } : {
25554
25707
  position: "fixed",
25555
25708
  right: "r_0",
25556
25709
  overflowY: "oya",
25557
25710
  width: ["w_var", {
25558
- "--width": maybeCssVar48(__maybeInc20(paneWidthCss))
25711
+ "--width": maybeCssVar49(__maybeInc20(paneWidthCss))
25559
25712
  }],
25560
25713
  backgroundColor: ["bgColor_var", {
25561
25714
  "--backgroundColor": "var(--b-surface)"
25562
25715
  }],
25563
25716
  zIndex: ["z_var", {
25564
- "--zIndex": maybeCssVar48(zIndices.rightPane)
25717
+ "--zIndex": maybeCssVar49(zIndices.rightPane)
25565
25718
  }],
25566
25719
  borderLeftStyle: "bls_solid",
25567
25720
  borderLeftWidth: "blw_1px",
@@ -25598,7 +25751,7 @@ function DocumentScrollRightPane({
25598
25751
  // src/components/Layout/RightPaneLayout/DocumentScrollRightPaneLayoutRoot.tsx
25599
25752
  import { createContext as createContext13 } from "react";
25600
25753
  import { mergeProps as mergeProps29 } from "@homebound/truss/runtime";
25601
- import { jsx as jsx186 } from "react/jsx-runtime";
25754
+ import { jsx as jsx187 } from "react/jsx-runtime";
25602
25755
  var NestedRightPaneLayoutContext = createContext13(false);
25603
25756
  function DocumentScrollRightPaneLayoutRoot(props) {
25604
25757
  const {
@@ -25609,7 +25762,7 @@ function DocumentScrollRightPaneLayoutRoot(props) {
25609
25762
  const {
25610
25763
  sm
25611
25764
  } = useBreakpoint();
25612
- return /* @__PURE__ */ jsx186(NestedRightPaneLayoutContext.Provider, { value: true, children: /* @__PURE__ */ jsx186(
25765
+ return /* @__PURE__ */ jsx187(NestedRightPaneLayoutContext.Provider, { value: true, children: /* @__PURE__ */ jsx187(
25613
25766
  "div",
25614
25767
  {
25615
25768
  ref: anchorRef.setRef,
@@ -25660,7 +25813,7 @@ function resolveWithRightPaneOptions(withRightPane) {
25660
25813
  }
25661
25814
 
25662
25815
  // src/components/Layout/RightPaneLayout/DocumentScrollOverlayRightPaneLayout.tsx
25663
- import { Fragment as Fragment38, jsx as jsx187, jsxs as jsxs96 } from "react/jsx-runtime";
25816
+ import { Fragment as Fragment39, jsx as jsx188, jsxs as jsxs97 } from "react/jsx-runtime";
25664
25817
  function DocumentScrollOverlayRightPaneLayout({
25665
25818
  children,
25666
25819
  paneWidth = defaultDocumentScrollRightPaneWidth
@@ -25677,14 +25830,14 @@ function DocumentScrollOverlayRightPaneLayout({
25677
25830
  console.warn("DocumentScrollOverlayRightPaneLayout is nested inside another document-scroll right-pane layout. Use a single layout (compose at the body; do not set withRightPane on both a parent and a nested layout).");
25678
25831
  }
25679
25832
  }, [nestedInLayout]);
25680
- if (nestedInLayout) return /* @__PURE__ */ jsx187(Fragment38, { children });
25681
- return /* @__PURE__ */ jsx187(DocumentScrollRightPaneLayoutRoot, { anchorRef, tid, children: sm ? /* @__PURE__ */ jsxs96(Fragment38, { children: [
25833
+ if (nestedInLayout) return /* @__PURE__ */ jsx188(Fragment39, { children });
25834
+ return /* @__PURE__ */ jsx188(DocumentScrollRightPaneLayoutRoot, { anchorRef, tid, children: sm ? /* @__PURE__ */ jsxs97(Fragment39, { children: [
25682
25835
  children,
25683
- /* @__PURE__ */ jsx187(DocumentScrollRightPane, { paneWidth, mobile: true })
25684
- ] }) : /* @__PURE__ */ jsxs96(Fragment38, { children: [
25685
- /* @__PURE__ */ jsxs96("div", { className: "df aifs wfc mw100", children: [
25686
- /* @__PURE__ */ jsx187("div", { className: "w100 mwfc", ...tid.main, children }),
25687
- /* @__PURE__ */ jsx187("div", { ref: spacerRef, "aria-hidden": true, ...mergeProps30(void 0, {
25836
+ /* @__PURE__ */ jsx188(DocumentScrollRightPane, { paneWidth, mobile: true })
25837
+ ] }) : /* @__PURE__ */ jsxs97(Fragment39, { children: [
25838
+ /* @__PURE__ */ jsxs97("div", { className: "df aifs wfc mw100", children: [
25839
+ /* @__PURE__ */ jsx188("div", { className: "w100 mwfc", ...tid.main, children }),
25840
+ /* @__PURE__ */ jsx188("div", { ref: spacerRef, "aria-hidden": true, ...mergeProps30(void 0, {
25688
25841
  width: 0
25689
25842
  }, {
25690
25843
  flexShrink: "fs0",
@@ -25693,7 +25846,7 @@ function DocumentScrollOverlayRightPaneLayout({
25693
25846
  transition: "transitionWidth"
25694
25847
  }), ...tid.spacer })
25695
25848
  ] }),
25696
- /* @__PURE__ */ jsx187(DocumentScrollOverlayRightPaneHost, { anchorRef: anchorRef.ref, spacerRef, paneWidth })
25849
+ /* @__PURE__ */ jsx188(DocumentScrollOverlayRightPaneHost, { anchorRef: anchorRef.ref, spacerRef, paneWidth })
25697
25850
  ] }) });
25698
25851
  }
25699
25852
  function DocumentScrollOverlayRightPaneHost(props) {
@@ -25733,7 +25886,7 @@ function DocumentScrollOverlayRightPaneHost(props) {
25733
25886
  document.documentElement.style.setProperty(beamFloatingRightOffsetVar, "0px");
25734
25887
  };
25735
25888
  }, [anchorRef, keepOverlayChrome, paneWidthCss]);
25736
- return /* @__PURE__ */ jsx187(DocumentScrollRightPane, { paneWidth, mobile: false, anchorRef });
25889
+ return /* @__PURE__ */ jsx188(DocumentScrollRightPane, { paneWidth, mobile: false, anchorRef });
25737
25890
  }
25738
25891
 
25739
25892
  // src/components/Modal/ModalFullBleed.tsx
@@ -25761,8 +25914,8 @@ function ModalFullBleed({
25761
25914
  }
25762
25915
 
25763
25916
  // src/components/Layout/GridTableLayout/GridTableLayoutHost.tsx
25764
- import { trussProps as trussProps108, maybeCssVar as maybeCssVar49 } from "@homebound/truss/runtime";
25765
- import { jsx as jsx188, jsxs as jsxs97 } from "react/jsx-runtime";
25917
+ import { trussProps as trussProps109, maybeCssVar as maybeCssVar50 } from "@homebound/truss/runtime";
25918
+ import { jsx as jsx189, jsxs as jsxs98 } from "react/jsx-runtime";
25766
25919
  var __maybeInc21 = (inc) => {
25767
25920
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25768
25921
  };
@@ -25786,9 +25939,9 @@ function GridTableLayoutHost(props) {
25786
25939
  testIds,
25787
25940
  children
25788
25941
  };
25789
- if (host.kind === "modal") return /* @__PURE__ */ jsx188(ModalHost, { ...shared, host });
25790
- if (host.kind === "document-scroll") return /* @__PURE__ */ jsx188(DocumentScrollHost, { ...shared, rightPane });
25791
- return /* @__PURE__ */ jsx188(ScrollableParentHost, { ...shared, isVirtualized });
25942
+ if (host.kind === "modal") return /* @__PURE__ */ jsx189(ModalHost, { ...shared, host });
25943
+ if (host.kind === "document-scroll") return /* @__PURE__ */ jsx189(DocumentScrollHost, { ...shared, rightPane });
25944
+ return /* @__PURE__ */ jsx189(ScrollableParentHost, { ...shared, isVirtualized });
25792
25945
  }
25793
25946
  function ModalHost(props) {
25794
25947
  const {
@@ -25799,15 +25952,15 @@ function ModalHost(props) {
25799
25952
  testIds,
25800
25953
  children
25801
25954
  } = props;
25802
- return /* @__PURE__ */ jsx188(ModalFullBleed, { omitPadding: true, children: /* @__PURE__ */ jsx188("div", { ref: tableWrapperRef, ...testIds.tableWrapper, children: /* @__PURE__ */ jsxs97("div", { className: "wmaxc mw100", children: [
25803
- /* @__PURE__ */ jsx188(ActionsBar, { actionsRef: tableActionsRef, xss: {
25955
+ return /* @__PURE__ */ jsx189(ModalFullBleed, { omitPadding: true, children: /* @__PURE__ */ jsx189("div", { ref: tableWrapperRef, ...testIds.tableWrapper, children: /* @__PURE__ */ jsxs98("div", { className: "wmaxc mw100", children: [
25956
+ /* @__PURE__ */ jsx189(ActionsBar, { actionsRef: tableActionsRef, xss: {
25804
25957
  ...{
25805
25958
  position: "sticky",
25806
25959
  top: "top0",
25807
25960
  left: "l_0",
25808
25961
  width: "w_100cqw",
25809
25962
  zIndex: ["z_var", {
25810
- "--zIndex": maybeCssVar49(zIndices.tableActions)
25963
+ "--zIndex": maybeCssVar50(zIndices.tableActions)
25811
25964
  }],
25812
25965
  backgroundColor: ["bgColor_var", {
25813
25966
  "--backgroundColor": "var(--b-surface)"
@@ -25815,7 +25968,7 @@ function ModalHost(props) {
25815
25968
  },
25816
25969
  ...modalBodyPaddingX
25817
25970
  }, testIds, children: actions }),
25818
- /* @__PURE__ */ jsx188(VirtualizedScrollParentProvider, { element: host.scrollEl, viewportWidth: host.scrollViewportWidth, children })
25971
+ /* @__PURE__ */ jsx189(VirtualizedScrollParentProvider, { element: host.scrollEl, viewportWidth: host.scrollViewportWidth, children })
25819
25972
  ] }) }) });
25820
25973
  }
25821
25974
  function DocumentScrollHost(props) {
@@ -25827,26 +25980,26 @@ function DocumentScrollHost(props) {
25827
25980
  testIds,
25828
25981
  children
25829
25982
  } = props;
25830
- const tableBody = rightPane ? /* @__PURE__ */ jsx188(DocumentScrollOverlayRightPaneLayout, { paneWidth: rightPane.width, children: /* @__PURE__ */ jsx188("div", { ...trussProps108({
25983
+ const tableBody = rightPane ? /* @__PURE__ */ jsx189(DocumentScrollOverlayRightPaneLayout, { paneWidth: rightPane.width, children: /* @__PURE__ */ jsx189("div", { ...trussProps109({
25831
25984
  minWidth: ["mw_var", {
25832
- "--minWidth": maybeCssVar49(documentScrollRightPaneContentMinCss())
25985
+ "--minWidth": maybeCssVar50(documentScrollRightPaneContentMinCss())
25833
25986
  }]
25834
25987
  }), children }) }) : children;
25835
- return /* @__PURE__ */ jsxs97("div", { ref: tableWrapperRef, className: "df fdc wfc mw100", ...actions !== void 0 ? selfTopSpaced : {}, ...testIds.tableWrapper, children: [
25836
- /* @__PURE__ */ jsx188(ActionsBar, { actionsRef: tableActionsRef, xss: {
25988
+ return /* @__PURE__ */ jsxs98("div", { ref: tableWrapperRef, className: "df fdc wfc mw100", ...actions !== void 0 ? selfTopSpaced : {}, ...testIds.tableWrapper, children: [
25989
+ /* @__PURE__ */ jsx189(ActionsBar, { actionsRef: tableActionsRef, xss: {
25837
25990
  transition: "transitionTop",
25838
25991
  position: "sticky",
25839
25992
  top: ["top_var", {
25840
- "--top": maybeCssVar49(__maybeInc21(stickyNavAndHeaderOffset()))
25993
+ "--top": maybeCssVar50(__maybeInc21(stickyNavAndHeaderOffset()))
25841
25994
  }],
25842
25995
  left: ["left_var", {
25843
- "--left": maybeCssVar49(__maybeInc21(documentScrollChromeLeft()))
25996
+ "--left": maybeCssVar50(__maybeInc21(documentScrollChromeLeft()))
25844
25997
  }],
25845
25998
  width: ["w_var", {
25846
- "--width": maybeCssVar49(__maybeInc21(`min(100%, ${documentScrollChromeWidth()})`))
25999
+ "--width": maybeCssVar50(__maybeInc21(`min(100%, ${documentScrollChromeWidth()})`))
25847
26000
  }],
25848
26001
  zIndex: ["z_var", {
25849
- "--zIndex": maybeCssVar49(zIndices.tableActions)
26002
+ "--zIndex": maybeCssVar50(zIndices.tableActions)
25850
26003
  }],
25851
26004
  backgroundColor: ["bgColor_var", {
25852
26005
  "--backgroundColor": "var(--b-surface)"
@@ -25864,9 +26017,9 @@ function ScrollableParentHost(props) {
25864
26017
  testIds,
25865
26018
  children
25866
26019
  } = props;
25867
- return /* @__PURE__ */ jsxs97("div", { ref: tableWrapperRef, className: "df fdc", ...actions !== void 0 ? selfTopSpaced : {}, ...testIds.tableWrapper, children: [
25868
- /* @__PURE__ */ jsx188(ActionsBar, { actionsRef: tableActionsRef, testIds, children: actions }),
25869
- /* @__PURE__ */ jsx188(ScrollableContent, { virtualized: isVirtualized, children })
26020
+ return /* @__PURE__ */ jsxs98("div", { ref: tableWrapperRef, className: "df fdc", ...actions !== void 0 ? selfTopSpaced : {}, ...testIds.tableWrapper, children: [
26021
+ /* @__PURE__ */ jsx189(ActionsBar, { actionsRef: tableActionsRef, testIds, children: actions }),
26022
+ /* @__PURE__ */ jsx189(ScrollableContent, { virtualized: isVirtualized, children })
25870
26023
  ] });
25871
26024
  }
25872
26025
  function ActionsBar({
@@ -25876,7 +26029,7 @@ function ActionsBar({
25876
26029
  children
25877
26030
  }) {
25878
26031
  if (children === void 0) return null;
25879
- return /* @__PURE__ */ jsx188("div", { ref: actionsRef, ...trussProps108(xss), ...testIds.stickyContent, children });
26032
+ return /* @__PURE__ */ jsx189("div", { ref: actionsRef, ...trussProps109(xss), ...testIds.stickyContent, children });
25880
26033
  }
25881
26034
  function useSetTableActionsHeight(tableWrapperRef, tableActionsRef, enabled) {
25882
26035
  const syncHeightVar = useCallback31(() => {
@@ -25908,7 +26061,7 @@ function useSetTableActionsHeight(tableWrapperRef, tableActionsRef, enabled) {
25908
26061
 
25909
26062
  // src/components/Layout/GridTableLayout/QueryTable.tsx
25910
26063
  import { useMemo as useMemo44 } from "react";
25911
- import { Fragment as Fragment39, jsx as jsx189, jsxs as jsxs98 } from "react/jsx-runtime";
26064
+ import { Fragment as Fragment40, jsx as jsx190, jsxs as jsxs99 } from "react/jsx-runtime";
25912
26065
  function QueryTable(props) {
25913
26066
  const { emptyFallback, query, createRows, columns, emptyState: emptyStateProp, ...others } = props;
25914
26067
  const displayData = query.error ? void 0 : query.data ?? query.previousData;
@@ -25920,15 +26073,15 @@ function QueryTable(props) {
25920
26073
  return { title: emptyFallback };
25921
26074
  }, [emptyFallback, emptyStateProp, query.error, query.loading]);
25922
26075
  if (query.loading && displayData === void 0) {
25923
- return /* @__PURE__ */ jsx189("div", { children: /* @__PURE__ */ jsx189(LoadingTable, { columns: columns.length }) });
26076
+ return /* @__PURE__ */ jsx190("div", { children: /* @__PURE__ */ jsx190(LoadingTable, { columns: columns.length }) });
25924
26077
  }
25925
- return /* @__PURE__ */ jsx189(GridTable, { ...{ rows, columns, fallbackMessage, emptyState, ...others }, loading: query.loading });
26078
+ return /* @__PURE__ */ jsx190(GridTable, { ...{ rows, columns, fallbackMessage, emptyState, ...others }, loading: query.loading });
25926
26079
  }
25927
26080
  function LoadingTable(props) {
25928
26081
  const { columns } = props;
25929
- return /* @__PURE__ */ jsxs98(Fragment39, { children: [
25930
- /* @__PURE__ */ jsx189(LoadingSkeleton, { rows: 1, columns: 1 }),
25931
- /* @__PURE__ */ jsx189(LoadingSkeleton, { rows: 5, columns: columns ?? 5 })
26082
+ return /* @__PURE__ */ jsxs99(Fragment40, { children: [
26083
+ /* @__PURE__ */ jsx190(LoadingSkeleton, { rows: 1, columns: 1 }),
26084
+ /* @__PURE__ */ jsx190(LoadingSkeleton, { rows: 5, columns: columns ?? 5 })
25932
26085
  ] });
25933
26086
  }
25934
26087
 
@@ -26159,12 +26312,13 @@ function useStableValue(value) {
26159
26312
  }
26160
26313
 
26161
26314
  // src/components/Layout/GridTableLayout/GridTableLayout.tsx
26162
- import { Fragment as Fragment40, jsx as jsx190 } from "react/jsx-runtime";
26315
+ import { Fragment as Fragment41, jsx as jsx191 } from "react/jsx-runtime";
26163
26316
  function GridTableLayoutComponent(props) {
26164
26317
  const {
26165
26318
  tableProps,
26166
26319
  layoutState,
26167
26320
  actions,
26321
+ selectionSummary = false,
26168
26322
  hideEditColumns = false,
26169
26323
  withCardView,
26170
26324
  defaultView = "list",
@@ -26187,7 +26341,8 @@ function GridTableLayoutComponent(props) {
26187
26341
  );
26188
26342
  const [view, setView] = usePersistedTableView(defaultView, !!withCardView);
26189
26343
  const clientSearch = layoutState?.search === "client" ? layoutState.searchString : void 0;
26190
- const showTableActions = !!(layoutState?.filterDefs || layoutState?.search || hasHideableColumns || withCardView || actions?.length);
26344
+ const showTableActions = !!(layoutState?.filterDefs || layoutState?.search || hasHideableColumns || withCardView || actions?.length || // Rendered before anything's selected, so the pill doesn't shift the table
26345
+ selectionSummary);
26191
26346
  const isVirtualized = tableProps.as === "virtual" || view === "card";
26192
26347
  const visibleColumnIds = useComputed(() => api.getVisibleColumnIds(), [api]);
26193
26348
  useEffect28(() => {
@@ -26209,7 +26364,7 @@ function GridTableLayoutComponent(props) {
26209
26364
  () => composeEmptyState(tableProps, layoutState, layoutEmptyFallback, clearFilters),
26210
26365
  [layoutEmptyFallback, layoutState, tableProps, clearFilters]
26211
26366
  );
26212
- const tableActionsEl = /* @__PURE__ */ jsx190(
26367
+ const tableActionsEl = /* @__PURE__ */ jsx191(
26213
26368
  _GridTableLayoutActions,
26214
26369
  {
26215
26370
  filterDefs: layoutState?.filterDefs,
@@ -26225,12 +26380,13 @@ function GridTableLayoutComponent(props) {
26225
26380
  setView,
26226
26381
  clearFilters,
26227
26382
  searchApi: searchApiRef,
26228
- actions
26383
+ actions,
26384
+ selectionSummary
26229
26385
  }
26230
26386
  );
26231
26387
  const cardAs = view === "card" ? "card" : void 0;
26232
26388
  const tableStyle = useMemo47(() => getDefaultStyle(tableProps.style), [tableProps.style]);
26233
- const tableBody = /* @__PURE__ */ jsx190(Fragment40, { children: isGridTableProps(tableProps) ? /* @__PURE__ */ jsx190(
26389
+ const tableBody = /* @__PURE__ */ jsx191(Fragment41, { children: isGridTableProps(tableProps) ? /* @__PURE__ */ jsx191(
26234
26390
  GridTable,
26235
26391
  {
26236
26392
  ...tableProps,
@@ -26244,7 +26400,7 @@ function GridTableLayoutComponent(props) {
26244
26400
  visibleColumnsStorageKey,
26245
26401
  columnGutter: includeColumnGutters
26246
26402
  }
26247
- ) : /* @__PURE__ */ jsx190(
26403
+ ) : /* @__PURE__ */ jsx191(
26248
26404
  QueryTable,
26249
26405
  {
26250
26406
  ...tableProps,
@@ -26259,7 +26415,7 @@ function GridTableLayoutComponent(props) {
26259
26415
  columnGutter: includeColumnGutters
26260
26416
  }
26261
26417
  ) });
26262
- return /* @__PURE__ */ jsx190(
26418
+ return /* @__PURE__ */ jsx191(
26263
26419
  GridTableLayoutHost,
26264
26420
  {
26265
26421
  host,
@@ -26327,12 +26483,12 @@ function composeEmptyState(tableProps, layoutState, layoutEmptyFallback, clearFi
26327
26483
  illustration: tableEmptyState?.illustration,
26328
26484
  title: tableEmptyState?.title ?? tableEmptyFallback ?? layoutEmptyFallback,
26329
26485
  description: tableEmptyState?.description ?? (filteringActive ? filterEmptyDescription : void 0),
26330
- actions: tableEmptyState?.actions ?? (filteringActive && layoutState ? /* @__PURE__ */ jsx190(Button, { label: "Clear Filters", variant: "tertiary", onClick: clearFilters, "data-testid": "clearFilters" }) : void 0)
26486
+ actions: tableEmptyState?.actions ?? (filteringActive && layoutState ? /* @__PURE__ */ jsx191(Button, { label: "Clear Filters", variant: "tertiary", onClick: clearFilters, "data-testid": "clearFilters" }) : void 0)
26331
26487
  };
26332
26488
  }
26333
26489
 
26334
26490
  // src/components/Layout/PreventBrowserScroll.tsx
26335
- import { jsx as jsx191 } from "react/jsx-runtime";
26491
+ import { jsx as jsx192 } from "react/jsx-runtime";
26336
26492
  function PreventBrowserScroll({
26337
26493
  children
26338
26494
  }) {
@@ -26340,15 +26496,15 @@ function PreventBrowserScroll({
26340
26496
  // Take over the full viewport and hide any overflown content.
26341
26497
  // Using `-webkit-fill-available`, otherwise `height: 100vh` includes the app bars in mobile Safari. See https://allthingssmitty.com/2020/05/11/css-fix-for-100vh-in-mobile-webkit/
26342
26498
  // Setting the multiple "(min|max-)height" properties is necessary, as Truss will turn this into an object and there can only be one `height` property.
26343
- /* @__PURE__ */ jsx191("div", { className: "oh vh100 mh_negwebkit_fill_available maxh_negwebkit_fill_available", children: /* @__PURE__ */ jsx191("div", { className: "h100 df fdc mh0 oa", children }) })
26499
+ /* @__PURE__ */ jsx192("div", { className: "oh vh100 mh_negwebkit_fill_available maxh_negwebkit_fill_available", children: /* @__PURE__ */ jsx192("div", { className: "h100 df fdc mh0 oa", children }) })
26344
26500
  );
26345
26501
  }
26346
26502
 
26347
26503
  // src/components/Layout/RightPaneLayout/RightPaneLayout.tsx
26348
26504
  import { AnimatePresence as AnimatePresence4, motion as motion4 } from "framer-motion";
26349
26505
  import { useEffect as useEffect29 } from "react";
26350
- import { trussProps as trussProps109, maybeCssVar as maybeCssVar50 } from "@homebound/truss/runtime";
26351
- import { Fragment as Fragment41, jsx as jsx192, jsxs as jsxs99 } from "react/jsx-runtime";
26506
+ import { trussProps as trussProps110, maybeCssVar as maybeCssVar51 } from "@homebound/truss/runtime";
26507
+ import { Fragment as Fragment42, jsx as jsx193, jsxs as jsxs100 } from "react/jsx-runtime";
26352
26508
  var __maybeInc22 = (inc) => {
26353
26509
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
26354
26510
  };
@@ -26366,11 +26522,11 @@ function RightPaneLayout(props) {
26366
26522
  } = useRightPaneOpenState();
26367
26523
  const rightPaneContent = useRightPaneContent();
26368
26524
  useEffect29(() => closePane2, [closePane2]);
26369
- return /* @__PURE__ */ jsx192("div", { className: "h100 df oxh", children: /* @__PURE__ */ jsxs99(Fragment41, { children: [
26370
- /* @__PURE__ */ jsx192("div", { ...trussProps109({
26525
+ return /* @__PURE__ */ jsx193("div", { className: "h100 df oxh", children: /* @__PURE__ */ jsxs100(Fragment42, { children: [
26526
+ /* @__PURE__ */ jsx193("div", { ...trussProps110({
26371
26527
  ...{
26372
26528
  width: ["w_var", {
26373
- "--width": maybeCssVar50(__maybeInc22(`calc(100% - ${paneWidth + 24}px)`))
26529
+ "--width": maybeCssVar51(__maybeInc22(`calc(100% - ${paneWidth + 24}px)`))
26374
26530
  }],
26375
26531
  transition: "transitionWidth",
26376
26532
  height: "h100",
@@ -26386,13 +26542,13 @@ function RightPaneLayout(props) {
26386
26542
  ...{
26387
26543
  ...!!defaultPaneContent ? {
26388
26544
  width: ["w_var", {
26389
- "--width": maybeCssVar50(__maybeInc22(`calc(100% - ${paneWidth + 24}px)`))
26545
+ "--width": maybeCssVar51(__maybeInc22(`calc(100% - ${paneWidth + 24}px)`))
26390
26546
  }],
26391
26547
  marginRight: "mr3"
26392
26548
  } : {}
26393
26549
  }
26394
26550
  }), children }),
26395
- /* @__PURE__ */ jsxs99("div", { ...trussProps109({
26551
+ /* @__PURE__ */ jsxs100("div", { ...trussProps110({
26396
26552
  position: "relative",
26397
26553
  ...!!defaultPaneContent ? {
26398
26554
  width: ["w_var", {
@@ -26400,7 +26556,7 @@ function RightPaneLayout(props) {
26400
26556
  }]
26401
26557
  } : {}
26402
26558
  }), children: [
26403
- defaultPaneContent && /* @__PURE__ */ jsx192("div", { ...trussProps109({
26559
+ defaultPaneContent && /* @__PURE__ */ jsx193("div", { ...trussProps110({
26404
26560
  height: "h100",
26405
26561
  width: ["w_var", {
26406
26562
  "--width": `${paneWidth}px`
@@ -26413,14 +26569,14 @@ function RightPaneLayout(props) {
26413
26569
  left: "l_100"
26414
26570
  } : {}
26415
26571
  }), children: defaultPaneContent }),
26416
- /* @__PURE__ */ jsx192(AnimatePresence4, { children: isRightPaneOpen && /* @__PURE__ */ jsx192(
26572
+ /* @__PURE__ */ jsx193(AnimatePresence4, { children: isRightPaneOpen && /* @__PURE__ */ jsx193(
26417
26573
  motion4.div,
26418
26574
  {
26419
26575
  layout: "position",
26420
26576
  "data-testid": "rightPaneContent",
26421
- ...trussProps109({
26577
+ ...trussProps110({
26422
26578
  backgroundColor: ["bgColor_var", {
26423
- "--backgroundColor": maybeCssVar50(paneBgColor)
26579
+ "--backgroundColor": maybeCssVar51(paneBgColor)
26424
26580
  }],
26425
26581
  height: "h100",
26426
26582
  width: ["w_var", {
@@ -26457,8 +26613,8 @@ function RightPaneLayout(props) {
26457
26613
  // src/components/Layout/RightPaneLayout/internal/DeleteAction.tsx
26458
26614
  import { useResizeObserver as useResizeObserver9 } from "@react-aria/utils";
26459
26615
  import { useRef as useRef61, useState as useState52 } from "react";
26460
- import { trussProps as trussProps110 } from "@homebound/truss/runtime";
26461
- import { jsx as jsx193, jsxs as jsxs100 } from "react/jsx-runtime";
26616
+ import { trussProps as trussProps111 } from "@homebound/truss/runtime";
26617
+ import { jsx as jsx194, jsxs as jsxs101 } from "react/jsx-runtime";
26462
26618
  function MaybeDeleteAction(props) {
26463
26619
  const {
26464
26620
  count = 0,
@@ -26466,7 +26622,7 @@ function MaybeDeleteAction(props) {
26466
26622
  ...buttonProps
26467
26623
  } = props;
26468
26624
  if (!onClick) return null;
26469
- return count > 1 ? /* @__PURE__ */ jsx193(BulkDeleteAction, { count, onClick, ...buttonProps }) : /* @__PURE__ */ jsx193(IconButton, { icon: "trash", label: "Delete", onClick, ...buttonProps });
26625
+ return count > 1 ? /* @__PURE__ */ jsx194(BulkDeleteAction, { count, onClick, ...buttonProps }) : /* @__PURE__ */ jsx194(IconButton, { icon: "trash", label: "Delete", onClick, ...buttonProps });
26470
26626
  }
26471
26627
  function BulkDeleteAction(props) {
26472
26628
  const {
@@ -26490,15 +26646,15 @@ function BulkDeleteAction(props) {
26490
26646
  });
26491
26647
  return (
26492
26648
  // Offset the Button's padding so the trash aligns with the footer inset.
26493
- /* @__PURE__ */ jsxs100("div", { ref: containerRef, className: "relative fg1 mw0 ml_neg16px", children: [
26494
- /* @__PURE__ */ jsx193("div", { "aria-hidden": true, className: "absolute top0 l_0 w100 oh vh pen", children: /* @__PURE__ */ jsx193("div", { ref: contentRef, className: "wmaxc", children: /* @__PURE__ */ jsx193(Button, { variant: "quaternary", icon: "trash", label: `Delete (${count})`, onClick: noop }) }) }),
26495
- /* @__PURE__ */ jsx193(
26649
+ /* @__PURE__ */ jsxs101("div", { ref: containerRef, className: "relative fg1 mw0 ml_neg16px", children: [
26650
+ /* @__PURE__ */ jsx194("div", { "aria-hidden": true, className: "absolute top0 l_0 w100 oh vh pen", children: /* @__PURE__ */ jsx194("div", { ref: contentRef, className: "wmaxc", children: /* @__PURE__ */ jsx194(Button, { variant: "quaternary", icon: "trash", label: `Delete (${count})`, onClick: noop }) }) }),
26651
+ /* @__PURE__ */ jsx194(
26496
26652
  Button,
26497
26653
  {
26498
26654
  variant: "quaternary",
26499
26655
  icon: "trash",
26500
- label: /* @__PURE__ */ jsxs100("span", { children: [
26501
- /* @__PURE__ */ jsx193("span", { ...trussProps110({
26656
+ label: /* @__PURE__ */ jsxs101("span", { children: [
26657
+ /* @__PURE__ */ jsx194("span", { ...trussProps111({
26502
26658
  ...overflows ? {
26503
26659
  position: "absolute",
26504
26660
  overflow: "oh",
@@ -26525,8 +26681,8 @@ function BulkDeleteAction(props) {
26525
26681
  }
26526
26682
 
26527
26683
  // src/components/Layout/RightPaneLayout/RightPanePanel.tsx
26528
- import { trussProps as trussProps111 } from "@homebound/truss/runtime";
26529
- import { jsx as jsx194, jsxs as jsxs101 } from "react/jsx-runtime";
26684
+ import { trussProps as trussProps112 } from "@homebound/truss/runtime";
26685
+ import { jsx as jsx195, jsxs as jsxs102 } from "react/jsx-runtime";
26530
26686
  function RightPanePanel(props) {
26531
26687
  const {
26532
26688
  title,
@@ -26540,8 +26696,8 @@ function RightPanePanel(props) {
26540
26696
  const {
26541
26697
  closeRightPane
26542
26698
  } = useRightPaneActions();
26543
- return /* @__PURE__ */ jsxs101("div", { className: "relative df fdc h100", ...tid, children: [
26544
- /* @__PURE__ */ jsxs101("div", { ...trussProps111({
26699
+ return /* @__PURE__ */ jsxs102("div", { className: "relative df fdc h100", ...tid, children: [
26700
+ /* @__PURE__ */ jsxs102("div", { ...trussProps112({
26545
26701
  display: "df",
26546
26702
  alignItems: "aic",
26547
26703
  justifyContent: "jcsb",
@@ -26557,11 +26713,11 @@ function RightPanePanel(props) {
26557
26713
  }],
26558
26714
  flexShrink: "fs0"
26559
26715
  }), ...tid.header, children: [
26560
- /* @__PURE__ */ jsx194("div", { className: "fw6 fz_16px lh_24px", children: title }),
26561
- withClose && /* @__PURE__ */ jsx194(IconButton, { icon: "x", label: "Close", autoFocus: true, onClick: closeRightPane, ...tid.close })
26716
+ /* @__PURE__ */ jsx195("div", { className: "fw6 fz_16px lh_24px", children: title }),
26717
+ withClose && /* @__PURE__ */ jsx195(IconButton, { icon: "x", label: "Close", autoFocus: true, onClick: closeRightPane, ...tid.close })
26562
26718
  ] }),
26563
- /* @__PURE__ */ jsx194("div", { className: "fg1 mh0 oya pt3 pb3 pr3 pl3", ...tid.body, children }),
26564
- (deleteAction || secondaryAction || primaryAction) && /* @__PURE__ */ jsxs101("div", { ...trussProps111({
26719
+ /* @__PURE__ */ jsx195("div", { className: "fg1 mh0 oya pt3 pb3 pr3 pl3", ...tid.body, children }),
26720
+ (deleteAction || secondaryAction || primaryAction) && /* @__PURE__ */ jsxs102("div", { ...trussProps112({
26565
26721
  display: "df",
26566
26722
  alignItems: "aic",
26567
26723
  gap: "g_2",
@@ -26576,10 +26732,10 @@ function RightPanePanel(props) {
26576
26732
  }],
26577
26733
  flexShrink: "fs0"
26578
26734
  }), ...tid.footer, children: [
26579
- /* @__PURE__ */ jsx194(MaybeDeleteAction, { ...deleteAction, ...tid.delete }),
26580
- /* @__PURE__ */ jsxs101("div", { className: "df aic g_1_5 fs0 mla", children: [
26581
- secondaryAction && /* @__PURE__ */ jsx194(Button, { ...secondaryAction, variant: "secondary", ...tid.secondaryAction }),
26582
- primaryAction && /* @__PURE__ */ jsx194(Button, { ...primaryAction, ...tid.primaryAction })
26735
+ /* @__PURE__ */ jsx195(MaybeDeleteAction, { ...deleteAction, ...tid.delete }),
26736
+ /* @__PURE__ */ jsxs102("div", { className: "df aic g_1_5 fs0 mla", children: [
26737
+ secondaryAction && /* @__PURE__ */ jsx195(Button, { ...secondaryAction, variant: "secondary", ...tid.secondaryAction }),
26738
+ primaryAction && /* @__PURE__ */ jsx195(Button, { ...primaryAction, ...tid.primaryAction })
26583
26739
  ] })
26584
26740
  ] })
26585
26741
  ] });
@@ -26587,14 +26743,14 @@ function RightPanePanel(props) {
26587
26743
 
26588
26744
  // src/components/Layout/ScrollableFooter.tsx
26589
26745
  import { createPortal as createPortal7 } from "react-dom";
26590
- import { Fragment as Fragment42, jsx as jsx195 } from "react/jsx-runtime";
26746
+ import { Fragment as Fragment43, jsx as jsx196 } from "react/jsx-runtime";
26591
26747
  function ScrollableFooter(props) {
26592
26748
  const { children } = props;
26593
26749
  const { footerEl } = useScrollableParent();
26594
26750
  if (!footerEl) {
26595
- return /* @__PURE__ */ jsx195(Fragment42, { children });
26751
+ return /* @__PURE__ */ jsx196(Fragment43, { children });
26596
26752
  }
26597
- return createPortal7(/* @__PURE__ */ jsx195(Fragment42, { children }), footerEl);
26753
+ return createPortal7(/* @__PURE__ */ jsx196(Fragment43, { children }), footerEl);
26598
26754
  }
26599
26755
 
26600
26756
  // src/components/Layout/TableReviewLayout/TableReviewLayout.tsx
@@ -26602,7 +26758,7 @@ import { AnimatePresence as AnimatePresence5, motion as motion5 } from "framer-m
26602
26758
  import { useEffect as useEffect30, useState as useState53 } from "react";
26603
26759
 
26604
26760
  // src/components/Layout/TableReviewLayout/SidePanel.tsx
26605
- import { jsx as jsx196, jsxs as jsxs102 } from "react/jsx-runtime";
26761
+ import { jsx as jsx197, jsxs as jsxs103 } from "react/jsx-runtime";
26606
26762
  function SidePanel(props) {
26607
26763
  const {
26608
26764
  title,
@@ -26612,19 +26768,19 @@ function SidePanel(props) {
26612
26768
  } = props;
26613
26769
  const tid = useTestIds(props, "sidePanel");
26614
26770
  const hasFooter = primaryAction || secondaryAction;
26615
- return /* @__PURE__ */ jsxs102("div", { className: "h100 df fdc oh", ...tid, children: [
26616
- /* @__PURE__ */ jsx196("div", { className: "pt3 pb3 pr3 pl3 fs0", ...tid.header, children: /* @__PURE__ */ jsx196("h2", { className: "fw6 fz_20px lh_28px mt0 mb0", ...tid.title, children: title }) }),
26617
- /* @__PURE__ */ jsx196("div", { className: "fg1 oya mh0", ...tid.body, children: content2 }),
26618
- hasFooter && /* @__PURE__ */ jsxs102("div", { className: "df g_2 jcfe pt3 pb3 pr3 pl3 fs0", ...tid.footer, children: [
26619
- secondaryAction && /* @__PURE__ */ jsx196(Button, { ...secondaryAction, variant: "secondaryBlack" }),
26620
- primaryAction && /* @__PURE__ */ jsx196(Button, { ...primaryAction })
26771
+ return /* @__PURE__ */ jsxs103("div", { className: "h100 df fdc oh", ...tid, children: [
26772
+ /* @__PURE__ */ jsx197("div", { className: "pt3 pb3 pr3 pl3 fs0", ...tid.header, children: /* @__PURE__ */ jsx197("h2", { className: "fw6 fz_20px lh_28px mt0 mb0", ...tid.title, children: title }) }),
26773
+ /* @__PURE__ */ jsx197("div", { className: "fg1 oya mh0", ...tid.body, children: content2 }),
26774
+ hasFooter && /* @__PURE__ */ jsxs103("div", { className: "df g_2 jcfe pt3 pb3 pr3 pl3 fs0", ...tid.footer, children: [
26775
+ secondaryAction && /* @__PURE__ */ jsx197(Button, { ...secondaryAction, variant: "secondaryBlack" }),
26776
+ primaryAction && /* @__PURE__ */ jsx197(Button, { ...primaryAction })
26621
26777
  ] })
26622
26778
  ] });
26623
26779
  }
26624
26780
 
26625
26781
  // src/components/Layout/TableReviewLayout/TableReviewLayout.tsx
26626
- import { trussProps as trussProps112, maybeCssVar as maybeCssVar51 } from "@homebound/truss/runtime";
26627
- import { jsx as jsx197, jsxs as jsxs103 } from "react/jsx-runtime";
26782
+ import { trussProps as trussProps113, maybeCssVar as maybeCssVar52 } from "@homebound/truss/runtime";
26783
+ import { jsx as jsx198, jsxs as jsxs104 } from "react/jsx-runtime";
26628
26784
  var defaultRightPaneWidth = 450;
26629
26785
  function TableReviewLayout(props) {
26630
26786
  const {
@@ -26650,29 +26806,29 @@ function TableReviewLayout(props) {
26650
26806
  let tableContent;
26651
26807
  if (isGridTableProps(tableProps)) {
26652
26808
  if (emptyState && !tableProps.rows.some((r) => r.kind !== "header")) {
26653
- tableContent = /* @__PURE__ */ jsx197("div", { className: "h100 df fdc aic jcc", children: emptyState });
26809
+ tableContent = /* @__PURE__ */ jsx198("div", { className: "h100 df fdc aic jcc", children: emptyState });
26654
26810
  } else {
26655
- tableContent = /* @__PURE__ */ jsx197(GridTable, { ...tableProps, style: {
26811
+ tableContent = /* @__PURE__ */ jsx198(GridTable, { ...tableProps, style: {
26656
26812
  allWhite: true,
26657
26813
  bordered: true
26658
26814
  }, stickyHeader: true });
26659
26815
  }
26660
26816
  } else if (emptyState) {
26661
- tableContent = /* @__PURE__ */ jsx197("div", { className: "h100 df fdc aic jcc", children: emptyState });
26817
+ tableContent = /* @__PURE__ */ jsx198("div", { className: "h100 df fdc aic jcc", children: emptyState });
26662
26818
  } else {
26663
- tableContent = /* @__PURE__ */ jsx197(QueryTable, { ...tableProps, style: {
26819
+ tableContent = /* @__PURE__ */ jsx198(QueryTable, { ...tableProps, style: {
26664
26820
  allWhite: true,
26665
26821
  bordered: true
26666
26822
  }, stickyHeader: true });
26667
26823
  }
26668
- return /* @__PURE__ */ jsxs103("div", { ...trussProps112({
26824
+ return /* @__PURE__ */ jsxs104("div", { ...trussProps113({
26669
26825
  position: "fixed",
26670
26826
  top: "top0",
26671
26827
  bottom: "bot_0",
26672
26828
  left: "l_0",
26673
26829
  right: "r_0",
26674
26830
  zIndex: ["z_var", {
26675
- "--zIndex": maybeCssVar51(zIndices.pageOverlay)
26831
+ "--zIndex": maybeCssVar52(zIndices.pageOverlay)
26676
26832
  }],
26677
26833
  backgroundColor: ["bgColor_var", {
26678
26834
  "--backgroundColor": "var(--b-surface)"
@@ -26680,16 +26836,16 @@ function TableReviewLayout(props) {
26680
26836
  display: "df",
26681
26837
  flexDirection: "fdc"
26682
26838
  }), ...tid, children: [
26683
- /* @__PURE__ */ jsxs103("header", { className: "pl3 pr3 pt3 pb2 fs0", ...tid.header, children: [
26684
- /* @__PURE__ */ jsx197(Toast, {}),
26685
- /* @__PURE__ */ jsxs103("div", { className: "df jcsb aic", children: [
26686
- /* @__PURE__ */ jsxs103("div", { children: [
26687
- breadCrumb && /* @__PURE__ */ jsx197(PageHeaderBreadcrumbs, { breadcrumb: breadCrumb }),
26688
- /* @__PURE__ */ jsx197("h1", { className: "fw6 fz_24px lh_32px mt1 mb0", ...tid.pageTitle, children: pageTitle })
26839
+ /* @__PURE__ */ jsxs104("header", { className: "pl3 pr3 pt3 pb2 fs0", ...tid.header, children: [
26840
+ /* @__PURE__ */ jsx198(Toast, {}),
26841
+ /* @__PURE__ */ jsxs104("div", { className: "df jcsb aic", children: [
26842
+ /* @__PURE__ */ jsxs104("div", { children: [
26843
+ breadCrumb && /* @__PURE__ */ jsx198(PageHeaderBreadcrumbs, { breadcrumb: breadCrumb }),
26844
+ /* @__PURE__ */ jsx198("h1", { className: "fw6 fz_24px lh_32px mt1 mb0", ...tid.pageTitle, children: pageTitle })
26689
26845
  ] }),
26690
- /* @__PURE__ */ jsx197(Button, { label: "Close", onClick: closeAction, ...tid.closeButton })
26846
+ /* @__PURE__ */ jsx198(Button, { label: "Close", onClick: closeAction, ...tid.closeButton })
26691
26847
  ] }),
26692
- /* @__PURE__ */ jsx197("div", { ...trussProps112({
26848
+ /* @__PURE__ */ jsx198("div", { ...trussProps113({
26693
26849
  fontWeight: "fw4",
26694
26850
  fontSize: "fz_14px",
26695
26851
  lineHeight: "lh_20px",
@@ -26699,8 +26855,8 @@ function TableReviewLayout(props) {
26699
26855
  marginTop: "mt2"
26700
26856
  }), ...tid.description, children: description })
26701
26857
  ] }),
26702
- /* @__PURE__ */ jsxs103("div", { className: "fg1 df mh0", ...tid.content, children: [
26703
- /* @__PURE__ */ jsx197("div", { ...trussProps112({
26858
+ /* @__PURE__ */ jsxs104("div", { className: "fg1 df mh0", ...tid.content, children: [
26859
+ /* @__PURE__ */ jsx198("div", { ...trussProps113({
26704
26860
  ...{
26705
26861
  flexGrow: "fg1",
26706
26862
  overflowY: "oya",
@@ -26713,7 +26869,7 @@ function TableReviewLayout(props) {
26713
26869
  } : {}
26714
26870
  }
26715
26871
  }), children: tableContent }),
26716
- /* @__PURE__ */ jsx197(AnimatePresence5, { children: isPanelVisible && panelContent && /* @__PURE__ */ jsxs103(motion5.div, { initial: {
26872
+ /* @__PURE__ */ jsx198(AnimatePresence5, { children: isPanelVisible && panelContent && /* @__PURE__ */ jsxs104(motion5.div, { initial: {
26717
26873
  width: 0
26718
26874
  }, animate: {
26719
26875
  width: rightPaneWidth
@@ -26723,9 +26879,9 @@ function TableReviewLayout(props) {
26723
26879
  ease: "linear",
26724
26880
  duration: 0.2
26725
26881
  }, className: "df fdc fs0 relative", children: [
26726
- /* @__PURE__ */ jsxs103("div", { className: "absolute tp_neg32px df fdc aic l_neg24px z1", children: [
26727
- /* @__PURE__ */ jsx197(IconButton, { bgColor: "--b-surface" /* Surface */, variant: "circle", icon: "x", inc: 3.5, onClick: handleClosePanel, ...tid.closePanelButton }),
26728
- /* @__PURE__ */ jsx197("div", { ...trussProps112({
26882
+ /* @__PURE__ */ jsxs104("div", { className: "absolute tp_neg32px df fdc aic l_neg24px z1", children: [
26883
+ /* @__PURE__ */ jsx198(IconButton, { bgColor: "--b-surface" /* Surface */, variant: "circle", icon: "x", inc: 3.5, onClick: handleClosePanel, ...tid.closePanelButton }),
26884
+ /* @__PURE__ */ jsx198("div", { ...trussProps113({
26729
26885
  width: "w_1px",
26730
26886
  backgroundColor: ["bgColor_var", {
26731
26887
  "--backgroundColor": "var(--b-field-border-default)"
@@ -26733,15 +26889,15 @@ function TableReviewLayout(props) {
26733
26889
  height: "vh100"
26734
26890
  }) })
26735
26891
  ] }),
26736
- /* @__PURE__ */ jsx197("div", { className: "fg1 oh mh0", children: /* @__PURE__ */ jsx197(SidePanel, { ...panelContent }) })
26892
+ /* @__PURE__ */ jsx198("div", { className: "fg1 oh mh0", children: /* @__PURE__ */ jsx198(SidePanel, { ...panelContent }) })
26737
26893
  ] }, "panel") })
26738
26894
  ] })
26739
26895
  ] });
26740
26896
  }
26741
26897
 
26742
26898
  // src/components/Logos/BeamLogo.tsx
26743
- import { trussProps as trussProps113, maybeCssVar as maybeCssVar52 } from "@homebound/truss/runtime";
26744
- import { jsx as jsx198, jsxs as jsxs104 } from "react/jsx-runtime";
26899
+ import { trussProps as trussProps114, maybeCssVar as maybeCssVar53 } from "@homebound/truss/runtime";
26900
+ import { jsx as jsx199, jsxs as jsxs105 } from "react/jsx-runtime";
26745
26901
  var __maybeInc23 = (inc) => {
26746
26902
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
26747
26903
  };
@@ -26751,31 +26907,31 @@ function BeamLogo(props) {
26751
26907
  width: width2 = "auto",
26752
26908
  height = "auto"
26753
26909
  } = props;
26754
- return /* @__PURE__ */ jsxs104("svg", { viewBox: "0 0 500 500", xmlns: "http://www.w3.org/2000/svg", ...trussProps113({
26910
+ return /* @__PURE__ */ jsxs105("svg", { viewBox: "0 0 500 500", xmlns: "http://www.w3.org/2000/svg", ...trussProps114({
26755
26911
  fill: ["fill_var", {
26756
- "--fill": maybeCssVar52(fill)
26912
+ "--fill": maybeCssVar53(fill)
26757
26913
  }],
26758
26914
  width: ["w_var", {
26759
- "--width": maybeCssVar52(__maybeInc23(width2))
26915
+ "--width": maybeCssVar53(__maybeInc23(width2))
26760
26916
  }],
26761
26917
  height: ["h_var", {
26762
- "--height": maybeCssVar52(__maybeInc23(height))
26918
+ "--height": maybeCssVar53(__maybeInc23(height))
26763
26919
  }]
26764
26920
  }), children: [
26765
- /* @__PURE__ */ jsx198("rect", { x: "10", y: "90", width: "32", height: "320" }),
26766
- /* @__PURE__ */ jsx198("rect", { x: "122", y: "172", width: "32", height: "158" }),
26767
- /* @__PURE__ */ jsx198("rect", { x: "346", y: "172", width: "32", height: "158" }),
26768
- /* @__PURE__ */ jsx198("rect", { x: "458", y: "90", width: "32", height: "320" }),
26769
- /* @__PURE__ */ jsx198("rect", { x: "10", y: "90", width: "480", height: "32" }),
26770
- /* @__PURE__ */ jsx198("rect", { x: "10", y: "378", width: "480", height: "32" }),
26771
- /* @__PURE__ */ jsx198("rect", { x: "10", y: "172", width: "480", height: "32" }),
26772
- /* @__PURE__ */ jsx198("rect", { x: "10", y: "298", width: "480", height: "32" })
26921
+ /* @__PURE__ */ jsx199("rect", { x: "10", y: "90", width: "32", height: "320" }),
26922
+ /* @__PURE__ */ jsx199("rect", { x: "122", y: "172", width: "32", height: "158" }),
26923
+ /* @__PURE__ */ jsx199("rect", { x: "346", y: "172", width: "32", height: "158" }),
26924
+ /* @__PURE__ */ jsx199("rect", { x: "458", y: "90", width: "32", height: "320" }),
26925
+ /* @__PURE__ */ jsx199("rect", { x: "10", y: "90", width: "480", height: "32" }),
26926
+ /* @__PURE__ */ jsx199("rect", { x: "10", y: "378", width: "480", height: "32" }),
26927
+ /* @__PURE__ */ jsx199("rect", { x: "10", y: "172", width: "480", height: "32" }),
26928
+ /* @__PURE__ */ jsx199("rect", { x: "10", y: "298", width: "480", height: "32" })
26773
26929
  ] });
26774
26930
  }
26775
26931
 
26776
26932
  // src/components/Logos/HomeboundLogo.tsx
26777
- import { trussProps as trussProps114, maybeCssVar as maybeCssVar53 } from "@homebound/truss/runtime";
26778
- import { jsx as jsx199 } from "react/jsx-runtime";
26933
+ import { trussProps as trussProps115, maybeCssVar as maybeCssVar54 } from "@homebound/truss/runtime";
26934
+ import { jsx as jsx200 } from "react/jsx-runtime";
26779
26935
  var __maybeInc24 = (inc) => {
26780
26936
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
26781
26937
  };
@@ -26785,24 +26941,24 @@ function HomeboundLogo(props) {
26785
26941
  width: width2 = "auto",
26786
26942
  height = "auto"
26787
26943
  } = props;
26788
- return /* @__PURE__ */ jsx199("svg", { viewBox: "0 0 158.1 97.6", xmlns: "http://www.w3.org/2000/svg", ...trussProps114({
26944
+ return /* @__PURE__ */ jsx200("svg", { viewBox: "0 0 158.1 97.6", xmlns: "http://www.w3.org/2000/svg", ...trussProps115({
26789
26945
  fill: ["fill_var", {
26790
- "--fill": maybeCssVar53(fill)
26946
+ "--fill": maybeCssVar54(fill)
26791
26947
  }],
26792
26948
  width: ["w_var", {
26793
- "--width": maybeCssVar53(__maybeInc24(width2))
26949
+ "--width": maybeCssVar54(__maybeInc24(width2))
26794
26950
  }],
26795
26951
  height: ["h_var", {
26796
- "--height": maybeCssVar53(__maybeInc24(height))
26952
+ "--height": maybeCssVar54(__maybeInc24(height))
26797
26953
  }]
26798
- }), children: /* @__PURE__ */ jsx199("path", { d: "M158.1,97.6H0.2L0,39.7L76.8,0l68,38.7l-3.1,5.3l-65-37L6.2,43.4l0.2,48h151.7V97.6z" }) });
26954
+ }), children: /* @__PURE__ */ jsx200("path", { d: "M158.1,97.6H0.2L0,39.7L76.8,0l68,38.7l-3.1,5.3l-65-37L6.2,43.4l0.2,48h151.7V97.6z" }) });
26799
26955
  }
26800
26956
 
26801
26957
  // src/components/MaxLines.tsx
26802
26958
  import { useLayoutEffect as useLayoutEffect10, useResizeObserver as useResizeObserver10 } from "@react-aria/utils";
26803
26959
  import { useCallback as useCallback36, useEffect as useEffect31, useRef as useRef62, useState as useState54 } from "react";
26804
- import { trussProps as trussProps115, maybeCssVar as maybeCssVar54 } from "@homebound/truss/runtime";
26805
- import { jsx as jsx200, jsxs as jsxs105 } from "react/jsx-runtime";
26960
+ import { trussProps as trussProps116, maybeCssVar as maybeCssVar55 } from "@homebound/truss/runtime";
26961
+ import { jsx as jsx201, jsxs as jsxs106 } from "react/jsx-runtime";
26806
26962
  function MaxLines({
26807
26963
  maxLines,
26808
26964
  children
@@ -26825,11 +26981,11 @@ function MaxLines({
26825
26981
  ref: elRef,
26826
26982
  onResize
26827
26983
  });
26828
- return /* @__PURE__ */ jsxs105("div", { children: [
26829
- /* @__PURE__ */ jsx200("div", { ref: elRef, ...trussProps115({
26984
+ return /* @__PURE__ */ jsxs106("div", { children: [
26985
+ /* @__PURE__ */ jsx201("div", { ref: elRef, ...trussProps116({
26830
26986
  ...!expanded ? {
26831
26987
  WebkitLineClamp: ["lineClamp_var", {
26832
- "--WebkitLineClamp": maybeCssVar54(maxLines)
26988
+ "--WebkitLineClamp": maybeCssVar55(maxLines)
26833
26989
  }],
26834
26990
  overflow: "oh",
26835
26991
  display: "d_negwebkit_box",
@@ -26837,13 +26993,13 @@ function MaxLines({
26837
26993
  textOverflow: "to_ellipsis"
26838
26994
  } : {}
26839
26995
  }), children }),
26840
- hasMore && /* @__PURE__ */ jsx200("button", { className: "db fw4 fz_14px lh_20px", onClick: () => setExpanded((prev) => !prev), children: expanded ? "Show Less" : "Show More" })
26996
+ hasMore && /* @__PURE__ */ jsx201("button", { className: "db fw4 fz_14px lh_20px", onClick: () => setExpanded((prev) => !prev), children: expanded ? "Show Less" : "Show More" })
26841
26997
  ] });
26842
26998
  }
26843
26999
 
26844
27000
  // src/components/Pagination.tsx
26845
- import { trussProps as trussProps116 } from "@homebound/truss/runtime";
26846
- import { jsx as jsx201, jsxs as jsxs106 } from "react/jsx-runtime";
27001
+ import { trussProps as trussProps117 } from "@homebound/truss/runtime";
27002
+ import { jsx as jsx202, jsxs as jsxs107 } from "react/jsx-runtime";
26847
27003
  var defaultPage = {
26848
27004
  offset: 0,
26849
27005
  limit: 100
@@ -26875,7 +27031,7 @@ function Pagination(props) {
26875
27031
  }
26876
27032
  }
26877
27033
  const tid = useTestIds(props, "pagination");
26878
- return /* @__PURE__ */ jsxs106("div", { ...trussProps116({
27034
+ return /* @__PURE__ */ jsxs107("div", { ...trussProps117({
26879
27035
  display: "df",
26880
27036
  borderColor: ["bc_var", {
26881
27037
  "--borderColor": "var(--b-surface-separator)"
@@ -26892,24 +27048,24 @@ function Pagination(props) {
26892
27048
  paddingRight: "pr2",
26893
27049
  paddingTop: "pt2"
26894
27050
  }), ...tid, children: [
26895
- /* @__PURE__ */ jsx201("div", { className: "df mta mba mr2", ...tid.pageSizeLabel, children: "Page size:" }),
26896
- /* @__PURE__ */ jsx201("div", { className: "w_78px", children: /* @__PURE__ */ jsx201(SelectField, { compact: true, label: "Page Size", labelStyle: "hidden", options: pageOptions, value: pageSize, onSelect: (val) => set({
27051
+ /* @__PURE__ */ jsx202("div", { className: "df mta mba mr2", ...tid.pageSizeLabel, children: "Page size:" }),
27052
+ /* @__PURE__ */ jsx202("div", { className: "w_78px", children: /* @__PURE__ */ jsx202(SelectField, { compact: true, label: "Page Size", labelStyle: "hidden", options: pageOptions, value: pageSize, onSelect: (val) => set({
26897
27053
  pageNumber: 1,
26898
27054
  pageSize: val
26899
27055
  }), autoSort: false, ...tid.pageSize }) }),
26900
- /* @__PURE__ */ jsxs106("div", { className: "mla mta mba df", children: [
26901
- /* @__PURE__ */ jsxs106("div", { className: "df mta mba mr2", ...tid.pageInfoLabel, children: [
27056
+ /* @__PURE__ */ jsxs107("div", { className: "mla mta mba df", children: [
27057
+ /* @__PURE__ */ jsxs107("div", { className: "df mta mba mr2", ...tid.pageInfoLabel, children: [
26902
27058
  first,
26903
27059
  " ",
26904
27060
  showLast ? `- ${last}` : "",
26905
27061
  " of ",
26906
27062
  totalCount
26907
27063
  ] }),
26908
- /* @__PURE__ */ jsx201(IconButton, { icon: "chevronLeft", color: hasPrevPage ? "--b-text-link-default" /* TextLinkDefault */ : "--b-surface-separator" /* SurfaceSeparator */, onClick: () => set({
27064
+ /* @__PURE__ */ jsx202(IconButton, { icon: "chevronLeft", color: hasPrevPage ? "--b-text-link-default" /* TextLinkDefault */ : "--b-surface-separator" /* SurfaceSeparator */, onClick: () => set({
26909
27065
  pageNumber: pageNumber - 1,
26910
27066
  pageSize
26911
27067
  }), disabled: !hasPrevPage, ...tid.previousIcon }),
26912
- /* @__PURE__ */ jsx201(IconButton, { icon: "chevronRight", color: hasNextPage ? "--b-text-link-default" /* TextLinkDefault */ : "--b-surface-separator" /* SurfaceSeparator */, onClick: () => set({
27068
+ /* @__PURE__ */ jsx202(IconButton, { icon: "chevronRight", color: hasNextPage ? "--b-text-link-default" /* TextLinkDefault */ : "--b-surface-separator" /* SurfaceSeparator */, onClick: () => set({
26913
27069
  pageNumber: pageNumber + 1,
26914
27070
  pageSize
26915
27071
  }), disabled: !hasNextPage, ...tid.nextIcon })
@@ -26930,69 +27086,6 @@ function toPageNumberSize(page) {
26930
27086
  };
26931
27087
  }
26932
27088
 
26933
- // src/components/Pills/SelectionSummaryPill/SelectionSummaryPill.tsx
26934
- import { useHover as useHover19 } from "react-aria";
26935
- import { trussProps as trussProps117, maybeCssVar as maybeCssVar55 } from "@homebound/truss/runtime";
26936
- import { jsx as jsx202, jsxs as jsxs107 } from "react/jsx-runtime";
26937
- function SelectionSummaryPill(props) {
26938
- const {
26939
- text,
26940
- onClick,
26941
- disabled = false,
26942
- __storyState
26943
- } = props;
26944
- const tid = useTestIds(props, "selectionSummaryPill");
26945
- const {
26946
- hoverProps,
26947
- isHovered: isHoveredFromEvents
26948
- } = useHover19({
26949
- isDisabled: !!disabled
26950
- });
26951
- const isHovered = __storyState?.hovered ?? isHoveredFromEvents;
26952
- return maybeTooltip({
26953
- title: resolveTooltip(disabled),
26954
- placement: "top",
26955
- children: /* @__PURE__ */ jsxs107("button", { type: "button", disabled: !!disabled, onClick, "aria-label": `Clear ${text}`, ...trussProps117(pillStyles2(!!disabled, isHovered)), ...hoverProps, ...tid, children: [
26956
- text,
26957
- /* @__PURE__ */ jsx202("span", { ...trussProps117({
26958
- color: ["color_var", {
26959
- "--color": maybeCssVar55(disabled ? "--b-on-surface-active-disabled" /* OnSurfaceActiveDisabled */ : "--b-on-surface-active" /* OnSurfaceActive */)
26960
- }]
26961
- }), ...tid.clear, children: "Clear" })
26962
- ] })
26963
- });
26964
- }
26965
- function pillStyles2(disabled, hovered) {
26966
- return {
26967
- fontWeight: "fw6",
26968
- fontSize: "fz_14px",
26969
- lineHeight: "lh_20px",
26970
- display: "dif",
26971
- alignItems: "aic",
26972
- gap: "g_1",
26973
- whiteSpace: "wsnw",
26974
- borderStyle: "bss",
26975
- borderWidth: "bw1",
26976
- borderRadius: "brPill",
26977
- paddingLeft: "pl_15px",
26978
- paddingRight: "pr_15px",
26979
- paddingTop: "pt_7px",
26980
- paddingBottom: "pb_7px",
26981
- borderColor: ["bc_var", {
26982
- "--borderColor": "var(--b-surface-active-border)"
26983
- }],
26984
- color: ["color_var", {
26985
- "--color": maybeCssVar55(disabled ? "--b-on-surface-active-disabled" /* OnSurfaceActiveDisabled */ : "rgba(36, 36, 36, 1)" /* Gray900 */)
26986
- }],
26987
- backgroundColor: ["bgColor_var", {
26988
- "--backgroundColor": maybeCssVar55(hovered ? "--b-surface-active-hover" /* SurfaceActiveHover */ : "--b-surface-active" /* SurfaceActive */)
26989
- }],
26990
- ...disabled ? {
26991
- cursor: "cur_not_allowed"
26992
- } : {}
26993
- };
26994
- }
26995
-
26996
27089
  // src/components/ScrollShadows.tsx
26997
27090
  import { useResizeObserver as useResizeObserver11 } from "@react-aria/utils";
26998
27091
  import { useCallback as useCallback37, useMemo as useMemo48, useRef as useRef63, useState as useState55 } from "react";
@@ -27346,7 +27439,7 @@ function useAppNavGroupExpanded(linkGroup) {
27346
27439
 
27347
27440
  // src/components/AppNav/AppNavGroup.tsx
27348
27441
  import { trussProps as trussProps120, maybeCssVar as maybeCssVar57 } from "@homebound/truss/runtime";
27349
- import { Fragment as Fragment43, jsx as jsx205, jsxs as jsxs110 } from "react/jsx-runtime";
27442
+ import { Fragment as Fragment44, jsx as jsx205, jsxs as jsxs110 } from "react/jsx-runtime";
27350
27443
  var __maybeInc25 = (inc) => {
27351
27444
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
27352
27445
  };
@@ -27357,7 +27450,7 @@ function AppNavGroupView(props) {
27357
27450
  } = props;
27358
27451
  const tid = useTestIds(props, "linkGroup");
27359
27452
  if (panelCollapsed) {
27360
- return /* @__PURE__ */ jsx205(Fragment43, { children: appNavLinkGroupLinks(linkGroup).map((link) => /* @__PURE__ */ jsx205(NavLink, { variant: "side", ...link, iconOnly: !!link.icon, ...tid[`link_${camelCase6(link.label)}`] }, link.label)) });
27453
+ return /* @__PURE__ */ jsx205(Fragment44, { children: appNavLinkGroupLinks(linkGroup).map((link) => /* @__PURE__ */ jsx205(NavLink, { variant: "side", ...link, iconOnly: !!link.icon, ...tid[`link_${camelCase6(link.label)}`] }, link.label)) });
27361
27454
  }
27362
27455
  return /* @__PURE__ */ jsx205(AppNavGroupDisclosure, { ...props });
27363
27456
  }
@@ -27477,11 +27570,11 @@ function AppNavSectionView(props) {
27477
27570
  }
27478
27571
 
27479
27572
  // src/components/AppNav/AppNavItems.tsx
27480
- import { Fragment as Fragment44, jsx as jsx208 } from "react/jsx-runtime";
27573
+ import { Fragment as Fragment45, jsx as jsx208 } from "react/jsx-runtime";
27481
27574
  function AppNavItems(props) {
27482
27575
  const { items, variant = "side", panelCollapsed = false, nested = false } = props;
27483
27576
  const tid = useTestIds(props, "appNav");
27484
- return /* @__PURE__ */ jsx208(Fragment44, { children: items.map((item, idx) => {
27577
+ return /* @__PURE__ */ jsx208(Fragment45, { children: items.map((item, idx) => {
27485
27578
  if (isAppNavLink(item)) {
27486
27579
  return /* @__PURE__ */ jsx208(
27487
27580
  NavLink,
@@ -27845,7 +27938,7 @@ function StepIcon({
27845
27938
  import { useRef as useRef67 } from "react";
27846
27939
  import { mergeProps as mergeProps33, useButton as useButton13, useFocusRing as useFocusRing18, useHover as useHover22, VisuallyHidden as VisuallyHidden10 } from "react-aria";
27847
27940
  import { trussProps as trussProps124 } from "@homebound/truss/runtime";
27848
- import { Fragment as Fragment45, jsx as jsx212, jsxs as jsxs114 } from "react/jsx-runtime";
27941
+ import { Fragment as Fragment46, jsx as jsx212, jsxs as jsxs114 } from "react/jsx-runtime";
27849
27942
  function StepperTab(props) {
27850
27943
  const {
27851
27944
  label,
@@ -27884,7 +27977,7 @@ function StepperTab(props) {
27884
27977
  ...disabled ? stepperTabStyles.disabledStyles : {},
27885
27978
  ...isFocusVisible ? stepperTabStyles.focusRingStyles : {}
27886
27979
  }), ...tid[defaultTestId(value)], children: [
27887
- !collapsed && /* @__PURE__ */ jsxs114(Fragment45, { children: [
27980
+ !collapsed && /* @__PURE__ */ jsxs114(Fragment46, { children: [
27888
27981
  /* @__PURE__ */ jsxs114("span", { className: "dg jic mw0", children: [
27889
27982
  /* @__PURE__ */ jsx212("span", { className: "fw6 fz_14px lh_20px vh ga_1_1 oh d_negwebkit_box wbo_vertical to_ellipsis wlc_1 wbba", "aria-hidden": true, children: label }),
27890
27983
  /* @__PURE__ */ jsx212("span", { ...trussProps124({
@@ -28097,7 +28190,7 @@ function isStructuredProps(props) {
28097
28190
  // src/components/SuperDrawer/SuperDrawerContent.tsx
28098
28191
  import { motion as motion6 } from "framer-motion";
28099
28192
  import { trussProps as trussProps127, mergeProps as mergeProps34 } from "@homebound/truss/runtime";
28100
- import { Fragment as Fragment46, jsx as jsx215, jsxs as jsxs116 } from "react/jsx-runtime";
28193
+ import { Fragment as Fragment47, jsx as jsx215, jsxs as jsxs116 } from "react/jsx-runtime";
28101
28194
  var SuperDrawerContent = ({
28102
28195
  children,
28103
28196
  banner,
@@ -28160,7 +28253,7 @@ var SuperDrawerContent = ({
28160
28253
  }) }, "content");
28161
28254
  }
28162
28255
  }
28163
- return /* @__PURE__ */ jsxs116(Fragment46, { children: [
28256
+ return /* @__PURE__ */ jsxs116(Fragment47, { children: [
28164
28257
  wrapWithMotionAndMaybeBack(children),
28165
28258
  actions && /* @__PURE__ */ jsx215("footer", { ...trussProps127({
28166
28259
  borderTopStyle: "bts_solid",
@@ -28791,7 +28884,7 @@ var BaseFilter = class {
28791
28884
  };
28792
28885
 
28793
28886
  // src/components/Filters/DateFilter.tsx
28794
- import { Fragment as Fragment47, jsx as jsx221, jsxs as jsxs120 } from "react/jsx-runtime";
28887
+ import { Fragment as Fragment48, jsx as jsx221, jsxs as jsxs120 } from "react/jsx-runtime";
28795
28888
  function dateFilter(props) {
28796
28889
  return (key) => new DateFilter(key, props);
28797
28890
  }
@@ -28813,7 +28906,7 @@ var DateFilter = class extends BaseFilter {
28813
28906
  }
28814
28907
  render(value, setValue, tid, inModal, vertical) {
28815
28908
  const { label, operations, getOperationValue, getOperationLabel, defaultValue } = this.props;
28816
- return /* @__PURE__ */ jsxs120(Fragment47, { children: [
28909
+ return /* @__PURE__ */ jsxs120(Fragment48, { children: [
28817
28910
  vertical && /* @__PURE__ */ jsx221(Label, { label }),
28818
28911
  /* @__PURE__ */ jsxs120(CompoundField, { children: [
28819
28912
  /* @__PURE__ */ jsx221(
@@ -28862,7 +28955,7 @@ function isDateFilterValue(value) {
28862
28955
  }
28863
28956
 
28864
28957
  // src/components/Filters/DateRangeFilter.tsx
28865
- import { Fragment as Fragment48, jsx as jsx222, jsxs as jsxs121 } from "react/jsx-runtime";
28958
+ import { Fragment as Fragment49, jsx as jsx222, jsxs as jsxs121 } from "react/jsx-runtime";
28866
28959
  function dateRangeFilter(props) {
28867
28960
  return (key) => new DateRangeFilter(key, props);
28868
28961
  }
@@ -28884,7 +28977,7 @@ var DateRangeFilter = class extends BaseFilter {
28884
28977
  }
28885
28978
  render(value, setValue, tid, inModal, vertical) {
28886
28979
  const { label, placeholderText, disabledDays, testFieldLabel, defaultValue } = this.props;
28887
- return /* @__PURE__ */ jsxs121(Fragment48, { children: [
28980
+ return /* @__PURE__ */ jsxs121(Fragment49, { children: [
28888
28981
  vertical && /* @__PURE__ */ jsx222(Label, { label }),
28889
28982
  /* @__PURE__ */ jsx222(
28890
28983
  DateRangeField,
@@ -28999,7 +29092,7 @@ var MultiFilter = class extends BaseFilter {
28999
29092
  };
29000
29093
 
29001
29094
  // src/components/Filters/NumberRangeFilter.tsx
29002
- import { Fragment as Fragment49, jsx as jsx224, jsxs as jsxs122 } from "react/jsx-runtime";
29095
+ import { Fragment as Fragment50, jsx as jsx224, jsxs as jsxs122 } from "react/jsx-runtime";
29003
29096
  function numberRangeFilter(props) {
29004
29097
  return (key) => new NumberRangeFilter(key, props);
29005
29098
  }
@@ -29016,7 +29109,7 @@ var NumberRangeFilter = class extends BaseFilter {
29016
29109
  } = this.props;
29017
29110
  const min = value?.min ?? void 0;
29018
29111
  const max = value?.max ?? void 0;
29019
- return /* @__PURE__ */ jsxs122(Fragment49, { children: [
29112
+ return /* @__PURE__ */ jsxs122(Fragment50, { children: [
29020
29113
  vertical && /* @__PURE__ */ jsxs122("div", { ...tid, children: [
29021
29114
  /* @__PURE__ */ jsx224(Label, { label }),
29022
29115
  /* @__PURE__ */ jsx224("div", { className: "pb1", children: /* @__PURE__ */ jsx224(NumberField, { labelStyle: "inline", clearable: true, label: "Min", value: min, type: numberFieldType, numberFormatOptions, onChange: (minVal) => {
@@ -29510,7 +29603,7 @@ function useRegisterMobileSubNav(content2) {
29510
29603
 
29511
29604
  // src/components/Navbar/NavbarMobileMenu.tsx
29512
29605
  import { trussProps as trussProps134, mergeProps as mergeProps38, maybeCssVar as maybeCssVar62 } from "@homebound/truss/runtime";
29513
- import { Fragment as Fragment50, jsx as jsx235, jsxs as jsxs124 } from "react/jsx-runtime";
29606
+ import { Fragment as Fragment51, jsx as jsx235, jsxs as jsxs124 } from "react/jsx-runtime";
29514
29607
  function NavbarMobileMenu(props) {
29515
29608
  const {
29516
29609
  items
@@ -29530,7 +29623,7 @@ function NavbarMobileMenu(props) {
29530
29623
  useEffect37(() => {
29531
29624
  close();
29532
29625
  }, [pathname, search]);
29533
- return /* @__PURE__ */ jsxs124(Fragment50, { children: [
29626
+ return /* @__PURE__ */ jsxs124(Fragment51, { children: [
29534
29627
  /* @__PURE__ */ jsx235(IconButton, { icon: isOpen2 ? "menuClose" : "menu", color: "--b-on-surface-muted" /* OnSurfaceMuted */, label: isOpen2 ? "Close navigation" : "Open navigation", onClick: () => {
29535
29628
  if (isOpen2) {
29536
29629
  close();
@@ -29559,7 +29652,7 @@ function NavbarMobileDrawer({
29559
29652
  top: bannerHeightPx
29560
29653
  };
29561
29654
  const showSubLevel = mobileSubNav != null && level === "sub";
29562
- return /* @__PURE__ */ jsxs124(Fragment50, { children: [
29655
+ return /* @__PURE__ */ jsxs124(Fragment51, { children: [
29563
29656
  /* @__PURE__ */ jsx235(motion7.div, { ...mergeProps38(void 0, overlayTopStyle, {
29564
29657
  position: "fixed",
29565
29658
  right: "r_0",
@@ -29880,13 +29973,13 @@ import { mergeProps as mergeProps39, useFocusRing as useFocusRing21, useHover as
29880
29973
  import { matchPath } from "react-router";
29881
29974
  import { Link as Link7, useLocation as useLocation2 } from "react-router-dom";
29882
29975
  import { trussProps as trussProps136, maybeCssVar as maybeCssVar63 } from "@homebound/truss/runtime";
29883
- import { Fragment as Fragment51, jsx as jsx237, jsxs as jsxs126 } from "react/jsx-runtime";
29976
+ import { Fragment as Fragment52, jsx as jsx237, jsxs as jsxs126 } from "react/jsx-runtime";
29884
29977
  function TabsWithContent(props) {
29885
29978
  const {
29886
29979
  omitTopSpacing = false,
29887
29980
  ...tabProps
29888
29981
  } = props;
29889
- return /* @__PURE__ */ jsxs126(Fragment51, { children: [
29982
+ return /* @__PURE__ */ jsxs126(Fragment52, { children: [
29890
29983
  /* @__PURE__ */ jsx237(Tabs, { ...tabProps }),
29891
29984
  /* @__PURE__ */ jsx237(TabContent, { ...tabProps, omitTopSpacing: omitTopSpacing || hideTabs(props) })
29892
29985
  ] });
@@ -30063,7 +30156,7 @@ function TabImpl(props) {
30063
30156
  }
30064
30157
  });
30065
30158
  const decoration = aiMode ? /* @__PURE__ */ jsx237(Tag, { text: "Tab has AI proposals ready for review", preventTooltip: true, icon: "aiStar", type: "ai", variant: "primary", iconOnly: true, ...tid.aiTag }) : icon ? /* @__PURE__ */ jsx237(Icon, { icon }) : endAdornment;
30066
- const tabLabel = /* @__PURE__ */ jsxs126(Fragment51, { children: [
30159
+ const tabLabel = /* @__PURE__ */ jsxs126(Fragment52, { children: [
30067
30160
  label,
30068
30161
  decoration && /* @__PURE__ */ jsx237("span", { className: "ml1 df aic", children: decoration })
30069
30162
  ] });
@@ -30443,7 +30536,7 @@ import { trussProps as trussProps141, maybeCssVar as maybeCssVar66 } from "@home
30443
30536
  import { useRef as useRef72 } from "react";
30444
30537
  import { mergeProps as mergeProps43, useCheckboxGroupItem as useCheckboxGroupItem4, useFocusRing as useFocusRing22, useRadio as useRadio3, VisuallyHidden as VisuallyHidden11 } from "react-aria";
30445
30538
  import { trussProps as trussProps140 } from "@homebound/truss/runtime";
30446
- import { Fragment as Fragment52, jsx as jsx242, jsxs as jsxs130 } from "react/jsx-runtime";
30539
+ import { Fragment as Fragment53, jsx as jsx242, jsxs as jsxs130 } from "react/jsx-runtime";
30447
30540
  function FormSectionChild(props) {
30448
30541
  const {
30449
30542
  title,
@@ -30486,7 +30579,7 @@ function FormSectionChild(props) {
30486
30579
  borderStyle: "lot_bsn",
30487
30580
  borderWidth: "lot_bw_0"
30488
30581
  }), ...tid, children: [
30489
- /* @__PURE__ */ jsx242(ContentHeader, { ...tid.header, title, description, actions, level: 4, rightSlotLead: tag && /* @__PURE__ */ jsx242(Tag, { ...tag, ...tid.tag }), startAdornment: isDraggable || control ? /* @__PURE__ */ jsxs130(Fragment52, { children: [
30582
+ /* @__PURE__ */ jsx242(ContentHeader, { ...tid.header, title, description, actions, level: 4, rightSlotLead: tag && /* @__PURE__ */ jsx242(Tag, { ...tag, ...tid.tag }), startAdornment: isDraggable || control ? /* @__PURE__ */ jsxs130(Fragment53, { children: [
30490
30583
  isDraggable && /* @__PURE__ */ jsx242(DnDGridItemHandle, { dragHandleProps, icon: "drag", compact: true }),
30491
30584
  control
30492
30585
  ] }) : void 0 }),
@@ -31139,7 +31232,7 @@ function BaseHeader(props) {
31139
31232
 
31140
31233
  // src/components/Headers/PageHeader.tsx
31141
31234
  import { trussProps as trussProps145 } from "@homebound/truss/runtime";
31142
- import { Fragment as Fragment53, jsx as jsx249, jsxs as jsxs135 } from "react/jsx-runtime";
31235
+ import { Fragment as Fragment54, jsx as jsx249, jsxs as jsxs135 } from "react/jsx-runtime";
31143
31236
  function PageHeader2(props) {
31144
31237
  const {
31145
31238
  tabs,
@@ -31159,7 +31252,7 @@ function PageHeader2(props) {
31159
31252
  /* @__PURE__ */ jsx249(AutoSaveIndicator, { hideOnIdle: true }),
31160
31253
  rightSlotActions.length > 0 && /* @__PURE__ */ jsx249(HeaderActions, { actions: rightSlotActions, collapseOnSm: true }),
31161
31254
  rightSlot
31162
- ] }), bottomSlot: (bottomSlotActions.length > 0 || tabs) && /* @__PURE__ */ jsxs135(Fragment53, { children: [
31255
+ ] }), bottomSlot: (bottomSlotActions.length > 0 || tabs) && /* @__PURE__ */ jsxs135(Fragment54, { children: [
31163
31256
  bottomSlotActions.length > 0 && /* @__PURE__ */ jsx249("div", { ...trussProps145({
31164
31257
  ...pageContentPaddingX,
31165
31258
  ...{
@@ -31392,7 +31485,7 @@ import { useEffect as useEffect41, useRef as useRef77 } from "react";
31392
31485
  import { useBlocker } from "react-router-dom";
31393
31486
  import { jsx as jsx255 } from "react/jsx-runtime";
31394
31487
  function useUnsavedChangesGuard(options) {
31395
- const { isDirty, allowNavigation, onCancel } = options;
31488
+ const { isDirty, allowNavigation, onCancel, destructiveAction } = options;
31396
31489
  const { openModal } = useModal();
31397
31490
  const isDirtyRef = useRef77(isDirty);
31398
31491
  isDirtyRef.current = isDirty;
@@ -31429,8 +31522,39 @@ function useUnsavedChangesGuard(options) {
31429
31522
  content: /* @__PURE__ */ jsx255(ConfirmCloseModal, { onClose: () => confirmCancel(e) })
31430
31523
  });
31431
31524
  };
31525
+ const onDestructiveActionClick = destructiveAction ? (e) => {
31526
+ const {
31527
+ label = "Remove",
31528
+ confirmTitle = "Are you sure?",
31529
+ confirmMessage = "This can't be undone.",
31530
+ onConfirm
31531
+ } = destructiveAction;
31532
+ openModal({
31533
+ allowClosing: false,
31534
+ content: /* @__PURE__ */ jsx255(
31535
+ ConfirmCloseModal,
31536
+ {
31537
+ title: confirmTitle,
31538
+ message: confirmMessage,
31539
+ discardText: "Cancel",
31540
+ onClose: () => {
31541
+ },
31542
+ continueText: label,
31543
+ isDestructive: true,
31544
+ onContinue: async () => {
31545
+ allowCancelNavigationRef.current = true;
31546
+ try {
31547
+ await onConfirm(e);
31548
+ } finally {
31549
+ allowCancelNavigationRef.current = false;
31550
+ }
31551
+ }
31552
+ }
31553
+ )
31554
+ });
31555
+ } : void 0;
31432
31556
  const navigationBlocker = blocker.state === "blocked" ? { proceed: () => blocker.proceed?.(), cancelNavigation: () => blocker.reset?.() } : void 0;
31433
- return { onCancelClick, navigationBlocker };
31557
+ return { onCancelClick, onDestructiveActionClick, navigationBlocker };
31434
31558
  }
31435
31559
  function UnsavedChangesNavigationModal(props) {
31436
31560
  const { proceed, cancelNavigation } = props;
@@ -31451,6 +31575,7 @@ function WorkflowActions(props) {
31451
31575
  const {
31452
31576
  onCancel,
31453
31577
  onSaveAndExit,
31578
+ destructiveAction,
31454
31579
  completeLabel,
31455
31580
  onComplete,
31456
31581
  primaryDisabled,
@@ -31469,6 +31594,7 @@ function WorkflowActions(props) {
31469
31594
  /* @__PURE__ */ jsxs137("div", { className: "df aic g_1", children: [
31470
31595
  /* @__PURE__ */ jsx256(Button, { label: "Cancel", variant: "quaternary", onClick: onCancel }),
31471
31596
  onSaveAndExit && /* @__PURE__ */ jsx256(Button, { label: "Save & Exit", variant: "secondary", onClick: onSaveAndExit }),
31597
+ destructiveAction && /* @__PURE__ */ jsx256(Button, { label: destructiveAction.label ?? "Remove", variant: "danger", onClick: destructiveAction.onConfirm }),
31472
31598
  isLastStep ? /* @__PURE__ */ jsx256(Button, { label: completeLabel, variant: primaryVariant, onClick: onComplete, disabled: primaryDisabled }) : /* @__PURE__ */ jsx256(Button, { label: "Continue", variant: primaryVariant, onClick: async () => {
31473
31599
  await onContinue?.();
31474
31600
  }, disabled: primaryDisabled })
@@ -31494,6 +31620,7 @@ function WorkflowPageLayout(props) {
31494
31620
  documentTitleSuffix,
31495
31621
  breadcrumbs,
31496
31622
  onCancel,
31623
+ destructiveAction,
31497
31624
  rightPaneTriggers,
31498
31625
  banner: bannerProp,
31499
31626
  ...actionProps
@@ -31508,13 +31635,18 @@ function WorkflowPageLayout(props) {
31508
31635
  } = useBreakpoint();
31509
31636
  const {
31510
31637
  onCancelClick,
31638
+ onDestructiveActionClick,
31511
31639
  navigationBlocker
31512
31640
  } = useUnsavedChangesGuard({
31513
31641
  isDirty,
31514
31642
  allowNavigation,
31515
- onCancel
31643
+ onCancel,
31644
+ destructiveAction
31516
31645
  });
31517
- const actions = /* @__PURE__ */ jsx257(WorkflowActions, { ...actionProps, aiMode, onCancel: onCancelClick });
31646
+ const actions = /* @__PURE__ */ jsx257(WorkflowActions, { ...actionProps, aiMode, onCancel: onCancelClick, destructiveAction: destructiveAction && {
31647
+ ...destructiveAction,
31648
+ onConfirm: onDestructiveActionClick
31649
+ } });
31518
31650
  const triggers = rightPaneTriggers ?? [];
31519
31651
  const pageTriggers = triggers.length > 0 ? /* @__PURE__ */ jsx257(WorkflowPageRightPaneTriggers, { triggers }) : void 0;
31520
31652
  const headerMetricsRef = useRef78(null);
@@ -31632,6 +31764,7 @@ function FocusedFormLayout(props) {
31632
31764
  completeLabel,
31633
31765
  onComplete,
31634
31766
  onSaveAndExit,
31767
+ destructiveAction,
31635
31768
  primaryDisabled,
31636
31769
  isDirty,
31637
31770
  allowNavigation,
@@ -31653,6 +31786,7 @@ function FocusedFormLayout(props) {
31653
31786
  allowNavigation,
31654
31787
  onCancel,
31655
31788
  onSaveAndExit,
31789
+ destructiveAction,
31656
31790
  completeLabel,
31657
31791
  onComplete,
31658
31792
  primaryDisabled,
@@ -31673,6 +31807,7 @@ function StepperLayout(props) {
31673
31807
  completeLabel,
31674
31808
  onComplete,
31675
31809
  onSaveAndExit,
31810
+ destructiveAction,
31676
31811
  isDirty,
31677
31812
  allowNavigation,
31678
31813
  aiMode,
@@ -31710,6 +31845,7 @@ function StepperLayout(props) {
31710
31845
  },
31711
31846
  onCancel,
31712
31847
  onSaveAndExit,
31848
+ destructiveAction,
31713
31849
  completeLabel,
31714
31850
  onComplete,
31715
31851
  primaryDisabled: activeStep?.primaryDisabled,
@@ -31898,7 +32034,7 @@ function useFilter4({ filterDefs }) {
31898
32034
  import { useCallback as useCallback49, useRef as useRef79 } from "react";
31899
32035
  import { useComboBox as useComboBox3, useOverlayPosition as useOverlayPosition6 } from "react-aria";
31900
32036
  import { Item as Item5, useComboBoxState as useComboBoxState3 } from "react-stately";
31901
- import { Fragment as Fragment54, jsx as jsx264, jsxs as jsxs141 } from "react/jsx-runtime";
32037
+ import { Fragment as Fragment55, jsx as jsx264, jsxs as jsxs141 } from "react/jsx-runtime";
31902
32038
  function Autocomplete(props) {
31903
32039
  const {
31904
32040
  onSelect,
@@ -31969,7 +32105,7 @@ function Autocomplete(props) {
31969
32105
  // Ensures the menu never gets too small.
31970
32106
  minWidth: 200
31971
32107
  };
31972
- return /* @__PURE__ */ jsxs141(Fragment54, { children: [
32108
+ return /* @__PURE__ */ jsxs141(Fragment55, { children: [
31973
32109
  /* @__PURE__ */ jsx264(
31974
32110
  TextFieldBase,
31975
32111
  {
@@ -32275,6 +32411,7 @@ export {
32275
32411
  NavbarLayout,
32276
32412
  NumberField,
32277
32413
  OpenModal,
32414
+ OriginalValue,
32278
32415
  PageBanner,
32279
32416
  PageHeaderLayout,
32280
32417
  Pagination,