@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.
- package/dist/{BlockNoteEditor-HKS6AXDA.js → BlockNoteEditor-4EIKMNY3.js} +20 -10
- package/dist/BlockNoteEditor-4EIKMNY3.js.map +1 -0
- package/dist/{BlockNoteEditor-46O3JC4Z.mjs → BlockNoteEditor-AXYVDDXM.mjs} +13 -3
- package/dist/{BlockNoteEditor-46O3JC4Z.mjs.map → BlockNoteEditor-AXYVDDXM.mjs.map} +1 -1
- package/dist/billing/index.js +335 -335
- package/dist/billing/index.mjs +1 -1
- package/dist/{chunk-Y3OKEQGL.js → chunk-ABVTYQIJ.js} +578 -363
- package/dist/chunk-ABVTYQIJ.js.map +1 -0
- package/dist/{chunk-KLV6RLDE.js → chunk-GKDHYB2R.js} +2 -2
- package/dist/chunk-GKDHYB2R.js.map +1 -0
- package/dist/{chunk-XDYILJ2S.mjs → chunk-QWZAGQWJ.mjs} +546 -331
- package/dist/chunk-QWZAGQWJ.mjs.map +1 -0
- package/dist/{chunk-4Z2UONN2.mjs → chunk-U65JPKO3.mjs} +2 -2
- package/dist/chunk-U65JPKO3.mjs.map +1 -0
- package/dist/client/index.js +2 -2
- package/dist/client/index.mjs +1 -1
- package/dist/components/index.d.mts +16 -3
- package/dist/components/index.d.ts +16 -3
- package/dist/components/index.js +4 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +3 -1
- package/dist/contexts/index.js +2 -2
- package/dist/contexts/index.mjs +1 -1
- package/dist/features/analytics/index.js +100 -100
- package/dist/features/analytics/index.js.map +1 -1
- package/dist/features/analytics/index.mjs +5 -5
- package/dist/features/analytics/index.mjs.map +1 -1
- package/dist/features/help/index.js +36 -36
- package/dist/features/help/index.js.map +1 -1
- package/dist/features/help/index.mjs +6 -6
- package/dist/features/help/index.mjs.map +1 -1
- package/dist/features/tokenusage/index.js +103 -103
- package/dist/features/tokenusage/index.js.map +1 -1
- package/dist/features/tokenusage/index.mjs +4 -4
- package/dist/features/tokenusage/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/containers/PageContainer.tsx +1 -1
- package/src/components/containers/RoundPageContainer.tsx +60 -16
- package/src/components/containers/RoundPageContainerTitle.tsx +75 -35
- package/src/components/editors/BlockNoteEditor.tsx +13 -1
- package/src/components/forms/EntityMultiSelector.tsx +4 -4
- package/src/components/forms/EntitySelector.tsx +4 -4
- package/src/components/forms/FormBlockNote.tsx +21 -1
- package/src/components/forms/FormCheckbox.tsx +6 -2
- package/src/components/forms/__tests__/useEditorDialog.test.ts +47 -0
- package/src/components/forms/useEditorDialog.ts +22 -0
- package/src/components/navigations/Breadcrumb.tsx +45 -16
- package/src/components/navigations/Header.tsx +16 -3
- package/src/components/navigations/MobileNavigationBar.tsx +12 -0
- package/src/components/navigations/__tests__/MobileNavigationBar.spec.tsx +17 -0
- package/src/components/tables/ContentListTable.tsx +52 -32
- package/src/features/analytics/components/AnalyticsAdminFilterBar.tsx +9 -6
- package/src/features/analytics/components/AnalyticsBreakdownTable.tsx +2 -1
- package/src/features/assistant/components/parts/AssistantBlockNoteComposer.tsx +1 -1
- package/src/features/assistant/components/parts/AssistantComposer.tsx +1 -1
- package/src/features/assistant-message/components/MessageItem.tsx +2 -2
- package/src/features/assistant-message/components/parts/tabs/CitationsTab.tsx +23 -5
- package/src/features/auth/components/containers/AuthContainer.tsx +8 -1
- package/src/features/company/components/details/CompanyContent.tsx +3 -1
- package/src/features/company/components/details/CompanyDetails.tsx +9 -1
- package/src/features/company/components/details/TokenStatusIndicator.tsx +42 -13
- package/src/features/help/components/HelpHeader.tsx +7 -5
- package/src/features/tokenusage/components/TokenUsageAdminFilterBar.tsx +9 -6
- package/src/features/tokenusage/lib/__tests__/formatters.spec.ts +21 -0
- package/src/features/tokenusage/lib/formatters.ts +5 -1
- package/src/shadcnui/ui/button.tsx +1 -1
- package/src/shadcnui/ui/checkbox.tsx +1 -1
- package/src/shadcnui/ui/command.tsx +4 -4
- package/src/shadcnui/ui/dialog.tsx +2 -0
- package/src/shadcnui/ui/input.tsx +1 -1
- package/src/shadcnui/ui/popover.tsx +9 -0
- package/src/shadcnui/ui/select.tsx +1 -1
- package/src/shadcnui/ui/sheet.tsx +8 -1
- package/src/shadcnui/ui/table.tsx +2 -2
- package/src/shadcnui/ui/textarea.tsx +1 -1
- package/dist/BlockNoteEditor-HKS6AXDA.js.map +0 -1
- package/dist/chunk-4Z2UONN2.mjs.map +0 -1
- package/dist/chunk-KLV6RLDE.js.map +0 -1
- package/dist/chunk-XDYILJ2S.mjs.map +0 -1
- 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-
|
|
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-
|
|
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:
|
|
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
|
|
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
|
|
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-
|
|
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
|
-
|
|
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
|
|
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({
|
|
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__ */
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
15036
|
-
/* @__PURE__ */ jsx159(BreadcrumbItem, { children: item.href ? /* @__PURE__ */ jsx159(Link, { href: item.href, onClick: item.onClick, children: item.name }) : /* @__PURE__ */ jsx159(
|
|
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(
|
|
15040
|
-
/* @__PURE__ */ jsx159(BreadcrumbItem, { children: item.href ? /* @__PURE__ */ jsx159(Link, { href: item.href, onClick: item.onClick, children: item.name }) : /* @__PURE__ */ jsx159(
|
|
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(
|
|
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({
|
|
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
|
|
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(
|
|
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(
|
|
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
|
-
|
|
15609
|
-
|
|
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
|
-
|
|
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
|
|
15660
|
-
import { Fragment as
|
|
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(
|
|
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(
|
|
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`,
|
|
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(
|
|
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(
|
|
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`,
|
|
15876
|
-
railHeader && /* @__PURE__ */ jsx170("div", { className: "mx-auto w-full max-w-
|
|
15877
|
-
/* @__PURE__ */ jsx170(
|
|
15878
|
-
|
|
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
|
-
|
|
15881
|
-
|
|
15882
|
-
|
|
15883
|
-
|
|
15884
|
-
|
|
15885
|
-
|
|
15886
|
-
|
|
15887
|
-
|
|
15888
|
-
|
|
15889
|
-
|
|
15890
|
-
|
|
15891
|
-
|
|
15892
|
-
|
|
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`,
|
|
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`,
|
|
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(
|
|
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` :
|
|
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:
|
|
16001
|
-
|
|
16002
|
-
|
|
16003
|
-
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
-
|
|
17966
|
-
|
|
17967
|
-
|
|
17968
|
-
|
|
17969
|
-
|
|
17970
|
-
|
|
17971
|
-
|
|
17972
|
-
|
|
17973
|
-
|
|
17974
|
-
|
|
17975
|
-
|
|
17976
|
-
|
|
17977
|
-
|
|
17978
|
-
|
|
17979
|
-
|
|
17980
|
-
|
|
17981
|
-
|
|
17982
|
-
|
|
17983
|
-
|
|
17984
|
-
|
|
17985
|
-
|
|
17986
|
-
|
|
17987
|
-
|
|
17988
|
-
|
|
17989
|
-
|
|
17990
|
-
|
|
17991
|
-
|
|
17992
|
-
|
|
17993
|
-
|
|
17994
|
-
|
|
17995
|
-
|
|
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
|
-
|
|
18001
|
-
|
|
18002
|
-
|
|
18003
|
-
})
|
|
18004
|
-
|
|
18005
|
-
|
|
18006
|
-
|
|
18007
|
-
|
|
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
|
-
|
|
18022
|
-
|
|
18023
|
-
|
|
18024
|
-
|
|
18025
|
-
|
|
18026
|
-
|
|
18027
|
-
|
|
18028
|
-
|
|
18029
|
-
|
|
18030
|
-
|
|
18031
|
-
|
|
18032
|
-
|
|
18033
|
-
|
|
18034
|
-
|
|
18035
|
-
|
|
18036
|
-
|
|
18037
|
-
|
|
18038
|
-
|
|
18039
|
-
|
|
18040
|
-
|
|
18041
|
-
|
|
18042
|
-
e
|
|
18043
|
-
|
|
18044
|
-
|
|
18045
|
-
|
|
18046
|
-
|
|
18047
|
-
|
|
18048
|
-
|
|
18049
|
-
|
|
18050
|
-
|
|
18051
|
-
|
|
18052
|
-
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
21949
|
-
|
|
21950
|
-
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
23546
|
+
return /* @__PURE__ */ jsx269(Fragment54, { children: alias });
|
|
23333
23547
|
}
|
|
23334
|
-
if (!module?.pageUrl) return /* @__PURE__ */ jsx269(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
24698
|
+
import { Fragment as Fragment59, jsx as jsx283 } from "react/jsx-runtime";
|
|
24485
24699
|
function PushNotificationProvider({ children }) {
|
|
24486
24700
|
usePushNotifications();
|
|
24487
|
-
return /* @__PURE__ */ jsx283(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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-
|
|
27752
|
+
//# sourceMappingURL=chunk-QWZAGQWJ.mjs.map
|