@carlonicora/nextjs-jsonapi 3.25.0 → 3.26.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.
Files changed (80) hide show
  1. package/dist/{BlockNoteEditor-HKS6AXDA.js → BlockNoteEditor-4EIKMNY3.js} +20 -10
  2. package/dist/BlockNoteEditor-4EIKMNY3.js.map +1 -0
  3. package/dist/{BlockNoteEditor-46O3JC4Z.mjs → BlockNoteEditor-AXYVDDXM.mjs} +13 -3
  4. package/dist/{BlockNoteEditor-46O3JC4Z.mjs.map → BlockNoteEditor-AXYVDDXM.mjs.map} +1 -1
  5. package/dist/billing/index.js +335 -335
  6. package/dist/billing/index.mjs +1 -1
  7. package/dist/{chunk-Y3OKEQGL.js → chunk-ABVTYQIJ.js} +578 -363
  8. package/dist/chunk-ABVTYQIJ.js.map +1 -0
  9. package/dist/{chunk-KLV6RLDE.js → chunk-GKDHYB2R.js} +2 -2
  10. package/dist/chunk-GKDHYB2R.js.map +1 -0
  11. package/dist/{chunk-XDYILJ2S.mjs → chunk-QWZAGQWJ.mjs} +546 -331
  12. package/dist/chunk-QWZAGQWJ.mjs.map +1 -0
  13. package/dist/{chunk-4Z2UONN2.mjs → chunk-U65JPKO3.mjs} +2 -2
  14. package/dist/chunk-U65JPKO3.mjs.map +1 -0
  15. package/dist/client/index.js +2 -2
  16. package/dist/client/index.mjs +1 -1
  17. package/dist/components/index.d.mts +16 -3
  18. package/dist/components/index.d.ts +16 -3
  19. package/dist/components/index.js +4 -2
  20. package/dist/components/index.js.map +1 -1
  21. package/dist/components/index.mjs +3 -1
  22. package/dist/contexts/index.js +2 -2
  23. package/dist/contexts/index.mjs +1 -1
  24. package/dist/features/analytics/index.js +100 -100
  25. package/dist/features/analytics/index.js.map +1 -1
  26. package/dist/features/analytics/index.mjs +5 -5
  27. package/dist/features/analytics/index.mjs.map +1 -1
  28. package/dist/features/help/index.js +36 -36
  29. package/dist/features/help/index.js.map +1 -1
  30. package/dist/features/help/index.mjs +6 -6
  31. package/dist/features/help/index.mjs.map +1 -1
  32. package/dist/features/tokenusage/index.js +103 -103
  33. package/dist/features/tokenusage/index.js.map +1 -1
  34. package/dist/features/tokenusage/index.mjs +4 -4
  35. package/dist/features/tokenusage/index.mjs.map +1 -1
  36. package/package.json +1 -1
  37. package/src/components/containers/PageContainer.tsx +1 -1
  38. package/src/components/containers/RoundPageContainer.tsx +60 -16
  39. package/src/components/containers/RoundPageContainerTitle.tsx +75 -35
  40. package/src/components/editors/BlockNoteEditor.tsx +13 -1
  41. package/src/components/forms/EntityMultiSelector.tsx +4 -4
  42. package/src/components/forms/EntitySelector.tsx +4 -4
  43. package/src/components/forms/FormBlockNote.tsx +21 -1
  44. package/src/components/forms/FormCheckbox.tsx +6 -2
  45. package/src/components/forms/__tests__/useEditorDialog.test.ts +47 -0
  46. package/src/components/forms/useEditorDialog.ts +22 -0
  47. package/src/components/navigations/Breadcrumb.tsx +45 -16
  48. package/src/components/navigations/Header.tsx +16 -3
  49. package/src/components/navigations/MobileNavigationBar.tsx +12 -0
  50. package/src/components/navigations/__tests__/MobileNavigationBar.spec.tsx +17 -0
  51. package/src/components/tables/ContentListTable.tsx +52 -32
  52. package/src/features/analytics/components/AnalyticsAdminFilterBar.tsx +9 -6
  53. package/src/features/analytics/components/AnalyticsBreakdownTable.tsx +2 -1
  54. package/src/features/assistant/components/parts/AssistantBlockNoteComposer.tsx +1 -1
  55. package/src/features/assistant/components/parts/AssistantComposer.tsx +1 -1
  56. package/src/features/assistant-message/components/MessageItem.tsx +2 -2
  57. package/src/features/assistant-message/components/parts/tabs/CitationsTab.tsx +23 -5
  58. package/src/features/auth/components/containers/AuthContainer.tsx +8 -1
  59. package/src/features/company/components/details/CompanyContent.tsx +3 -1
  60. package/src/features/company/components/details/CompanyDetails.tsx +9 -1
  61. package/src/features/company/components/details/TokenStatusIndicator.tsx +42 -13
  62. package/src/features/help/components/HelpHeader.tsx +7 -5
  63. package/src/features/tokenusage/components/TokenUsageAdminFilterBar.tsx +9 -6
  64. package/src/features/tokenusage/lib/__tests__/formatters.spec.ts +21 -0
  65. package/src/features/tokenusage/lib/formatters.ts +5 -1
  66. package/src/shadcnui/ui/button.tsx +1 -1
  67. package/src/shadcnui/ui/checkbox.tsx +1 -1
  68. package/src/shadcnui/ui/command.tsx +4 -4
  69. package/src/shadcnui/ui/dialog.tsx +2 -0
  70. package/src/shadcnui/ui/input.tsx +1 -1
  71. package/src/shadcnui/ui/popover.tsx +9 -0
  72. package/src/shadcnui/ui/select.tsx +1 -1
  73. package/src/shadcnui/ui/sheet.tsx +8 -1
  74. package/src/shadcnui/ui/table.tsx +2 -2
  75. package/src/shadcnui/ui/textarea.tsx +1 -1
  76. package/dist/BlockNoteEditor-HKS6AXDA.js.map +0 -1
  77. package/dist/chunk-4Z2UONN2.mjs.map +0 -1
  78. package/dist/chunk-KLV6RLDE.js.map +0 -1
  79. package/dist/chunk-XDYILJ2S.mjs.map +0 -1
  80. package/dist/chunk-Y3OKEQGL.js.map +0 -1
@@ -243,7 +243,7 @@ var buttonVariants = cva2(
243
243
  link: "text-primary"
244
244
  },
245
245
  size: {
246
- default: "h-7 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3.5",
246
+ default: "h-7 max-md:h-9 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3.5",
247
247
  xs: "h-5 gap-1 rounded-sm px-2 text-xs/relaxed has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-2.5",
248
248
  sm: "h-6 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3",
249
249
  lg: "h-8 gap-1 px-2.5 text-xs/relaxed has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2 [&_svg:not([class*='size-'])]:size-4",
@@ -1310,7 +1310,7 @@ function Checkbox({ className, ...props }) {
1310
1310
  {
1311
1311
  "data-slot": "checkbox",
1312
1312
  className: cn(
1313
- "border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-[2px] aria-invalid:ring-[2px] peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 cursor-pointer data-disabled:cursor-not-allowed data-disabled:opacity-50",
1313
+ "border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-[2px] aria-invalid:ring-[2px] peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 max-md:after:-inset-y-3 cursor-pointer data-disabled:cursor-not-allowed data-disabled:opacity-50",
1314
1314
  className
1315
1315
  ),
1316
1316
  ...props,
@@ -1360,7 +1360,7 @@ function Input({ className, type, ...props }) {
1360
1360
  type,
1361
1361
  "data-slot": "input",
1362
1362
  className: cn(
1363
- "bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-7 rounded-md border px-2 py-0.5 text-sm transition-colors file:h-6 file:text-xs/relaxed file:font-medium focus-visible:ring-[2px] aria-invalid:ring-[2px] md:text-xs/relaxed file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
1363
+ "bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-7 max-md:h-10 rounded-md border px-2 py-0.5 text-base transition-colors file:h-6 file:text-xs/relaxed file:font-medium focus-visible:ring-[2px] aria-invalid:ring-[2px] md:text-xs/relaxed file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
1364
1364
  className
1365
1365
  ),
1366
1366
  ...props
@@ -1377,7 +1377,7 @@ function Textarea({ className, ...props }) {
1377
1377
  {
1378
1378
  "data-slot": "textarea",
1379
1379
  className: cn(
1380
- "border-input bg-input/20 dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-md border px-2 py-2 text-sm transition-colors focus-visible:ring-[2px] aria-invalid:ring-[2px] md:text-xs/relaxed placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50",
1380
+ "border-input bg-input/20 dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-md border px-2 py-2 text-base transition-colors focus-visible:ring-[2px] aria-invalid:ring-[2px] md:text-xs/relaxed placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50",
1381
1381
  className
1382
1382
  ),
1383
1383
  ...props
@@ -1812,6 +1812,8 @@ function DialogContent({
1812
1812
  className: cn(
1813
1813
  // rtl-ok: symmetric centering (`left-1/2` + `-translate-x-1/2`) — identical in LTR and RTL
1814
1814
  "bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid gap-4 rounded-xl p-4 text-xs/relaxed ring-1 duration-100 fixed top-1/2 left-1/2 z-50 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 outline-none",
1815
+ // Phone: never wider or taller than the screen; the dialog scrolls inside.
1816
+ "max-md:max-h-[calc(100svh-2rem)] max-md:max-w-[calc(100vw-2rem)] max-md:overflow-y-auto",
1815
1817
  className
1816
1818
  ),
1817
1819
  ...props,
@@ -1883,7 +1885,7 @@ function Command({ className, ...props }) {
1883
1885
  {
1884
1886
  "data-slot": "command",
1885
1887
  className: cn(
1886
- "bg-popover text-popover-foreground rounded-xl p-1 flex size-full flex-col overflow-hidden",
1888
+ "bg-popover text-popover-foreground rounded-xl p-1 flex size-full flex-col overflow-hidden max-md:min-h-0",
1887
1889
  "[[data-slot=dialog-content]_&]:bg-transparent [[data-slot=dialog-content]_&]:text-foreground",
1888
1890
  className
1889
1891
  ),
@@ -1910,13 +1912,13 @@ function CommandDialog({
1910
1912
  }
1911
1913
  __name(CommandDialog, "CommandDialog");
1912
1914
  function CommandInput({ className, ...props }) {
1913
- return /* @__PURE__ */ jsx19("div", { "data-slot": "command-input-wrapper", className: "p-1 pb-0", children: /* @__PURE__ */ jsxs8(InputGroup, { className: "bg-input/20 dark:bg-input/30 h-8!", children: [
1915
+ return /* @__PURE__ */ jsx19("div", { "data-slot": "command-input-wrapper", className: "p-1 pb-0", children: /* @__PURE__ */ jsxs8(InputGroup, { className: "bg-input/20 dark:bg-input/30 h-8! max-md:h-10!", children: [
1914
1916
  /* @__PURE__ */ jsx19(
1915
1917
  CommandPrimitive.Input,
1916
1918
  {
1917
1919
  "data-slot": "command-input",
1918
1920
  className: cn(
1919
- "w-full text-xs/relaxed outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
1921
+ "w-full text-xs/relaxed max-md:text-base outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
1920
1922
  className
1921
1923
  ),
1922
1924
  ...props
@@ -1931,7 +1933,7 @@ function CommandList({ className, ...props }) {
1931
1933
  CommandPrimitive.List,
1932
1934
  {
1933
1935
  "data-slot": "command-list",
1934
- className: cn("no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto", className),
1936
+ className: cn("no-scrollbar max-h-72 max-md:min-h-0 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto", className),
1935
1937
  ...props
1936
1938
  }
1937
1939
  );
@@ -3128,6 +3130,7 @@ function PopoverContent({
3128
3130
  anchor,
3129
3131
  ...props
3130
3132
  }) {
3133
+ const matchesAnchorWidth = typeof className === "string" && className.includes("--anchor-width");
3131
3134
  return /* @__PURE__ */ jsx31(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx31(
3132
3135
  PopoverPrimitive.Positioner,
3133
3136
  {
@@ -3143,6 +3146,11 @@ function PopoverContent({
3143
3146
  "data-slot": "popover-content",
3144
3147
  className: cn(
3145
3148
  "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-4 rounded-lg p-2.5 text-xs shadow-md ring-1 duration-100 z-50 w-72 origin-(--transform-origin) outline-hidden",
3149
+ // Phone: never taller than the space the positioner reports (the
3150
+ // keyboard shrinks it), so a picker list shrinks and scrolls instead
3151
+ // of running under the keyboard.
3152
+ "max-md:max-h-(--available-height) max-md:overflow-y-auto",
3153
+ matchesAnchorWidth && "max-md:min-w-[min(20rem,calc(100vw-2rem))]",
3146
3154
  className
3147
3155
  ),
3148
3156
  ...props
@@ -3377,7 +3385,7 @@ function SelectTrigger({
3377
3385
  "data-slot": "select-trigger",
3378
3386
  "data-size": size,
3379
3387
  className: cn(
3380
- "border-input data-[placeholder]:text-muted-foreground bg-input/20 dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border px-2 py-1.5 text-xs/relaxed transition-colors focus-visible:ring-[2px] aria-invalid:ring-[2px] data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-3.5 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
3388
+ "border-input data-[placeholder]:text-muted-foreground bg-input/20 dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border px-2 py-1.5 text-xs/relaxed transition-colors focus-visible:ring-[2px] aria-invalid:ring-[2px] data-[size=default]:h-7 data-[size=sm]:h-6 max-md:data-[size=default]:h-10 max-md:text-base *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-3.5 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
3381
3389
  className
3382
3390
  ),
3383
3391
  ...props,
@@ -3573,7 +3581,17 @@ function SheetContent({
3573
3581
  SheetPrimitive.Close,
3574
3582
  {
3575
3583
  "data-slot": "sheet-close",
3576
- render: /* @__PURE__ */ jsx37(Button, { variant: "ghost", className: "absolute top-4 end-4", size: "icon-sm" }),
3584
+ render: (
3585
+ // Phone: a 40px tap target, moved by 8px so its centre stays where the 24px one sits.
3586
+ /* @__PURE__ */ jsx37(
3587
+ Button,
3588
+ {
3589
+ variant: "ghost",
3590
+ className: "absolute top-4 end-4 max-md:top-2 max-md:end-2 max-md:size-10",
3591
+ size: "icon-sm"
3592
+ }
3593
+ )
3594
+ ),
3577
3595
  children: [
3578
3596
  /* @__PURE__ */ jsx37(XIcon3, {}),
3579
3597
  /* @__PURE__ */ jsx37("span", { className: "sr-only", children: "Close" })
@@ -4466,7 +4484,7 @@ __name(Switch, "Switch");
4466
4484
  // src/shadcnui/ui/table.tsx
4467
4485
  import { jsx as jsx45 } from "react/jsx-runtime";
4468
4486
  function Table({ className, ...props }) {
4469
- return /* @__PURE__ */ jsx45("div", { "data-slot": "table-container", className: "relative w-full overflow-x-clip", children: /* @__PURE__ */ jsx45("table", { "data-slot": "table", className: cn("w-full caption-bottom text-xs", className), ...props }) });
4487
+ return /* @__PURE__ */ jsx45("div", { "data-slot": "table-container", className: "relative w-full overflow-x-clip max-md:overflow-x-auto", children: /* @__PURE__ */ jsx45("table", { "data-slot": "table", className: cn("w-full caption-bottom text-xs", className), ...props }) });
4470
4488
  }
4471
4489
  __name(Table, "Table");
4472
4490
  function TableHeader({ className, ...props }) {
@@ -4518,7 +4536,7 @@ function TableCell({ className, ...props }) {
4518
4536
  "td",
4519
4537
  {
4520
4538
  "data-slot": "table-cell",
4521
- className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pe-0", className),
4539
+ className: cn("p-2 align-middle whitespace-nowrap max-md:whitespace-normal [&:has([role=checkbox])]:pe-0", className),
4522
4540
  ...props
4523
4541
  }
4524
4542
  );
@@ -6534,7 +6552,7 @@ __name(useHeaderLogo, "useHeaderLogo");
6534
6552
 
6535
6553
  // src/components/navigations/Breadcrumb.tsx
6536
6554
  import { useTranslations as useTranslations51 } from "next-intl";
6537
- import { Fragment as Fragment20, useState as useState47 } from "react";
6555
+ import { Fragment as Fragment21, useState as useState47 } from "react";
6538
6556
  import { ChevronDownIcon as ChevronDownIcon8 } from "lucide-react";
6539
6557
 
6540
6558
  // src/hooks/TableGeneratorRegistry.ts
@@ -7677,7 +7695,7 @@ var useAdministrationContext = /* @__PURE__ */ __name(() => {
7677
7695
 
7678
7696
  // src/features/company/contexts/CompanyContext.tsx
7679
7697
  import { useTranslations as useTranslations41 } from "next-intl";
7680
- import { Fragment as Fragment19, createContext as createContext17, useContext as useContext18, useState as useState36 } from "react";
7698
+ import { Fragment as Fragment20, createContext as createContext17, useContext as useContext18, useState as useState36 } from "react";
7681
7699
 
7682
7700
  // src/features/user/contexts/CurrentUserContext.tsx
7683
7701
  import { getCookie } from "cookies-next";
@@ -8557,7 +8575,7 @@ function EntityMultiSelector({
8557
8575
  /* @__PURE__ */ jsx68(PopoverTrigger, { className: "w-full", disabled, children: /* @__PURE__ */ jsxs33(
8558
8576
  "div",
8559
8577
  {
8560
- className: `bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 focus-visible:ring-[2px] flex min-h-7 w-full items-center gap-2 rounded-md border px-2 text-sm md:text-xs/relaxed ${disabled ? "cursor-not-allowed opacity-50" : ""}`,
8578
+ className: `bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 focus-visible:ring-[2px] flex min-h-7 max-md:min-h-10 w-full items-center gap-2 rounded-md border px-2 text-sm md:text-xs/relaxed ${disabled ? "cursor-not-allowed opacity-50" : ""}`,
8561
8579
  children: [
8562
8580
  selectedValues.length > 0 ? /* @__PURE__ */ jsxs33(Fragment7, { children: [
8563
8581
  /* @__PURE__ */ jsx68("span", { className: "text-foreground min-w-0 flex-1 truncate text-start", children: triggerSummary }),
@@ -8576,7 +8594,7 @@ function EntityMultiSelector({
8576
8594
  ref: searchInputRef,
8577
8595
  placeholder,
8578
8596
  type: "text",
8579
- className: "h-8 w-full pe-7 ps-7 text-xs",
8597
+ className: "h-8 w-full pe-7 ps-7 text-xs max-md:text-base",
8580
8598
  value: searchTerm,
8581
8599
  onChange: (e) => setSearchTerm(e.target.value)
8582
8600
  }
@@ -8591,7 +8609,7 @@ function EntityMultiSelector({
8591
8609
  }
8592
8610
  )
8593
8611
  ] }),
8594
- /* @__PURE__ */ jsx68("div", { className: "max-h-52 overflow-y-auto p-1", children: sortedOptions.length === 0 ? /* @__PURE__ */ jsx68("div", { className: "text-muted-foreground py-4 text-center text-xs", children: emptyText }) : sortedOptions.map((option) => {
8612
+ /* @__PURE__ */ jsx68("div", { className: "max-h-52 max-md:min-h-0 overflow-y-auto p-1", children: sortedOptions.length === 0 ? /* @__PURE__ */ jsx68("div", { className: "text-muted-foreground py-4 text-center text-xs", children: emptyText }) : sortedOptions.map((option) => {
8595
8613
  const isSelected = selectedIds.has(option.id);
8596
8614
  return /* @__PURE__ */ jsx68(
8597
8615
  "button",
@@ -8635,7 +8653,7 @@ function EntityMultiSelector({
8635
8653
  "button",
8636
8654
  {
8637
8655
  type: "button",
8638
- className: "text-muted-foreground hover:text-foreground rounded-sm p-0.5 transition-colors",
8656
+ className: "text-muted-foreground hover:text-foreground rounded-sm p-0.5 max-md:p-2 transition-colors",
8639
8657
  onClick: () => removeEntity(value.id),
8640
8658
  children: /* @__PURE__ */ jsx68(XIcon5, { className: "size-3" })
8641
8659
  }
@@ -9601,6 +9619,20 @@ import { PencilIcon as PencilIcon3 } from "lucide-react";
9601
9619
  // src/components/forms/useEditorDialog.ts
9602
9620
  import { useCallback as useCallback15, useEffect as useEffect16, useRef as useRef13, useState as useState22 } from "react";
9603
9621
  var openEditorStack = [];
9622
+ var INNER_LAYER_SELECTOR = [
9623
+ "[data-slot=popover-content][data-open]",
9624
+ "[data-slot=select-content][data-open]",
9625
+ "[data-slot=combobox-content][data-open]",
9626
+ "[data-slot=dropdown-menu-content][data-open]",
9627
+ "[data-slot=context-menu-content][data-open]",
9628
+ "[data-slot=dialog-content][data-open]",
9629
+ "[data-slot=alert-dialog-content][data-open]",
9630
+ ".bn-suggestion-menu"
9631
+ ].join(",");
9632
+ function hasOpenInnerLayer(doc = document) {
9633
+ return doc.querySelector(INNER_LAYER_SELECTOR) !== null;
9634
+ }
9635
+ __name(hasOpenInnerLayer, "hasOpenInnerLayer");
9604
9636
  function useEditorDialog(isFormDirty, options) {
9605
9637
  const [open, setOpen] = useState22(false);
9606
9638
  const [showDiscardConfirm, setShowDiscardConfirm] = useState22(false);
@@ -9652,6 +9684,7 @@ function useEditorDialog(isFormDirty, options) {
9652
9684
  const handleKeyDown = /* @__PURE__ */ __name((event) => {
9653
9685
  if (event.key === "Escape" && open) {
9654
9686
  if (openEditorStack[openEditorStack.length - 1] !== dialogId.current) return;
9687
+ if (hasOpenInnerLayer()) return;
9655
9688
  event.preventDefault();
9656
9689
  event.stopPropagation();
9657
9690
  handleOpenChange(false);
@@ -9986,7 +10019,7 @@ function EntitySelector({
9986
10019
  /* @__PURE__ */ jsx88(PopoverTrigger, { className: "w-full", disabled, children: /* @__PURE__ */ jsxs49(
9987
10020
  "div",
9988
10021
  {
9989
- className: `bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 focus-visible:ring-[2px] flex min-h-7 w-full items-center gap-2 rounded-md border px-2 py-0.5 text-sm md:text-xs/relaxed ${hasValue(effectiveValue) ? "" : "text-muted-foreground"} ${disabled ? "cursor-not-allowed opacity-50" : ""}`,
10022
+ className: `bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 focus-visible:ring-[2px] flex min-h-7 max-md:min-h-10 w-full items-center gap-2 rounded-md border px-2 py-0.5 text-sm md:text-xs/relaxed ${hasValue(effectiveValue) ? "" : "text-muted-foreground"} ${disabled ? "cursor-not-allowed opacity-50" : ""}`,
9990
10023
  children: [
9991
10024
  /* @__PURE__ */ jsx88("span", { className: "min-w-0 flex-1 truncate text-start", children: hasValue(effectiveValue) ? getSelectedItemDisplay ? getSelectedItemDisplay(effectiveValue) : effectiveValue?.name ?? "" : placeholder }),
9992
10025
  hasValue(effectiveValue) && !disabled && /* @__PURE__ */ jsx88(
@@ -10005,7 +10038,7 @@ function EntitySelector({
10005
10038
  ) }),
10006
10039
  /* @__PURE__ */ jsx88(PopoverContent, { align: "start", className: "w-(--anchor-width) pointer-events-auto", children: /* @__PURE__ */ jsxs49(Command, { shouldFilter: false, children: [
10007
10040
  /* @__PURE__ */ jsxs49("div", { className: "relative mb-2 w-full", children: [
10008
- /* @__PURE__ */ jsx88(SearchIcon3, { className: "text-muted-foreground absolute top-2.5 start-2.5 h-4 w-4" }),
10041
+ /* @__PURE__ */ jsx88(SearchIcon3, { className: "text-muted-foreground absolute top-2.5 max-md:top-3 start-2.5 h-4 w-4" }),
10009
10042
  /* @__PURE__ */ jsx88(
10010
10043
  Input,
10011
10044
  {
@@ -10016,10 +10049,10 @@ function EntitySelector({
10016
10049
  value: searchTerm
10017
10050
  }
10018
10051
  ),
10019
- isSearching ? /* @__PURE__ */ jsx88(RefreshCwIcon, { className: "text-muted-foreground absolute top-2.5 end-2.5 h-4 w-4 animate-spin" }) : searchTermRef.current ? /* @__PURE__ */ jsx88(
10052
+ isSearching ? /* @__PURE__ */ jsx88(RefreshCwIcon, { className: "text-muted-foreground absolute top-2.5 max-md:top-3 end-2.5 h-4 w-4 animate-spin" }) : searchTermRef.current ? /* @__PURE__ */ jsx88(
10020
10053
  XIcon6,
10021
10054
  {
10022
- className: "absolute top-2.5 end-2.5 h-4 w-4 cursor-pointer",
10055
+ className: "absolute top-2.5 max-md:top-3 end-2.5 h-4 w-4 cursor-pointer",
10023
10056
  onClick: () => {
10024
10057
  setSearchTerm("");
10025
10058
  search("");
@@ -10399,7 +10432,7 @@ import { useRef as useRef17 } from "react";
10399
10432
  import dynamic from "next/dynamic";
10400
10433
  import React18 from "react";
10401
10434
  import { jsx as jsx90 } from "react/jsx-runtime";
10402
- var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-46O3JC4Z.mjs"), {
10435
+ var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-AXYVDDXM.mjs"), {
10403
10436
  ssr: false
10404
10437
  });
10405
10438
  var BlockNoteEditorContainer = React18.memo(/* @__PURE__ */ __name(function EditorContainer(props) {
@@ -10408,6 +10441,14 @@ var BlockNoteEditorContainer = React18.memo(/* @__PURE__ */ __name(function Edit
10408
10441
 
10409
10442
  // src/components/forms/FormBlockNote.tsx
10410
10443
  import { jsx as jsx91 } from "react/jsx-runtime";
10444
+ function isEmptyDocument(value) {
10445
+ return value === void 0 || value === null || value === "" || Array.isArray(value) && value.length === 0;
10446
+ }
10447
+ __name(isEmptyDocument, "isEmptyDocument");
10448
+ function getPath(source, path) {
10449
+ return path.split(".").reduce((acc, key) => acc == null ? void 0 : acc[key], source);
10450
+ }
10451
+ __name(getPath, "getPath");
10411
10452
  function FormBlockNote({
10412
10453
  form,
10413
10454
  id,
@@ -10441,6 +10482,10 @@ function FormBlockNote({
10441
10482
  className: cn(
10442
10483
  "flex w-full flex-col",
10443
10484
  stretch && "min-h-0 flex-1 [&>[data-slot=field]]:min-h-0 [&>[data-slot=field]]:flex-1",
10485
+ // Phone: the sheet is too short to share with the other fields, so the
10486
+ // editor stops filling the leftover space (2px in a long form) and grows
10487
+ // with its content instead; the sheet body does the scrolling.
10488
+ stretch && "max-md:min-h-64 max-md:flex-none",
10444
10489
  className
10445
10490
  ),
10446
10491
  children: /* @__PURE__ */ jsx91(
@@ -10466,7 +10511,11 @@ function FormBlockNote({
10466
10511
  initialContent: initialContentRef.current,
10467
10512
  onChange: (content, isEmpty) => {
10468
10513
  lastEditorContentRef.current = content;
10469
- field.onChange(content);
10514
+ if (isEmpty && isEmptyDocument(getPath(form.formState.defaultValues, id)) && !form.getFieldState(id).isDirty) {
10515
+ form.resetField(id, { defaultValue: content });
10516
+ } else {
10517
+ field.onChange(content);
10518
+ }
10470
10519
  onEmptyChange?.(isEmpty);
10471
10520
  },
10472
10521
  placeholder,
@@ -10498,7 +10547,17 @@ __name(FormBlockNote, "FormBlockNote");
10498
10547
  import { jsx as jsx92, jsxs as jsxs51 } from "react/jsx-runtime";
10499
10548
  function FormCheckbox({ form, id, name, labelBefore, description, isRequired }) {
10500
10549
  const simpleLabel = /* @__PURE__ */ __name(() => {
10501
- return /* @__PURE__ */ jsx92(FieldLabel, { htmlFor: id, className: `font-normal ${labelBefore ? "" : "ms-3"}`, children: name });
10550
+ return (
10551
+ // Phone: the label fills the row and is 40px tall, so the whole row toggles the box.
10552
+ /* @__PURE__ */ jsx92(
10553
+ FieldLabel,
10554
+ {
10555
+ htmlFor: id,
10556
+ className: `font-normal ${labelBefore ? "" : "ms-3"} max-md:min-h-10 max-md:flex-1`,
10557
+ children: name
10558
+ }
10559
+ )
10560
+ );
10502
10561
  }, "simpleLabel");
10503
10562
  const label = /* @__PURE__ */ __name(() => {
10504
10563
  if (!description) return simpleLabel();
@@ -10508,7 +10567,7 @@ function FormCheckbox({ form, id, name, labelBefore, description, isRequired })
10508
10567
  /* @__PURE__ */ jsx92(TooltipContent, { children: description })
10509
10568
  ] });
10510
10569
  }, "label");
10511
- return /* @__PURE__ */ jsx92("div", { className: "flex w-full flex-col", children: /* @__PURE__ */ jsx92(FormFieldWrapper, { form, name: id, orientation: "horizontal", children: (field) => /* @__PURE__ */ jsxs51("div", { className: "flex gap-x-4", children: [
10570
+ return /* @__PURE__ */ jsx92("div", { className: "flex w-full flex-col", children: /* @__PURE__ */ jsx92(FormFieldWrapper, { form, name: id, orientation: "horizontal", children: (field) => /* @__PURE__ */ jsxs51("div", { className: "flex gap-x-4 max-md:min-h-10 max-md:items-center", children: [
10512
10571
  labelBefore && label(),
10513
10572
  labelBefore && isRequired && /* @__PURE__ */ jsx92("span", { className: "ms-1 text-destructive", children: "*" }),
10514
10573
  /* @__PURE__ */ jsx92(Checkbox, { id, checked: field.value ?? false, onCheckedChange: field.onChange }),
@@ -12477,7 +12536,7 @@ function CompanyContent({ company, actions }) {
12477
12536
  const t = useTranslations35();
12478
12537
  if (!company) return null;
12479
12538
  return /* @__PURE__ */ jsxs74("div", { className: "flex flex-col gap-y-8", children: [
12480
- /* @__PURE__ */ jsxs74("div", { className: "flex w-full items-center justify-between", children: [
12539
+ /* @__PURE__ */ jsxs74("div", { className: cn("flex w-full items-center justify-between", !actions && "max-md:hidden"), children: [
12481
12540
  /* @__PURE__ */ jsx132(SectionHeader, { level: 2, children: company.name }),
12482
12541
  actions && /* @__PURE__ */ jsx132("div", { className: "flex items-center gap-x-2", children: actions })
12483
12542
  ] }),
@@ -12532,9 +12591,14 @@ __name(CompanyContent, "CompanyContent");
12532
12591
  import { Battery, BatteryFull, BatteryLow, BatteryMedium, PlusCircle } from "lucide-react";
12533
12592
  import Link2 from "next/link";
12534
12593
  import { useTranslations as useTranslations36 } from "next-intl";
12535
- import { jsx as jsx133, jsxs as jsxs75 } from "react/jsx-runtime";
12594
+ import { Fragment as Fragment16, jsx as jsx133, jsxs as jsxs75 } from "react/jsx-runtime";
12536
12595
  var asWholeCredits = /* @__PURE__ */ __name((value) => Math.trunc(value).toLocaleString(), "asWholeCredits");
12537
- function TokenStatusIndicator({ className, size = "md", showExtraPages = true }) {
12596
+ function TokenStatusIndicator({
12597
+ className,
12598
+ size = "md",
12599
+ showExtraPages = true,
12600
+ href
12601
+ }) {
12538
12602
  const { company } = useCurrentUserContext();
12539
12603
  const t = useTranslations36();
12540
12604
  if (!company) return null;
@@ -12616,20 +12680,32 @@ function TokenStatusIndicator({ className, size = "md", showExtraPages = true })
12616
12680
  /* @__PURE__ */ jsx133(Link2, { href: "/settings/billing?action=subscribe", className: "w-full flex justify-end my-4", children: /* @__PURE__ */ jsx133(Button, { variant: "outline", size: "sm", children: t("billing.tokens.purchase_extra", { defaultValue: "Purchase additional analysis" }) }) })
12617
12681
  ] })
12618
12682
  ] });
12683
+ const badge = /* @__PURE__ */ jsxs75(Fragment16, { children: [
12684
+ getBatteryIcon(),
12685
+ /* @__PURE__ */ jsx133("span", { className: cn(textSize, "text-muted-foreground font-medium leading-none"), children: asWholeCredits(availableMonthlyCredits) }),
12686
+ showExtraPages && availableExtraCredits > 0 && /* @__PURE__ */ jsxs75("span", { className: "inline-flex items-center gap-0.5", children: [
12687
+ /* @__PURE__ */ jsx133(PlusCircle, { className: cn(smallIconSize, "text-blue-500") }),
12688
+ /* @__PURE__ */ jsx133("span", { className: cn(textSize, "text-blue-500 font-medium leading-none"), children: asWholeCredits(availableExtraCredits) })
12689
+ ] })
12690
+ ] });
12691
+ if (href) {
12692
+ return /* @__PURE__ */ jsx133(
12693
+ Link2,
12694
+ {
12695
+ href,
12696
+ className: cn("inline-flex min-h-10 min-w-10 items-center justify-center gap-1.5 px-1", className),
12697
+ "aria-label": t("billing.tokens.status", { defaultValue: "Page Status" }),
12698
+ children: badge
12699
+ }
12700
+ );
12701
+ }
12619
12702
  return /* @__PURE__ */ jsxs75(Tooltip2, { children: [
12620
- /* @__PURE__ */ jsxs75(
12703
+ /* @__PURE__ */ jsx133(
12621
12704
  TooltipTrigger,
12622
12705
  {
12623
12706
  className: cn("inline-flex items-center gap-1.5 cursor-default", className),
12624
12707
  "aria-label": t("billing.tokens.status", { defaultValue: "Page Status" }),
12625
- children: [
12626
- getBatteryIcon(),
12627
- /* @__PURE__ */ jsx133("span", { className: cn(textSize, "text-muted-foreground font-medium leading-none"), children: asWholeCredits(availableMonthlyCredits) }),
12628
- showExtraPages && availableExtraCredits > 0 && /* @__PURE__ */ jsxs75("span", { className: "inline-flex items-center gap-0.5", children: [
12629
- /* @__PURE__ */ jsx133(PlusCircle, { className: cn(smallIconSize, "text-blue-500") }),
12630
- /* @__PURE__ */ jsx133("span", { className: cn(textSize, "text-blue-500 font-medium leading-none"), children: asWholeCredits(availableExtraCredits) })
12631
- ] })
12632
- ]
12708
+ children: badge
12633
12709
  }
12634
12710
  ),
12635
12711
  /* @__PURE__ */ jsx133(TooltipContent, { side: "top", className: "max-w-xs", children: tooltipContent })
@@ -12645,7 +12721,16 @@ function CompanyDetails() {
12645
12721
  const { company } = useCompanyContext();
12646
12722
  if (!company) return null;
12647
12723
  return /* @__PURE__ */ jsxs76("div", { className: "flex w-full flex-col gap-y-2", children: [
12648
- /* @__PURE__ */ jsx134(ContentTitle, { module: Modules.Company, type: title.type, element: title.element, functions: title.functions }),
12724
+ /* @__PURE__ */ jsx134(
12725
+ ContentTitle,
12726
+ {
12727
+ module: Modules.Company,
12728
+ type: title.type,
12729
+ element: title.element,
12730
+ functions: title.functions,
12731
+ className: "max-md:hidden"
12732
+ }
12733
+ ),
12649
12734
  /* @__PURE__ */ jsx134(TokenStatusIndicator, { size: "md" }),
12650
12735
  /* @__PURE__ */ jsx134(CompanyContent, { company })
12651
12736
  ] });
@@ -12653,12 +12738,12 @@ function CompanyDetails() {
12653
12738
  __name(CompanyDetails, "CompanyDetails");
12654
12739
 
12655
12740
  // src/features/company/components/containers/AdminCompanyContainer.tsx
12656
- import { Fragment as Fragment16, jsx as jsx135, jsxs as jsxs77 } from "react/jsx-runtime";
12741
+ import { Fragment as Fragment17, jsx as jsx135, jsxs as jsxs77 } from "react/jsx-runtime";
12657
12742
  function AdminCompanyContainerInternal() {
12658
12743
  const { company } = useCompanyContext();
12659
12744
  const { hasRole } = useCurrentUserContext();
12660
12745
  if (!company || !hasRole(getRoleId().Administrator)) return null;
12661
- return /* @__PURE__ */ jsxs77(Fragment16, { children: [
12746
+ return /* @__PURE__ */ jsxs77(Fragment17, { children: [
12662
12747
  /* @__PURE__ */ jsx135(CompanyDetails, {}),
12663
12748
  /* @__PURE__ */ jsx135(AdminUsersList, {})
12664
12749
  ] });
@@ -12681,7 +12766,7 @@ import { useCallback as useCallback21, useEffect as useEffect26, useMemo as useM
12681
12766
  import { useForm as useForm2 } from "react-hook-form";
12682
12767
  import { v4 as v42 } from "uuid";
12683
12768
  import { z as z2 } from "zod";
12684
- import { Fragment as Fragment17, jsx as jsx136, jsxs as jsxs78 } from "react/jsx-runtime";
12769
+ import { Fragment as Fragment18, jsx as jsx136, jsxs as jsxs78 } from "react/jsx-runtime";
12685
12770
  function CompanyEditorInternal({
12686
12771
  company,
12687
12772
  propagateChanges,
@@ -12842,7 +12927,7 @@ function CompanyEditorInternal({
12842
12927
  width: 200,
12843
12928
  height: 200
12844
12929
  }
12845
- ) : /* @__PURE__ */ jsxs78(Fragment17, { children: [
12930
+ ) : /* @__PURE__ */ jsxs78(Fragment18, { children: [
12846
12931
  /* @__PURE__ */ jsx136(UploadIcon3, { className: "my-4 h-8 w-8" }),
12847
12932
  /* @__PURE__ */ jsx136("p", { className: "mb-1 flex w-full text-center text-sm", children: t(`company.click_drag_logo`) })
12848
12933
  ] }) }) }) }) }) }),
@@ -12990,7 +13075,7 @@ __name(CompanyConfigurationEditor, "CompanyConfigurationEditor");
12990
13075
  import { LoaderCircleIcon as LoaderCircleIcon2, Trash2Icon as Trash2Icon3 } from "lucide-react";
12991
13076
  import { useTranslations as useTranslations40 } from "next-intl";
12992
13077
  import { useState as useState35 } from "react";
12993
- import { Fragment as Fragment18, jsx as jsx141, jsxs as jsxs80 } from "react/jsx-runtime";
13078
+ import { Fragment as Fragment19, jsx as jsx141, jsxs as jsxs80 } from "react/jsx-runtime";
12994
13079
  function CompanyDeleterInternal({ company, isAdministrator: isAdministrator2 }) {
12995
13080
  const t = useTranslations40();
12996
13081
  const generateUrl = usePageUrlGenerator();
@@ -13021,7 +13106,7 @@ function CompanyDeleterInternal({ company, isAdministrator: isAdministrator2 })
13021
13106
  setFinalWarningOpen(false);
13022
13107
  setCompanyName("");
13023
13108
  }, "handleGoBack");
13024
- return /* @__PURE__ */ jsxs80(Fragment18, { children: [
13109
+ return /* @__PURE__ */ jsxs80(Fragment19, { children: [
13025
13110
  /* @__PURE__ */ jsxs80(AlertDialog, { open, onOpenChange: setOpen, children: [
13026
13111
  /* @__PURE__ */ jsx141(AlertDialogTrigger, { children: /* @__PURE__ */ jsx141(
13027
13112
  Button,
@@ -13102,7 +13187,7 @@ function CompanyDeleterInternal({ company, isAdministrator: isAdministrator2 })
13102
13187
  },
13103
13188
  variant: "destructive",
13104
13189
  disabled: isDeleting,
13105
- children: isDeleting ? /* @__PURE__ */ jsxs80(Fragment18, { children: [
13190
+ children: isDeleting ? /* @__PURE__ */ jsxs80(Fragment19, { children: [
13106
13191
  t(`ui.buttons.deleting`),
13107
13192
  /* @__PURE__ */ jsx141(LoaderCircleIcon2, { className: "animate-spin-slow h-5 w-5" })
13108
13193
  ] }) : t(`ui.buttons.delete_forever`)
@@ -13163,7 +13248,7 @@ var CompanyProvider = /* @__PURE__ */ __name(({ children, dehydratedCompany, con
13163
13248
  functions.push(/* @__PURE__ */ jsx142(CompanyDeleter, { company }, "companyDeleter"));
13164
13249
  if (hasRole(getRoleId().Administrator) || hasPermissionToModule({ module: Modules.Company, action: "update" /* Update */ })) {
13165
13250
  if (company && configurationEditorSlot)
13166
- functions.push(/* @__PURE__ */ jsx142(Fragment19, { children: configurationEditorSlot }, "configurationEditorSlot"));
13251
+ functions.push(/* @__PURE__ */ jsx142(Fragment20, { children: configurationEditorSlot }, "configurationEditorSlot"));
13167
13252
  functions.push(/* @__PURE__ */ jsx142(CompanyEditor, { company, propagateChanges: setCompany }, "companyEditor"));
13168
13253
  }
13169
13254
  if (functions.length > 0) response.functions = functions;
@@ -15010,7 +15095,7 @@ function useSocket({ token }) {
15010
15095
  __name(useSocket, "useSocket");
15011
15096
 
15012
15097
  // src/components/navigations/Breadcrumb.tsx
15013
- import { Fragment as Fragment21, jsx as jsx159, jsxs as jsxs86 } from "react/jsx-runtime";
15098
+ import { Fragment as Fragment22, jsx as jsx159, jsxs as jsxs86 } from "react/jsx-runtime";
15014
15099
  var ITEMS_TO_DISPLAY = 4;
15015
15100
  function BreadcrumbDesktop({
15016
15101
  items,
@@ -15020,24 +15105,24 @@ function BreadcrumbDesktop({
15020
15105
  }) {
15021
15106
  const [open, setOpen] = useState47(false);
15022
15107
  return /* @__PURE__ */ jsx159(Breadcrumb, { children: /* @__PURE__ */ jsxs86(BreadcrumbList, { children: [
15023
- showRoot && /* @__PURE__ */ jsxs86(Fragment21, { children: [
15108
+ showRoot && /* @__PURE__ */ jsxs86(Fragment22, { children: [
15024
15109
  /* @__PURE__ */ jsx159(BreadcrumbItem, { children: /* @__PURE__ */ jsx159(Link, { href: generateUrl({ page: `/` }), children: rootLabel }) }),
15025
15110
  items.length > 0 && /* @__PURE__ */ jsx159(BreadcrumbSeparator, {})
15026
15111
  ] }),
15027
- items.length > ITEMS_TO_DISPLAY ? /* @__PURE__ */ jsxs86(Fragment21, { children: [
15028
- /* @__PURE__ */ jsx159(BreadcrumbItem, { children: items[0].href ? /* @__PURE__ */ jsx159(Link, { href: items[0].href, onClick: items[0].onClick, children: items[0].name }) : /* @__PURE__ */ jsx159(Fragment21, { children: items[0].name }) }),
15112
+ items.length > ITEMS_TO_DISPLAY ? /* @__PURE__ */ jsxs86(Fragment22, { children: [
15113
+ /* @__PURE__ */ jsx159(BreadcrumbItem, { children: items[0].href ? /* @__PURE__ */ jsx159(Link, { href: items[0].href, onClick: items[0].onClick, children: items[0].name }) : /* @__PURE__ */ jsx159(Fragment22, { children: items[0].name }) }),
15029
15114
  /* @__PURE__ */ jsx159(BreadcrumbSeparator, {}),
15030
15115
  /* @__PURE__ */ jsx159(BreadcrumbItem, { children: /* @__PURE__ */ jsxs86(DropdownMenu, { open, onOpenChange: setOpen, children: [
15031
15116
  /* @__PURE__ */ jsx159(DropdownMenuTrigger, { className: "flex items-center gap-1", "aria-label": "Toggle menu", children: /* @__PURE__ */ jsx159(BreadcrumbEllipsis, { className: "h-4 w-4" }) }),
15032
15117
  /* @__PURE__ */ jsx159(DropdownMenuContent, { align: "start", children: items.slice(1, -ITEMS_TO_DISPLAY + 2).map((item, index) => /* @__PURE__ */ jsx159(DropdownMenuItem, { children: /* @__PURE__ */ jsx159(Link, { href: item.href ? item.href : "#", onClick: item.onClick, children: item.name }) }, index)) })
15033
15118
  ] }) }),
15034
15119
  /* @__PURE__ */ jsx159(BreadcrumbSeparator, {}),
15035
- items.slice(-ITEMS_TO_DISPLAY + 2).map((item, index) => /* @__PURE__ */ jsxs86(Fragment20, { children: [
15036
- /* @__PURE__ */ jsx159(BreadcrumbItem, { children: item.href ? /* @__PURE__ */ jsx159(Link, { href: item.href, onClick: item.onClick, children: item.name }) : /* @__PURE__ */ jsx159(Fragment21, { children: item.name }) }),
15120
+ items.slice(-ITEMS_TO_DISPLAY + 2).map((item, index) => /* @__PURE__ */ jsxs86(Fragment21, { children: [
15121
+ /* @__PURE__ */ jsx159(BreadcrumbItem, { children: item.href ? /* @__PURE__ */ jsx159(Link, { href: item.href, onClick: item.onClick, children: item.name }) : /* @__PURE__ */ jsx159(Fragment22, { children: item.name }) }),
15037
15122
  index < items.slice(-ITEMS_TO_DISPLAY + 2).length - 1 && /* @__PURE__ */ jsx159(BreadcrumbSeparator, {})
15038
15123
  ] }, index))
15039
- ] }) : /* @__PURE__ */ jsx159(Fragment21, { children: items.map((item, index) => /* @__PURE__ */ jsxs86(Fragment20, { children: [
15040
- /* @__PURE__ */ jsx159(BreadcrumbItem, { children: item.href ? /* @__PURE__ */ jsx159(Link, { href: item.href, onClick: item.onClick, children: item.name }) : /* @__PURE__ */ jsx159(Fragment21, { children: item.name }) }),
15124
+ ] }) : /* @__PURE__ */ jsx159(Fragment22, { children: items.map((item, index) => /* @__PURE__ */ jsxs86(Fragment21, { children: [
15125
+ /* @__PURE__ */ jsx159(BreadcrumbItem, { children: item.href ? /* @__PURE__ */ jsx159(Link, { href: item.href, onClick: item.onClick, children: item.name }) : /* @__PURE__ */ jsx159(Fragment22, { children: item.name }) }),
15041
15126
  index < items.length - 1 && /* @__PURE__ */ jsx159(BreadcrumbSeparator, {})
15042
15127
  ] }, index)) })
15043
15128
  ] }) });
@@ -15056,12 +15141,41 @@ function BreadcrumbMobile({
15056
15141
  if (!showRoot) return null;
15057
15142
  return /* @__PURE__ */ jsx159(Breadcrumb, { children: /* @__PURE__ */ jsx159(BreadcrumbList, { children: /* @__PURE__ */ jsx159(BreadcrumbItem, { children: /* @__PURE__ */ jsx159(Link, { href: generateUrl({ page: `/` }), children: rootLabel }) }) }) });
15058
15143
  }
15144
+ if (allItems.length <= 1) {
15145
+ return /* @__PURE__ */ jsx159("span", { className: "text-foreground block min-w-0 truncate px-1.5 text-xs/relaxed font-normal", children: lastItem?.name });
15146
+ }
15059
15147
  return /* @__PURE__ */ jsxs86(DropdownMenu, { open, onOpenChange: setOpen, children: [
15060
- /* @__PURE__ */ jsxs86(DropdownMenuTrigger, { className: "text-foreground text-xs/relaxed font-normal hover:bg-accent flex items-center gap-1 rounded-md px-1.5 py-0.5 transition-colors outline-none", children: [
15061
- lastItem?.name,
15062
- /* @__PURE__ */ jsx159(ChevronDownIcon8, { className: "text-muted-foreground size-3.5" })
15148
+ /* @__PURE__ */ jsxs86(DropdownMenuTrigger, { className: "text-foreground text-xs/relaxed font-normal hover:bg-accent flex min-h-9 min-w-0 items-center gap-1 rounded-md px-1.5 py-0.5 transition-colors outline-none", children: [
15149
+ /* @__PURE__ */ jsx159("span", { className: "truncate", children: lastItem?.name }),
15150
+ /* @__PURE__ */ jsx159(ChevronDownIcon8, { className: "text-muted-foreground size-3.5 shrink-0" })
15063
15151
  ] }),
15064
- /* @__PURE__ */ jsx159(DropdownMenuContent, { align: "start", children: allItems.map((item, index) => /* @__PURE__ */ jsx159(DropdownMenuItem, { children: item.href ? /* @__PURE__ */ jsx159(Link, { href: item.href, onClick: item.onClick, children: item.name }) : /* @__PURE__ */ jsx159(Fragment21, { children: item.name }) }, index)) })
15152
+ /* @__PURE__ */ jsx159(DropdownMenuContent, { align: "start", children: allItems.map(
15153
+ (item, index) => item.href ? (
15154
+ // The item renders AS the link, so the whole row navigates — a Link
15155
+ // nested inside the row only answered taps on its own text.
15156
+ /* @__PURE__ */ jsx159(
15157
+ DropdownMenuItem,
15158
+ {
15159
+ className: "min-h-10",
15160
+ render: (props) => /* @__PURE__ */ jsx159(
15161
+ Link,
15162
+ {
15163
+ ...props,
15164
+ href: item.href,
15165
+ className: cn(props.className, "text-foreground font-normal"),
15166
+ onClick: (event) => {
15167
+ props.onClick?.(event);
15168
+ item.onClick?.();
15169
+ },
15170
+ children: props.children
15171
+ }
15172
+ ),
15173
+ children: item.name
15174
+ },
15175
+ index
15176
+ )
15177
+ ) : /* @__PURE__ */ jsx159(DropdownMenuItem, { className: "min-h-10", children: item.name }, index)
15178
+ ) })
15065
15179
  ] });
15066
15180
  }
15067
15181
  __name(BreadcrumbMobile, "BreadcrumbMobile");
@@ -15112,7 +15226,14 @@ __name(ContentTitle, "ContentTitle");
15112
15226
 
15113
15227
  // src/components/navigations/Header.tsx
15114
15228
  import { jsx as jsx161, jsxs as jsxs88 } from "react/jsx-runtime";
15115
- function Header({ children, mobileChildren, leftContent, logo, className }) {
15229
+ function Header({
15230
+ children,
15231
+ mobileChildren,
15232
+ leftContent,
15233
+ logo,
15234
+ className,
15235
+ hideSidebarTriggerOnMobile
15236
+ }) {
15116
15237
  const { breadcrumbs } = useSharedContext();
15117
15238
  const rootLabel = useHeaderRootLabel();
15118
15239
  const isRootHidden = useIsBreadcrumbRootHidden();
@@ -15137,9 +15258,9 @@ function Header({ children, mobileChildren, leftContent, logo, className }) {
15137
15258
  className: `bg-sidebar sticky top-0 z-10 flex h-[var(--app-header-h,calc(3rem_+_env(safe-area-inset-top)))] flex-col items-center justify-start gap-x-4 pt-[env(safe-area-inset-top)] ${className ?? ""}`,
15138
15259
  children: /* @__PURE__ */ jsxs88("div", { className: "bg-sidebar flex h-12 w-full flex-row items-center justify-between ps-2 pe-4", children: [
15139
15260
  isMobile && logo && /* @__PURE__ */ jsx161("div", { className: "flex shrink-0 flex-row items-center pe-1", children: logo }),
15140
- sidebar && /* @__PURE__ */ jsx161(SidebarTrigger, { "aria-label": "Toggle sidebar", id: "sidebar-trigger" }),
15261
+ sidebar && !(isMobile && hideSidebarTriggerOnMobile) && /* @__PURE__ */ jsx161(SidebarTrigger, { "aria-label": "Toggle sidebar", id: "sidebar-trigger" }),
15141
15262
  leftContent,
15142
- /* @__PURE__ */ jsx161("div", { className: "flex w-full flex-row items-center justify-start", children: /* @__PURE__ */ jsx161(BreadcrumbNavigation, { items: breadcrumbs, rootLabel: rootLabel ?? void 0, showRoot: !isRootHidden }) }),
15263
+ /* @__PURE__ */ jsx161("div", { className: "flex w-full flex-row items-center justify-start max-md:min-w-0", children: /* @__PURE__ */ jsx161(BreadcrumbNavigation, { items: breadcrumbs, rootLabel: rootLabel ?? void 0, showRoot: !isRootHidden }) }),
15143
15264
  isMobile ? mobileChildren && /* @__PURE__ */ jsx161("div", { className: "flex shrink-0 flex-row items-center justify-end gap-x-2 whitespace-nowrap", children: mobileChildren }) : children && // No fixed width: the widget slot sizes to its content and the
15144
15265
  // breadcrumb (w-full, above) takes the rest. A `w-64` cap here
15145
15266
  // clipped consumers whose widget set outgrew 256px.
@@ -15153,7 +15274,7 @@ __name(Header, "Header");
15153
15274
 
15154
15275
  // src/components/navigations/MobileNavigationBar.tsx
15155
15276
  import { usePathname as usePathname3 } from "next/navigation";
15156
- import { Fragment as Fragment22, jsx as jsx162, jsxs as jsxs89 } from "react/jsx-runtime";
15277
+ import { Fragment as Fragment23, jsx as jsx162, jsxs as jsxs89 } from "react/jsx-runtime";
15157
15278
  function isActiveHref(pathname, href) {
15158
15279
  if (href === "/") return pathname === "/";
15159
15280
  return pathname === href || pathname.startsWith(`${href}/`);
@@ -15165,7 +15286,7 @@ var slotClass = cn(
15165
15286
  "transition-colors"
15166
15287
  );
15167
15288
  function SlotContent({ item }) {
15168
- if (item.render) return /* @__PURE__ */ jsx162(Fragment22, { children: item.render });
15289
+ if (item.render) return /* @__PURE__ */ jsx162(Fragment23, { children: item.render });
15169
15290
  const Icon = item.icon;
15170
15291
  return Icon ? /* @__PURE__ */ jsx162(Icon, { className: "size-6" }) : null;
15171
15292
  }
@@ -15185,10 +15306,13 @@ function MobileNavigationBar({ className } = {}) {
15185
15306
  children: items.map((item) => {
15186
15307
  const active = item.href ? isActiveHref(pathname, item.href) : false;
15187
15308
  const tone = active ? "text-primary" : "text-muted-foreground";
15188
- const body = /* @__PURE__ */ jsxs89(Fragment22, { children: [
15309
+ const body = /* @__PURE__ */ jsxs89(Fragment23, { children: [
15189
15310
  active && /* @__PURE__ */ jsx162("span", { "aria-hidden": true, className: "bg-primary absolute inset-x-0 top-0 h-0.5" }),
15190
15311
  /* @__PURE__ */ jsx162(SlotContent, { item })
15191
15312
  ] });
15313
+ if (!item.href && !item.onClick) {
15314
+ return /* @__PURE__ */ jsx162("div", { "data-testid": `mobile-nav-${item.key}`, className: cn(slotClass, tone), children: /* @__PURE__ */ jsx162(SlotContent, { item }) }, item.key);
15315
+ }
15192
15316
  return item.href ? /* @__PURE__ */ jsx162(
15193
15317
  Link,
15194
15318
  {
@@ -15339,7 +15463,7 @@ function PageContainer({ children, testId, className }) {
15339
15463
  const headerLogo = useHeaderLogo();
15340
15464
  return /* @__PURE__ */ jsxs92("div", { className: `flex h-full w-full flex-col`, "data-testid": testId, children: [
15341
15465
  /* @__PURE__ */ jsx166(Header, { leftContent: headerLeftContent, logo: headerLogo, mobileChildren: headerMobileChildren, children: headerChildren }),
15342
- /* @__PURE__ */ jsx166("main", { className: cn(`flex w-full flex-1 flex-col gap-y-4 pt-4 ps-4 pe-0`, className), children })
15466
+ /* @__PURE__ */ jsx166("main", { className: cn(`flex w-full flex-1 flex-col gap-y-4 pt-4 ps-4 pe-0 max-md:pe-4`, className), children })
15343
15467
  ] });
15344
15468
  }
15345
15469
  __name(PageContainer, "PageContainer");
@@ -15592,7 +15716,7 @@ __name(ReactMarkdownContainer, "ReactMarkdownContainer");
15592
15716
 
15593
15717
  // src/components/containers/RoundPageContainerTitle.tsx
15594
15718
  import { InfoIcon as InfoIcon2 } from "lucide-react";
15595
- import { jsx as jsx169, jsxs as jsxs94 } from "react/jsx-runtime";
15719
+ import { Fragment as Fragment24, jsx as jsx169, jsxs as jsxs94 } from "react/jsx-runtime";
15596
15720
  var HEADER_ROW_MIN_H = "min-h-[53px]";
15597
15721
  function RoundPageContainerTitle({
15598
15722
  module,
@@ -15604,41 +15728,74 @@ function RoundPageContainerTitle({
15604
15728
  }) {
15605
15729
  const { title } = useSharedContext();
15606
15730
  const isMobile = useIsMobile();
15731
+ const detailsLabel = `${showDetails ? "Hide" : "Show"} ${typeof detailsTitle === "string" ? detailsTitle : "details"}`;
15732
+ const detailsToggle = details ? isMobile ? /* @__PURE__ */ jsx169(
15733
+ Button,
15734
+ {
15735
+ "data-help": "page.details",
15736
+ variant: showDetails ? `ghost` : `default`,
15737
+ onClick: () => setShowDetails(!showDetails),
15738
+ "aria-label": detailsLabel,
15739
+ className: "shrink-0",
15740
+ children: detailsIcon ?? /* @__PURE__ */ jsx169(InfoIcon2, {})
15741
+ }
15742
+ ) : /* @__PURE__ */ jsxs94(Tooltip2, { children: [
15743
+ /* @__PURE__ */ jsx169(
15744
+ TooltipTrigger,
15745
+ {
15746
+ render: /* @__PURE__ */ jsx169(
15747
+ Button,
15748
+ {
15749
+ "data-help": "page.details",
15750
+ variant: showDetails ? `ghost` : `default`,
15751
+ onClick: () => setShowDetails(!showDetails),
15752
+ "aria-label": detailsLabel,
15753
+ className: cn(`cursor-pointer`)
15754
+ }
15755
+ ),
15756
+ children: detailsIcon ?? /* @__PURE__ */ jsx169(InfoIcon2, {})
15757
+ }
15758
+ ),
15759
+ /* @__PURE__ */ jsxs94(TooltipContent, { children: [
15760
+ showDetails ? "Hide" : "Show",
15761
+ " ",
15762
+ detailsTitle ?? "details"
15763
+ ] })
15764
+ ] }) : null;
15607
15765
  return /* @__PURE__ */ jsxs94("div", { className: "flex w-full flex-col border-b", children: [
15608
- /* @__PURE__ */ jsxs94("div", { className: cn(`flex w-full flex-row items-center gap-x-2 p-4 justify-between`, HEADER_ROW_MIN_H), children: [
15609
- !isMobile ? /* @__PURE__ */ jsxs94("div", { className: "flex w-full gap-x-4", children: [
15766
+ isMobile ? (
15767
+ // Phone: "type · name" on one truncated line with the details toggle
15768
+ // beside it; the page controls drop to their own wrapping line below,
15769
+ // so they can never push the page wider than the screen.
15770
+ /* @__PURE__ */ jsxs94("div", { className: cn(`flex w-full flex-col gap-y-2 p-4`, HEADER_ROW_MIN_H), children: [
15771
+ /* @__PURE__ */ jsxs94("div", { className: "flex w-full min-w-0 items-center justify-between gap-x-2", children: [
15772
+ /* @__PURE__ */ jsxs94("div", { className: "text-muted-foreground flex min-w-0 items-center gap-x-2 text-base font-light", children: [
15773
+ title.titleActions,
15774
+ module && module.icon ? /* @__PURE__ */ jsx169(module.icon, { className: "text-primary h-5 w-5 shrink-0" }) : title.icon,
15775
+ /* @__PURE__ */ jsxs94("span", { className: "truncate", children: [
15776
+ title.type,
15777
+ title.element && /* @__PURE__ */ jsxs94(Fragment24, { children: [
15778
+ /* @__PURE__ */ jsx169("span", { "aria-hidden": true, children: " \xB7 " }),
15779
+ /* @__PURE__ */ jsx169("span", { className: "text-primary font-semibold", children: title.element })
15780
+ ] })
15781
+ ] })
15782
+ ] }),
15783
+ detailsToggle
15784
+ ] }),
15785
+ title.functions && /* @__PURE__ */ jsx169("div", { className: "flex w-full min-w-0 flex-wrap items-center justify-end gap-2", children: title.functions })
15786
+ ] })
15787
+ ) : /* @__PURE__ */ jsxs94("div", { className: cn(`flex w-full flex-row items-center gap-x-2 p-4 justify-between`, HEADER_ROW_MIN_H), children: [
15788
+ /* @__PURE__ */ jsxs94("div", { className: "flex w-full gap-x-4", children: [
15610
15789
  /* @__PURE__ */ jsxs94("div", { className: "text-muted-foreground flex items-center gap-x-2 text-lg font-light whitespace-nowrap", children: [
15611
15790
  title.titleActions,
15612
15791
  module && module.icon ? /* @__PURE__ */ jsx169(module.icon, { className: "text-primary h-6 w-6" }) : title.icon,
15613
15792
  title.type
15614
15793
  ] }),
15615
15794
  /* @__PURE__ */ jsx169("div", { className: cn("text-primary w-full text-xl font-semibold"), children: title.element })
15616
- ] }) : /* @__PURE__ */ jsxs94("div", { className: "text-muted-foreground flex min-w-0 items-center gap-x-2 text-base font-light", children: [
15617
- title.titleActions,
15618
- module && module.icon ? /* @__PURE__ */ jsx169(module.icon, { className: "text-primary h-5 w-5 shrink-0" }) : title.icon,
15619
- /* @__PURE__ */ jsx169("span", { className: "truncate", children: title.type })
15620
15795
  ] }),
15621
15796
  (title.functions || details) && /* @__PURE__ */ jsxs94("div", { className: "flex shrink-0 items-center gap-x-2", children: [
15622
15797
  title.functions,
15623
- details && /* @__PURE__ */ jsxs94(Tooltip2, { children: [
15624
- /* @__PURE__ */ jsx169(TooltipTrigger, { children: /* @__PURE__ */ jsx169(
15625
- Button,
15626
- {
15627
- "data-help": "page.details",
15628
- render: /* @__PURE__ */ jsx169("div", {}),
15629
- nativeButton: false,
15630
- variant: showDetails ? `ghost` : `default`,
15631
- onClick: () => setShowDetails(!showDetails),
15632
- className: cn(`cursor-pointer`),
15633
- children: detailsIcon ?? /* @__PURE__ */ jsx169(InfoIcon2, {})
15634
- }
15635
- ) }),
15636
- /* @__PURE__ */ jsxs94(TooltipContent, { children: [
15637
- showDetails ? "Hide" : "Show",
15638
- " ",
15639
- detailsTitle ?? "details"
15640
- ] })
15641
- ] })
15798
+ detailsToggle
15642
15799
  ] })
15643
15800
  ] }),
15644
15801
  title.actionBar && /* @__PURE__ */ jsx169(
@@ -15646,7 +15803,7 @@ function RoundPageContainerTitle({
15646
15803
  {
15647
15804
  "data-testid": "round-page-action-bar",
15648
15805
  "data-help": "page.action-bar",
15649
- className: "flex w-full items-center gap-x-2 border-t px-4 py-2",
15806
+ className: "flex w-full items-center gap-x-2 border-t px-4 py-2 max-md:flex-wrap max-md:gap-y-2",
15650
15807
  children: /* @__PURE__ */ jsx169(ActionBarProvider, { value: true, children: title.actionBar })
15651
15808
  }
15652
15809
  )
@@ -15656,8 +15813,8 @@ __name(RoundPageContainerTitle, "RoundPageContainerTitle");
15656
15813
 
15657
15814
  // src/components/containers/RoundPageContainer.tsx
15658
15815
  import { useSearchParams } from "next/navigation";
15659
- import { Fragment as Fragment23, useCallback as useCallback27, useEffect as useEffect42, useMemo as useMemo22, useState as useState52 } from "react";
15660
- import { Fragment as Fragment24, jsx as jsx170, jsxs as jsxs95 } from "react/jsx-runtime";
15816
+ import { Fragment as Fragment25, useCallback as useCallback27, useEffect as useEffect42, useMemo as useMemo22, useState as useState52 } from "react";
15817
+ import { Fragment as Fragment26, jsx as jsx170, jsxs as jsxs95 } from "react/jsx-runtime";
15661
15818
  var DETAILS_COOKIE_NAME = "round_page_details_state";
15662
15819
  var DETAILS_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
15663
15820
  var railTriggerClass = cn(
@@ -15697,7 +15854,9 @@ function RoundPageContainer({
15697
15854
  const headerLogo = useHeaderLogo();
15698
15855
  const headerMobileChildren = useHeaderMobileChildren();
15699
15856
  const [showDetails, setShowDetailsState] = useState52(defaultDetailsOpen);
15857
+ const [showDetailsMobile, setShowDetailsMobile] = useState52(false);
15700
15858
  const isMobile = useIsMobile();
15859
+ const hasMobileNavigation = useMobileNavigationItems().length > 0;
15701
15860
  const hasSidebar = useOptionalSidebar() !== null;
15702
15861
  const [mounted, setMounted] = useState52(false);
15703
15862
  useEffect42(() => {
@@ -15759,14 +15918,20 @@ function RoundPageContainer({
15759
15918
  [tabs]
15760
15919
  );
15761
15920
  const isReady = mounted;
15921
+ const activeDocumentTab = activeFillHeight && activeConstrainWidth;
15922
+ const mobileFlow = isMobile && isFixed && (!activeFillHeight || activeDocumentTab) && !fullWidth;
15923
+ const innerClip = mobileFlow ? `` : clip;
15924
+ const innerScrollY = mobileFlow ? `` : scrollY;
15925
+ const showMobileSectionPicker = (tabs?.length ?? 0) > 1;
15762
15926
  if (!isReady) {
15763
- return /* @__PURE__ */ jsxs95(Fragment24, { children: [
15927
+ return /* @__PURE__ */ jsxs95(Fragment26, { children: [
15764
15928
  /* @__PURE__ */ jsx170(
15765
15929
  Header,
15766
15930
  {
15767
15931
  leftContent: headerLeftContent,
15768
15932
  logo: headerLogo,
15769
15933
  mobileChildren: headerMobileChildren,
15934
+ hideSidebarTriggerOnMobile: hasMobileNavigation,
15770
15935
  className: "bg-sidebar border-0",
15771
15936
  children: headerChildren
15772
15937
  }
@@ -15796,13 +15961,14 @@ function RoundPageContainer({
15796
15961
  )
15797
15962
  ] });
15798
15963
  }
15799
- return /* @__PURE__ */ jsxs95(Fragment24, { children: [
15964
+ return /* @__PURE__ */ jsxs95(Fragment26, { children: [
15800
15965
  /* @__PURE__ */ jsx170(
15801
15966
  Header,
15802
15967
  {
15803
15968
  leftContent: headerLeftContent,
15804
15969
  logo: headerLogo,
15805
15970
  mobileChildren: headerMobileChildren,
15971
+ hideSidebarTriggerOnMobile: hasMobileNavigation,
15806
15972
  className: "bg-sidebar border-0",
15807
15973
  children: headerChildren
15808
15974
  }
@@ -15826,7 +15992,7 @@ function RoundPageContainer({
15826
15992
  ),
15827
15993
  children: [
15828
15994
  /* @__PURE__ */ jsxs95("div", { className: "bg-background flex min-h-0 w-full flex-1 rounded-lg border p-0", children: [
15829
- /* @__PURE__ */ jsxs95("div", { className: "flex w-full flex-col", children: [
15995
+ /* @__PURE__ */ jsxs95("div", { className: cn("flex w-full flex-col", mobileFlow && "min-h-0 overflow-y-auto pb-16"), children: [
15830
15996
  (!fullWidth || forceHeader) && /* @__PURE__ */ jsx170(
15831
15997
  RoundPageContainerTitle,
15832
15998
  {
@@ -15834,12 +16000,12 @@ function RoundPageContainer({
15834
16000
  details,
15835
16001
  detailsTitle,
15836
16002
  detailsIcon,
15837
- showDetails,
15838
- setShowDetails,
16003
+ showDetails: isMobile ? showDetailsMobile : showDetails,
16004
+ setShowDetails: isMobile ? setShowDetailsMobile : setShowDetails,
15839
16005
  fullWidth
15840
16006
  }
15841
16007
  ),
15842
- /* @__PURE__ */ jsx170("div", { className: cn(`flex w-full`, isFixed && `h-full`, clip), children: layout2 === "rail" && tabs ? (
16008
+ /* @__PURE__ */ jsx170("div", { className: cn(`flex w-full`, isFixed && !mobileFlow && `h-full`, innerClip), children: layout2 === "rail" && tabs ? (
15843
16009
  // Rail layout: the vertical-tab navigation is a flush-left
15844
16010
  // sidebar of the card and the content fills the full remaining
15845
16011
  // width (like `fullWidth`) — NOT the centred max-w-6xl column.
@@ -15849,7 +16015,11 @@ function RoundPageContainer({
15849
16015
  value: activeTab,
15850
16016
  onValueChange: handleTabChange,
15851
16017
  orientation: "horizontal",
15852
- className: cn(`flex min-w-0 grow data-[orientation=horizontal]:flex-row`, isFixed && `h-full`, clip),
16018
+ className: cn(
16019
+ `flex min-w-0 grow data-[orientation=horizontal]:flex-row`,
16020
+ isFixed && !mobileFlow && `h-full`,
16021
+ innerClip
16022
+ ),
15853
16023
  children: [
15854
16024
  /* @__PURE__ */ jsxs95(
15855
16025
  "aside",
@@ -15864,7 +16034,7 @@ function RoundPageContainer({
15864
16034
  railHeader && /* @__PURE__ */ jsx170("div", { children: railHeader }),
15865
16035
  /* @__PURE__ */ jsxs95(TabsList, { className: "flex h-auto w-full flex-col items-stretch gap-0.5 bg-transparent p-0", children: [
15866
16036
  ungrouped.map((tab) => /* @__PURE__ */ jsx170(TabsTrigger, { value: tabValue(tab), className: railTriggerClass, children: tab.contentLabel ?? tab.label }, tab.label)),
15867
- groups.map((group) => /* @__PURE__ */ jsxs95(Fragment23, { children: [
16037
+ groups.map((group) => /* @__PURE__ */ jsxs95(Fragment25, { children: [
15868
16038
  /* @__PURE__ */ jsx170(MicroLabel, { as: "span", role: "presentation", className: "block px-3 pt-3 pb-1", children: group.label }),
15869
16039
  group.items.map((tab) => /* @__PURE__ */ jsx170(TabsTrigger, { value: tabValue(tab), className: railTriggerClass, children: tab.contentLabel ?? tab.label }, tab.label))
15870
16040
  ] }, group.label))
@@ -15872,32 +16042,39 @@ function RoundPageContainer({
15872
16042
  ]
15873
16043
  }
15874
16044
  ),
15875
- /* @__PURE__ */ jsxs95("div", { className: cn(`flex min-w-0 grow flex-col`, clip), children: [
15876
- railHeader && /* @__PURE__ */ jsx170("div", { className: "mx-auto w-full max-w-48 px-2 pt-2 md:hidden", children: railHeader }),
15877
- /* @__PURE__ */ jsx170("div", { "data-testid": "round-page-rail-select", className: "p-2 md:hidden", children: /* @__PURE__ */ jsxs95(
15878
- Select,
16045
+ /* @__PURE__ */ jsxs95("div", { className: cn(`flex min-w-0 grow flex-col`, innerClip), children: [
16046
+ railHeader && /* @__PURE__ */ jsx170("div", { className: "mx-auto w-full max-w-24 px-2 pt-2 md:hidden", children: railHeader }),
16047
+ /* @__PURE__ */ jsx170(
16048
+ "div",
15879
16049
  {
15880
- items: tabItems,
15881
- value: activeTab,
15882
- onValueChange: (value) => {
15883
- if (value) handleTabChange(value);
15884
- },
15885
- children: [
15886
- /* @__PURE__ */ jsx170(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx170(SelectValue, {}) }),
15887
- /* @__PURE__ */ jsxs95(SelectContent, { children: [
15888
- ungrouped.map((tab) => /* @__PURE__ */ jsx170(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label)),
15889
- groups.map((group) => /* @__PURE__ */ jsxs95(SelectGroup, { children: [
15890
- /* @__PURE__ */ jsx170(SelectLabel, { children: group.label }),
15891
- group.items.map((tab) => /* @__PURE__ */ jsx170(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label))
15892
- ] }, group.label))
15893
- ] })
15894
- ]
16050
+ "data-testid": "round-page-rail-select",
16051
+ className: cn("p-2 md:hidden", !showMobileSectionPicker && "hidden"),
16052
+ children: /* @__PURE__ */ jsxs95(
16053
+ Select,
16054
+ {
16055
+ items: tabItems,
16056
+ value: activeTab,
16057
+ onValueChange: (value) => {
16058
+ if (value) handleTabChange(value);
16059
+ },
16060
+ children: [
16061
+ /* @__PURE__ */ jsx170(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx170(SelectValue, {}) }),
16062
+ /* @__PURE__ */ jsxs95(SelectContent, { children: [
16063
+ ungrouped.map((tab) => /* @__PURE__ */ jsx170(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label)),
16064
+ groups.map((group) => /* @__PURE__ */ jsxs95(SelectGroup, { children: [
16065
+ /* @__PURE__ */ jsx170(SelectLabel, { children: group.label }),
16066
+ group.items.map((tab) => /* @__PURE__ */ jsx170(SelectItem, { value: tabValue(tab), children: tab.contentLabel ?? tab.label }, tab.label))
16067
+ ] }, group.label))
16068
+ ] })
16069
+ ]
16070
+ }
16071
+ )
15895
16072
  }
15896
- ) }),
16073
+ ),
15897
16074
  /* @__PURE__ */ jsx170(
15898
16075
  "div",
15899
16076
  {
15900
- className: cn(`min-w-0 grow`, activeFillHeight ? cn(`flex flex-col`, clip) : cn(scrollY, `p-4`)),
16077
+ className: cn(`min-w-0 grow`, activeFillHeight ? cn(`flex flex-col`, innerClip) : cn(innerScrollY, `p-4`)),
15901
16078
  children: /* @__PURE__ */ jsxs95(
15902
16079
  "div",
15903
16080
  {
@@ -15932,7 +16109,7 @@ function RoundPageContainer({
15932
16109
  className: cn(
15933
16110
  `grow`,
15934
16111
  isMobile ? `p-2` : `p-4`,
15935
- activeFillHeight ? cn(`flex flex-col`, clip) : scrollY,
16112
+ activeFillHeight ? cn(`flex flex-col`, innerClip) : innerScrollY,
15936
16113
  fullWidth && `p-0`
15937
16114
  ),
15938
16115
  children: /* @__PURE__ */ jsxs95(
@@ -15945,7 +16122,7 @@ function RoundPageContainer({
15945
16122
  ),
15946
16123
  children: [
15947
16124
  header,
15948
- tabs ? /* @__PURE__ */ jsxs95(Fragment24, { children: [
16125
+ tabs ? /* @__PURE__ */ jsxs95(Fragment26, { children: [
15949
16126
  /* @__PURE__ */ jsxs95(
15950
16127
  Tabs,
15951
16128
  {
@@ -15953,7 +16130,7 @@ function RoundPageContainer({
15953
16130
  className: cn(`w-full`, activeFillHeight && `flex flex-1 min-h-0 flex-col`),
15954
16131
  onValueChange: handleTabChange,
15955
16132
  children: [
15956
- isMobile ? /* @__PURE__ */ jsx170("div", { className: "p-0", children: /* @__PURE__ */ jsxs95(
16133
+ isMobile ? /* @__PURE__ */ jsx170("div", { className: cn("p-0", !showMobileSectionPicker && "hidden"), children: /* @__PURE__ */ jsxs95(
15957
16134
  Select,
15958
16135
  {
15959
16136
  items: tabItems,
@@ -15973,7 +16150,7 @@ function RoundPageContainer({
15973
16150
  className: cn(
15974
16151
  `flex w-full `,
15975
16152
  isMobile ? `` : `px-4`,
15976
- activeFillHeight ? `flex-1 min-h-0` : scrollY
16153
+ activeFillHeight ? `flex-1 min-h-0` : innerScrollY
15977
16154
  ),
15978
16155
  children: tabs.map((tab) => /* @__PURE__ */ jsx170(
15979
16156
  TabsContent,
@@ -15997,10 +16174,17 @@ function RoundPageContainer({
15997
16174
  }
15998
16175
  ) })
15999
16176
  ] }),
16000
- details && (isMobile ? /* @__PURE__ */ jsx170(Sheet, { open: showDetails, onOpenChange: setShowDetails, children: /* @__PURE__ */ jsxs95(SheetContent, { side: "end", children: [
16001
- /* @__PURE__ */ jsx170(SheetHeader, { children: /* @__PURE__ */ jsx170(SheetTitle, { children: detailsTitle ?? "Details" }) }),
16002
- /* @__PURE__ */ jsx170("div", { className: "overflow-y-auto p-6 pt-0", children: details })
16003
- ] }) }) : /* @__PURE__ */ jsxs95(
16177
+ details && (isMobile ? /* @__PURE__ */ jsx170(Sheet, { open: showDetailsMobile, onOpenChange: setShowDetailsMobile, children: /* @__PURE__ */ jsxs95(
16178
+ SheetContent,
16179
+ {
16180
+ side: "end",
16181
+ className: "data-[side=left]:w-full data-[side=right]:w-full data-[side=left]:sm:max-w-none data-[side=right]:sm:max-w-none",
16182
+ children: [
16183
+ /* @__PURE__ */ jsx170(SheetHeader, { children: /* @__PURE__ */ jsx170(SheetTitle, { children: detailsTitle ?? "Details" }) }),
16184
+ /* @__PURE__ */ jsx170("div", { className: "overflow-y-auto p-6 pt-0", children: details })
16185
+ ]
16186
+ }
16187
+ ) }) : /* @__PURE__ */ jsxs95(
16004
16188
  "div",
16005
16189
  {
16006
16190
  className: cn(
@@ -16043,7 +16227,7 @@ function RoundPageContainer({
16043
16227
  __name(RoundPageContainer, "RoundPageContainer");
16044
16228
 
16045
16229
  // src/components/containers/TabsContainer.tsx
16046
- import { Fragment as Fragment25, jsx as jsx171, jsxs as jsxs96 } from "react/jsx-runtime";
16230
+ import { Fragment as Fragment27, jsx as jsx171, jsxs as jsxs96 } from "react/jsx-runtime";
16047
16231
  function TabsContainer({
16048
16232
  tabs,
16049
16233
  defaultTab,
@@ -16088,7 +16272,7 @@ function TabsContainer({
16088
16272
  ),
16089
16273
  additionalComponent && additionalComponent
16090
16274
  ] }),
16091
- scrollAreaClassName ? /* @__PURE__ */ jsx171(ScrollArea, { className: scrollAreaClassName, children: validTabs.map((tab) => /* @__PURE__ */ jsx171(TabsContent, { value: tab.label, children: tab.content }, tab.label)) }) : /* @__PURE__ */ jsx171(Fragment25, { children: validTabs.map((tab) => /* @__PURE__ */ jsx171(TabsContent, { value: tab.label, children: tab.content }, tab.label)) })
16275
+ scrollAreaClassName ? /* @__PURE__ */ jsx171(ScrollArea, { className: scrollAreaClassName, children: validTabs.map((tab) => /* @__PURE__ */ jsx171(TabsContent, { value: tab.label, children: tab.content }, tab.label)) }) : /* @__PURE__ */ jsx171(Fragment27, { children: validTabs.map((tab) => /* @__PURE__ */ jsx171(TabsContent, { value: tab.label, children: tab.content }, tab.label)) })
16092
16276
  ] });
16093
16277
  }
16094
16278
  __name(TabsContainer, "TabsContainer");
@@ -16939,7 +17123,7 @@ __name(useSubscriptionStatus, "useSubscriptionStatus");
16939
17123
  // src/features/role/hooks/useRoleTableStructure.tsx
16940
17124
  import { useTranslations as useTranslations56 } from "next-intl";
16941
17125
  import { useMemo as useMemo28 } from "react";
16942
- import { Fragment as Fragment26, jsx as jsx186 } from "react/jsx-runtime";
17126
+ import { Fragment as Fragment28, jsx as jsx186 } from "react/jsx-runtime";
16943
17127
  var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
16944
17128
  const t = useTranslations56();
16945
17129
  const generateUrl = usePageUrlGenerator();
@@ -16976,7 +17160,7 @@ var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
16976
17160
  id: "description",
16977
17161
  accessorKey: "description",
16978
17162
  header: t(`role.fields.description.label`),
16979
- cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx186(Fragment26, { children: row.getValue("description") }), "cell"),
17163
+ cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx186(Fragment28, { children: row.getValue("description") }), "cell"),
16980
17164
  enableSorting: false,
16981
17165
  enableHiding: false
16982
17166
  }),
@@ -17332,7 +17516,7 @@ var useWaitlistTableStructure = /* @__PURE__ */ __name((params) => {
17332
17516
  // src/features/content/hooks/useContentTableStructure.tsx
17333
17517
  import { useTranslations as useTranslations60 } from "next-intl";
17334
17518
  import { useMemo as useMemo32 } from "react";
17335
- import { Fragment as Fragment27, jsx as jsx190, jsxs as jsxs103 } from "react/jsx-runtime";
17519
+ import { Fragment as Fragment29, jsx as jsx190, jsxs as jsxs103 } from "react/jsx-runtime";
17336
17520
  var useContentTableStructure = /* @__PURE__ */ __name((params) => {
17337
17521
  const t = useTranslations60();
17338
17522
  const generateUrl = usePageUrlGenerator();
@@ -17363,7 +17547,7 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
17363
17547
  const contentModule = content.contentType ? Modules.findByModelName(content.contentType) : void 0;
17364
17548
  const link = contentModule ? generateUrl({ page: contentModule, id: content.id }) : "#";
17365
17549
  return /* @__PURE__ */ jsxs103(Tooltip2, { children: [
17366
- /* @__PURE__ */ jsx190(TooltipTrigger, { className: "flex items-center justify-start space-x-2", children: /* @__PURE__ */ jsxs103(Fragment27, { children: [
17550
+ /* @__PURE__ */ jsx190(TooltipTrigger, { className: "flex items-center justify-start space-x-2", children: /* @__PURE__ */ jsxs103(Fragment29, { children: [
17367
17551
  contentModule && getIconByModule({ module: contentModule, className: "h-4 w-4" }),
17368
17552
  /* @__PURE__ */ jsx190(Link, { href: link, children: content.name })
17369
17553
  ] }) }),
@@ -17379,7 +17563,7 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
17379
17563
  header: t(`common.relevance`),
17380
17564
  cell: /* @__PURE__ */ __name(({ row }) => {
17381
17565
  const content = row.original.jsonApiData;
17382
- if (!content.relevance) return /* @__PURE__ */ jsx190(Fragment27, {});
17566
+ if (!content.relevance) return /* @__PURE__ */ jsx190(Fragment29, {});
17383
17567
  const response = `${content.relevance.toFixed(0)}%`;
17384
17568
  return /* @__PURE__ */ jsxs103("div", { className: "relative flex h-5 w-20 items-center justify-center overflow-clip rounded border text-center", children: [
17385
17569
  /* @__PURE__ */ jsx190(
@@ -17853,7 +18037,7 @@ function ContentTableSearch({ data }) {
17853
18037
  __name(ContentTableSearch, "ContentTableSearch");
17854
18038
 
17855
18039
  // src/components/tables/ContentListTable.tsx
17856
- import { Fragment as Fragment28, jsx as jsx192, jsxs as jsxs105 } from "react/jsx-runtime";
18040
+ import { Fragment as Fragment30, jsx as jsx192, jsxs as jsxs105 } from "react/jsx-runtime";
17857
18041
  var EMPTY_ARRAY = [];
17858
18042
  function getGroupKeys(item, field) {
17859
18043
  const value = item.jsonApiData[field];
@@ -17868,7 +18052,7 @@ function getGroupKeys(item, field) {
17868
18052
  __name(getGroupKeys, "getGroupKeys");
17869
18053
  var isClassComponent = /* @__PURE__ */ __name((component) => typeof component === "function" && !!component.prototype?.isReactComponent, "isClassComponent");
17870
18054
  function StableCell({ render, context }) {
17871
- return /* @__PURE__ */ jsx192(Fragment28, { children: render(context) });
18055
+ return /* @__PURE__ */ jsx192(Fragment30, { children: render(context) });
17872
18056
  }
17873
18057
  __name(StableCell, "StableCell");
17874
18058
  function renderCell(cellDef, context) {
@@ -17881,6 +18065,7 @@ __name(renderCell, "renderCell");
17881
18065
  var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(props) {
17882
18066
  const { data, fields, checkedIds, toggleId, allowSearch, filters: _filters, fullWidth, onRowClick } = props;
17883
18067
  const t = useTranslations62();
18068
+ const isMobile = useIsMobile();
17884
18069
  const [expanded, setExpanded] = useState61(
17885
18070
  props.defaultExpanded === true ? true : typeof props.defaultExpanded === "object" ? props.defaultExpanded : {}
17886
18071
  );
@@ -17962,49 +18147,73 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
17962
18147
  }, [props.groupBy, props.groupOrder, rowModel]);
17963
18148
  const showFooter = !props.hidePagination && !!(data.next || data.previous);
17964
18149
  const titleIsLarge = (props.titleSize ?? (fullWidth ? `lg` : `sm`)) === `lg`;
17965
- return /* @__PURE__ */ jsx192("div", { "data-help": "list.table", className: "flex w-full flex-col", children: /* @__PURE__ */ jsx192("div", { className: cn(`overflow-clip`, fullWidth ? `` : `rounded-md border`), children: /* @__PURE__ */ jsxs105(Table, { children: [
17966
- /* @__PURE__ */ jsxs105(TableHeader, { className: "bg-muted font-semibold", children: [
17967
- props.title && /* @__PURE__ */ jsx192(TableRow, { children: /* @__PURE__ */ jsx192(
17968
- TableHead,
17969
- {
17970
- className: "bg-card rounded-t-lg text-primary p-4 text-start font-bold",
17971
- colSpan: tableColumns.length,
17972
- children: /* @__PURE__ */ jsxs105("div", { className: "flex w-full items-center justify-between gap-x-2", children: [
17973
- /* @__PURE__ */ jsx192("div", { className: "w-full", children: /* @__PURE__ */ jsxs105(
17974
- "div",
17975
- {
17976
- className: cn(
17977
- "text-muted-foreground flex items-center gap-x-2 font-light whitespace-nowrap",
17978
- titleIsLarge ? `text-lg` : `text-sm`
17979
- ),
17980
- children: [
17981
- props.titleActions,
17982
- props.tableGeneratorType.icon && /* @__PURE__ */ jsx192(
17983
- props.tableGeneratorType.icon,
17984
- {
17985
- className: cn(`text-primary`, titleIsLarge ? `h-6 w-6` : `h-4 w-4`)
17986
- }
17987
- ),
17988
- props.title
17989
- ]
17990
- }
17991
- ) }),
17992
- (props.functions || props.filters || allowSearch) && /* @__PURE__ */ jsxs105(Fragment28, { children: [
17993
- props.filters,
17994
- props.functions,
17995
- allowSearch !== false && /* @__PURE__ */ jsx192(ContentTableSearch, { data })
18150
+ const titleLabel = /* @__PURE__ */ jsxs105(
18151
+ "div",
18152
+ {
18153
+ className: cn(
18154
+ "text-muted-foreground flex items-center gap-x-2 font-light whitespace-nowrap",
18155
+ titleIsLarge ? `text-lg` : `text-sm`
18156
+ ),
18157
+ children: [
18158
+ props.titleActions,
18159
+ props.tableGeneratorType.icon && /* @__PURE__ */ jsx192(props.tableGeneratorType.icon, { className: cn(`text-primary`, titleIsLarge ? `h-6 w-6` : `h-4 w-4`) }),
18160
+ props.title
18161
+ ]
18162
+ }
18163
+ );
18164
+ const hasTitleControls = !!(props.functions || props.filters || allowSearch);
18165
+ const titleControls = /* @__PURE__ */ jsxs105(Fragment30, { children: [
18166
+ props.filters,
18167
+ props.functions,
18168
+ allowSearch !== false && /* @__PURE__ */ jsx192(ContentTableSearch, { data })
18169
+ ] });
18170
+ return /* @__PURE__ */ jsx192("div", { "data-help": "list.table", className: "flex w-full flex-col", children: /* @__PURE__ */ jsxs105("div", { className: cn(`overflow-clip`, fullWidth ? `` : `rounded-md border`), children: [
18171
+ props.title && isMobile && /* @__PURE__ */ jsxs105(
18172
+ "div",
18173
+ {
18174
+ "data-testid": "content-list-table-title-bar",
18175
+ className: "bg-card text-primary flex flex-wrap items-center gap-2 border-b p-4 font-bold",
18176
+ children: [
18177
+ /* @__PURE__ */ jsx192("div", { className: "shrink-0", children: titleLabel }),
18178
+ hasTitleControls && /* @__PURE__ */ jsx192("div", { className: "ms-auto flex flex-wrap items-center justify-end gap-2", children: titleControls })
18179
+ ]
18180
+ }
18181
+ ),
18182
+ /* @__PURE__ */ jsxs105(Table, { children: [
18183
+ /* @__PURE__ */ jsxs105(TableHeader, { className: "bg-muted font-semibold", children: [
18184
+ props.title && !isMobile && /* @__PURE__ */ jsx192(TableRow, { children: /* @__PURE__ */ jsx192(
18185
+ TableHead,
18186
+ {
18187
+ className: "bg-card rounded-t-lg text-primary p-4 text-start font-bold",
18188
+ colSpan: tableColumns.length,
18189
+ children: /* @__PURE__ */ jsxs105("div", { className: "flex w-full items-center justify-between gap-x-2", children: [
18190
+ /* @__PURE__ */ jsx192("div", { className: "w-full", children: titleLabel }),
18191
+ hasTitleControls && titleControls
17996
18192
  ] })
17997
- ] })
17998
- }
17999
- ) }),
18000
- !props.hideHeader && table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx192(TableRow, { children: headerGroup.headers.map((header) => {
18001
- const meta = header.column.columnDef.meta;
18002
- return /* @__PURE__ */ jsx192(TableHead, { className: meta?.className, children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()) }, header.id);
18003
- }) }, headerGroup.id))
18004
- ] }),
18005
- /* @__PURE__ */ jsx192(TableBody, { children: rowModel && rowModel.rows?.length ? groupedRows ? groupedRows.map((group) => /* @__PURE__ */ jsxs105(React31.Fragment, { children: [
18006
- /* @__PURE__ */ jsx192(TableRow, { children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "bg-muted px-4 py-2", children: /* @__PURE__ */ jsx192(MicroLabel, { children: props.groupLabel?.(group.groupKey) ?? group.groupKey }) }) }),
18007
- group.rows.map((row) => /* @__PURE__ */ jsxs105(React31.Fragment, { children: [
18193
+ }
18194
+ ) }),
18195
+ !props.hideHeader && table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx192(TableRow, { children: headerGroup.headers.map((header) => {
18196
+ const meta = header.column.columnDef.meta;
18197
+ return /* @__PURE__ */ jsx192(TableHead, { className: meta?.className, children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()) }, header.id);
18198
+ }) }, headerGroup.id))
18199
+ ] }),
18200
+ /* @__PURE__ */ jsx192(TableBody, { children: rowModel && rowModel.rows?.length ? groupedRows ? groupedRows.map((group) => /* @__PURE__ */ jsxs105(React31.Fragment, { children: [
18201
+ /* @__PURE__ */ jsx192(TableRow, { children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "bg-muted px-4 py-2", children: /* @__PURE__ */ jsx192(MicroLabel, { children: props.groupLabel?.(group.groupKey) ?? group.groupKey }) }) }),
18202
+ group.rows.map((row) => /* @__PURE__ */ jsxs105(React31.Fragment, { children: [
18203
+ /* @__PURE__ */ jsx192(
18204
+ TableRow,
18205
+ {
18206
+ onClick: () => onRowClick?.(row.original.jsonApiData),
18207
+ className: `group ${onRowClick ? "hover:bg-muted/50 cursor-pointer" : ""}`,
18208
+ children: row.getVisibleCells().map((cell) => {
18209
+ const meta = cell.column.columnDef.meta;
18210
+ return /* @__PURE__ */ jsx192(TableCell, { className: meta?.className, children: renderCell(cell.column.columnDef.cell, cell.getContext()) }, cell.id);
18211
+ })
18212
+ }
18213
+ ),
18214
+ props.renderExpandedRow && row.getIsExpanded() && /* @__PURE__ */ jsx192(TableRow, { "data-testid": "content-list-table-expanded-row", children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "bg-muted/30 px-4 py-3", children: props.renderExpandedRow(row.original.jsonApiData) }) })
18215
+ ] }, row.id))
18216
+ ] }, group.groupKey)) : rowModel.rows.map((row) => /* @__PURE__ */ jsxs105(React31.Fragment, { children: [
18008
18217
  /* @__PURE__ */ jsx192(
18009
18218
  TableRow,
18010
18219
  {
@@ -18017,58 +18226,45 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
18017
18226
  }
18018
18227
  ),
18019
18228
  props.renderExpandedRow && row.getIsExpanded() && /* @__PURE__ */ jsx192(TableRow, { "data-testid": "content-list-table-expanded-row", children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "bg-muted/30 px-4 py-3", children: props.renderExpandedRow(row.original.jsonApiData) }) })
18020
- ] }, row.id))
18021
- ] }, group.groupKey)) : rowModel.rows.map((row) => /* @__PURE__ */ jsxs105(React31.Fragment, { children: [
18022
- /* @__PURE__ */ jsx192(
18023
- TableRow,
18024
- {
18025
- onClick: () => onRowClick?.(row.original.jsonApiData),
18026
- className: `group ${onRowClick ? "hover:bg-muted/50 cursor-pointer" : ""}`,
18027
- children: row.getVisibleCells().map((cell) => {
18028
- const meta = cell.column.columnDef.meta;
18029
- return /* @__PURE__ */ jsx192(TableCell, { className: meta?.className, children: renderCell(cell.column.columnDef.cell, cell.getContext()) }, cell.id);
18030
- })
18031
- }
18032
- ),
18033
- props.renderExpandedRow && row.getIsExpanded() && /* @__PURE__ */ jsx192(TableRow, { "data-testid": "content-list-table-expanded-row", children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "bg-muted/30 px-4 py-3", children: props.renderExpandedRow(row.original.jsonApiData) }) })
18034
- ] }, row.id)) : /* @__PURE__ */ jsx192(TableRow, { children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "h-24 text-center", children: props.emptyState ?? (t.has("ui.empty_states.no_results") ? t("ui.empty_states.no_results") : "No results.") }) }) }),
18035
- showFooter && /* @__PURE__ */ jsx192(TableFooter, { children: /* @__PURE__ */ jsx192(TableRow, { children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "bg-card py-4 text-end", children: /* @__PURE__ */ jsxs105("div", { className: "flex items-center justify-end space-x-2", children: [
18036
- /* @__PURE__ */ jsx192(
18037
- Button,
18038
- {
18039
- variant: "outline",
18040
- size: "sm",
18041
- onClick: (e) => {
18042
- e.preventDefault();
18043
- setPendingDirection("prev");
18044
- data.previous?.(true);
18045
- },
18046
- disabled: !data.previous || pendingDirection !== null,
18047
- children: pendingDirection === "prev" ? /* @__PURE__ */ jsx192(Loader23, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx192(ChevronLeft, { className: "h-4 w-4 rtl:rotate-180" })
18048
- }
18049
- ),
18050
- data.pageInfo && /* @__PURE__ */ jsx192("span", { className: "text-muted-foreground text-xs", children: `${data.pageInfo.startItem}-${data.pageInfo.endItem}${data.total ? ` of ${data.total}` : ""}` }),
18051
- /* @__PURE__ */ jsx192(
18052
- Button,
18053
- {
18054
- variant: "outline",
18055
- size: "sm",
18056
- onClick: (e) => {
18057
- e.preventDefault();
18058
- setPendingDirection("next");
18059
- data.next?.(true);
18060
- },
18061
- disabled: !data.next || pendingDirection !== null,
18062
- children: pendingDirection === "next" ? /* @__PURE__ */ jsx192(Loader23, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx192(ChevronRight, { className: "h-4 w-4 rtl:rotate-180" })
18063
- }
18064
- )
18065
- ] }) }) }) })
18066
- ] }) }) });
18229
+ ] }, row.id)) : /* @__PURE__ */ jsx192(TableRow, { children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "h-24 text-center", children: props.emptyState ?? (t.has("ui.empty_states.no_results") ? t("ui.empty_states.no_results") : "No results.") }) }) }),
18230
+ showFooter && /* @__PURE__ */ jsx192(TableFooter, { children: /* @__PURE__ */ jsx192(TableRow, { children: /* @__PURE__ */ jsx192(TableCell, { colSpan: tableColumns.length, className: "bg-card py-4 text-end", children: /* @__PURE__ */ jsxs105("div", { className: "flex items-center justify-end space-x-2", children: [
18231
+ /* @__PURE__ */ jsx192(
18232
+ Button,
18233
+ {
18234
+ variant: "outline",
18235
+ size: "sm",
18236
+ onClick: (e) => {
18237
+ e.preventDefault();
18238
+ setPendingDirection("prev");
18239
+ data.previous?.(true);
18240
+ },
18241
+ disabled: !data.previous || pendingDirection !== null,
18242
+ children: pendingDirection === "prev" ? /* @__PURE__ */ jsx192(Loader23, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx192(ChevronLeft, { className: "h-4 w-4 rtl:rotate-180" })
18243
+ }
18244
+ ),
18245
+ data.pageInfo && /* @__PURE__ */ jsx192("span", { className: "text-muted-foreground text-xs", children: `${data.pageInfo.startItem}-${data.pageInfo.endItem}${data.total ? ` of ${data.total}` : ""}` }),
18246
+ /* @__PURE__ */ jsx192(
18247
+ Button,
18248
+ {
18249
+ variant: "outline",
18250
+ size: "sm",
18251
+ onClick: (e) => {
18252
+ e.preventDefault();
18253
+ setPendingDirection("next");
18254
+ data.next?.(true);
18255
+ },
18256
+ disabled: !data.next || pendingDirection !== null,
18257
+ children: pendingDirection === "next" ? /* @__PURE__ */ jsx192(Loader23, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx192(ChevronRight, { className: "h-4 w-4 rtl:rotate-180" })
18258
+ }
18259
+ )
18260
+ ] }) }) }) })
18261
+ ] })
18262
+ ] }) });
18067
18263
  }, "ContentListTable"));
18068
18264
 
18069
18265
  // src/components/grids/ContentListGrid.tsx
18070
18266
  import { useEffect as useEffect52, useRef as useRef32 } from "react";
18071
- import { Fragment as Fragment29, jsx as jsx193, jsxs as jsxs106 } from "react/jsx-runtime";
18267
+ import { Fragment as Fragment31, jsx as jsx193, jsxs as jsxs106 } from "react/jsx-runtime";
18072
18268
  var DEFAULT_GRID_CLASSES = "grid grid-cols-2 gap-4 p-4 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5";
18073
18269
  function ContentListGrid(props) {
18074
18270
  const { data, ItemComponent, allowSearch, fullWidth, gridClassName } = props;
@@ -18099,7 +18295,7 @@ function ContentListGrid(props) {
18099
18295
  ]
18100
18296
  }
18101
18297
  ) }),
18102
- (props.functions || props.filters || allowSearch) && /* @__PURE__ */ jsxs106(Fragment29, { children: [
18298
+ (props.functions || props.filters || allowSearch) && /* @__PURE__ */ jsxs106(Fragment31, { children: [
18103
18299
  props.functions,
18104
18300
  props.filters,
18105
18301
  allowSearch && /* @__PURE__ */ jsx193(ContentTableSearch, { data })
@@ -18332,14 +18528,14 @@ import { z as z5 } from "zod";
18332
18528
 
18333
18529
  // src/features/auth/components/GdprConsentSection.tsx
18334
18530
  import { useTranslations as useTranslations64 } from "next-intl";
18335
- import { Fragment as Fragment30, jsx as jsx200, jsxs as jsxs111 } from "react/jsx-runtime";
18531
+ import { Fragment as Fragment32, jsx as jsx200, jsxs as jsxs111 } from "react/jsx-runtime";
18336
18532
  function GdprConsentSection({
18337
18533
  form,
18338
18534
  termsCheckboxId = "termsAccepted",
18339
18535
  marketingCheckboxId = "marketingConsent"
18340
18536
  }) {
18341
18537
  const t = useTranslations64("auth.gdpr");
18342
- const termsLabel = /* @__PURE__ */ jsxs111(Fragment30, { children: [
18538
+ const termsLabel = /* @__PURE__ */ jsxs111(Fragment32, { children: [
18343
18539
  t("terms_prefix"),
18344
18540
  " ",
18345
18541
  /* @__PURE__ */ jsx200(Link, { href: "/terms", target: "_blank", rel: "noopener", children: t("terms_of_service") }),
@@ -18364,7 +18560,7 @@ function GdprConsentSection({
18364
18560
  __name(GdprConsentSection, "GdprConsentSection");
18365
18561
 
18366
18562
  // src/features/auth/components/forms/Register.tsx
18367
- import { Fragment as Fragment31, jsx as jsx201, jsxs as jsxs112 } from "react/jsx-runtime";
18563
+ import { Fragment as Fragment33, jsx as jsx201, jsxs as jsxs112 } from "react/jsx-runtime";
18368
18564
  var REFERRAL_COOKIE_NAME = "referral_code";
18369
18565
  function getReferralCode() {
18370
18566
  if (typeof document === "undefined") return null;
@@ -18482,7 +18678,7 @@ function Register() {
18482
18678
  }
18483
18679
  }, "onSubmit");
18484
18680
  if (registrationMode === "waitlist" && inviteCode && isValidatingInvite) {
18485
- return /* @__PURE__ */ jsxs112(Fragment31, { children: [
18681
+ return /* @__PURE__ */ jsxs112(Fragment33, { children: [
18486
18682
  /* @__PURE__ */ jsx201(CardHeader, { children: /* @__PURE__ */ jsxs112(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
18487
18683
  /* @__PURE__ */ jsx201(Image7, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
18488
18684
  t("waitlist.invite.validating_title")
@@ -18494,7 +18690,7 @@ function Register() {
18494
18690
  ] });
18495
18691
  }
18496
18692
  if (registrationMode === "waitlist" && inviteCode && inviteError) {
18497
- return /* @__PURE__ */ jsxs112(Fragment31, { children: [
18693
+ return /* @__PURE__ */ jsxs112(Fragment33, { children: [
18498
18694
  /* @__PURE__ */ jsx201(CardHeader, { children: /* @__PURE__ */ jsxs112(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
18499
18695
  /* @__PURE__ */ jsx201(Image7, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
18500
18696
  t("waitlist.invite.invalid_title")
@@ -18507,7 +18703,7 @@ function Register() {
18507
18703
  ] });
18508
18704
  }
18509
18705
  if (registrationMode === "waitlist" && !inviteCode) {
18510
- return /* @__PURE__ */ jsxs112(Fragment31, { children: [
18706
+ return /* @__PURE__ */ jsxs112(Fragment33, { children: [
18511
18707
  /* @__PURE__ */ jsx201(CardHeader, { children: /* @__PURE__ */ jsxs112(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
18512
18708
  /* @__PURE__ */ jsx201(Image7, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
18513
18709
  t("waitlist.invite.registration_title")
@@ -18520,13 +18716,13 @@ function Register() {
18520
18716
  /* @__PURE__ */ jsx201(CardFooter, { className: "flex w-full flex-row justify-between", children: /* @__PURE__ */ jsx201(Link, { href: "#", className: "flex w-full justify-start", onClick: () => setComponentType(0 /* Login */), children: t("auth.buttons.login") }) })
18521
18717
  ] });
18522
18718
  }
18523
- return /* @__PURE__ */ jsxs112(Fragment31, { children: [
18719
+ return /* @__PURE__ */ jsxs112(Fragment33, { children: [
18524
18720
  /* @__PURE__ */ jsxs112(CardHeader, { children: [
18525
18721
  /* @__PURE__ */ jsxs112(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
18526
18722
  /* @__PURE__ */ jsx201(Image7, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
18527
18723
  t(`auth.buttons.register`)
18528
18724
  ] }),
18529
- /* @__PURE__ */ jsx201(CardDescription, { className: "text-sm", children: showConfirmation ? /* @__PURE__ */ jsx201(Fragment31, { children: " " }) : /* @__PURE__ */ jsx201(Fragment31, { children: t(`auth.register_description`) }) })
18725
+ /* @__PURE__ */ jsx201(CardDescription, { className: "text-sm", children: showConfirmation ? /* @__PURE__ */ jsx201(Fragment33, { children: " " }) : /* @__PURE__ */ jsx201(Fragment33, { children: t(`auth.register_description`) }) })
18530
18726
  ] }),
18531
18727
  showConfirmation ? /* @__PURE__ */ jsx201(CardContent, { children: /* @__PURE__ */ jsx201(CardDescription, { className: "text-center text-xl", children: t("auth.register_confirmation") }) }) : /* @__PURE__ */ jsx201(Form, { ...form, children: /* @__PURE__ */ jsxs112("form", { onSubmit: form.handleSubmit(onSubmit), children: [
18532
18728
  /* @__PURE__ */ jsxs112(CardContent, { children: [
@@ -18730,7 +18926,7 @@ function InnerAuthContainer() {
18730
18926
  const { activeComponent } = useAuthContext();
18731
18927
  if (activeComponent === null)
18732
18928
  return /* @__PURE__ */ jsx203("div", { className: "max-w-sm", children: /* @__PURE__ */ jsx203(Image8, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, className: "animate-spin-slow", priority: true }) });
18733
- return /* @__PURE__ */ jsx203(Card, { className: "w-full max-w-md", children: activeComponent });
18929
+ return /* @__PURE__ */ jsx203(Card, { className: "w-full max-w-md max-md:[&_[data-slot=button]:not([data-size])]:h-10 max-md:[&_[data-slot=input-group-control]]:h-full max-md:[&_[data-slot=input-group]]:h-10 max-md:[&_[data-slot=input]]:h-10", children: activeComponent });
18734
18930
  }
18735
18931
  __name(InnerAuthContainer, "InnerAuthContainer");
18736
18932
 
@@ -18959,7 +19155,7 @@ __name(DisableTwoFactorDialog, "DisableTwoFactorDialog");
18959
19155
  import { Edit, Key, Trash2 } from "lucide-react";
18960
19156
  import { useTranslations as useTranslations68 } from "next-intl";
18961
19157
  import { useState as useState68 } from "react";
18962
- import { Fragment as Fragment32, jsx as jsx207, jsxs as jsxs116 } from "react/jsx-runtime";
19158
+ import { Fragment as Fragment34, jsx as jsx207, jsxs as jsxs116 } from "react/jsx-runtime";
18963
19159
  function PasskeyList({ passkeys, onRefresh }) {
18964
19160
  const t = useTranslations68();
18965
19161
  const [renameDialogOpen, setRenameDialogOpen] = useState68(false);
@@ -19015,7 +19211,7 @@ function PasskeyList({ passkeys, onRefresh }) {
19015
19211
  if (passkeys.length === 0) {
19016
19212
  return /* @__PURE__ */ jsx207("p", { className: "text-sm text-muted-foreground text-center py-4", children: t("auth.two_factor.no_passkeys") });
19017
19213
  }
19018
- return /* @__PURE__ */ jsxs116(Fragment32, { children: [
19214
+ return /* @__PURE__ */ jsxs116(Fragment34, { children: [
19019
19215
  /* @__PURE__ */ jsx207("div", { className: "space-y-2", children: passkeys.map((passkey) => /* @__PURE__ */ jsxs116("div", { className: "flex items-center justify-between p-3 border rounded-lg", children: [
19020
19216
  /* @__PURE__ */ jsxs116("div", { className: "flex items-center gap-3", children: [
19021
19217
  /* @__PURE__ */ jsx207(Key, { className: "h-5 w-5 text-muted-foreground" }),
@@ -19332,7 +19528,7 @@ function TotpSetupDialog({ onSuccess, trigger }) {
19332
19528
  __name(TotpSetupDialog, "TotpSetupDialog");
19333
19529
 
19334
19530
  // src/features/auth/components/two-factor/TwoFactorSettings.tsx
19335
- import { Fragment as Fragment33, jsx as jsx211, jsxs as jsxs120 } from "react/jsx-runtime";
19531
+ import { Fragment as Fragment35, jsx as jsx211, jsxs as jsxs120 } from "react/jsx-runtime";
19336
19532
  function TwoFactorSettings() {
19337
19533
  const t = useTranslations72();
19338
19534
  const [status, setStatus] = useState72(null);
@@ -19419,7 +19615,7 @@ function TwoFactorSettings() {
19419
19615
  ] }),
19420
19616
  /* @__PURE__ */ jsx211(BackupCodesDialog, { remainingCodes: status?.backupCodesCount ?? 0, onRegenerate: handleRefresh })
19421
19617
  ] }) }),
19422
- !isEnabled && (authenticators.length > 0 || passkeys.length > 0) && /* @__PURE__ */ jsxs120(Fragment33, { children: [
19618
+ !isEnabled && (authenticators.length > 0 || passkeys.length > 0) && /* @__PURE__ */ jsxs120(Fragment35, { children: [
19423
19619
  /* @__PURE__ */ jsx211(Separator, {}),
19424
19620
  /* @__PURE__ */ jsxs120("div", { className: "flex items-center justify-between", children: [
19425
19621
  /* @__PURE__ */ jsxs120("div", { children: [
@@ -19429,7 +19625,7 @@ function TwoFactorSettings() {
19429
19625
  /* @__PURE__ */ jsx211(Button, { onClick: handleEnable2FA, disabled: isEnabling, children: isEnabling ? t("common.loading") : t("auth.two_factor.enable_button") })
19430
19626
  ] })
19431
19627
  ] }),
19432
- isEnabled && /* @__PURE__ */ jsxs120(Fragment33, { children: [
19628
+ isEnabled && /* @__PURE__ */ jsxs120(Fragment35, { children: [
19433
19629
  /* @__PURE__ */ jsx211(Separator, {}),
19434
19630
  /* @__PURE__ */ jsxs120("div", { className: "flex items-center justify-between", children: [
19435
19631
  /* @__PURE__ */ jsxs120("div", { children: [
@@ -19511,11 +19707,11 @@ function GoogleSignInButton({ referralCode }) {
19511
19707
  __name(GoogleSignInButton, "GoogleSignInButton");
19512
19708
 
19513
19709
  // src/features/auth/components/details/LandingComponent.tsx
19514
- import { Fragment as Fragment34, jsx as jsx214, jsxs as jsxs122 } from "react/jsx-runtime";
19710
+ import { Fragment as Fragment36, jsx as jsx214, jsxs as jsxs122 } from "react/jsx-runtime";
19515
19711
  function LandingComponent() {
19516
19712
  const t = useTranslations73();
19517
19713
  const { setComponentType } = useAuthContext();
19518
- return /* @__PURE__ */ jsxs122(Fragment34, { children: [
19714
+ return /* @__PURE__ */ jsxs122(Fragment36, { children: [
19519
19715
  /* @__PURE__ */ jsxs122(CardHeader, { className: "mb-4", "data-testid": "page-pre-login-container", children: [
19520
19716
  /* @__PURE__ */ jsxs122(CardTitle, { className: "text-primary flex flex-col items-center gap-y-8 pb-8 text-4xl", children: [
19521
19717
  /* @__PURE__ */ jsx214(Image9, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
@@ -19524,7 +19720,7 @@ function LandingComponent() {
19524
19720
  /* @__PURE__ */ jsx214(CardDescription, { className: "flex w-full justify-center text-center text-sm", children: t(`common.description`) })
19525
19721
  ] }),
19526
19722
  /* @__PURE__ */ jsxs122(CardFooter, { className: "mt-4 flex w-full flex-col justify-between gap-y-4", children: [
19527
- isInternalAuthEnabled() && /* @__PURE__ */ jsxs122(Fragment34, { children: [
19723
+ isInternalAuthEnabled() && /* @__PURE__ */ jsxs122(Fragment36, { children: [
19528
19724
  isRegistrationAllowed() && /* @__PURE__ */ jsx214(
19529
19725
  Link,
19530
19726
  {
@@ -19550,7 +19746,7 @@ import Image10 from "next/image";
19550
19746
  import { useEffect as useEffect56, useState as useState73 } from "react";
19551
19747
  import { useForm as useForm6 } from "react-hook-form";
19552
19748
  import { z as z6 } from "zod";
19553
- import { Fragment as Fragment35, jsx as jsx215, jsxs as jsxs123 } from "react/jsx-runtime";
19749
+ import { Fragment as Fragment37, jsx as jsx215, jsxs as jsxs123 } from "react/jsx-runtime";
19554
19750
  function AcceptInvitation() {
19555
19751
  const { setComponentType, params, setParams } = useAuthContext();
19556
19752
  const [showConfirmation, setShowConfirmation] = useState73(false);
@@ -19613,13 +19809,13 @@ function AcceptInvitation() {
19613
19809
  errorToast({ title: t(`common.errors.error`), error });
19614
19810
  }
19615
19811
  }, "onSubmit");
19616
- return /* @__PURE__ */ jsxs123(Fragment35, { children: [
19812
+ return /* @__PURE__ */ jsxs123(Fragment37, { children: [
19617
19813
  /* @__PURE__ */ jsxs123(CardHeader, { children: [
19618
19814
  /* @__PURE__ */ jsxs123(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
19619
19815
  /* @__PURE__ */ jsx215(Image10, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
19620
19816
  t("auth.accept_invitation")
19621
19817
  ] }),
19622
- /* @__PURE__ */ jsx215(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx215(Fragment35, { children: t("auth.errors.activating_account") }) : /* @__PURE__ */ jsx215(Fragment35, { children: t("auth.select_password") }) })
19818
+ /* @__PURE__ */ jsx215(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx215(Fragment37, { children: t("auth.errors.activating_account") }) : /* @__PURE__ */ jsx215(Fragment37, { children: t("auth.select_password") }) })
19623
19819
  ] }),
19624
19820
  /* @__PURE__ */ jsx215(CardContent, { children: showConfirmation ? /* @__PURE__ */ jsx215(CardDescription, { className: "text-center text-xl", children: t("auth.activation_description") }) : error ? /* @__PURE__ */ jsx215(CardDescription, { className: "text-center text-xl", children: error }) : /* @__PURE__ */ jsx215(Form, { ...form, children: /* @__PURE__ */ jsxs123("form", { onSubmit: form.handleSubmit(onSubmit), children: [
19625
19821
  /* @__PURE__ */ jsx215(
@@ -19650,7 +19846,7 @@ __name(AcceptInvitation, "AcceptInvitation");
19650
19846
  import { useTranslations as useTranslations75 } from "next-intl";
19651
19847
  import Image11 from "next/image";
19652
19848
  import { useEffect as useEffect57, useState as useState74 } from "react";
19653
- import { Fragment as Fragment36, jsx as jsx216, jsxs as jsxs124 } from "react/jsx-runtime";
19849
+ import { Fragment as Fragment38, jsx as jsx216, jsxs as jsxs124 } from "react/jsx-runtime";
19654
19850
  function ActivateAccount() {
19655
19851
  const { setComponentType, params, setParams } = useAuthContext();
19656
19852
  const [showConfirmation, setShowConfirmation] = useState74(false);
@@ -19683,15 +19879,15 @@ function ActivateAccount() {
19683
19879
  setError(t(`auth.errors.invalid_invitation_code`));
19684
19880
  }
19685
19881
  }, []);
19686
- return /* @__PURE__ */ jsxs124(Fragment36, { children: [
19882
+ return /* @__PURE__ */ jsxs124(Fragment38, { children: [
19687
19883
  /* @__PURE__ */ jsxs124(CardHeader, { children: [
19688
19884
  /* @__PURE__ */ jsxs124(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
19689
19885
  /* @__PURE__ */ jsx216(Image11, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
19690
19886
  t("auth.accept_invitation")
19691
19887
  ] }),
19692
- /* @__PURE__ */ jsx216(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx216(Fragment36, { children: t("auth.errors.activating_account") }) : /* @__PURE__ */ jsx216(Fragment36, { children: " " }) })
19888
+ /* @__PURE__ */ jsx216(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx216(Fragment38, { children: t("auth.errors.activating_account") }) : /* @__PURE__ */ jsx216(Fragment38, { children: " " }) })
19693
19889
  ] }),
19694
- /* @__PURE__ */ jsx216(CardContent, { children: /* @__PURE__ */ jsx216(CardDescription, { className: "text-center text-xl", children: showConfirmation ? /* @__PURE__ */ jsx216(Fragment36, { children: t("auth.activation_description") }) : error ? /* @__PURE__ */ jsx216(Fragment36, { children: error }) : /* @__PURE__ */ jsx216(Fragment36, { children: t("auth.activation_wait") }) }) })
19890
+ /* @__PURE__ */ jsx216(CardContent, { children: /* @__PURE__ */ jsx216(CardDescription, { className: "text-center text-xl", children: showConfirmation ? /* @__PURE__ */ jsx216(Fragment38, { children: t("auth.activation_description") }) : error ? /* @__PURE__ */ jsx216(Fragment38, { children: error }) : /* @__PURE__ */ jsx216(Fragment38, { children: t("auth.activation_wait") }) }) })
19695
19891
  ] });
19696
19892
  }
19697
19893
  __name(ActivateAccount, "ActivateAccount");
@@ -19728,7 +19924,7 @@ import Image12 from "next/image";
19728
19924
  import { useState as useState76 } from "react";
19729
19925
  import { useForm as useForm7 } from "react-hook-form";
19730
19926
  import { z as z7 } from "zod";
19731
- import { Fragment as Fragment37, jsx as jsx217, jsxs as jsxs125 } from "react/jsx-runtime";
19927
+ import { Fragment as Fragment39, jsx as jsx217, jsxs as jsxs125 } from "react/jsx-runtime";
19732
19928
  function ForgotPassword() {
19733
19929
  const t = useTranslations76();
19734
19930
  const { setComponentType } = useAuthContext();
@@ -19755,13 +19951,13 @@ function ForgotPassword() {
19755
19951
  errorToast({ error: e });
19756
19952
  }
19757
19953
  }, "onSubmit");
19758
- return /* @__PURE__ */ jsxs125(Fragment37, { children: [
19954
+ return /* @__PURE__ */ jsxs125(Fragment39, { children: [
19759
19955
  /* @__PURE__ */ jsxs125(CardHeader, { "data-testid": "page-forgot-password-container", children: [
19760
19956
  /* @__PURE__ */ jsxs125(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
19761
19957
  /* @__PURE__ */ jsx217(Image12, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
19762
19958
  t("auth.buttons.forgot_password")
19763
19959
  ] }),
19764
- /* @__PURE__ */ jsx217(CardDescription, { className: "text-sm", children: showConfirmation ? /* @__PURE__ */ jsx217(Fragment37, { children: " " }) : /* @__PURE__ */ jsx217(Fragment37, { children: t(`auth.add_email_to_reset`) }) })
19960
+ /* @__PURE__ */ jsx217(CardDescription, { className: "text-sm", children: showConfirmation ? /* @__PURE__ */ jsx217(Fragment39, { children: " " }) : /* @__PURE__ */ jsx217(Fragment39, { children: t(`auth.add_email_to_reset`) }) })
19765
19961
  ] }),
19766
19962
  showConfirmation ? /* @__PURE__ */ jsx217(CardContent, { children: /* @__PURE__ */ jsx217(CardDescription, { className: "text-center text-xl", children: t(`auth.reset_confirmation`) }) }) : /* @__PURE__ */ jsx217(Form, { ...form, children: /* @__PURE__ */ jsxs125("form", { onSubmit: form.handleSubmit(onSubmit), children: [
19767
19963
  /* @__PURE__ */ jsxs125(CardContent, { children: [
@@ -19800,7 +19996,7 @@ import { useRouter, useSearchParams as useSearchParams3 } from "next/navigation"
19800
19996
  import { useEffect as useEffect59, useState as useState77 } from "react";
19801
19997
  import { useForm as useForm8 } from "react-hook-form";
19802
19998
  import { z as z8 } from "zod";
19803
- import { Fragment as Fragment38, jsx as jsx218, jsxs as jsxs126 } from "react/jsx-runtime";
19999
+ import { Fragment as Fragment40, jsx as jsx218, jsxs as jsxs126 } from "react/jsx-runtime";
19804
20000
  function Login() {
19805
20001
  const t = useTranslations77();
19806
20002
  const { setUser } = useCurrentUserContext();
@@ -19866,7 +20062,7 @@ function Login() {
19866
20062
  });
19867
20063
  }
19868
20064
  }, "onSubmit");
19869
- return /* @__PURE__ */ jsxs126(Fragment38, { children: [
20065
+ return /* @__PURE__ */ jsxs126(Fragment40, { children: [
19870
20066
  /* @__PURE__ */ jsxs126(CardHeader, { "data-testid": "page-login-container", children: [
19871
20067
  /* @__PURE__ */ jsxs126(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
19872
20068
  /* @__PURE__ */ jsx218(Image13, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
@@ -19875,7 +20071,7 @@ function Login() {
19875
20071
  /* @__PURE__ */ jsx218(CardDescription, { className: "text-sm", children: t(`auth.login_description`) })
19876
20072
  ] }),
19877
20073
  /* @__PURE__ */ jsx218(Form, { ...form, children: /* @__PURE__ */ jsxs126("form", { onSubmit: form.handleSubmit(onSubmit), children: [
19878
- /* @__PURE__ */ jsx218(CardContent, { children: isInternalAuthEnabled() && /* @__PURE__ */ jsxs126(Fragment38, { children: [
20074
+ /* @__PURE__ */ jsx218(CardContent, { children: isInternalAuthEnabled() && /* @__PURE__ */ jsxs126(Fragment40, { children: [
19879
20075
  /* @__PURE__ */ jsx218(
19880
20076
  FormInput,
19881
20077
  {
@@ -19942,7 +20138,7 @@ function clearClientStorage(keys) {
19942
20138
  __name(clearClientStorage, "clearClientStorage");
19943
20139
 
19944
20140
  // src/features/auth/components/forms/Logout.tsx
19945
- import { Fragment as Fragment39, jsx as jsx219 } from "react/jsx-runtime";
20141
+ import { Fragment as Fragment41, jsx as jsx219 } from "react/jsx-runtime";
19946
20142
  function Logout({ storageKeys }) {
19947
20143
  const generateUrl = usePageUrlGenerator();
19948
20144
  useEffect60(() => {
@@ -19953,7 +20149,7 @@ function Logout({ storageKeys }) {
19953
20149
  }, "logOut");
19954
20150
  logOut();
19955
20151
  }, []);
19956
- return /* @__PURE__ */ jsx219(Fragment39, {});
20152
+ return /* @__PURE__ */ jsx219(Fragment41, {});
19957
20153
  }
19958
20154
  __name(Logout, "Logout");
19959
20155
 
@@ -19994,7 +20190,7 @@ import Image14 from "next/image";
19994
20190
  import { useEffect as useEffect62, useState as useState78 } from "react";
19995
20191
  import { useForm as useForm9 } from "react-hook-form";
19996
20192
  import { z as z9 } from "zod";
19997
- import { Fragment as Fragment40, jsx as jsx220, jsxs as jsxs127 } from "react/jsx-runtime";
20193
+ import { Fragment as Fragment42, jsx as jsx220, jsxs as jsxs127 } from "react/jsx-runtime";
19998
20194
  function ResetPassword() {
19999
20195
  const { setComponentType, params, setParams } = useAuthContext();
20000
20196
  const [showConfirmation, setShowConfirmation] = useState78(false);
@@ -20057,13 +20253,13 @@ function ResetPassword() {
20057
20253
  errorToast({ title: t(`common.errors.error`), error });
20058
20254
  }
20059
20255
  }, "onSubmit");
20060
- return /* @__PURE__ */ jsxs127(Fragment40, { children: [
20256
+ return /* @__PURE__ */ jsxs127(Fragment42, { children: [
20061
20257
  /* @__PURE__ */ jsxs127(CardHeader, { children: [
20062
20258
  /* @__PURE__ */ jsxs127(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
20063
20259
  /* @__PURE__ */ jsx220(Image14, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
20064
20260
  t(`auth.password_reset`)
20065
20261
  ] }),
20066
- /* @__PURE__ */ jsx220(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx220(Fragment40, { children: t(`auth.errors.password_reset_error`) }) : /* @__PURE__ */ jsx220(Fragment40, { children: t(`auth.reset_password`) }) })
20262
+ /* @__PURE__ */ jsx220(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx220(Fragment42, { children: t(`auth.errors.password_reset_error`) }) : /* @__PURE__ */ jsx220(Fragment42, { children: t(`auth.reset_password`) }) })
20067
20263
  ] }),
20068
20264
  /* @__PURE__ */ jsx220(CardContent, { children: showConfirmation ? /* @__PURE__ */ jsx220(CardDescription, { className: "text-center text-xl", children: t(`auth.reset_success_description`) }) : error ? /* @__PURE__ */ jsx220(CardDescription, { className: "text-center text-xl", children: error }) : /* @__PURE__ */ jsx220(Form, { ...form, children: /* @__PURE__ */ jsxs127("form", { onSubmit: form.handleSubmit(onSubmit), children: [
20069
20265
  /* @__PURE__ */ jsx220(FormPassword, { form, id: "password", name: "Password" }),
@@ -20123,7 +20319,7 @@ function PasskeyButton({ pendingToken, onSuccess, onError, disabled = false }) {
20123
20319
  __name(PasskeyButton, "PasskeyButton");
20124
20320
 
20125
20321
  // src/features/auth/components/forms/TwoFactorChallenge.tsx
20126
- import { Fragment as Fragment41, jsx as jsx222, jsxs as jsxs128 } from "react/jsx-runtime";
20322
+ import { Fragment as Fragment43, jsx as jsx222, jsxs as jsxs128 } from "react/jsx-runtime";
20127
20323
  function TwoFactorChallenge() {
20128
20324
  const t = useTranslations80();
20129
20325
  const { setUser } = useCurrentUserContext();
@@ -20203,7 +20399,7 @@ function TwoFactorChallenge() {
20203
20399
  const hasTotp = availableMethods.includes("totp");
20204
20400
  const hasPasskey = availableMethods.includes("passkey");
20205
20401
  const hasBackup = availableMethods.includes("backup");
20206
- return /* @__PURE__ */ jsxs128(Fragment41, { children: [
20402
+ return /* @__PURE__ */ jsxs128(Fragment43, { children: [
20207
20403
  /* @__PURE__ */ jsxs128(CardHeader, { "data-testid": "page-2fa-challenge", children: [
20208
20404
  /* @__PURE__ */ jsx222(CardTitle, { className: "text-primary", children: t("auth.two_factor.verification_required") }),
20209
20405
  /* @__PURE__ */ jsx222(CardDescription, { children: t("auth.two_factor.enter_verification_code") })
@@ -20503,12 +20699,12 @@ import { useMemo as useMemo37 } from "react";
20503
20699
  import { TrashIcon } from "lucide-react";
20504
20700
  import { useTranslations as useTranslations83 } from "next-intl";
20505
20701
  import { useState as useState82 } from "react";
20506
- import { Fragment as Fragment42, jsx as jsx225, jsxs as jsxs130 } from "react/jsx-runtime";
20702
+ import { Fragment as Fragment44, jsx as jsx225, jsxs as jsxs130 } from "react/jsx-runtime";
20507
20703
  function AiConnectionDeleter({ connection }) {
20508
20704
  const t = useTranslations83();
20509
20705
  const { refresh } = useAiConnections();
20510
20706
  const [open, setOpen] = useState82(false);
20511
- return /* @__PURE__ */ jsxs130(Fragment42, { children: [
20707
+ return /* @__PURE__ */ jsxs130(Fragment44, { children: [
20512
20708
  /* @__PURE__ */ jsx225(
20513
20709
  Button,
20514
20710
  {
@@ -20788,7 +20984,7 @@ function AiConnectionEditor({
20788
20984
  __name(AiConnectionEditor, "AiConnectionEditor");
20789
20985
 
20790
20986
  // src/features/ai-connection/components/lists/AiConnectionTypeCard.tsx
20791
- import { Fragment as Fragment43, jsx as jsx227, jsxs as jsxs132 } from "react/jsx-runtime";
20987
+ import { Fragment as Fragment45, jsx as jsx227, jsxs as jsxs132 } from "react/jsx-runtime";
20792
20988
  function toInput(connection, overrides) {
20793
20989
  return {
20794
20990
  id: connection.id,
@@ -20911,7 +21107,7 @@ function AiConnectionTypeCard({ connectionType }) {
20911
21107
  children: /* @__PURE__ */ jsx227(ChevronDownIcon10, {})
20912
21108
  }
20913
21109
  ),
20914
- !readOnly && /* @__PURE__ */ jsxs132(Fragment43, { children: [
21110
+ !readOnly && /* @__PURE__ */ jsxs132(Fragment45, { children: [
20915
21111
  /* @__PURE__ */ jsx227(
20916
21112
  AiConnectionEditor,
20917
21113
  {
@@ -21217,7 +21413,7 @@ function HowToCommandViewer({ howTo, onBack, onStartChat }) {
21217
21413
  __name(HowToCommandViewer, "HowToCommandViewer");
21218
21414
 
21219
21415
  // src/features/how-to/components/containers/HowToCommand.tsx
21220
- import { Fragment as Fragment44, jsx as jsx233, jsxs as jsxs136 } from "react/jsx-runtime";
21416
+ import { Fragment as Fragment46, jsx as jsx233, jsxs as jsxs136 } from "react/jsx-runtime";
21221
21417
  function matchPage(pathname, pattern) {
21222
21418
  if (pattern.includes(":")) {
21223
21419
  const pathSegments = pathname.split("/").filter(Boolean);
@@ -21288,7 +21484,7 @@ function HowToCommand({ pathname, contextKeys, extraGroups, onStartChat }) {
21288
21484
  setSelectedHowTo(null);
21289
21485
  if (onStartChat) onStartChat();
21290
21486
  }, "handleStartChat");
21291
- return /* @__PURE__ */ jsxs136(Fragment44, { children: [
21487
+ return /* @__PURE__ */ jsxs136(Fragment46, { children: [
21292
21488
  /* @__PURE__ */ jsxs136(
21293
21489
  SidebarMenuButton,
21294
21490
  {
@@ -21438,7 +21634,7 @@ import { useTranslations as useTranslations95 } from "next-intl";
21438
21634
  // src/features/how-to/hooks/useHowToTableStructure.tsx
21439
21635
  import { useTranslations as useTranslations93 } from "next-intl";
21440
21636
  import { useMemo as useMemo41 } from "react";
21441
- import { Fragment as Fragment45, jsx as jsx237 } from "react/jsx-runtime";
21637
+ import { Fragment as Fragment47, jsx as jsx237 } from "react/jsx-runtime";
21442
21638
  var useHowToTableStructure = /* @__PURE__ */ __name((params) => {
21443
21639
  const t = useTranslations93();
21444
21640
  const generateUrl = usePageUrlGenerator();
@@ -21475,7 +21671,7 @@ var useHowToTableStructure = /* @__PURE__ */ __name((params) => {
21475
21671
  id: "description",
21476
21672
  accessorKey: "description",
21477
21673
  header: t(`howto.fields.description.label`),
21478
- cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx237(Fragment45, { children: row.getValue("description") }), "cell"),
21674
+ cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx237(Fragment47, { children: row.getValue("description") }), "cell"),
21479
21675
  enableSorting: false,
21480
21676
  enableHiding: false
21481
21677
  }),
@@ -21483,7 +21679,7 @@ var useHowToTableStructure = /* @__PURE__ */ __name((params) => {
21483
21679
  id: "pages",
21484
21680
  accessorKey: "pages",
21485
21681
  header: t(`howto.fields.pages.label`),
21486
- cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx237(Fragment45, { children: row.getValue("pages") }), "cell"),
21682
+ cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx237(Fragment47, { children: row.getValue("pages") }), "cell"),
21487
21683
  enableSorting: false,
21488
21684
  enableHiding: false
21489
21685
  }),
@@ -21569,7 +21765,7 @@ __name(HowToListContainer, "HowToListContainer");
21569
21765
  import { CircleX as CircleX3, RefreshCwIcon as RefreshCwIcon4, SearchIcon as SearchIcon7, XIcon as XIcon11 } from "lucide-react";
21570
21766
  import { useTranslations as useTranslations96 } from "next-intl";
21571
21767
  import { useCallback as useCallback41, useEffect as useEffect67, useRef as useRef36, useState as useState86 } from "react";
21572
- import { Fragment as Fragment46, jsx as jsx241, jsxs as jsxs138 } from "react/jsx-runtime";
21768
+ import { Fragment as Fragment48, jsx as jsx241, jsxs as jsxs138 } from "react/jsx-runtime";
21573
21769
  function HowToSelector({
21574
21770
  id,
21575
21771
  form,
@@ -21654,7 +21850,7 @@ function HowToSelector({
21654
21850
  search("");
21655
21851
  }
21656
21852
  }
21657
- ) : /* @__PURE__ */ jsx241(Fragment46, {})
21853
+ ) : /* @__PURE__ */ jsx241(Fragment48, {})
21658
21854
  ] }),
21659
21855
  /* @__PURE__ */ jsx241(CommandList, { children: data.data && data.data.length > 0 && data.data.map((howTo) => /* @__PURE__ */ jsx241(
21660
21856
  CommandItem,
@@ -21788,7 +21984,7 @@ function AssistantComposer({
21788
21984
  textarea,
21789
21985
  sendButton
21790
21986
  ] }),
21791
- /* @__PURE__ */ jsx243("div", { className: "text-muted-foreground text-end text-xs", children: t("features.assistant.keyboard_hint") })
21987
+ /* @__PURE__ */ jsx243("div", { className: "text-muted-foreground text-end text-xs max-md:hidden", children: t("features.assistant.keyboard_hint") })
21792
21988
  ] });
21793
21989
  }
21794
21990
  __name(AssistantComposer, "AssistantComposer");
@@ -21866,7 +22062,7 @@ function ReferencesTab({ references }) {
21866
22062
  __name(ReferencesTab, "ReferencesTab");
21867
22063
 
21868
22064
  // src/features/assistant-message/components/parts/tabs/CitationsTab.tsx
21869
- import { Fragment as Fragment47, useState as useState88 } from "react";
22065
+ import { Fragment as Fragment49, useState as useState88 } from "react";
21870
22066
  import { useTranslations as useTranslations101 } from "next-intl";
21871
22067
  import { ChevronDown as ChevronDown3, HelpCircle } from "lucide-react";
21872
22068
  import ReactMarkdown2 from "react-markdown";
@@ -21906,6 +22102,7 @@ import { jsx as jsx246, jsxs as jsxs142 } from "react/jsx-runtime";
21906
22102
  function CitationsTab({ citations, sources }) {
21907
22103
  const t = useTranslations101();
21908
22104
  const entityLabel = useEntityLabel();
22105
+ const isMobile = useIsMobile();
21909
22106
  const [expanded, setExpanded] = useState88(/* @__PURE__ */ new Set());
21910
22107
  if (citations.length === 0) return null;
21911
22108
  const sorted = [...citations].sort((a, b) => (b.relevance ?? 0) - (a.relevance ?? 0));
@@ -21920,7 +22117,7 @@ function CitationsTab({ citations, sources }) {
21920
22117
  return /* @__PURE__ */ jsxs142(Table, { className: "table-fixed", children: [
21921
22118
  /* @__PURE__ */ jsx246(TableHeader, { children: /* @__PURE__ */ jsxs142(TableRow, { children: [
21922
22119
  /* @__PURE__ */ jsx246(TableHead, { children: t("features.assistant.message.sources.source") }),
21923
- /* @__PURE__ */ jsx246(TableHead, { className: "w-28 text-center", children: t("features.assistant.message.sources.relevance") })
22120
+ /* @__PURE__ */ jsx246(TableHead, { className: "w-28 text-center max-md:w-20", children: t("features.assistant.message.sources.relevance") })
21924
22121
  ] }) }),
21925
22122
  /* @__PURE__ */ jsx246(TableBody, { children: sorted.map((chunk) => {
21926
22123
  const isOpen = expanded.has(chunk.id);
@@ -21928,7 +22125,7 @@ function CitationsTab({ citations, sources }) {
21928
22125
  const typeLabel = chunk.nodeType ? entityLabel(chunk.nodeType) : t("features.assistant.message.sources.source");
21929
22126
  const fallbackName = chunk.nodeId ? `${typeLabel} ${chunk.nodeId.slice(0, 8)}` : typeLabel;
21930
22127
  const sourceName = resolved?.name ?? fallbackName;
21931
- return /* @__PURE__ */ jsxs142(Fragment47, { children: [
22128
+ return /* @__PURE__ */ jsxs142(Fragment49, { children: [
21932
22129
  /* @__PURE__ */ jsxs142(TableRow, { children: [
21933
22130
  /* @__PURE__ */ jsx246(TableCell, { children: /* @__PURE__ */ jsxs142(
21934
22131
  "div",
@@ -21945,16 +22142,33 @@ function CitationsTab({ citations, sources }) {
21945
22142
  "aria-expanded": isOpen,
21946
22143
  className: "flex w-full cursor-pointer items-center justify-start gap-x-2",
21947
22144
  children: [
21948
- /* @__PURE__ */ jsx246(ChevronDown3, { className: cn("h-4 w-4 transition-transform", !isOpen && "-rotate-90") }),
21949
- /* @__PURE__ */ jsx246("span", { className: "font-semibold", children: sourceName }),
21950
- chunk.reason && /* @__PURE__ */ jsxs142(Tooltip2, { children: [
22145
+ /* @__PURE__ */ jsx246(
22146
+ ChevronDown3,
22147
+ {
22148
+ className: cn("h-4 w-4 transition-transform max-md:shrink-0", !isOpen && "-rotate-90")
22149
+ }
22150
+ ),
22151
+ /* @__PURE__ */ jsx246("span", { className: "font-semibold max-md:min-w-0 max-md:truncate", children: sourceName }),
22152
+ chunk.reason && isMobile && /* @__PURE__ */ jsxs142(Popover, { children: [
22153
+ /* @__PURE__ */ jsx246(
22154
+ PopoverTrigger,
22155
+ {
22156
+ "aria-label": chunk.reason,
22157
+ onClick: (e) => e.stopPropagation(),
22158
+ className: "text-muted-foreground -m-2 inline-flex shrink-0 p-2",
22159
+ children: /* @__PURE__ */ jsx246(HelpCircle, { className: "h-3.5 w-3.5" })
22160
+ }
22161
+ ),
22162
+ /* @__PURE__ */ jsx246(PopoverContent, { className: "max-w-64 text-xs", children: chunk.reason })
22163
+ ] }),
22164
+ chunk.reason && !isMobile && /* @__PURE__ */ jsxs142(Tooltip2, { children: [
21951
22165
  /* @__PURE__ */ jsx246(TooltipTrigger, { className: "text-muted-foreground inline-flex", children: /* @__PURE__ */ jsx246(HelpCircle, { className: "h-3.5 w-3.5" }) }),
21952
22166
  /* @__PURE__ */ jsx246(TooltipContent, { className: "max-w-64 text-xs", children: chunk.reason })
21953
22167
  ] })
21954
22168
  ]
21955
22169
  }
21956
22170
  ) }),
21957
- /* @__PURE__ */ jsx246(TableCell, { className: "text-center", children: /* @__PURE__ */ jsx246(RelevanceMeter, { value: chunk.relevance ?? 0 }) })
22171
+ /* @__PURE__ */ jsx246(TableCell, { className: "text-center", children: /* @__PURE__ */ jsx246(RelevanceMeter, { value: chunk.relevance ?? 0, className: "max-md:w-16" }) })
21958
22172
  ] }),
21959
22173
  isOpen && /* @__PURE__ */ jsx246(TableRow, { children: /* @__PURE__ */ jsx246(TableCell, { colSpan: 2, className: "w-full max-w-0 border-t-0 p-4", children: /* @__PURE__ */ jsx246("div", { className: "bg-card w-full min-w-0 rounded border p-4 text-sm break-words whitespace-pre-wrap [overflow-wrap:anywhere] [&_pre]:overflow-x-auto [&_table]:block [&_table]:overflow-x-auto", children: /* @__PURE__ */ jsx246(ReactMarkdown2, { remarkPlugins: [remarkGfm2], children: chunk.content }) }) }) })
21960
22174
  ] }, chunk.id);
@@ -22307,7 +22521,7 @@ function MessageSourcesContainer({ message, isLatestAssistant, onSelectFollowUp
22307
22521
  __name(MessageSourcesContainer, "MessageSourcesContainer");
22308
22522
 
22309
22523
  // src/features/assistant-message/components/MessageItem.tsx
22310
- import { Fragment as Fragment48, jsx as jsx252, jsxs as jsxs146 } from "react/jsx-runtime";
22524
+ import { Fragment as Fragment50, jsx as jsx252, jsxs as jsxs146 } from "react/jsx-runtime";
22311
22525
  var MENTION_HREF = /^mention:\/\/([^/]+)\/(.+)$/;
22312
22526
  function mentionUrlTransform(url) {
22313
22527
  return MENTION_HREF.test(url) ? url : defaultUrlTransform(url);
@@ -22330,14 +22544,14 @@ function MessageItem({
22330
22544
  a: /* @__PURE__ */ __name(({ href, children }) => {
22331
22545
  const match = href ? MENTION_HREF.exec(href) : null;
22332
22546
  if (!match || !renderMention) return /* @__PURE__ */ jsx252("a", { href, children });
22333
- return /* @__PURE__ */ jsx252(Fragment48, { children: renderMention({ type: match[1], id: match[2], alias: String(children ?? "") }) });
22547
+ return /* @__PURE__ */ jsx252(Fragment50, { children: renderMention({ type: match[1], id: match[2], alias: String(children ?? "") }) });
22334
22548
  }, "a")
22335
22549
  }),
22336
22550
  [renderMention]
22337
22551
  );
22338
22552
  if (isUser) {
22339
22553
  return /* @__PURE__ */ jsxs146("div", { className: "flex flex-col items-end gap-1", children: [
22340
- /* @__PURE__ */ jsx252("div", { className: "bg-primary text-primary-foreground max-w-[72%] rounded-2xl rounded-ee-sm px-3.5 py-2 text-sm [&_a]:text-primary-foreground [&_a]:font-semibold [&_p]:m-0", children: /* @__PURE__ */ jsx252(ReactMarkdown3, { remarkPlugins: [remarkGfm3], urlTransform: mentionUrlTransform, components: markdownComponents, children: message.content }) }),
22554
+ /* @__PURE__ */ jsx252("div", { className: "bg-primary text-primary-foreground max-w-[72%] max-md:max-w-[92%] rounded-2xl rounded-ee-sm px-3.5 py-2 text-sm [&_a]:text-primary-foreground [&_a]:font-semibold [&_p]:m-0", children: /* @__PURE__ */ jsx252(ReactMarkdown3, { remarkPlugins: [remarkGfm3], urlTransform: mentionUrlTransform, components: markdownComponents, children: message.content }) }),
22341
22555
  isFailed && /* @__PURE__ */ jsxs146("div", { className: "text-destructive flex items-center gap-2 text-xs", children: [
22342
22556
  /* @__PURE__ */ jsx252(AlertCircle, { className: "h-3.5 w-3.5" }),
22343
22557
  /* @__PURE__ */ jsx252("span", { children: t("features.assistant.send_failed") }),
@@ -22346,7 +22560,7 @@ function MessageItem({
22346
22560
  ] });
22347
22561
  }
22348
22562
  const isApprovalRequest = message.messageType === "approval-request" && !!renderApprovalAction;
22349
- return /* @__PURE__ */ jsxs146("div", { className: "flex min-w-0 max-w-[78%] flex-col gap-1.5", children: [
22563
+ return /* @__PURE__ */ jsxs146("div", { className: "flex min-w-0 max-w-[78%] max-md:max-w-[92%] flex-col gap-1.5", children: [
22350
22564
  /* @__PURE__ */ jsxs146("div", { className: "text-muted-foreground flex items-center gap-2 ps-1 text-xs", children: [
22351
22565
  /* @__PURE__ */ jsx252("span", { className: "flex h-4 w-4 items-center justify-center rounded-full bg-gradient-to-br from-blue-400 to-violet-500 text-white", children: /* @__PURE__ */ jsx252(Sparkles, { className: "h-2.5 w-2.5" }) }),
22352
22566
  /* @__PURE__ */ jsx252("span", { children: t("features.assistant.agent_name") })
@@ -22769,7 +22983,7 @@ function splitByNesting(pages) {
22769
22983
  __name(splitByNesting, "splitByNesting");
22770
22984
 
22771
22985
  // src/features/handbook/components/lists/HandbookContents.tsx
22772
- import { Fragment as Fragment49, jsx as jsx260, jsxs as jsxs152 } from "react/jsx-runtime";
22986
+ import { Fragment as Fragment51, jsx as jsx260, jsxs as jsxs152 } from "react/jsx-runtime";
22773
22987
  function HandbookContents() {
22774
22988
  const t = useTranslations111();
22775
22989
  const [pages, setPages] = useState94([]);
@@ -22808,7 +23022,7 @@ function HandbookContents() {
22808
23022
  return /* @__PURE__ */ jsx260(
22809
23023
  HandbookProvider,
22810
23024
  {
22811
- functions: /* @__PURE__ */ jsxs152(Fragment49, { children: [
23025
+ functions: /* @__PURE__ */ jsxs152(Fragment51, { children: [
22812
23026
  /* @__PURE__ */ jsx260(HandbookAskSheet, {}),
22813
23027
  /* @__PURE__ */ jsx260(HandbookSyncButton, { refresh }),
22814
23028
  /* @__PURE__ */ jsx260(HandbookIndexStatus, { pages })
@@ -23199,7 +23413,7 @@ function groupThreadsByBucket(threads) {
23199
23413
  __name(groupThreadsByBucket, "groupThreadsByBucket");
23200
23414
 
23201
23415
  // src/features/assistant/components/parts/AssistantSidebar.tsx
23202
- import { Fragment as Fragment50, jsx as jsx267, jsxs as jsxs157 } from "react/jsx-runtime";
23416
+ import { Fragment as Fragment52, jsx as jsx267, jsxs as jsxs157 } from "react/jsx-runtime";
23203
23417
  function AssistantSidebar({
23204
23418
  threads,
23205
23419
  activeId,
@@ -23236,7 +23450,7 @@ function AssistantSidebar({
23236
23450
  " ",
23237
23451
  newLabel ?? t("features.assistant.new")
23238
23452
  ] }) }),
23239
- /* @__PURE__ */ jsx267("div", { className: "flex-1 overflow-y-auto p-2", children: threads.length === 0 ? /* @__PURE__ */ jsx267("div", { className: "text-muted-foreground mt-6 text-center text-xs", children: emptyLabel ?? t("features.assistant.empty_sidebar") }) : /* @__PURE__ */ jsxs157(Fragment50, { children: [
23453
+ /* @__PURE__ */ jsx267("div", { className: "flex-1 overflow-y-auto p-2", children: threads.length === 0 ? /* @__PURE__ */ jsx267("div", { className: "text-muted-foreground mt-6 text-center text-xs", children: emptyLabel ?? t("features.assistant.empty_sidebar") }) : /* @__PURE__ */ jsxs157(Fragment52, { children: [
23240
23454
  renderSection(t("features.assistant.bucket_today"), groups.today),
23241
23455
  renderSection(t("features.assistant.bucket_week"), groups.thisWeek),
23242
23456
  renderSection(t("features.assistant.bucket_earlier"), groups.earlier)
@@ -23246,7 +23460,7 @@ function AssistantSidebar({
23246
23460
  __name(AssistantSidebar, "AssistantSidebar");
23247
23461
 
23248
23462
  // src/features/handbook/components/containers/HandbookAskContainer.tsx
23249
- import { Fragment as Fragment51, jsx as jsx268, jsxs as jsxs158 } from "react/jsx-runtime";
23463
+ import { Fragment as Fragment53, jsx as jsx268, jsxs as jsxs158 } from "react/jsx-runtime";
23250
23464
  function HandbookAskContainer({ handbookThreadId } = {}) {
23251
23465
  const t = useTranslations117();
23252
23466
  const { threads, thread, messages, sending, ask, selectThread, startNew } = useHandbookAsk({ handbookThreadId });
@@ -23287,7 +23501,7 @@ function HandbookAskContainer({ handbookThreadId } = {}) {
23287
23501
  detailsIcon: /* @__PURE__ */ jsx268(MessagesSquareIcon2, {}),
23288
23502
  details,
23289
23503
  children: /* @__PURE__ */ jsxs158("div", { className: "flex h-full min-h-0 w-full flex-col overflow-hidden", children: [
23290
- showThread ? /* @__PURE__ */ jsx268(Fragment51, { children: /* @__PURE__ */ jsx268(
23504
+ showThread ? /* @__PURE__ */ jsx268(Fragment53, { children: /* @__PURE__ */ jsx268(
23291
23505
  AssistantThread,
23292
23506
  {
23293
23507
  messages,
@@ -23322,16 +23536,16 @@ import { useTranslations as useTranslations120 } from "next-intl";
23322
23536
  import { useMemo as useMemo52 } from "react";
23323
23537
 
23324
23538
  // src/features/assistant-message/components/EntityMentionLink.tsx
23325
- import { Fragment as Fragment52, jsx as jsx269 } from "react/jsx-runtime";
23539
+ import { Fragment as Fragment54, jsx as jsx269 } from "react/jsx-runtime";
23326
23540
  function EntityMentionLinkView({ type, id, alias }) {
23327
23541
  const generate = usePageUrlGenerator();
23328
23542
  let module;
23329
23543
  try {
23330
23544
  module = ModuleRegistry.findByName(type);
23331
23545
  } catch {
23332
- return /* @__PURE__ */ jsx269(Fragment52, { children: alias });
23546
+ return /* @__PURE__ */ jsx269(Fragment54, { children: alias });
23333
23547
  }
23334
- if (!module?.pageUrl) return /* @__PURE__ */ jsx269(Fragment52, { children: alias });
23548
+ if (!module?.pageUrl) return /* @__PURE__ */ jsx269(Fragment54, { children: alias });
23335
23549
  return /* @__PURE__ */ jsx269(Link, { href: generate({ page: module, id }), children: alias });
23336
23550
  }
23337
23551
  __name(EntityMentionLinkView, "EntityMentionLinkView");
@@ -23443,7 +23657,7 @@ function AssistantThreadHeader({ assistant, onRename, onDelete, renamePlaceholde
23443
23657
  __name(AssistantThreadHeader, "AssistantThreadHeader");
23444
23658
 
23445
23659
  // src/features/assistant/components/containers/AssistantContainer.tsx
23446
- import { Fragment as Fragment53, jsx as jsx272, jsxs as jsxs161 } from "react/jsx-runtime";
23660
+ import { Fragment as Fragment55, jsx as jsx272, jsxs as jsxs161 } from "react/jsx-runtime";
23447
23661
  function AssistantContainer({
23448
23662
  renderApprovalAction,
23449
23663
  renderMention,
@@ -23471,7 +23685,7 @@ function AssistantContainer({
23471
23685
  ),
23472
23686
  [ctx.threads, ctx.assistant?.id, ctx.selectThread, renderThreadBadge]
23473
23687
  );
23474
- const thread = /* @__PURE__ */ jsx272(Fragment53, { children: !showThread ? /* @__PURE__ */ jsx272(
23688
+ const thread = /* @__PURE__ */ jsx272(Fragment55, { children: !showThread ? /* @__PURE__ */ jsx272(
23475
23689
  AssistantEmptyState,
23476
23690
  {
23477
23691
  onSend: ctx.sendMessage,
@@ -23479,7 +23693,7 @@ function AssistantContainer({
23479
23693
  onOperatorModeChange: showOperatorToggle ? ctx.setOperatorMode : void 0,
23480
23694
  composerLeading: renderScopePicker?.()
23481
23695
  }
23482
- ) : /* @__PURE__ */ jsxs161(Fragment53, { children: [
23696
+ ) : /* @__PURE__ */ jsxs161(Fragment55, { children: [
23483
23697
  ctx.assistant ? /* @__PURE__ */ jsx272(
23484
23698
  AssistantThreadHeader,
23485
23699
  {
@@ -23629,13 +23843,13 @@ function AssistantBlockNoteComposer({
23629
23843
  t("features.assistant.send")
23630
23844
  ] })
23631
23845
  ] }),
23632
- /* @__PURE__ */ jsx273("div", { className: "text-muted-foreground text-end text-xs", children: t("features.assistant.keyboard_hint") })
23846
+ /* @__PURE__ */ jsx273("div", { className: "text-muted-foreground text-end text-xs max-md:hidden", children: t("features.assistant.keyboard_hint") })
23633
23847
  ] });
23634
23848
  }
23635
23849
  __name(AssistantBlockNoteComposer, "AssistantBlockNoteComposer");
23636
23850
 
23637
23851
  // src/features/assistant/components/containers/AssistantPageContainer.tsx
23638
- import { Fragment as Fragment54, jsx as jsx274, jsxs as jsxs163 } from "react/jsx-runtime";
23852
+ import { Fragment as Fragment56, jsx as jsx274, jsxs as jsxs163 } from "react/jsx-runtime";
23639
23853
  function AssistantPageContainer({
23640
23854
  renderApprovalAction,
23641
23855
  renderMention,
@@ -23673,7 +23887,7 @@ function AssistantPageContainer({
23673
23887
  ) })
23674
23888
  ),
23675
23889
  children: /* @__PURE__ */ jsxs163("div", { className: "bg-background flex h-full w-full flex-col overflow-hidden rounded-lg border", children: [
23676
- showThread ? /* @__PURE__ */ jsxs163(Fragment54, { children: [
23890
+ showThread ? /* @__PURE__ */ jsxs163(Fragment56, { children: [
23677
23891
  ctx.assistant ? /* @__PURE__ */ jsx274(
23678
23892
  AssistantThreadHeader,
23679
23893
  {
@@ -23720,7 +23934,7 @@ __name(AssistantPageContainer, "AssistantPageContainer");
23720
23934
  // src/features/assistant-action/components/ApprovalActionCard.tsx
23721
23935
  import { ShieldAlert as ShieldAlert2 } from "lucide-react";
23722
23936
  import { useTranslations as useTranslations123 } from "next-intl";
23723
- import { Fragment as Fragment55, useEffect as useEffect75, useMemo as useMemo53, useState as useState100 } from "react";
23937
+ import { Fragment as Fragment57, useEffect as useEffect75, useMemo as useMemo53, useState as useState100 } from "react";
23724
23938
  import { jsx as jsx275, jsxs as jsxs164 } from "react/jsx-runtime";
23725
23939
  var STATUS_VARIANT = {
23726
23940
  pending: "softBlue",
@@ -23968,7 +24182,7 @@ function ApprovalActionCard({ actionId, summary, onResolved, hiddenRelationshipK
23968
24182
  /* @__PURE__ */ jsx275("span", { children: isUpdate ? t("features.assistant.approval.proposal.updateHeading", { entity: entityLabel }) : t("features.assistant.approval.proposal.heading", { entity: entityLabel }) }),
23969
24183
  targetLabel !== "" && /* @__PURE__ */ jsx275("span", { className: "text-foreground tracking-normal normal-case", children: targetLabel })
23970
24184
  ] }),
23971
- /* @__PURE__ */ jsx275("dl", { className: "grid grid-cols-1 gap-x-4 gap-y-1.5 sm:grid-cols-[minmax(0,10rem)_minmax(0,1fr)]", children: rows.map((row) => /* @__PURE__ */ jsxs164(Fragment55, { children: [
24185
+ /* @__PURE__ */ jsx275("dl", { className: "grid grid-cols-1 gap-x-4 gap-y-1.5 sm:grid-cols-[minmax(0,10rem)_minmax(0,1fr)]", children: rows.map((row) => /* @__PURE__ */ jsxs164(Fragment57, { children: [
23972
24186
  /* @__PURE__ */ jsx275("dt", { className: "text-muted-foreground text-xs leading-relaxed break-words sm:text-sm", children: row.label }),
23973
24187
  /* @__PURE__ */ jsx275("dd", { className: "text-foreground text-sm leading-relaxed break-words whitespace-pre-wrap", children: row.value })
23974
24188
  ] }, row.key)) })
@@ -24281,7 +24495,7 @@ __name(NotificationsListContainer, "NotificationsListContainer");
24281
24495
  // src/features/notification/components/modals/NotificationModal.tsx
24282
24496
  import { BellIcon as BellIcon2, ExternalLinkIcon } from "lucide-react";
24283
24497
  import { useTranslations as useTranslations127 } from "next-intl";
24284
- import { Fragment as Fragment56, useCallback as useCallback48, useEffect as useEffect77, useMemo as useMemo55, useRef as useRef40, useState as useState102 } from "react";
24498
+ import { Fragment as Fragment58, useCallback as useCallback48, useEffect as useEffect77, useMemo as useMemo55, useRef as useRef40, useState as useState102 } from "react";
24285
24499
  import { jsx as jsx282, jsxs as jsxs168 } from "react/jsx-runtime";
24286
24500
  function NotificationModalContent({ isOpen, setIsOpen }) {
24287
24501
  const _instanceId = useRef40(Math.random().toString(36).substr(2, 9));
@@ -24470,7 +24684,7 @@ function NotificationModalContent({ isOpen, setIsOpen }) {
24470
24684
  ] }),
24471
24685
  isLoading && /* @__PURE__ */ jsx282("div", { className: "text-muted-foreground px-3 py-2 text-xs", children: t(`common.loading`) }),
24472
24686
  error && /* @__PURE__ */ jsx282("div", { className: "text-destructive px-3 py-2 text-xs", children: error }),
24473
- /* @__PURE__ */ jsx282(ScrollArea, { className: "[&_[data-slot=scroll-area-scrollbar]]:w-2.5 [&_[data-slot=scroll-area-thumb]]:bg-muted-foreground/40 [&>[data-slot=scroll-area-viewport]]:max-h-[min(32rem,calc(var(--available-height,32rem)-3.5rem))]", children: notifications.length > 0 ? /* @__PURE__ */ jsx282("div", { className: "divide-border divide-y", children: notifications.map((notification) => /* @__PURE__ */ jsx282(Fragment56, { children: generateNotification(notification, () => setIsOpen(false)) }, notification.id)) }) : /* @__PURE__ */ jsx282("div", { className: "text-muted-foreground p-6 text-center text-sm", children: t(`notification.empty`) }) })
24687
+ /* @__PURE__ */ jsx282(ScrollArea, { className: "[&_[data-slot=scroll-area-scrollbar]]:w-2.5 [&_[data-slot=scroll-area-thumb]]:bg-muted-foreground/40 [&>[data-slot=scroll-area-viewport]]:max-h-[min(32rem,calc(var(--available-height,32rem)-3.5rem))]", children: notifications.length > 0 ? /* @__PURE__ */ jsx282("div", { className: "divide-border divide-y", children: notifications.map((notification) => /* @__PURE__ */ jsx282(Fragment58, { children: generateNotification(notification, () => setIsOpen(false)) }, notification.id)) }) : /* @__PURE__ */ jsx282("div", { className: "text-muted-foreground p-6 text-center text-sm", children: t(`notification.empty`) }) })
24474
24688
  ] })
24475
24689
  ] });
24476
24690
  }
@@ -24481,10 +24695,10 @@ function NotificationModal(props) {
24481
24695
  __name(NotificationModal, "NotificationModal");
24482
24696
 
24483
24697
  // src/features/notification/components/notifications/PushNotificationProvider.tsx
24484
- import { Fragment as Fragment57, jsx as jsx283 } from "react/jsx-runtime";
24698
+ import { Fragment as Fragment59, jsx as jsx283 } from "react/jsx-runtime";
24485
24699
  function PushNotificationProvider({ children }) {
24486
24700
  usePushNotifications();
24487
- return /* @__PURE__ */ jsx283(Fragment57, { children });
24701
+ return /* @__PURE__ */ jsx283(Fragment59, { children });
24488
24702
  }
24489
24703
  __name(PushNotificationProvider, "PushNotificationProvider");
24490
24704
 
@@ -24804,11 +25018,11 @@ function RoleDetails() {
24804
25018
  __name(RoleDetails, "RoleDetails");
24805
25019
 
24806
25020
  // src/features/role/components/containers/RoleContainer.tsx
24807
- import { Fragment as Fragment58, jsx as jsx287, jsxs as jsxs171 } from "react/jsx-runtime";
25021
+ import { Fragment as Fragment60, jsx as jsx287, jsxs as jsxs171 } from "react/jsx-runtime";
24808
25022
  function RoleContainer() {
24809
25023
  const { role } = useRoleContext();
24810
25024
  if (!role) return null;
24811
- return /* @__PURE__ */ jsxs171(Fragment58, { children: [
25025
+ return /* @__PURE__ */ jsxs171(Fragment60, { children: [
24812
25026
  /* @__PURE__ */ jsx287(RoleDetails, {}),
24813
25027
  /* @__PURE__ */ jsx287(RoleUsersList, { role })
24814
25028
  ] });
@@ -24853,7 +25067,7 @@ __name(FormRoles, "FormRoles");
24853
25067
  // src/features/role/components/forms/RemoveUserFromRole.tsx
24854
25068
  import { useTranslations as useTranslations130 } from "next-intl";
24855
25069
  import { useEffect as useEffect80, useState as useState106 } from "react";
24856
- import { Fragment as Fragment59, jsx as jsx289, jsxs as jsxs173 } from "react/jsx-runtime";
25070
+ import { Fragment as Fragment61, jsx as jsx289, jsxs as jsxs173 } from "react/jsx-runtime";
24857
25071
  function RemoveUserFromRole({ role, user, refresh }) {
24858
25072
  const [open, setOpen] = useState106(false);
24859
25073
  const [canRemove, setCanRemove] = useState106(false);
@@ -24902,7 +25116,7 @@ function RemoveUserFromRole({ role, user, refresh }) {
24902
25116
  /* @__PURE__ */ jsx289(DialogTitle, { children: t(`role.remove_user.title`) }),
24903
25117
  /* @__PURE__ */ jsx289(DialogDescription, { children: canRemove ? t(`role.remove_user.subtitle_allowed`) : t(`role.remove_user.subtitle_not_allowed`) })
24904
25118
  ] }),
24905
- canRemove ? /* @__PURE__ */ jsxs173(Fragment59, { children: [
25119
+ canRemove ? /* @__PURE__ */ jsxs173(Fragment61, { children: [
24906
25120
  t(`role.remove_user.description_allowed`, { role: roleName, user: user.name }),
24907
25121
  /* @__PURE__ */ jsxs173("div", { className: "flex justify-end", children: [
24908
25122
  /* @__PURE__ */ jsx289(Button, { className: "me-2", variant: "outline", type: `button`, onClick: () => setOpen(false), children: t(`ui.buttons.cancel`) }),
@@ -24919,7 +25133,7 @@ function RemoveUserFromRole({ role, user, refresh }) {
24919
25133
  }
24920
25134
  )
24921
25135
  ] })
24922
- ] }) : /* @__PURE__ */ jsx289(Fragment59, { children: t(`role.remove_user.description_not_allowed`, { role: roleName, user: user.name }) })
25136
+ ] }) : /* @__PURE__ */ jsx289(Fragment61, { children: t(`role.remove_user.description_not_allowed`, { role: roleName, user: user.name }) })
24923
25137
  ] })
24924
25138
  ] });
24925
25139
  }
@@ -24929,7 +25143,7 @@ __name(RemoveUserFromRole, "RemoveUserFromRole");
24929
25143
  import { PlusCircle as PlusCircle2 } from "lucide-react";
24930
25144
  import { useTranslations as useTranslations131 } from "next-intl";
24931
25145
  import { useCallback as useCallback50, useEffect as useEffect81, useRef as useRef42, useState as useState107 } from "react";
24932
- import { Fragment as Fragment60, jsx as jsx290, jsxs as jsxs174 } from "react/jsx-runtime";
25146
+ import { Fragment as Fragment62, jsx as jsx290, jsxs as jsxs174 } from "react/jsx-runtime";
24933
25147
  function UserRoleAdd({ user, refresh }) {
24934
25148
  const [open, setOpen] = useState107(false);
24935
25149
  const inputRef = useRef42(null);
@@ -24976,7 +25190,7 @@ function UserRoleAdd({ user, refresh }) {
24976
25190
  useEffect81(() => {
24977
25191
  if (open) searchRoles("");
24978
25192
  }, [open]);
24979
- return /* @__PURE__ */ jsxs174(Fragment60, { children: [
25193
+ return /* @__PURE__ */ jsxs174(Fragment62, { children: [
24980
25194
  /* @__PURE__ */ jsxs174(Button, { size: "sm", onClick: () => setOpen(true), children: [
24981
25195
  /* @__PURE__ */ jsx290(PlusCircle2, { className: "me-3 h-3.5 w-3.5" }),
24982
25196
  t(`common.association.label`, {
@@ -25582,7 +25796,7 @@ __name(OAuthClientForm, "OAuthClientForm");
25582
25796
  import { useState as useState110, useCallback as useCallback55 } from "react";
25583
25797
  import { format as format2 } from "date-fns";
25584
25798
  import { Copy as Copy4, Check as Check2, RefreshCw as RefreshCw3, Pencil as Pencil2, Trash2 as Trash25, ExternalLink } from "lucide-react";
25585
- import { Fragment as Fragment61, jsx as jsx299, jsxs as jsxs181 } from "react/jsx-runtime";
25799
+ import { Fragment as Fragment63, jsx as jsx299, jsxs as jsxs181 } from "react/jsx-runtime";
25586
25800
  function OAuthClientDetail({
25587
25801
  client,
25588
25802
  isLoading = false,
@@ -25625,7 +25839,7 @@ function OAuthClientDetail({
25625
25839
  }
25626
25840
  }, [onRegenerateSecret]);
25627
25841
  const createdDate = client.createdAt ? format2(new Date(client.createdAt), "MMMM d, yyyy") : "Unknown";
25628
- return /* @__PURE__ */ jsxs181(Fragment61, { children: [
25842
+ return /* @__PURE__ */ jsxs181(Fragment63, { children: [
25629
25843
  /* @__PURE__ */ jsxs181(Card, { children: [
25630
25844
  /* @__PURE__ */ jsx299(CardHeader, { children: /* @__PURE__ */ jsxs181("div", { className: "flex items-start justify-between", children: [
25631
25845
  /* @__PURE__ */ jsxs181("div", { children: [
@@ -25840,7 +26054,7 @@ function OAuthCompanySelector({ companies, value, onChange }) {
25840
26054
  __name(OAuthCompanySelector, "OAuthCompanySelector");
25841
26055
 
25842
26056
  // src/features/oauth/components/consent/OAuthConsentScreen.tsx
25843
- import { Fragment as Fragment62, jsx as jsx304, jsxs as jsxs186 } from "react/jsx-runtime";
26057
+ import { Fragment as Fragment64, jsx as jsx304, jsxs as jsxs186 } from "react/jsx-runtime";
25844
26058
  function OAuthConsentScreen({
25845
26059
  params,
25846
26060
  logoUrl,
@@ -25874,7 +26088,7 @@ function OAuthConsentScreen({
25874
26088
  /* @__PURE__ */ jsx304(Separator, {}),
25875
26089
  /* @__PURE__ */ jsx304(OAuthScopeList, { scopes }),
25876
26090
  /* @__PURE__ */ jsx304(Separator, {}),
25877
- companies.length > 1 && /* @__PURE__ */ jsxs186(Fragment62, { children: [
26091
+ companies.length > 1 && /* @__PURE__ */ jsxs186(Fragment64, { children: [
25878
26092
  /* @__PURE__ */ jsx304(OAuthCompanySelector, { companies, value: companyId, onChange: setCompanyId }),
25879
26093
  /* @__PURE__ */ jsx304(Separator, {})
25880
26094
  ] }),
@@ -26003,7 +26217,7 @@ function WaitlistQuestionnaireRenderer({
26003
26217
  __name(WaitlistQuestionnaireRenderer, "WaitlistQuestionnaireRenderer");
26004
26218
 
26005
26219
  // src/features/waitlist/components/forms/WaitlistForm.tsx
26006
- import { Fragment as Fragment63, jsx as jsx306, jsxs as jsxs188 } from "react/jsx-runtime";
26220
+ import { Fragment as Fragment65, jsx as jsx306, jsxs as jsxs188 } from "react/jsx-runtime";
26007
26221
  function WaitlistForm({ onSuccess }) {
26008
26222
  const t = useTranslations139();
26009
26223
  const [isSubmitting, setIsSubmitting] = useState111(false);
@@ -26122,7 +26336,7 @@ function WaitlistForm({ onSuccess }) {
26122
26336
  {
26123
26337
  form,
26124
26338
  id: "gdprConsent",
26125
- label: /* @__PURE__ */ jsxs188(Fragment63, { children: [
26339
+ label: /* @__PURE__ */ jsxs188(Fragment65, { children: [
26126
26340
  t("auth.gdpr.terms_prefix"),
26127
26341
  /* @__PURE__ */ jsx306(Link, { href: "/terms", target: "_blank", rel: "noopener", children: t("auth.gdpr.terms_of_service") }),
26128
26342
  t("auth.gdpr.and"),
@@ -26386,7 +26600,7 @@ import { Popover as PopoverPrimitive2 } from "@base-ui/react/popover";
26386
26600
  import { CheckIcon as CheckIcon10, MinusIcon as MinusIcon3, XIcon as XIcon13 } from "lucide-react";
26387
26601
  import { useTranslations as useTranslations143 } from "next-intl";
26388
26602
  import { useCallback as useCallback56, useEffect as useEffect83, useState as useState114 } from "react";
26389
- import { Fragment as Fragment64, jsx as jsx312, jsxs as jsxs194 } from "react/jsx-runtime";
26603
+ import { Fragment as Fragment66, jsx as jsx312, jsxs as jsxs194 } from "react/jsx-runtime";
26390
26604
  function RbacPermissionPicker({
26391
26605
  open,
26392
26606
  anchor,
@@ -26472,7 +26686,7 @@ function RbacPermissionPicker({
26472
26686
  )
26473
26687
  ] })
26474
26688
  ] }),
26475
- isRoleColumn && onClear && /* @__PURE__ */ jsxs194(Fragment64, { children: [
26689
+ isRoleColumn && onClear && /* @__PURE__ */ jsxs194(Fragment66, { children: [
26476
26690
  /* @__PURE__ */ jsx312(Separator, {}),
26477
26691
  /* @__PURE__ */ jsxs194(
26478
26692
  Button,
@@ -26759,7 +26973,7 @@ __name(RbacContainer, "RbacContainer");
26759
26973
  // src/features/rbac/components/RbacByRoleContainer.tsx
26760
26974
  import { Loader2Icon as Loader2Icon5 } from "lucide-react";
26761
26975
  import { useTranslations as useTranslations145 } from "next-intl";
26762
- import { Fragment as Fragment65, memo as memo3, useCallback as useCallback58, useEffect as useEffect85, useMemo as useMemo59, useRef as useRef44, useState as useState116 } from "react";
26976
+ import { Fragment as Fragment67, memo as memo3, useCallback as useCallback58, useEffect as useEffect85, useMemo as useMemo59, useRef as useRef44, useState as useState116 } from "react";
26763
26977
  import { jsx as jsx314, jsxs as jsxs196 } from "react/jsx-runtime";
26764
26978
  function findToken2(tokens, action) {
26765
26979
  if (!tokens) return void 0;
@@ -26885,7 +27099,7 @@ function RbacByRoleContainer() {
26885
27099
  const defaultTokens = block.default ?? [];
26886
27100
  const roleTokens = block[selectedRoleId];
26887
27101
  const moduleLabel = moduleNames?.[moduleId] ?? moduleId;
26888
- return /* @__PURE__ */ jsxs196(Fragment65, { children: [
27102
+ return /* @__PURE__ */ jsxs196(Fragment67, { children: [
26889
27103
  /* @__PURE__ */ jsx314("tr", { className: "border-b bg-muted/40", children: /* @__PURE__ */ jsx314(
26890
27104
  "td",
26891
27105
  {
@@ -27319,6 +27533,7 @@ export {
27319
27533
  DatePickerPopover,
27320
27534
  nextDateRange,
27321
27535
  DateRangeSelector,
27536
+ hasOpenInnerLayer,
27322
27537
  useEditorDialog,
27323
27538
  EditorSheet,
27324
27539
  FormFieldWrapper,
@@ -27534,4 +27749,4 @@ export {
27534
27749
  useOAuthClients,
27535
27750
  useOAuthClient
27536
27751
  };
27537
- //# sourceMappingURL=chunk-XDYILJ2S.mjs.map
27752
+ //# sourceMappingURL=chunk-QWZAGQWJ.mjs.map