@carlonicora/nextjs-jsonapi 1.135.1 → 1.136.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.
@@ -48,7 +48,7 @@ import {
48
48
  TabsList,
49
49
  TabsTrigger,
50
50
  useCurrentUserContext
51
- } from "../chunk-EF2HVXOV.mjs";
51
+ } from "../chunk-2KXPQHZU.mjs";
52
52
  import {
53
53
  getRoleId,
54
54
  getStripePublishableKey
@@ -10117,7 +10117,7 @@ import { useRef as useRef17 } from "react";
10117
10117
  import dynamic from "next/dynamic";
10118
10118
  import React17 from "react";
10119
10119
  import { jsx as jsx86 } from "react/jsx-runtime";
10120
- var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-FAPCNKXZ.mjs"), {
10120
+ var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-JVZ2HDAU.mjs"), {
10121
10121
  ssr: false
10122
10122
  });
10123
10123
  var BlockNoteEditorContainer = React17.memo(/* @__PURE__ */ __name(function EditorContainer(props) {
@@ -14812,16 +14812,19 @@ __name(ReactMarkdownContainer, "ReactMarkdownContainer");
14812
14812
  // src/components/containers/RoundPageContainerTitle.tsx
14813
14813
  import { InfoIcon as InfoIcon2 } from "lucide-react";
14814
14814
  import { jsx as jsx160, jsxs as jsxs93 } from "react/jsx-runtime";
14815
+ var HEADER_ROW_MIN_H = "min-h-[53px]";
14815
14816
  function RoundPageContainerTitle({
14816
14817
  module,
14817
14818
  details,
14819
+ detailsTitle,
14820
+ detailsIcon,
14818
14821
  showDetails,
14819
14822
  setShowDetails
14820
14823
  }) {
14821
14824
  const { title } = useSharedContext();
14822
14825
  const isMobile = useIsMobile();
14823
14826
  return /* @__PURE__ */ jsxs93("div", { className: "flex w-full flex-col border-b", children: [
14824
- /* @__PURE__ */ jsxs93("div", { className: cn(`flex w-full flex-row items-center gap-x-2 p-4 justify-between`), children: [
14827
+ /* @__PURE__ */ jsxs93("div", { className: cn(`flex w-full flex-row items-center gap-x-2 p-4 justify-between`, HEADER_ROW_MIN_H), children: [
14825
14828
  !isMobile ? /* @__PURE__ */ jsxs93("div", { className: "flex w-full gap-x-4", children: [
14826
14829
  /* @__PURE__ */ jsxs93("div", { className: "text-muted-foreground flex items-center gap-x-2 text-lg font-light whitespace-nowrap", children: [
14827
14830
  title.titleActions,
@@ -14845,10 +14848,14 @@ function RoundPageContainerTitle({
14845
14848
  variant: showDetails ? `ghost` : `default`,
14846
14849
  onClick: () => setShowDetails(!showDetails),
14847
14850
  className: cn(`cursor-pointer`),
14848
- children: /* @__PURE__ */ jsx160(InfoIcon2, {})
14851
+ children: detailsIcon ?? /* @__PURE__ */ jsx160(InfoIcon2, {})
14849
14852
  }
14850
14853
  ) }),
14851
- /* @__PURE__ */ jsx160(TooltipContent, { children: showDetails ? "Hide details" : "Show details" })
14854
+ /* @__PURE__ */ jsxs93(TooltipContent, { children: [
14855
+ showDetails ? "Hide" : "Show",
14856
+ " ",
14857
+ detailsTitle ?? "details"
14858
+ ] })
14852
14859
  ] })
14853
14860
  ] })
14854
14861
  ] }),
@@ -14881,26 +14888,36 @@ function RoundPageContainer({
14881
14888
  forceHeader,
14882
14889
  header,
14883
14890
  layout: layout2 = "tabs",
14884
- onSectionChange
14891
+ onSectionChange,
14892
+ testId,
14893
+ defaultDetailsOpen = false,
14894
+ detailsTitle,
14895
+ detailsIcon
14885
14896
  }) {
14886
14897
  const headerChildren = useHeaderChildren();
14887
14898
  const headerLeftContent = useHeaderLeftContent();
14888
14899
  const headerLogo = useHeaderLogo();
14889
14900
  const headerMobileChildren = useHeaderMobileChildren();
14890
- const [showDetails, setShowDetailsState] = useState51(false);
14901
+ const [showDetails, setShowDetailsState] = useState51(defaultDetailsOpen);
14891
14902
  const isMobile = useIsMobile();
14892
14903
  const [mounted, setMounted] = useState51(false);
14893
14904
  useEffect41(() => {
14894
- const match = document.cookie.split("; ").find((row) => row.startsWith(`${DETAILS_COOKIE_NAME}=`));
14895
- if (match?.split("=")[1] === "true") setShowDetailsState(true);
14905
+ const match = document.cookie.split("; ").find((row) => row.startsWith(`${detailsCookieName}=`));
14906
+ const stored = match?.split("=")[1];
14907
+ if (stored === "true") setShowDetailsState(true);
14908
+ else if (stored === "false") setShowDetailsState(false);
14896
14909
  }, []);
14897
14910
  useEffect41(() => {
14898
14911
  setMounted(true);
14899
14912
  }, []);
14900
- const setShowDetails = useCallback27((value) => {
14901
- setShowDetailsState(value);
14902
- document.cookie = `${DETAILS_COOKIE_NAME}=${value}; path=/; max-age=${DETAILS_COOKIE_MAX_AGE}`;
14903
- }, []);
14913
+ const detailsCookieName = module?.name ? `${DETAILS_COOKIE_NAME}_${module.name}` : DETAILS_COOKIE_NAME;
14914
+ const setShowDetails = useCallback27(
14915
+ (value) => {
14916
+ setShowDetailsState(value);
14917
+ document.cookie = `${detailsCookieName}=${value}; path=/; max-age=${DETAILS_COOKIE_MAX_AGE}`;
14918
+ },
14919
+ [detailsCookieName]
14920
+ );
14904
14921
  const searchParams = useSearchParams();
14905
14922
  const section = searchParams.get("section");
14906
14923
  const rewriteUrl = useUrlRewriter();
@@ -14945,10 +14962,17 @@ function RoundPageContainer({
14945
14962
  children: headerChildren
14946
14963
  }
14947
14964
  ),
14948
- /* @__PURE__ */ jsxs94("div", { className: cn("flex h-[calc(100vh-3rem)] w-full flex-col", isMobile ? "gap-1 p-1 pt-0" : "p-2 pt-0 pl-0"), children: [
14949
- /* @__PURE__ */ jsx161("div", { className: cn("bg-background flex min-h-0 w-full flex-1", isMobile ? "" : "rounded-lg border p-0"), children: /* @__PURE__ */ jsx161("div", { className: "flex w-full flex-col" }) }),
14950
- /* @__PURE__ */ jsx161(MobileNavigationBar, {})
14951
- ] })
14965
+ /* @__PURE__ */ jsxs94(
14966
+ "div",
14967
+ {
14968
+ "data-testid": testId,
14969
+ className: cn("flex h-[calc(100vh-3rem)] w-full flex-col", isMobile ? "gap-1 p-1 pt-0" : "p-2 pt-0 pl-0"),
14970
+ children: [
14971
+ /* @__PURE__ */ jsx161("div", { className: cn("bg-background flex min-h-0 w-full flex-1", isMobile ? "" : "rounded-lg border p-0"), children: /* @__PURE__ */ jsx161("div", { className: "flex w-full flex-col" }) }),
14972
+ /* @__PURE__ */ jsx161(MobileNavigationBar, {})
14973
+ ]
14974
+ }
14975
+ )
14952
14976
  ] });
14953
14977
  }
14954
14978
  return /* @__PURE__ */ jsxs94(Fragment24, { children: [
@@ -14962,194 +14986,213 @@ function RoundPageContainer({
14962
14986
  children: headerChildren
14963
14987
  }
14964
14988
  ),
14965
- /* @__PURE__ */ jsxs94("div", { className: cn(`flex h-[calc(100vh-3rem)] w-full flex-col`, isMobile ? "gap-1 p-1 pt-0" : "p-2 pt-0 pl-0"), children: [
14966
- /* @__PURE__ */ jsxs94("div", { className: "bg-background flex min-h-0 w-full flex-1 rounded-lg border p-0", children: [
14967
- /* @__PURE__ */ jsxs94("div", { className: "flex w-full flex-col", children: [
14968
- (!fullWidth || forceHeader) && /* @__PURE__ */ jsx161(
14969
- RoundPageContainerTitle,
14970
- {
14971
- module,
14972
- details,
14973
- showDetails,
14974
- setShowDetails,
14975
- fullWidth
14976
- }
14977
- ),
14978
- /* @__PURE__ */ jsx161("div", { className: "flex h-full w-full overflow-hidden", children: layout2 === "rail" && tabs ? (
14979
- // Rail layout: the vertical-tab navigation is a flush-left
14980
- // sidebar of the card and the content fills the full remaining
14981
- // width (like `fullWidth`) — NOT the centred max-w-6xl column.
14982
- /* @__PURE__ */ jsxs94(
14983
- Tabs,
14984
- {
14985
- value: activeTab,
14986
- onValueChange: handleTabChange,
14987
- orientation: "horizontal",
14988
- className: "flex h-full min-w-0 grow overflow-hidden data-[orientation=horizontal]:flex-row",
14989
- children: [
14990
- /* @__PURE__ */ jsx161(
14991
- "aside",
14992
- {
14993
- "data-testid": "round-page-rail",
14994
- className: "hidden shrink-0 border-r p-4 md:flex md:w-56 md:flex-col md:overflow-y-auto",
14995
- children: /* @__PURE__ */ jsxs94(TabsList, { className: "flex h-auto flex-col items-stretch gap-0.5 bg-transparent p-0", children: [
14996
- ungrouped.map((tab) => /* @__PURE__ */ jsx161(TabsTrigger, { value: tabValue(tab), className: railTriggerClass, children: tab.contentLabel ?? tab.label }, tab.label)),
14997
- groups.map((group) => /* @__PURE__ */ jsxs94(Fragment23, { children: [
14998
- /* @__PURE__ */ jsx161(
14999
- "div",
15000
- {
15001
- role: "presentation",
15002
- className: "text-muted-foreground px-3 pt-3 pb-1 text-[10px] font-bold tracking-wider uppercase",
15003
- children: group.label
15004
- }
15005
- ),
15006
- group.items.map((tab) => /* @__PURE__ */ jsx161(TabsTrigger, { value: tabValue(tab), className: railTriggerClass, children: tab.contentLabel ?? tab.label }, tab.label))
15007
- ] }, group.label))
15008
- ] })
15009
- }
15010
- ),
15011
- /* @__PURE__ */ jsxs94("div", { className: "flex min-w-0 grow flex-col overflow-hidden", children: [
15012
- /* @__PURE__ */ jsx161("div", { "data-testid": "round-page-rail-select", className: "p-2 md:hidden", children: /* @__PURE__ */ jsxs94(
15013
- Select,
15014
- {
15015
- items: tabItems,
15016
- value: activeTab,
15017
- onValueChange: (value) => {
15018
- if (value) handleTabChange(value);
15019
- },
15020
- children: [
15021
- /* @__PURE__ */ jsx161(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx161(SelectValue, {}) }),
15022
- /* @__PURE__ */ jsxs94(SelectContent, { children: [
15023
- ungrouped.map((tab) => /* @__PURE__ */ jsx161(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label)),
15024
- groups.map((group) => /* @__PURE__ */ jsxs94(SelectGroup, { children: [
15025
- /* @__PURE__ */ jsx161(SelectLabel, { children: group.label }),
15026
- group.items.map((tab) => /* @__PURE__ */ jsx161(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label))
14989
+ /* @__PURE__ */ jsxs94(
14990
+ "div",
14991
+ {
14992
+ "data-testid": testId,
14993
+ className: cn(`flex h-[calc(100vh-3rem)] w-full flex-col`, isMobile ? "gap-1 p-1 pt-0" : "p-2 pt-0 pl-0"),
14994
+ children: [
14995
+ /* @__PURE__ */ jsxs94("div", { className: "bg-background flex min-h-0 w-full flex-1 rounded-lg border p-0", children: [
14996
+ /* @__PURE__ */ jsxs94("div", { className: "flex w-full flex-col", children: [
14997
+ (!fullWidth || forceHeader) && /* @__PURE__ */ jsx161(
14998
+ RoundPageContainerTitle,
14999
+ {
15000
+ module,
15001
+ details,
15002
+ detailsTitle,
15003
+ detailsIcon,
15004
+ showDetails,
15005
+ setShowDetails,
15006
+ fullWidth
15007
+ }
15008
+ ),
15009
+ /* @__PURE__ */ jsx161("div", { className: "flex h-full w-full overflow-hidden", children: layout2 === "rail" && tabs ? (
15010
+ // Rail layout: the vertical-tab navigation is a flush-left
15011
+ // sidebar of the card and the content fills the full remaining
15012
+ // width (like `fullWidth`) NOT the centred max-w-6xl column.
15013
+ /* @__PURE__ */ jsxs94(
15014
+ Tabs,
15015
+ {
15016
+ value: activeTab,
15017
+ onValueChange: handleTabChange,
15018
+ orientation: "horizontal",
15019
+ className: "flex h-full min-w-0 grow overflow-hidden data-[orientation=horizontal]:flex-row",
15020
+ children: [
15021
+ /* @__PURE__ */ jsx161(
15022
+ "aside",
15023
+ {
15024
+ "data-testid": "round-page-rail",
15025
+ className: "hidden shrink-0 border-r p-4 md:flex md:w-56 md:flex-col md:overflow-y-auto",
15026
+ children: /* @__PURE__ */ jsxs94(TabsList, { className: "flex h-auto flex-col items-stretch gap-0.5 bg-transparent p-0", children: [
15027
+ ungrouped.map((tab) => /* @__PURE__ */ jsx161(TabsTrigger, { value: tabValue(tab), className: railTriggerClass, children: tab.contentLabel ?? tab.label }, tab.label)),
15028
+ groups.map((group) => /* @__PURE__ */ jsxs94(Fragment23, { children: [
15029
+ /* @__PURE__ */ jsx161(
15030
+ "div",
15031
+ {
15032
+ role: "presentation",
15033
+ className: "text-muted-foreground px-3 pt-3 pb-1 text-[10px] font-bold tracking-wider uppercase",
15034
+ children: group.label
15035
+ }
15036
+ ),
15037
+ group.items.map((tab) => /* @__PURE__ */ jsx161(TabsTrigger, { value: tabValue(tab), className: railTriggerClass, children: tab.contentLabel ?? tab.label }, tab.label))
15027
15038
  ] }, group.label))
15028
15039
  ] })
15029
- ]
15030
- }
15031
- ) }),
15032
- /* @__PURE__ */ jsx161(
15033
- "div",
15034
- {
15035
- className: cn(
15036
- `min-w-0 grow`,
15037
- activeFillHeight ? `flex flex-col overflow-hidden` : `overflow-y-auto p-4`
15038
- ),
15039
- children: /* @__PURE__ */ jsxs94(
15040
- "div",
15040
+ }
15041
+ ),
15042
+ /* @__PURE__ */ jsxs94("div", { className: "flex min-w-0 grow flex-col overflow-hidden", children: [
15043
+ /* @__PURE__ */ jsx161("div", { "data-testid": "round-page-rail-select", className: "p-2 md:hidden", children: /* @__PURE__ */ jsxs94(
15044
+ Select,
15041
15045
  {
15042
- className: cn(
15043
- activeFillHeight ? `flex min-h-0 w-full flex-1 flex-col` : `mx-auto w-full max-w-6xl`
15044
- ),
15046
+ items: tabItems,
15047
+ value: activeTab,
15048
+ onValueChange: (value) => {
15049
+ if (value) handleTabChange(value);
15050
+ },
15045
15051
  children: [
15046
- header,
15047
- tabs.map((tab) => /* @__PURE__ */ jsx161(
15048
- TabsContent,
15049
- {
15050
- value: tabValue(tab),
15051
- className: tab.fillHeight ? `flex min-h-0 w-full flex-1 flex-col` : ``,
15052
- children: tab.content
15053
- },
15054
- tab.label
15055
- )),
15056
- children && /* @__PURE__ */ jsx161("div", { className: "flex", children })
15052
+ /* @__PURE__ */ jsx161(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx161(SelectValue, {}) }),
15053
+ /* @__PURE__ */ jsxs94(SelectContent, { children: [
15054
+ ungrouped.map((tab) => /* @__PURE__ */ jsx161(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label)),
15055
+ groups.map((group) => /* @__PURE__ */ jsxs94(SelectGroup, { children: [
15056
+ /* @__PURE__ */ jsx161(SelectLabel, { children: group.label }),
15057
+ group.items.map((tab) => /* @__PURE__ */ jsx161(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label))
15058
+ ] }, group.label))
15059
+ ] })
15057
15060
  ]
15058
15061
  }
15059
- )
15060
- }
15061
- )
15062
- ] })
15063
- ]
15064
- }
15065
- )
15066
- ) : /* @__PURE__ */ jsx161(
15067
- "div",
15068
- {
15069
- className: cn(
15070
- `grow`,
15071
- isMobile ? `p-2` : `p-4`,
15072
- activeFillHeight ? `flex flex-col overflow-hidden` : `overflow-y-auto`,
15073
- fullWidth && `p-0`
15074
- ),
15075
- children: /* @__PURE__ */ jsxs94(
15076
- "div",
15077
- {
15078
- className: cn(
15079
- `mx-auto max-w-6xl space-y-8`,
15080
- activeFillHeight && `flex w-full flex-1 min-h-0 flex-col space-y-0`,
15081
- fullWidth && `max-w-full w-full p-0 h-full`
15082
- ),
15083
- children: [
15084
- header,
15085
- tabs ? /* @__PURE__ */ jsxs94(Fragment24, { children: [
15086
- /* @__PURE__ */ jsxs94(
15087
- Tabs,
15088
- {
15089
- value: activeTab,
15090
- className: cn(`w-full`, activeFillHeight && `flex flex-1 min-h-0 flex-col`),
15091
- onValueChange: handleTabChange,
15092
- children: [
15093
- isMobile ? /* @__PURE__ */ jsx161("div", { className: "p-0", children: /* @__PURE__ */ jsxs94(
15094
- Select,
15095
- {
15096
- items: tabItems,
15097
- value: activeTab,
15098
- onValueChange: (value) => {
15099
- if (value) handleTabChange(value);
15100
- },
15101
- children: [
15102
- /* @__PURE__ */ jsx161(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx161(SelectValue, {}) }),
15103
- /* @__PURE__ */ jsx161(SelectContent, { children: tabs.map((tab) => /* @__PURE__ */ jsx161(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label)) })
15104
- ]
15105
- }
15106
- ) }) : /* @__PURE__ */ jsx161("div", { className: "p-4", children: /* @__PURE__ */ jsx161(TabsList, { children: tabs.map((tab) => /* @__PURE__ */ jsx161(TabsTrigger, { value: tabValue(tab), className: "px-4", children: tab.contentLabel ?? tab.label }, tab.label)) }) }),
15107
- /* @__PURE__ */ jsx161(
15062
+ ) }),
15063
+ /* @__PURE__ */ jsx161(
15064
+ "div",
15065
+ {
15066
+ className: cn(
15067
+ `min-w-0 grow`,
15068
+ activeFillHeight ? `flex flex-col overflow-hidden` : `overflow-y-auto p-4`
15069
+ ),
15070
+ children: /* @__PURE__ */ jsxs94(
15108
15071
  "div",
15109
15072
  {
15110
15073
  className: cn(
15111
- `flex w-full `,
15112
- isMobile ? `` : `px-4`,
15113
- activeFillHeight ? `flex-1 min-h-0` : `overflow-y-auto`
15074
+ activeFillHeight ? `flex min-h-0 w-full flex-1 flex-col` : `mx-auto w-full max-w-6xl`
15114
15075
  ),
15115
- children: tabs.map((tab) => /* @__PURE__ */ jsx161(
15116
- TabsContent,
15117
- {
15118
- value: tabValue(tab),
15119
- className: tab.fillHeight ? `flex flex-1 min-h-0 w-full flex-col` : `pb-20`,
15120
- children: tab.content
15121
- },
15122
- tab.label
15123
- ))
15076
+ children: [
15077
+ header,
15078
+ tabs.map((tab) => /* @__PURE__ */ jsx161(
15079
+ TabsContent,
15080
+ {
15081
+ value: tabValue(tab),
15082
+ className: tab.fillHeight ? `flex min-h-0 w-full flex-1 flex-col` : ``,
15083
+ children: tab.content
15084
+ },
15085
+ tab.label
15086
+ )),
15087
+ children && /* @__PURE__ */ jsx161("div", { className: "flex", children })
15088
+ ]
15124
15089
  }
15125
15090
  )
15126
- ]
15127
- }
15091
+ }
15092
+ )
15093
+ ] })
15094
+ ]
15095
+ }
15096
+ )
15097
+ ) : /* @__PURE__ */ jsx161(
15098
+ "div",
15099
+ {
15100
+ className: cn(
15101
+ `grow`,
15102
+ isMobile ? `p-2` : `p-4`,
15103
+ activeFillHeight ? `flex flex-col overflow-hidden` : `overflow-y-auto`,
15104
+ fullWidth && `p-0`
15105
+ ),
15106
+ children: /* @__PURE__ */ jsxs94(
15107
+ "div",
15108
+ {
15109
+ className: cn(
15110
+ `mx-auto max-w-6xl space-y-8`,
15111
+ activeFillHeight && `flex w-full flex-1 min-h-0 flex-col space-y-0`,
15112
+ fullWidth && `max-w-full w-full p-0 h-full`
15128
15113
  ),
15129
- children && /* @__PURE__ */ jsx161("div", { className: cn(`flex`, isMobile ? `px-2` : `px-4`), children })
15130
- ] }) : children
15131
- ]
15114
+ children: [
15115
+ header,
15116
+ tabs ? /* @__PURE__ */ jsxs94(Fragment24, { children: [
15117
+ /* @__PURE__ */ jsxs94(
15118
+ Tabs,
15119
+ {
15120
+ value: activeTab,
15121
+ className: cn(`w-full`, activeFillHeight && `flex flex-1 min-h-0 flex-col`),
15122
+ onValueChange: handleTabChange,
15123
+ children: [
15124
+ isMobile ? /* @__PURE__ */ jsx161("div", { className: "p-0", children: /* @__PURE__ */ jsxs94(
15125
+ Select,
15126
+ {
15127
+ items: tabItems,
15128
+ value: activeTab,
15129
+ onValueChange: (value) => {
15130
+ if (value) handleTabChange(value);
15131
+ },
15132
+ children: [
15133
+ /* @__PURE__ */ jsx161(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx161(SelectValue, {}) }),
15134
+ /* @__PURE__ */ jsx161(SelectContent, { children: tabs.map((tab) => /* @__PURE__ */ jsx161(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label)) })
15135
+ ]
15136
+ }
15137
+ ) }) : /* @__PURE__ */ jsx161("div", { className: "p-4", children: /* @__PURE__ */ jsx161(TabsList, { children: tabs.map((tab) => /* @__PURE__ */ jsx161(TabsTrigger, { value: tabValue(tab), className: "px-4", children: tab.contentLabel ?? tab.label }, tab.label)) }) }),
15138
+ /* @__PURE__ */ jsx161(
15139
+ "div",
15140
+ {
15141
+ className: cn(
15142
+ `flex w-full `,
15143
+ isMobile ? `` : `px-4`,
15144
+ activeFillHeight ? `flex-1 min-h-0` : `overflow-y-auto`
15145
+ ),
15146
+ children: tabs.map((tab) => /* @__PURE__ */ jsx161(
15147
+ TabsContent,
15148
+ {
15149
+ value: tabValue(tab),
15150
+ className: tab.fillHeight ? `flex flex-1 min-h-0 w-full flex-col` : `pb-20`,
15151
+ children: tab.content
15152
+ },
15153
+ tab.label
15154
+ ))
15155
+ }
15156
+ )
15157
+ ]
15158
+ }
15159
+ ),
15160
+ children && /* @__PURE__ */ jsx161("div", { className: cn(`flex`, isMobile ? `px-2` : `px-4`), children })
15161
+ ] }) : children
15162
+ ]
15163
+ }
15164
+ )
15132
15165
  }
15133
- )
15134
- }
15135
- ) })
15136
- ] }),
15137
- details && (isMobile ? /* @__PURE__ */ jsx161(Sheet, { open: showDetails, onOpenChange: setShowDetails, children: /* @__PURE__ */ jsxs94(SheetContent, { side: "right", children: [
15138
- /* @__PURE__ */ jsx161(SheetHeader, { children: /* @__PURE__ */ jsx161(SheetTitle, { children: "Details" }) }),
15139
- /* @__PURE__ */ jsx161("div", { className: "overflow-y-auto p-6 pt-0", children: details })
15140
- ] }) }) : /* @__PURE__ */ jsx161(
15141
- "div",
15142
- {
15143
- className: cn(
15144
- "h-full shrink-0 overflow-hidden overflow-y-auto transition-all duration-300 ease-in-out",
15145
- showDetails ? "w-96 border-l p-4 opacity-100" : "ml-0 w-0 border-l-0 p-0 opacity-0"
15146
- ),
15147
- children: details
15148
- }
15149
- ))
15150
- ] }),
15151
- /* @__PURE__ */ jsx161(MobileNavigationBar, {})
15152
- ] })
15166
+ ) })
15167
+ ] }),
15168
+ details && (isMobile ? /* @__PURE__ */ jsx161(Sheet, { open: showDetails, onOpenChange: setShowDetails, children: /* @__PURE__ */ jsxs94(SheetContent, { side: "right", children: [
15169
+ /* @__PURE__ */ jsx161(SheetHeader, { children: /* @__PURE__ */ jsx161(SheetTitle, { children: detailsTitle ?? "Details" }) }),
15170
+ /* @__PURE__ */ jsx161("div", { className: "overflow-y-auto p-6 pt-0", children: details })
15171
+ ] }) }) : /* @__PURE__ */ jsxs94(
15172
+ "div",
15173
+ {
15174
+ className: cn(
15175
+ // `flex-col` + a separate scroll body below: the header must stay
15176
+ // put while the panel content scrolls. Scrolling on this element
15177
+ // (as it did before) would carry the header away with the content.
15178
+ "flex h-full shrink-0 flex-col overflow-hidden transition-all duration-300 ease-in-out",
15179
+ showDetails ? "w-96 border-l opacity-100" : "ml-0 w-0 border-l-0 opacity-0"
15180
+ ),
15181
+ children: [
15182
+ detailsTitle && // Mirrors RoundPageContainerTitle's structure exactly — border on an
15183
+ // OUTER wrapper, height floor on the INNER row. Putting the border
15184
+ // inside the measured row instead leaves this header 1px short of
15185
+ // the page title bar, since `box-sizing: border-box` absorbs it.
15186
+ /* @__PURE__ */ jsx161("div", { className: "shrink-0 border-b", children: /* @__PURE__ */ jsx161("div", { className: cn("flex items-center p-4", HEADER_ROW_MIN_H), children: /* @__PURE__ */ jsx161("span", { className: "text-primary truncate text-sm font-semibold", children: detailsTitle }) }) }),
15187
+ /* @__PURE__ */ jsx161("div", { className: "min-h-0 flex-1 overflow-y-auto p-4", children: details })
15188
+ ]
15189
+ }
15190
+ ))
15191
+ ] }),
15192
+ /* @__PURE__ */ jsx161(MobileNavigationBar, {})
15193
+ ]
15194
+ }
15195
+ )
15153
15196
  ] });
15154
15197
  }
15155
15198
  __name(RoundPageContainer, "RoundPageContainer");
@@ -23572,6 +23615,7 @@ export {
23572
23615
  PageContainer,
23573
23616
  partitionTabs,
23574
23617
  ReactMarkdownContainer,
23618
+ HEADER_ROW_MIN_H,
23575
23619
  RoundPageContainerTitle,
23576
23620
  RoundPageContainer,
23577
23621
  TabsContainer,
@@ -23799,4 +23843,4 @@ export {
23799
23843
  useOAuthClients,
23800
23844
  useOAuthClient
23801
23845
  };
23802
- //# sourceMappingURL=chunk-EF2HVXOV.mjs.map
23846
+ //# sourceMappingURL=chunk-2KXPQHZU.mjs.map