@homebound/beam 3.53.0 → 3.55.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.cjs CHANGED
@@ -136,7 +136,6 @@ __export(index_exports, {
136
136
  NavbarLayout: () => NavbarLayout,
137
137
  NumberField: () => NumberField,
138
138
  OpenModal: () => OpenModal,
139
- PageHeader: () => PageHeader2,
140
139
  PageHeaderLayout: () => PageHeaderLayout,
141
140
  Pagination: () => Pagination,
142
141
  Palette: () => Palette,
@@ -4931,6 +4930,7 @@ var Icons = {
4931
4930
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M14 20C13.4477 20 13 19.5523 13 19L13 17C13 16.4477 13.4477 16 14 16L16 16C16.5523 16 17 16.4477 17 17L17 19C17 19.5523 16.5523 20 16 20L14 20Z" })
4932
4931
  ] }),
4933
4932
  move: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M18 11H13V6H16L12 2L8 6H11V11H6V8L2 12L6 16V13H11V18H8L12 22L16 18H13V13H18V16L22 12L18 8V11Z" }),
4933
+ merge: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M6.7059 4.4196L11.9943 9.2277L17.2826 4.4207V2H19.6355V5.4616L13.1765 11.3336V15.742H16.6944L11.9885 21.6244L7.2826 15.742H10.812V11.3336L4.3529 5.4616V2H6.7059V4.4196Z" }),
4934
4934
  x: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M16.192 6.34399L11.949 10.586L7.70697 6.34399L6.29297 7.75799L10.535 12L6.29297 16.242L7.70697 17.656L11.949 13.414L16.192 17.656L17.606 16.242L13.364 12L17.606 7.75799L16.192 6.34399Z" }),
4935
4935
  loader: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 22C17.421 22 22 17.421 22 12H20C20 16.337 16.337 20 12 20C7.663 20 4 16.337 4 12C4 7.664 7.663 4 12 4V2C6.579 2 2 6.58 2 12C2 17.421 6.579 22 12 22Z" }),
4936
4936
  link: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
@@ -24092,326 +24092,8 @@ function NavbarUserMenu({
24092
24092
  }, placement: "right", ...tid }) });
24093
24093
  }
24094
24094
 
24095
- // src/components/Tabs.tsx
24096
- var import_change_case9 = require("change-case");
24097
- var import_react138 = require("react");
24098
- var import_react_aria62 = require("react-aria");
24099
- var import_react_router = require("react-router");
24100
- var import_react_router_dom8 = require("react-router-dom");
24101
- var import_runtime110 = require("@homebound/truss/runtime");
24102
- var import_jsx_runtime190 = require("react/jsx-runtime");
24103
- function TabsWithContent(props) {
24104
- const styles = hideTabs(props) ? {} : {
24105
- paddingTop: "pt3"
24106
- };
24107
- return /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)(import_jsx_runtime190.Fragment, { children: [
24108
- /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(Tabs, { ...props }),
24109
- /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(TabContent, { ...props, contentXss: {
24110
- ...styles,
24111
- ...props.contentXss
24112
- } })
24113
- ] });
24114
- }
24115
- function TabContent(props) {
24116
- const tid = useTestIds(props, "tab");
24117
- const {
24118
- tabs,
24119
- contentXss = {},
24120
- omitFullBleedPadding = false
24121
- } = props;
24122
- const location = (0, import_react_router_dom8.useLocation)();
24123
- const selectedTab = isRouteTabs(props) ? props.tabs.find((t) => {
24124
- const paths = Array.isArray(t.path) ? t.path : [t.path];
24125
- return paths.some((p) => !!(0, import_react_router.matchPath)({
24126
- path: p,
24127
- end: true
24128
- }, location.pathname));
24129
- }) || tabs[0] : props.tabs.find((tab) => tab.value === props.selected) || tabs[0];
24130
- const uniqueValue = uniqueTabValue(selectedTab);
24131
- return (
24132
- // Using FullBleed to allow the tab's bgColor to extend to the edges of the <ScrollableContent /> element.
24133
- // Omit the padding from `FullBleed` if the caller passes in the `paddingLeft/Right` styles.
24134
- /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(FullBleed, { omitPadding: omitFullBleedPadding, children: /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("div", { "aria-labelledby": `${uniqueValue}-tab`, id: `${uniqueValue}-tabPanel`, role: "tabpanel", tabIndex: 0, ...tid.panel, ...(0, import_runtime110.trussProps)(contentXss), children: selectedTab.render() }) })
24135
- );
24136
- }
24137
- function Tabs(props) {
24138
- const {
24139
- ariaLabel,
24140
- tabs,
24141
- includeBottomBorder,
24142
- right,
24143
- ...others
24144
- } = props;
24145
- const location = (0, import_react_router_dom8.useLocation)();
24146
- const selected = isRouteTabs(props) ? uniqueTabValue(props.tabs.find((t) => {
24147
- const paths = Array.isArray(t.path) ? t.path : [t.path];
24148
- return paths.some((p) => !!(0, import_react_router.matchPath)({
24149
- path: p,
24150
- end: true
24151
- }, location.pathname));
24152
- }) || props.tabs[0]) : props.selected;
24153
- const {
24154
- isFocusVisible,
24155
- focusProps
24156
- } = (0, import_react_aria62.useFocusRing)();
24157
- const tid = useTestIds(others, "tabs");
24158
- const [active, setActive] = (0, import_react138.useState)(selected);
24159
- const ref = (0, import_react138.useRef)(null);
24160
- (0, import_react138.useEffect)(() => setActive(selected), [selected]);
24161
- function onKeyUp(e) {
24162
- if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
24163
- const nextTabValue = getNextTabValue(active, e.key, tabs);
24164
- setActive(nextTabValue);
24165
- document.getElementById(`${nextTabValue}-tab`)?.focus();
24166
- }
24167
- }
24168
- function onClick(value) {
24169
- !isRouteTabs(props) && props.onChange(value);
24170
- }
24171
- function onBlur(e) {
24172
- if (!(ref.current && ref.current.contains(e.relatedTarget))) {
24173
- setActive(selected);
24174
- }
24175
- }
24176
- return /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)("div", { ...(0, import_runtime110.trussProps)({
24177
- ...{
24178
- display: "df",
24179
- alignItems: "aic",
24180
- overflow: "oa",
24181
- whiteSpace: "wsnw",
24182
- gap: "gap1"
24183
- },
24184
- ...includeBottomBorder ? {
24185
- ...{
24186
- borderBottomStyle: "bbs_solid",
24187
- borderBottomWidth: "bbw_1px",
24188
- borderColor: "bcGray200"
24189
- }
24190
- } : {}
24191
- }), children: [
24192
- !hideTabs(props) && /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("div", { ref, className: "dif gap1 asfe", "aria-label": ariaLabel, role: "tablist", ...tid, children: tabs.map((tab) => {
24193
- const uniqueValue = uniqueTabValue(tab);
24194
- return /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(TabImpl, { active: active === uniqueValue, focusProps, isFocusVisible, onClick, onKeyUp, onBlur, tab, ...tid[defaultTestId(uniqueValue)] }, uniqueValue);
24195
- }) }),
24196
- right && /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("div", { className: "mla df aic gap1 pb1", children: right })
24197
- ] });
24198
- }
24199
- function TabImpl(props) {
24200
- const {
24201
- tab,
24202
- onClick,
24203
- active,
24204
- onKeyUp,
24205
- onBlur,
24206
- focusProps,
24207
- isFocusVisible = false,
24208
- ...others
24209
- } = props;
24210
- const {
24211
- disabled = false,
24212
- name: label,
24213
- icon,
24214
- endAdornment
24215
- } = tab;
24216
- const isDisabled = !!disabled;
24217
- const {
24218
- hoverProps,
24219
- isHovered
24220
- } = (0, import_react_aria62.useHover)({
24221
- isDisabled
24222
- });
24223
- const {
24224
- baseStyles: baseStyles4,
24225
- activeStyles: activeStyles3,
24226
- focusRingStyles: focusRingStyles2,
24227
- hoverStyles: hoverStyles4,
24228
- disabledStyles: disabledStyles3,
24229
- activeHoverStyles
24230
- } = (0, import_react138.useMemo)(() => getTabStyles(), []);
24231
- const uniqueValue = uniqueTabValue(tab);
24232
- const tabProps = {
24233
- "aria-controls": `${uniqueValue}-tabPanel`,
24234
- "aria-selected": active,
24235
- "aria-disabled": isDisabled || void 0,
24236
- id: `${uniqueValue}-tab`,
24237
- role: "tab",
24238
- tabIndex: active ? 0 : -1,
24239
- ...others,
24240
- ...(0, import_runtime110.trussProps)({
24241
- ...baseStyles4,
24242
- ...active && activeStyles3,
24243
- ...isDisabled && disabledStyles3,
24244
- ...isHovered && hoverStyles4,
24245
- ...isHovered && active && activeHoverStyles,
24246
- ...isFocusVisible && active && focusRingStyles2
24247
- })
24248
- };
24249
- const interactiveProps = (0, import_react_aria62.mergeProps)(focusProps, hoverProps, {
24250
- onKeyUp,
24251
- onBlur,
24252
- ...isRouteTab(tab) ? {} : {
24253
- onClick: () => onClick(tab.value)
24254
- }
24255
- });
24256
- const tabLabel = /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)(import_jsx_runtime190.Fragment, { children: [
24257
- label,
24258
- (icon || endAdornment) && /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("span", { className: "ml1", children: icon ? /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(Icon, { icon }) : endAdornment })
24259
- ] });
24260
- return isDisabled ? maybeTooltip({
24261
- title: resolveTooltip(disabled),
24262
- placement: "top",
24263
- children: /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("div", { ...tabProps, children: tabLabel })
24264
- }) : isRouteTab(tab) ? /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(import_react_router_dom8.Link, { ...(0, import_react_aria62.mergeProps)(tabProps, interactiveProps, {
24265
- className: "navLink"
24266
- }), to: tab.href, children: tabLabel }) : /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("button", { ...{
24267
- ...tabProps,
24268
- ...interactiveProps
24269
- }, children: tabLabel });
24270
- }
24271
- function getTabStyles() {
24272
- const borderBottomWidthPx = 4;
24273
- const verticalPaddingPx = 6;
24274
- const borderBottomStyles = {
24275
- borderBottomStyle: "bbs_solid",
24276
- borderBottomWidth: ["borderBottomWidth_var", {
24277
- "--borderBottomWidth": (0, import_runtime110.maybeCssVar)(`${borderBottomWidthPx}px`)
24278
- }],
24279
- paddingBottom: ["pb_var", {
24280
- "--paddingBottom": `${verticalPaddingPx - borderBottomWidthPx}px`
24281
- }]
24282
- };
24283
- return {
24284
- baseStyles: {
24285
- display: "df",
24286
- alignItems: "aic",
24287
- height: "h_32px",
24288
- paddingTop: ["py_var", {
24289
- "--paddingTop": `${verticalPaddingPx}px`
24290
- }],
24291
- paddingBottom: ["py_var", {
24292
- "--paddingBottom": `${verticalPaddingPx}px`
24293
- }],
24294
- paddingLeft: "pl1",
24295
- paddingRight: "pr1",
24296
- outline: "outline0",
24297
- color: "gray700",
24298
- width: "width_fit_content",
24299
- cursor: "cursorPointer",
24300
- fontWeight: "fw4",
24301
- fontSize: "fz_14px",
24302
- lineHeight: "lh_20px"
24303
- },
24304
- activeStyles: {
24305
- ...{
24306
- borderColor: "bcBlue700",
24307
- fontWeight: "fw6",
24308
- fontSize: "fz_14px",
24309
- lineHeight: "lh_20px",
24310
- color: "gray900"
24311
- },
24312
- ...borderBottomStyles
24313
- },
24314
- disabledStyles: {
24315
- color: "gray400",
24316
- cursor: "cursorNotAllowed"
24317
- },
24318
- focusRingStyles: {
24319
- backgroundColor: "bgBlue50",
24320
- boxShadow: "bshFocus"
24321
- },
24322
- hoverStyles: {
24323
- ...{
24324
- borderColor: "bcGray400"
24325
- },
24326
- ...borderBottomStyles
24327
- },
24328
- activeHoverStyles: {
24329
- ...{
24330
- backgroundColor: "bgBlue50",
24331
- borderColor: "bcBlue700"
24332
- },
24333
- ...borderBottomStyles
24334
- }
24335
- };
24336
- }
24337
- function getNextTabValue(selected, key, tabs) {
24338
- const enabledTabs = tabs.filter((tab) => tab.disabled !== true);
24339
- const tabsToScan = key === "ArrowRight" ? enabledTabs : enabledTabs.reverse();
24340
- const currentIndex = tabsToScan.findIndex((tab) => uniqueTabValue(tab) === selected);
24341
- const nextIndex = currentIndex === tabsToScan.length - 1 ? 0 : currentIndex + 1;
24342
- return uniqueTabValue(tabsToScan[nextIndex]);
24343
- }
24344
- function isRouteTabs(props) {
24345
- const {
24346
- tabs
24347
- } = props;
24348
- return tabs.length > 0 && isRouteTab(tabs[0]);
24349
- }
24350
- function isRouteTab(tab) {
24351
- return "path" in tab;
24352
- }
24353
- function uniqueTabValue(tab) {
24354
- return isRouteTab(tab) ? (0, import_change_case9.camelCase)(tab.name) : tab.value;
24355
- }
24356
- function hideTabs(props) {
24357
- return props.alwaysShowAllTabs ? false : props.tabs.filter((t) => !t.disabled).length === 1;
24358
- }
24359
-
24360
- // src/components/PageHeader.tsx
24361
- var import_runtime111 = require("@homebound/truss/runtime");
24362
- var import_jsx_runtime191 = require("react/jsx-runtime");
24363
- function PageHeader2(props) {
24364
- const {
24365
- title,
24366
- documentTitleSuffix,
24367
- rightSlot,
24368
- tabs,
24369
- breadcrumbs,
24370
- ...otherProps
24371
- } = props;
24372
- const tid = useTestIds(otherProps, "pageHeader");
24373
- useDocumentTitle(title, documentTitleSuffix);
24374
- return /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)("header", { ...tid, ...(0, import_runtime111.trussProps)({
24375
- display: "df",
24376
- flexDirection: "fdc",
24377
- paddingTop: "pt3",
24378
- paddingLeft: "pl3",
24379
- paddingRight: "pr3",
24380
- borderBottomStyle: "bbs_solid",
24381
- borderBottomWidth: "bbw_1px",
24382
- gap: "gap2",
24383
- borderColor: ["bc_var", {
24384
- "--borderColor": "var(--b-surface-separator)"
24385
- }],
24386
- backgroundColor: ["bgColor_var", {
24387
- "--backgroundColor": "var(--b-surface)"
24388
- }]
24389
- }), children: [
24390
- /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)("div", { ...(0, import_runtime111.trussProps)({
24391
- ...{
24392
- display: "df",
24393
- justifyContent: "jcsb",
24394
- width: "w100",
24395
- gap: "gap1"
24396
- },
24397
- ...{
24398
- ...!tabs ? {
24399
- marginBottom: "mb2"
24400
- } : {}
24401
- }
24402
- }), children: [
24403
- /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)("div", { className: "mw0", children: [
24404
- breadcrumbs && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(Breadcrumbs, { ...breadcrumbs }),
24405
- /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("h1", { ...tid.title, className: "fw6 fz_20px lh_28px", children: title })
24406
- ] }),
24407
- /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("div", { className: "fs0", children: rightSlot })
24408
- ] }),
24409
- tabs && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(Tabs, { ...tabs })
24410
- ] });
24411
- }
24412
-
24413
24095
  // src/components/Pagination.tsx
24414
- var import_jsx_runtime192 = require("react/jsx-runtime");
24096
+ var import_jsx_runtime190 = require("react/jsx-runtime");
24415
24097
  var defaultPage = {
24416
24098
  offset: 0,
24417
24099
  limit: 100
@@ -24443,25 +24125,25 @@ function Pagination(props) {
24443
24125
  }
24444
24126
  }
24445
24127
  const tid = useTestIds(props, "pagination");
24446
- return /* @__PURE__ */ (0, import_jsx_runtime192.jsxs)("div", { className: "df bcGray200 bts_solid btw_1px fw4 fz_12px lh_16px gray500 pl2 pr2 pt2", ...tid, children: [
24447
- /* @__PURE__ */ (0, import_jsx_runtime192.jsx)("div", { className: "df mta mba mr2", ...tid.pageSizeLabel, children: "Page size:" }),
24448
- /* @__PURE__ */ (0, import_jsx_runtime192.jsx)("div", { className: "w_78px", children: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(SelectField, { compact: true, label: "Page Size", labelStyle: "hidden", options: pageOptions, value: pageSize, onSelect: (val) => set({
24128
+ return /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)("div", { className: "df bcGray200 bts_solid btw_1px fw4 fz_12px lh_16px gray500 pl2 pr2 pt2", ...tid, children: [
24129
+ /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("div", { className: "df mta mba mr2", ...tid.pageSizeLabel, children: "Page size:" }),
24130
+ /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("div", { className: "w_78px", children: /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(SelectField, { compact: true, label: "Page Size", labelStyle: "hidden", options: pageOptions, value: pageSize, onSelect: (val) => set({
24449
24131
  pageNumber: 1,
24450
24132
  pageSize: val
24451
24133
  }), autoSort: false, ...tid.pageSize }) }),
24452
- /* @__PURE__ */ (0, import_jsx_runtime192.jsxs)("div", { className: "mla mta mba df", children: [
24453
- /* @__PURE__ */ (0, import_jsx_runtime192.jsxs)("div", { className: "df mta mba mr2", ...tid.pageInfoLabel, children: [
24134
+ /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)("div", { className: "mla mta mba df", children: [
24135
+ /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)("div", { className: "df mta mba mr2", ...tid.pageInfoLabel, children: [
24454
24136
  first,
24455
24137
  " ",
24456
24138
  showLast ? `- ${last}` : "",
24457
24139
  " of ",
24458
24140
  totalCount
24459
24141
  ] }),
24460
- /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(IconButton, { icon: "chevronLeft", color: hasPrevPage ? "rgba(29, 78, 216, 1)" /* Blue700 */ : "rgba(236, 235, 235, 1)" /* Gray200 */, onClick: () => set({
24142
+ /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(IconButton, { icon: "chevronLeft", color: hasPrevPage ? "rgba(29, 78, 216, 1)" /* Blue700 */ : "rgba(236, 235, 235, 1)" /* Gray200 */, onClick: () => set({
24461
24143
  pageNumber: pageNumber - 1,
24462
24144
  pageSize
24463
24145
  }), disabled: !hasPrevPage, ...tid.previousIcon }),
24464
- /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(IconButton, { icon: "chevronRight", color: hasNextPage ? "rgba(29, 78, 216, 1)" /* Blue700 */ : "rgba(236, 235, 235, 1)" /* Gray200 */, onClick: () => set({
24146
+ /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(IconButton, { icon: "chevronRight", color: hasNextPage ? "rgba(29, 78, 216, 1)" /* Blue700 */ : "rgba(236, 235, 235, 1)" /* Gray200 */, onClick: () => set({
24465
24147
  pageNumber: pageNumber + 1,
24466
24148
  pageSize
24467
24149
  }), disabled: !hasNextPage, ...tid.nextIcon })
@@ -24483,10 +24165,10 @@ function toPageNumberSize(page) {
24483
24165
  }
24484
24166
 
24485
24167
  // src/components/ScrollShadows.tsx
24486
- var import_utils160 = require("@react-aria/utils");
24487
- var import_react139 = require("react");
24488
- var import_runtime112 = require("@homebound/truss/runtime");
24489
- var import_jsx_runtime193 = require("react/jsx-runtime");
24168
+ var import_utils158 = require("@react-aria/utils");
24169
+ var import_react138 = require("react");
24170
+ var import_runtime110 = require("@homebound/truss/runtime");
24171
+ var import_jsx_runtime191 = require("react/jsx-runtime");
24490
24172
  function ScrollShadows(props) {
24491
24173
  const {
24492
24174
  children,
@@ -24502,15 +24184,15 @@ function ScrollShadows(props) {
24502
24184
  if (!bgColor.includes("rgba")) {
24503
24185
  throw new Error("ScrollShadows: bgColor prop must be in the format 'rgba(255, 255, 255, 1)'");
24504
24186
  }
24505
- const [showStartShadow, setShowStartShadow] = (0, import_react139.useState)(false);
24506
- const [showEndShadow, setShowEndShadow] = (0, import_react139.useState)(false);
24507
- const scrollRef = (0, import_react139.useRef)(null);
24508
- const [startShadowStyles, endShadowStyles] = (0, import_react139.useMemo)(() => {
24187
+ const [showStartShadow, setShowStartShadow] = (0, import_react138.useState)(false);
24188
+ const [showEndShadow, setShowEndShadow] = (0, import_react138.useState)(false);
24189
+ const scrollRef = (0, import_react138.useRef)(null);
24190
+ const [startShadowStyles, endShadowStyles] = (0, import_react138.useMemo)(() => {
24509
24191
  const transparentBgColor = bgColor.replace(/,1\)$/, ",0)");
24510
24192
  const commonStyles = {
24511
24193
  position: "absolute",
24512
24194
  zIndex: ["z_var", {
24513
- "--zIndex": (0, import_runtime112.maybeCssVar)(zIndices.scrollShadow)
24195
+ "--zIndex": (0, import_runtime110.maybeCssVar)(zIndices.scrollShadow)
24514
24196
  }],
24515
24197
  pointerEvents: "pointerEvents_none"
24516
24198
  };
@@ -24543,7 +24225,7 @@ function ScrollShadows(props) {
24543
24225
  ...startShadowStyles2,
24544
24226
  ...{
24545
24227
  background: ["background_var", {
24546
- "--background": (0, import_runtime112.maybeCssVar)(startGradient)
24228
+ "--background": (0, import_runtime110.maybeCssVar)(startGradient)
24547
24229
  }]
24548
24230
  }
24549
24231
  }, {
@@ -24551,12 +24233,12 @@ function ScrollShadows(props) {
24551
24233
  ...endShadowStyles2,
24552
24234
  ...{
24553
24235
  background: ["background_var", {
24554
- "--background": (0, import_runtime112.maybeCssVar)(endGradient)
24236
+ "--background": (0, import_runtime110.maybeCssVar)(endGradient)
24555
24237
  }]
24556
24238
  }
24557
24239
  }];
24558
24240
  }, [horizontal, bgColor]);
24559
- const updateScrollProps = (0, import_react139.useCallback)((el) => {
24241
+ const updateScrollProps = (0, import_react138.useCallback)((el) => {
24560
24242
  const {
24561
24243
  scrollTop,
24562
24244
  scrollHeight,
@@ -24571,15 +24253,15 @@ function ScrollShadows(props) {
24571
24253
  setShowStartShadow(start > 0);
24572
24254
  setShowEndShadow(start + boxSize < end);
24573
24255
  }, [horizontal]);
24574
- const onResize = (0, import_react139.useCallback)(() => scrollRef.current && updateScrollProps(scrollRef.current), [updateScrollProps]);
24575
- (0, import_utils160.useResizeObserver)({
24256
+ const onResize = (0, import_react138.useCallback)(() => scrollRef.current && updateScrollProps(scrollRef.current), [updateScrollProps]);
24257
+ (0, import_utils158.useResizeObserver)({
24576
24258
  ref: scrollRef,
24577
24259
  onResize
24578
24260
  });
24579
- return /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)("div", { ...(0, import_runtime112.trussProps)({
24261
+ return /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)("div", { ...(0, import_runtime110.trussProps)({
24580
24262
  display: "df",
24581
24263
  flexDirection: ["fd_var", {
24582
- "--flexDirection": (0, import_runtime112.maybeCssVar)(!horizontal ? "column" : "row")
24264
+ "--flexDirection": (0, import_runtime110.maybeCssVar)(!horizontal ? "column" : "row")
24583
24265
  }],
24584
24266
  position: "relative",
24585
24267
  overflow: "oh",
@@ -24592,23 +24274,23 @@ function ScrollShadows(props) {
24592
24274
  width: width2
24593
24275
  }
24594
24276
  }), ...tid, children: [
24595
- /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("div", { ...(0, import_runtime112.trussProps)({
24277
+ /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("div", { ...(0, import_runtime110.trussProps)({
24596
24278
  ...startShadowStyles,
24597
24279
  ...{
24598
24280
  opacity: ["o_var", {
24599
- "--opacity": (0, import_runtime112.maybeCssVar)(showStartShadow ? 1 : 0)
24281
+ "--opacity": (0, import_runtime110.maybeCssVar)(showStartShadow ? 1 : 0)
24600
24282
  }]
24601
24283
  }
24602
24284
  }), "data-chromatic": "ignore" }),
24603
- /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("div", { ...(0, import_runtime112.trussProps)({
24285
+ /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("div", { ...(0, import_runtime110.trussProps)({
24604
24286
  ...endShadowStyles,
24605
24287
  ...{
24606
24288
  opacity: ["o_var", {
24607
- "--opacity": (0, import_runtime112.maybeCssVar)(showEndShadow ? 1 : 0)
24289
+ "--opacity": (0, import_runtime110.maybeCssVar)(showEndShadow ? 1 : 0)
24608
24290
  }]
24609
24291
  }
24610
24292
  }), "data-chromatic": "ignore" }),
24611
- /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("div", { ...(0, import_runtime112.trussProps)({
24293
+ /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("div", { ...(0, import_runtime110.trussProps)({
24612
24294
  ...xss,
24613
24295
  ...{
24614
24296
  overflow: "oa",
@@ -24620,8 +24302,8 @@ function ScrollShadows(props) {
24620
24302
  }
24621
24303
 
24622
24304
  // src/layouts/SideNavLayout/SideNavLayoutContext.tsx
24623
- var import_react140 = require("react");
24624
- var import_jsx_runtime194 = require("react/jsx-runtime");
24305
+ var import_react139 = require("react");
24306
+ var import_jsx_runtime192 = require("react/jsx-runtime");
24625
24307
  var SIDE_NAV_LAYOUT_STATE_STORAGE_KEY = "beam.sideNavLayout.navState";
24626
24308
  function loadStoredNavState() {
24627
24309
  try {
@@ -24643,20 +24325,20 @@ function resolveInitialNavState(defaultNavState) {
24643
24325
  }
24644
24326
  return loadStoredNavState() ?? defaultNavState ?? "expanded";
24645
24327
  }
24646
- var SideNavLayoutContext = (0, import_react140.createContext)(void 0);
24328
+ var SideNavLayoutContext = (0, import_react139.createContext)(void 0);
24647
24329
  function SideNavLayoutProvider(props) {
24648
- const [navState, setNavStateInternal] = (0, import_react140.useState)(
24330
+ const [navState, setNavStateInternal] = (0, import_react139.useState)(
24649
24331
  () => resolveInitialNavState(props.defaultNavState)
24650
24332
  );
24651
24333
  const bp = useBreakpoint();
24652
- const prevMdAndUp = (0, import_react140.useRef)(bp.mdAndUp);
24653
- (0, import_react140.useEffect)(() => {
24334
+ const prevMdAndUp = (0, import_react139.useRef)(bp.mdAndUp);
24335
+ (0, import_react139.useEffect)(() => {
24654
24336
  if (prevMdAndUp.current && !bp.mdAndUp) {
24655
24337
  setNavStateInternal((prev) => prev === "expanded" ? "collapse" : prev);
24656
24338
  }
24657
24339
  prevMdAndUp.current = bp.mdAndUp;
24658
24340
  }, [bp.mdAndUp]);
24659
- const setNavState = (0, import_react140.useCallback)((value2) => {
24341
+ const setNavState = (0, import_react139.useCallback)((value2) => {
24660
24342
  setNavStateInternal((prev) => {
24661
24343
  const next = typeof value2 === "function" ? value2(prev) : value2;
24662
24344
  if (next === "expanded" || next === "collapse") {
@@ -24668,20 +24350,20 @@ function SideNavLayoutProvider(props) {
24668
24350
  return next;
24669
24351
  });
24670
24352
  }, []);
24671
- const value = (0, import_react140.useMemo)(() => ({ navState, setNavState }), [navState, setNavState]);
24672
- return /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(SideNavLayoutContext.Provider, { value, children: props.children });
24353
+ const value = (0, import_react139.useMemo)(() => ({ navState, setNavState }), [navState, setNavState]);
24354
+ return /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(SideNavLayoutContext.Provider, { value, children: props.children });
24673
24355
  }
24674
24356
  function useSideNavLayoutContext() {
24675
- return (0, import_react140.useContext)(SideNavLayoutContext) ?? { navState: "expanded", setNavState: () => {
24357
+ return (0, import_react139.useContext)(SideNavLayoutContext) ?? { navState: "expanded", setNavState: () => {
24676
24358
  } };
24677
24359
  }
24678
24360
  function useHasSideNavLayoutProvider() {
24679
- return (0, import_react140.useContext)(SideNavLayoutContext) !== void 0;
24361
+ return (0, import_react139.useContext)(SideNavLayoutContext) !== void 0;
24680
24362
  }
24681
24363
 
24682
24364
  // src/components/SideNav/SideNav.tsx
24683
- var import_runtime113 = require("@homebound/truss/runtime");
24684
- var import_jsx_runtime195 = require("react/jsx-runtime");
24365
+ var import_runtime111 = require("@homebound/truss/runtime");
24366
+ var import_jsx_runtime193 = require("react/jsx-runtime");
24685
24367
  function SideNav(props) {
24686
24368
  const {
24687
24369
  top,
@@ -24694,8 +24376,8 @@ function SideNav(props) {
24694
24376
  const tid = useTestIds(props, "sideNav");
24695
24377
  const panelCollapsed = navState === "collapse";
24696
24378
  const hideOnCollapse = panelCollapsed && !allItemsHaveIcons(items);
24697
- return /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)("nav", { className: "df fdc h100 fs0", ...tid, children: [
24698
- top !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", { ...(0, import_runtime113.trussProps)({
24379
+ return /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)("nav", { className: "df fdc h100 fs0", ...tid, children: [
24380
+ top !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("div", { ...(0, import_runtime111.trussProps)({
24699
24381
  flexShrink: "fs0",
24700
24382
  paddingLeft: "pl2",
24701
24383
  paddingRight: "pr2",
@@ -24706,7 +24388,7 @@ function SideNav(props) {
24706
24388
  paddingBottom: "pb4"
24707
24389
  } : {}
24708
24390
  }), ...tid.top, children: top }),
24709
- /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", { ...(0, import_runtime113.trussProps)({
24391
+ /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("div", { ...(0, import_runtime111.trussProps)({
24710
24392
  flexGrow: "fg1",
24711
24393
  overflowY: "oya",
24712
24394
  display: "df",
@@ -24718,8 +24400,8 @@ function SideNav(props) {
24718
24400
  ...top === void 0 ? {
24719
24401
  paddingTop: "pt5"
24720
24402
  } : {}
24721
- }), ...tid.items, children: !hideOnCollapse && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(AppNavItems, { items, panelCollapsed }) }),
24722
- footer !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", { ...(0, import_runtime113.trussProps)({
24403
+ }), ...tid.items, children: !hideOnCollapse && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(AppNavItems, { items, panelCollapsed }) }),
24404
+ footer !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("div", { ...(0, import_runtime111.trussProps)({
24723
24405
  flexShrink: "fs0",
24724
24406
  paddingLeft: "pl2",
24725
24407
  paddingRight: "pr2",
@@ -24735,10 +24417,10 @@ function SideNav(props) {
24735
24417
  }
24736
24418
 
24737
24419
  // src/components/Snackbar/useSnackbar.tsx
24738
- var import_react141 = require("react");
24420
+ var import_react140 = require("react");
24739
24421
  function useSnackbar() {
24740
24422
  const { setNotices, setOffset } = useSnackbarContext();
24741
- const onClose = (0, import_react141.useCallback)(
24423
+ const onClose = (0, import_react140.useCallback)(
24742
24424
  (noticeId) => {
24743
24425
  setNotices((prev) => {
24744
24426
  let returnValue = prev;
@@ -24755,7 +24437,7 @@ function useSnackbar() {
24755
24437
  // eslint-disable-next-line react-hooks/exhaustive-deps
24756
24438
  []
24757
24439
  );
24758
- const triggerNotice = (0, import_react141.useCallback)(
24440
+ const triggerNotice = (0, import_react140.useCallback)(
24759
24441
  (props) => {
24760
24442
  const noticeId = props.id ?? `beamSnackbar:${snackbarId++}`;
24761
24443
  let maybeTimeout;
@@ -24784,8 +24466,8 @@ function useSnackbar() {
24784
24466
  },
24785
24467
  [onClose, setNotices]
24786
24468
  );
24787
- const closeNotice = (0, import_react141.useCallback)((id) => onClose(id), [onClose]);
24788
- const useSnackbarOffset = ({ bottom }) => (0, import_react141.useEffect)(() => {
24469
+ const closeNotice = (0, import_react140.useCallback)((id) => onClose(id), [onClose]);
24470
+ const useSnackbarOffset = ({ bottom }) => (0, import_react140.useEffect)(() => {
24789
24471
  setOffset({ bottom });
24790
24472
  return () => setOffset({});
24791
24473
  }, [bottom]);
@@ -24794,11 +24476,11 @@ function useSnackbar() {
24794
24476
  var snackbarId = 1;
24795
24477
 
24796
24478
  // src/components/Stepper.tsx
24479
+ var import_react141 = require("react");
24480
+ var import_react_aria62 = require("react-aria");
24481
+ var import_runtime112 = require("@homebound/truss/runtime");
24482
+ var import_jsx_runtime194 = require("react/jsx-runtime");
24797
24483
  var import_react142 = require("react");
24798
- var import_react_aria63 = require("react-aria");
24799
- var import_runtime114 = require("@homebound/truss/runtime");
24800
- var import_jsx_runtime196 = require("react/jsx-runtime");
24801
- var import_react143 = require("react");
24802
24484
  var __maybeInc20 = (inc) => {
24803
24485
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
24804
24486
  };
@@ -24816,8 +24498,8 @@ function Stepper(props) {
24816
24498
  const maxStepWidth = 200;
24817
24499
  const minStepWidth = 100;
24818
24500
  const gap = 8;
24819
- return /* @__PURE__ */ (0, import_jsx_runtime196.jsxs)("nav", { "aria-label": "steps", className: "df fdc w100", ...tid, children: [
24820
- /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("ol", { ...(0, import_runtime114.trussProps)({
24501
+ return /* @__PURE__ */ (0, import_jsx_runtime194.jsxs)("nav", { "aria-label": "steps", className: "df fdc w100", ...tid, children: [
24502
+ /* @__PURE__ */ (0, import_jsx_runtime194.jsx)("ol", { ...(0, import_runtime112.trussProps)({
24821
24503
  padding: "p_0",
24822
24504
  margin: "m_0",
24823
24505
  listStyle: "lis_none",
@@ -24827,7 +24509,7 @@ function Stepper(props) {
24827
24509
  }]
24828
24510
  }), children: steps.map((step) => {
24829
24511
  const isCurrent = currentStep === step.value;
24830
- return /* @__PURE__ */ (0, import_react143.createElement)("li", { ...(0, import_runtime114.trussProps)({
24512
+ return /* @__PURE__ */ (0, import_react142.createElement)("li", { ...(0, import_runtime112.trussProps)({
24831
24513
  display: "df",
24832
24514
  flexGrow: "fg1",
24833
24515
  flexDirection: "fdc",
@@ -24837,9 +24519,9 @@ function Stepper(props) {
24837
24519
  minWidth: ["mw_var", {
24838
24520
  "--minWidth": `${minStepWidth}px`
24839
24521
  }]
24840
- }), key: step.label, "aria-current": isCurrent, ...tid.step }, /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(StepButton, { ...step, onClick: () => onChange(step.value), isCurrent, ...tid.stepButton }));
24522
+ }), key: step.label, "aria-current": isCurrent, ...tid.step }, /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(StepButton, { ...step, onClick: () => onChange(step.value), isCurrent, ...tid.stepButton }));
24841
24523
  }) }),
24842
- /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("div", { ...(0, import_runtime114.trussProps)({
24524
+ /* @__PURE__ */ (0, import_jsx_runtime194.jsx)("div", { ...(0, import_runtime112.trussProps)({
24843
24525
  marginTop: "mt1",
24844
24526
  backgroundColor: "bgGray300",
24845
24527
  height: "h_4px",
@@ -24850,12 +24532,12 @@ function Stepper(props) {
24850
24532
  "--minWidth": `${steps.length * minStepWidth + (steps.length - 1) * gap}px`
24851
24533
  }],
24852
24534
  width: "w100"
24853
- }), children: /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("div", { ...(0, import_runtime114.trussProps)({
24535
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)("div", { ...(0, import_runtime112.trussProps)({
24854
24536
  backgroundColor: "bgBlue600",
24855
24537
  transition: "transition_width_200ms",
24856
24538
  height: "h100",
24857
24539
  width: ["w_var", {
24858
- "--width": (0, import_runtime114.maybeCssVar)(__maybeInc20(`${(lastCompletedStep + 1) / steps.length * 100}%`))
24540
+ "--width": (0, import_runtime112.maybeCssVar)(__maybeInc20(`${(lastCompletedStep + 1) / steps.length * 100}%`))
24859
24541
  }]
24860
24542
  }) }) })
24861
24543
  ] });
@@ -24872,26 +24554,26 @@ function StepButton(props) {
24872
24554
  onPress: onClick,
24873
24555
  isDisabled: disabled
24874
24556
  };
24875
- const ref = (0, import_react142.useRef)(null);
24557
+ const ref = (0, import_react141.useRef)(null);
24876
24558
  const {
24877
24559
  buttonProps,
24878
24560
  isPressed
24879
- } = (0, import_react_aria63.useButton)(ariaProps, ref);
24561
+ } = (0, import_react_aria62.useButton)(ariaProps, ref);
24880
24562
  const {
24881
24563
  isFocusVisible,
24882
24564
  focusProps
24883
- } = (0, import_react_aria63.useFocusRing)();
24565
+ } = (0, import_react_aria62.useFocusRing)();
24884
24566
  const {
24885
24567
  hoverProps,
24886
24568
  isHovered
24887
- } = (0, import_react_aria63.useHover)(ariaProps);
24569
+ } = (0, import_react_aria62.useHover)(ariaProps);
24888
24570
  const focusRingStyles2 = state === "error" ? {
24889
24571
  boxShadow: "bshDanger"
24890
24572
  } : {
24891
24573
  boxShadow: "bshFocus"
24892
24574
  };
24893
24575
  const tid = useTestIds(props, "stepButton");
24894
- return /* @__PURE__ */ (0, import_jsx_runtime196.jsxs)("button", { ref, ...buttonProps, ...focusProps, ...hoverProps, ...(0, import_runtime114.trussProps)({
24576
+ return /* @__PURE__ */ (0, import_jsx_runtime194.jsxs)("button", { ref, ...buttonProps, ...focusProps, ...hoverProps, ...(0, import_runtime112.trussProps)({
24895
24577
  ...{
24896
24578
  fontWeight: "fw6",
24897
24579
  fontSize: "fz_14px",
@@ -24943,7 +24625,7 @@ function StepButton(props) {
24943
24625
  } : {},
24944
24626
  ...isFocusVisible ? focusRingStyles2 : {}
24945
24627
  }), ...tid[defaultTestId(label)], children: [
24946
- /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("span", { className: "fs0 mr_4px", children: /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(StepIcon, { state, isHovered, isPressed, isCurrent }) }),
24628
+ /* @__PURE__ */ (0, import_jsx_runtime194.jsx)("span", { className: "fs0 mr_4px", children: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(StepIcon, { state, isHovered, isPressed, isCurrent }) }),
24947
24629
  label
24948
24630
  ] });
24949
24631
  }
@@ -24954,12 +24636,12 @@ function StepIcon({
24954
24636
  isCurrent = false
24955
24637
  }) {
24956
24638
  if (state === "error") {
24957
- return /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(Icon, { icon: "errorCircle" });
24639
+ return /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(Icon, { icon: "errorCircle" });
24958
24640
  }
24959
24641
  if (state === "complete") {
24960
- return /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(Icon, { icon: "check" });
24642
+ return /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(Icon, { icon: "check" });
24961
24643
  }
24962
- return /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("div", { className: "w_24px h_24px df aic jcc", children: /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("div", { ...(0, import_runtime114.trussProps)({
24644
+ return /* @__PURE__ */ (0, import_jsx_runtime194.jsx)("div", { className: "w_24px h_24px df aic jcc", children: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)("div", { ...(0, import_runtime112.trussProps)({
24963
24645
  width: "w_10px",
24964
24646
  height: "h_10px",
24965
24647
  borderStyle: "bss",
@@ -24973,10 +24655,10 @@ function StepIcon({
24973
24655
  }
24974
24656
 
24975
24657
  // src/components/StepperTabs/StepperTab.tsx
24976
- var import_react144 = require("react");
24977
- var import_react_aria64 = require("react-aria");
24978
- var import_runtime115 = require("@homebound/truss/runtime");
24979
- var import_jsx_runtime197 = require("react/jsx-runtime");
24658
+ var import_react143 = require("react");
24659
+ var import_react_aria63 = require("react-aria");
24660
+ var import_runtime113 = require("@homebound/truss/runtime");
24661
+ var import_jsx_runtime195 = require("react/jsx-runtime");
24980
24662
  function StepperTab(props) {
24981
24663
  const {
24982
24664
  label,
@@ -24991,20 +24673,20 @@ function StepperTab(props) {
24991
24673
  onPress: () => onClick(value),
24992
24674
  isDisabled: disabled || collapsed
24993
24675
  };
24994
- const ref = (0, import_react144.useRef)(null);
24676
+ const ref = (0, import_react143.useRef)(null);
24995
24677
  const {
24996
24678
  buttonProps
24997
- } = (0, import_react_aria64.useButton)(ariaProps, ref);
24679
+ } = (0, import_react_aria63.useButton)(ariaProps, ref);
24998
24680
  const {
24999
24681
  isFocusVisible,
25000
24682
  focusProps
25001
- } = (0, import_react_aria64.useFocusRing)();
24683
+ } = (0, import_react_aria63.useFocusRing)();
25002
24684
  const {
25003
24685
  hoverProps,
25004
24686
  isHovered
25005
- } = (0, import_react_aria64.useHover)(ariaProps);
24687
+ } = (0, import_react_aria63.useHover)(ariaProps);
25006
24688
  const tid = useTestIds(props, "stepperTab");
25007
- return /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)("button", { ref, ...(0, import_react_aria64.mergeProps)(buttonProps, focusProps, hoverProps), "aria-label": label, ...(0, import_runtime115.trussProps)({
24689
+ return /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)("button", { ref, ...(0, import_react_aria63.mergeProps)(buttonProps, focusProps, hoverProps), "aria-label": label, ...(0, import_runtime113.trussProps)({
25008
24690
  ...stepperTabStyles.baseStyles,
25009
24691
  ...getStateStyles(active, completed),
25010
24692
  ...isHovered && !disabled ? stepperTabStyles.hoverStyles : {},
@@ -25012,9 +24694,9 @@ function StepperTab(props) {
25012
24694
  ...disabled ? stepperTabStyles.disabledStyles : {},
25013
24695
  ...isFocusVisible ? stepperTabStyles.focusRingStyles : {}
25014
24696
  }), ...tid[defaultTestId(value)], children: [
25015
- /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("span", { className: "oh d_negwebkit_box wbo_vertical to_ellipsis wlc_1", children: label }),
25016
- completed && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("span", { className: "fs0 ml1", children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(Icon, { icon: "check", inc: 2.5, ...tid.check }) }),
25017
- /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(import_react_aria64.VisuallyHidden, { children: completed ? "Complete" : "Not Complete" })
24697
+ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("span", { className: "oh d_negwebkit_box wbo_vertical to_ellipsis wlc_1", children: label }),
24698
+ completed && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("span", { className: "fs0 ml1", children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(Icon, { icon: "check", inc: 2.5, ...tid.check }) }),
24699
+ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(import_react_aria63.VisuallyHidden, { children: completed ? "Complete" : "Not Complete" })
25018
24700
  ] });
25019
24701
  }
25020
24702
  function withBorderBottom(color) {
@@ -25022,7 +24704,7 @@ function withBorderBottom(color) {
25022
24704
  ...{
25023
24705
  borderBottomStyle: "bbs_solid",
25024
24706
  borderBottomWidth: ["borderBottomWidth_var", {
25025
- "--borderBottomWidth": (0, import_runtime115.maybeCssVar)(`3px`)
24707
+ "--borderBottomWidth": (0, import_runtime113.maybeCssVar)(`3px`)
25026
24708
  }]
25027
24709
  },
25028
24710
  ...color
@@ -25094,9 +24776,9 @@ var stepperTabStyles = {
25094
24776
  };
25095
24777
 
25096
24778
  // src/components/StepperTabs/StepperTabs.tsx
25097
- var import_runtime116 = require("@homebound/truss/runtime");
25098
- var import_jsx_runtime198 = require("react/jsx-runtime");
25099
- var import_react145 = require("react");
24779
+ var import_runtime114 = require("@homebound/truss/runtime");
24780
+ var import_jsx_runtime196 = require("react/jsx-runtime");
24781
+ var import_react144 = require("react");
25100
24782
  function StepperTabs(props) {
25101
24783
  const {
25102
24784
  steps,
@@ -25108,7 +24790,7 @@ function StepperTabs(props) {
25108
24790
  sm: collapsed
25109
24791
  } = useBreakpoint();
25110
24792
  const capWidth = steps.length <= 3;
25111
- return /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("nav", { "aria-label": "steps", className: "w100", ...tid, children: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("ol", { ...(0, import_runtime116.trussProps)({
24793
+ return /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("nav", { "aria-label": "steps", className: "w100", ...tid, children: /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("ol", { ...(0, import_runtime114.trussProps)({
25112
24794
  padding: "p_0",
25113
24795
  margin: "m_0",
25114
24796
  listStyle: "lis_none",
@@ -25122,7 +24804,7 @@ function StepperTabs(props) {
25122
24804
  borderColor: "bcGray400"
25123
24805
  }), children: steps.map((step) => {
25124
24806
  const isCurrent = step.value === currentStep;
25125
- return /* @__PURE__ */ (0, import_react145.createElement)("li", { ...(0, import_runtime116.trussProps)({
24807
+ return /* @__PURE__ */ (0, import_react144.createElement)("li", { ...(0, import_runtime114.trussProps)({
25126
24808
  display: "df",
25127
24809
  flexGrow: "fg1",
25128
24810
  flexBasis: "fb_0",
@@ -25134,7 +24816,7 @@ function StepperTabs(props) {
25134
24816
  "--maxWidth": `${maxStepWidthPx}px`
25135
24817
  }]
25136
24818
  } : {}
25137
- }), key: step.value, "aria-current": isCurrent, ...tid.step }, /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(StepperTab, { label: step.label, value: step.value, active: isCurrent, completed: step.completed, disabled: step.disabled, collapsed, onClick: onChange, ...tid.tab }));
24819
+ }), key: step.value, "aria-current": isCurrent, ...tid.step }, /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(StepperTab, { label: step.label, value: step.value, active: isCurrent, completed: step.completed, disabled: step.disabled, collapsed, onClick: onChange, ...tid.tab }));
25138
24820
  }) }) });
25139
24821
  }
25140
24822
  var maxStepWidthPx = 280;
@@ -25142,8 +24824,8 @@ var gapPx = 6;
25142
24824
 
25143
24825
  // src/components/SuperDrawer/components/SuperDrawerHeader.tsx
25144
24826
  var import_react_dom7 = require("react-dom");
25145
- var import_runtime117 = require("@homebound/truss/runtime");
25146
- var import_jsx_runtime199 = require("react/jsx-runtime");
24827
+ var import_runtime115 = require("@homebound/truss/runtime");
24828
+ var import_jsx_runtime197 = require("react/jsx-runtime");
25147
24829
  function SuperDrawerHeader(props) {
25148
24830
  const {
25149
24831
  hideControls
@@ -25160,20 +24842,20 @@ function SuperDrawerHeader(props) {
25160
24842
  const currentContent = contentStack.current[contentStack.current.length - 1]?.opts;
25161
24843
  const isDetail = currentContent !== firstContent;
25162
24844
  const tid = useTestIds({}, "superDrawerHeader");
25163
- return (0, import_react_dom7.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime199.jsxs)("div", { className: "df aic jcsb gap3", ...tid, children: [
25164
- isStructuredProps(props) ? /* @__PURE__ */ (0, import_jsx_runtime199.jsxs)("div", { className: "df jcsb aic gap2 fg1", children: [
25165
- /* @__PURE__ */ (0, import_jsx_runtime199.jsxs)("div", { className: "fg1 df aic gap2", children: [
25166
- /* @__PURE__ */ (0, import_jsx_runtime199.jsx)("h1", { className: "fw6 fz_30px lh_36px", children: props.title }),
24845
+ return (0, import_react_dom7.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime197.jsxs)("div", { className: "df aic jcsb gap3", ...tid, children: [
24846
+ isStructuredProps(props) ? /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)("div", { className: "df jcsb aic gap2 fg1", children: [
24847
+ /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)("div", { className: "fg1 df aic gap2", children: [
24848
+ /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("h1", { className: "fw6 fz_30px lh_36px", children: props.title }),
25167
24849
  props.left
25168
24850
  ] }),
25169
- props.right && /* @__PURE__ */ (0, import_jsx_runtime199.jsx)("div", { className: "fs0", children: props.right })
25170
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime199.jsx)("div", { className: "fg1", children: props.children }),
25171
- !hideControls && /* @__PURE__ */ (0, import_jsx_runtime199.jsx)("div", { ...(0, import_runtime117.trussProps)({
24851
+ props.right && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "fs0", children: props.right })
24852
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "fg1", children: props.children }),
24853
+ !hideControls && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { ...(0, import_runtime115.trussProps)({
25172
24854
  flexShrink: "fs0",
25173
24855
  ...isDetail ? {
25174
24856
  visibility: "vh"
25175
24857
  } : {}
25176
- }), children: /* @__PURE__ */ (0, import_jsx_runtime199.jsx)(ButtonGroup, { buttons: [{
24858
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(ButtonGroup, { buttons: [{
25177
24859
  icon: "chevronLeft",
25178
24860
  onClick: () => onPrevClick && onPrevClick(),
25179
24861
  disabled: !onPrevClick
@@ -25189,18 +24871,18 @@ function isStructuredProps(props) {
25189
24871
  }
25190
24872
 
25191
24873
  // src/components/SuperDrawer/ConfirmCloseModal.tsx
25192
- var import_jsx_runtime200 = require("react/jsx-runtime");
24874
+ var import_jsx_runtime198 = require("react/jsx-runtime");
25193
24875
  function ConfirmCloseModal(props) {
25194
24876
  const { onClose, discardText = "Discard Changes", continueText = "Continue Editing" } = props;
25195
24877
  const { modalState } = useBeamContext();
25196
24878
  function closeModal() {
25197
24879
  modalState.current = void 0;
25198
24880
  }
25199
- return /* @__PURE__ */ (0, import_jsx_runtime200.jsxs)(import_jsx_runtime200.Fragment, { children: [
25200
- /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(ModalHeader, { children: "Are you sure you want to cancel?" }),
25201
- /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(ModalBody, { children: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)("p", { children: "Any changes you've made so far will be lost." }) }),
25202
- /* @__PURE__ */ (0, import_jsx_runtime200.jsxs)(ModalFooter, { children: [
25203
- /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(
24881
+ return /* @__PURE__ */ (0, import_jsx_runtime198.jsxs)(import_jsx_runtime198.Fragment, { children: [
24882
+ /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(ModalHeader, { children: "Are you sure you want to cancel?" }),
24883
+ /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(ModalBody, { children: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("p", { children: "Any changes you've made so far will be lost." }) }),
24884
+ /* @__PURE__ */ (0, import_jsx_runtime198.jsxs)(ModalFooter, { children: [
24885
+ /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(
25204
24886
  Button,
25205
24887
  {
25206
24888
  variant: "quaternary",
@@ -25211,7 +24893,7 @@ function ConfirmCloseModal(props) {
25211
24893
  }
25212
24894
  }
25213
24895
  ),
25214
- /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(Button, { label: continueText, onClick: closeModal })
24896
+ /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(Button, { label: continueText, onClick: closeModal })
25215
24897
  ] })
25216
24898
  ] });
25217
24899
  }
@@ -25220,8 +24902,8 @@ function ConfirmCloseModal(props) {
25220
24902
  var import_framer_motion6 = require("framer-motion");
25221
24903
 
25222
24904
  // src/components/SuperDrawer/useSuperDrawer.tsx
25223
- var import_react146 = require("react");
25224
- var import_jsx_runtime201 = require("react/jsx-runtime");
24905
+ var import_react145 = require("react");
24906
+ var import_jsx_runtime199 = require("react/jsx-runtime");
25225
24907
  function useSuperDrawer() {
25226
24908
  const {
25227
24909
  drawerContentStack: contentStack,
@@ -25233,7 +24915,7 @@ function useSuperDrawer() {
25233
24915
  function canCloseDrawerDetails(i, doChange) {
25234
24916
  for (const canCloseDrawerDetail of canCloseDetailsChecks.current[i] ?? []) {
25235
24917
  if (!canClose(canCloseDrawerDetail)) {
25236
- openModal({ content: /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawerDetail }) });
24918
+ openModal({ content: /* @__PURE__ */ (0, import_jsx_runtime199.jsx)(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawerDetail }) });
25237
24919
  return false;
25238
24920
  }
25239
24921
  }
@@ -25253,14 +24935,14 @@ function useSuperDrawer() {
25253
24935
  for (const canCloseDrawer of canCloseChecks.current) {
25254
24936
  if (!canClose(canCloseDrawer)) {
25255
24937
  openModal({
25256
- content: /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawer })
24938
+ content: /* @__PURE__ */ (0, import_jsx_runtime199.jsx)(ConfirmCloseModal, { onClose: doChange, ...canCloseDrawer })
25257
24939
  });
25258
24940
  return;
25259
24941
  }
25260
24942
  }
25261
24943
  doChange();
25262
24944
  }
25263
- const closeActions = (0, import_react146.useMemo)(
24945
+ const closeActions = (0, import_react145.useMemo)(
25264
24946
  () => {
25265
24947
  return {
25266
24948
  /** Attempts to close the drawer. If any checks fail, a confirmation modal will appear */
@@ -25295,7 +24977,7 @@ function useSuperDrawer() {
25295
24977
  // eslint-disable-next-line react-hooks/exhaustive-deps
25296
24978
  [canCloseChecks, canCloseDetailsChecks, contentStack, modalState, openModal]
25297
24979
  );
25298
- const actions = (0, import_react146.useMemo)(
24980
+ const actions = (0, import_react145.useMemo)(
25299
24981
  () => {
25300
24982
  return {
25301
24983
  // TODO: Maybe we should rename to openDrawer as a breaking change (to match openDrawerDetail)
@@ -25348,8 +25030,8 @@ function canClose(canCloseCheck) {
25348
25030
  }
25349
25031
 
25350
25032
  // src/components/SuperDrawer/SuperDrawerContent.tsx
25351
- var import_runtime118 = require("@homebound/truss/runtime");
25352
- var import_jsx_runtime202 = require("react/jsx-runtime");
25033
+ var import_runtime116 = require("@homebound/truss/runtime");
25034
+ var import_jsx_runtime200 = require("react/jsx-runtime");
25353
25035
  var SuperDrawerContent = ({
25354
25036
  children,
25355
25037
  actions
@@ -25365,95 +25047,360 @@ var SuperDrawerContent = ({
25365
25047
  } = contentStack.current[contentStack.current.length - 1] ?? {};
25366
25048
  const firstContent = contentStack.current[0]?.opts;
25367
25049
  const {
25368
- width: width2 = 1040 /* Normal */
25369
- } = firstContent ?? {};
25370
- function wrapWithMotionAndMaybeBack(children2) {
25371
- if (kind === "open") {
25372
- return /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_framer_motion6.motion.div, { className: "pt3 pb3 pr3 pl3 fg1 oa", children: children2 }, "content");
25373
- } else if (kind === "detail") {
25374
- return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)(import_framer_motion6.motion.div, { className: "pl3 pr3 pt2 pb3 fg1", animate: {
25375
- overflow: "auto"
25376
- }, transition: {
25377
- overflow: {
25378
- delay: 0.3
25379
- }
25380
- }, children: [
25381
- /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(Button, { label: "Back", icon: "chevronLeft", variant: "tertiary", onClick: closeDrawerDetail }),
25382
- /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_framer_motion6.motion.div, { initial: {
25383
- x: width2,
25384
- opacity: 0
25385
- }, animate: {
25386
- x: 0,
25387
- opacity: 1
25388
- }, transition: {
25389
- ease: "linear",
25390
- duration: 0.3,
25391
- opacity: {
25392
- delay: 0.15
25393
- }
25394
- }, exit: {
25395
- x: width2,
25396
- opacity: 0
25397
- }, className: "pt2", children: children2 })
25398
- ] }, "content");
25399
- } else {
25400
- return /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_framer_motion6.motion.div, { ...(0, import_runtime118.mergeProps)(void 0, {
25401
- overflow: "auto"
25402
- }, {
25403
- paddingTop: "pt3",
25404
- paddingBottom: "pb3",
25405
- paddingRight: "pr3",
25406
- paddingLeft: "pl3",
25407
- flexGrow: "fg1"
25408
- }) }, "content");
25050
+ width: width2 = 1040 /* Normal */
25051
+ } = firstContent ?? {};
25052
+ function wrapWithMotionAndMaybeBack(children2) {
25053
+ if (kind === "open") {
25054
+ return /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_framer_motion6.motion.div, { className: "pt3 pb3 pr3 pl3 fg1 oa", children: children2 }, "content");
25055
+ } else if (kind === "detail") {
25056
+ return /* @__PURE__ */ (0, import_jsx_runtime200.jsxs)(import_framer_motion6.motion.div, { className: "pl3 pr3 pt2 pb3 fg1", animate: {
25057
+ overflow: "auto"
25058
+ }, transition: {
25059
+ overflow: {
25060
+ delay: 0.3
25061
+ }
25062
+ }, children: [
25063
+ /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(Button, { label: "Back", icon: "chevronLeft", variant: "tertiary", onClick: closeDrawerDetail }),
25064
+ /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_framer_motion6.motion.div, { initial: {
25065
+ x: width2,
25066
+ opacity: 0
25067
+ }, animate: {
25068
+ x: 0,
25069
+ opacity: 1
25070
+ }, transition: {
25071
+ ease: "linear",
25072
+ duration: 0.3,
25073
+ opacity: {
25074
+ delay: 0.15
25075
+ }
25076
+ }, exit: {
25077
+ x: width2,
25078
+ opacity: 0
25079
+ }, className: "pt2", children: children2 })
25080
+ ] }, "content");
25081
+ } else {
25082
+ return /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_framer_motion6.motion.div, { ...(0, import_runtime116.mergeProps)(void 0, {
25083
+ overflow: "auto"
25084
+ }, {
25085
+ paddingTop: "pt3",
25086
+ paddingBottom: "pb3",
25087
+ paddingRight: "pr3",
25088
+ paddingLeft: "pl3",
25089
+ flexGrow: "fg1"
25090
+ }) }, "content");
25091
+ }
25092
+ }
25093
+ return /* @__PURE__ */ (0, import_jsx_runtime200.jsxs)(import_jsx_runtime200.Fragment, { children: [
25094
+ wrapWithMotionAndMaybeBack(children),
25095
+ actions && /* @__PURE__ */ (0, import_jsx_runtime200.jsx)("footer", { className: "bts_solid btw_1px bcGray200 pt3 pb3 pr3 pl3 df aic jcfe", children: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)("div", { className: "df gap1", children: actions.map((buttonProps, i) => /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(Button, { ...buttonProps }, i)) }) })
25096
+ ] });
25097
+ };
25098
+
25099
+ // src/components/Table/cardSlots.ts
25100
+ function cardTitleSlot(text) {
25101
+ return { kind: "title", text };
25102
+ }
25103
+ function cardEyebrowSlot(text) {
25104
+ return { kind: "eyebrow", text };
25105
+ }
25106
+ function cardBadgeSlot(text, tags) {
25107
+ return { kind: "badge", text, tags };
25108
+ }
25109
+ function cardStatusSlot(tag) {
25110
+ return { kind: "status", tag };
25111
+ }
25112
+ function cardDataBlockSlot(props) {
25113
+ return { kind: "dataBlock", ...props };
25114
+ }
25115
+ function cardProgressSlot(value) {
25116
+ return { kind: "progress", value };
25117
+ }
25118
+
25119
+ // src/components/Table/utils/simpleHelpers.ts
25120
+ var simpleHeader = { kind: "header", id: "header", data: void 0 };
25121
+ function simpleDataRows(data = []) {
25122
+ return [simpleHeader, ...data.map((data2) => ({ kind: "data", data: data2, id: data2.id }))];
25123
+ }
25124
+
25125
+ // src/components/Table/utils/visitor.ts
25126
+ function visit(rows, fn) {
25127
+ const todo = [...rows];
25128
+ while (todo.length > 0) {
25129
+ const row = todo.pop();
25130
+ fn(row);
25131
+ if (row.children) {
25132
+ todo.push(...row.children);
25133
+ }
25134
+ }
25135
+ }
25136
+
25137
+ // src/components/Tabs.tsx
25138
+ var import_change_case9 = require("change-case");
25139
+ var import_react146 = require("react");
25140
+ var import_react_aria64 = require("react-aria");
25141
+ var import_react_router = require("react-router");
25142
+ var import_react_router_dom8 = require("react-router-dom");
25143
+ var import_runtime117 = require("@homebound/truss/runtime");
25144
+ var import_jsx_runtime201 = require("react/jsx-runtime");
25145
+ function TabsWithContent(props) {
25146
+ const styles = hideTabs(props) ? {} : {
25147
+ paddingTop: "pt3"
25148
+ };
25149
+ return /* @__PURE__ */ (0, import_jsx_runtime201.jsxs)(import_jsx_runtime201.Fragment, { children: [
25150
+ /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(Tabs, { ...props }),
25151
+ /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(TabContent, { ...props, contentXss: {
25152
+ ...styles,
25153
+ ...props.contentXss
25154
+ } })
25155
+ ] });
25156
+ }
25157
+ function TabContent(props) {
25158
+ const tid = useTestIds(props, "tab");
25159
+ const {
25160
+ tabs,
25161
+ contentXss = {},
25162
+ omitFullBleedPadding = false
25163
+ } = props;
25164
+ const location = (0, import_react_router_dom8.useLocation)();
25165
+ const selectedTab = isRouteTabs(props) ? props.tabs.find((t) => {
25166
+ const paths = Array.isArray(t.path) ? t.path : [t.path];
25167
+ return paths.some((p) => !!(0, import_react_router.matchPath)({
25168
+ path: p,
25169
+ end: true
25170
+ }, location.pathname));
25171
+ }) || tabs[0] : props.tabs.find((tab) => tab.value === props.selected) || tabs[0];
25172
+ const uniqueValue = uniqueTabValue(selectedTab);
25173
+ return (
25174
+ // Using FullBleed to allow the tab's bgColor to extend to the edges of the <ScrollableContent /> element.
25175
+ // Omit the padding from `FullBleed` if the caller passes in the `paddingLeft/Right` styles.
25176
+ /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(FullBleed, { omitPadding: omitFullBleedPadding, children: /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("div", { "aria-labelledby": `${uniqueValue}-tab`, id: `${uniqueValue}-tabPanel`, role: "tabpanel", tabIndex: 0, ...tid.panel, ...(0, import_runtime117.trussProps)(contentXss), children: selectedTab.render() }) })
25177
+ );
25178
+ }
25179
+ function Tabs(props) {
25180
+ const {
25181
+ ariaLabel,
25182
+ tabs,
25183
+ includeBottomBorder,
25184
+ right,
25185
+ ...others
25186
+ } = props;
25187
+ const location = (0, import_react_router_dom8.useLocation)();
25188
+ const selected = isRouteTabs(props) ? uniqueTabValue(props.tabs.find((t) => {
25189
+ const paths = Array.isArray(t.path) ? t.path : [t.path];
25190
+ return paths.some((p) => !!(0, import_react_router.matchPath)({
25191
+ path: p,
25192
+ end: true
25193
+ }, location.pathname));
25194
+ }) || props.tabs[0]) : props.selected;
25195
+ const {
25196
+ isFocusVisible,
25197
+ focusProps
25198
+ } = (0, import_react_aria64.useFocusRing)();
25199
+ const tid = useTestIds(others, "tabs");
25200
+ const [active, setActive] = (0, import_react146.useState)(selected);
25201
+ const ref = (0, import_react146.useRef)(null);
25202
+ (0, import_react146.useEffect)(() => setActive(selected), [selected]);
25203
+ function onKeyUp(e) {
25204
+ if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
25205
+ const nextTabValue = getNextTabValue(active, e.key, tabs);
25206
+ setActive(nextTabValue);
25207
+ document.getElementById(`${nextTabValue}-tab`)?.focus();
25208
+ }
25209
+ }
25210
+ function onClick(value) {
25211
+ !isRouteTabs(props) && props.onChange(value);
25212
+ }
25213
+ function onBlur(e) {
25214
+ if (!(ref.current && ref.current.contains(e.relatedTarget))) {
25215
+ setActive(selected);
25216
+ }
25217
+ }
25218
+ return /* @__PURE__ */ (0, import_jsx_runtime201.jsxs)("div", { ...(0, import_runtime117.trussProps)({
25219
+ ...{
25220
+ display: "df",
25221
+ alignItems: "aic",
25222
+ overflow: "oa",
25223
+ whiteSpace: "wsnw",
25224
+ gap: "gap1"
25225
+ },
25226
+ ...includeBottomBorder ? {
25227
+ ...{
25228
+ borderBottomStyle: "bbs_solid",
25229
+ borderBottomWidth: "bbw_1px",
25230
+ borderColor: "bcGray200"
25231
+ }
25232
+ } : {}
25233
+ }), children: [
25234
+ !hideTabs(props) && /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("div", { ref, className: "dif gap1 asfe", "aria-label": ariaLabel, role: "tablist", ...tid, children: tabs.map((tab) => {
25235
+ const uniqueValue = uniqueTabValue(tab);
25236
+ return /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(TabImpl, { active: active === uniqueValue, focusProps, isFocusVisible, onClick, onKeyUp, onBlur, tab, ...tid[defaultTestId(uniqueValue)] }, uniqueValue);
25237
+ }) }),
25238
+ right && /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("div", { className: "mla df aic gap1 pb1", children: right })
25239
+ ] });
25240
+ }
25241
+ function TabImpl(props) {
25242
+ const {
25243
+ tab,
25244
+ onClick,
25245
+ active,
25246
+ onKeyUp,
25247
+ onBlur,
25248
+ focusProps,
25249
+ isFocusVisible = false,
25250
+ ...others
25251
+ } = props;
25252
+ const {
25253
+ disabled = false,
25254
+ name: label,
25255
+ icon,
25256
+ endAdornment
25257
+ } = tab;
25258
+ const isDisabled = !!disabled;
25259
+ const {
25260
+ hoverProps,
25261
+ isHovered
25262
+ } = (0, import_react_aria64.useHover)({
25263
+ isDisabled
25264
+ });
25265
+ const {
25266
+ baseStyles: baseStyles4,
25267
+ activeStyles: activeStyles3,
25268
+ focusRingStyles: focusRingStyles2,
25269
+ hoverStyles: hoverStyles4,
25270
+ disabledStyles: disabledStyles3,
25271
+ activeHoverStyles
25272
+ } = (0, import_react146.useMemo)(() => getTabStyles(), []);
25273
+ const uniqueValue = uniqueTabValue(tab);
25274
+ const tabProps = {
25275
+ "aria-controls": `${uniqueValue}-tabPanel`,
25276
+ "aria-selected": active,
25277
+ "aria-disabled": isDisabled || void 0,
25278
+ id: `${uniqueValue}-tab`,
25279
+ role: "tab",
25280
+ tabIndex: active ? 0 : -1,
25281
+ ...others,
25282
+ ...(0, import_runtime117.trussProps)({
25283
+ ...baseStyles4,
25284
+ ...active && activeStyles3,
25285
+ ...isDisabled && disabledStyles3,
25286
+ ...isHovered && hoverStyles4,
25287
+ ...isHovered && active && activeHoverStyles,
25288
+ ...isFocusVisible && active && focusRingStyles2
25289
+ })
25290
+ };
25291
+ const interactiveProps = (0, import_react_aria64.mergeProps)(focusProps, hoverProps, {
25292
+ onKeyUp,
25293
+ onBlur,
25294
+ ...isRouteTab(tab) ? {} : {
25295
+ onClick: () => onClick(tab.value)
25409
25296
  }
25410
- }
25411
- return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)(import_jsx_runtime202.Fragment, { children: [
25412
- wrapWithMotionAndMaybeBack(children),
25413
- actions && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("footer", { className: "bts_solid btw_1px bcGray200 pt3 pb3 pr3 pl3 df aic jcfe", children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("div", { className: "df gap1", children: actions.map((buttonProps, i) => /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(Button, { ...buttonProps }, i)) }) })
25297
+ });
25298
+ const tabLabel = /* @__PURE__ */ (0, import_jsx_runtime201.jsxs)(import_jsx_runtime201.Fragment, { children: [
25299
+ label,
25300
+ (icon || endAdornment) && /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("span", { className: "ml1", children: icon ? /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(Icon, { icon }) : endAdornment })
25414
25301
  ] });
25415
- };
25416
-
25417
- // src/components/Table/cardSlots.ts
25418
- function cardTitleSlot(text) {
25419
- return { kind: "title", text };
25420
- }
25421
- function cardEyebrowSlot(text) {
25422
- return { kind: "eyebrow", text };
25302
+ return isDisabled ? maybeTooltip({
25303
+ title: resolveTooltip(disabled),
25304
+ placement: "top",
25305
+ children: /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("div", { ...tabProps, children: tabLabel })
25306
+ }) : isRouteTab(tab) ? /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(import_react_router_dom8.Link, { ...(0, import_react_aria64.mergeProps)(tabProps, interactiveProps, {
25307
+ className: "navLink"
25308
+ }), to: tab.href, children: tabLabel }) : /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("button", { ...{
25309
+ ...tabProps,
25310
+ ...interactiveProps
25311
+ }, children: tabLabel });
25423
25312
  }
25424
- function cardBadgeSlot(text, tags) {
25425
- return { kind: "badge", text, tags };
25313
+ function getTabStyles() {
25314
+ const borderBottomWidthPx = 4;
25315
+ const verticalPaddingPx = 6;
25316
+ const borderBottomStyles = {
25317
+ borderBottomStyle: "bbs_solid",
25318
+ borderBottomWidth: ["borderBottomWidth_var", {
25319
+ "--borderBottomWidth": (0, import_runtime117.maybeCssVar)(`${borderBottomWidthPx}px`)
25320
+ }],
25321
+ paddingBottom: ["pb_var", {
25322
+ "--paddingBottom": `${verticalPaddingPx - borderBottomWidthPx}px`
25323
+ }]
25324
+ };
25325
+ return {
25326
+ baseStyles: {
25327
+ display: "df",
25328
+ alignItems: "aic",
25329
+ height: "h_32px",
25330
+ paddingTop: ["py_var", {
25331
+ "--paddingTop": `${verticalPaddingPx}px`
25332
+ }],
25333
+ paddingBottom: ["py_var", {
25334
+ "--paddingBottom": `${verticalPaddingPx}px`
25335
+ }],
25336
+ paddingLeft: "pl1",
25337
+ paddingRight: "pr1",
25338
+ outline: "outline0",
25339
+ color: "gray700",
25340
+ width: "width_fit_content",
25341
+ cursor: "cursorPointer",
25342
+ fontWeight: "fw4",
25343
+ fontSize: "fz_14px",
25344
+ lineHeight: "lh_20px"
25345
+ },
25346
+ activeStyles: {
25347
+ ...{
25348
+ borderColor: "bcBlue700",
25349
+ fontWeight: "fw6",
25350
+ fontSize: "fz_14px",
25351
+ lineHeight: "lh_20px",
25352
+ color: "gray900"
25353
+ },
25354
+ ...borderBottomStyles
25355
+ },
25356
+ disabledStyles: {
25357
+ color: "gray400",
25358
+ cursor: "cursorNotAllowed"
25359
+ },
25360
+ focusRingStyles: {
25361
+ backgroundColor: "bgBlue50",
25362
+ boxShadow: "bshFocus"
25363
+ },
25364
+ hoverStyles: {
25365
+ ...{
25366
+ borderColor: "bcGray400"
25367
+ },
25368
+ ...borderBottomStyles
25369
+ },
25370
+ activeHoverStyles: {
25371
+ ...{
25372
+ backgroundColor: "bgBlue50",
25373
+ borderColor: "bcBlue700"
25374
+ },
25375
+ ...borderBottomStyles
25376
+ }
25377
+ };
25426
25378
  }
25427
- function cardStatusSlot(tag) {
25428
- return { kind: "status", tag };
25379
+ function getNextTabValue(selected, key, tabs) {
25380
+ const enabledTabs = tabs.filter((tab) => tab.disabled !== true);
25381
+ const tabsToScan = key === "ArrowRight" ? enabledTabs : enabledTabs.reverse();
25382
+ const currentIndex = tabsToScan.findIndex((tab) => uniqueTabValue(tab) === selected);
25383
+ const nextIndex = currentIndex === tabsToScan.length - 1 ? 0 : currentIndex + 1;
25384
+ return uniqueTabValue(tabsToScan[nextIndex]);
25429
25385
  }
25430
- function cardDataBlockSlot(props) {
25431
- return { kind: "dataBlock", ...props };
25386
+ function isRouteTabs(props) {
25387
+ const {
25388
+ tabs
25389
+ } = props;
25390
+ return tabs.length > 0 && isRouteTab(tabs[0]);
25432
25391
  }
25433
- function cardProgressSlot(value) {
25434
- return { kind: "progress", value };
25392
+ function isRouteTab(tab) {
25393
+ return "path" in tab;
25435
25394
  }
25436
-
25437
- // src/components/Table/utils/simpleHelpers.ts
25438
- var simpleHeader = { kind: "header", id: "header", data: void 0 };
25439
- function simpleDataRows(data = []) {
25440
- return [simpleHeader, ...data.map((data2) => ({ kind: "data", data: data2, id: data2.id }))];
25395
+ function uniqueTabValue(tab) {
25396
+ return isRouteTab(tab) ? (0, import_change_case9.camelCase)(tab.name) : tab.value;
25441
25397
  }
25442
-
25443
- // src/components/Table/utils/visitor.ts
25444
- function visit(rows, fn) {
25445
- const todo = [...rows];
25446
- while (todo.length > 0) {
25447
- const row = todo.pop();
25448
- fn(row);
25449
- if (row.children) {
25450
- todo.push(...row.children);
25451
- }
25452
- }
25398
+ function hideTabs(props) {
25399
+ return props.alwaysShowAllTabs ? false : props.tabs.filter((t) => !t.disabled).length === 1;
25453
25400
  }
25454
25401
 
25455
25402
  // src/components/TagGroup.tsx
25456
- var import_jsx_runtime203 = require("react/jsx-runtime");
25403
+ var import_jsx_runtime202 = require("react/jsx-runtime");
25457
25404
  function TagGroup(props) {
25458
25405
  const {
25459
25406
  tags,
@@ -25461,9 +25408,9 @@ function TagGroup(props) {
25461
25408
  ...otherProps
25462
25409
  } = props;
25463
25410
  const tid = useTestIds(otherProps, "tagGroup");
25464
- return /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)("div", { ...tid, className: "df aic fww gap1", children: [
25465
- tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(Tag, { ...tag, variant: "secondary" }, tag.text)),
25466
- onEdit && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("span", { className: "ml1 fw4 fz_14px lh_20px", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(Button, { label: "Edit", variant: "text", onClick: onEdit, ...tid.edit }) })
25411
+ return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)("div", { ...tid, className: "df aic fww gap1", children: [
25412
+ tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(Tag, { ...tag, variant: "secondary" }, tag.text)),
25413
+ onEdit && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("span", { className: "ml1 fw4 fz_14px lh_20px", children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(Button, { label: "Edit", variant: "text", onClick: onEdit, ...tid.edit }) })
25467
25414
  ] });
25468
25415
  }
25469
25416
 
@@ -25476,15 +25423,15 @@ function useToast() {
25476
25423
  }
25477
25424
 
25478
25425
  // src/layouts/SideNavLayout/SideNavLayout.tsx
25479
- var import_runtime119 = require("@homebound/truss/runtime");
25480
- var import_jsx_runtime204 = require("react/jsx-runtime");
25426
+ var import_runtime118 = require("@homebound/truss/runtime");
25427
+ var import_jsx_runtime203 = require("react/jsx-runtime");
25481
25428
  var __maybeInc21 = (inc) => {
25482
25429
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25483
25430
  };
25484
25431
  function SideNavLayout(props) {
25485
25432
  const hasProvider = useHasSideNavLayoutProvider();
25486
- if (hasProvider) return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(SideNavLayoutContent, { ...props });
25487
- return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(SideNavLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(SideNavLayoutContent, { ...props }) });
25433
+ if (hasProvider) return /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(SideNavLayoutContent, { ...props });
25434
+ return /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(SideNavLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(SideNavLayoutContent, { ...props }) });
25488
25435
  }
25489
25436
  function SideNavLayoutContent(props) {
25490
25437
  const {
@@ -25506,7 +25453,7 @@ function SideNavLayoutContent(props) {
25506
25453
  const railOffsetPx = !showRail ? 0 : !bp.mdAndUp || collapsed ? railCollapsedWidthPx : railWidthPx;
25507
25454
  const navTop = bannerAndNavbarChromeTop();
25508
25455
  const railViewportHeight = `calc(var(${beamLayoutViewportHeightVar}, 100vh) - var(${beamEnvironmentBannerLayoutHeightVar}, 0px) - var(${beamNavbarLayoutHeightVar}, 0px))`;
25509
- const rail = showRail && /* @__PURE__ */ (0, import_jsx_runtime204.jsxs)("div", { ...(0, import_runtime119.trussProps)({
25456
+ const rail = showRail && /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)("div", { ...(0, import_runtime118.trussProps)({
25510
25457
  ...{
25511
25458
  display: "df",
25512
25459
  flexDirection: "fdc",
@@ -25530,14 +25477,14 @@ function SideNavLayoutContent(props) {
25530
25477
  position: "sticky",
25531
25478
  left: "left0",
25532
25479
  zIndex: ["z_var", {
25533
- "--zIndex": (0, import_runtime119.maybeCssVar)(zIndices.sideNav)
25480
+ "--zIndex": (0, import_runtime118.maybeCssVar)(zIndices.sideNav)
25534
25481
  }],
25535
25482
  top: ["top_var", {
25536
- "--top": (0, import_runtime119.maybeCssVar)(__maybeInc21(navTop))
25483
+ "--top": (0, import_runtime118.maybeCssVar)(__maybeInc21(navTop))
25537
25484
  }],
25538
25485
  alignSelf: "asfs",
25539
25486
  height: ["h_var", {
25540
- "--height": (0, import_runtime119.maybeCssVar)(__maybeInc21(railViewportHeight))
25487
+ "--height": (0, import_runtime118.maybeCssVar)(__maybeInc21(railViewportHeight))
25541
25488
  }],
25542
25489
  width: ["w_var", {
25543
25490
  "--width": `${collapsed ? railCollapsedWidthPx : railWidthPx}px`
@@ -25547,11 +25494,11 @@ function SideNavLayoutContent(props) {
25547
25494
  position: "fixed",
25548
25495
  left: "left0",
25549
25496
  top: ["top_var", {
25550
- "--top": (0, import_runtime119.maybeCssVar)(__maybeInc21(navTop))
25497
+ "--top": (0, import_runtime118.maybeCssVar)(__maybeInc21(navTop))
25551
25498
  }],
25552
25499
  bottom: "bottom0",
25553
25500
  zIndex: ["z_var", {
25554
- "--zIndex": (0, import_runtime119.maybeCssVar)(zIndices.sideNav)
25501
+ "--zIndex": (0, import_runtime118.maybeCssVar)(zIndices.sideNav)
25555
25502
  }]
25556
25503
  },
25557
25504
  ...collapsed ? {
@@ -25563,18 +25510,18 @@ function SideNavLayoutContent(props) {
25563
25510
  }
25564
25511
  }
25565
25512
  }), ...tid.sideNav, children: [
25566
- showCollapseToggle && /* @__PURE__ */ (0, import_jsx_runtime204.jsx)("div", { className: "absolute right2 top2 z2", children: /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(IconButton, { icon: collapsed ? "menuOpen" : "menuClose", label: collapsed ? "Expand navigation" : "Collapse navigation", onClick: () => setNavState(collapsed ? "expanded" : "collapse"), ...tid.toggle }) }),
25567
- /* @__PURE__ */ (0, import_jsx_runtime204.jsx)("div", { className: "fg1 mh0 df fdc", ...tid.sideNavContent, children: /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(SideNav, { ...sideNav }) })
25513
+ showCollapseToggle && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("div", { className: "absolute right2 top2 z2", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(IconButton, { icon: collapsed ? "menuOpen" : "menuClose", label: collapsed ? "Expand navigation" : "Collapse navigation", onClick: () => setNavState(collapsed ? "expanded" : "collapse"), ...tid.toggle }) }),
25514
+ /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("div", { className: "fg1 mh0 df fdc", ...tid.sideNavContent, children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(SideNav, { ...sideNav }) })
25568
25515
  ] });
25569
- return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime204.jsxs)("div", { ...(0, import_runtime119.mergeProps)(void 0, {
25516
+ return /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)("div", { ...(0, import_runtime118.mergeProps)(void 0, {
25570
25517
  [beamSideNavLayoutWidthVar]: `${railOffsetPx}px`
25571
25518
  }, {
25572
25519
  display: "df",
25573
25520
  flexDirection: "fdr",
25574
25521
  width: "w100"
25575
25522
  }), ...tid, children: [
25576
- contrastRail ? /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(ContrastScope, { children: rail }) : rail,
25577
- /* @__PURE__ */ (0, import_jsx_runtime204.jsx)("div", { ...(0, import_runtime119.trussProps)({
25523
+ contrastRail ? /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(ContrastScope, { children: rail }) : rail,
25524
+ /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("div", { ...(0, import_runtime118.trussProps)({
25578
25525
  display: "df",
25579
25526
  flexDirection: "fdc",
25580
25527
  flexGrow: "fg1",
@@ -25590,8 +25537,8 @@ function SideNavLayoutContent(props) {
25590
25537
  }
25591
25538
 
25592
25539
  // src/layouts/EnvironmentBannerLayout/EnvironmentBannerLayout.tsx
25593
- var import_runtime120 = require("@homebound/truss/runtime");
25594
- var import_jsx_runtime205 = require("react/jsx-runtime");
25540
+ var import_runtime119 = require("@homebound/truss/runtime");
25541
+ var import_jsx_runtime204 = require("react/jsx-runtime");
25595
25542
  var __maybeInc22 = (inc) => {
25596
25543
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25597
25544
  };
@@ -25607,35 +25554,35 @@ function EnvironmentBannerLayout(props) {
25607
25554
  [beamEnvironmentBannerLayoutHeightVar]: `${bannerHeightPx}px`
25608
25555
  };
25609
25556
  const innerWidth = `var(${beamLayoutViewportWidthVar}, 100vw)`;
25610
- return /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(EnvironmentBannerLayoutHeightProvider, { value: bannerHeightPx, children: /* @__PURE__ */ (0, import_jsx_runtime205.jsxs)("div", { ...(0, import_runtime120.mergeProps)(void 0, style, {
25557
+ return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(EnvironmentBannerLayoutHeightProvider, { value: bannerHeightPx, children: /* @__PURE__ */ (0, import_jsx_runtime204.jsxs)("div", { ...(0, import_runtime119.mergeProps)(void 0, style, {
25611
25558
  display: "df",
25612
25559
  flexDirection: "fdc",
25613
25560
  width: "wfc",
25614
25561
  minWidth: "mw100"
25615
25562
  }), ...tid, children: [
25616
- showBanner && environmentBanner && /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("div", { ...(0, import_runtime120.mergeProps)(void 0, {
25563
+ showBanner && environmentBanner && /* @__PURE__ */ (0, import_jsx_runtime204.jsx)("div", { ...(0, import_runtime119.mergeProps)(void 0, {
25617
25564
  height: environmentBannerSizePx
25618
25565
  }, {
25619
25566
  flexShrink: "fs0",
25620
25567
  width: "w100"
25621
- }), children: /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("div", { ...(0, import_runtime120.trussProps)({
25568
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime204.jsx)("div", { ...(0, import_runtime119.trussProps)({
25622
25569
  position: "fixed",
25623
25570
  top: "top0",
25624
25571
  left: "left0",
25625
25572
  zIndex: ["z_var", {
25626
- "--zIndex": (0, import_runtime120.maybeCssVar)(zIndices.environmentBanner)
25573
+ "--zIndex": (0, import_runtime119.maybeCssVar)(zIndices.environmentBanner)
25627
25574
  }],
25628
25575
  width: ["w_var", {
25629
- "--width": (0, import_runtime120.maybeCssVar)(__maybeInc22(innerWidth))
25576
+ "--width": (0, import_runtime119.maybeCssVar)(__maybeInc22(innerWidth))
25630
25577
  }]
25631
- }), ...tid.bannerSticky, children: /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(EnvironmentBanner, { ...environmentBanner, ...tid.environmentBanner }) }) }),
25578
+ }), ...tid.bannerSticky, children: /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(EnvironmentBanner, { ...environmentBanner, ...tid.environmentBanner }) }) }),
25632
25579
  children
25633
25580
  ] }) }) });
25634
25581
  }
25635
25582
 
25636
25583
  // src/layouts/NavbarLayout/NavbarLayout.tsx
25637
25584
  var import_react151 = require("react");
25638
- var import_runtime121 = require("@homebound/truss/runtime");
25585
+ var import_runtime120 = require("@homebound/truss/runtime");
25639
25586
 
25640
25587
  // src/layouts/useAutoHideOnScroll.ts
25641
25588
  var import_react148 = require("react");
@@ -25728,7 +25675,7 @@ function useAutoHideOnScroll(spacerRef, enabled, getTopOffset) {
25728
25675
  }
25729
25676
 
25730
25677
  // src/layouts/useMeasuredHeight.ts
25731
- var import_utils171 = require("@react-aria/utils");
25678
+ var import_utils170 = require("@react-aria/utils");
25732
25679
  var import_react149 = require("react");
25733
25680
  function useMeasuredHeight(ref, enabled) {
25734
25681
  const [height, setHeight] = (0, import_react149.useState)(0);
@@ -25737,7 +25684,7 @@ function useMeasuredHeight(ref, enabled) {
25737
25684
  const next = el ? Math.round(el.getBoundingClientRect().height) : 0;
25738
25685
  setHeight((prev) => prev === next ? prev : next);
25739
25686
  }, [ref]);
25740
- (0, import_utils171.useResizeObserver)({ ref, onResize: syncElementHeight });
25687
+ (0, import_utils170.useResizeObserver)({ ref, onResize: syncElementHeight });
25741
25688
  (0, import_react149.useLayoutEffect)(() => {
25742
25689
  syncElementHeight();
25743
25690
  }, [enabled, syncElementHeight]);
@@ -25746,17 +25693,17 @@ function useMeasuredHeight(ref, enabled) {
25746
25693
 
25747
25694
  // src/layouts/NavbarLayout/NavbarLayoutHeightContext.tsx
25748
25695
  var import_react150 = require("react");
25749
- var import_jsx_runtime206 = require("react/jsx-runtime");
25696
+ var import_jsx_runtime205 = require("react/jsx-runtime");
25750
25697
  var NavbarLayoutHeightContext = (0, import_react150.createContext)(0);
25751
25698
  function NavbarLayoutHeightProvider({ value, children }) {
25752
- return /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(NavbarLayoutHeightContext.Provider, { value, children });
25699
+ return /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(NavbarLayoutHeightContext.Provider, { value, children });
25753
25700
  }
25754
25701
  function useNavbarLayoutHeight() {
25755
25702
  return (0, import_react150.useContext)(NavbarLayoutHeightContext);
25756
25703
  }
25757
25704
 
25758
25705
  // src/layouts/NavbarLayout/NavbarLayout.tsx
25759
- var import_jsx_runtime207 = require("react/jsx-runtime");
25706
+ var import_jsx_runtime206 = require("react/jsx-runtime");
25760
25707
  var __maybeInc23 = (inc) => {
25761
25708
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25762
25709
  };
@@ -25785,10 +25732,10 @@ function NavbarLayout(props) {
25785
25732
  position: "sticky",
25786
25733
  left: "left0",
25787
25734
  zIndex: ["z_var", {
25788
- "--zIndex": (0, import_runtime121.maybeCssVar)(zIndices.navbar)
25735
+ "--zIndex": (0, import_runtime120.maybeCssVar)(zIndices.navbar)
25789
25736
  }],
25790
25737
  width: ["w_var", {
25791
- "--width": (0, import_runtime121.maybeCssVar)(__maybeInc23(innerWidth))
25738
+ "--width": (0, import_runtime120.maybeCssVar)(__maybeInc23(innerWidth))
25792
25739
  }]
25793
25740
  }
25794
25741
  ) : (
@@ -25797,10 +25744,10 @@ function NavbarLayout(props) {
25797
25744
  position: "fixed",
25798
25745
  left: "left0",
25799
25746
  zIndex: ["z_var", {
25800
- "--zIndex": (0, import_runtime121.maybeCssVar)(zIndices.navbar)
25747
+ "--zIndex": (0, import_runtime120.maybeCssVar)(zIndices.navbar)
25801
25748
  }],
25802
25749
  width: ["w_var", {
25803
- "--width": (0, import_runtime121.maybeCssVar)(__maybeInc23(innerWidth))
25750
+ "--width": (0, import_runtime120.maybeCssVar)(__maybeInc23(innerWidth))
25804
25751
  }],
25805
25752
  transition: "transitionTop"
25806
25753
  }
@@ -25809,26 +25756,90 @@ function NavbarLayout(props) {
25809
25756
  const innerStyle = autoHideState !== "static" ? {
25810
25757
  top: autoHideState === "revealed" ? bannerTop : `calc(${bannerTop} - ${navHeight}px)`
25811
25758
  } : void 0;
25812
- const navbarEl = (0, import_react151.useMemo)(() => /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(Navbar, { ...navbar }), [navbar]);
25813
- return /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(NavbarLayoutHeightProvider, { value: navbarOffsetPx, children: /* @__PURE__ */ (0, import_jsx_runtime207.jsxs)("div", { ...(0, import_runtime121.mergeProps)(void 0, cssVars, {
25759
+ const navbarEl = (0, import_react151.useMemo)(() => /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(Navbar, { ...navbar }), [navbar]);
25760
+ return /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(NavbarLayoutHeightProvider, { value: navbarOffsetPx, children: /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)("div", { ...(0, import_runtime120.mergeProps)(void 0, cssVars, {
25814
25761
  display: "df",
25815
25762
  flexDirection: "fdc",
25816
25763
  width: "wfc",
25817
25764
  minWidth: "mw100"
25818
25765
  }), ...tid, children: [
25819
- /* @__PURE__ */ (0, import_jsx_runtime207.jsx)("div", { ref: spacerRef, ...(0, import_runtime121.mergeProps)(void 0, {
25766
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsx)("div", { ref: spacerRef, ...(0, import_runtime120.mergeProps)(void 0, {
25820
25767
  height: navHeight
25821
25768
  }, {
25822
25769
  flexShrink: "fs0",
25823
25770
  width: "w100"
25824
- }), children: /* @__PURE__ */ (0, import_jsx_runtime207.jsx)("div", { ref: navMetricsRef, ...(0, import_runtime121.mergeProps)(void 0, innerStyle, innerCss), ...tid.navbar, children: navbarEl }) }),
25825
- /* @__PURE__ */ (0, import_jsx_runtime207.jsx)("div", { className: "df fdc mh0 mw100 w100", ...tid.body, children })
25771
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime206.jsx)("div", { ref: navMetricsRef, ...(0, import_runtime120.mergeProps)(void 0, innerStyle, innerCss), ...tid.navbar, children: navbarEl }) }),
25772
+ /* @__PURE__ */ (0, import_jsx_runtime206.jsx)("div", { className: "df fdc mh0 mw100 w100", ...tid.body, children })
25826
25773
  ] }) }) });
25827
25774
  }
25828
25775
 
25829
25776
  // src/layouts/PageHeaderLayout/PageHeaderLayout.tsx
25830
25777
  var import_react152 = require("react");
25831
25778
 
25779
+ // src/components/Headers/BaseHeader.tsx
25780
+ var import_runtime121 = require("@homebound/truss/runtime");
25781
+ var import_jsx_runtime207 = require("react/jsx-runtime");
25782
+ function BaseHeader(props) {
25783
+ const {
25784
+ title,
25785
+ documentTitleSuffix,
25786
+ rightSlot,
25787
+ breadcrumbs,
25788
+ bottomSlot,
25789
+ ...otherProps
25790
+ } = props;
25791
+ const tid = useTestIds(otherProps, "header");
25792
+ useDocumentTitle(title, documentTitleSuffix);
25793
+ return /* @__PURE__ */ (0, import_jsx_runtime207.jsxs)("header", { ...tid, ...(0, import_runtime121.trussProps)({
25794
+ display: "df",
25795
+ flexDirection: "fdc",
25796
+ paddingTop: "pt3",
25797
+ borderBottomStyle: "bbs_solid",
25798
+ borderBottomWidth: "bbw_1px",
25799
+ gap: "gap2",
25800
+ borderColor: ["bc_var", {
25801
+ "--borderColor": "var(--b-surface-separator)"
25802
+ }],
25803
+ backgroundColor: ["bgColor_var", {
25804
+ "--backgroundColor": "var(--b-surface)"
25805
+ }]
25806
+ }), children: [
25807
+ /* @__PURE__ */ (0, import_jsx_runtime207.jsxs)("div", { ...(0, import_runtime121.trussProps)({
25808
+ ...{
25809
+ display: "df",
25810
+ justifyContent: "jcsb",
25811
+ width: "w100",
25812
+ gap: "gap1",
25813
+ paddingLeft: "pl3",
25814
+ paddingRight: "pr3"
25815
+ },
25816
+ ...{
25817
+ ...!bottomSlot ? {
25818
+ marginBottom: "mb2"
25819
+ } : {}
25820
+ }
25821
+ }), children: [
25822
+ /* @__PURE__ */ (0, import_jsx_runtime207.jsxs)("div", { className: "mw0", children: [
25823
+ breadcrumbs && /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(Breadcrumbs, { ...breadcrumbs }),
25824
+ /* @__PURE__ */ (0, import_jsx_runtime207.jsx)("h1", { ...tid.title, className: "fw6 fz_20px lh_28px", children: title })
25825
+ ] }),
25826
+ /* @__PURE__ */ (0, import_jsx_runtime207.jsx)("div", { className: "fs0", children: rightSlot })
25827
+ ] }),
25828
+ bottomSlot
25829
+ ] });
25830
+ }
25831
+
25832
+ // src/components/Headers/PageHeader.tsx
25833
+ var import_jsx_runtime208 = require("react/jsx-runtime");
25834
+ function PageHeader2(props) {
25835
+ const {
25836
+ tabs,
25837
+ ...otherProps
25838
+ } = props;
25839
+ const tid = useTestIds(otherProps, "header");
25840
+ return /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(BaseHeader, { ...otherProps, bottomSlot: tabs && /* @__PURE__ */ (0, import_jsx_runtime208.jsx)("div", { className: "pl3 pr3", children: /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(Tabs, { ...tabs, ...tid.tabs }) }) });
25841
+ }
25842
+
25832
25843
  // src/layouts/useBannerAndNavbarHeight.ts
25833
25844
  function useBannerAndNavbarHeight() {
25834
25845
  return useEnvironmentBannerLayoutHeight() + useNavbarLayoutHeight();
@@ -25836,7 +25847,7 @@ function useBannerAndNavbarHeight() {
25836
25847
 
25837
25848
  // src/layouts/PageHeaderLayout/PageHeaderLayout.tsx
25838
25849
  var import_runtime122 = require("@homebound/truss/runtime");
25839
- var import_jsx_runtime208 = require("react/jsx-runtime");
25850
+ var import_jsx_runtime209 = require("react/jsx-runtime");
25840
25851
  var __maybeInc24 = (inc) => {
25841
25852
  return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
25842
25853
  };
@@ -25891,19 +25902,19 @@ function PageHeaderLayout(props) {
25891
25902
  const innerStyle = autoHideState !== "static" ? {
25892
25903
  top: autoHideState === "revealed" ? outerTop : `calc(${outerTop} - ${headerHeight}px)`
25893
25904
  } : void 0;
25894
- const pageHeaderEl = (0, import_react152.useMemo)(() => /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(PageHeader2, { ...pageHeader }), [pageHeader]);
25895
- return /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime208.jsxs)("div", { ...(0, import_runtime122.mergeProps)(void 0, cssVars, {
25905
+ const pageHeaderEl = (0, import_react152.useMemo)(() => /* @__PURE__ */ (0, import_jsx_runtime209.jsx)(PageHeader2, { ...pageHeader }), [pageHeader]);
25906
+ return /* @__PURE__ */ (0, import_jsx_runtime209.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime209.jsxs)("div", { ...(0, import_runtime122.mergeProps)(void 0, cssVars, {
25896
25907
  display: "df",
25897
25908
  flexDirection: "fdc",
25898
25909
  width: "w100"
25899
25910
  }), ...tid, children: [
25900
- /* @__PURE__ */ (0, import_jsx_runtime208.jsx)("div", { ref: spacerRef, ...(0, import_runtime122.mergeProps)(void 0, {
25911
+ /* @__PURE__ */ (0, import_jsx_runtime209.jsx)("div", { ref: spacerRef, ...(0, import_runtime122.mergeProps)(void 0, {
25901
25912
  height: headerHeight
25902
25913
  }, {
25903
25914
  flexShrink: "fs0",
25904
25915
  width: "w100"
25905
- }), children: /* @__PURE__ */ (0, import_jsx_runtime208.jsx)("div", { ref: headerMetricsRef, ...(0, import_runtime122.mergeProps)(void 0, innerStyle, innerCss), ...tid.pageHeader, children: pageHeaderEl }) }),
25906
- /* @__PURE__ */ (0, import_jsx_runtime208.jsx)("div", { className: "df fdc fg1 mh0 w100", ...tid.body, children })
25916
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime209.jsx)("div", { ref: headerMetricsRef, ...(0, import_runtime122.mergeProps)(void 0, innerStyle, innerCss), ...tid.pageHeader, children: pageHeaderEl }) }),
25917
+ /* @__PURE__ */ (0, import_jsx_runtime209.jsx)("div", { className: "df fdc fg1 mh0 w100", ...tid.body, children })
25907
25918
  ] }) });
25908
25919
  }
25909
25920
  // Annotate the CommonJS export names for ESM import in node:
@@ -26014,7 +26025,6 @@ function PageHeaderLayout(props) {
26014
26025
  NavbarLayout,
26015
26026
  NumberField,
26016
26027
  OpenModal,
26017
- PageHeader,
26018
26028
  PageHeaderLayout,
26019
26029
  Pagination,
26020
26030
  Palette,