@homebound/beam 3.56.1 → 3.58.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
@@ -3870,6 +3870,10 @@ var CssBuilder = class _CssBuilder {
3870
3870
  get transitionTop() {
3871
3871
  return this.add("transition", "top 200ms cubic-bezier(0.4, 0, 0.2, 1)");
3872
3872
  }
3873
+ /** Sets `transition: "all 200ms cubic-bezier(0.4, 0, 0.2, 1)"`. */
3874
+ get transitionAll() {
3875
+ return this.add("transition", "all 200ms cubic-bezier(0.4, 0, 0.2, 1)");
3876
+ }
3873
3877
  // buttonBase
3874
3878
  /** Sets `fontWeight: 600; fontSize: "14px"; lineHeight: "20px"; outline: 0; borderRadius: "8px"; display: "inline-flex"; alignItems: "center"; whiteSpace: "nowrap"; transition: "background-color 200ms cubic-bezier(0.4, 0, 0.2, 1), border-color 200ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1), left 200ms cubic-bezier(0.4, 0, 0.2, 1), right 200ms cubic-bezier(0.4, 0, 0.2, 1), margin 200ms cubic-bezier(0.4, 0, 0.2, 1), width 200ms cubic-bezier(0.4, 0, 0.2, 1), opacity 200ms cubic-bezier(0.4, 0, 0.2, 1)"`. */
3875
3879
  get buttonBase() {
@@ -5995,6 +5999,7 @@ var beamLayoutViewportWidthVar = "--beam-layout-viewport-width";
5995
5999
  var beamLayoutViewportHeightVar = "--beam-layout-viewport-height";
5996
6000
  var beamSideNavLayoutWidthVar = "--beam-side-nav-layout-width";
5997
6001
  var beamTableActionsHeightVar = "--beam-table-actions-height";
6002
+ var beamWorkflowLayoutFooterHeightVar = "--beam-workflow-layout-footer-height";
5998
6003
  function documentScrollChromeLeft() {
5999
6004
  return `var(${beamSideNavLayoutWidthVar}, 0px)`;
6000
6005
  }
@@ -6010,6 +6015,9 @@ function stickyNavAndHeaderOffset(basePx = 0) {
6010
6015
  function stickyTableHeaderOffset(basePx = 0) {
6011
6016
  return `calc(${basePx}px + var(${beamEnvironmentBannerLayoutHeightVar}, 0px) + var(${beamNavbarLayoutHeightVar}, 0px) + var(${beamPageHeaderLayoutHeightVar}, 0px) + var(${beamTableActionsHeightVar}, 0px))`;
6012
6017
  }
6018
+ function getFloatingBottomOffset(basePx = 0) {
6019
+ return `calc(${basePx}px + var(${beamWorkflowLayoutFooterHeightVar}, 0px))`;
6020
+ }
6013
6021
 
6014
6022
  // src/utils/zIndices.ts
6015
6023
  var zIndices = {
@@ -6026,6 +6034,8 @@ var zIndices = {
6026
6034
  superDrawerScrim: 55,
6027
6035
  modalUnderlay: 60,
6028
6036
  pageStickyHeader: 70,
6037
+ // Sticky mobile action footer (WorkflowLayout) — same tier as pageStickyHeader; header and footer never overlap on screen.
6038
+ pageStickyFooter: 70,
6029
6039
  dragHandle: 80,
6030
6040
  // Side-nav layer. Mobile rail overlays page content when expanded; sits below
6031
6041
  // snackbar so toasts still land on top.
@@ -8956,7 +8966,7 @@ function RowImpl(props) {
8956
8966
  "--width": maybeCssVar13(__maybeInc6(`calc(${columnSizes.slice(columnIndex, columnIndex + currentColspan).join(" + ")}${applyFirstContentColumnStyles && levelIndent ? ` - ${levelIndent}px` : ""})`))
8957
8967
  }]
8958
8968
  },
8959
- // Gutter columns are budgeted at 12px; strip cell padding so flex min-content does not exceed that width.
8969
+ // Gutter columns are budgeted at pageContentGutterPx; strip cell padding so flex min-content does not exceed that width.
8960
8970
  ...column2.isLayoutGutter && {
8961
8971
  paddingLeft: "pl0",
8962
8972
  paddingRight: "pr0",
@@ -15420,6 +15430,22 @@ function SelectToggle({ id, disabled }) {
15420
15430
  );
15421
15431
  }
15422
15432
 
15433
+ // src/layouts/layoutSpacing.ts
15434
+ var pageContentGutterPx = 12;
15435
+ var pageContentPaddingX = {
15436
+ paddingLeft: "pl3",
15437
+ paddingRight: "pr3"
15438
+ };
15439
+ function headerContentPaddingX(compact = false) {
15440
+ return compact ? {
15441
+ paddingLeft: "pl1",
15442
+ paddingRight: "pr1"
15443
+ } : {
15444
+ paddingLeft: "pl1 mdandup_pl5",
15445
+ paddingRight: "pr1 mdandup_pr5"
15446
+ };
15447
+ }
15448
+
15423
15449
  // src/components/Table/utils/columns.tsx
15424
15450
  import { jsx as jsx90 } from "react/jsx-runtime";
15425
15451
  function column(columnDef) {
@@ -15526,7 +15552,6 @@ function pinColumn(columnDef) {
15526
15552
  });
15527
15553
  });
15528
15554
  }
15529
- var columnGutterPx = 12;
15530
15555
  var layoutGutterLeftColumnId = "beamLayoutGutterLeft";
15531
15556
  var layoutGutterRightColumnId = "beamLayoutGutterRight";
15532
15557
  function isContentColumn(column2) {
@@ -15538,7 +15563,7 @@ function layoutGutterColumn(side) {
15538
15563
  ...nonKindDefaults(),
15539
15564
  id,
15540
15565
  clientSideSort: false,
15541
- w: `${columnGutterPx}px`,
15566
+ w: `${pageContentGutterPx}px`,
15542
15567
  wrapAction: false,
15543
15568
  isLayoutGutter: true,
15544
15569
  canHide: false,
@@ -16316,6 +16341,9 @@ import { createContext as createContext6, useCallback as useCallback20, useConte
16316
16341
  import { useCallback as useCallback19, useEffect as useEffect19, useState as useState30 } from "react";
16317
16342
  import { trussProps as trussProps55, maybeCssVar as maybeCssVar30 } from "@homebound/truss/runtime";
16318
16343
  import { jsx as jsx91 } from "react/jsx-runtime";
16344
+ var __maybeInc10 = (inc) => {
16345
+ return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
16346
+ };
16319
16347
  function DocumentScrollToTopButton({
16320
16348
  viewportHeight
16321
16349
  }) {
@@ -16344,7 +16372,7 @@ function DocumentScrollToTopButton({
16344
16372
  ...{
16345
16373
  position: "fixed",
16346
16374
  bottom: ["bottom_var", {
16347
- "--bottom": `${scrollToTopOffsetPx}px`
16375
+ "--bottom": maybeCssVar30(__maybeInc10(getFloatingBottomOffset(scrollToTopOffsetPx)))
16348
16376
  }],
16349
16377
  right: ["right_var", {
16350
16378
  "--right": `${scrollToTopOffsetPx}px`
@@ -16432,7 +16460,7 @@ import { useMemo as useMemo27 } from "react";
16432
16460
  import { Link as Link4 } from "react-router-dom";
16433
16461
  import { trussProps as trussProps56, mergeProps as mergeProps20, maybeCssVar as maybeCssVar31 } from "@homebound/truss/runtime";
16434
16462
  import { jsx as jsx93, jsxs as jsxs50 } from "react/jsx-runtime";
16435
- var __maybeInc10 = (inc) => {
16463
+ var __maybeInc11 = (inc) => {
16436
16464
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
16437
16465
  };
16438
16466
  function TableCard(props) {
@@ -16563,7 +16591,7 @@ function TableCardView(props) {
16563
16591
  borderRadius: "br4",
16564
16592
  backgroundColor: "bgBlue500",
16565
16593
  width: ["w_var", {
16566
- "--width": maybeCssVar31(__maybeInc10(`${progressValue}%`))
16594
+ "--width": maybeCssVar31(__maybeInc11(`${progressValue}%`))
16567
16595
  }]
16568
16596
  }) }) }),
16569
16597
  /* @__PURE__ */ jsxs50("span", { ...tid.progressValue, children: [
@@ -16602,7 +16630,7 @@ function GridTableEmptyState(props) {
16602
16630
  import { trussProps as trussProps57, mergeProps as mergeProps21, maybeCssVar as maybeCssVar32 } from "@homebound/truss/runtime";
16603
16631
  import { jsx as jsx95, jsxs as jsxs52 } from "react/jsx-runtime";
16604
16632
  import { createElement as createElement2 } from "react";
16605
- var __maybeInc11 = (inc) => {
16633
+ var __maybeInc12 = (inc) => {
16606
16634
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
16607
16635
  };
16608
16636
  var runningInJest = false;
@@ -16932,7 +16960,7 @@ function renderDiv(style, id, columns, visibleDataRows, keptSelectedRows, pinned
16932
16960
  position: "sticky",
16933
16961
  transition: "transitionTop",
16934
16962
  top: ["top_var", {
16935
- "--top": maybeCssVar32(__maybeInc11(stickyTableHeaderOffset(stickyOffset)))
16963
+ "--top": maybeCssVar32(__maybeInc12(stickyTableHeaderOffset(stickyOffset)))
16936
16964
  }],
16937
16965
  zIndex: ["z_var", {
16938
16966
  "--zIndex": maybeCssVar32(zIndices.tableStickyHeader)
@@ -16976,7 +17004,7 @@ function renderTable(style, id, columns, visibleDataRows, keptSelectedRows, pinn
16976
17004
  position: "sticky",
16977
17005
  transition: "transitionTop",
16978
17006
  top: ["top_var", {
16979
- "--top": maybeCssVar32(__maybeInc11(stickyTableHeaderOffset(stickyOffset)))
17007
+ "--top": maybeCssVar32(__maybeInc12(stickyTableHeaderOffset(stickyOffset)))
16980
17008
  }],
16981
17009
  zIndex: ["z_var", {
16982
17010
  "--zIndex": maybeCssVar32(zIndices.tableStickyHeader)
@@ -17320,7 +17348,7 @@ import { useCallback as useCallback21, useEffect as useEffect21, useMemo as useM
17320
17348
  import { useFocusRing as useFocusRing11 } from "react-aria";
17321
17349
  import { trussProps as trussProps60, maybeCssVar as maybeCssVar33 } from "@homebound/truss/runtime";
17322
17350
  import { jsx as jsx98, jsxs as jsxs54 } from "react/jsx-runtime";
17323
- var __maybeInc12 = (inc) => {
17351
+ var __maybeInc13 = (inc) => {
17324
17352
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
17325
17353
  };
17326
17354
  function Accordion(props) {
@@ -17467,7 +17495,7 @@ function Accordion(props) {
17467
17495
  /* @__PURE__ */ jsx98("div", { ...tid.details, id, "aria-hidden": !expanded, ...trussProps60({
17468
17496
  overflow: "oh",
17469
17497
  height: ["h_var", {
17470
- "--height": maybeCssVar33(__maybeInc12(contentHeight))
17498
+ "--height": maybeCssVar33(__maybeInc13(contentHeight))
17471
17499
  }],
17472
17500
  transition: "transition_height_250ms_ease_in_out"
17473
17501
  }), children: expanded && /* @__PURE__ */ jsx98("div", { ...trussProps60({
@@ -18979,7 +19007,7 @@ function BoundTreeSelectField(props) {
18979
19007
  import { Children, cloneElement } from "react";
18980
19008
  import { trussProps as trussProps66, maybeCssVar as maybeCssVar37 } from "@homebound/truss/runtime";
18981
19009
  import { jsx as jsx127 } from "react/jsx-runtime";
18982
- var __maybeInc13 = (inc) => {
19010
+ var __maybeInc14 = (inc) => {
18983
19011
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
18984
19012
  };
18985
19013
  function FormLines(props) {
@@ -19017,13 +19045,13 @@ function FormLines(props) {
19017
19045
  display: "df",
19018
19046
  flexDirection: "fdc",
19019
19047
  gap: ["gap_var", {
19020
- "--gap": maybeCssVar37(__maybeInc13(gap))
19048
+ "--gap": maybeCssVar37(__maybeInc14(gap))
19021
19049
  }],
19022
19050
  paddingBottom: ["pb_var", {
19023
- "--paddingBottom": maybeCssVar37(__maybeInc13(gap))
19051
+ "--paddingBottom": maybeCssVar37(__maybeInc14(gap))
19024
19052
  }],
19025
19053
  width: ["w_var", {
19026
- "--width": maybeCssVar37(__maybeInc13(sizes[width2]))
19054
+ "--width": maybeCssVar37(__maybeInc14(sizes[width2]))
19027
19055
  }]
19028
19056
  }), children: Children.map(children, (child) => {
19029
19057
  if (child && typeof child === "object" && "type" in child && child.type.isFormHeading) {
@@ -19903,7 +19931,7 @@ function useActiveSection(sectionsWithRefs) {
19903
19931
  // src/components/Layout/FullBleed.tsx
19904
19932
  import { mergeProps as mergeProps23, maybeCssVar as maybeCssVar41 } from "@homebound/truss/runtime";
19905
19933
  import { cloneElement as cloneElement3 } from "react";
19906
- var __maybeInc14 = (inc) => {
19934
+ var __maybeInc15 = (inc) => {
19907
19935
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
19908
19936
  };
19909
19937
  function FullBleed({
@@ -19934,17 +19962,17 @@ function FullBleed({
19934
19962
  // inverts that padding with negative margins before re-applying it to the child.
19935
19963
  {
19936
19964
  marginLeft: ["ml_var", {
19937
- "--marginLeft": maybeCssVar41(__maybeInc14(invertSpacing(paddingLeft)))
19965
+ "--marginLeft": maybeCssVar41(__maybeInc15(invertSpacing(paddingLeft)))
19938
19966
  }],
19939
19967
  marginRight: ["mr_var", {
19940
- "--marginRight": maybeCssVar41(__maybeInc14(invertSpacing(paddingRight)))
19968
+ "--marginRight": maybeCssVar41(__maybeInc15(invertSpacing(paddingRight)))
19941
19969
  }],
19942
19970
  ...!omitPadding ? {
19943
19971
  paddingLeft: ["pl_var", {
19944
- "--paddingLeft": maybeCssVar41(__maybeInc14(paddingLeft))
19972
+ "--paddingLeft": maybeCssVar41(__maybeInc15(paddingLeft))
19945
19973
  }],
19946
19974
  paddingRight: ["pr_var", {
19947
- "--paddingRight": maybeCssVar41(__maybeInc14(paddingRight))
19975
+ "--paddingRight": maybeCssVar41(__maybeInc15(paddingRight))
19948
19976
  }]
19949
19977
  } : {}
19950
19978
  }
@@ -20828,12 +20856,7 @@ function FilterPanelOpen({
20828
20856
  ...{
20829
20857
  flexWrap: "mdandup_fww"
20830
20858
  },
20831
- ...{
20832
- ...inDocumentScrollLayout ? {
20833
- paddingLeft: "pl3",
20834
- paddingRight: "pr3"
20835
- } : {}
20836
- }
20859
+ ...inDocumentScrollLayout ? pageContentPaddingX : void 0
20837
20860
  }), children: [
20838
20861
  groupBy && /* @__PURE__ */ jsx156(GroupByField, { ...groupBy }),
20839
20862
  filterControls,
@@ -20966,14 +20989,13 @@ function GridTableLayoutActionsComponent(props) {
20966
20989
  } : {}
20967
20990
  }), children: [
20968
20991
  /* @__PURE__ */ jsxs75("div", { ...trussProps78({
20969
- display: "df",
20970
- gap: "gap1",
20971
- justifyContent: "jcsb",
20972
- paddingTop: "pt3",
20973
- ...inDocumentScrollLayout ? {
20974
- paddingLeft: "pl3",
20975
- paddingRight: "pr3"
20976
- } : {}
20992
+ ...{
20993
+ display: "df",
20994
+ gap: "gap1",
20995
+ justifyContent: "jcsb",
20996
+ paddingTop: "pt3"
20997
+ },
20998
+ ...inDocumentScrollLayout ? pageContentPaddingX : void 0
20977
20999
  }), children: [
20978
21000
  /* @__PURE__ */ jsxs75("div", { className: "df gap_12px aic", children: [
20979
21001
  !sm && hasSearch && /* @__PURE__ */ jsx157("div", { className: "w_244px", children: searchTextField }),
@@ -20993,7 +21015,7 @@ function GridTableLayoutActionsComponent(props) {
20993
21015
  } })
20994
21016
  ] })
20995
21017
  ] }),
20996
- sm && showSearch && /* @__PURE__ */ jsx157("div", { className: "pl3 pr3", children: searchTextField }),
21018
+ sm && showSearch && /* @__PURE__ */ jsx157("div", { ...trussProps78(pageContentPaddingX), children: searchTextField }),
20997
21019
  hasFilterControls && !showInlineControl && /* @__PURE__ */ jsx157(FilterPanel, { isOpen: showFilters, groupBy, filterImpls, filter, setFilter, onClear: clearFilters })
20998
21020
  ] });
20999
21021
  }
@@ -21114,7 +21136,7 @@ function parseStoredTableView(raw) {
21114
21136
  // src/components/Layout/GridTableLayout/GridTableLayout.tsx
21115
21137
  import { trussProps as trussProps80, maybeCssVar as maybeCssVar44 } from "@homebound/truss/runtime";
21116
21138
  import { Fragment as Fragment36, jsx as jsx160, jsxs as jsxs77 } from "react/jsx-runtime";
21117
- var __maybeInc15 = (inc) => {
21139
+ var __maybeInc16 = (inc) => {
21118
21140
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
21119
21141
  };
21120
21142
  function GridTableLayoutComponent(props) {
@@ -21173,13 +21195,13 @@ function GridTableLayoutComponent(props) {
21173
21195
  transition: "transitionTop",
21174
21196
  position: "sticky",
21175
21197
  top: ["top_var", {
21176
- "--top": maybeCssVar44(__maybeInc15(stickyNavAndHeaderOffset()))
21198
+ "--top": maybeCssVar44(__maybeInc16(stickyNavAndHeaderOffset()))
21177
21199
  }],
21178
21200
  left: ["left_var", {
21179
- "--left": maybeCssVar44(__maybeInc15(documentScrollChromeLeft()))
21201
+ "--left": maybeCssVar44(__maybeInc16(documentScrollChromeLeft()))
21180
21202
  }],
21181
21203
  width: ["w_var", {
21182
- "--width": maybeCssVar44(__maybeInc15(documentScrollChromeWidth()))
21204
+ "--width": maybeCssVar44(__maybeInc16(documentScrollChromeWidth()))
21183
21205
  }],
21184
21206
  zIndex: ["z_var", {
21185
21207
  "--zIndex": maybeCssVar44(zIndices.tableActions)
@@ -21352,7 +21374,7 @@ import { AnimatePresence as AnimatePresence3, motion as motion3 } from "framer-m
21352
21374
  import { useEffect as useEffect29 } from "react";
21353
21375
  import { trussProps as trussProps81, maybeCssVar as maybeCssVar45 } from "@homebound/truss/runtime";
21354
21376
  import { Fragment as Fragment37, jsx as jsx163, jsxs as jsxs78 } from "react/jsx-runtime";
21355
- var __maybeInc16 = (inc) => {
21377
+ var __maybeInc17 = (inc) => {
21356
21378
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
21357
21379
  };
21358
21380
  function RightPaneLayout(props) {
@@ -21373,7 +21395,7 @@ function RightPaneLayout(props) {
21373
21395
  /* @__PURE__ */ jsx163("div", { ...trussProps81({
21374
21396
  ...{
21375
21397
  width: ["w_var", {
21376
- "--width": maybeCssVar45(__maybeInc16(`calc(100% - ${paneWidth + 24}px)`))
21398
+ "--width": maybeCssVar45(__maybeInc17(`calc(100% - ${paneWidth + 24}px)`))
21377
21399
  }],
21378
21400
  transition: "transition_width_2s_linear",
21379
21401
  height: "h100",
@@ -21389,7 +21411,7 @@ function RightPaneLayout(props) {
21389
21411
  ...{
21390
21412
  ...!!defaultPaneContent ? {
21391
21413
  width: ["w_var", {
21392
- "--width": maybeCssVar45(__maybeInc16(`calc(100% - ${paneWidth + 24}px)`))
21414
+ "--width": maybeCssVar45(__maybeInc17(`calc(100% - ${paneWidth + 24}px)`))
21393
21415
  }],
21394
21416
  marginRight: "mr3"
21395
21417
  } : {}
@@ -22555,7 +22577,17 @@ function EnvironmentBanner(props) {
22555
22577
  }), role: "banner", ...tid, children: [
22556
22578
  getInvertedCorner("left", bgColorVar),
22557
22579
  getInvertedCorner("right", bgColorVar),
22558
- /* @__PURE__ */ jsxs86("div", { className: "relative z2 df aic jcsb h100 pl1 mdandup_pl5 pr1 mdandup_pr5", ...tid.content, children: [
22580
+ /* @__PURE__ */ jsxs86("div", { ...trussProps89({
22581
+ ...{
22582
+ position: "relative",
22583
+ zIndex: "z2",
22584
+ display: "df",
22585
+ alignItems: "aic",
22586
+ justifyContent: "jcsb",
22587
+ height: "h100"
22588
+ },
22589
+ ...headerContentPaddingX()
22590
+ }), ...tid.content, children: [
22559
22591
  /* @__PURE__ */ jsxs86("span", { className: "df aic gap2 fg1 mh0 oh", ...tid.left, children: [
22560
22592
  /* @__PURE__ */ jsx176(Tag, { text: badgeLabel, xss: {
22561
22593
  backgroundColor: "bgColor_FFFFFF90"
@@ -22744,7 +22776,7 @@ function ResponsiveGridItem(props) {
22744
22776
  // src/components/Grid/useResponsiveGrid.ts
22745
22777
  import { useMemo as useMemo47 } from "react";
22746
22778
  import { maybeCssVar as maybeCssVar48 } from "@homebound/truss/runtime";
22747
- var __maybeInc17 = (inc) => {
22779
+ var __maybeInc18 = (inc) => {
22748
22780
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
22749
22781
  };
22750
22782
  function useResponsiveGrid(props) {
@@ -22766,7 +22798,7 @@ function useResponsiveGrid(props) {
22766
22798
  }],
22767
22799
  containerType: "ctis",
22768
22800
  gap: ["gap_var", {
22769
- "--gap": maybeCssVar48(__maybeInc17(gridGap))
22801
+ "--gap": maybeCssVar48(__maybeInc18(gridGap))
22770
22802
  }]
22771
22803
  };
22772
22804
  }, [minColumnWidth, gap, columns]);
@@ -22891,7 +22923,7 @@ function HbSpinnerProvider({
22891
22923
  // src/components/HomeboundLogo.tsx
22892
22924
  import { trussProps as trussProps92, maybeCssVar as maybeCssVar49 } from "@homebound/truss/runtime";
22893
22925
  import { jsx as jsx180 } from "react/jsx-runtime";
22894
- var __maybeInc18 = (inc) => {
22926
+ var __maybeInc19 = (inc) => {
22895
22927
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
22896
22928
  };
22897
22929
  function HomeboundLogo(props) {
@@ -22905,10 +22937,10 @@ function HomeboundLogo(props) {
22905
22937
  "--fill": maybeCssVar49(fill)
22906
22938
  }],
22907
22939
  width: ["w_var", {
22908
- "--width": maybeCssVar49(__maybeInc18(width2))
22940
+ "--width": maybeCssVar49(__maybeInc19(width2))
22909
22941
  }],
22910
22942
  height: ["h_var", {
22911
- "--height": maybeCssVar49(__maybeInc18(height))
22943
+ "--height": maybeCssVar49(__maybeInc19(height))
22912
22944
  }]
22913
22945
  }), children: /* @__PURE__ */ jsx180("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" }) });
22914
22946
  }
@@ -23273,7 +23305,7 @@ function useAppNavGroupExpanded(linkGroup) {
23273
23305
  // src/components/AppNav/AppNavGroup.tsx
23274
23306
  import { trussProps as trussProps96, maybeCssVar as maybeCssVar51 } from "@homebound/truss/runtime";
23275
23307
  import { Fragment as Fragment41, jsx as jsx184, jsxs as jsxs90 } from "react/jsx-runtime";
23276
- var __maybeInc19 = (inc) => {
23308
+ var __maybeInc20 = (inc) => {
23277
23309
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
23278
23310
  };
23279
23311
  function AppNavGroupView(props) {
@@ -23320,7 +23352,7 @@ function AppNavGroupDisclosure(props) {
23320
23352
  overflow: "oh",
23321
23353
  transition: "transitionHeight",
23322
23354
  height: ["h_var", {
23323
- "--height": maybeCssVar51(__maybeInc19(contentHeight))
23355
+ "--height": maybeCssVar51(__maybeInc20(contentHeight))
23324
23356
  }]
23325
23357
  }), ...tid.panel, ...!expanded ? {
23326
23358
  inert: "true"
@@ -23552,24 +23584,36 @@ function NavbarMobileDrawer({
23552
23584
  duration: 0.2
23553
23585
  }, onClick: (e) => e.stopPropagation(), ...tid.mobileMenuDrawer, children: [
23554
23586
  /* @__PURE__ */ jsx189("div", { ...trussProps98({
23555
- display: "df",
23556
- alignItems: "aic",
23557
- justifyContent: "jcfe",
23558
- paddingLeft: "pl3",
23559
- paddingRight: "pr3",
23560
- paddingTop: "pt_12px",
23561
- paddingBottom: "pb_12px",
23562
- flexShrink: "fs0",
23563
- borderBottomStyle: "bbs_solid",
23564
- borderBottomWidth: "bbw_1px",
23565
- borderColor: ["bc_var", {
23566
- "--borderColor": "var(--b-surface-separator)"
23567
- }]
23587
+ ...{
23588
+ display: "df",
23589
+ alignItems: "aic",
23590
+ justifyContent: "jcfe",
23591
+ paddingTop: "pt_12px",
23592
+ paddingBottom: "pb_12px",
23593
+ flexShrink: "fs0",
23594
+ borderBottomStyle: "bbs_solid",
23595
+ borderBottomWidth: "bbw_1px",
23596
+ borderColor: ["bc_var", {
23597
+ "--borderColor": "var(--b-surface-separator)"
23598
+ }]
23599
+ },
23600
+ ...pageContentPaddingX
23568
23601
  }), children: /* @__PURE__ */ jsx189(IconButton, { icon: "x", color: "--b-on-surface-muted" /* OnSurfaceMuted */, label: "Close navigation", onClick: onClose, ...tid.mobileMenuClose }) }),
23569
23602
  /* @__PURE__ */ jsx189(
23570
23603
  "nav",
23571
23604
  {
23572
- className: "fg1 oya pl3 pr3 pb3 pt2 df fdc gap_4px",
23605
+ ...trussProps98({
23606
+ ...{
23607
+ flexGrow: "fg1",
23608
+ overflowY: "oya",
23609
+ paddingBottom: "pb3",
23610
+ paddingTop: "pt2",
23611
+ display: "df",
23612
+ flexDirection: "fdc",
23613
+ gap: "gap_4px"
23614
+ },
23615
+ ...pageContentPaddingX
23616
+ }),
23573
23617
  onClickCapture: (e) => {
23574
23618
  if (e.target.closest("a")) {
23575
23619
  onClose();
@@ -23605,23 +23649,20 @@ function Navbar(props) {
23605
23649
  } = useContentOverflow(!sm);
23606
23650
  const showMobile = sm || overflows;
23607
23651
  return /* @__PURE__ */ jsx190(ContrastScope, { children: /* @__PURE__ */ jsxs93("nav", { ...trussProps99({
23608
- backgroundColor: ["bgColor_var", {
23609
- "--backgroundColor": "var(--b-surface-raised)"
23610
- }],
23611
- flexShrink: "fs0",
23612
- display: "df",
23613
- alignItems: "aic",
23614
- justifyContent: "jcsb",
23615
- whiteSpace: "wsnw",
23616
- paddingLeft: "pl1",
23617
- paddingRight: "pr1",
23618
- paddingTop: "pt1",
23619
- paddingBottom: "pb1",
23620
- gap: "gap2",
23621
- ...!showMobile ? {
23622
- paddingLeft: "pl5",
23623
- paddingRight: "pr5"
23624
- } : {}
23652
+ ...{
23653
+ backgroundColor: ["bgColor_var", {
23654
+ "--backgroundColor": "var(--b-surface-raised)"
23655
+ }],
23656
+ flexShrink: "fs0",
23657
+ display: "df",
23658
+ alignItems: "aic",
23659
+ justifyContent: "jcsb",
23660
+ whiteSpace: "wsnw",
23661
+ paddingTop: "pt1",
23662
+ paddingBottom: "pb1",
23663
+ gap: "gap2"
23664
+ },
23665
+ ...headerContentPaddingX(showMobile)
23625
23666
  }), ...tid, children: [
23626
23667
  /* @__PURE__ */ jsxs93("div", { className: "df aic gap3 fg1 mw0", children: [
23627
23668
  /* @__PURE__ */ jsxs93("div", { className: "df aic fs0 gap2", children: [
@@ -24061,7 +24102,7 @@ import { useButton as useButton12, useFocusRing as useFocusRing17, useHover as u
24061
24102
  import { trussProps as trussProps102, maybeCssVar as maybeCssVar54 } from "@homebound/truss/runtime";
24062
24103
  import { jsx as jsx195, jsxs as jsxs97 } from "react/jsx-runtime";
24063
24104
  import { createElement as createElement5 } from "react";
24064
- var __maybeInc20 = (inc) => {
24105
+ var __maybeInc21 = (inc) => {
24065
24106
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
24066
24107
  };
24067
24108
  function Stepper(props) {
@@ -24117,7 +24158,7 @@ function Stepper(props) {
24117
24158
  transition: "transition_width_200ms",
24118
24159
  height: "h100",
24119
24160
  width: ["w_var", {
24120
- "--width": maybeCssVar54(__maybeInc20(`${(lastCompletedStep + 1) / steps.length * 100}%`))
24161
+ "--width": maybeCssVar54(__maybeInc21(`${(lastCompletedStep + 1) / steps.length * 100}%`))
24121
24162
  }]
24122
24163
  }) }) })
24123
24164
  ] });
@@ -24338,7 +24379,9 @@ var stepperTabStyles = {
24338
24379
  fontSize: "fz_14px",
24339
24380
  lineHeight: "lh_20px",
24340
24381
  overflow: "oh",
24341
- textAlign: "tal"
24382
+ textAlign: "tal",
24383
+ height: "h_48px",
24384
+ transition: "transitionAll"
24342
24385
  },
24343
24386
  hoverStyles: {
24344
24387
  backgroundColor: "bgGray100"
@@ -24363,12 +24406,14 @@ function StepperTabs(props) {
24363
24406
  const {
24364
24407
  steps,
24365
24408
  currentStep,
24366
- onChange
24409
+ onChange,
24410
+ collapsed: forceCollapsed
24367
24411
  } = props;
24368
24412
  const tid = useTestIds(props, "stepperTabs");
24369
24413
  const {
24370
- sm: collapsed
24414
+ sm: isMobile
24371
24415
  } = useBreakpoint();
24416
+ const collapsed = isMobile || !!forceCollapsed;
24372
24417
  const capWidth = steps.length <= 3;
24373
24418
  return /* @__PURE__ */ jsx197("nav", { "aria-label": "steps", className: "w100", ...tid, children: /* @__PURE__ */ jsx197("ol", { ...trussProps104({
24374
24419
  padding: "p_0",
@@ -25005,7 +25050,7 @@ function useToast() {
25005
25050
  // src/layouts/SideNavLayout/SideNavLayout.tsx
25006
25051
  import { trussProps as trussProps107, mergeProps as mergeProps33, maybeCssVar as maybeCssVar57 } from "@homebound/truss/runtime";
25007
25052
  import { jsx as jsx204, jsxs as jsxs104 } from "react/jsx-runtime";
25008
- var __maybeInc21 = (inc) => {
25053
+ var __maybeInc22 = (inc) => {
25009
25054
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25010
25055
  };
25011
25056
  function SideNavLayout(props) {
@@ -25060,11 +25105,11 @@ function SideNavLayoutContent(props) {
25060
25105
  "--zIndex": maybeCssVar57(zIndices.sideNav)
25061
25106
  }],
25062
25107
  top: ["top_var", {
25063
- "--top": maybeCssVar57(__maybeInc21(navTop))
25108
+ "--top": maybeCssVar57(__maybeInc22(navTop))
25064
25109
  }],
25065
25110
  alignSelf: "asfs",
25066
25111
  height: ["h_var", {
25067
- "--height": maybeCssVar57(__maybeInc21(railViewportHeight))
25112
+ "--height": maybeCssVar57(__maybeInc22(railViewportHeight))
25068
25113
  }],
25069
25114
  width: ["w_var", {
25070
25115
  "--width": `${collapsed ? railCollapsedWidthPx : railWidthPx}px`
@@ -25074,7 +25119,7 @@ function SideNavLayoutContent(props) {
25074
25119
  position: "fixed",
25075
25120
  left: "left0",
25076
25121
  top: ["top_var", {
25077
- "--top": maybeCssVar57(__maybeInc21(navTop))
25122
+ "--top": maybeCssVar57(__maybeInc22(navTop))
25078
25123
  }],
25079
25124
  bottom: "bottom0",
25080
25125
  zIndex: ["z_var", {
@@ -25119,7 +25164,7 @@ function SideNavLayoutContent(props) {
25119
25164
  // src/layouts/EnvironmentBannerLayout/EnvironmentBannerLayout.tsx
25120
25165
  import { trussProps as trussProps108, mergeProps as mergeProps34, maybeCssVar as maybeCssVar58 } from "@homebound/truss/runtime";
25121
25166
  import { jsx as jsx205, jsxs as jsxs105 } from "react/jsx-runtime";
25122
- var __maybeInc22 = (inc) => {
25167
+ var __maybeInc23 = (inc) => {
25123
25168
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25124
25169
  };
25125
25170
  function EnvironmentBannerLayout(props) {
@@ -25153,7 +25198,7 @@ function EnvironmentBannerLayout(props) {
25153
25198
  "--zIndex": maybeCssVar58(zIndices.environmentBanner)
25154
25199
  }],
25155
25200
  width: ["w_var", {
25156
- "--width": maybeCssVar58(__maybeInc22(innerWidth))
25201
+ "--width": maybeCssVar58(__maybeInc23(innerWidth))
25157
25202
  }]
25158
25203
  }), ...tid.bannerSticky, children: /* @__PURE__ */ jsx205(EnvironmentBanner, { ...environmentBanner, ...tid.environmentBanner }) }) }),
25159
25204
  children
@@ -25284,7 +25329,7 @@ function useNavbarLayoutHeight() {
25284
25329
 
25285
25330
  // src/layouts/NavbarLayout/NavbarLayout.tsx
25286
25331
  import { jsx as jsx207, jsxs as jsxs106 } from "react/jsx-runtime";
25287
- var __maybeInc23 = (inc) => {
25332
+ var __maybeInc24 = (inc) => {
25288
25333
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25289
25334
  };
25290
25335
  function NavbarLayout(props) {
@@ -25315,7 +25360,7 @@ function NavbarLayout(props) {
25315
25360
  "--zIndex": maybeCssVar59(zIndices.navbar)
25316
25361
  }],
25317
25362
  width: ["w_var", {
25318
- "--width": maybeCssVar59(__maybeInc23(innerWidth))
25363
+ "--width": maybeCssVar59(__maybeInc24(innerWidth))
25319
25364
  }]
25320
25365
  }
25321
25366
  ) : (
@@ -25327,7 +25372,7 @@ function NavbarLayout(props) {
25327
25372
  "--zIndex": maybeCssVar59(zIndices.navbar)
25328
25373
  }],
25329
25374
  width: ["w_var", {
25330
- "--width": maybeCssVar59(__maybeInc23(innerWidth))
25375
+ "--width": maybeCssVar59(__maybeInc24(innerWidth))
25331
25376
  }],
25332
25377
  transition: "transitionTop"
25333
25378
  }
@@ -25389,10 +25434,9 @@ function BaseHeader(props) {
25389
25434
  display: "df",
25390
25435
  justifyContent: "jcsb",
25391
25436
  width: "w100",
25392
- gap: "gap1",
25393
- paddingLeft: "pl3",
25394
- paddingRight: "pr3"
25437
+ gap: "gap1"
25395
25438
  },
25439
+ ...pageContentPaddingX,
25396
25440
  ...{
25397
25441
  ...!bottomSlot ? {
25398
25442
  marginBottom: "mb2"
@@ -25410,6 +25454,7 @@ function BaseHeader(props) {
25410
25454
  }
25411
25455
 
25412
25456
  // src/components/Headers/PageHeader.tsx
25457
+ import { trussProps as trussProps110 } from "@homebound/truss/runtime";
25413
25458
  import { jsx as jsx209 } from "react/jsx-runtime";
25414
25459
  function PageHeader2(props) {
25415
25460
  const {
@@ -25417,7 +25462,7 @@ function PageHeader2(props) {
25417
25462
  ...otherProps
25418
25463
  } = props;
25419
25464
  const tid = useTestIds(otherProps, "header");
25420
- return /* @__PURE__ */ jsx209(BaseHeader, { ...otherProps, bottomSlot: tabs && /* @__PURE__ */ jsx209("div", { className: "pl3 pr3", children: /* @__PURE__ */ jsx209(Tabs, { ...tabs, ...tid.tabs }) }) });
25465
+ return /* @__PURE__ */ jsx209(BaseHeader, { ...otherProps, bottomSlot: tabs && /* @__PURE__ */ jsx209("div", { ...trussProps110(pageContentPaddingX), children: /* @__PURE__ */ jsx209(Tabs, { ...tabs, ...tid.tabs }) }) });
25421
25466
  }
25422
25467
 
25423
25468
  // src/layouts/useBannerAndNavbarHeight.ts
@@ -25428,7 +25473,7 @@ function useBannerAndNavbarHeight() {
25428
25473
  // src/layouts/PageHeaderLayout/PageHeaderLayout.tsx
25429
25474
  import { mergeProps as mergeProps36, maybeCssVar as maybeCssVar60 } from "@homebound/truss/runtime";
25430
25475
  import { jsx as jsx210, jsxs as jsxs108 } from "react/jsx-runtime";
25431
- var __maybeInc24 = (inc) => {
25476
+ var __maybeInc25 = (inc) => {
25432
25477
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25433
25478
  };
25434
25479
  function PageHeaderLayout(props) {
@@ -25458,10 +25503,10 @@ function PageHeaderLayout(props) {
25458
25503
  const innerCss = autoHideState === "static" ? {
25459
25504
  position: "sticky",
25460
25505
  left: ["left_var", {
25461
- "--left": maybeCssVar60(__maybeInc24(headerLeft))
25506
+ "--left": maybeCssVar60(__maybeInc25(headerLeft))
25462
25507
  }],
25463
25508
  width: ["w_var", {
25464
- "--width": maybeCssVar60(__maybeInc24(headerWidth))
25509
+ "--width": maybeCssVar60(__maybeInc25(headerWidth))
25465
25510
  }],
25466
25511
  zIndex: ["z_var", {
25467
25512
  "--zIndex": maybeCssVar60(zIndices.pageStickyHeader)
@@ -25469,10 +25514,10 @@ function PageHeaderLayout(props) {
25469
25514
  } : {
25470
25515
  position: "fixed",
25471
25516
  left: ["left_var", {
25472
- "--left": maybeCssVar60(__maybeInc24(headerLeft))
25517
+ "--left": maybeCssVar60(__maybeInc25(headerLeft))
25473
25518
  }],
25474
25519
  width: ["w_var", {
25475
- "--width": maybeCssVar60(__maybeInc24(headerWidth))
25520
+ "--width": maybeCssVar60(__maybeInc25(headerWidth))
25476
25521
  }],
25477
25522
  zIndex: ["z_var", {
25478
25523
  "--zIndex": maybeCssVar60(zIndices.pageStickyHeader)
@@ -25497,6 +25542,175 @@ function PageHeaderLayout(props) {
25497
25542
  /* @__PURE__ */ jsx210("div", { className: "df fdc fg1 mh0 w100", ...tid.body, children })
25498
25543
  ] }) });
25499
25544
  }
25545
+
25546
+ // src/layouts/WorkflowLayout/WorkflowLayout.tsx
25547
+ import { useCallback as useCallback40, useLayoutEffect as useLayoutEffect10, useRef as useRef67, useState as useState59 } from "react";
25548
+
25549
+ // src/components/Headers/WorkflowHeader.tsx
25550
+ import { jsx as jsx211 } from "react/jsx-runtime";
25551
+ function WorkflowHeader(props) {
25552
+ const { stepperTabs, ...otherProps } = props;
25553
+ const tid = useTestIds(otherProps, "header");
25554
+ return /* @__PURE__ */ jsx211(BaseHeader, { ...otherProps, bottomSlot: /* @__PURE__ */ jsx211(StepperTabs, { ...stepperTabs, ...tid.stepperTabs }) });
25555
+ }
25556
+
25557
+ // src/layouts/WorkflowLayout/WorkflowActions.tsx
25558
+ import { jsx as jsx212, jsxs as jsxs109 } from "react/jsx-runtime";
25559
+ function WorkflowActions(props) {
25560
+ const {
25561
+ isFirstStep,
25562
+ isLastStep,
25563
+ isMobile,
25564
+ onBack,
25565
+ onCancel,
25566
+ onSaveAndExit,
25567
+ completeLabel,
25568
+ onComplete,
25569
+ onContinue,
25570
+ primaryDisabled
25571
+ } = props;
25572
+ return /* @__PURE__ */ jsxs109("div", { className: "df aic jcsb sm_w100", children: [
25573
+ /* @__PURE__ */ jsx212("div", { className: "df aic", children: !isFirstStep && (isMobile ? /* @__PURE__ */ jsx212(IconButton, { icon: "arrowBack", label: "Back", onClick: onBack }) : /* @__PURE__ */ jsx212(Button, { label: "Back", icon: "chevronLeft", variant: "tertiary", onClick: onBack })) }),
25574
+ /* @__PURE__ */ jsxs109("div", { className: "df aic gap1", children: [
25575
+ /* @__PURE__ */ jsx212(Button, { label: "Cancel", variant: "quaternary", onClick: onCancel }),
25576
+ onSaveAndExit && /* @__PURE__ */ jsx212(Button, { label: "Save & Exit", variant: "secondary", onClick: onSaveAndExit }),
25577
+ isLastStep ? /* @__PURE__ */ jsx212(Button, { label: completeLabel, variant: "primary", onClick: onComplete, disabled: primaryDisabled }) : /* @__PURE__ */ jsx212(Button, { label: "Continue", variant: "primary", onClick: onContinue, disabled: primaryDisabled })
25578
+ ] })
25579
+ ] });
25580
+ }
25581
+
25582
+ // src/layouts/WorkflowLayout/WorkflowLayout.tsx
25583
+ import { trussProps as trussProps111, mergeProps as mergeProps37, maybeCssVar as maybeCssVar61 } from "@homebound/truss/runtime";
25584
+ import { jsx as jsx213, jsxs as jsxs110 } from "react/jsx-runtime";
25585
+ var __maybeInc26 = (inc) => {
25586
+ return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25587
+ };
25588
+ function WorkflowLayout(props) {
25589
+ const {
25590
+ steps,
25591
+ defaultStep,
25592
+ onCancel,
25593
+ completeLabel,
25594
+ onComplete,
25595
+ onSaveAndExit,
25596
+ ...headerProps
25597
+ } = props;
25598
+ const tabSteps = steps.map((step) => ({
25599
+ ...step,
25600
+ value: defaultTestId(step.label)
25601
+ }));
25602
+ const [currentStep, setCurrentStep] = useState59(() => getInitialStep(tabSteps, defaultStep));
25603
+ const tid = useTestIds(props, "workflowLayout");
25604
+ const {
25605
+ sm: isMobile
25606
+ } = useBreakpoint();
25607
+ const bannerAndNavbarHeight = useBannerAndNavbarHeight();
25608
+ const bannerAndNavbarHeightRef = useRef67(bannerAndNavbarHeight);
25609
+ bannerAndNavbarHeightRef.current = bannerAndNavbarHeight;
25610
+ const getBannerAndNavbarHeight = useCallback40(() => bannerAndNavbarHeightRef.current, []);
25611
+ const headerMetricsRef = useRef67(null);
25612
+ const spacerRef = useRef67(null);
25613
+ const headerHeight = useMeasuredHeight(headerMetricsRef, true);
25614
+ const {
25615
+ state: scrollState
25616
+ } = useAutoHideOnScroll(spacerRef, true, getBannerAndNavbarHeight);
25617
+ const collapsed = scrollState === "hidden";
25618
+ const headerWidth = documentScrollChromeWidth();
25619
+ const outerTop = bannerAndNavbarChromeTop();
25620
+ const cssVars = headerHeight > 0 ? {
25621
+ [beamPageHeaderLayoutHeightVar]: `${headerHeight}px`
25622
+ } : void 0;
25623
+ const currentIndex = isValidStep(tabSteps, currentStep) ? tabSteps.findIndex((step) => step.value === currentStep) : 0;
25624
+ const isFirstStep = currentIndex <= 0;
25625
+ const isLastStep = currentIndex === tabSteps.length - 1;
25626
+ const activeStep = tabSteps[currentIndex];
25627
+ const buttons = /* @__PURE__ */ jsx213(WorkflowActions, { isFirstStep, isLastStep, isMobile, onBack: () => setCurrentStep(tabSteps[currentIndex - 1].value), onCancel, onSaveAndExit, completeLabel, onComplete, primaryDisabled: !activeStep?.completed, onContinue: () => setCurrentStep(tabSteps[currentIndex + 1].value) });
25628
+ const showFooter = isMobile;
25629
+ useLayoutEffect10(() => {
25630
+ const root = document.documentElement;
25631
+ const previous = root.style.getPropertyValue(beamWorkflowLayoutFooterHeightVar);
25632
+ root.style.setProperty(beamWorkflowLayoutFooterHeightVar, showFooter ? `${mobileFooterHeightPx}px` : "0px");
25633
+ return () => {
25634
+ if (previous) {
25635
+ root.style.setProperty(beamWorkflowLayoutFooterHeightVar, previous);
25636
+ } else {
25637
+ root.style.removeProperty(beamWorkflowLayoutFooterHeightVar);
25638
+ }
25639
+ };
25640
+ }, [showFooter]);
25641
+ const headerEl = /* @__PURE__ */ jsx213(WorkflowHeader, { ...headerProps, rightSlot: isMobile ? void 0 : buttons, stepperTabs: {
25642
+ steps: tabSteps,
25643
+ currentStep,
25644
+ onChange: setCurrentStep,
25645
+ collapsed
25646
+ } });
25647
+ return /* @__PURE__ */ jsx213(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ jsxs110("div", { ...mergeProps37(void 0, cssVars, {
25648
+ display: "df",
25649
+ flexDirection: "fdc",
25650
+ width: "w100"
25651
+ }), ...tid, children: [
25652
+ /* @__PURE__ */ jsx213("div", { ref: spacerRef, ...mergeProps37(void 0, {
25653
+ height: headerHeight
25654
+ }, {
25655
+ flexShrink: "fs0",
25656
+ width: "w100"
25657
+ }), ...tid.spacer, children: /* @__PURE__ */ jsx213("div", { ref: headerMetricsRef, ...trussProps111({
25658
+ position: "fixed",
25659
+ width: ["w_var", {
25660
+ "--width": maybeCssVar61(__maybeInc26(headerWidth))
25661
+ }],
25662
+ zIndex: ["z_var", {
25663
+ "--zIndex": maybeCssVar61(zIndices.pageStickyHeader)
25664
+ }],
25665
+ top: ["top_var", {
25666
+ "--top": maybeCssVar61(__maybeInc26(outerTop))
25667
+ }]
25668
+ }), ...tid.header, children: headerEl }) }),
25669
+ /* @__PURE__ */ jsx213("div", { className: "df fdc fg1 mh0 w100", ...tid.body, children: activeStep?.content }),
25670
+ showFooter && /* @__PURE__ */ jsx213("div", { ...trussProps111({
25671
+ flexShrink: "fs0",
25672
+ width: "w100",
25673
+ height: ["h_var", {
25674
+ "--height": `${mobileFooterHeightPx}px`
25675
+ }]
25676
+ }) }),
25677
+ showFooter && /* @__PURE__ */ jsx213("div", { ...trussProps111({
25678
+ ...{
25679
+ position: "fixed",
25680
+ bottom: "bottom0",
25681
+ width: ["w_var", {
25682
+ "--width": maybeCssVar61(__maybeInc26(headerWidth))
25683
+ }],
25684
+ height: ["h_var", {
25685
+ "--height": `${mobileFooterHeightPx}px`
25686
+ }],
25687
+ zIndex: ["z_var", {
25688
+ "--zIndex": maybeCssVar61(zIndices.pageStickyFooter)
25689
+ }],
25690
+ display: "df",
25691
+ alignItems: "aic",
25692
+ justifyContent: "jcfe",
25693
+ gap: "gap1",
25694
+ borderTopStyle: "bts_solid",
25695
+ borderTopWidth: "btw_1px",
25696
+ borderColor: ["bc_var", {
25697
+ "--borderColor": "var(--b-surface-separator)"
25698
+ }],
25699
+ backgroundColor: ["bgColor_var", {
25700
+ "--backgroundColor": "var(--b-surface)"
25701
+ }]
25702
+ },
25703
+ ...pageContentPaddingX
25704
+ }), ...tid.footer, children: buttons })
25705
+ ] }) });
25706
+ }
25707
+ var mobileFooterHeightPx = 80;
25708
+ function isValidStep(steps, value) {
25709
+ return steps.some((step) => step.value === value);
25710
+ }
25711
+ function getInitialStep(steps, defaultStep) {
25712
+ return defaultStep !== void 0 && isValidStep(steps, defaultStep) ? defaultStep : steps[0]?.value;
25713
+ }
25500
25714
  export {
25501
25715
  ASC,
25502
25716
  Accordion,
@@ -25664,6 +25878,7 @@ export {
25664
25878
  Tooltip,
25665
25879
  TreeSelectField,
25666
25880
  ViewToggleButton,
25881
+ WorkflowLayout,
25667
25882
  actionColumn,
25668
25883
  applyRowFn,
25669
25884
  assignDefaultColumnIds,
@@ -25675,6 +25890,7 @@ export {
25675
25890
  beamPageHeaderLayoutHeightVar,
25676
25891
  beamSideNavLayoutWidthVar,
25677
25892
  beamTableActionsHeightVar,
25893
+ beamWorkflowLayoutFooterHeightVar,
25678
25894
  booleanFilter,
25679
25895
  boundCheckboxField,
25680
25896
  boundCheckboxGroupField,
@@ -25737,10 +25953,12 @@ export {
25737
25953
  getColumnBorderCss,
25738
25954
  getDateFormat,
25739
25955
  getFirstOrLastCellCss,
25956
+ getFloatingBottomOffset,
25740
25957
  getJustification,
25741
25958
  getNavLinkStyles,
25742
25959
  getTableRefWidthStyles,
25743
25960
  getTableStyles,
25961
+ headerContentPaddingX,
25744
25962
  headerRenderFn,
25745
25963
  hoverStyles,
25746
25964
  increment,
@@ -25770,6 +25988,8 @@ export {
25770
25988
  nonKindGridColumnKeys,
25771
25989
  numberRangeFilter,
25772
25990
  numericColumn,
25991
+ pageContentGutterPx,
25992
+ pageContentPaddingX,
25773
25993
  parseDate,
25774
25994
  parseDateRange,
25775
25995
  parseWidthToPx,