@homebound/beam 4.36.0 → 4.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -130,6 +130,7 @@ __export(index_exports, {
130
130
  FormSectionChild: () => FormSectionChild,
131
131
  FormSectionLayout: () => FormSectionLayout,
132
132
  FullBleed: () => FullBleed,
133
+ GROUP_HEADER: () => GROUP_HEADER,
133
134
  GridTable: () => GridTable,
134
135
  GridTableEmptyState: () => GridTableEmptyState,
135
136
  GridTableLayout: () => GridTableLayout,
@@ -335,6 +336,7 @@ __export(index_exports, {
335
336
  getNavLinkStyles: () => getNavLinkStyles,
336
337
  getTableRefWidthStyles: () => getTableRefWidthStyles,
337
338
  getTableStyles: () => getTableStyles,
339
+ groupColumns: () => groupColumns,
338
340
  headerContentPaddingX: () => headerContentPaddingX,
339
341
  headerRenderFn: () => headerRenderFn,
340
342
  hoverStyles: () => hoverStyles,
@@ -395,6 +397,7 @@ __export(index_exports, {
395
397
  shouldShowEnvironmentBanner: () => shouldShowEnvironmentBanner,
396
398
  shouldSkipScrollTo: () => shouldSkipScrollTo,
397
399
  simpleDataRows: () => simpleDataRows,
400
+ simpleGroupHeader: () => simpleGroupHeader,
398
401
  simpleHeader: () => simpleHeader,
399
402
  singleFilter: () => singleFilter,
400
403
  sortFn: () => sortFn,
@@ -6449,7 +6452,10 @@ var nonKindGridColumnKeys = [
6449
6452
  "initExpanded",
6450
6453
  "hideOnExpand",
6451
6454
  "showIn",
6452
- "tooltip"
6455
+ "tooltip",
6456
+ "groupId",
6457
+ "groupLabel",
6458
+ "bgColor"
6453
6459
  ];
6454
6460
 
6455
6461
  // src/components/Table/components/CollapseToggle.tsx
@@ -7089,6 +7095,25 @@ function memoizedTableStyles() {
7089
7095
  "--boxShadow": (0, import_runtime10.maybeCssVar)(insetSeparatorCorner)
7090
7096
  }]
7091
7097
  },
7098
+ groupHeaderCss: {
7099
+ backgroundColor: ["bgColor_var", {
7100
+ "--backgroundColor": "var(--b-surface)"
7101
+ }],
7102
+ color: ["color_var", {
7103
+ "--color": "var(--b-on-surface)"
7104
+ }],
7105
+ fontWeight: "fw6",
7106
+ fontSize: "fz_14px",
7107
+ lineHeight: "lh_20px",
7108
+ whiteSpace: "wsn",
7109
+ height: "ha",
7110
+ paddingLeft: "pl_12px",
7111
+ paddingRight: "pr_12px",
7112
+ paddingTop: "pt_8px",
7113
+ paddingBottom: "pb0",
7114
+ boxShadow: "bsh0",
7115
+ borderBottomWidth: "bbw_0"
7116
+ },
7092
7117
  cellCss: {
7093
7118
  ...{
7094
7119
  ...__typography[cellTypography] ?? {},
@@ -7719,7 +7744,7 @@ var import_jsx_runtime14 = require("react/jsx-runtime");
7719
7744
  var __maybeInc4 = (inc) => {
7720
7745
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
7721
7746
  };
7722
- function toContent(maybeContent, isHeader, canSortColumn, isClientSideSorting, style, as, alignment, column2, isExpandableHeader, isExpandable, minStickyLeftOffset, isKeptSelectedRow) {
7747
+ function toContent(maybeContent, isHeader, canSortColumn, isClientSideSorting, style, as, alignment, column2, isExpandableHeader, isGroupHeader, isExpandable, minStickyLeftOffset, isKeptSelectedRow) {
7723
7748
  if (isKeptSelectedRow && column2.id === "beamCollapseColumn") {
7724
7749
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, {});
7725
7750
  }
@@ -7748,9 +7773,14 @@ function toContent(maybeContent, isHeader, canSortColumn, isClientSideSorting, s
7748
7773
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SortHeader, { content: content2, iconOnLeft: alignment === "right", sortKey: column2.serverSideSortKey ?? column2.id, tooltipEl });
7749
7774
  } else if (content2 && typeof content2 === "string" && isExpandableHeader && isExpandable) {
7750
7775
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ExpandableHeader, { title: content2, column: column2, minStickyLeftOffset, as, tooltipEl });
7776
+ } else if (content2 && typeof content2 === "string" && isGroupHeader) {
7777
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
7778
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "oh d_negwebkit_box wbo_vertical to_ellipsis wlc_2 mwminc", children: content2 }),
7779
+ tooltipEl
7780
+ ] });
7751
7781
  } else if (content2 && typeof content2 === "string" && isExpandableHeader) {
7752
7782
  return (
7753
- // This is the expandable header row, but not an expandable header cell. Styling it similarly in height & alignment to match the expandable header cell.
7783
+ // Expandable-header cells that do not expand match the expandable header cell height.
7754
7784
  /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { ...(0, import_runtime13.trussProps)({
7755
7785
  display: "df",
7756
7786
  alignItems: "aic",
@@ -7772,7 +7802,7 @@ function toContent(maybeContent, isHeader, canSortColumn, isClientSideSorting, s
7772
7802
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "wsnw oh to_ellipsis mw0", title: content2, children: content2 }),
7773
7803
  tooltipEl
7774
7804
  ] });
7775
- } else if (!isHeader && !isExpandableHeader && style.emptyCell && isContentEmpty(content2)) {
7805
+ } else if (!isHeader && !isExpandableHeader && !isGroupHeader && style.emptyCell && isContentEmpty(content2)) {
7776
7806
  return style.emptyCell;
7777
7807
  }
7778
7808
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
@@ -7886,8 +7916,9 @@ function matchesFilter(maybeContent, filter) {
7886
7916
  var HEADER = "header";
7887
7917
  var TOTALS = "totals";
7888
7918
  var EXPANDABLE_HEADER = "expandableHeader";
7919
+ var GROUP_HEADER = "groupHeader";
7889
7920
  var KEPT_GROUP = "keptGroup";
7890
- var reservedRowKinds = [HEADER, TOTALS, EXPANDABLE_HEADER, KEPT_GROUP];
7921
+ var reservedRowKinds = [HEADER, TOTALS, EXPANDABLE_HEADER, GROUP_HEADER, KEPT_GROUP];
7891
7922
  function loadArrayOrUndefined(key) {
7892
7923
  try {
7893
7924
  const ids = sessionStorage.getItem(key);
@@ -9545,6 +9576,28 @@ function SelectToggle({ id, disabled }) {
9545
9576
 
9546
9577
  // src/components/Table/utils/columns.tsx
9547
9578
  var import_jsx_runtime27 = require("react/jsx-runtime");
9579
+ function groupColumns(opts) {
9580
+ const {
9581
+ id,
9582
+ header,
9583
+ bgColor,
9584
+ columns
9585
+ } = opts;
9586
+ return columns.map((column2) => ({
9587
+ canHide: true,
9588
+ initHidden: false,
9589
+ ...column2,
9590
+ groupId: id,
9591
+ groupLabel: header,
9592
+ groupHeader: header,
9593
+ bgColor: column2.bgColor ?? bgColor,
9594
+ name: prefixGroupColumnName(header, column2.name)
9595
+ }));
9596
+ }
9597
+ function prefixGroupColumnName(groupLabel, name) {
9598
+ if (!name || name.startsWith(`${groupLabel}: `)) return name;
9599
+ return `${groupLabel}: ${name}`;
9600
+ }
9548
9601
  function column(columnDef) {
9549
9602
  return {
9550
9603
  canHide: true,
@@ -9595,8 +9648,9 @@ function selectColumn(columnDef) {
9595
9648
  w: "40px",
9596
9649
  wrapAction: false,
9597
9650
  isAction: true,
9598
- // Select Column should not display the select toggle for `expandableHeader` or `totals` row kinds
9651
+ // Select Column should not display the select toggle for group, expandable, or totals header rows.
9599
9652
  expandableHeader: emptyCell,
9653
+ groupHeader: emptyCell,
9600
9654
  totals: emptyCell,
9601
9655
  // Use any of the user's per-row kind methods if they have them.
9602
9656
  ...columnDef
@@ -9619,8 +9673,9 @@ function collapseColumn(columnDef) {
9619
9673
  w: "38px",
9620
9674
  wrapAction: false,
9621
9675
  isAction: true,
9622
- // Collapse Column should not display the collapse toggle for `expandableHeader` or `totals` row kinds
9676
+ // Collapse Column should not display the collapse toggle for group, expandable, or totals header rows.
9623
9677
  expandableHeader: emptyCell,
9678
+ groupHeader: emptyCell,
9624
9679
  totals: emptyCell,
9625
9680
  ...columnDef
9626
9681
  };
@@ -9645,6 +9700,7 @@ function pinColumn(columnDef) {
9645
9700
  isAction: true,
9646
9701
  header: emptyCell,
9647
9702
  expandableHeader: emptyCell,
9703
+ groupHeader: emptyCell,
9648
9704
  totals: emptyCell,
9649
9705
  // Use any of the user's per-row kind methods if they have them.
9650
9706
  ...columnDef
@@ -9673,6 +9729,7 @@ function layoutGutterColumn(side, sticky, gutterPx) {
9673
9729
  isLayoutGutter: true,
9674
9730
  canHide: false,
9675
9731
  expandableHeader: emptyCell,
9732
+ groupHeader: emptyCell,
9676
9733
  totals: emptyCell,
9677
9734
  ...sticky ? {
9678
9735
  sticky
@@ -9896,6 +9953,7 @@ function dragHandleColumn(columnDef) {
9896
9953
  wrapAction: false,
9897
9954
  isAction: true,
9898
9955
  expandableHeader: emptyCell,
9956
+ groupHeader: emptyCell,
9899
9957
  totals: emptyCell,
9900
9958
  // Use any of the user's per-row kind methods if they have them.
9901
9959
  ...columnDef
@@ -10874,6 +10932,7 @@ function RowImpl(props) {
10874
10932
  cellHighlight,
10875
10933
  omitRowHover,
10876
10934
  hasExpandableHeader,
10935
+ hasGroupHeader,
10877
10936
  isFirstHeadRow,
10878
10937
  isFirstBodyRow,
10879
10938
  isLastBodyRow,
@@ -10909,9 +10968,10 @@ function RowImpl(props) {
10909
10968
  const isHeader = row.kind === HEADER;
10910
10969
  const isTotals = row.kind === TOTALS;
10911
10970
  const isExpandableHeader = row.kind === EXPANDABLE_HEADER;
10971
+ const isGroupHeader = row.kind === GROUP_HEADER;
10912
10972
  const isKeptGroupRow = row.kind === KEPT_GROUP;
10913
- const isBodyRow = !isHeader && !isTotals && !isExpandableHeader;
10914
- const isFirstHeadCellRow = isExpandableHeader || !hasExpandableHeader && (isHeader || isTotals);
10973
+ const isBodyRow = !isHeader && !isTotals && !isExpandableHeader && !isGroupHeader;
10974
+ const isFirstHeadCellRow = isGroupHeader || isExpandableHeader && !hasGroupHeader || !hasGroupHeader && !hasExpandableHeader && (isHeader || isTotals);
10915
10975
  const rowStyle = rowStyles?.[row.kind];
10916
10976
  const RowTag = as === "table" ? "tr" : "div";
10917
10977
  const sortOn = tableState.sortConfig?.on;
@@ -11010,14 +11070,15 @@ function RowImpl(props) {
11010
11070
  onDragEnter,
11011
11071
  onDragOver: onDragOverDebounced
11012
11072
  };
11013
- const maybeContent = applyRowFn(column2, row, rowApi, level, isExpanded, dragData);
11014
- currentColspan = isGridCellContent(maybeContent) && typeof maybeContent.colspan === "number" ? maybeContent.colspan : isExpandableHeader ? numExpandedColumns + 1 : 1;
11073
+ const maybeContent = isGroupHeader && column2.groupId ? column2.groupLabel : applyRowFn(column2, row, rowApi, level, isExpanded, dragData);
11074
+ const groupSpan = isGroupHeader && column2.groupId ? consecutiveGroupSpan(columns, columnIndex) : 1;
11075
+ currentColspan = isGroupHeader && column2.groupId ? groupSpan : isGridCellContent(maybeContent) && typeof maybeContent.colspan === "number" ? maybeContent.colspan : isExpandableHeader ? numExpandedColumns + 1 : 1;
11015
11076
  const canSortColumn = sortOn === "client" && column2.clientSideSort !== false || sortOn === "server" && !!column2.serverSideSortKey;
11016
- const alignment = getAlignment(column2, maybeContent);
11077
+ const alignment = isGroupHeader ? "left" : getAlignment(column2, maybeContent);
11017
11078
  const justificationCss = getJustification(column2, maybeContent, as, alignment);
11018
11079
  const isExpandable = isFunction(column2.expandColumns) || column2.expandColumns && column2.expandColumns.length > 0 || column2.expandedWidth !== void 0;
11019
- const content2 = toContent(maybeContent, isHeader, canSortColumn, sortOn === "client", style, as, alignment, column2, isExpandableHeader, isExpandable, minStickyLeftOffset, isKeptRow);
11020
- ensureClientSideSortValueIsSortable(sortOn, isHeader || isTotals || isExpandableHeader, column2, columnIndex, maybeContent);
11080
+ const content2 = toContent(maybeContent, isHeader, canSortColumn, sortOn === "client", style, as, alignment, column2, isExpandableHeader, isGroupHeader, isExpandable, minStickyLeftOffset, isKeptRow);
11081
+ ensureClientSideSortValueIsSortable(sortOn, isHeader || isTotals || isExpandableHeader || isGroupHeader, column2, columnIndex, maybeContent);
11021
11082
  const maybeSticky = (isGridCellContent(maybeContent) && maybeContent.sticky || column2.sticky) ?? void 0;
11022
11083
  const maybeStickyColumnStyles = maybeSticky && columnSizes ? {
11023
11084
  ...{
@@ -11043,7 +11104,7 @@ function RowImpl(props) {
11043
11104
  } : {};
11044
11105
  minStickyLeftOffset += maybeSticky === "left" ? parseInt(columnSizes[columnIndex].replace("px", ""), 10) : 0;
11045
11106
  const cellId = `${row.kind}_${row.id}_${column2.id}`;
11046
- const applyCellHighlight = cellHighlight && !!column2.id && !isHeader && !isTotals;
11107
+ const applyCellHighlight = cellHighlight && !!column2.id && !isHeader && !isTotals && !isGroupHeader;
11047
11108
  const isCellActive = tableState.activeCellId === cellId;
11048
11109
  const cellCss = {
11049
11110
  // Adding `display: flex` so we can align content within the cells, unless it is displayed as a `table`, then use `table-cell`.
@@ -11090,6 +11151,12 @@ function RowImpl(props) {
11090
11151
  ...isExpandableHeader && style.expandableHeaderCss,
11091
11152
  // Add right border on expandable header cells except the last column
11092
11153
  ...isExpandableHeader && columnIndex + currentColspan < columns.length && style.expandableHeaderNonLastColumnCss,
11154
+ ...isGroupHeader && style.groupHeaderCss,
11155
+ ...column2.bgColor && {
11156
+ backgroundColor: ["bgColor_var", {
11157
+ "--backgroundColor": (0, import_runtime24.maybeCssVar)(column2.bgColor)
11158
+ }]
11159
+ },
11093
11160
  // Conditionally apply the right border styling for the header or totals row when using expandable tables
11094
11161
  // Only apply if not the last column in the table AND when this column is the last column in the group of expandable column or not expanded AND
11095
11162
  ...hasExpandableHeader && columnIndex + currentColspan < columns.length && (isHeader || isTotals) && currentExpandedColumnCount === 0 && {
@@ -11153,7 +11220,7 @@ function RowImpl(props) {
11153
11220
  };
11154
11221
  const cellOnClick = applyCellHighlight ? () => api.setActiveCellId(cellId) : void 0;
11155
11222
  const tooltip = isGridCellContent(maybeContent) ? maybeContent.tooltip : void 0;
11156
- const renderFn = (rowStyle?.renderCell || rowStyle?.rowLink) && wrapAction ? rowLinkRenderFn(as, currentColspan) : isHeader || isTotals || isExpandableHeader ? headerRenderFn(column2, as, currentColspan) : rowStyle?.onClick && wrapAction ? rowClickRenderFn(as, api, currentColspan) : defaultRenderFn(as, currentColspan);
11223
+ const renderFn = (rowStyle?.renderCell || rowStyle?.rowLink) && wrapAction ? rowLinkRenderFn(as, currentColspan) : isHeader || isTotals || isExpandableHeader || isGroupHeader ? headerRenderFn(column2, as, currentColspan) : rowStyle?.onClick && wrapAction ? rowClickRenderFn(as, api, currentColspan) : defaultRenderFn(as, currentColspan);
11157
11224
  const cellElement = renderFn(columnIndex, cellCss, content2, row, rowStyle, void 0, cellOnClick, tooltip);
11158
11225
  if (!disableColumnResizing && isHeader && columnIndex < columns.length - 1 && currentColspan === 1 && isContentColumn(column2)) {
11159
11226
  const currentSizeStr = columnSizes[columnIndex];
@@ -11192,6 +11259,13 @@ var BorderHoverParent = "beam-bhp";
11192
11259
  var BorderHoverChild = "beam-bhc";
11193
11260
  var RowHoverClass = "beam-row-hover";
11194
11261
  var rowHoverBgVar = "--beam-row-hover-bg";
11262
+ function consecutiveGroupSpan(columns, columnIndex) {
11263
+ const groupId = columns[columnIndex]?.groupId;
11264
+ if (!groupId) return 1;
11265
+ let span = 1;
11266
+ while (columns[columnIndex + span]?.groupId === groupId) span += 1;
11267
+ return span;
11268
+ }
11195
11269
 
11196
11270
  // src/components/Table/components/RowGroup.tsx
11197
11271
  var import_react34 = require("react");
@@ -14626,11 +14700,12 @@ function GridTable(props) {
14626
14700
  };
14627
14701
  const [tableHeadRows, visibleDataRows, keptSelectedRows, pinnedRows, tooManyClientSideRows] = useComputed(() => {
14628
14702
  if (as === "card") {
14629
- const cardElements = tableState.visibleRows.filter((rs) => ![HEADER, EXPANDABLE_HEADER, TOTALS, KEPT_GROUP].includes(rs.kind)).map((rs) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TableCard, { rs, columns, rowStyle: rowStyles?.[rs.row.kind], api: tableState.api, height: cardHeight, imageFit: cardImageFit }, rs.key));
14703
+ const cardElements = tableState.visibleRows.filter((rs) => ![HEADER, EXPANDABLE_HEADER, GROUP_HEADER, TOTALS, KEPT_GROUP].includes(rs.kind)).map((rs) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TableCard, { rs, columns, rowStyle: rowStyles?.[rs.row.kind], api: tableState.api, height: cardHeight, imageFit: cardImageFit }, rs.key));
14630
14704
  return [[], cardElements, [], [], false];
14631
14705
  }
14632
14706
  const headerRows = [];
14633
14707
  const expandableHeaderRows = [];
14708
+ const groupHeaderRows = [];
14634
14709
  const totalsRows = [];
14635
14710
  const keptSelectedRows2 = [];
14636
14711
  let visibleDataRows2 = [];
@@ -14638,8 +14713,9 @@ function GridTable(props) {
14638
14713
  const pinnedIds = new Set(pinnedRowStates.map((rs) => rs.row.id));
14639
14714
  const visibleRows = tableState.visibleRows.filter((rs) => !pinnedIds.has(rs.row.id));
14640
14715
  const hasExpandableHeader = visibleRows.some((rs) => rs.row.id === EXPANDABLE_HEADER);
14716
+ const hasGroupHeader = visibleRows.some((rs) => rs.kind === GROUP_HEADER);
14641
14717
  const omitRowHover = "rowHover" in maybeStyle && maybeStyle.rowHover === false;
14642
- const isHeadKind = (kind) => [HEADER, EXPANDABLE_HEADER, TOTALS].includes(kind);
14718
+ const isHeadKind = (kind) => [HEADER, EXPANDABLE_HEADER, GROUP_HEADER, TOTALS].includes(kind);
14643
14719
  const makeRow = (rs, isFirstHeadRow, isFirstBodyRow, isLastBodyRow, hasTrailingCompanion) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Row, { onDragStart, onDragOver, onDragEnd, onDrop, onDragEnter, ...{
14644
14720
  as,
14645
14721
  rs,
@@ -14650,6 +14726,7 @@ function GridTable(props) {
14650
14726
  cellHighlight: "cellHighlight" in maybeStyle && maybeStyle.cellHighlight === true,
14651
14727
  omitRowHover,
14652
14728
  hasExpandableHeader,
14729
+ hasGroupHeader,
14653
14730
  isFirstHeadRow,
14654
14731
  isFirstBodyRow,
14655
14732
  isLastBodyRow,
@@ -14691,6 +14768,8 @@ function GridTable(props) {
14691
14768
  headerRows.push(makeRow(rs, isFirstHeadRow, false, false, false));
14692
14769
  } else if (rs.kind === "expandableHeader") {
14693
14770
  expandableHeaderRows.push(makeRow(rs, isFirstHeadRow, false, false, false));
14771
+ } else if (rs.kind === GROUP_HEADER) {
14772
+ groupHeaderRows.push(makeRow(rs, isFirstHeadRow, false, false, false));
14694
14773
  } else if (rs.kind === "totals") {
14695
14774
  totalsRows.push(makeRow(rs, isFirstHeadRow, false, false, false));
14696
14775
  } else if (rs.isKept || rs.kind === KEPT_GROUP) {
@@ -14699,7 +14778,7 @@ function GridTable(props) {
14699
14778
  visibleDataRows2.push(makeRowGroup(rs, isFirstBodyRow, rs === lastBodyRs, false));
14700
14779
  }
14701
14780
  });
14702
- const tableHeadRows2 = expandableHeaderRows.concat(headerRows).concat(totalsRows);
14781
+ const tableHeadRows2 = groupHeaderRows.concat(expandableHeaderRows).concat(headerRows).concat(totalsRows);
14703
14782
  const pinnedRows2 = pinnedRowStates.map((rs) => makeRowGroup(rs, false, false, as === "table"));
14704
14783
  const tooManyClientSideRows2 = !!filterMaxRows && visibleDataRows2.length > filterMaxRows;
14705
14784
  if (tooManyClientSideRows2) {
@@ -19799,6 +19878,50 @@ function ListBox(props) {
19799
19878
  }
19800
19879
  var maxPopoverHeight = 512;
19801
19880
 
19881
+ // src/inputs/internal/selectFieldHelpers.ts
19882
+ function initializeOptions(optionsOrLoad, getOptionValue, getOptionLabel, unsetLabel, autoSort) {
19883
+ const result = [];
19884
+ if (unsetLabel) {
19885
+ result.push(unsetOption);
19886
+ }
19887
+ const userOptions = [];
19888
+ if (Array.isArray(optionsOrLoad)) {
19889
+ userOptions.push(...optionsOrLoad);
19890
+ } else {
19891
+ const { options, current: current2 } = optionsOrLoad;
19892
+ if (options) {
19893
+ userOptions.push(...options);
19894
+ }
19895
+ if (current2) {
19896
+ const toCheck = Array.isArray(current2) ? current2 : [current2];
19897
+ toCheck.forEach((current3) => {
19898
+ const value = getOptionValue(current3);
19899
+ const found = options && options.find((o) => getOptionValue(o) === value);
19900
+ if (!found) {
19901
+ userOptions.push(current3);
19902
+ }
19903
+ });
19904
+ }
19905
+ }
19906
+ result.push(...autoSort ? sortOptions(userOptions, getOptionLabel) : userOptions);
19907
+ return result;
19908
+ }
19909
+ var unsetOption = {};
19910
+ function disabledOptionToKeyedTuple(disabledOption) {
19911
+ if (typeof disabledOption === "object" && disabledOption !== null) {
19912
+ return [valueToKey(disabledOption.value), disabledOption.reason];
19913
+ } else {
19914
+ return [valueToKey(disabledOption), void 0];
19915
+ }
19916
+ }
19917
+ function sortOptions(options, getOptionLabel) {
19918
+ return [...options].sort((a, b) => {
19919
+ const labelA = getOptionLabel(a).toLowerCase();
19920
+ const labelB = getOptionLabel(b).toLowerCase();
19921
+ return labelA.localeCompare(labelB);
19922
+ });
19923
+ }
19924
+
19802
19925
  // src/inputs/TreeSelectField/TreeSelectField.tsx
19803
19926
  var import_jsx_runtime115 = require("react/jsx-runtime");
19804
19927
  function TreeSelectField(props) {
@@ -20705,44 +20828,6 @@ function getInputValue(selectedOptions, getOptionLabel, multiselect, nothingSele
20705
20828
  function getAiDisplayValue(options, getOptionLabel) {
20706
20829
  return options.map(getOptionLabel).join(", ");
20707
20830
  }
20708
- function initializeOptions(optionsOrLoad, getOptionValue, getOptionLabel, unsetLabel, autoSort) {
20709
- const result = [];
20710
- if (unsetLabel) {
20711
- result.push(unsetOption);
20712
- }
20713
- const userOptions = [];
20714
- if (Array.isArray(optionsOrLoad)) {
20715
- userOptions.push(...optionsOrLoad);
20716
- } else {
20717
- const {
20718
- options,
20719
- current: current2
20720
- } = optionsOrLoad;
20721
- if (options) {
20722
- userOptions.push(...options);
20723
- }
20724
- if (current2) {
20725
- const toCheck = Array.isArray(current2) ? current2 : [current2];
20726
- toCheck.forEach((current3) => {
20727
- const value = getOptionValue(current3);
20728
- const found = options && options.find((o) => getOptionValue(o) === value);
20729
- if (!found) {
20730
- userOptions.push(current3);
20731
- }
20732
- });
20733
- }
20734
- }
20735
- result.push(...autoSort ? sortOptions(userOptions, getOptionLabel) : userOptions);
20736
- return result;
20737
- }
20738
- function sortOptions(options, getOptionLabel) {
20739
- return [...options].sort((a, b) => {
20740
- const labelA = getOptionLabel(a).toLowerCase();
20741
- const labelB = getOptionLabel(b).toLowerCase();
20742
- return labelA.localeCompare(labelB);
20743
- });
20744
- }
20745
- var unsetOption = {};
20746
20831
  var addNewOptionId = "beam_new";
20747
20832
  function isAddNewOption(o) {
20748
20833
  return typeof o === "object" && o !== null && "id" in o && o.id === addNewOptionId;
@@ -20762,13 +20847,6 @@ function getAddNewOption(searchValue, options, getOptionLabel, onAddNew) {
20762
20847
  name: `Add "${trimmedSearch}"`
20763
20848
  };
20764
20849
  }
20765
- function disabledOptionToKeyedTuple(disabledOption) {
20766
- if (typeof disabledOption === "object" && disabledOption !== null) {
20767
- return [valueToKey(disabledOption.value), disabledOption.reason];
20768
- } else {
20769
- return [valueToKey(disabledOption), void 0];
20770
- }
20771
- }
20772
20850
 
20773
20851
  // src/inputs/SelectField.tsx
20774
20852
  var import_jsx_runtime118 = require("react/jsx-runtime");
@@ -22650,7 +22728,7 @@ function getSelectCardOptionsCss({
22650
22728
  gap: "g_2",
22651
22729
  width: "w100"
22652
22730
  };
22653
- const cardWidth = layout === "horizontal" ? hasImage ? 360 : 240 : hasImage || hasDescription ? 192 : 142;
22731
+ const cardWidth = layout === "horizontal" ? hasImage ? 352 : 240 : hasImage || hasDescription ? 192 : 142;
22654
22732
  return {
22655
22733
  display: "dg",
22656
22734
  gridTemplateColumns: ["gtc_var", {
@@ -25585,13 +25663,14 @@ function EditColumnsButton(props) {
25585
25663
  color: ["color_var", {
25586
25664
  "--color": "var(--b-on-surface)"
25587
25665
  }],
25588
- maxWidth: "maxw_326px",
25666
+ width: "wmaxc",
25667
+ maxWidth: "maxw_calc_100vw_32px",
25589
25668
  maxHeight: "maxh_512px",
25590
25669
  boxShadow: "bshBasic h_bshHover"
25591
25670
  }), children: [
25592
25671
  /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("div", { className: "dg gtc_1fr_auto g_2 pt2 pb2 pr2 pl2 fg1 mh0 oya", children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime179.jsxs)(import_react117.Fragment, { children: [
25593
25672
  /* @__PURE__ */ (0, import_jsx_runtime179.jsxs)("div", { className: "df aic g_4px mw0 pr1", children: [
25594
- /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "fw4 fz_14px lh_20px wsnw oh to_ellipsis mw0", children: option.label }),
25673
+ /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "fw4 fz_14px lh_20px mw0", children: option.label }),
25595
25674
  option.tooltip ? /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(ColumnTooltipIcon, { ...tid[`tooltip_${option.value}`], tooltip: closeMenuOnClickTooltip(option.tooltip, state.close), color: "--b-text-link-default" /* TextLinkDefault */, label: option.label }) : null
25596
25675
  ] }),
25597
25676
  /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(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}`] })
@@ -30441,6 +30520,7 @@ function cardCarouselSlot(props) {
30441
30520
 
30442
30521
  // src/components/Table/utils/simpleHelpers.ts
30443
30522
  var simpleHeader = { kind: "header", id: "header", data: void 0 };
30523
+ var simpleGroupHeader = { kind: "groupHeader", id: "groupHeader", data: void 0 };
30444
30524
  function simpleDataRows(data = []) {
30445
30525
  return [simpleHeader, ...data.map((data2) => ({ kind: "data", data: data2, id: data2.id }))];
30446
30526
  }
@@ -32856,6 +32936,7 @@ var togglePressStyles = {
32856
32936
  FormSectionChild,
32857
32937
  FormSectionLayout,
32858
32938
  FullBleed,
32939
+ GROUP_HEADER,
32859
32940
  GridTable,
32860
32941
  GridTableEmptyState,
32861
32942
  GridTableLayout,
@@ -33061,6 +33142,7 @@ var togglePressStyles = {
33061
33142
  getNavLinkStyles,
33062
33143
  getTableRefWidthStyles,
33063
33144
  getTableStyles,
33145
+ groupColumns,
33064
33146
  headerContentPaddingX,
33065
33147
  headerRenderFn,
33066
33148
  hoverStyles,
@@ -33121,6 +33203,7 @@ var togglePressStyles = {
33121
33203
  shouldShowEnvironmentBanner,
33122
33204
  shouldSkipScrollTo,
33123
33205
  simpleDataRows,
33206
+ simpleGroupHeader,
33124
33207
  simpleHeader,
33125
33208
  singleFilter,
33126
33209
  sortFn,