@carlonicora/nextjs-jsonapi 1.30.0 → 1.31.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-CEJE3YHQ.mjs → BlockNoteEditor-CUIQPN6C.mjs} +3 -3
- package/dist/{BlockNoteEditor-TUJ3VCS3.js → BlockNoteEditor-NBASFIQP.js} +13 -13
- package/dist/{BlockNoteEditor-TUJ3VCS3.js.map → BlockNoteEditor-NBASFIQP.js.map} +1 -1
- package/dist/billing/index.js +331 -331
- package/dist/billing/index.mjs +2 -2
- package/dist/{chunk-5KQXRLK3.js → chunk-HBCIT6KE.js} +12 -1
- package/dist/chunk-HBCIT6KE.js.map +1 -0
- package/dist/{chunk-BHKXZF2I.js → chunk-ITBPDMUX.js} +528 -444
- package/dist/chunk-ITBPDMUX.js.map +1 -0
- package/dist/{chunk-WQ3KF6BG.mjs → chunk-RACFENTQ.mjs} +12 -1
- package/dist/chunk-RACFENTQ.mjs.map +1 -0
- package/dist/{chunk-XY6HEWHI.mjs → chunk-TM4RWVZE.mjs} +977 -893
- package/dist/chunk-TM4RWVZE.mjs.map +1 -0
- package/dist/client/index.js +3 -3
- package/dist/client/index.mjs +2 -2
- package/dist/components/index.d.mts +17 -1
- package/dist/components/index.d.ts +17 -1
- package/dist/components/index.js +7 -3
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +6 -2
- package/dist/contexts/index.js +3 -3
- package/dist/contexts/index.mjs +2 -2
- package/dist/core/index.d.mts +2 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/core/index.mjs +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{s3.service-BMT7W6KS.d.mts → s3.service-D2vIfl9y.d.mts} +8 -0
- package/dist/{s3.service-DsXo9nop.d.ts → s3.service-D7NyMnNY.d.ts} +8 -0
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +1 -1
- package/package.json +1 -1
- package/src/components/forms/GdprConsentCheckbox.tsx +45 -0
- package/src/components/forms/index.ts +1 -0
- package/src/features/auth/components/GdprConsentSection.tsx +50 -0
- package/src/features/auth/components/forms/Register.tsx +11 -0
- package/src/features/auth/components/index.ts +1 -0
- package/src/features/auth/data/auth.service.ts +20 -0
- package/dist/chunk-5KQXRLK3.js.map +0 -1
- package/dist/chunk-BHKXZF2I.js.map +0 -1
- package/dist/chunk-WQ3KF6BG.mjs.map +0 -1
- package/dist/chunk-XY6HEWHI.mjs.map +0 -1
- /package/dist/{BlockNoteEditor-CEJE3YHQ.mjs.map → BlockNoteEditor-CUIQPN6C.mjs.map} +0 -0
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
showToast,
|
|
40
40
|
useComposedRefs,
|
|
41
41
|
useIsMobile
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-RACFENTQ.mjs";
|
|
43
43
|
import {
|
|
44
44
|
JsonApiContext
|
|
45
45
|
} from "./chunk-VOXD3ZLY.mjs";
|
|
@@ -8784,11 +8784,40 @@ function FormTextarea({
|
|
|
8784
8784
|
}
|
|
8785
8785
|
__name(FormTextarea, "FormTextarea");
|
|
8786
8786
|
|
|
8787
|
+
// src/components/forms/GdprConsentCheckbox.tsx
|
|
8788
|
+
import { jsx as jsx75, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
8789
|
+
function GdprConsentCheckbox({
|
|
8790
|
+
form,
|
|
8791
|
+
id,
|
|
8792
|
+
label,
|
|
8793
|
+
description,
|
|
8794
|
+
required
|
|
8795
|
+
}) {
|
|
8796
|
+
return /* @__PURE__ */ jsx75(FormFieldWrapper, { form, name: id, orientation: "horizontal", children: (field) => /* @__PURE__ */ jsxs43("div", { className: "flex flex-row items-start space-x-3 space-y-0", children: [
|
|
8797
|
+
/* @__PURE__ */ jsx75(
|
|
8798
|
+
Checkbox,
|
|
8799
|
+
{
|
|
8800
|
+
checked: field.value,
|
|
8801
|
+
onCheckedChange: field.onChange,
|
|
8802
|
+
"aria-required": required
|
|
8803
|
+
}
|
|
8804
|
+
),
|
|
8805
|
+
/* @__PURE__ */ jsxs43("div", { className: "space-y-1 leading-none", children: [
|
|
8806
|
+
/* @__PURE__ */ jsxs43("span", { className: "text-sm font-normal", children: [
|
|
8807
|
+
label,
|
|
8808
|
+
required && /* @__PURE__ */ jsx75("span", { className: "text-destructive ml-1", children: "*" })
|
|
8809
|
+
] }),
|
|
8810
|
+
description && /* @__PURE__ */ jsx75(FieldDescription, { className: "text-xs", children: description })
|
|
8811
|
+
] })
|
|
8812
|
+
] }) });
|
|
8813
|
+
}
|
|
8814
|
+
__name(GdprConsentCheckbox, "GdprConsentCheckbox");
|
|
8815
|
+
|
|
8787
8816
|
// src/components/forms/MultiFileUploader.tsx
|
|
8788
8817
|
import { FileIcon, FileImageIcon, FileSpreadsheetIcon, FileTextIcon, UploadIcon as UploadIcon2, XIcon as XIcon4 } from "lucide-react";
|
|
8789
8818
|
import Image3 from "next/image";
|
|
8790
8819
|
import { useEffect as useEffect15, useState as useState19 } from "react";
|
|
8791
|
-
import { jsx as
|
|
8820
|
+
import { jsx as jsx76, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
8792
8821
|
var dropzone = {
|
|
8793
8822
|
multiple: false,
|
|
8794
8823
|
maxSize: 100 * 1024 * 1024,
|
|
@@ -8799,7 +8828,7 @@ var dropzone = {
|
|
|
8799
8828
|
};
|
|
8800
8829
|
|
|
8801
8830
|
// src/features/feature/components/forms/FormFeatures.tsx
|
|
8802
|
-
import { jsx as
|
|
8831
|
+
import { jsx as jsx77, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
8803
8832
|
function FormFeatures({ form, name, features, featureField = "featureIds" }) {
|
|
8804
8833
|
const selectedFeatures = form.watch(featureField);
|
|
8805
8834
|
const toggleFeature = /* @__PURE__ */ __name((feature, checked) => {
|
|
@@ -8814,10 +8843,10 @@ function FormFeatures({ form, name, features, featureField = "featureIds" }) {
|
|
|
8814
8843
|
form.setValue(featureField, newFeatureIds);
|
|
8815
8844
|
}, "toggleFeature");
|
|
8816
8845
|
const isFeatureChecked = /* @__PURE__ */ __name((feature) => selectedFeatures.includes(feature.id), "isFeatureChecked");
|
|
8817
|
-
return /* @__PURE__ */
|
|
8818
|
-
name && /* @__PURE__ */
|
|
8819
|
-
/* @__PURE__ */
|
|
8820
|
-
/* @__PURE__ */
|
|
8846
|
+
return /* @__PURE__ */ jsxs45("div", { className: "flex w-full flex-col", children: [
|
|
8847
|
+
name && /* @__PURE__ */ jsx77("h2", { className: "mb-4 border-b text-lg font-semibold", children: name }),
|
|
8848
|
+
/* @__PURE__ */ jsx77(ScrollArea, { className: "h-[40vh]", children: /* @__PURE__ */ jsx77("div", { className: "flex flex-col gap-y-2 pr-4", children: features.filter((feature) => !feature.isCore).map((feature) => /* @__PURE__ */ jsxs45("div", { className: "flex items-center", children: [
|
|
8849
|
+
/* @__PURE__ */ jsx77(
|
|
8821
8850
|
Checkbox,
|
|
8822
8851
|
{
|
|
8823
8852
|
id: feature.id,
|
|
@@ -8827,18 +8856,18 @@ function FormFeatures({ form, name, features, featureField = "featureIds" }) {
|
|
|
8827
8856
|
}
|
|
8828
8857
|
}
|
|
8829
8858
|
),
|
|
8830
|
-
/* @__PURE__ */
|
|
8859
|
+
/* @__PURE__ */ jsx77(Label, { htmlFor: feature.id, className: "ml-3 cursor-pointer font-normal", children: feature.name })
|
|
8831
8860
|
] }, feature.id)) }) })
|
|
8832
8861
|
] });
|
|
8833
8862
|
}
|
|
8834
8863
|
__name(FormFeatures, "FormFeatures");
|
|
8835
8864
|
|
|
8836
8865
|
// src/features/user/components/forms/UserMultiSelect.tsx
|
|
8837
|
-
import { jsx as
|
|
8866
|
+
import { jsx as jsx78, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
8838
8867
|
function UserAvatarIcon({ className, url, name }) {
|
|
8839
|
-
return /* @__PURE__ */
|
|
8840
|
-
/* @__PURE__ */
|
|
8841
|
-
/* @__PURE__ */
|
|
8868
|
+
return /* @__PURE__ */ jsxs46(Avatar, { className: `${className || "h-4 w-4"}`, children: [
|
|
8869
|
+
/* @__PURE__ */ jsx78(AvatarImage, { src: url }),
|
|
8870
|
+
/* @__PURE__ */ jsx78(AvatarFallback, { children: name ? name.split(" ").map((n) => n.charAt(0).toUpperCase()).join("") : "U" })
|
|
8842
8871
|
] });
|
|
8843
8872
|
}
|
|
8844
8873
|
__name(UserAvatarIcon, "UserAvatarIcon");
|
|
@@ -8894,7 +8923,7 @@ function UserMultiSelect({
|
|
|
8894
8923
|
const options = filteredUsers.map((user) => ({
|
|
8895
8924
|
label: user.name,
|
|
8896
8925
|
value: user.id,
|
|
8897
|
-
icon: /* @__PURE__ */ __name(({ className }) => /* @__PURE__ */
|
|
8926
|
+
icon: /* @__PURE__ */ __name(({ className }) => /* @__PURE__ */ jsx78(UserAvatarIcon, { className, url: user.avatar, name: user.name }), "icon"),
|
|
8898
8927
|
userData: user
|
|
8899
8928
|
}));
|
|
8900
8929
|
setUserOptions(options);
|
|
@@ -8906,7 +8935,7 @@ function UserMultiSelect({
|
|
|
8906
8935
|
const missingOptions = selectedUsers.filter((user) => !existingOptionIds.has(user.id)).map((user) => ({
|
|
8907
8936
|
label: user.name,
|
|
8908
8937
|
value: user.id,
|
|
8909
|
-
icon: /* @__PURE__ */ __name(({ className }) => /* @__PURE__ */
|
|
8938
|
+
icon: /* @__PURE__ */ __name(({ className }) => /* @__PURE__ */ jsx78(UserAvatarIcon, { className, url: user.avatar, name: user.name }), "icon"),
|
|
8910
8939
|
userData: user
|
|
8911
8940
|
}));
|
|
8912
8941
|
if (missingOptions.length > 0) {
|
|
@@ -8937,7 +8966,7 @@ function UserMultiSelect({
|
|
|
8937
8966
|
}
|
|
8938
8967
|
}, "handleValueChange");
|
|
8939
8968
|
const selectedUserIds = selectedUsers.map((user) => user.id);
|
|
8940
|
-
return /* @__PURE__ */
|
|
8969
|
+
return /* @__PURE__ */ jsx78("div", { className: "flex w-full flex-col", children: /* @__PURE__ */ jsx78(FormFieldWrapper, { form, name: id, label, isRequired, children: () => /* @__PURE__ */ jsx78(
|
|
8941
8970
|
MultiSelect,
|
|
8942
8971
|
{
|
|
8943
8972
|
options: userOptions,
|
|
@@ -8955,7 +8984,7 @@ __name(UserMultiSelect, "UserMultiSelect");
|
|
|
8955
8984
|
import { UserCheckIcon } from "lucide-react";
|
|
8956
8985
|
import { useTranslations as useTranslations12 } from "next-intl";
|
|
8957
8986
|
import { useState as useState21 } from "react";
|
|
8958
|
-
import { jsx as
|
|
8987
|
+
import { jsx as jsx79, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
8959
8988
|
function UserReactivatorInterface({ user, propagateChanges }) {
|
|
8960
8989
|
const [open, setOpen] = useState21(false);
|
|
8961
8990
|
const t = useTranslations12();
|
|
@@ -8968,20 +8997,20 @@ function UserReactivatorInterface({ user, propagateChanges }) {
|
|
|
8968
8997
|
errorToast({ title: t(`common.errors.error`), error });
|
|
8969
8998
|
}
|
|
8970
8999
|
}, "reactivateUser");
|
|
8971
|
-
return /* @__PURE__ */
|
|
8972
|
-
/* @__PURE__ */
|
|
8973
|
-
/* @__PURE__ */
|
|
9000
|
+
return /* @__PURE__ */ jsxs47(Dialog, { open, onOpenChange: setOpen, children: [
|
|
9001
|
+
/* @__PURE__ */ jsx79(DialogTrigger, { children: /* @__PURE__ */ jsxs47(Button, { size: "sm", children: [
|
|
9002
|
+
/* @__PURE__ */ jsx79(UserCheckIcon, { className: "mr-3 h-3.5 w-3.5" }),
|
|
8974
9003
|
t(`user.buttons.reactivate`)
|
|
8975
9004
|
] }) }),
|
|
8976
|
-
/* @__PURE__ */
|
|
8977
|
-
/* @__PURE__ */
|
|
8978
|
-
/* @__PURE__ */
|
|
8979
|
-
/* @__PURE__ */
|
|
9005
|
+
/* @__PURE__ */ jsxs47(DialogContent, { className: `flex max-h-[70vh] max-w-3xl flex-col overflow-y-auto`, children: [
|
|
9006
|
+
/* @__PURE__ */ jsxs47(DialogHeader, { children: [
|
|
9007
|
+
/* @__PURE__ */ jsx79(DialogTitle, { children: t(`user.reactivate.title`) }),
|
|
9008
|
+
/* @__PURE__ */ jsx79(DialogDescription, { children: t(`user.reactivate.subtitle`) })
|
|
8980
9009
|
] }),
|
|
8981
9010
|
t(`user.reactivate.description`, { name: user.name }),
|
|
8982
|
-
/* @__PURE__ */
|
|
8983
|
-
/* @__PURE__ */
|
|
8984
|
-
/* @__PURE__ */
|
|
9011
|
+
/* @__PURE__ */ jsxs47("div", { className: "flex justify-end", children: [
|
|
9012
|
+
/* @__PURE__ */ jsx79(Button, { className: "mr-2", variant: "outline", type: `button`, onClick: () => setOpen(false), children: t(`ui.buttons.cancel`) }),
|
|
9013
|
+
/* @__PURE__ */ jsx79(
|
|
8985
9014
|
Button,
|
|
8986
9015
|
{
|
|
8987
9016
|
type: "submit",
|
|
@@ -9000,7 +9029,7 @@ __name(UserReactivatorInterface, "UserReactivatorInterface");
|
|
|
9000
9029
|
function UserReactivator(props) {
|
|
9001
9030
|
const { hasPermissionToModule } = useCurrentUserContext();
|
|
9002
9031
|
if (!hasPermissionToModule({ module: Modules.User, action: "update" /* Update */, data: props.user })) return null;
|
|
9003
|
-
return /* @__PURE__ */
|
|
9032
|
+
return /* @__PURE__ */ jsx79(UserReactivatorInterface, { ...props });
|
|
9004
9033
|
}
|
|
9005
9034
|
__name(UserReactivator, "UserReactivator");
|
|
9006
9035
|
|
|
@@ -9008,7 +9037,7 @@ __name(UserReactivator, "UserReactivator");
|
|
|
9008
9037
|
import { MailIcon } from "lucide-react";
|
|
9009
9038
|
import { useTranslations as useTranslations13 } from "next-intl";
|
|
9010
9039
|
import { useState as useState22 } from "react";
|
|
9011
|
-
import { jsx as
|
|
9040
|
+
import { jsx as jsx80, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
9012
9041
|
function UserResentInvitationEmailInternal({ user }) {
|
|
9013
9042
|
const [open, setOpen] = useState22(false);
|
|
9014
9043
|
const t = useTranslations13();
|
|
@@ -9023,20 +9052,20 @@ function UserResentInvitationEmailInternal({ user }) {
|
|
|
9023
9052
|
errorToast({ title: t(`common.errors.error`), error });
|
|
9024
9053
|
}
|
|
9025
9054
|
}, "sendInvitationEmail");
|
|
9026
|
-
return /* @__PURE__ */
|
|
9027
|
-
/* @__PURE__ */
|
|
9028
|
-
/* @__PURE__ */
|
|
9029
|
-
/* @__PURE__ */
|
|
9055
|
+
return /* @__PURE__ */ jsxs48(Dialog, { open, onOpenChange: setOpen, children: [
|
|
9056
|
+
/* @__PURE__ */ jsxs48(Tooltip2, { children: [
|
|
9057
|
+
/* @__PURE__ */ jsx80(TooltipTrigger, { children: /* @__PURE__ */ jsx80(DialogTrigger, { children: /* @__PURE__ */ jsx80(Button, { size: "sm", variant: `ghost`, className: "text-muted-foreground", children: /* @__PURE__ */ jsx80(MailIcon, {}) }) }) }),
|
|
9058
|
+
/* @__PURE__ */ jsx80(TooltipContent, { children: t(`user.buttons.resend_activation`) })
|
|
9030
9059
|
] }),
|
|
9031
|
-
/* @__PURE__ */
|
|
9032
|
-
/* @__PURE__ */
|
|
9033
|
-
/* @__PURE__ */
|
|
9034
|
-
/* @__PURE__ */
|
|
9060
|
+
/* @__PURE__ */ jsxs48(DialogContent, { className: `flex max-h-[70vh] max-w-3xl flex-col overflow-y-auto`, children: [
|
|
9061
|
+
/* @__PURE__ */ jsxs48(DialogHeader, { children: [
|
|
9062
|
+
/* @__PURE__ */ jsx80(DialogTitle, { children: t(`user.resend_activation.title`) }),
|
|
9063
|
+
/* @__PURE__ */ jsx80(DialogDescription, { children: t(`user.resend_activation.subtitle`) })
|
|
9035
9064
|
] }),
|
|
9036
9065
|
t(`user.resend_activation.description`, { email: user.email }),
|
|
9037
|
-
/* @__PURE__ */
|
|
9038
|
-
/* @__PURE__ */
|
|
9039
|
-
/* @__PURE__ */
|
|
9066
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex justify-end", children: [
|
|
9067
|
+
/* @__PURE__ */ jsx80(Button, { className: "mr-2", variant: "outline", type: `button`, onClick: () => setOpen(false), children: t(`ui.buttons.cancel`) }),
|
|
9068
|
+
/* @__PURE__ */ jsx80(
|
|
9040
9069
|
Button,
|
|
9041
9070
|
{
|
|
9042
9071
|
type: "submit",
|
|
@@ -9055,7 +9084,7 @@ __name(UserResentInvitationEmailInternal, "UserResentInvitationEmailInternal");
|
|
|
9055
9084
|
function UserResentInvitationEmail(props) {
|
|
9056
9085
|
const { hasPermissionToModule } = useCurrentUserContext();
|
|
9057
9086
|
if (!hasPermissionToModule({ module: Modules.User, action: "update" /* Update */, data: props.user })) return null;
|
|
9058
|
-
return /* @__PURE__ */
|
|
9087
|
+
return /* @__PURE__ */ jsx80(UserResentInvitationEmailInternal, { ...props });
|
|
9059
9088
|
}
|
|
9060
9089
|
__name(UserResentInvitationEmail, "UserResentInvitationEmail");
|
|
9061
9090
|
|
|
@@ -9065,7 +9094,7 @@ import { useTranslations as useTranslations14 } from "next-intl";
|
|
|
9065
9094
|
import { useCallback as useCallback12, useEffect as useEffect17, useRef as useRef11, useState as useState23 } from "react";
|
|
9066
9095
|
|
|
9067
9096
|
// src/features/user/components/widgets/UserAvatar.tsx
|
|
9068
|
-
import { jsx as
|
|
9097
|
+
import { jsx as jsx81, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
9069
9098
|
function UserAvatar({ user, className, showFull, showLink, showTooltip = true }) {
|
|
9070
9099
|
const generateUrl = usePageUrlGenerator();
|
|
9071
9100
|
const getInitial = /* @__PURE__ */ __name((param) => {
|
|
@@ -9078,41 +9107,41 @@ function UserAvatar({ user, className, showFull, showLink, showTooltip = true })
|
|
|
9078
9107
|
return initials ?? "";
|
|
9079
9108
|
}, "getInitials");
|
|
9080
9109
|
const getAvatar = /* @__PURE__ */ __name(() => {
|
|
9081
|
-
return /* @__PURE__ */
|
|
9082
|
-
/* @__PURE__ */
|
|
9083
|
-
/* @__PURE__ */
|
|
9110
|
+
return /* @__PURE__ */ jsx81("div", { className: "*:ring-border *:ring-1", children: /* @__PURE__ */ jsxs49(Avatar, { className: `h-6 w-6 ${className}`, children: [
|
|
9111
|
+
/* @__PURE__ */ jsx81(AvatarImage, { className: "object-cover", src: user?.avatar }),
|
|
9112
|
+
/* @__PURE__ */ jsx81(AvatarFallback, { children: getInitials(user.name) })
|
|
9084
9113
|
] }) });
|
|
9085
9114
|
}, "getAvatar");
|
|
9086
9115
|
const content = showLink === false ? (
|
|
9087
9116
|
// If showLink is explicitly false, never show a link
|
|
9088
|
-
showFull ? /* @__PURE__ */
|
|
9117
|
+
showFull ? /* @__PURE__ */ jsxs49("div", { className: cn(`mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className), children: [
|
|
9089
9118
|
getAvatar(),
|
|
9090
9119
|
user.name
|
|
9091
9120
|
] }) : getAvatar()
|
|
9092
|
-
) : showFull ? /* @__PURE__ */
|
|
9121
|
+
) : showFull ? /* @__PURE__ */ jsx81(
|
|
9093
9122
|
Link,
|
|
9094
9123
|
{
|
|
9095
9124
|
href: generateUrl({ page: Modules.User, id: user.id }),
|
|
9096
9125
|
className: cn(`mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className),
|
|
9097
9126
|
onClick: (e) => e.stopPropagation(),
|
|
9098
|
-
children: /* @__PURE__ */
|
|
9127
|
+
children: /* @__PURE__ */ jsxs49("div", { className: "flex w-full flex-row items-center gap-x-2", children: [
|
|
9099
9128
|
getAvatar(),
|
|
9100
9129
|
user.name
|
|
9101
9130
|
] })
|
|
9102
9131
|
}
|
|
9103
|
-
) : showLink ? /* @__PURE__ */
|
|
9132
|
+
) : showLink ? /* @__PURE__ */ jsx81(Link, { href: generateUrl({ page: Modules.User, id: user.id }), className, children: getAvatar() }) : getAvatar();
|
|
9104
9133
|
if (!showTooltip) {
|
|
9105
9134
|
return content;
|
|
9106
9135
|
}
|
|
9107
|
-
return /* @__PURE__ */
|
|
9108
|
-
/* @__PURE__ */
|
|
9109
|
-
/* @__PURE__ */
|
|
9136
|
+
return /* @__PURE__ */ jsxs49(Tooltip2, { children: [
|
|
9137
|
+
/* @__PURE__ */ jsx81(TooltipTrigger, { children: content }),
|
|
9138
|
+
/* @__PURE__ */ jsx81(TooltipContent, { children: user.name })
|
|
9110
9139
|
] });
|
|
9111
9140
|
}
|
|
9112
9141
|
__name(UserAvatar, "UserAvatar");
|
|
9113
9142
|
|
|
9114
9143
|
// src/features/user/components/forms/UserSelector.tsx
|
|
9115
|
-
import { Fragment as Fragment6, jsx as
|
|
9144
|
+
import { Fragment as Fragment6, jsx as jsx82, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
9116
9145
|
function UserSelector({ id, form, label, placeholder, onChange, isRequired = false }) {
|
|
9117
9146
|
const t = useTranslations14();
|
|
9118
9147
|
const [open, setOpen] = useState23(false);
|
|
@@ -9157,16 +9186,16 @@ function UserSelector({ id, form, label, placeholder, onChange, isRequired = fal
|
|
|
9157
9186
|
setOpen(false);
|
|
9158
9187
|
}, 0);
|
|
9159
9188
|
}, "setUser");
|
|
9160
|
-
return /* @__PURE__ */
|
|
9161
|
-
/* @__PURE__ */
|
|
9162
|
-
/* @__PURE__ */
|
|
9163
|
-
/* @__PURE__ */
|
|
9164
|
-
/* @__PURE__ */
|
|
9165
|
-
/* @__PURE__ */
|
|
9189
|
+
return /* @__PURE__ */ jsx82("div", { className: "flex w-full flex-col", children: /* @__PURE__ */ jsx82(FormFieldWrapper, { form, name: id, label, isRequired, children: (field) => /* @__PURE__ */ jsxs50(Popover, { open, onOpenChange: setOpen, modal: true, children: [
|
|
9190
|
+
/* @__PURE__ */ jsxs50("div", { className: "flex w-full flex-row items-center justify-between", children: [
|
|
9191
|
+
/* @__PURE__ */ jsx82(PopoverTrigger, { className: "w-full", children: /* @__PURE__ */ jsx82("div", { className: "flex w-full flex-row items-center justify-start rounded-md", children: field.value ? /* @__PURE__ */ jsx82(Fragment6, { children: /* @__PURE__ */ jsxs50("div", { className: "flex w-full flex-row items-center justify-start rounded-md border p-2", children: [
|
|
9192
|
+
/* @__PURE__ */ jsx82("div", { className: "*:ring-border *:ring-1", children: /* @__PURE__ */ jsxs50(Avatar, { className: `mr-2 h-6 w-6`, children: [
|
|
9193
|
+
/* @__PURE__ */ jsx82(AvatarImage, { src: field.value?.avatar }),
|
|
9194
|
+
/* @__PURE__ */ jsx82(AvatarFallback, { children: field.value?.name ? field.value?.name.split(" ").map((name) => name.charAt(0).toUpperCase()) : "X" })
|
|
9166
9195
|
] }) }),
|
|
9167
|
-
/* @__PURE__ */
|
|
9168
|
-
] }) }) : /* @__PURE__ */
|
|
9169
|
-
field.value && /* @__PURE__ */
|
|
9196
|
+
/* @__PURE__ */ jsx82("span", { className: "", children: field.value?.name ?? "" })
|
|
9197
|
+
] }) }) : /* @__PURE__ */ jsx82("div", { className: "text-muted-foreground mr-7 flex h-10 w-full flex-row items-center justify-start rounded-md border p-2 text-sm", children: placeholder ?? t(`ui.search.placeholder`, { type: t(`entities.users`, { count: 1 }) }) }) }) }),
|
|
9198
|
+
field.value && /* @__PURE__ */ jsx82(
|
|
9170
9199
|
CircleX,
|
|
9171
9200
|
{
|
|
9172
9201
|
className: "text-muted hover:text-destructive ml-2 h-6 w-6 cursor-pointer",
|
|
@@ -9174,10 +9203,10 @@ function UserSelector({ id, form, label, placeholder, onChange, isRequired = fal
|
|
|
9174
9203
|
}
|
|
9175
9204
|
)
|
|
9176
9205
|
] }),
|
|
9177
|
-
/* @__PURE__ */
|
|
9178
|
-
/* @__PURE__ */
|
|
9179
|
-
/* @__PURE__ */
|
|
9180
|
-
/* @__PURE__ */
|
|
9206
|
+
/* @__PURE__ */ jsx82(PopoverContent, { children: /* @__PURE__ */ jsxs50(Command, { shouldFilter: false, children: [
|
|
9207
|
+
/* @__PURE__ */ jsxs50("div", { className: "relative mb-2 w-full", children: [
|
|
9208
|
+
/* @__PURE__ */ jsx82(SearchIcon2, { className: "text-muted-foreground absolute top-2.5 left-2.5 h-4 w-4" }),
|
|
9209
|
+
/* @__PURE__ */ jsx82(
|
|
9181
9210
|
Input,
|
|
9182
9211
|
{
|
|
9183
9212
|
placeholder: t(`ui.search.placeholder`, { type: t(`entities.users`, { count: 1 }) }),
|
|
@@ -9187,7 +9216,7 @@ function UserSelector({ id, form, label, placeholder, onChange, isRequired = fal
|
|
|
9187
9216
|
value: searchTerm
|
|
9188
9217
|
}
|
|
9189
9218
|
),
|
|
9190
|
-
isSearching ? /* @__PURE__ */
|
|
9219
|
+
isSearching ? /* @__PURE__ */ jsx82(RefreshCwIcon, { className: "text-muted-foreground absolute top-2.5 right-2.5 h-4 w-4 animate-spin" }) : searchTermRef.current ? /* @__PURE__ */ jsx82(
|
|
9191
9220
|
XIcon5,
|
|
9192
9221
|
{
|
|
9193
9222
|
className: `absolute top-2.5 right-2.5 h-4 w-4 ${searchTermRef.current ? "cursor-pointer" : "text-muted-foreground"}`,
|
|
@@ -9196,16 +9225,16 @@ function UserSelector({ id, form, label, placeholder, onChange, isRequired = fal
|
|
|
9196
9225
|
search("");
|
|
9197
9226
|
}
|
|
9198
9227
|
}
|
|
9199
|
-
) : /* @__PURE__ */
|
|
9228
|
+
) : /* @__PURE__ */ jsx82(Fragment6, {})
|
|
9200
9229
|
] }),
|
|
9201
|
-
/* @__PURE__ */
|
|
9230
|
+
/* @__PURE__ */ jsx82(CommandList, { children: data.data && data.data.length > 0 && data.data.map((user) => /* @__PURE__ */ jsxs50(
|
|
9202
9231
|
CommandItem,
|
|
9203
9232
|
{
|
|
9204
9233
|
className: "cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent",
|
|
9205
9234
|
onSelect: () => setUser(user),
|
|
9206
9235
|
children: [
|
|
9207
|
-
/* @__PURE__ */
|
|
9208
|
-
/* @__PURE__ */
|
|
9236
|
+
/* @__PURE__ */ jsx82(UserAvatar, { user, className: `mr-2 h-4 w-4` }),
|
|
9237
|
+
/* @__PURE__ */ jsx82("span", { className: "", children: user.name })
|
|
9209
9238
|
]
|
|
9210
9239
|
},
|
|
9211
9240
|
user.id
|
|
@@ -9216,7 +9245,7 @@ function UserSelector({ id, form, label, placeholder, onChange, isRequired = fal
|
|
|
9216
9245
|
__name(UserSelector, "UserSelector");
|
|
9217
9246
|
|
|
9218
9247
|
// src/features/user/contexts/UserContext.tsx
|
|
9219
|
-
import { jsx as
|
|
9248
|
+
import { jsx as jsx83 } from "react/jsx-runtime";
|
|
9220
9249
|
var UserContext = createContext9(void 0);
|
|
9221
9250
|
var UserProvider = /* @__PURE__ */ __name(({ children, dehydratedUser }) => {
|
|
9222
9251
|
const generateUrl = usePageUrlGenerator();
|
|
@@ -9252,18 +9281,18 @@ var UserProvider = /* @__PURE__ */ __name(({ children, dehydratedUser }) => {
|
|
|
9252
9281
|
if (user) {
|
|
9253
9282
|
response.element = `${user.name}${user.isDeleted ? ` (${t(`user.deleted`)})` : ""}`;
|
|
9254
9283
|
if (user.isDeleted) {
|
|
9255
|
-
functions.push(/* @__PURE__ */
|
|
9284
|
+
functions.push(/* @__PURE__ */ jsx83(UserReactivator, { user, propagateChanges: setUser }, `UserReactivator`));
|
|
9256
9285
|
} else {
|
|
9257
9286
|
if (!user.isActivated)
|
|
9258
|
-
functions.push(/* @__PURE__ */
|
|
9259
|
-
functions.push(/* @__PURE__ */
|
|
9287
|
+
functions.push(/* @__PURE__ */ jsx83(UserResentInvitationEmail, { user }, `UserResentInvitationEmail`));
|
|
9288
|
+
functions.push(/* @__PURE__ */ jsx83(UserDeleter, { user }, `UserDeleter`));
|
|
9260
9289
|
}
|
|
9261
|
-
functions.push(/* @__PURE__ */
|
|
9290
|
+
functions.push(/* @__PURE__ */ jsx83(UserEditor, { user, propagateChanges: setUser }, `UserEditor`));
|
|
9262
9291
|
}
|
|
9263
9292
|
if (functions.length > 0) response.functions = functions;
|
|
9264
9293
|
return response;
|
|
9265
9294
|
}, "title");
|
|
9266
|
-
return /* @__PURE__ */
|
|
9295
|
+
return /* @__PURE__ */ jsx83(SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ jsx83(
|
|
9267
9296
|
UserContext.Provider,
|
|
9268
9297
|
{
|
|
9269
9298
|
value: {
|
|
@@ -9288,17 +9317,17 @@ import { useTranslations as useTranslations17 } from "next-intl";
|
|
|
9288
9317
|
// src/features/user/components/details/UserDetails.tsx
|
|
9289
9318
|
import { useTranslations as useTranslations16 } from "next-intl";
|
|
9290
9319
|
import Image4 from "next/image";
|
|
9291
|
-
import { Fragment as Fragment7, jsx as
|
|
9320
|
+
import { Fragment as Fragment7, jsx as jsx84, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
9292
9321
|
function UserDetails({ user }) {
|
|
9293
9322
|
const generateUrl = usePageUrlGenerator();
|
|
9294
9323
|
const t = useTranslations16();
|
|
9295
9324
|
const { title } = useSharedContext();
|
|
9296
|
-
let roles = /* @__PURE__ */
|
|
9325
|
+
let roles = /* @__PURE__ */ jsx84(Fragment7, {});
|
|
9297
9326
|
if (user.roles && user.roles.length > 0) {
|
|
9298
|
-
roles = /* @__PURE__ */
|
|
9327
|
+
roles = /* @__PURE__ */ jsx84("div", { className: "mb-4 w-full", children: /* @__PURE__ */ jsx84("div", { className: "flex flex-wrap gap-2", children: user.roles.map((role, index) => /* @__PURE__ */ jsx84(Link, { href: generateUrl({ page: Modules.Role, id: role.id }), children: /* @__PURE__ */ jsx84(Badge, { className: "mr-2", variant: `default`, children: t(`role.roles`, { role: role.id.replaceAll(`-`, ``) }) }) }, role.id)) }) });
|
|
9299
9328
|
}
|
|
9300
|
-
return /* @__PURE__ */
|
|
9301
|
-
user.avatar && /* @__PURE__ */
|
|
9329
|
+
return /* @__PURE__ */ jsxs51("div", { className: "flex w-full flex-col gap-y-2", children: [
|
|
9330
|
+
user.avatar && /* @__PURE__ */ jsx84("div", { className: "relative aspect-auto w-full max-w-md overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx84(
|
|
9302
9331
|
Image4,
|
|
9303
9332
|
{
|
|
9304
9333
|
src: user.avatar,
|
|
@@ -9308,86 +9337,86 @@ function UserDetails({ user }) {
|
|
|
9308
9337
|
className: "h-auto w-full rounded-lg object-contain"
|
|
9309
9338
|
}
|
|
9310
9339
|
) }),
|
|
9311
|
-
/* @__PURE__ */
|
|
9312
|
-
user.isDeleted ? /* @__PURE__ */
|
|
9340
|
+
/* @__PURE__ */ jsx84(ContentTitle, { module: Modules.User, type: title.type, element: title.element, functions: title.functions }),
|
|
9341
|
+
user.isDeleted ? /* @__PURE__ */ jsx84("div", { children: /* @__PURE__ */ jsx84(Badge, { variant: "destructive", children: t(`user.errors.deleted`) }) }) : /* @__PURE__ */ jsx84(Fragment7, { children: !user.isActivated && /* @__PURE__ */ jsx84("div", { children: /* @__PURE__ */ jsx84(Badge, { variant: "destructive", children: t(`user.errors.inactive`) }) }) }),
|
|
9313
9342
|
roles,
|
|
9314
|
-
/* @__PURE__ */
|
|
9315
|
-
/* @__PURE__ */
|
|
9316
|
-
/* @__PURE__ */
|
|
9343
|
+
/* @__PURE__ */ jsx84(AttributeElement, { inline: true, title: t(`user.fields.title.label`), value: user.title }),
|
|
9344
|
+
/* @__PURE__ */ jsx84(AttributeElement, { inline: true, title: t(`common.fields.email.label`), value: user.email }),
|
|
9345
|
+
/* @__PURE__ */ jsx84(AttributeElement, { inline: false, title: t(`user.fields.bio.label`), value: user.bio })
|
|
9317
9346
|
] });
|
|
9318
9347
|
}
|
|
9319
9348
|
__name(UserDetails, "UserDetails");
|
|
9320
9349
|
|
|
9321
9350
|
// src/features/user/components/details/UserIndexDetails.tsx
|
|
9322
|
-
import { jsx as
|
|
9351
|
+
import { jsx as jsx85, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
9323
9352
|
function UserIndexDetails() {
|
|
9324
9353
|
const { user } = useUserContext();
|
|
9325
9354
|
const { currentUser } = useCurrentUserContext();
|
|
9326
9355
|
if (!user || !currentUser) return null;
|
|
9327
|
-
return /* @__PURE__ */
|
|
9328
|
-
user.avatar && /* @__PURE__ */
|
|
9329
|
-
/* @__PURE__ */
|
|
9330
|
-
/* @__PURE__ */
|
|
9331
|
-
/* @__PURE__ */
|
|
9356
|
+
return /* @__PURE__ */ jsx85("div", { className: "flex w-full flex-row gap-x-4", children: /* @__PURE__ */ jsx85(Card, { className: "min-h-96 w-96 flex-shrink-0 self-start p-2", children: /* @__PURE__ */ jsx85(CardContent, { className: "flex h-full flex-col gap-y-4 p-2", children: /* @__PURE__ */ jsxs52("div", { className: "flex w-full justify-start gap-x-4", children: [
|
|
9357
|
+
user.avatar && /* @__PURE__ */ jsx85(UserAvatar, { user, className: "h-40 w-40" }),
|
|
9358
|
+
/* @__PURE__ */ jsxs52("div", { className: "flex flex-col justify-start gap-y-2", children: [
|
|
9359
|
+
/* @__PURE__ */ jsx85("div", { className: "text-primary text-2xl font-semibold", children: user.name }),
|
|
9360
|
+
/* @__PURE__ */ jsx85("div", { className: "text-muted-foreground text-xs", children: user.bio ?? "" })
|
|
9332
9361
|
] })
|
|
9333
9362
|
] }) }) }) });
|
|
9334
9363
|
}
|
|
9335
9364
|
__name(UserIndexDetails, "UserIndexDetails");
|
|
9336
9365
|
|
|
9337
9366
|
// src/features/user/components/containers/UserContainer.tsx
|
|
9338
|
-
import { jsx as
|
|
9367
|
+
import { jsx as jsx86, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
9339
9368
|
function UserContainer() {
|
|
9340
9369
|
const { user } = useUserContext();
|
|
9341
9370
|
if (!user) return null;
|
|
9342
9371
|
const t = useTranslations17();
|
|
9343
|
-
return /* @__PURE__ */
|
|
9344
|
-
/* @__PURE__ */
|
|
9345
|
-
/* @__PURE__ */
|
|
9372
|
+
return /* @__PURE__ */ jsxs53("div", { className: "flex w-full gap-x-4", children: [
|
|
9373
|
+
/* @__PURE__ */ jsx86("div", { className: "w-2xl flex h-[calc(100vh-theme(spacing.20))] flex-col justify-between border-r pr-4", children: /* @__PURE__ */ jsx86("div", { className: "flex h-full overflow-y-auto", children: /* @__PURE__ */ jsx86(UserDetails, { user }) }) }),
|
|
9374
|
+
/* @__PURE__ */ jsx86("div", { className: "flex w-full flex-col gap-y-4" })
|
|
9346
9375
|
] });
|
|
9347
9376
|
}
|
|
9348
9377
|
__name(UserContainer, "UserContainer");
|
|
9349
9378
|
|
|
9350
9379
|
// src/features/user/components/containers/UserIndexContainer.tsx
|
|
9351
|
-
import { jsx as
|
|
9380
|
+
import { jsx as jsx87 } from "react/jsx-runtime";
|
|
9352
9381
|
function UserIndexContainer() {
|
|
9353
9382
|
const { user } = useUserContext();
|
|
9354
9383
|
if (!user) return null;
|
|
9355
|
-
return /* @__PURE__ */
|
|
9384
|
+
return /* @__PURE__ */ jsx87(PageContentContainer, { details: /* @__PURE__ */ jsx87(UserIndexDetails, {}) });
|
|
9356
9385
|
}
|
|
9357
9386
|
__name(UserIndexContainer, "UserIndexContainer");
|
|
9358
9387
|
|
|
9359
9388
|
// src/features/user/components/containers/UsersListContainer.tsx
|
|
9360
9389
|
import { useTranslations as useTranslations18 } from "next-intl";
|
|
9361
|
-
import { jsx as
|
|
9390
|
+
import { jsx as jsx88 } from "react/jsx-runtime";
|
|
9362
9391
|
function UsersListContainerInternal() {
|
|
9363
9392
|
const { hasPermissionToModule } = useCurrentUserContext();
|
|
9364
9393
|
const t = useTranslations18();
|
|
9365
|
-
if (!hasPermissionToModule({ module: Modules.User, action: "delete" /* Delete */ })) return /* @__PURE__ */
|
|
9394
|
+
if (!hasPermissionToModule({ module: Modules.User, action: "delete" /* Delete */ })) return /* @__PURE__ */ jsx88(CompanyUsersList, {});
|
|
9366
9395
|
const tabs = [
|
|
9367
9396
|
{
|
|
9368
9397
|
label: t(`entities.users`, { count: 2 }),
|
|
9369
|
-
content: /* @__PURE__ */
|
|
9398
|
+
content: /* @__PURE__ */ jsx88(CompanyUsersList, {}),
|
|
9370
9399
|
modules: [Modules.Company],
|
|
9371
9400
|
action: "read" /* Read */
|
|
9372
9401
|
},
|
|
9373
9402
|
{
|
|
9374
9403
|
label: t(`user.deleted`),
|
|
9375
|
-
content: /* @__PURE__ */
|
|
9404
|
+
content: /* @__PURE__ */ jsx88(CompanyUsersList, { isDeleted: true }),
|
|
9376
9405
|
modules: [Modules.Company],
|
|
9377
9406
|
action: "update" /* Update */
|
|
9378
9407
|
}
|
|
9379
9408
|
];
|
|
9380
|
-
return /* @__PURE__ */
|
|
9409
|
+
return /* @__PURE__ */ jsx88(TabsContainer, { tabs });
|
|
9381
9410
|
}
|
|
9382
9411
|
__name(UsersListContainerInternal, "UsersListContainerInternal");
|
|
9383
9412
|
function UsersListContainer() {
|
|
9384
|
-
return /* @__PURE__ */
|
|
9413
|
+
return /* @__PURE__ */ jsx88(UsersListContainerInternal, {});
|
|
9385
9414
|
}
|
|
9386
9415
|
__name(UsersListContainer, "UsersListContainer");
|
|
9387
9416
|
|
|
9388
9417
|
// src/features/user/components/lists/AdminUsersList.tsx
|
|
9389
9418
|
import { useTranslations as useTranslations19 } from "next-intl";
|
|
9390
|
-
import { jsx as
|
|
9419
|
+
import { jsx as jsx89 } from "react/jsx-runtime";
|
|
9391
9420
|
function AdminUsersListInternal({ company }) {
|
|
9392
9421
|
const t = useTranslations19();
|
|
9393
9422
|
const data = useDataListRetriever({
|
|
@@ -9395,14 +9424,14 @@ function AdminUsersListInternal({ company }) {
|
|
|
9395
9424
|
retrieverParams: { companyId: company.id },
|
|
9396
9425
|
module: Modules.User
|
|
9397
9426
|
});
|
|
9398
|
-
return /* @__PURE__ */
|
|
9427
|
+
return /* @__PURE__ */ jsx89(
|
|
9399
9428
|
ContentListTable,
|
|
9400
9429
|
{
|
|
9401
9430
|
title: t(`entities.users`, { count: 2 }),
|
|
9402
9431
|
data,
|
|
9403
9432
|
fields: ["name" /* name */, "email" /* email */, "createdAt" /* createdAt */],
|
|
9404
9433
|
tableGeneratorType: Modules.User,
|
|
9405
|
-
functions: /* @__PURE__ */
|
|
9434
|
+
functions: /* @__PURE__ */ jsx89(UserEditor, { propagateChanges: data.refresh, adminCreated: true })
|
|
9406
9435
|
}
|
|
9407
9436
|
);
|
|
9408
9437
|
}
|
|
@@ -9410,14 +9439,14 @@ __name(AdminUsersListInternal, "AdminUsersListInternal");
|
|
|
9410
9439
|
function AdminUsersList() {
|
|
9411
9440
|
const { company } = useCompanyContext();
|
|
9412
9441
|
if (!company) return null;
|
|
9413
|
-
return /* @__PURE__ */
|
|
9442
|
+
return /* @__PURE__ */ jsx89(AdminUsersListInternal, { company });
|
|
9414
9443
|
}
|
|
9415
9444
|
__name(AdminUsersList, "AdminUsersList");
|
|
9416
9445
|
|
|
9417
9446
|
// src/features/user/components/lists/CompanyUsersList.tsx
|
|
9418
9447
|
import { useTranslations as useTranslations20 } from "next-intl";
|
|
9419
9448
|
import { useEffect as useEffect18 } from "react";
|
|
9420
|
-
import { jsx as
|
|
9449
|
+
import { jsx as jsx90 } from "react/jsx-runtime";
|
|
9421
9450
|
function CompanyUsersList({ isDeleted }) {
|
|
9422
9451
|
const { company } = useCurrentUserContext();
|
|
9423
9452
|
const t = useTranslations20();
|
|
@@ -9431,9 +9460,9 @@ function CompanyUsersList({ isDeleted }) {
|
|
|
9431
9460
|
if (company) data.setReady(true);
|
|
9432
9461
|
}, [company]);
|
|
9433
9462
|
const functions = [
|
|
9434
|
-
isDeleted ? void 0 : /* @__PURE__ */
|
|
9463
|
+
isDeleted ? void 0 : /* @__PURE__ */ jsx90(UserEditor, { propagateChanges: data.refresh }, "create-user")
|
|
9435
9464
|
];
|
|
9436
|
-
return /* @__PURE__ */
|
|
9465
|
+
return /* @__PURE__ */ jsx90(
|
|
9437
9466
|
ContentListTable,
|
|
9438
9467
|
{
|
|
9439
9468
|
data,
|
|
@@ -9447,25 +9476,25 @@ function CompanyUsersList({ isDeleted }) {
|
|
|
9447
9476
|
__name(CompanyUsersList, "CompanyUsersList");
|
|
9448
9477
|
|
|
9449
9478
|
// src/features/user/components/lists/ContributorsList.tsx
|
|
9450
|
-
import { jsx as
|
|
9479
|
+
import { jsx as jsx91, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
9451
9480
|
function ContributorsList({ content }) {
|
|
9452
9481
|
const generateUrl = usePageUrlGenerator();
|
|
9453
|
-
return /* @__PURE__ */
|
|
9454
|
-
/* @__PURE__ */
|
|
9482
|
+
return /* @__PURE__ */ jsxs54("div", { className: "flex flex-row items-center", children: [
|
|
9483
|
+
/* @__PURE__ */ jsx91(
|
|
9455
9484
|
Link,
|
|
9456
9485
|
{
|
|
9457
9486
|
href: generateUrl({ page: Modules.User, id: content.author.id }),
|
|
9458
9487
|
onClick: (e) => e.stopPropagation(),
|
|
9459
|
-
children: /* @__PURE__ */
|
|
9488
|
+
children: /* @__PURE__ */ jsx91(UserAvatar, { user: content.author, className: "mr-1 h-6 w-6" })
|
|
9460
9489
|
},
|
|
9461
9490
|
content.author.id
|
|
9462
9491
|
),
|
|
9463
|
-
/* @__PURE__ */
|
|
9492
|
+
/* @__PURE__ */ jsx91("div", { className: "flex flex-row-reverse justify-end -space-x-1 space-x-reverse", children: content.editors.filter((editor) => editor.id !== content.author.id).map((editor) => /* @__PURE__ */ jsx91(
|
|
9464
9493
|
Link,
|
|
9465
9494
|
{
|
|
9466
9495
|
href: generateUrl({ page: Modules.User, id: editor.id }),
|
|
9467
9496
|
onClick: (e) => e.stopPropagation(),
|
|
9468
|
-
children: /* @__PURE__ */
|
|
9497
|
+
children: /* @__PURE__ */ jsx91(UserAvatar, { user: editor, className: "h-5 w-5" })
|
|
9469
9498
|
},
|
|
9470
9499
|
editor.id
|
|
9471
9500
|
)) })
|
|
@@ -9475,7 +9504,7 @@ __name(ContributorsList, "ContributorsList");
|
|
|
9475
9504
|
|
|
9476
9505
|
// src/features/user/components/lists/RelevantUsersList.tsx
|
|
9477
9506
|
import { useTranslations as useTranslations21 } from "next-intl";
|
|
9478
|
-
import { jsx as
|
|
9507
|
+
import { jsx as jsx92 } from "react/jsx-runtime";
|
|
9479
9508
|
function RelevantUsersList({ id }) {
|
|
9480
9509
|
const t = useTranslations21();
|
|
9481
9510
|
const data = useDataListRetriever({
|
|
@@ -9483,7 +9512,7 @@ function RelevantUsersList({ id }) {
|
|
|
9483
9512
|
retriever: /* @__PURE__ */ __name((params) => UserService.findRelevant(params), "retriever"),
|
|
9484
9513
|
retrieverParams: { id }
|
|
9485
9514
|
});
|
|
9486
|
-
return /* @__PURE__ */
|
|
9515
|
+
return /* @__PURE__ */ jsx92(
|
|
9487
9516
|
ContentListTable,
|
|
9488
9517
|
{
|
|
9489
9518
|
data,
|
|
@@ -9497,7 +9526,7 @@ __name(RelevantUsersList, "RelevantUsersList");
|
|
|
9497
9526
|
|
|
9498
9527
|
// src/features/user/components/lists/RoleUsersList.tsx
|
|
9499
9528
|
import { useTranslations as useTranslations22 } from "next-intl";
|
|
9500
|
-
import { jsx as
|
|
9529
|
+
import { jsx as jsx93 } from "react/jsx-runtime";
|
|
9501
9530
|
function RoleUsersList({ role }) {
|
|
9502
9531
|
const t = useTranslations22();
|
|
9503
9532
|
const data = useDataListRetriever({
|
|
@@ -9505,7 +9534,7 @@ function RoleUsersList({ role }) {
|
|
|
9505
9534
|
retrieverParams: { roleId: role.id },
|
|
9506
9535
|
module: Modules.User
|
|
9507
9536
|
});
|
|
9508
|
-
return /* @__PURE__ */
|
|
9537
|
+
return /* @__PURE__ */ jsx93(
|
|
9509
9538
|
ContentListTable,
|
|
9510
9539
|
{
|
|
9511
9540
|
data,
|
|
@@ -9519,12 +9548,12 @@ __name(RoleUsersList, "RoleUsersList");
|
|
|
9519
9548
|
|
|
9520
9549
|
// src/features/user/components/lists/UserListInAdd.tsx
|
|
9521
9550
|
import React13 from "react";
|
|
9522
|
-
import { Fragment as Fragment8, jsx as
|
|
9551
|
+
import { Fragment as Fragment8, jsx as jsx94, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
9523
9552
|
function UserListInAdd({ data, existingUsers, setSelectedUser, setLevelOpen }) {
|
|
9524
|
-
return /* @__PURE__ */
|
|
9553
|
+
return /* @__PURE__ */ jsx94(Fragment8, { children: data.data !== void 0 && data.data.filter(
|
|
9525
9554
|
(user) => existingUsers && !existingUsers.find((existingUser) => existingUser.id === user.id)
|
|
9526
9555
|
).map((user) => {
|
|
9527
|
-
return /* @__PURE__ */
|
|
9556
|
+
return /* @__PURE__ */ jsx94(React13.Fragment, { children: /* @__PURE__ */ jsx94(
|
|
9528
9557
|
CommandItem,
|
|
9529
9558
|
{
|
|
9530
9559
|
className: "cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent",
|
|
@@ -9536,11 +9565,11 @@ function UserListInAdd({ data, existingUsers, setSelectedUser, setLevelOpen }) {
|
|
|
9536
9565
|
setSelectedUser(user);
|
|
9537
9566
|
setLevelOpen?.(true);
|
|
9538
9567
|
},
|
|
9539
|
-
children: /* @__PURE__ */
|
|
9540
|
-
/* @__PURE__ */
|
|
9541
|
-
/* @__PURE__ */
|
|
9542
|
-
/* @__PURE__ */
|
|
9543
|
-
/* @__PURE__ */
|
|
9568
|
+
children: /* @__PURE__ */ jsxs55("div", { className: "flex w-full flex-row items-center justify-between px-4 py-1", children: [
|
|
9569
|
+
/* @__PURE__ */ jsx94(UserAvatar, { user }),
|
|
9570
|
+
/* @__PURE__ */ jsxs55("div", { className: "ml-5 flex w-full flex-col", children: [
|
|
9571
|
+
/* @__PURE__ */ jsx94("div", { className: "text-sm font-medium", children: user.name }),
|
|
9572
|
+
/* @__PURE__ */ jsx94("div", { className: "text-xs font-normal", children: user.email })
|
|
9544
9573
|
] })
|
|
9545
9574
|
] })
|
|
9546
9575
|
},
|
|
@@ -9552,10 +9581,10 @@ __name(UserListInAdd, "UserListInAdd");
|
|
|
9552
9581
|
|
|
9553
9582
|
// src/features/user/components/lists/UsersList.tsx
|
|
9554
9583
|
import { useTranslations as useTranslations23 } from "next-intl";
|
|
9555
|
-
import { jsx as
|
|
9584
|
+
import { jsx as jsx95 } from "react/jsx-runtime";
|
|
9556
9585
|
function UsersList({ data, optionComponents, removeFunction, hideOptions, showRelevance }) {
|
|
9557
9586
|
const t = useTranslations23();
|
|
9558
|
-
return /* @__PURE__ */
|
|
9587
|
+
return /* @__PURE__ */ jsx95(
|
|
9559
9588
|
ContentListTable,
|
|
9560
9589
|
{
|
|
9561
9590
|
data,
|
|
@@ -9569,7 +9598,7 @@ __name(UsersList, "UsersList");
|
|
|
9569
9598
|
|
|
9570
9599
|
// src/features/user/components/lists/UsersListByContentIds.tsx
|
|
9571
9600
|
import { useTranslations as useTranslations24 } from "next-intl";
|
|
9572
|
-
import { jsx as
|
|
9601
|
+
import { jsx as jsx96 } from "react/jsx-runtime";
|
|
9573
9602
|
function UsersListByContentIds({ contentIds }) {
|
|
9574
9603
|
const t = useTranslations24();
|
|
9575
9604
|
const data = useDataListRetriever({
|
|
@@ -9577,7 +9606,7 @@ function UsersListByContentIds({ contentIds }) {
|
|
|
9577
9606
|
retriever: /* @__PURE__ */ __name((params) => UserService.findManyByContentIds(params), "retriever"),
|
|
9578
9607
|
retrieverParams: { contentIds }
|
|
9579
9608
|
});
|
|
9580
|
-
return /* @__PURE__ */
|
|
9609
|
+
return /* @__PURE__ */ jsx96(
|
|
9581
9610
|
ContentListTable,
|
|
9582
9611
|
{
|
|
9583
9612
|
data,
|
|
@@ -9592,43 +9621,43 @@ __name(UsersListByContentIds, "UsersListByContentIds");
|
|
|
9592
9621
|
// src/features/company/components/details/CompanyDetails.tsx
|
|
9593
9622
|
import { useTranslations as useTranslations25 } from "next-intl";
|
|
9594
9623
|
import Image5 from "next/image";
|
|
9595
|
-
import { jsx as
|
|
9624
|
+
import { jsx as jsx97, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
9596
9625
|
function CompanyDetails() {
|
|
9597
9626
|
const t = useTranslations25();
|
|
9598
9627
|
const { title } = useSharedContext();
|
|
9599
9628
|
const generateUrl = usePageUrlGenerator();
|
|
9600
9629
|
const { company } = useCompanyContext();
|
|
9601
9630
|
if (!company) return null;
|
|
9602
|
-
return /* @__PURE__ */
|
|
9603
|
-
/* @__PURE__ */
|
|
9604
|
-
company.logo && /* @__PURE__ */
|
|
9631
|
+
return /* @__PURE__ */ jsxs56("div", { className: "flex w-full flex-col gap-y-2", children: [
|
|
9632
|
+
/* @__PURE__ */ jsx97(ContentTitle, { module: Modules.Company, type: title.type, element: title.element, functions: title.functions }),
|
|
9633
|
+
company.logo && /* @__PURE__ */ jsx97(Image5, { src: company.logo, alt: company.name, width: 150, height: 150, className: "mb-4 rounded-md" })
|
|
9605
9634
|
] });
|
|
9606
9635
|
}
|
|
9607
9636
|
__name(CompanyDetails, "CompanyDetails");
|
|
9608
9637
|
|
|
9609
9638
|
// src/features/company/components/containers/AdminCompanyContainer.tsx
|
|
9610
|
-
import { Fragment as Fragment9, jsx as
|
|
9639
|
+
import { Fragment as Fragment9, jsx as jsx98, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
9611
9640
|
function AdminCompanyContainerInternal() {
|
|
9612
9641
|
const { company } = useCompanyContext();
|
|
9613
9642
|
const { hasRole } = useCurrentUserContext();
|
|
9614
9643
|
if (!company || !hasRole(getRoleId().Administrator)) return null;
|
|
9615
|
-
return /* @__PURE__ */
|
|
9616
|
-
/* @__PURE__ */
|
|
9617
|
-
/* @__PURE__ */
|
|
9644
|
+
return /* @__PURE__ */ jsxs57(Fragment9, { children: [
|
|
9645
|
+
/* @__PURE__ */ jsx98(CompanyDetails, {}),
|
|
9646
|
+
/* @__PURE__ */ jsx98(AdminUsersList, {})
|
|
9618
9647
|
] });
|
|
9619
9648
|
}
|
|
9620
9649
|
__name(AdminCompanyContainerInternal, "AdminCompanyContainerInternal");
|
|
9621
9650
|
function AdminCompanyContainer() {
|
|
9622
|
-
return /* @__PURE__ */
|
|
9651
|
+
return /* @__PURE__ */ jsx98(AdminCompanyContainerInternal, {});
|
|
9623
9652
|
}
|
|
9624
9653
|
__name(AdminCompanyContainer, "AdminCompanyContainer");
|
|
9625
9654
|
|
|
9626
9655
|
// src/features/company/components/containers/CompanyContainer.tsx
|
|
9627
|
-
import { jsx as
|
|
9656
|
+
import { jsx as jsx99 } from "react/jsx-runtime";
|
|
9628
9657
|
function CompanyContainer() {
|
|
9629
9658
|
const { currentUser } = useCurrentUserContext();
|
|
9630
9659
|
if (!currentUser) return null;
|
|
9631
|
-
return /* @__PURE__ */
|
|
9660
|
+
return /* @__PURE__ */ jsx99(CompanyProvider, { dehydratedCompany: currentUser.company, children: /* @__PURE__ */ jsx99(CompanyDetails, {}) });
|
|
9632
9661
|
}
|
|
9633
9662
|
__name(CompanyContainer, "CompanyContainer");
|
|
9634
9663
|
|
|
@@ -9636,7 +9665,7 @@ __name(CompanyContainer, "CompanyContainer");
|
|
|
9636
9665
|
import { Battery, BatteryFull, BatteryLow, BatteryMedium, PlusCircle } from "lucide-react";
|
|
9637
9666
|
import Link2 from "next/link";
|
|
9638
9667
|
import { useTranslations as useTranslations26 } from "next-intl";
|
|
9639
|
-
import { jsx as
|
|
9668
|
+
import { jsx as jsx100, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
9640
9669
|
function TokenStatusIndicator({ className, size = "md", showExtraPages = true }) {
|
|
9641
9670
|
const { company } = useCurrentUserContext();
|
|
9642
9671
|
const t = useTranslations26();
|
|
@@ -9665,13 +9694,13 @@ function TokenStatusIndicator({ className, size = "md", showExtraPages = true })
|
|
|
9665
9694
|
const textSize = textSizeClasses[size];
|
|
9666
9695
|
const getBatteryIcon = /* @__PURE__ */ __name(() => {
|
|
9667
9696
|
if (percentage > 75) {
|
|
9668
|
-
return /* @__PURE__ */
|
|
9697
|
+
return /* @__PURE__ */ jsx100(BatteryFull, { className: cn(iconSize, "text-green-500") });
|
|
9669
9698
|
} else if (percentage >= 25) {
|
|
9670
|
-
return /* @__PURE__ */
|
|
9699
|
+
return /* @__PURE__ */ jsx100(BatteryMedium, { className: cn(iconSize, "text-yellow-500") });
|
|
9671
9700
|
} else if (percentage >= 5) {
|
|
9672
|
-
return /* @__PURE__ */
|
|
9701
|
+
return /* @__PURE__ */ jsx100(BatteryLow, { className: cn(iconSize, "text-orange-500") });
|
|
9673
9702
|
} else {
|
|
9674
|
-
return /* @__PURE__ */
|
|
9703
|
+
return /* @__PURE__ */ jsx100(Battery, { className: cn(iconSize, "text-destructive") });
|
|
9675
9704
|
}
|
|
9676
9705
|
}, "getBatteryIcon");
|
|
9677
9706
|
const getStatusColor = /* @__PURE__ */ __name(() => {
|
|
@@ -9685,59 +9714,59 @@ function TokenStatusIndicator({ className, size = "md", showExtraPages = true })
|
|
|
9685
9714
|
return "text-destructive";
|
|
9686
9715
|
}
|
|
9687
9716
|
}, "getStatusColor");
|
|
9688
|
-
const tooltipContent = /* @__PURE__ */
|
|
9689
|
-
/* @__PURE__ */
|
|
9690
|
-
/* @__PURE__ */
|
|
9691
|
-
/* @__PURE__ */
|
|
9692
|
-
/* @__PURE__ */
|
|
9717
|
+
const tooltipContent = /* @__PURE__ */ jsxs58("div", { className: "flex flex-col gap-2 p-1", children: [
|
|
9718
|
+
/* @__PURE__ */ jsx100("div", { className: "font-semibold text-sm", children: t("billing.tokens.status", { defaultValue: "Page Status" }) }),
|
|
9719
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex flex-col gap-1 text-xs", children: [
|
|
9720
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center justify-between gap-4", children: [
|
|
9721
|
+
/* @__PURE__ */ jsxs58("span", { className: "text-muted-foreground", children: [
|
|
9693
9722
|
t("billing.tokens.monthly", { defaultValue: "Monthly Pages" }),
|
|
9694
9723
|
":"
|
|
9695
9724
|
] }),
|
|
9696
|
-
/* @__PURE__ */
|
|
9725
|
+
/* @__PURE__ */ jsxs58("span", { className: cn("font-medium", getStatusColor()), children: [
|
|
9697
9726
|
availableMonthlyTokens,
|
|
9698
9727
|
" / ",
|
|
9699
9728
|
monthlyTokens
|
|
9700
9729
|
] })
|
|
9701
9730
|
] }),
|
|
9702
|
-
/* @__PURE__ */
|
|
9703
|
-
/* @__PURE__ */
|
|
9731
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center justify-between gap-4", children: [
|
|
9732
|
+
/* @__PURE__ */ jsxs58("span", { className: "text-muted-foreground", children: [
|
|
9704
9733
|
t("billing.tokens.available", { defaultValue: "Available" }),
|
|
9705
9734
|
":"
|
|
9706
9735
|
] }),
|
|
9707
|
-
/* @__PURE__ */
|
|
9736
|
+
/* @__PURE__ */ jsxs58("span", { className: cn("font-medium", getStatusColor()), children: [
|
|
9708
9737
|
percentage.toFixed(0),
|
|
9709
9738
|
"%"
|
|
9710
9739
|
] })
|
|
9711
9740
|
] }),
|
|
9712
|
-
/* @__PURE__ */
|
|
9713
|
-
/* @__PURE__ */
|
|
9714
|
-
/* @__PURE__ */
|
|
9715
|
-
/* @__PURE__ */
|
|
9741
|
+
/* @__PURE__ */ jsx100(Link2, { href: "/settings/billing?action=subscribe", className: "w-full flex justify-end my-4", children: /* @__PURE__ */ jsx100(Button, { variant: "outline", size: "sm", children: t("billing.tokens.upgrade_plan", { defaultValue: "Upgrade plan" }) }) }),
|
|
9742
|
+
/* @__PURE__ */ jsx100(Separator, {}),
|
|
9743
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center justify-between gap-4 pt-1 mt-1", children: [
|
|
9744
|
+
/* @__PURE__ */ jsxs58("span", { className: "text-muted-foreground", children: [
|
|
9716
9745
|
t("billing.tokens.available_extra", { defaultValue: "Extra Pages" }),
|
|
9717
9746
|
":"
|
|
9718
9747
|
] }),
|
|
9719
|
-
/* @__PURE__ */
|
|
9748
|
+
/* @__PURE__ */ jsx100("span", { className: "font-medium text-blue-500", children: availableExtraTokens })
|
|
9720
9749
|
] }),
|
|
9721
|
-
/* @__PURE__ */
|
|
9750
|
+
/* @__PURE__ */ jsx100(Link2, { href: "/settings/billing?action=subscribe", className: "w-full flex justify-end my-4", children: /* @__PURE__ */ jsx100(Button, { variant: "outline", size: "sm", children: t("billing.tokens.purchase_extra", { defaultValue: "Purchase additional analysis" }) }) })
|
|
9722
9751
|
] })
|
|
9723
9752
|
] });
|
|
9724
|
-
return /* @__PURE__ */
|
|
9725
|
-
/* @__PURE__ */
|
|
9753
|
+
return /* @__PURE__ */ jsxs58(Tooltip2, { children: [
|
|
9754
|
+
/* @__PURE__ */ jsx100(TooltipTrigger, { children: /* @__PURE__ */ jsxs58(
|
|
9726
9755
|
"div",
|
|
9727
9756
|
{
|
|
9728
9757
|
className: cn("inline-flex items-center gap-1.5 cursor-default", className),
|
|
9729
9758
|
"aria-label": t("billing.tokens.status", { defaultValue: "Page Status" }),
|
|
9730
9759
|
children: [
|
|
9731
9760
|
getBatteryIcon(),
|
|
9732
|
-
/* @__PURE__ */
|
|
9733
|
-
showExtraPages && availableExtraTokens > 0 && /* @__PURE__ */
|
|
9734
|
-
/* @__PURE__ */
|
|
9735
|
-
/* @__PURE__ */
|
|
9761
|
+
/* @__PURE__ */ jsx100("span", { className: cn(textSize, "text-muted-foreground font-medium"), children: availableMonthlyTokens }),
|
|
9762
|
+
showExtraPages && availableExtraTokens > 0 && /* @__PURE__ */ jsxs58("div", { className: "inline-flex items-center gap-0.5", children: [
|
|
9763
|
+
/* @__PURE__ */ jsx100(PlusCircle, { className: cn(smallIconSize, "text-blue-500") }),
|
|
9764
|
+
/* @__PURE__ */ jsx100("span", { className: cn(textSize, "text-blue-500 font-medium"), children: availableExtraTokens })
|
|
9736
9765
|
] })
|
|
9737
9766
|
]
|
|
9738
9767
|
}
|
|
9739
9768
|
) }),
|
|
9740
|
-
/* @__PURE__ */
|
|
9769
|
+
/* @__PURE__ */ jsx100(TooltipContent, { side: "top", className: "max-w-xs", children: tooltipContent })
|
|
9741
9770
|
] });
|
|
9742
9771
|
}
|
|
9743
9772
|
__name(TokenStatusIndicator, "TokenStatusIndicator");
|
|
@@ -9752,7 +9781,7 @@ import z2 from "zod";
|
|
|
9752
9781
|
|
|
9753
9782
|
// src/features/company/components/forms/CompanyConfigurationSecurityForm.tsx
|
|
9754
9783
|
import { useTranslations as useTranslations27 } from "next-intl";
|
|
9755
|
-
import { jsx as
|
|
9784
|
+
import { jsx as jsx101 } from "react/jsx-runtime";
|
|
9756
9785
|
var providerConfig = {
|
|
9757
9786
|
fields: ["isManagedKnowledge", "allowPublicBot"],
|
|
9758
9787
|
defaults: {}
|
|
@@ -9779,7 +9808,7 @@ function CompanyConfigurationSecurityForm({ form }) {
|
|
|
9779
9808
|
type = "checkbox";
|
|
9780
9809
|
break;
|
|
9781
9810
|
}
|
|
9782
|
-
return /* @__PURE__ */
|
|
9811
|
+
return /* @__PURE__ */ jsx101(
|
|
9783
9812
|
FormFieldWrapper,
|
|
9784
9813
|
{
|
|
9785
9814
|
form,
|
|
@@ -9788,7 +9817,7 @@ function CompanyConfigurationSecurityForm({ form }) {
|
|
|
9788
9817
|
description: type === "checkbox" ? placeholder : void 0,
|
|
9789
9818
|
isRequired,
|
|
9790
9819
|
orientation: type === "checkbox" ? "horizontal" : "vertical",
|
|
9791
|
-
children: (field) => type === "checkbox" ? /* @__PURE__ */
|
|
9820
|
+
children: (field) => type === "checkbox" ? /* @__PURE__ */ jsx101(
|
|
9792
9821
|
Checkbox,
|
|
9793
9822
|
{
|
|
9794
9823
|
id: currentField,
|
|
@@ -9797,18 +9826,18 @@ function CompanyConfigurationSecurityForm({ form }) {
|
|
|
9797
9826
|
return checked ? field.onChange(true) : field.onChange(false);
|
|
9798
9827
|
}
|
|
9799
9828
|
}
|
|
9800
|
-
) : /* @__PURE__ */
|
|
9829
|
+
) : /* @__PURE__ */ jsx101(Input, { type, placeholder, ...field })
|
|
9801
9830
|
},
|
|
9802
9831
|
currentField
|
|
9803
9832
|
);
|
|
9804
9833
|
});
|
|
9805
9834
|
}, "renderProviderFields");
|
|
9806
|
-
return /* @__PURE__ */
|
|
9835
|
+
return /* @__PURE__ */ jsx101("div", { className: "space-y-4", children: /* @__PURE__ */ jsx101("div", { className: "space-y-4 border-t pt-4", children: renderProviderFields() }) });
|
|
9807
9836
|
}
|
|
9808
9837
|
__name(CompanyConfigurationSecurityForm, "CompanyConfigurationSecurityForm");
|
|
9809
9838
|
|
|
9810
9839
|
// src/features/company/components/forms/CompanyConfigurationEditor.tsx
|
|
9811
|
-
import { jsx as
|
|
9840
|
+
import { jsx as jsx102, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
9812
9841
|
function CompanyConfigurationEditorInternal({ company }) {
|
|
9813
9842
|
const [open, setOpen] = useState25(false);
|
|
9814
9843
|
const t = useTranslations28();
|
|
@@ -9865,20 +9894,20 @@ function CompanyConfigurationEditorInternal({ company }) {
|
|
|
9865
9894
|
});
|
|
9866
9895
|
}
|
|
9867
9896
|
}, "onSubmit");
|
|
9868
|
-
return /* @__PURE__ */
|
|
9869
|
-
/* @__PURE__ */
|
|
9870
|
-
/* @__PURE__ */
|
|
9871
|
-
/* @__PURE__ */
|
|
9872
|
-
/* @__PURE__ */
|
|
9873
|
-
/* @__PURE__ */
|
|
9897
|
+
return /* @__PURE__ */ jsxs59(Dialog, { open, onOpenChange: setOpen, children: [
|
|
9898
|
+
/* @__PURE__ */ jsx102(DialogTrigger, { children: /* @__PURE__ */ jsx102(Button, { size: "sm", variant: `ghost`, className: "cursor-pointer", children: /* @__PURE__ */ jsx102(Settings2Icon, { className: "h-3.5 w-3.5" }) }) }),
|
|
9899
|
+
/* @__PURE__ */ jsxs59(DialogContent, { className: `flex max-h-[70vh] max-w-4xl flex-col overflow-y-auto`, children: [
|
|
9900
|
+
/* @__PURE__ */ jsxs59(DialogHeader, { children: [
|
|
9901
|
+
/* @__PURE__ */ jsx102(DialogTitle, { children: t(`entities.configurations`, { count: 2 }) }),
|
|
9902
|
+
/* @__PURE__ */ jsx102(DialogDescription, { className: "text-destructive", children: t(`features.configuration.warning_description`) })
|
|
9874
9903
|
] }),
|
|
9875
|
-
/* @__PURE__ */
|
|
9876
|
-
/* @__PURE__ */
|
|
9877
|
-
/* @__PURE__ */
|
|
9878
|
-
/* @__PURE__ */
|
|
9879
|
-
/* @__PURE__ */
|
|
9904
|
+
/* @__PURE__ */ jsx102(Form, { ...form, children: /* @__PURE__ */ jsxs59("form", { onSubmit: form.handleSubmit(onSubmit), className: `flex w-full flex-col gap-y-4`, children: [
|
|
9905
|
+
/* @__PURE__ */ jsx102("div", { className: `flex flex-row gap-x-4`, children: /* @__PURE__ */ jsx102("div", { className: `flex w-full flex-col justify-start gap-y-4`, children: /* @__PURE__ */ jsxs59(Tabs, { defaultValue: process.env.NEXT_PUBLIC_PRIVATE_INSTALLATION ? "security" : "ai", children: [
|
|
9906
|
+
/* @__PURE__ */ jsx102(TabsList, { children: /* @__PURE__ */ jsx102(TabsTrigger, { value: "security", children: "Privacy & Security" }) }),
|
|
9907
|
+
/* @__PURE__ */ jsx102(TabsContent, { value: "features", children: /* @__PURE__ */ jsx102("div", { className: "space-y-4", children: /* @__PURE__ */ jsx102("p", { className: "text-muted-foreground text-sm", children: "Feature configuration will be implemented in future updates." }) }) }),
|
|
9908
|
+
/* @__PURE__ */ jsx102(TabsContent, { value: "security", children: /* @__PURE__ */ jsx102(CompanyConfigurationSecurityForm, { form }) })
|
|
9880
9909
|
] }) }) }),
|
|
9881
|
-
/* @__PURE__ */
|
|
9910
|
+
/* @__PURE__ */ jsx102(CommonEditorButtons, { form, setOpen, isEdit: true })
|
|
9882
9911
|
] }) })
|
|
9883
9912
|
] })
|
|
9884
9913
|
] });
|
|
@@ -9886,8 +9915,8 @@ function CompanyConfigurationEditorInternal({ company }) {
|
|
|
9886
9915
|
__name(CompanyConfigurationEditorInternal, "CompanyConfigurationEditorInternal");
|
|
9887
9916
|
function CompanyConfigurationEditor(props) {
|
|
9888
9917
|
const { hasRole } = useCurrentUserContext();
|
|
9889
|
-
if (hasRole(getRoleId().Administrator)) return /* @__PURE__ */
|
|
9890
|
-
return /* @__PURE__ */
|
|
9918
|
+
if (hasRole(getRoleId().Administrator)) return /* @__PURE__ */ jsx102(CompanyConfigurationEditorInternal, { ...props });
|
|
9919
|
+
return /* @__PURE__ */ jsx102(CompanyConfigurationEditorInternal, { ...props });
|
|
9891
9920
|
}
|
|
9892
9921
|
__name(CompanyConfigurationEditor, "CompanyConfigurationEditor");
|
|
9893
9922
|
|
|
@@ -9895,7 +9924,7 @@ __name(CompanyConfigurationEditor, "CompanyConfigurationEditor");
|
|
|
9895
9924
|
import { LoaderCircleIcon as LoaderCircleIcon2, Trash2Icon as Trash2Icon2 } from "lucide-react";
|
|
9896
9925
|
import { useTranslations as useTranslations29 } from "next-intl";
|
|
9897
9926
|
import { useState as useState26 } from "react";
|
|
9898
|
-
import { Fragment as Fragment10, jsx as
|
|
9927
|
+
import { Fragment as Fragment10, jsx as jsx103, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
9899
9928
|
function CompanyDeleterInternal({ company }) {
|
|
9900
9929
|
const t = useTranslations29();
|
|
9901
9930
|
const router = useI18nRouter();
|
|
@@ -9912,25 +9941,25 @@ function CompanyDeleterInternal({ company }) {
|
|
|
9912
9941
|
}
|
|
9913
9942
|
setIsDeleting(false);
|
|
9914
9943
|
}, "handleDelete");
|
|
9915
|
-
return /* @__PURE__ */
|
|
9916
|
-
/* @__PURE__ */
|
|
9917
|
-
/* @__PURE__ */
|
|
9944
|
+
return /* @__PURE__ */ jsxs60(AlertDialog, { open, onOpenChange: setOpen, children: [
|
|
9945
|
+
/* @__PURE__ */ jsx103(AlertDialogTrigger, { children: /* @__PURE__ */ jsxs60(Button, { size: "sm", variant: "destructive", children: [
|
|
9946
|
+
/* @__PURE__ */ jsx103(Trash2Icon2, { className: "mr-3 h-3.5 w-3.5" }),
|
|
9918
9947
|
t(`ui.buttons.delete`)
|
|
9919
9948
|
] }) }),
|
|
9920
|
-
/* @__PURE__ */
|
|
9921
|
-
/* @__PURE__ */
|
|
9922
|
-
/* @__PURE__ */
|
|
9923
|
-
/* @__PURE__ */
|
|
9949
|
+
/* @__PURE__ */ jsxs60(AlertDialogContent, { className: `flex max-h-[70vh] max-w-3xl flex-col overflow-y-auto`, children: [
|
|
9950
|
+
/* @__PURE__ */ jsxs60(AlertDialogHeader, { children: [
|
|
9951
|
+
/* @__PURE__ */ jsx103(AlertDialogTitle, { children: t(`common.delete.title`, { type: t(`entities.companies`, { count: 1 }) }) }),
|
|
9952
|
+
/* @__PURE__ */ jsx103(AlertDialogDescription, { children: t(`common.delete.subtitle`, { type: t(`entities.companies`, { count: 1 }) }) })
|
|
9924
9953
|
] }),
|
|
9925
|
-
/* @__PURE__ */
|
|
9926
|
-
/* @__PURE__ */
|
|
9927
|
-
/* @__PURE__ */
|
|
9928
|
-
/* @__PURE__ */
|
|
9929
|
-
/* @__PURE__ */
|
|
9954
|
+
/* @__PURE__ */ jsx103("div", { className: "text-destructive p-4 text-sm", children: t(`common.delete.description`, { type: t(`entities.companies`, { count: 1 }) }) }),
|
|
9955
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex w-full flex-col gap-y-2", children: [
|
|
9956
|
+
/* @__PURE__ */ jsx103("div", { children: t(`common.delete.confirmation`, { type: t(`entities.companies`, { count: 1 }) }) }),
|
|
9957
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex w-full flex-col", children: [
|
|
9958
|
+
/* @__PURE__ */ jsxs60(Label, { className: "flex items-center", children: [
|
|
9930
9959
|
t(`company.fields.name.label`),
|
|
9931
|
-
/* @__PURE__ */
|
|
9960
|
+
/* @__PURE__ */ jsx103("span", { className: "text-destructive ml-2 font-semibold", children: "*" })
|
|
9932
9961
|
] }),
|
|
9933
|
-
/* @__PURE__ */
|
|
9962
|
+
/* @__PURE__ */ jsx103(
|
|
9934
9963
|
Input,
|
|
9935
9964
|
{
|
|
9936
9965
|
className: `w-full`,
|
|
@@ -9940,8 +9969,8 @@ function CompanyDeleterInternal({ company }) {
|
|
|
9940
9969
|
)
|
|
9941
9970
|
] })
|
|
9942
9971
|
] }),
|
|
9943
|
-
/* @__PURE__ */
|
|
9944
|
-
/* @__PURE__ */
|
|
9972
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex justify-end", children: [
|
|
9973
|
+
/* @__PURE__ */ jsx103(
|
|
9945
9974
|
Button,
|
|
9946
9975
|
{
|
|
9947
9976
|
className: "mr-2",
|
|
@@ -9952,7 +9981,7 @@ function CompanyDeleterInternal({ company }) {
|
|
|
9952
9981
|
children: t(`ui.buttons.cancel`)
|
|
9953
9982
|
}
|
|
9954
9983
|
),
|
|
9955
|
-
/* @__PURE__ */
|
|
9984
|
+
/* @__PURE__ */ jsx103(
|
|
9956
9985
|
Button,
|
|
9957
9986
|
{
|
|
9958
9987
|
type: "submit",
|
|
@@ -9962,9 +9991,9 @@ function CompanyDeleterInternal({ company }) {
|
|
|
9962
9991
|
},
|
|
9963
9992
|
variant: "destructive",
|
|
9964
9993
|
disabled: company.name !== companyName || isDeleting,
|
|
9965
|
-
children: isDeleting ? /* @__PURE__ */
|
|
9994
|
+
children: isDeleting ? /* @__PURE__ */ jsxs60(Fragment10, { children: [
|
|
9966
9995
|
t(`ui.buttons.deleting`),
|
|
9967
|
-
/* @__PURE__ */
|
|
9996
|
+
/* @__PURE__ */ jsx103(LoaderCircleIcon2, { className: "animate-spin-slow h-5 w-5" })
|
|
9968
9997
|
] }) : t(`ui.buttons.delete`)
|
|
9969
9998
|
}
|
|
9970
9999
|
)
|
|
@@ -9977,7 +10006,7 @@ function CompanyDeleter({ company }) {
|
|
|
9977
10006
|
const { hasPermissionToModule, hasRole } = useCurrentUserContext();
|
|
9978
10007
|
if (!hasRole(getRoleId().Administrator) && !hasPermissionToModule({ module: Modules.Company, action: "delete" /* Delete */ }))
|
|
9979
10008
|
return null;
|
|
9980
|
-
return /* @__PURE__ */
|
|
10009
|
+
return /* @__PURE__ */ jsx103(CompanyDeleterInternal, { company });
|
|
9981
10010
|
}
|
|
9982
10011
|
__name(CompanyDeleter, "CompanyDeleter");
|
|
9983
10012
|
|
|
@@ -9991,7 +10020,7 @@ import { useEffect as useEffect20, useState as useState27 } from "react";
|
|
|
9991
10020
|
import { useForm as useForm3 } from "react-hook-form";
|
|
9992
10021
|
import { v4 as v42 } from "uuid";
|
|
9993
10022
|
import { z as z3 } from "zod";
|
|
9994
|
-
import { Fragment as Fragment11, jsx as
|
|
10023
|
+
import { Fragment as Fragment11, jsx as jsx104, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
9995
10024
|
function CompanyEditorInternal({ company, propagateChanges, onRevalidate }) {
|
|
9996
10025
|
const { hasRole } = useCurrentUserContext();
|
|
9997
10026
|
const router = useI18nRouter();
|
|
@@ -10106,17 +10135,17 @@ function CompanyEditorInternal({ company, propagateChanges, onRevalidate }) {
|
|
|
10106
10135
|
};
|
|
10107
10136
|
const canAccessFeatures = hasRole(getRoleId().Administrator) || hasRole(getRoleId().CompanyAdministrator) && process.env.NEXT_PUBLIC_PRIVATE_INSTALLATION?.toLowerCase() === "true";
|
|
10108
10137
|
const isAdministrator = hasRole(getRoleId().Administrator);
|
|
10109
|
-
return /* @__PURE__ */
|
|
10110
|
-
/* @__PURE__ */
|
|
10111
|
-
/* @__PURE__ */
|
|
10138
|
+
return /* @__PURE__ */ jsxs61(Dialog, { open, onOpenChange: setOpen, children: [
|
|
10139
|
+
/* @__PURE__ */ jsx104(CommonEditorTrigger, { isEdit: !!company }),
|
|
10140
|
+
/* @__PURE__ */ jsxs61(
|
|
10112
10141
|
DialogContent,
|
|
10113
10142
|
{
|
|
10114
10143
|
className: `flex max-h-[70vh] w-full ${isAdministrator || canAccessFeatures ? `max-w-5xl` : `max-w-4xl`} flex-col overflow-y-auto`,
|
|
10115
10144
|
children: [
|
|
10116
|
-
/* @__PURE__ */
|
|
10117
|
-
/* @__PURE__ */
|
|
10118
|
-
/* @__PURE__ */
|
|
10119
|
-
/* @__PURE__ */
|
|
10145
|
+
/* @__PURE__ */ jsx104(CommonEditorHeader, { type: t(`entities.companies`, { count: 1 }), name: company?.name }),
|
|
10146
|
+
/* @__PURE__ */ jsx104(Form, { ...form, children: /* @__PURE__ */ jsxs61("form", { onSubmit: form.handleSubmit(onSubmit), className: `flex w-full flex-col gap-y-4`, children: [
|
|
10147
|
+
/* @__PURE__ */ jsxs61("div", { className: "flex w-full items-start justify-between gap-x-4", children: [
|
|
10148
|
+
/* @__PURE__ */ jsx104("div", { className: `flex w-96 flex-col justify-start gap-y-4`, children: /* @__PURE__ */ jsx104(FileUploader, { value: files, onValueChange: setFiles, dropzoneOptions: dropzone2, className: "w-full p-4", children: /* @__PURE__ */ jsx104(FileInput, { className: "text-neutral-300 outline-dashed", children: /* @__PURE__ */ jsx104("div", { className: "flex w-full flex-col items-center justify-center pt-3 pb-4", children: /* @__PURE__ */ jsx104("div", { className: "flex w-full flex-col items-center justify-center pt-3 pb-4", children: file || company?.logo ? /* @__PURE__ */ jsx104(
|
|
10120
10149
|
Image6,
|
|
10121
10150
|
{
|
|
10122
10151
|
src: file ? URL.createObjectURL(file) : company?.logo || "",
|
|
@@ -10124,11 +10153,11 @@ function CompanyEditorInternal({ company, propagateChanges, onRevalidate }) {
|
|
|
10124
10153
|
width: 200,
|
|
10125
10154
|
height: 200
|
|
10126
10155
|
}
|
|
10127
|
-
) : /* @__PURE__ */
|
|
10128
|
-
/* @__PURE__ */
|
|
10129
|
-
/* @__PURE__ */
|
|
10156
|
+
) : /* @__PURE__ */ jsxs61(Fragment11, { children: [
|
|
10157
|
+
/* @__PURE__ */ jsx104(UploadIcon3, { className: "my-4 h-8 w-8" }),
|
|
10158
|
+
/* @__PURE__ */ jsx104("p", { className: "mb-1 flex w-full text-center text-sm", children: t(`company.click_drag_logo`) })
|
|
10130
10159
|
] }) }) }) }) }) }),
|
|
10131
|
-
/* @__PURE__ */
|
|
10160
|
+
/* @__PURE__ */ jsx104("div", { className: `flex w-full flex-col justify-start gap-y-4`, children: /* @__PURE__ */ jsx104(
|
|
10132
10161
|
FormInput,
|
|
10133
10162
|
{
|
|
10134
10163
|
form,
|
|
@@ -10137,9 +10166,9 @@ function CompanyEditorInternal({ company, propagateChanges, onRevalidate }) {
|
|
|
10137
10166
|
placeholder: t(`company.fields.name.placeholder`)
|
|
10138
10167
|
}
|
|
10139
10168
|
) }),
|
|
10140
|
-
canAccessFeatures && /* @__PURE__ */
|
|
10169
|
+
canAccessFeatures && /* @__PURE__ */ jsx104("div", { className: `flex w-96 flex-col justify-start gap-y-4`, children: /* @__PURE__ */ jsx104(ScrollArea, { className: "h-max", children: /* @__PURE__ */ jsx104(FormFeatures, { form, name: t(`company.features_and_modules`), features }) }) })
|
|
10141
10170
|
] }),
|
|
10142
|
-
/* @__PURE__ */
|
|
10171
|
+
/* @__PURE__ */ jsx104(CommonEditorButtons, { form, setOpen, isEdit: !!company })
|
|
10143
10172
|
] }) })
|
|
10144
10173
|
]
|
|
10145
10174
|
}
|
|
@@ -10148,13 +10177,13 @@ function CompanyEditorInternal({ company, propagateChanges, onRevalidate }) {
|
|
|
10148
10177
|
}
|
|
10149
10178
|
__name(CompanyEditorInternal, "CompanyEditorInternal");
|
|
10150
10179
|
function CompanyEditor(props) {
|
|
10151
|
-
return /* @__PURE__ */
|
|
10180
|
+
return /* @__PURE__ */ jsx104(CompanyEditorInternal, { ...props });
|
|
10152
10181
|
}
|
|
10153
10182
|
__name(CompanyEditor, "CompanyEditor");
|
|
10154
10183
|
|
|
10155
10184
|
// src/features/company/components/lists/CompaniesList.tsx
|
|
10156
10185
|
import { useTranslations as useTranslations31 } from "next-intl";
|
|
10157
|
-
import { jsx as
|
|
10186
|
+
import { jsx as jsx105 } from "react/jsx-runtime";
|
|
10158
10187
|
function CompaniesList() {
|
|
10159
10188
|
const t = useTranslations31();
|
|
10160
10189
|
const data = useDataListRetriever({
|
|
@@ -10162,8 +10191,8 @@ function CompaniesList() {
|
|
|
10162
10191
|
retrieverParams: {},
|
|
10163
10192
|
module: Modules.Company
|
|
10164
10193
|
});
|
|
10165
|
-
const functions = [/* @__PURE__ */
|
|
10166
|
-
return /* @__PURE__ */
|
|
10194
|
+
const functions = [/* @__PURE__ */ jsx105(CompanyEditor, {}, "create-account")];
|
|
10195
|
+
return /* @__PURE__ */ jsx105(
|
|
10167
10196
|
ContentListTable,
|
|
10168
10197
|
{
|
|
10169
10198
|
data,
|
|
@@ -10177,7 +10206,7 @@ function CompaniesList() {
|
|
|
10177
10206
|
__name(CompaniesList, "CompaniesList");
|
|
10178
10207
|
|
|
10179
10208
|
// src/features/company/contexts/CompanyContext.tsx
|
|
10180
|
-
import { jsx as
|
|
10209
|
+
import { jsx as jsx106 } from "react/jsx-runtime";
|
|
10181
10210
|
var CompanyContext = createContext10(void 0);
|
|
10182
10211
|
var defaultContextValue2 = {
|
|
10183
10212
|
company: void 0,
|
|
@@ -10207,14 +10236,14 @@ var CompanyProvider = /* @__PURE__ */ __name(({ children, dehydratedCompany }) =
|
|
|
10207
10236
|
if (company) response.element = company.name;
|
|
10208
10237
|
const functions = [];
|
|
10209
10238
|
if (company && hasRole(getRoleId().Administrator) && hasPermissionToModule({ module: Modules.Company, action: "delete" /* Delete */ }))
|
|
10210
|
-
functions.push(/* @__PURE__ */
|
|
10239
|
+
functions.push(/* @__PURE__ */ jsx106(CompanyDeleter, { company }, "companyDeleter"));
|
|
10211
10240
|
if (hasRole(getRoleId().Administrator) || hasPermissionToModule({ module: Modules.Company, action: "update" /* Update */ })) {
|
|
10212
|
-
functions.push(/* @__PURE__ */
|
|
10241
|
+
functions.push(/* @__PURE__ */ jsx106(CompanyEditor, { company, propagateChanges: setCompany }, "companyEditor"));
|
|
10213
10242
|
}
|
|
10214
10243
|
if (functions.length > 0) response.functions = functions;
|
|
10215
10244
|
return response;
|
|
10216
10245
|
}, "title");
|
|
10217
|
-
return /* @__PURE__ */
|
|
10246
|
+
return /* @__PURE__ */ jsx106(SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ jsx106(
|
|
10218
10247
|
CompanyContext.Provider,
|
|
10219
10248
|
{
|
|
10220
10249
|
value: {
|
|
@@ -10236,7 +10265,7 @@ import { createContext as createContext11, useCallback as useCallback13, useCont
|
|
|
10236
10265
|
// src/features/notification/components/notifications/Notification.tsx
|
|
10237
10266
|
import { useTranslations as useTranslations33 } from "next-intl";
|
|
10238
10267
|
import { useEffect as useEffect21, useState as useState29 } from "react";
|
|
10239
|
-
import { jsx as
|
|
10268
|
+
import { jsx as jsx107, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
10240
10269
|
var generateNotificationData = /* @__PURE__ */ __name((params) => {
|
|
10241
10270
|
const response = {};
|
|
10242
10271
|
response.actor = params.notification.actor;
|
|
@@ -10249,16 +10278,16 @@ function NotificationToast(notification, t, generateUrl, reouter) {
|
|
|
10249
10278
|
const data = generateNotificationData({ notification, generateUrl });
|
|
10250
10279
|
return {
|
|
10251
10280
|
title: t(`notification.${notification.notificationType}.title`),
|
|
10252
|
-
description: /* @__PURE__ */
|
|
10253
|
-
data.actor ? /* @__PURE__ */
|
|
10254
|
-
/* @__PURE__ */
|
|
10255
|
-
/* @__PURE__ */
|
|
10256
|
-
strong: /* @__PURE__ */ __name((chunks) => /* @__PURE__ */
|
|
10281
|
+
description: /* @__PURE__ */ jsxs62("div", { className: `flex w-full flex-row items-center p-2`, children: [
|
|
10282
|
+
data.actor ? /* @__PURE__ */ jsx107("div", { className: "flex w-12 max-w-12 px-2", children: /* @__PURE__ */ jsx107(UserAvatar, { user: data.actor, className: "h-8 w-8" }) }) : /* @__PURE__ */ jsx107("div", { className: "flex w-14 max-w-14 px-2" }),
|
|
10283
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex w-full flex-col", children: [
|
|
10284
|
+
/* @__PURE__ */ jsx107("p", { className: "text-sm", children: t.rich(`notification.${notification.notificationType}.description`, {
|
|
10285
|
+
strong: /* @__PURE__ */ __name((chunks) => /* @__PURE__ */ jsx107("strong", { children: chunks }), "strong"),
|
|
10257
10286
|
actor: data.actor?.name ?? "",
|
|
10258
10287
|
title: data.title,
|
|
10259
10288
|
message: notification.message ?? ""
|
|
10260
10289
|
}) }),
|
|
10261
|
-
/* @__PURE__ */
|
|
10290
|
+
/* @__PURE__ */ jsx107("div", { className: "text-muted-foreground mt-1 w-full text-xs", children: new Date(notification.createdAt).toLocaleString() })
|
|
10262
10291
|
] })
|
|
10263
10292
|
] }),
|
|
10264
10293
|
action: data.url ? {
|
|
@@ -10278,25 +10307,25 @@ function NotificationMenuItem({ notification, closePopover }) {
|
|
|
10278
10307
|
setIsRead(notification.isRead);
|
|
10279
10308
|
}, []);
|
|
10280
10309
|
const data = generateNotificationData({ notification, generateUrl });
|
|
10281
|
-
const response = /* @__PURE__ */
|
|
10282
|
-
data.actor ? /* @__PURE__ */
|
|
10283
|
-
/* @__PURE__ */
|
|
10284
|
-
/* @__PURE__ */
|
|
10285
|
-
strong: /* @__PURE__ */ __name((chunks) => /* @__PURE__ */
|
|
10310
|
+
const response = /* @__PURE__ */ jsxs62("div", { className: `flex w-full flex-row p-2 ${isRead ? "" : "bg-muted"} items-center`, children: [
|
|
10311
|
+
data.actor ? /* @__PURE__ */ jsx107("div", { className: "flex w-12 max-w-12 px-2", children: /* @__PURE__ */ jsx107(UserAvatar, { user: data.actor, className: "h-8 w-8" }) }) : /* @__PURE__ */ jsx107("div", { className: "flex w-14 max-w-14 px-2" }),
|
|
10312
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex w-full flex-col", children: [
|
|
10313
|
+
/* @__PURE__ */ jsx107("p", { className: "text-sm", children: t.rich(`notification.${notification.notificationType}.description`, {
|
|
10314
|
+
strong: /* @__PURE__ */ __name((chunks) => /* @__PURE__ */ jsx107("strong", { children: chunks }), "strong"),
|
|
10286
10315
|
actor: data.actor?.name ?? "",
|
|
10287
10316
|
title: data.title,
|
|
10288
10317
|
message: notification.message ?? ""
|
|
10289
10318
|
}) }),
|
|
10290
|
-
/* @__PURE__ */
|
|
10319
|
+
/* @__PURE__ */ jsx107("div", { className: "text-muted-foreground mt-1 w-full text-xs", children: new Date(notification.createdAt).toLocaleString() })
|
|
10291
10320
|
] })
|
|
10292
10321
|
] });
|
|
10293
10322
|
if (!data.url) return response;
|
|
10294
|
-
return /* @__PURE__ */
|
|
10323
|
+
return /* @__PURE__ */ jsx107(Link, { href: data.url, onClick: closePopover, children: response });
|
|
10295
10324
|
}
|
|
10296
10325
|
__name(NotificationMenuItem, "NotificationMenuItem");
|
|
10297
10326
|
|
|
10298
10327
|
// src/features/notification/contexts/NotificationContext.tsx
|
|
10299
|
-
import { jsx as
|
|
10328
|
+
import { jsx as jsx108 } from "react/jsx-runtime";
|
|
10300
10329
|
var NotificationContext = createContext11(void 0);
|
|
10301
10330
|
var NotificationContextProvider = /* @__PURE__ */ __name(({ children }) => {
|
|
10302
10331
|
const t = useTranslations34();
|
|
@@ -10382,7 +10411,7 @@ var NotificationContextProvider = /* @__PURE__ */ __name(({ children }) => {
|
|
|
10382
10411
|
return NotificationToast(notification, t2, generateUrl, router);
|
|
10383
10412
|
}, "generateToastNotification");
|
|
10384
10413
|
const generateNotification = /* @__PURE__ */ __name((notification, closePopover) => {
|
|
10385
|
-
return /* @__PURE__ */
|
|
10414
|
+
return /* @__PURE__ */ jsx108(NotificationMenuItem, { notification, closePopover });
|
|
10386
10415
|
}, "generateNotification");
|
|
10387
10416
|
const breadcrumb = /* @__PURE__ */ __name(() => {
|
|
10388
10417
|
const response = [];
|
|
@@ -10397,7 +10426,7 @@ var NotificationContextProvider = /* @__PURE__ */ __name(({ children }) => {
|
|
|
10397
10426
|
};
|
|
10398
10427
|
return response;
|
|
10399
10428
|
}, "title");
|
|
10400
|
-
return /* @__PURE__ */
|
|
10429
|
+
return /* @__PURE__ */ jsx108(SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ jsx108(
|
|
10401
10430
|
NotificationContext.Provider,
|
|
10402
10431
|
{
|
|
10403
10432
|
value: {
|
|
@@ -10429,7 +10458,7 @@ var useNotificationContext = /* @__PURE__ */ __name(() => {
|
|
|
10429
10458
|
// src/features/role/contexts/RoleContext.tsx
|
|
10430
10459
|
import { useTranslations as useTranslations35 } from "next-intl";
|
|
10431
10460
|
import { createContext as createContext12, useContext as useContext13, useState as useState31 } from "react";
|
|
10432
|
-
import { jsx as
|
|
10461
|
+
import { jsx as jsx109 } from "react/jsx-runtime";
|
|
10433
10462
|
var RoleContext = createContext12(void 0);
|
|
10434
10463
|
var RoleProvider = /* @__PURE__ */ __name(({ children, dehydratedRole }) => {
|
|
10435
10464
|
const generateUrl = usePageUrlGenerator();
|
|
@@ -10461,7 +10490,7 @@ var RoleProvider = /* @__PURE__ */ __name(({ children, dehydratedRole }) => {
|
|
|
10461
10490
|
if (functions.length > 0) response.functions = functions;
|
|
10462
10491
|
return response;
|
|
10463
10492
|
}, "title");
|
|
10464
|
-
return /* @__PURE__ */
|
|
10493
|
+
return /* @__PURE__ */ jsx109(SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ jsx109(
|
|
10465
10494
|
RoleContext.Provider,
|
|
10466
10495
|
{
|
|
10467
10496
|
value: {
|
|
@@ -10486,10 +10515,10 @@ import { createContext as createContext14, useContext as useContext15 } from "re
|
|
|
10486
10515
|
|
|
10487
10516
|
// src/contexts/SharedContext.tsx
|
|
10488
10517
|
import { createContext as createContext13, useContext as useContext14 } from "react";
|
|
10489
|
-
import { jsx as
|
|
10518
|
+
import { jsx as jsx110 } from "react/jsx-runtime";
|
|
10490
10519
|
var SharedContext = createContext13(null);
|
|
10491
10520
|
var SharedProvider = /* @__PURE__ */ __name(({ children, value }) => {
|
|
10492
|
-
return /* @__PURE__ */
|
|
10521
|
+
return /* @__PURE__ */ jsx110(SharedContext.Provider, { value, children });
|
|
10493
10522
|
}, "SharedProvider");
|
|
10494
10523
|
var useSharedContext = /* @__PURE__ */ __name(() => {
|
|
10495
10524
|
const context = useContext14(SharedContext);
|
|
@@ -10500,7 +10529,7 @@ var useSharedContext = /* @__PURE__ */ __name(() => {
|
|
|
10500
10529
|
}, "useSharedContext");
|
|
10501
10530
|
|
|
10502
10531
|
// src/contexts/CommonContext.tsx
|
|
10503
|
-
import { jsx as
|
|
10532
|
+
import { jsx as jsx111 } from "react/jsx-runtime";
|
|
10504
10533
|
var CommonContext = createContext14(void 0);
|
|
10505
10534
|
var CommonProvider = /* @__PURE__ */ __name(({ children }) => {
|
|
10506
10535
|
const { company } = useCurrentUserContext();
|
|
@@ -10516,7 +10545,7 @@ var CommonProvider = /* @__PURE__ */ __name(({ children }) => {
|
|
|
10516
10545
|
if (company) response.element = company.name;
|
|
10517
10546
|
return response;
|
|
10518
10547
|
}, "title");
|
|
10519
|
-
return /* @__PURE__ */
|
|
10548
|
+
return /* @__PURE__ */ jsx111(SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ jsx111(CommonContext.Provider, { value: {}, children }) });
|
|
10520
10549
|
}, "CommonProvider");
|
|
10521
10550
|
var useCommonContext = /* @__PURE__ */ __name(() => {
|
|
10522
10551
|
const context = useContext15(CommonContext);
|
|
@@ -10795,30 +10824,30 @@ function useSocket({ token }) {
|
|
|
10795
10824
|
__name(useSocket, "useSocket");
|
|
10796
10825
|
|
|
10797
10826
|
// src/components/navigations/Breadcrumb.tsx
|
|
10798
|
-
import { Fragment as Fragment13, jsx as
|
|
10827
|
+
import { Fragment as Fragment13, jsx as jsx112, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
10799
10828
|
var ITEMS_TO_DISPLAY = 3;
|
|
10800
10829
|
function BreadcrumbNavigation({ items }) {
|
|
10801
10830
|
const generateUrl = usePageUrlGenerator();
|
|
10802
10831
|
const t = useTranslations37();
|
|
10803
10832
|
const [open, setOpen] = useState33(false);
|
|
10804
|
-
return /* @__PURE__ */
|
|
10805
|
-
/* @__PURE__ */
|
|
10806
|
-
items.length > 0 && /* @__PURE__ */
|
|
10807
|
-
items.length > ITEMS_TO_DISPLAY ? /* @__PURE__ */
|
|
10808
|
-
/* @__PURE__ */
|
|
10809
|
-
/* @__PURE__ */
|
|
10810
|
-
/* @__PURE__ */
|
|
10811
|
-
/* @__PURE__ */
|
|
10812
|
-
/* @__PURE__ */
|
|
10833
|
+
return /* @__PURE__ */ jsx112(Breadcrumb, { children: /* @__PURE__ */ jsxs63(BreadcrumbList, { children: [
|
|
10834
|
+
/* @__PURE__ */ jsx112(BreadcrumbItem, { children: /* @__PURE__ */ jsx112(Link, { href: generateUrl({ page: `/` }), children: t(`common.home`) }) }),
|
|
10835
|
+
items.length > 0 && /* @__PURE__ */ jsx112(BreadcrumbSeparator, {}),
|
|
10836
|
+
items.length > ITEMS_TO_DISPLAY ? /* @__PURE__ */ jsxs63(Fragment13, { children: [
|
|
10837
|
+
/* @__PURE__ */ jsx112(BreadcrumbItem, { children: items[0].href ? /* @__PURE__ */ jsx112(Link, { href: items[0].href, children: items[0].name }) : /* @__PURE__ */ jsx112(Fragment13, { children: items[0].name }) }),
|
|
10838
|
+
/* @__PURE__ */ jsx112(BreadcrumbSeparator, {}),
|
|
10839
|
+
/* @__PURE__ */ jsx112(BreadcrumbItem, { children: /* @__PURE__ */ jsxs63(DropdownMenu, { open, onOpenChange: setOpen, children: [
|
|
10840
|
+
/* @__PURE__ */ jsx112(DropdownMenuTrigger, { className: "flex items-center gap-1", "aria-label": "Toggle menu", children: /* @__PURE__ */ jsx112(BreadcrumbEllipsis, { className: "h-4 w-4" }) }),
|
|
10841
|
+
/* @__PURE__ */ jsx112(DropdownMenuContent, { align: "start", children: items.slice(1, -ITEMS_TO_DISPLAY + 1).map((item, index) => /* @__PURE__ */ jsx112(DropdownMenuItem, { children: /* @__PURE__ */ jsx112(Link, { href: item.href ? item.href : "#", children: item.name }) }, index)) })
|
|
10813
10842
|
] }) }),
|
|
10814
|
-
/* @__PURE__ */
|
|
10815
|
-
items.slice(-ITEMS_TO_DISPLAY + 1).map((item, index) => /* @__PURE__ */
|
|
10816
|
-
/* @__PURE__ */
|
|
10817
|
-
index < items.slice(-ITEMS_TO_DISPLAY + 1).length - 1 && /* @__PURE__ */
|
|
10843
|
+
/* @__PURE__ */ jsx112(BreadcrumbSeparator, {}),
|
|
10844
|
+
items.slice(-ITEMS_TO_DISPLAY + 1).map((item, index) => /* @__PURE__ */ jsxs63(Fragment12, { children: [
|
|
10845
|
+
/* @__PURE__ */ jsx112(BreadcrumbItem, { children: item.href ? /* @__PURE__ */ jsx112(Link, { href: item.href, children: item.name }) : /* @__PURE__ */ jsx112(Fragment13, { children: item.name }) }),
|
|
10846
|
+
index < items.slice(-ITEMS_TO_DISPLAY + 1).length - 1 && /* @__PURE__ */ jsx112(BreadcrumbSeparator, {})
|
|
10818
10847
|
] }, index))
|
|
10819
|
-
] }) : /* @__PURE__ */
|
|
10820
|
-
/* @__PURE__ */
|
|
10821
|
-
index < items.length - 1 && /* @__PURE__ */
|
|
10848
|
+
] }) : /* @__PURE__ */ jsx112(Fragment13, { children: items.map((item, index) => /* @__PURE__ */ jsxs63(Fragment12, { children: [
|
|
10849
|
+
/* @__PURE__ */ jsx112(BreadcrumbItem, { children: item.href ? /* @__PURE__ */ jsx112(Link, { href: item.href, children: item.name }) : /* @__PURE__ */ jsx112(Fragment13, { children: item.name }) }),
|
|
10850
|
+
index < items.length - 1 && /* @__PURE__ */ jsx112(BreadcrumbSeparator, {})
|
|
10822
10851
|
] }, index)) })
|
|
10823
10852
|
] }) });
|
|
10824
10853
|
}
|
|
@@ -10826,7 +10855,7 @@ __name(BreadcrumbNavigation, "BreadcrumbNavigation");
|
|
|
10826
10855
|
|
|
10827
10856
|
// src/components/navigations/ContentTitle.tsx
|
|
10828
10857
|
import { useEffect as useEffect27, useState as useState34 } from "react";
|
|
10829
|
-
import { jsx as
|
|
10858
|
+
import { jsx as jsx113, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
10830
10859
|
function ContentTitle({ module, type, element, functions, className }) {
|
|
10831
10860
|
const [clientFunctions, setClientFunctions] = useState34(null);
|
|
10832
10861
|
const [isClient, setIsClient] = useState34(false);
|
|
@@ -10835,15 +10864,15 @@ function ContentTitle({ module, type, element, functions, className }) {
|
|
|
10835
10864
|
setClientFunctions(functions);
|
|
10836
10865
|
}, [functions]);
|
|
10837
10866
|
if (!element) return null;
|
|
10838
|
-
return /* @__PURE__ */
|
|
10839
|
-
/* @__PURE__ */
|
|
10840
|
-
type && /* @__PURE__ */
|
|
10841
|
-
module && module.icon && /* @__PURE__ */
|
|
10867
|
+
return /* @__PURE__ */ jsxs64("div", { className: cn(`mb-4 flex items-center justify-between gap-x-4 w-full`, className), children: [
|
|
10868
|
+
/* @__PURE__ */ jsxs64("div", { className: "flex flex-col w-full", children: [
|
|
10869
|
+
type && /* @__PURE__ */ jsxs64("div", { className: `text-muted-foreground text-xl font-light flex gap-x-2 items-center`, children: [
|
|
10870
|
+
module && module.icon && /* @__PURE__ */ jsx113(module.icon, { className: "w-5 h-5 inline-block" }),
|
|
10842
10871
|
type
|
|
10843
10872
|
] }),
|
|
10844
|
-
/* @__PURE__ */
|
|
10873
|
+
/* @__PURE__ */ jsx113("div", { className: `text-primary w-full text-3xl font-semibold`, children: element })
|
|
10845
10874
|
] }),
|
|
10846
|
-
isClient && clientFunctions && /* @__PURE__ */
|
|
10875
|
+
isClient && clientFunctions && /* @__PURE__ */ jsx113("div", { className: "flex flex-row items-center justify-start", children: clientFunctions })
|
|
10847
10876
|
] });
|
|
10848
10877
|
}
|
|
10849
10878
|
__name(ContentTitle, "ContentTitle");
|
|
@@ -10851,23 +10880,23 @@ __name(ContentTitle, "ContentTitle");
|
|
|
10851
10880
|
// src/components/navigations/Header.tsx
|
|
10852
10881
|
import { RefreshCwIcon as RefreshCwIcon2 } from "lucide-react";
|
|
10853
10882
|
import { useTranslations as useTranslations38 } from "next-intl";
|
|
10854
|
-
import { jsx as
|
|
10883
|
+
import { jsx as jsx114, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
10855
10884
|
function Header({ children }) {
|
|
10856
10885
|
const t = useTranslations38();
|
|
10857
10886
|
const { breadcrumbs } = useSharedContext();
|
|
10858
10887
|
const { company, hasRole, refreshUser, isRefreshing } = useCurrentUserContext();
|
|
10859
10888
|
const showTokenStatus = !hasRole(getRoleId().Administrator) && company;
|
|
10860
|
-
return /* @__PURE__ */
|
|
10861
|
-
/* @__PURE__ */
|
|
10862
|
-
/* @__PURE__ */
|
|
10863
|
-
/* @__PURE__ */
|
|
10864
|
-
showTokenStatus && /* @__PURE__ */
|
|
10865
|
-
/* @__PURE__ */
|
|
10866
|
-
/* @__PURE__ */
|
|
10867
|
-
/* @__PURE__ */
|
|
10889
|
+
return /* @__PURE__ */ jsx114("header", { className: `sticky top-0 z-10 flex h-12 flex-col items-center justify-start gap-x-4 border-b`, children: /* @__PURE__ */ jsxs65("div", { className: "bg-sidebar flex h-12 w-full flex-row items-center justify-between pl-2 pr-4", children: [
|
|
10890
|
+
/* @__PURE__ */ jsx114(SidebarTrigger, { "aria-label": "Toggle sidebar" }),
|
|
10891
|
+
/* @__PURE__ */ jsx114("div", { className: "flex w-full flex-row items-center justify-start", children: /* @__PURE__ */ jsx114(BreadcrumbNavigation, { items: breadcrumbs }) }),
|
|
10892
|
+
/* @__PURE__ */ jsx114("div", { className: "flex w-64 flex-row items-center justify-end gap-x-4 whitespace-nowrap", children: /* @__PURE__ */ jsxs65("div", { className: "flex flex-row items-center justify-end gap-x-4 whitespace-nowrap", children: [
|
|
10893
|
+
showTokenStatus && /* @__PURE__ */ jsxs65("div", { className: "flex items-center gap-x-2", children: [
|
|
10894
|
+
/* @__PURE__ */ jsx114(TokenStatusIndicator, { size: "sm", showExtraPages: true }),
|
|
10895
|
+
/* @__PURE__ */ jsxs65(Tooltip2, { children: [
|
|
10896
|
+
/* @__PURE__ */ jsx114(
|
|
10868
10897
|
TooltipTrigger,
|
|
10869
10898
|
{
|
|
10870
|
-
render: /* @__PURE__ */
|
|
10899
|
+
render: /* @__PURE__ */ jsx114(
|
|
10871
10900
|
Button,
|
|
10872
10901
|
{
|
|
10873
10902
|
variant: "ghost",
|
|
@@ -10878,10 +10907,10 @@ function Header({ children }) {
|
|
|
10878
10907
|
"aria-label": t("common.refresh", { defaultValue: "Refresh" })
|
|
10879
10908
|
}
|
|
10880
10909
|
),
|
|
10881
|
-
children: /* @__PURE__ */
|
|
10910
|
+
children: /* @__PURE__ */ jsx114(RefreshCwIcon2, { className: `h-3.5 w-3.5 ${isRefreshing ? "animate-spin" : ""}` })
|
|
10882
10911
|
}
|
|
10883
10912
|
),
|
|
10884
|
-
/* @__PURE__ */
|
|
10913
|
+
/* @__PURE__ */ jsx114(TooltipContent, { side: "bottom", children: t("common.refresh", { defaultValue: "Refresh" }) })
|
|
10885
10914
|
] })
|
|
10886
10915
|
] }),
|
|
10887
10916
|
children ? children : null
|
|
@@ -10893,13 +10922,13 @@ __name(Header, "Header");
|
|
|
10893
10922
|
// src/components/navigations/ModeToggleSwitch.tsx
|
|
10894
10923
|
import { MoonIcon, SunIcon } from "lucide-react";
|
|
10895
10924
|
import { useTheme as useTheme2 } from "next-themes";
|
|
10896
|
-
import { jsx as
|
|
10925
|
+
import { jsx as jsx115 } from "react/jsx-runtime";
|
|
10897
10926
|
function ModeToggleSwitch() {
|
|
10898
10927
|
const { theme, setTheme } = useTheme2();
|
|
10899
10928
|
const handleToggle = /* @__PURE__ */ __name(() => {
|
|
10900
10929
|
setTheme(theme === "light" ? "dark" : "light");
|
|
10901
10930
|
}, "handleToggle");
|
|
10902
|
-
return /* @__PURE__ */
|
|
10931
|
+
return /* @__PURE__ */ jsx115("div", { className: "flex items-center", children: /* @__PURE__ */ jsx115(Switch, { checked: theme === "dark", onCheckedChange: handleToggle, className: "relative", children: theme === "dark" ? /* @__PURE__ */ jsx115(MoonIcon, { className: "text-primary-foreground h-4 w-4" }) : /* @__PURE__ */ jsx115(SunIcon, { className: "text-primary h-4 w-4" }) }) });
|
|
10903
10932
|
}
|
|
10904
10933
|
__name(ModeToggleSwitch, "ModeToggleSwitch");
|
|
10905
10934
|
|
|
@@ -10907,7 +10936,7 @@ __name(ModeToggleSwitch, "ModeToggleSwitch");
|
|
|
10907
10936
|
import { ChevronDownIcon as ChevronDownIcon5, ChevronRightIcon as ChevronRightIcon6 } from "lucide-react";
|
|
10908
10937
|
import { useEffect as useEffect28, useState as useState35 } from "react";
|
|
10909
10938
|
import { v4 as v43 } from "uuid";
|
|
10910
|
-
import { jsx as
|
|
10939
|
+
import { jsx as jsx116, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
10911
10940
|
function PageSection({ children, title, options, open, small, onToggle }) {
|
|
10912
10941
|
const [isOpen, setIsOpen] = useState35(open ?? true);
|
|
10913
10942
|
const [shouldRender, setShouldRender] = useState35(open ?? true);
|
|
@@ -10925,26 +10954,26 @@ function PageSection({ children, title, options, open, small, onToggle }) {
|
|
|
10925
10954
|
return () => clearTimeout(timer);
|
|
10926
10955
|
}
|
|
10927
10956
|
}, [isOpen]);
|
|
10928
|
-
return /* @__PURE__ */
|
|
10957
|
+
return /* @__PURE__ */ jsxs66(
|
|
10929
10958
|
"section",
|
|
10930
10959
|
{
|
|
10931
10960
|
id: title ? title.toLowerCase().replaceAll(" ", "") : v43(),
|
|
10932
10961
|
className: `${isOpen ? "mb-4" : "my-0"} flex w-full scroll-mt-40 flex-col`,
|
|
10933
10962
|
children: [
|
|
10934
|
-
title && /* @__PURE__ */
|
|
10963
|
+
title && /* @__PURE__ */ jsxs66(
|
|
10935
10964
|
"div",
|
|
10936
10965
|
{
|
|
10937
10966
|
className: `${isOpen ? "mb-4" : "mb-0"} flex w-full justify-between border-b ${small ? `border-muted` : `border-primary`} pb-1`,
|
|
10938
10967
|
children: [
|
|
10939
|
-
/* @__PURE__ */
|
|
10940
|
-
isOpen ? /* @__PURE__ */
|
|
10941
|
-
/* @__PURE__ */
|
|
10968
|
+
/* @__PURE__ */ jsxs66("div", { className: "flex w-full cursor-pointer items-center justify-start gap-x-2", onClick: toggleOpen, children: [
|
|
10969
|
+
isOpen ? /* @__PURE__ */ jsx116(ChevronDownIcon5, { className: `text-primary h-4 w-4` }) : /* @__PURE__ */ jsx116(ChevronRightIcon6, { className: "text-primary h-4 w-4" }),
|
|
10970
|
+
/* @__PURE__ */ jsx116("h2", { className: `flex w-full ${small === true ? `text-sm` : `text-lg`} text-primary font-semibold`, children: title })
|
|
10942
10971
|
] }),
|
|
10943
|
-
options && /* @__PURE__ */
|
|
10972
|
+
options && /* @__PURE__ */ jsx116("div", { className: "flex gap-2", children: options })
|
|
10944
10973
|
]
|
|
10945
10974
|
}
|
|
10946
10975
|
),
|
|
10947
|
-
/* @__PURE__ */
|
|
10976
|
+
/* @__PURE__ */ jsx116("div", { className: `overflow-hidden transition-all duration-300 ${isOpen ? "" : "max-h-0"}`, children: shouldRender && children })
|
|
10948
10977
|
]
|
|
10949
10978
|
}
|
|
10950
10979
|
);
|
|
@@ -10955,7 +10984,7 @@ __name(PageSection, "PageSection");
|
|
|
10955
10984
|
import { useAtomValue } from "jotai";
|
|
10956
10985
|
import { HistoryIcon } from "lucide-react";
|
|
10957
10986
|
import { useTranslations as useTranslations39 } from "next-intl";
|
|
10958
|
-
import { jsx as
|
|
10987
|
+
import { jsx as jsx117, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
10959
10988
|
function RecentPagesNavigator() {
|
|
10960
10989
|
const recentPages = useAtomValue(recentPagesAtom);
|
|
10961
10990
|
const t = useTranslations39();
|
|
@@ -10963,14 +10992,14 @@ function RecentPagesNavigator() {
|
|
|
10963
10992
|
if (recentPages.length === 0) {
|
|
10964
10993
|
return null;
|
|
10965
10994
|
}
|
|
10966
|
-
return /* @__PURE__ */
|
|
10967
|
-
/* @__PURE__ */
|
|
10968
|
-
/* @__PURE__ */
|
|
10969
|
-
/* @__PURE__ */
|
|
10970
|
-
/* @__PURE__ */
|
|
10971
|
-
recentPages.map((page, index) => /* @__PURE__ */
|
|
10972
|
-
/* @__PURE__ */
|
|
10973
|
-
/* @__PURE__ */
|
|
10995
|
+
return /* @__PURE__ */ jsxs67(DropdownMenu, { children: [
|
|
10996
|
+
/* @__PURE__ */ jsx117(DropdownMenuTrigger, { children: /* @__PURE__ */ jsx117("div", { className: "flex w-full cursor-pointer items-center gap-2", children: state === "collapsed" ? /* @__PURE__ */ jsx117(HistoryIcon, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx117("span", { children: t(`common.recent_pages`) }) }) }),
|
|
10997
|
+
/* @__PURE__ */ jsxs67(DropdownMenuContent, { align: "start", className: "w-96", children: [
|
|
10998
|
+
/* @__PURE__ */ jsx117(DropdownMenuLabel, { children: t(`common.recent_pages`) }),
|
|
10999
|
+
/* @__PURE__ */ jsx117(DropdownMenuSeparator, {}),
|
|
11000
|
+
recentPages.map((page, index) => /* @__PURE__ */ jsx117(DropdownMenuItem, { children: /* @__PURE__ */ jsx117(Link, { href: page.url, className: "flex items-center gap-2", children: /* @__PURE__ */ jsxs67("div", { className: "flex flex-col", children: [
|
|
11001
|
+
/* @__PURE__ */ jsx117("div", { className: "truncate text-sm", children: page.title }),
|
|
11002
|
+
/* @__PURE__ */ jsx117("div", { className: "text-muted-foreground text-xs font-normal", children: t(`entities.${page.moduleType}`, { count: 1 }) })
|
|
10974
11003
|
] }) }) }, `${page.url}-${index}`))
|
|
10975
11004
|
] })
|
|
10976
11005
|
] });
|
|
@@ -10978,12 +11007,12 @@ function RecentPagesNavigator() {
|
|
|
10978
11007
|
__name(RecentPagesNavigator, "RecentPagesNavigator");
|
|
10979
11008
|
|
|
10980
11009
|
// src/components/containers/PageContainer.tsx
|
|
10981
|
-
import { jsx as
|
|
11010
|
+
import { jsx as jsx118, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
10982
11011
|
function PageContainer({ children, testId, className }) {
|
|
10983
11012
|
const headerChildren = useHeaderChildren();
|
|
10984
|
-
return /* @__PURE__ */
|
|
10985
|
-
/* @__PURE__ */
|
|
10986
|
-
/* @__PURE__ */
|
|
11013
|
+
return /* @__PURE__ */ jsxs68("div", { className: `flex h-full w-full flex-col`, "data-testid": testId, children: [
|
|
11014
|
+
/* @__PURE__ */ jsx118(Header, { children: headerChildren }),
|
|
11015
|
+
/* @__PURE__ */ jsx118("main", { className: cn(`flex w-full flex-1 flex-col gap-y-4 pt-4 pl-4 pr-4 pb-20`, className), children })
|
|
10987
11016
|
] });
|
|
10988
11017
|
}
|
|
10989
11018
|
__name(PageContainer, "PageContainer");
|
|
@@ -10994,7 +11023,7 @@ import { useTranslations as useTranslations40 } from "next-intl";
|
|
|
10994
11023
|
import { useEffect as useEffect29, useRef as useRef13, useState as useState36 } from "react";
|
|
10995
11024
|
import ReactMarkdown from "react-markdown";
|
|
10996
11025
|
import remarkGfm from "remark-gfm";
|
|
10997
|
-
import { jsx as
|
|
11026
|
+
import { jsx as jsx119, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
10998
11027
|
function ReactMarkdownContainer({
|
|
10999
11028
|
content,
|
|
11000
11029
|
collapsible = false,
|
|
@@ -11020,46 +11049,46 @@ function ReactMarkdownContainer({
|
|
|
11020
11049
|
WebkitBoxOrient: "vertical",
|
|
11021
11050
|
overflow: "hidden"
|
|
11022
11051
|
} : {};
|
|
11023
|
-
return /* @__PURE__ */
|
|
11024
|
-
/* @__PURE__ */
|
|
11025
|
-
/* @__PURE__ */
|
|
11052
|
+
return /* @__PURE__ */ jsxs69("div", { className: "flex flex-col", children: [
|
|
11053
|
+
/* @__PURE__ */ jsxs69("div", { className: "relative", children: [
|
|
11054
|
+
/* @__PURE__ */ jsx119("div", { ref: contentRef, style: clampStyle, className: "transition-all duration-300 ease-in-out", children: /* @__PURE__ */ jsx119(
|
|
11026
11055
|
ReactMarkdown,
|
|
11027
11056
|
{
|
|
11028
11057
|
remarkPlugins: [remarkGfm],
|
|
11029
11058
|
components: {
|
|
11030
|
-
p: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11031
|
-
li: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11032
|
-
table: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11033
|
-
th: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11034
|
-
td: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11035
|
-
tr: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11036
|
-
ul: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11037
|
-
ol: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11038
|
-
h1: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11039
|
-
h2: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11059
|
+
p: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("p", { className: size === "small" ? "text-xs" : "", children }), "p"),
|
|
11060
|
+
li: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("li", { className: size === "small" ? "text-xs" : "", children }), "li"),
|
|
11061
|
+
table: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("table", { className: "w-full table-auto border-collapse border", children }), "table"),
|
|
11062
|
+
th: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("th", { className: `border px-4 py-2 text-left ${size === "small" ? "px-2 py-1 text-xs" : ""}`, children }), "th"),
|
|
11063
|
+
td: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("td", { className: `border px-4 py-2 ${size === "small" ? "px-2 py-1 text-xs" : ""}`, children }), "td"),
|
|
11064
|
+
tr: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("tr", { className: "even:bg-gray-50", children }), "tr"),
|
|
11065
|
+
ul: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("ul", { className: `list-disc ${size === "small" ? "pl-3" : "pl-4"}`, children }), "ul"),
|
|
11066
|
+
ol: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("ol", { className: `list-decimal ${size === "small" ? "pl-3" : "pl-4"}`, children }), "ol"),
|
|
11067
|
+
h1: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("h1", { className: size === "small" ? "my-1 mt-2 text-sm font-bold" : "my-2 mt-4 text-3xl font-medium", children }), "h1"),
|
|
11068
|
+
h2: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119(
|
|
11040
11069
|
"h2",
|
|
11041
11070
|
{
|
|
11042
11071
|
className: size === "small" ? "my-1 mt-2 text-sm font-semibold" : "my-2 mt-4 text-2xl font-semibold",
|
|
11043
11072
|
children
|
|
11044
11073
|
}
|
|
11045
11074
|
), "h2"),
|
|
11046
|
-
h3: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11047
|
-
h4: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */
|
|
11075
|
+
h3: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("h3", { className: size === "small" ? "my-1 mt-2 text-sm font-medium" : "my-2 mt-4 text-xl font-semibold", children }), "h3"),
|
|
11076
|
+
h4: /* @__PURE__ */ __name(({ children }) => /* @__PURE__ */ jsx119("h4", { className: size === "small" ? "my-1 mt-2 text-sm font-medium" : "my-2 mt-4 text-lg font-semibold", children }), "h4")
|
|
11048
11077
|
},
|
|
11049
11078
|
children: content
|
|
11050
11079
|
}
|
|
11051
11080
|
) }),
|
|
11052
|
-
collapsible && !isExpanded && showExpandButton && /* @__PURE__ */
|
|
11081
|
+
collapsible && !isExpanded && showExpandButton && /* @__PURE__ */ jsx119("div", { className: "pointer-events-none absolute right-0 bottom-0 left-0 h-12 bg-gradient-to-t from-white to-transparent" })
|
|
11053
11082
|
] }),
|
|
11054
|
-
collapsible && showExpandButton && /* @__PURE__ */
|
|
11083
|
+
collapsible && showExpandButton && /* @__PURE__ */ jsx119("div", { className: "mt-2 flex justify-end", children: /* @__PURE__ */ jsxs69(
|
|
11055
11084
|
"button",
|
|
11056
11085
|
{
|
|
11057
11086
|
onClick: handleToggle,
|
|
11058
11087
|
className: "flex items-center gap-1 rounded-md px-3 py-1.5 text-sm text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900",
|
|
11059
11088
|
"aria-label": isExpanded ? t("show_less") : t("show_more"),
|
|
11060
11089
|
children: [
|
|
11061
|
-
/* @__PURE__ */
|
|
11062
|
-
isExpanded ? /* @__PURE__ */
|
|
11090
|
+
/* @__PURE__ */ jsx119("span", { children: isExpanded ? t("show_less") : t("show_more") }),
|
|
11091
|
+
isExpanded ? /* @__PURE__ */ jsx119(ChevronUp, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx119(ChevronDown2, { className: "h-4 w-4" })
|
|
11063
11092
|
]
|
|
11064
11093
|
}
|
|
11065
11094
|
) })
|
|
@@ -11068,7 +11097,7 @@ function ReactMarkdownContainer({
|
|
|
11068
11097
|
__name(ReactMarkdownContainer, "ReactMarkdownContainer");
|
|
11069
11098
|
|
|
11070
11099
|
// src/components/containers/TabsContainer.tsx
|
|
11071
|
-
import { Fragment as Fragment14, jsx as
|
|
11100
|
+
import { Fragment as Fragment14, jsx as jsx120, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
11072
11101
|
function TabsContainer({
|
|
11073
11102
|
tabs,
|
|
11074
11103
|
defaultTab,
|
|
@@ -11087,16 +11116,16 @@ function TabsContainer({
|
|
|
11087
11116
|
if (validTabs.length === 1) {
|
|
11088
11117
|
return validTabs[0].content;
|
|
11089
11118
|
}
|
|
11090
|
-
return /* @__PURE__ */
|
|
11091
|
-
/* @__PURE__ */
|
|
11092
|
-
/* @__PURE__ */
|
|
11119
|
+
return /* @__PURE__ */ jsxs70(Tabs, { defaultValue, className: "w-full", children: [
|
|
11120
|
+
/* @__PURE__ */ jsxs70("div", { className: "flex w-full items-center justify-between", children: [
|
|
11121
|
+
/* @__PURE__ */ jsx120(
|
|
11093
11122
|
TabsList,
|
|
11094
11123
|
{
|
|
11095
11124
|
className: cn(
|
|
11096
11125
|
`${style ? `my-4 flex w-full justify-start rounded-none border-b bg-transparent pb-0` : ``}`,
|
|
11097
11126
|
tabsListClassName
|
|
11098
11127
|
),
|
|
11099
|
-
children: validTabs.map((tab) => /* @__PURE__ */
|
|
11128
|
+
children: validTabs.map((tab) => /* @__PURE__ */ jsx120(
|
|
11100
11129
|
TabsTrigger,
|
|
11101
11130
|
{
|
|
11102
11131
|
value: tab.label,
|
|
@@ -11112,29 +11141,29 @@ function TabsContainer({
|
|
|
11112
11141
|
),
|
|
11113
11142
|
additionalComponent && additionalComponent
|
|
11114
11143
|
] }),
|
|
11115
|
-
scrollAreaClassName ? /* @__PURE__ */
|
|
11144
|
+
scrollAreaClassName ? /* @__PURE__ */ jsx120(ScrollArea, { className: scrollAreaClassName, children: validTabs.map((tab) => /* @__PURE__ */ jsx120(TabsContent, { value: tab.label, children: tab.content }, tab.label)) }) : /* @__PURE__ */ jsx120(Fragment14, { children: validTabs.map((tab) => /* @__PURE__ */ jsx120(TabsContent, { value: tab.label, children: tab.content }, tab.label)) })
|
|
11116
11145
|
] });
|
|
11117
11146
|
}
|
|
11118
11147
|
__name(TabsContainer, "TabsContainer");
|
|
11119
11148
|
|
|
11120
11149
|
// src/components/contents/AttributeElement.tsx
|
|
11121
|
-
import { jsx as
|
|
11150
|
+
import { jsx as jsx121, jsxs as jsxs71 } from "react/jsx-runtime";
|
|
11122
11151
|
function AttributeElement({ inline, title, value, className }) {
|
|
11123
|
-
return /* @__PURE__ */
|
|
11124
|
-
title && /* @__PURE__ */
|
|
11125
|
-
value && /* @__PURE__ */
|
|
11152
|
+
return /* @__PURE__ */ jsxs71("div", { className: cn(`flex ${inline === true ? "flex-row" : "flex-col"} my-1 justify-start`, className), children: [
|
|
11153
|
+
title && /* @__PURE__ */ jsx121("div", { className: `${inline === true ? "min-w-48 pr-4" : "w-full"} text-sm font-semibold`, children: title }),
|
|
11154
|
+
value && /* @__PURE__ */ jsx121("div", { className: "flex w-full flex-col text-sm", children: value })
|
|
11126
11155
|
] });
|
|
11127
11156
|
}
|
|
11128
11157
|
__name(AttributeElement, "AttributeElement");
|
|
11129
11158
|
|
|
11130
11159
|
// src/components/details/AllowedUsersDetails.tsx
|
|
11131
11160
|
import { useTranslations as useTranslations41 } from "next-intl";
|
|
11132
|
-
import { jsx as
|
|
11161
|
+
import { jsx as jsx122, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
11133
11162
|
function AllowedUsersDetails({ showTitle, content }) {
|
|
11134
11163
|
const t = useTranslations41();
|
|
11135
|
-
return /* @__PURE__ */
|
|
11136
|
-
showTitle && /* @__PURE__ */
|
|
11137
|
-
/* @__PURE__ */
|
|
11164
|
+
return /* @__PURE__ */ jsxs72("div", { className: "mb-2 flex w-full flex-col gap-y-2", children: [
|
|
11165
|
+
showTitle && /* @__PURE__ */ jsx122("h3", { className: "text-xs font-semibold", children: t("common.permissions") }),
|
|
11166
|
+
/* @__PURE__ */ jsx122("div", { className: "flex w-full items-center justify-start gap-x-4", children: /* @__PURE__ */ jsx122(ContributorsList, { content }) })
|
|
11138
11167
|
] });
|
|
11139
11168
|
}
|
|
11140
11169
|
__name(AllowedUsersDetails, "AllowedUsersDetails");
|
|
@@ -11142,17 +11171,17 @@ __name(AllowedUsersDetails, "AllowedUsersDetails");
|
|
|
11142
11171
|
// src/components/editors/BlockNoteEditorContainer.tsx
|
|
11143
11172
|
import dynamic from "next/dynamic";
|
|
11144
11173
|
import React15 from "react";
|
|
11145
|
-
import { jsx as
|
|
11146
|
-
var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-
|
|
11174
|
+
import { jsx as jsx123 } from "react/jsx-runtime";
|
|
11175
|
+
var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-CUIQPN6C.mjs"), {
|
|
11147
11176
|
ssr: false
|
|
11148
11177
|
});
|
|
11149
11178
|
var BlockNoteEditorContainer = React15.memo(/* @__PURE__ */ __name(function EditorContainer(props) {
|
|
11150
|
-
return /* @__PURE__ */
|
|
11179
|
+
return /* @__PURE__ */ jsx123(BlockNoteEditor, { ...props });
|
|
11151
11180
|
}, "EditorContainer"));
|
|
11152
11181
|
|
|
11153
11182
|
// src/components/pages/PageContainerContentDetails.tsx
|
|
11154
11183
|
import { useEffect as useEffect30, useRef as useRef14, useState as useState37 } from "react";
|
|
11155
|
-
import { jsx as
|
|
11184
|
+
import { jsx as jsx124, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
11156
11185
|
function PageContainerContentDetails({ items, section, module, id }) {
|
|
11157
11186
|
const rewriteUrl = useUrlRewriter();
|
|
11158
11187
|
const [isScrolled, setIsScrolled] = useState37(false);
|
|
@@ -11174,15 +11203,15 @@ function PageContainerContentDetails({ items, section, module, id }) {
|
|
|
11174
11203
|
observer.disconnect();
|
|
11175
11204
|
};
|
|
11176
11205
|
}, []);
|
|
11177
|
-
return /* @__PURE__ */
|
|
11206
|
+
return /* @__PURE__ */ jsxs73(
|
|
11178
11207
|
Tabs,
|
|
11179
11208
|
{
|
|
11180
11209
|
defaultValue: section || items[0].title,
|
|
11181
11210
|
onValueChange: (a) => rewriteUrl({ page: module, id, childPage: a }),
|
|
11182
11211
|
children: [
|
|
11183
|
-
/* @__PURE__ */
|
|
11184
|
-
/* @__PURE__ */
|
|
11185
|
-
/* @__PURE__ */
|
|
11212
|
+
/* @__PURE__ */ jsx124("div", { ref: sentinelRef, className: "h-0" }),
|
|
11213
|
+
/* @__PURE__ */ jsx124("div", { className: `bg-background sticky top-0 z-10 mb-2 pb-2 transition-shadow ${isScrolled ? "border-b" : ""}`, children: /* @__PURE__ */ jsx124(TabsList, { children: items.map((item) => /* @__PURE__ */ jsx124(TabsTrigger, { value: item.title, children: item.title }, item.title)) }) }),
|
|
11214
|
+
/* @__PURE__ */ jsx124("div", { className: "pr-4", children: items.map((item) => /* @__PURE__ */ jsx124(TabsContent, { value: item.title, children: item.content }, item.title)) })
|
|
11186
11215
|
]
|
|
11187
11216
|
}
|
|
11188
11217
|
);
|
|
@@ -11191,7 +11220,7 @@ __name(PageContainerContentDetails, "PageContainerContentDetails");
|
|
|
11191
11220
|
|
|
11192
11221
|
// src/components/pages/PageContentContainer.tsx
|
|
11193
11222
|
import { useEffect as useEffect31, useState as useState38 } from "react";
|
|
11194
|
-
import { jsx as
|
|
11223
|
+
import { jsx as jsx125, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
11195
11224
|
function PageContentContainer({ header, details, footer, content }) {
|
|
11196
11225
|
const [mounted, setMounted] = useState38(false);
|
|
11197
11226
|
const isMobile = useIsMobile();
|
|
@@ -11200,35 +11229,35 @@ function PageContentContainer({ header, details, footer, content }) {
|
|
|
11200
11229
|
}, []);
|
|
11201
11230
|
const isReady = mounted && isMobile !== void 0;
|
|
11202
11231
|
if (!isReady) {
|
|
11203
|
-
return /* @__PURE__ */
|
|
11232
|
+
return /* @__PURE__ */ jsx125("div", { className: "flex h-[calc(100vh-4rem)] w-full flex-col" });
|
|
11204
11233
|
}
|
|
11205
|
-
return /* @__PURE__ */
|
|
11206
|
-
header && /* @__PURE__ */
|
|
11207
|
-
/* @__PURE__ */
|
|
11234
|
+
return /* @__PURE__ */ jsxs74("div", { className: "flex h-[calc(100vh-4rem)] w-full flex-col transition-opacity duration-150 animate-in fade-in", children: [
|
|
11235
|
+
header && /* @__PURE__ */ jsx125("div", { className: "mb-4 flex w-full shrink-0 border-b", children: header }),
|
|
11236
|
+
/* @__PURE__ */ jsx125("div", { className: "min-h-0 flex-1", children: details || footer ? /* @__PURE__ */ jsxs74(
|
|
11208
11237
|
ResizablePanelGroup,
|
|
11209
11238
|
{
|
|
11210
11239
|
autoSaveId: `page-content-container-${isMobile ? "mobile" : "desktop"}`,
|
|
11211
11240
|
direction: isMobile ? "vertical" : "horizontal",
|
|
11212
11241
|
className: "h-full items-stretch",
|
|
11213
11242
|
children: [
|
|
11214
|
-
/* @__PURE__ */
|
|
11243
|
+
/* @__PURE__ */ jsx125(
|
|
11215
11244
|
ResizablePanel,
|
|
11216
11245
|
{
|
|
11217
11246
|
id: "left-panel",
|
|
11218
11247
|
defaultSize: isMobile ? 10 : 32,
|
|
11219
11248
|
minSize: isMobile ? 10 : 20,
|
|
11220
11249
|
maxSize: isMobile ? 90 : 40,
|
|
11221
|
-
children: /* @__PURE__ */
|
|
11222
|
-
/* @__PURE__ */
|
|
11223
|
-
footer && /* @__PURE__ */
|
|
11250
|
+
children: /* @__PURE__ */ jsxs74("div", { className: `@container flex h-full flex-col ${isMobile ? "pb-4" : "pr-4"}`, children: [
|
|
11251
|
+
/* @__PURE__ */ jsx125("div", { className: "flex-1 overflow-y-auto", children: details }),
|
|
11252
|
+
footer && /* @__PURE__ */ jsx125("div", { className: "flex flex-col gap-y-2 pt-2 pb-2", children: footer })
|
|
11224
11253
|
] })
|
|
11225
11254
|
}
|
|
11226
11255
|
),
|
|
11227
|
-
/* @__PURE__ */
|
|
11228
|
-
/* @__PURE__ */
|
|
11256
|
+
/* @__PURE__ */ jsx125(ResizableHandle, { withHandle: true }),
|
|
11257
|
+
/* @__PURE__ */ jsx125(ResizablePanel, { id: "right-panel", className: isMobile ? "pt-4" : "pl-4", children: /* @__PURE__ */ jsx125("div", { className: "h-full overflow-x-hidden overflow-y-auto p-2 pb-20", children: content }) })
|
|
11229
11258
|
]
|
|
11230
11259
|
}
|
|
11231
|
-
) : /* @__PURE__ */
|
|
11260
|
+
) : /* @__PURE__ */ jsx125("div", { className: "h-full overflow-x-hidden overflow-y-auto p-2 pb-20", children: content }) })
|
|
11232
11261
|
] });
|
|
11233
11262
|
}
|
|
11234
11263
|
__name(PageContentContainer, "PageContentContainer");
|
|
@@ -11246,26 +11275,26 @@ var cellComponent = /* @__PURE__ */ __name((params) => {
|
|
|
11246
11275
|
}, "cellComponent");
|
|
11247
11276
|
|
|
11248
11277
|
// src/components/tables/cells/cell.date.tsx
|
|
11249
|
-
import { jsx as
|
|
11278
|
+
import { jsx as jsx126 } from "react/jsx-runtime";
|
|
11250
11279
|
var cellDate = /* @__PURE__ */ __name((params) => {
|
|
11251
11280
|
return {
|
|
11252
11281
|
id: params.name,
|
|
11253
11282
|
accessorKey: params.name,
|
|
11254
11283
|
header: params.title,
|
|
11255
|
-
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */
|
|
11284
|
+
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx126("span", { className: "text-muted-foreground text-xs", children: row.getValue(params.name).toLocaleDateString("en", { dateStyle: "medium" }) }), "cell"),
|
|
11256
11285
|
enableSorting: false,
|
|
11257
11286
|
enableHiding: false
|
|
11258
11287
|
};
|
|
11259
11288
|
}, "cellDate");
|
|
11260
11289
|
|
|
11261
11290
|
// src/components/tables/cells/cell.id.tsx
|
|
11262
|
-
import { jsx as
|
|
11291
|
+
import { jsx as jsx127 } from "react/jsx-runtime";
|
|
11263
11292
|
var cellId = /* @__PURE__ */ __name((params) => {
|
|
11264
11293
|
return {
|
|
11265
11294
|
id: params.name,
|
|
11266
11295
|
accessorKey: params.name,
|
|
11267
11296
|
header: "",
|
|
11268
|
-
cell: /* @__PURE__ */ __name(({ row }) => params.toggleId ? /* @__PURE__ */
|
|
11297
|
+
cell: /* @__PURE__ */ __name(({ row }) => params.toggleId ? /* @__PURE__ */ jsx127(
|
|
11269
11298
|
Checkbox,
|
|
11270
11299
|
{
|
|
11271
11300
|
checked: params.checkedIds?.includes(row.getValue(params.name)) || false,
|
|
@@ -11282,26 +11311,26 @@ var cellId = /* @__PURE__ */ __name((params) => {
|
|
|
11282
11311
|
}, "cellId");
|
|
11283
11312
|
|
|
11284
11313
|
// src/components/tables/cells/cell.link.tsx
|
|
11285
|
-
import { jsx as
|
|
11314
|
+
import { jsx as jsx128 } from "react/jsx-runtime";
|
|
11286
11315
|
var cellLink = /* @__PURE__ */ __name((params) => {
|
|
11287
11316
|
return {
|
|
11288
11317
|
id: params.name,
|
|
11289
11318
|
accessorKey: params.name,
|
|
11290
11319
|
header: params.title,
|
|
11291
|
-
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */
|
|
11320
|
+
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx128(Link, { href: params.generateUrl(row.getValue(params.id)), children: row.getValue(params.name) }), "cell"),
|
|
11292
11321
|
enableSorting: false,
|
|
11293
11322
|
enableHiding: false
|
|
11294
11323
|
};
|
|
11295
11324
|
}, "cellLink");
|
|
11296
11325
|
|
|
11297
11326
|
// src/components/tables/cells/cell.url.tsx
|
|
11298
|
-
import { jsx as
|
|
11327
|
+
import { jsx as jsx129 } from "react/jsx-runtime";
|
|
11299
11328
|
var cellUrl = /* @__PURE__ */ __name((params) => {
|
|
11300
11329
|
return {
|
|
11301
11330
|
id: params.name,
|
|
11302
11331
|
accessorKey: params.name,
|
|
11303
11332
|
header: params.title,
|
|
11304
|
-
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */
|
|
11333
|
+
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx129(Link, { href: row.getValue(params.name), children: row.getValue(params.name) }), "cell"),
|
|
11305
11334
|
enableSorting: false,
|
|
11306
11335
|
enableHiding: false
|
|
11307
11336
|
};
|
|
@@ -11309,7 +11338,7 @@ var cellUrl = /* @__PURE__ */ __name((params) => {
|
|
|
11309
11338
|
|
|
11310
11339
|
// src/client/context/JsonApiProvider.tsx
|
|
11311
11340
|
import { useEffect as useEffect32, useMemo as useMemo12 } from "react";
|
|
11312
|
-
import { jsx as
|
|
11341
|
+
import { jsx as jsx130 } from "react/jsx-runtime";
|
|
11313
11342
|
function JsonApiProvider({ config, children }) {
|
|
11314
11343
|
useEffect32(() => {
|
|
11315
11344
|
if (config.bootstrapper) {
|
|
@@ -11317,7 +11346,7 @@ function JsonApiProvider({ config, children }) {
|
|
|
11317
11346
|
}
|
|
11318
11347
|
}, [config.bootstrapper]);
|
|
11319
11348
|
const memoizedConfig = useMemo12(() => config, [config]);
|
|
11320
|
-
return /* @__PURE__ */
|
|
11349
|
+
return /* @__PURE__ */ jsx130(JsonApiContext.Provider, { value: memoizedConfig, children });
|
|
11321
11350
|
}
|
|
11322
11351
|
__name(JsonApiProvider, "JsonApiProvider");
|
|
11323
11352
|
|
|
@@ -11541,7 +11570,7 @@ __name(useRehydrationList, "useRehydrationList");
|
|
|
11541
11570
|
// src/features/company/hooks/useCompanyTableStructure.tsx
|
|
11542
11571
|
import { useTranslations as useTranslations42 } from "next-intl";
|
|
11543
11572
|
import { useMemo as useMemo14 } from "react";
|
|
11544
|
-
import { jsx as
|
|
11573
|
+
import { jsx as jsx131 } from "react/jsx-runtime";
|
|
11545
11574
|
var useCompanyTableStructure = /* @__PURE__ */ __name((params) => {
|
|
11546
11575
|
const t = useTranslations42();
|
|
11547
11576
|
const generateUrl = usePageUrlGenerator();
|
|
@@ -11570,7 +11599,7 @@ var useCompanyTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11570
11599
|
header: t(`user.fields.name.label`),
|
|
11571
11600
|
cell: /* @__PURE__ */ __name(({ row }) => {
|
|
11572
11601
|
const company = row.original.jsonApiData;
|
|
11573
|
-
return /* @__PURE__ */
|
|
11602
|
+
return /* @__PURE__ */ jsx131(
|
|
11574
11603
|
Link,
|
|
11575
11604
|
{
|
|
11576
11605
|
href: hasRole(getRoleId().Administrator) ? generateUrl({
|
|
@@ -11650,7 +11679,7 @@ __name(useSubscriptionStatus, "useSubscriptionStatus");
|
|
|
11650
11679
|
// src/features/role/hooks/useRoleTableStructure.tsx
|
|
11651
11680
|
import { useTranslations as useTranslations43 } from "next-intl";
|
|
11652
11681
|
import { useMemo as useMemo16 } from "react";
|
|
11653
|
-
import { Fragment as Fragment15, jsx as
|
|
11682
|
+
import { Fragment as Fragment15, jsx as jsx132 } from "react/jsx-runtime";
|
|
11654
11683
|
var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
|
|
11655
11684
|
const t = useTranslations43();
|
|
11656
11685
|
const generateUrl = usePageUrlGenerator();
|
|
@@ -11678,7 +11707,7 @@ var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11678
11707
|
header: t(`role.fields.name.label`),
|
|
11679
11708
|
cell: /* @__PURE__ */ __name(({ row }) => {
|
|
11680
11709
|
const role = row.original.jsonApiData;
|
|
11681
|
-
return /* @__PURE__ */
|
|
11710
|
+
return /* @__PURE__ */ jsx132(Link, { href: generateUrl({ page: Modules.Role, id: role.id }), children: row.getValue("name") });
|
|
11682
11711
|
}, "cell"),
|
|
11683
11712
|
enableSorting: false,
|
|
11684
11713
|
enableHiding: false
|
|
@@ -11687,7 +11716,7 @@ var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11687
11716
|
id: "description",
|
|
11688
11717
|
accessorKey: "description",
|
|
11689
11718
|
header: t(`role.fields.description.label`),
|
|
11690
|
-
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */
|
|
11719
|
+
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx132(Fragment15, { children: row.getValue("description") }), "cell"),
|
|
11691
11720
|
enableSorting: false,
|
|
11692
11721
|
enableHiding: false
|
|
11693
11722
|
}),
|
|
@@ -11750,7 +11779,7 @@ var useUserSearch = /* @__PURE__ */ __name(() => {
|
|
|
11750
11779
|
// src/features/user/hooks/useUserTableStructure.tsx
|
|
11751
11780
|
import { useTranslations as useTranslations44 } from "next-intl";
|
|
11752
11781
|
import { useMemo as useMemo17 } from "react";
|
|
11753
|
-
import { Fragment as Fragment16, jsx as
|
|
11782
|
+
import { Fragment as Fragment16, jsx as jsx133, jsxs as jsxs75 } from "react/jsx-runtime";
|
|
11754
11783
|
var useUserTableStructure = /* @__PURE__ */ __name((params) => {
|
|
11755
11784
|
const t = useTranslations44();
|
|
11756
11785
|
const generateUrl = usePageUrlGenerator();
|
|
@@ -11778,7 +11807,7 @@ var useUserTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11778
11807
|
header: t(`user.fields.name.label`),
|
|
11779
11808
|
cell: /* @__PURE__ */ __name(({ row }) => {
|
|
11780
11809
|
const user = row.original.jsonApiData;
|
|
11781
|
-
return /* @__PURE__ */
|
|
11810
|
+
return /* @__PURE__ */ jsxs75(
|
|
11782
11811
|
Link,
|
|
11783
11812
|
{
|
|
11784
11813
|
href: generateUrl({ page: Modules.User, id: user.id }),
|
|
@@ -11787,7 +11816,7 @@ var useUserTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11787
11816
|
user.isDeleted || !user.isActivated ? "text-muted-foreground italic" : ""
|
|
11788
11817
|
),
|
|
11789
11818
|
children: [
|
|
11790
|
-
/* @__PURE__ */
|
|
11819
|
+
/* @__PURE__ */ jsx133(UserAvatar, { user }),
|
|
11791
11820
|
user.name,
|
|
11792
11821
|
user.isDeleted ? ` - ${t("user.errors.deleted")}` : "",
|
|
11793
11822
|
!user.isActivated ? ` - ${t("user.errors.inactive")}` : ""
|
|
@@ -11802,7 +11831,7 @@ var useUserTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11802
11831
|
id: "email",
|
|
11803
11832
|
accessorKey: "email",
|
|
11804
11833
|
header: t(`common.fields.email.label`),
|
|
11805
|
-
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */
|
|
11834
|
+
cell: /* @__PURE__ */ __name(({ row }) => /* @__PURE__ */ jsx133(Fragment16, { children: row.getValue("email") }), "cell"),
|
|
11806
11835
|
enableSorting: false,
|
|
11807
11836
|
enableHiding: false
|
|
11808
11837
|
}),
|
|
@@ -11812,17 +11841,17 @@ var useUserTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11812
11841
|
header: t(`common.relevance`),
|
|
11813
11842
|
cell: /* @__PURE__ */ __name(({ row }) => {
|
|
11814
11843
|
const user = row.original.jsonApiData;
|
|
11815
|
-
if (!user.relevance) return /* @__PURE__ */
|
|
11844
|
+
if (!user.relevance) return /* @__PURE__ */ jsx133(Fragment16, {});
|
|
11816
11845
|
const response = `${user.relevance.toFixed(0)}%`;
|
|
11817
|
-
return /* @__PURE__ */
|
|
11818
|
-
/* @__PURE__ */
|
|
11846
|
+
return /* @__PURE__ */ jsxs75("div", { className: "relative flex h-5 w-20 items-center justify-center overflow-hidden rounded border text-center", children: [
|
|
11847
|
+
/* @__PURE__ */ jsx133(
|
|
11819
11848
|
"div",
|
|
11820
11849
|
{
|
|
11821
11850
|
className: `bg-accent absolute top-0 left-0 h-full opacity-${Math.round(user.relevance)}`,
|
|
11822
11851
|
style: { width: `${user.relevance}%` }
|
|
11823
11852
|
}
|
|
11824
11853
|
),
|
|
11825
|
-
/* @__PURE__ */
|
|
11854
|
+
/* @__PURE__ */ jsx133(
|
|
11826
11855
|
"span",
|
|
11827
11856
|
{
|
|
11828
11857
|
className: `relative text-xs ${user.relevance < 40 ? "text-muted-foreground" : "text-accent-foreground font-semibold"}`,
|
|
@@ -11848,7 +11877,7 @@ var useUserTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11848
11877
|
// src/features/content/hooks/useContentTableStructure.tsx
|
|
11849
11878
|
import { useTranslations as useTranslations45 } from "next-intl";
|
|
11850
11879
|
import { useMemo as useMemo18 } from "react";
|
|
11851
|
-
import { Fragment as Fragment17, jsx as
|
|
11880
|
+
import { Fragment as Fragment17, jsx as jsx134, jsxs as jsxs76 } from "react/jsx-runtime";
|
|
11852
11881
|
var useContentTableStructure = /* @__PURE__ */ __name((params) => {
|
|
11853
11882
|
const t = useTranslations45();
|
|
11854
11883
|
const generateUrl = usePageUrlGenerator();
|
|
@@ -11878,12 +11907,12 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11878
11907
|
const content = row.original.jsonApiData;
|
|
11879
11908
|
const contentModule = content.contentType ? Modules.findByModelName(content.contentType) : void 0;
|
|
11880
11909
|
const link = contentModule ? generateUrl({ page: contentModule, id: content.id }) : "#";
|
|
11881
|
-
return /* @__PURE__ */
|
|
11882
|
-
/* @__PURE__ */
|
|
11910
|
+
return /* @__PURE__ */ jsxs76(Tooltip2, { children: [
|
|
11911
|
+
/* @__PURE__ */ jsx134(TooltipTrigger, { className: "flex items-center justify-start space-x-2", children: /* @__PURE__ */ jsxs76(Fragment17, { children: [
|
|
11883
11912
|
contentModule && getIconByModule({ module: contentModule, className: "h-4 w-4" }),
|
|
11884
|
-
/* @__PURE__ */
|
|
11913
|
+
/* @__PURE__ */ jsx134(Link, { href: link, children: content.name })
|
|
11885
11914
|
] }) }),
|
|
11886
|
-
/* @__PURE__ */
|
|
11915
|
+
/* @__PURE__ */ jsx134(TooltipContent, { children: content.tldr })
|
|
11887
11916
|
] });
|
|
11888
11917
|
}, "cell"),
|
|
11889
11918
|
enableSorting: false,
|
|
@@ -11895,17 +11924,17 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11895
11924
|
header: t(`common.relevance`),
|
|
11896
11925
|
cell: /* @__PURE__ */ __name(({ row }) => {
|
|
11897
11926
|
const content = row.original.jsonApiData;
|
|
11898
|
-
if (!content.relevance) return /* @__PURE__ */
|
|
11927
|
+
if (!content.relevance) return /* @__PURE__ */ jsx134(Fragment17, {});
|
|
11899
11928
|
const response = `${content.relevance.toFixed(0)}%`;
|
|
11900
|
-
return /* @__PURE__ */
|
|
11901
|
-
/* @__PURE__ */
|
|
11929
|
+
return /* @__PURE__ */ jsxs76("div", { className: "relative flex h-5 w-20 items-center justify-center overflow-hidden rounded border text-center", children: [
|
|
11930
|
+
/* @__PURE__ */ jsx134(
|
|
11902
11931
|
"div",
|
|
11903
11932
|
{
|
|
11904
11933
|
className: `bg-accent absolute top-0 left-0 h-full opacity-${Math.round(content.relevance)}`,
|
|
11905
11934
|
style: { width: `${content.relevance}%` }
|
|
11906
11935
|
}
|
|
11907
11936
|
),
|
|
11908
|
-
/* @__PURE__ */
|
|
11937
|
+
/* @__PURE__ */ jsx134(
|
|
11909
11938
|
"span",
|
|
11910
11939
|
{
|
|
11911
11940
|
className: `relative text-xs ${content.relevance < 40 ? "text-muted-foreground" : "text-accent-foreground font-semibold"}`,
|
|
@@ -11923,7 +11952,7 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11923
11952
|
header: t(`common.relationships.author.label`),
|
|
11924
11953
|
cell: /* @__PURE__ */ __name(({ row }) => {
|
|
11925
11954
|
const content = row.original.jsonApiData;
|
|
11926
|
-
return /* @__PURE__ */
|
|
11955
|
+
return /* @__PURE__ */ jsx134(ContributorsList, { content });
|
|
11927
11956
|
}, "cell"),
|
|
11928
11957
|
enableSorting: false,
|
|
11929
11958
|
enableHiding: false
|
|
@@ -12251,7 +12280,7 @@ import { memo, useMemo as useMemo19 } from "react";
|
|
|
12251
12280
|
import { RefreshCw, Search, X } from "lucide-react";
|
|
12252
12281
|
import { useTranslations as useTranslations46 } from "next-intl";
|
|
12253
12282
|
import { useCallback as useCallback20, useEffect as useEffect38, useRef as useRef17, useState as useState44 } from "react";
|
|
12254
|
-
import { jsx as
|
|
12283
|
+
import { jsx as jsx135, jsxs as jsxs77 } from "react/jsx-runtime";
|
|
12255
12284
|
function ContentTableSearch({ data }) {
|
|
12256
12285
|
const t = useTranslations46();
|
|
12257
12286
|
const searchTermRef = useRef17("");
|
|
@@ -12293,19 +12322,19 @@ function ContentTableSearch({ data }) {
|
|
|
12293
12322
|
search("");
|
|
12294
12323
|
setIsFocused(false);
|
|
12295
12324
|
}, "handleClear");
|
|
12296
|
-
return /* @__PURE__ */
|
|
12325
|
+
return /* @__PURE__ */ jsxs77(
|
|
12297
12326
|
"div",
|
|
12298
12327
|
{
|
|
12299
12328
|
className: `relative flex h-6 items-center text-xs font-normal transition-all duration-300 ease-in-out ${isExpanded ? "w-64" : "w-6"}`,
|
|
12300
12329
|
children: [
|
|
12301
|
-
/* @__PURE__ */
|
|
12330
|
+
/* @__PURE__ */ jsx135(
|
|
12302
12331
|
Search,
|
|
12303
12332
|
{
|
|
12304
12333
|
className: `absolute top-1 left-1 h-4 w-4 transition-colors ${isExpanded ? "text-muted-foreground" : "text-muted-foreground hover:text-foreground cursor-pointer"}`,
|
|
12305
12334
|
onClick: handleSearchIconClick
|
|
12306
12335
|
}
|
|
12307
12336
|
),
|
|
12308
|
-
isExpanded && /* @__PURE__ */
|
|
12337
|
+
isExpanded && /* @__PURE__ */ jsx135(
|
|
12309
12338
|
Input,
|
|
12310
12339
|
{
|
|
12311
12340
|
ref: inputRef,
|
|
@@ -12323,8 +12352,8 @@ function ContentTableSearch({ data }) {
|
|
|
12323
12352
|
value: searchTerm
|
|
12324
12353
|
}
|
|
12325
12354
|
),
|
|
12326
|
-
isExpanded && isSearching && /* @__PURE__ */
|
|
12327
|
-
isExpanded && !isSearching && searchTermRef.current && /* @__PURE__ */
|
|
12355
|
+
isExpanded && isSearching && /* @__PURE__ */ jsx135(RefreshCw, { className: "text-muted-foreground absolute top-1 right-1 h-4 w-4 animate-spin" }),
|
|
12356
|
+
isExpanded && !isSearching && searchTermRef.current && /* @__PURE__ */ jsx135(
|
|
12328
12357
|
X,
|
|
12329
12358
|
{
|
|
12330
12359
|
className: "text-muted-foreground hover:text-foreground absolute top-1 right-1 h-4 w-4 cursor-pointer",
|
|
@@ -12338,7 +12367,7 @@ function ContentTableSearch({ data }) {
|
|
|
12338
12367
|
__name(ContentTableSearch, "ContentTableSearch");
|
|
12339
12368
|
|
|
12340
12369
|
// src/components/tables/ContentListTable.tsx
|
|
12341
|
-
import { Fragment as Fragment18, jsx as
|
|
12370
|
+
import { Fragment as Fragment18, jsx as jsx136, jsxs as jsxs78 } from "react/jsx-runtime";
|
|
12342
12371
|
var EMPTY_ARRAY = [];
|
|
12343
12372
|
var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(props) {
|
|
12344
12373
|
const { data, fields, checkedIds, toggleId, allowSearch, filters } = props;
|
|
@@ -12370,23 +12399,23 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
|
|
|
12370
12399
|
});
|
|
12371
12400
|
const rowModel = tableData ? table.getRowModel() : null;
|
|
12372
12401
|
const showFooter = !!(props.functions || data.next || data.previous);
|
|
12373
|
-
return /* @__PURE__ */
|
|
12374
|
-
/* @__PURE__ */
|
|
12375
|
-
props.title && /* @__PURE__ */
|
|
12376
|
-
/* @__PURE__ */
|
|
12377
|
-
(props.functions || props.filters || allowSearch) && /* @__PURE__ */
|
|
12402
|
+
return /* @__PURE__ */ jsx136("div", { className: "flex w-full flex-col", children: /* @__PURE__ */ jsx136("div", { className: "overflow-hidden rounded-md border", children: /* @__PURE__ */ jsxs78(Table, { children: [
|
|
12403
|
+
/* @__PURE__ */ jsxs78(TableHeader, { className: "bg-muted font-semibold", children: [
|
|
12404
|
+
props.title && /* @__PURE__ */ jsx136(TableRow, { children: /* @__PURE__ */ jsx136(TableHead, { className: "bg-card text-primary p-4 text-left font-bold", colSpan: tableColumns.length, children: /* @__PURE__ */ jsxs78("div", { className: "flex w-full items-center justify-between gap-x-2", children: [
|
|
12405
|
+
/* @__PURE__ */ jsx136("div", { className: "w-full", children: props.title }),
|
|
12406
|
+
(props.functions || props.filters || allowSearch) && /* @__PURE__ */ jsxs78(Fragment18, { children: [
|
|
12378
12407
|
props.functions,
|
|
12379
12408
|
props.filters,
|
|
12380
|
-
/* @__PURE__ */
|
|
12409
|
+
/* @__PURE__ */ jsx136(ContentTableSearch, { data })
|
|
12381
12410
|
] })
|
|
12382
12411
|
] }) }) }),
|
|
12383
|
-
table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */
|
|
12384
|
-
return /* @__PURE__ */
|
|
12412
|
+
table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx136(TableRow, { children: headerGroup.headers.map((header) => {
|
|
12413
|
+
return /* @__PURE__ */ jsx136(TableHead, { children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()) }, header.id);
|
|
12385
12414
|
}) }, headerGroup.id))
|
|
12386
12415
|
] }),
|
|
12387
|
-
/* @__PURE__ */
|
|
12388
|
-
showFooter && /* @__PURE__ */
|
|
12389
|
-
/* @__PURE__ */
|
|
12416
|
+
/* @__PURE__ */ jsx136(TableBody, { children: rowModel && rowModel.rows?.length ? rowModel.rows.map((row) => /* @__PURE__ */ jsx136(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx136(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) : /* @__PURE__ */ jsx136(TableRow, { children: /* @__PURE__ */ jsx136(TableCell, { colSpan: tableColumns.length, className: "h-24 text-center", children: "No results." }) }) }),
|
|
12417
|
+
showFooter && /* @__PURE__ */ jsx136(TableFooter, { children: /* @__PURE__ */ jsx136(TableRow, { children: /* @__PURE__ */ jsx136(TableCell, { colSpan: tableColumns.length, className: "bg-card py-4 text-right", children: /* @__PURE__ */ jsxs78("div", { className: "flex items-center justify-end space-x-2", children: [
|
|
12418
|
+
/* @__PURE__ */ jsx136(
|
|
12390
12419
|
Button,
|
|
12391
12420
|
{
|
|
12392
12421
|
variant: "outline",
|
|
@@ -12396,15 +12425,15 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
|
|
|
12396
12425
|
data.previous?.(true);
|
|
12397
12426
|
},
|
|
12398
12427
|
disabled: !data.previous,
|
|
12399
|
-
children: /* @__PURE__ */
|
|
12428
|
+
children: /* @__PURE__ */ jsx136(ChevronLeft, { className: "h-4 w-4" })
|
|
12400
12429
|
}
|
|
12401
12430
|
),
|
|
12402
|
-
data.pageInfo && /* @__PURE__ */
|
|
12431
|
+
data.pageInfo && /* @__PURE__ */ jsxs78("span", { className: "text-muted-foreground text-xs", children: [
|
|
12403
12432
|
data.pageInfo.startItem,
|
|
12404
12433
|
"-",
|
|
12405
12434
|
data.pageInfo.endItem
|
|
12406
12435
|
] }),
|
|
12407
|
-
/* @__PURE__ */
|
|
12436
|
+
/* @__PURE__ */ jsx136(
|
|
12408
12437
|
Button,
|
|
12409
12438
|
{
|
|
12410
12439
|
variant: "outline",
|
|
@@ -12414,7 +12443,7 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
|
|
|
12414
12443
|
data.next?.(true);
|
|
12415
12444
|
},
|
|
12416
12445
|
disabled: !data.next,
|
|
12417
|
-
children: /* @__PURE__ */
|
|
12446
|
+
children: /* @__PURE__ */ jsx136(ChevronRight, { className: "h-4 w-4" })
|
|
12418
12447
|
}
|
|
12419
12448
|
)
|
|
12420
12449
|
] }) }) }) })
|
|
@@ -12429,15 +12458,58 @@ import { createContext as createContext15, useContext as useContext16, useMemo a
|
|
|
12429
12458
|
|
|
12430
12459
|
// src/features/auth/components/forms/Register.tsx
|
|
12431
12460
|
import { zodResolver as zodResolver4 } from "@hookform/resolvers/zod";
|
|
12432
|
-
import { useTranslations as
|
|
12461
|
+
import { useTranslations as useTranslations48 } from "next-intl";
|
|
12433
12462
|
import Image7 from "next/image";
|
|
12434
12463
|
import { useState as useState45 } from "react";
|
|
12435
12464
|
import { useForm as useForm4 } from "react-hook-form";
|
|
12436
12465
|
import { v4 as v44 } from "uuid";
|
|
12437
12466
|
import { z as z4 } from "zod";
|
|
12438
|
-
|
|
12467
|
+
|
|
12468
|
+
// src/features/auth/components/GdprConsentSection.tsx
|
|
12469
|
+
import { useTranslations as useTranslations47 } from "next-intl";
|
|
12470
|
+
import { Fragment as Fragment19, jsx as jsx137, jsxs as jsxs79 } from "react/jsx-runtime";
|
|
12471
|
+
function GdprConsentSection({
|
|
12472
|
+
form,
|
|
12473
|
+
termsCheckboxId = "termsAccepted",
|
|
12474
|
+
marketingCheckboxId = "marketingConsent"
|
|
12475
|
+
}) {
|
|
12476
|
+
const t = useTranslations47("auth.gdpr");
|
|
12477
|
+
const termsLabel = /* @__PURE__ */ jsxs79(Fragment19, { children: [
|
|
12478
|
+
t("terms_prefix"),
|
|
12479
|
+
" ",
|
|
12480
|
+
/* @__PURE__ */ jsx137(Link, { href: "/terms", target: "_blank", rel: "noopener", className: "underline", children: t("terms_of_service") }),
|
|
12481
|
+
" ",
|
|
12482
|
+
t("and"),
|
|
12483
|
+
" ",
|
|
12484
|
+
/* @__PURE__ */ jsx137(Link, { href: "/privacy", target: "_blank", rel: "noopener", className: "underline", children: t("privacy_policy") })
|
|
12485
|
+
] });
|
|
12486
|
+
return /* @__PURE__ */ jsxs79("div", { className: "space-y-4 py-4", children: [
|
|
12487
|
+
/* @__PURE__ */ jsx137(
|
|
12488
|
+
GdprConsentCheckbox,
|
|
12489
|
+
{
|
|
12490
|
+
form,
|
|
12491
|
+
id: termsCheckboxId,
|
|
12492
|
+
label: termsLabel,
|
|
12493
|
+
required: true
|
|
12494
|
+
}
|
|
12495
|
+
),
|
|
12496
|
+
/* @__PURE__ */ jsx137(
|
|
12497
|
+
GdprConsentCheckbox,
|
|
12498
|
+
{
|
|
12499
|
+
form,
|
|
12500
|
+
id: marketingCheckboxId,
|
|
12501
|
+
label: t("marketing_consent"),
|
|
12502
|
+
description: t("marketing_description")
|
|
12503
|
+
}
|
|
12504
|
+
)
|
|
12505
|
+
] });
|
|
12506
|
+
}
|
|
12507
|
+
__name(GdprConsentSection, "GdprConsentSection");
|
|
12508
|
+
|
|
12509
|
+
// src/features/auth/components/forms/Register.tsx
|
|
12510
|
+
import { Fragment as Fragment20, jsx as jsx138, jsxs as jsxs80 } from "react/jsx-runtime";
|
|
12439
12511
|
function Register() {
|
|
12440
|
-
const t =
|
|
12512
|
+
const t = useTranslations48();
|
|
12441
12513
|
const { setComponentType } = useAuthContext();
|
|
12442
12514
|
const [showConfirmation, setShowConfirmation] = useState45(false);
|
|
12443
12515
|
const formSchema = z4.object({
|
|
@@ -12452,7 +12524,11 @@ function Register() {
|
|
|
12452
12524
|
}),
|
|
12453
12525
|
password: z4.string().min(8, t(`auth.errors.password_too_short`)).regex(/^(?=.*[0-9])(?=.*[^a-zA-Z0-9]).*$/, {
|
|
12454
12526
|
message: t(`auth.errors.password_invalid_format`)
|
|
12455
|
-
})
|
|
12527
|
+
}),
|
|
12528
|
+
termsAccepted: z4.literal(true, {
|
|
12529
|
+
message: t("auth.gdpr.terms_required")
|
|
12530
|
+
}),
|
|
12531
|
+
marketingConsent: z4.boolean().optional()
|
|
12456
12532
|
});
|
|
12457
12533
|
const form = useForm4({
|
|
12458
12534
|
resolver: zodResolver4(formSchema),
|
|
@@ -12460,7 +12536,9 @@ function Register() {
|
|
|
12460
12536
|
company: "",
|
|
12461
12537
|
name: "",
|
|
12462
12538
|
email: "",
|
|
12463
|
-
password: ""
|
|
12539
|
+
password: "",
|
|
12540
|
+
termsAccepted: false,
|
|
12541
|
+
marketingConsent: false
|
|
12464
12542
|
}
|
|
12465
12543
|
});
|
|
12466
12544
|
const onSubmit = /* @__PURE__ */ __name(async (values) => {
|
|
@@ -12470,7 +12548,10 @@ function Register() {
|
|
|
12470
12548
|
companyName: values.company,
|
|
12471
12549
|
name: values.name,
|
|
12472
12550
|
email: values.email,
|
|
12473
|
-
password: values.password
|
|
12551
|
+
password: values.password,
|
|
12552
|
+
termsAcceptedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
12553
|
+
marketingConsent: values.marketingConsent ?? false,
|
|
12554
|
+
marketingConsentAt: values.marketingConsent ? (/* @__PURE__ */ new Date()).toISOString() : null
|
|
12474
12555
|
};
|
|
12475
12556
|
await AuthService.register(payload);
|
|
12476
12557
|
setShowConfirmation(true);
|
|
@@ -12478,17 +12559,17 @@ function Register() {
|
|
|
12478
12559
|
errorToast({ error: e });
|
|
12479
12560
|
}
|
|
12480
12561
|
}, "onSubmit");
|
|
12481
|
-
return /* @__PURE__ */
|
|
12482
|
-
/* @__PURE__ */
|
|
12483
|
-
/* @__PURE__ */
|
|
12484
|
-
/* @__PURE__ */
|
|
12562
|
+
return /* @__PURE__ */ jsxs80(Fragment20, { children: [
|
|
12563
|
+
/* @__PURE__ */ jsxs80(CardHeader, { children: [
|
|
12564
|
+
/* @__PURE__ */ jsxs80(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
|
|
12565
|
+
/* @__PURE__ */ jsx138(Image7, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
|
|
12485
12566
|
t(`auth.buttons.register`)
|
|
12486
12567
|
] }),
|
|
12487
|
-
/* @__PURE__ */
|
|
12568
|
+
/* @__PURE__ */ jsx138(CardDescription, { className: "text-sm", children: showConfirmation ? /* @__PURE__ */ jsx138(Fragment20, { children: " " }) : /* @__PURE__ */ jsx138(Fragment20, { children: t(`auth.register_description`) }) })
|
|
12488
12569
|
] }),
|
|
12489
|
-
showConfirmation ? /* @__PURE__ */
|
|
12490
|
-
/* @__PURE__ */
|
|
12491
|
-
/* @__PURE__ */
|
|
12570
|
+
showConfirmation ? /* @__PURE__ */ jsx138(CardContent, { children: /* @__PURE__ */ jsx138(CardDescription, { className: "text-center text-xl", children: t("auth.register_confirmation") }) }) : /* @__PURE__ */ jsx138(Form, { ...form, children: /* @__PURE__ */ jsxs80("form", { onSubmit: form.handleSubmit(onSubmit), children: [
|
|
12571
|
+
/* @__PURE__ */ jsxs80(CardContent, { children: [
|
|
12572
|
+
/* @__PURE__ */ jsx138(
|
|
12492
12573
|
FormInput,
|
|
12493
12574
|
{
|
|
12494
12575
|
isRequired: true,
|
|
@@ -12498,7 +12579,7 @@ function Register() {
|
|
|
12498
12579
|
placeholder: t(`company.fields.name.placeholder`)
|
|
12499
12580
|
}
|
|
12500
12581
|
),
|
|
12501
|
-
/* @__PURE__ */
|
|
12582
|
+
/* @__PURE__ */ jsx138(
|
|
12502
12583
|
FormInput,
|
|
12503
12584
|
{
|
|
12504
12585
|
isRequired: true,
|
|
@@ -12508,7 +12589,7 @@ function Register() {
|
|
|
12508
12589
|
placeholder: t(`user.fields.name.placeholder`)
|
|
12509
12590
|
}
|
|
12510
12591
|
),
|
|
12511
|
-
/* @__PURE__ */
|
|
12592
|
+
/* @__PURE__ */ jsx138(
|
|
12512
12593
|
FormInput,
|
|
12513
12594
|
{
|
|
12514
12595
|
isRequired: true,
|
|
@@ -12518,7 +12599,7 @@ function Register() {
|
|
|
12518
12599
|
placeholder: t(`common.fields.email.placeholder`)
|
|
12519
12600
|
}
|
|
12520
12601
|
),
|
|
12521
|
-
/* @__PURE__ */
|
|
12602
|
+
/* @__PURE__ */ jsx138(
|
|
12522
12603
|
FormPassword,
|
|
12523
12604
|
{
|
|
12524
12605
|
isRequired: true,
|
|
@@ -12528,10 +12609,11 @@ function Register() {
|
|
|
12528
12609
|
placeholder: t(`user.fields.password.placeholder`)
|
|
12529
12610
|
}
|
|
12530
12611
|
),
|
|
12531
|
-
/* @__PURE__ */
|
|
12612
|
+
/* @__PURE__ */ jsx138(GdprConsentSection, { form }),
|
|
12613
|
+
/* @__PURE__ */ jsx138(Button, { className: "mt-4 w-full", type: "submit", children: t(`auth.buttons.register`) })
|
|
12532
12614
|
] }),
|
|
12533
|
-
/* @__PURE__ */
|
|
12534
|
-
/* @__PURE__ */
|
|
12615
|
+
/* @__PURE__ */ jsxs80(CardFooter, { className: "flex w-full flex-row justify-between", children: [
|
|
12616
|
+
/* @__PURE__ */ jsx138(
|
|
12535
12617
|
Link,
|
|
12536
12618
|
{
|
|
12537
12619
|
href: "#",
|
|
@@ -12540,7 +12622,7 @@ function Register() {
|
|
|
12540
12622
|
children: t(`auth.buttons.login`)
|
|
12541
12623
|
}
|
|
12542
12624
|
),
|
|
12543
|
-
/* @__PURE__ */
|
|
12625
|
+
/* @__PURE__ */ jsx138(
|
|
12544
12626
|
Link,
|
|
12545
12627
|
{
|
|
12546
12628
|
href: "#",
|
|
@@ -12556,7 +12638,7 @@ function Register() {
|
|
|
12556
12638
|
__name(Register, "Register");
|
|
12557
12639
|
|
|
12558
12640
|
// src/features/auth/contexts/AuthContext.tsx
|
|
12559
|
-
import { jsx as
|
|
12641
|
+
import { jsx as jsx139 } from "react/jsx-runtime";
|
|
12560
12642
|
var AuthContext = createContext15(void 0);
|
|
12561
12643
|
var AuthContextProvider = /* @__PURE__ */ __name(({
|
|
12562
12644
|
children,
|
|
@@ -12569,22 +12651,22 @@ var AuthContextProvider = /* @__PURE__ */ __name(({
|
|
|
12569
12651
|
if (componentType === void 0) return null;
|
|
12570
12652
|
switch (componentType) {
|
|
12571
12653
|
case 0 /* Login */:
|
|
12572
|
-
return /* @__PURE__ */
|
|
12654
|
+
return /* @__PURE__ */ jsx139(Login, {});
|
|
12573
12655
|
case 5 /* Register */:
|
|
12574
|
-
return /* @__PURE__ */
|
|
12656
|
+
return /* @__PURE__ */ jsx139(Register, {});
|
|
12575
12657
|
case 1 /* ForgotPassword */:
|
|
12576
|
-
return /* @__PURE__ */
|
|
12658
|
+
return /* @__PURE__ */ jsx139(ForgotPassword, {});
|
|
12577
12659
|
case 3 /* ActivateAccount */:
|
|
12578
|
-
return /* @__PURE__ */
|
|
12660
|
+
return /* @__PURE__ */ jsx139(ActivateAccount, {});
|
|
12579
12661
|
case 2 /* ResetPassword */:
|
|
12580
|
-
return /* @__PURE__ */
|
|
12662
|
+
return /* @__PURE__ */ jsx139(ResetPassword, {});
|
|
12581
12663
|
case 4 /* AcceptInvitation */:
|
|
12582
|
-
return /* @__PURE__ */
|
|
12664
|
+
return /* @__PURE__ */ jsx139(AcceptInvitation, {});
|
|
12583
12665
|
default:
|
|
12584
|
-
return /* @__PURE__ */
|
|
12666
|
+
return /* @__PURE__ */ jsx139(LandingComponent, {});
|
|
12585
12667
|
}
|
|
12586
12668
|
}, [componentType]);
|
|
12587
|
-
return /* @__PURE__ */
|
|
12669
|
+
return /* @__PURE__ */ jsx139(
|
|
12588
12670
|
AuthContext.Provider,
|
|
12589
12671
|
{
|
|
12590
12672
|
value: {
|
|
@@ -12606,48 +12688,48 @@ var useAuthContext = /* @__PURE__ */ __name(() => {
|
|
|
12606
12688
|
}, "useAuthContext");
|
|
12607
12689
|
|
|
12608
12690
|
// src/features/auth/components/containers/AuthContainer.tsx
|
|
12609
|
-
import { jsx as
|
|
12691
|
+
import { jsx as jsx140 } from "react/jsx-runtime";
|
|
12610
12692
|
function AuthContainer({ componentType, params }) {
|
|
12611
|
-
return /* @__PURE__ */
|
|
12693
|
+
return /* @__PURE__ */ jsx140(AuthContextProvider, { initialComponentType: componentType, initialParams: params, children: /* @__PURE__ */ jsx140(InnerAuthContainer, {}) });
|
|
12612
12694
|
}
|
|
12613
12695
|
__name(AuthContainer, "AuthContainer");
|
|
12614
12696
|
function InnerAuthContainer() {
|
|
12615
12697
|
const { activeComponent } = useAuthContext();
|
|
12616
12698
|
if (activeComponent === null)
|
|
12617
|
-
return /* @__PURE__ */
|
|
12618
|
-
return /* @__PURE__ */
|
|
12699
|
+
return /* @__PURE__ */ jsx140("div", { className: "max-w-sm", children: /* @__PURE__ */ jsx140(Image8, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, className: "animate-spin-slow", priority: true }) });
|
|
12700
|
+
return /* @__PURE__ */ jsx140(Card, { className: "w-full max-w-md", children: activeComponent });
|
|
12619
12701
|
}
|
|
12620
12702
|
__name(InnerAuthContainer, "InnerAuthContainer");
|
|
12621
12703
|
|
|
12622
12704
|
// src/features/auth/components/details/LandingComponent.tsx
|
|
12623
|
-
import { useTranslations as
|
|
12705
|
+
import { useTranslations as useTranslations49 } from "next-intl";
|
|
12624
12706
|
import Image9 from "next/image";
|
|
12625
|
-
import { Fragment as
|
|
12707
|
+
import { Fragment as Fragment21, jsx as jsx141, jsxs as jsxs81 } from "react/jsx-runtime";
|
|
12626
12708
|
function LandingComponent() {
|
|
12627
|
-
const t =
|
|
12709
|
+
const t = useTranslations49();
|
|
12628
12710
|
const { setComponentType } = useAuthContext();
|
|
12629
|
-
return /* @__PURE__ */
|
|
12630
|
-
/* @__PURE__ */
|
|
12631
|
-
/* @__PURE__ */
|
|
12632
|
-
/* @__PURE__ */
|
|
12711
|
+
return /* @__PURE__ */ jsxs81(Fragment21, { children: [
|
|
12712
|
+
/* @__PURE__ */ jsxs81(CardHeader, { className: "mb-4", "data-testid": "page-pre-login-container", children: [
|
|
12713
|
+
/* @__PURE__ */ jsxs81(CardTitle, { className: "text-primary flex flex-col items-center gap-y-8 pb-8 text-4xl", children: [
|
|
12714
|
+
/* @__PURE__ */ jsx141(Image9, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
|
|
12633
12715
|
t(`common.title`)
|
|
12634
12716
|
] }),
|
|
12635
|
-
/* @__PURE__ */
|
|
12717
|
+
/* @__PURE__ */ jsx141(CardDescription, { className: "flex w-full justify-center text-center text-sm", children: t(`common.description`) })
|
|
12636
12718
|
] }),
|
|
12637
|
-
/* @__PURE__ */
|
|
12638
|
-
isInternalAuthEnabled() && /* @__PURE__ */
|
|
12639
|
-
isRegistrationAllowed() && /* @__PURE__ */
|
|
12719
|
+
/* @__PURE__ */ jsxs81(CardFooter, { className: "mt-4 flex w-full flex-col justify-between gap-y-4", children: [
|
|
12720
|
+
isInternalAuthEnabled() && /* @__PURE__ */ jsxs81(Fragment21, { children: [
|
|
12721
|
+
isRegistrationAllowed() && /* @__PURE__ */ jsx141(
|
|
12640
12722
|
Link,
|
|
12641
12723
|
{
|
|
12642
12724
|
href: "#",
|
|
12643
12725
|
className: "flex w-full justify-start",
|
|
12644
12726
|
onClick: () => setComponentType(5 /* Register */),
|
|
12645
|
-
children: /* @__PURE__ */
|
|
12727
|
+
children: /* @__PURE__ */ jsx141(Button, { className: "w-full", variant: `default`, children: t(`auth.buttons.register`) })
|
|
12646
12728
|
}
|
|
12647
12729
|
),
|
|
12648
|
-
/* @__PURE__ */
|
|
12730
|
+
/* @__PURE__ */ jsx141(Link, { href: "#", className: "flex w-full justify-end", onClick: () => setComponentType(0 /* Login */), children: /* @__PURE__ */ jsx141(Button, { className: "w-full", variant: `outline`, "data-testid": "page-login-button-initial-login", children: t(`auth.buttons.login`) }) })
|
|
12649
12731
|
] }),
|
|
12650
|
-
isDiscordAuthEnabled() && /* @__PURE__ */
|
|
12732
|
+
isDiscordAuthEnabled() && /* @__PURE__ */ jsx141(Link, { href: `${getApiUrl()}auth/discord`, className: "flex w-full justify-end", children: /* @__PURE__ */ jsx141(Button, { className: "w-full", variant: `outline`, "data-testid": "page-login-button-initial-login", children: "Login with Discord" }) })
|
|
12651
12733
|
] })
|
|
12652
12734
|
] });
|
|
12653
12735
|
}
|
|
@@ -12655,17 +12737,17 @@ __name(LandingComponent, "LandingComponent");
|
|
|
12655
12737
|
|
|
12656
12738
|
// src/features/auth/components/forms/AcceptInvitation.tsx
|
|
12657
12739
|
import { zodResolver as zodResolver5 } from "@hookform/resolvers/zod";
|
|
12658
|
-
import { useTranslations as
|
|
12740
|
+
import { useTranslations as useTranslations50 } from "next-intl";
|
|
12659
12741
|
import Image10 from "next/image";
|
|
12660
12742
|
import { useEffect as useEffect39, useState as useState47 } from "react";
|
|
12661
12743
|
import { useForm as useForm5 } from "react-hook-form";
|
|
12662
12744
|
import { z as z5 } from "zod";
|
|
12663
|
-
import { Fragment as
|
|
12745
|
+
import { Fragment as Fragment22, jsx as jsx142, jsxs as jsxs82 } from "react/jsx-runtime";
|
|
12664
12746
|
function AcceptInvitation() {
|
|
12665
12747
|
const { setComponentType, params, setParams } = useAuthContext();
|
|
12666
12748
|
const [showConfirmation, setShowConfirmation] = useState47(false);
|
|
12667
12749
|
const [error, setError] = useState47(void 0);
|
|
12668
|
-
const t =
|
|
12750
|
+
const t = useTranslations50();
|
|
12669
12751
|
useEffect39(() => {
|
|
12670
12752
|
async function validateCode(code) {
|
|
12671
12753
|
try {
|
|
@@ -12723,16 +12805,16 @@ function AcceptInvitation() {
|
|
|
12723
12805
|
errorToast({ title: t(`common.errors.error`), error });
|
|
12724
12806
|
}
|
|
12725
12807
|
}, "onSubmit");
|
|
12726
|
-
return /* @__PURE__ */
|
|
12727
|
-
/* @__PURE__ */
|
|
12728
|
-
/* @__PURE__ */
|
|
12729
|
-
/* @__PURE__ */
|
|
12808
|
+
return /* @__PURE__ */ jsxs82(Fragment22, { children: [
|
|
12809
|
+
/* @__PURE__ */ jsxs82(CardHeader, { children: [
|
|
12810
|
+
/* @__PURE__ */ jsxs82(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
|
|
12811
|
+
/* @__PURE__ */ jsx142(Image10, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
|
|
12730
12812
|
t("auth.accept_invitation")
|
|
12731
12813
|
] }),
|
|
12732
|
-
/* @__PURE__ */
|
|
12814
|
+
/* @__PURE__ */ jsx142(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx142(Fragment22, { children: t("auth.errors.activating_account") }) : /* @__PURE__ */ jsx142(Fragment22, { children: t("auth.select_password") }) })
|
|
12733
12815
|
] }),
|
|
12734
|
-
/* @__PURE__ */
|
|
12735
|
-
/* @__PURE__ */
|
|
12816
|
+
/* @__PURE__ */ jsx142(CardContent, { children: showConfirmation ? /* @__PURE__ */ jsx142(CardDescription, { className: "text-center text-xl", children: t("auth.activation_description") }) : error ? /* @__PURE__ */ jsx142(CardDescription, { className: "text-center text-xl", children: error }) : /* @__PURE__ */ jsx142(Form, { ...form, children: /* @__PURE__ */ jsxs82("form", { onSubmit: form.handleSubmit(onSubmit), children: [
|
|
12817
|
+
/* @__PURE__ */ jsx142(
|
|
12736
12818
|
FormPassword,
|
|
12737
12819
|
{
|
|
12738
12820
|
form,
|
|
@@ -12741,7 +12823,7 @@ function AcceptInvitation() {
|
|
|
12741
12823
|
placeholder: t(`user.fields.password.placeholder`)
|
|
12742
12824
|
}
|
|
12743
12825
|
),
|
|
12744
|
-
/* @__PURE__ */
|
|
12826
|
+
/* @__PURE__ */ jsx142(
|
|
12745
12827
|
FormPassword,
|
|
12746
12828
|
{
|
|
12747
12829
|
form,
|
|
@@ -12750,22 +12832,22 @@ function AcceptInvitation() {
|
|
|
12750
12832
|
placeholder: t(`auth.fields.retype_password.placeholder`)
|
|
12751
12833
|
}
|
|
12752
12834
|
),
|
|
12753
|
-
/* @__PURE__ */
|
|
12835
|
+
/* @__PURE__ */ jsx142(Button, { className: "mt-4 w-full", type: "submit", children: t("auth.accept_invitation") })
|
|
12754
12836
|
] }) }) })
|
|
12755
12837
|
] });
|
|
12756
12838
|
}
|
|
12757
12839
|
__name(AcceptInvitation, "AcceptInvitation");
|
|
12758
12840
|
|
|
12759
12841
|
// src/features/auth/components/forms/ActivateAccount.tsx
|
|
12760
|
-
import { useTranslations as
|
|
12842
|
+
import { useTranslations as useTranslations51 } from "next-intl";
|
|
12761
12843
|
import Image11 from "next/image";
|
|
12762
12844
|
import { useEffect as useEffect40, useState as useState48 } from "react";
|
|
12763
|
-
import { Fragment as
|
|
12845
|
+
import { Fragment as Fragment23, jsx as jsx143, jsxs as jsxs83 } from "react/jsx-runtime";
|
|
12764
12846
|
function ActivateAccount() {
|
|
12765
12847
|
const { setComponentType, params, setParams } = useAuthContext();
|
|
12766
12848
|
const [showConfirmation, setShowConfirmation] = useState48(false);
|
|
12767
12849
|
const [error, setError] = useState48(void 0);
|
|
12768
|
-
const t =
|
|
12850
|
+
const t = useTranslations51();
|
|
12769
12851
|
useEffect40(() => {
|
|
12770
12852
|
async function ActivateAccount2(code) {
|
|
12771
12853
|
try {
|
|
@@ -12793,15 +12875,15 @@ function ActivateAccount() {
|
|
|
12793
12875
|
setError(t(`auth.errors.invalid_invitation_code`));
|
|
12794
12876
|
}
|
|
12795
12877
|
}, []);
|
|
12796
|
-
return /* @__PURE__ */
|
|
12797
|
-
/* @__PURE__ */
|
|
12798
|
-
/* @__PURE__ */
|
|
12799
|
-
/* @__PURE__ */
|
|
12878
|
+
return /* @__PURE__ */ jsxs83(Fragment23, { children: [
|
|
12879
|
+
/* @__PURE__ */ jsxs83(CardHeader, { children: [
|
|
12880
|
+
/* @__PURE__ */ jsxs83(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
|
|
12881
|
+
/* @__PURE__ */ jsx143(Image11, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
|
|
12800
12882
|
t("auth.accept_invitation")
|
|
12801
12883
|
] }),
|
|
12802
|
-
/* @__PURE__ */
|
|
12884
|
+
/* @__PURE__ */ jsx143(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx143(Fragment23, { children: t("auth.errors.activating_account") }) : /* @__PURE__ */ jsx143(Fragment23, { children: " " }) })
|
|
12803
12885
|
] }),
|
|
12804
|
-
/* @__PURE__ */
|
|
12886
|
+
/* @__PURE__ */ jsx143(CardContent, { children: /* @__PURE__ */ jsx143(CardDescription, { className: "text-center text-xl", children: showConfirmation ? /* @__PURE__ */ jsx143(Fragment23, { children: t("auth.activation_description") }) : error ? /* @__PURE__ */ jsx143(Fragment23, { children: error }) : /* @__PURE__ */ jsx143(Fragment23, { children: t("auth.activation_wait") }) }) })
|
|
12805
12887
|
] });
|
|
12806
12888
|
}
|
|
12807
12889
|
__name(ActivateAccount, "ActivateAccount");
|
|
@@ -12833,14 +12915,14 @@ __name(Cookies, "Cookies");
|
|
|
12833
12915
|
|
|
12834
12916
|
// src/features/auth/components/forms/ForgotPassword.tsx
|
|
12835
12917
|
import { zodResolver as zodResolver6 } from "@hookform/resolvers/zod";
|
|
12836
|
-
import { useTranslations as
|
|
12918
|
+
import { useTranslations as useTranslations52 } from "next-intl";
|
|
12837
12919
|
import Image12 from "next/image";
|
|
12838
12920
|
import { useState as useState50 } from "react";
|
|
12839
12921
|
import { useForm as useForm6 } from "react-hook-form";
|
|
12840
12922
|
import { z as z6 } from "zod";
|
|
12841
|
-
import { Fragment as
|
|
12923
|
+
import { Fragment as Fragment24, jsx as jsx144, jsxs as jsxs84 } from "react/jsx-runtime";
|
|
12842
12924
|
function ForgotPassword() {
|
|
12843
|
-
const t =
|
|
12925
|
+
const t = useTranslations52();
|
|
12844
12926
|
const { setComponentType } = useAuthContext();
|
|
12845
12927
|
const [showConfirmation, setShowConfirmation] = useState50(false);
|
|
12846
12928
|
const formSchema = z6.object({
|
|
@@ -12865,17 +12947,17 @@ function ForgotPassword() {
|
|
|
12865
12947
|
errorToast({ error: e });
|
|
12866
12948
|
}
|
|
12867
12949
|
}, "onSubmit");
|
|
12868
|
-
return /* @__PURE__ */
|
|
12869
|
-
/* @__PURE__ */
|
|
12870
|
-
/* @__PURE__ */
|
|
12871
|
-
/* @__PURE__ */
|
|
12950
|
+
return /* @__PURE__ */ jsxs84(Fragment24, { children: [
|
|
12951
|
+
/* @__PURE__ */ jsxs84(CardHeader, { "data-testid": "page-forgot-password-container", children: [
|
|
12952
|
+
/* @__PURE__ */ jsxs84(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
|
|
12953
|
+
/* @__PURE__ */ jsx144(Image12, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
|
|
12872
12954
|
t("auth.buttons.forgot_password")
|
|
12873
12955
|
] }),
|
|
12874
|
-
/* @__PURE__ */
|
|
12956
|
+
/* @__PURE__ */ jsx144(CardDescription, { className: "text-sm", children: showConfirmation ? /* @__PURE__ */ jsx144(Fragment24, { children: " " }) : /* @__PURE__ */ jsx144(Fragment24, { children: t(`auth.add_email_to_reset`) }) })
|
|
12875
12957
|
] }),
|
|
12876
|
-
showConfirmation ? /* @__PURE__ */
|
|
12877
|
-
/* @__PURE__ */
|
|
12878
|
-
/* @__PURE__ */
|
|
12958
|
+
showConfirmation ? /* @__PURE__ */ jsx144(CardContent, { children: /* @__PURE__ */ jsx144(CardDescription, { className: "text-center text-xl", children: t(`auth.reset_confirmation`) }) }) : /* @__PURE__ */ jsx144(Form, { ...form, children: /* @__PURE__ */ jsxs84("form", { onSubmit: form.handleSubmit(onSubmit), children: [
|
|
12959
|
+
/* @__PURE__ */ jsxs84(CardContent, { children: [
|
|
12960
|
+
/* @__PURE__ */ jsx144(
|
|
12879
12961
|
FormInput,
|
|
12880
12962
|
{
|
|
12881
12963
|
form,
|
|
@@ -12885,9 +12967,9 @@ function ForgotPassword() {
|
|
|
12885
12967
|
testId: "form-forgot-password-input-email"
|
|
12886
12968
|
}
|
|
12887
12969
|
),
|
|
12888
|
-
/* @__PURE__ */
|
|
12970
|
+
/* @__PURE__ */ jsx144(Button, { className: "mt-4 w-full", type: "submit", "data-testid": "form-forgot-password-button-reset", children: t(`auth.buttons.reset_password`) })
|
|
12889
12971
|
] }),
|
|
12890
|
-
/* @__PURE__ */
|
|
12972
|
+
/* @__PURE__ */ jsx144(CardFooter, { className: "flex w-full flex-row justify-between", children: /* @__PURE__ */ jsx144(
|
|
12891
12973
|
Link,
|
|
12892
12974
|
{
|
|
12893
12975
|
href: "#",
|
|
@@ -12904,13 +12986,13 @@ __name(ForgotPassword, "ForgotPassword");
|
|
|
12904
12986
|
|
|
12905
12987
|
// src/features/auth/components/forms/Login.tsx
|
|
12906
12988
|
import { zodResolver as zodResolver7 } from "@hookform/resolvers/zod";
|
|
12907
|
-
import { useTranslations as
|
|
12989
|
+
import { useTranslations as useTranslations53 } from "next-intl";
|
|
12908
12990
|
import Image13 from "next/image";
|
|
12909
12991
|
import { useForm as useForm7 } from "react-hook-form";
|
|
12910
12992
|
import { z as z7 } from "zod";
|
|
12911
|
-
import { Fragment as
|
|
12993
|
+
import { Fragment as Fragment25, jsx as jsx145, jsxs as jsxs85 } from "react/jsx-runtime";
|
|
12912
12994
|
function Login() {
|
|
12913
|
-
const t =
|
|
12995
|
+
const t = useTranslations53();
|
|
12914
12996
|
const { setUser } = useCurrentUserContext();
|
|
12915
12997
|
const { setComponentType } = useAuthContext();
|
|
12916
12998
|
const generateUrl = usePageUrlGenerator();
|
|
@@ -12943,17 +13025,17 @@ function Login() {
|
|
|
12943
13025
|
});
|
|
12944
13026
|
}
|
|
12945
13027
|
}, "onSubmit");
|
|
12946
|
-
return /* @__PURE__ */
|
|
12947
|
-
/* @__PURE__ */
|
|
12948
|
-
/* @__PURE__ */
|
|
12949
|
-
/* @__PURE__ */
|
|
13028
|
+
return /* @__PURE__ */ jsxs85(Fragment25, { children: [
|
|
13029
|
+
/* @__PURE__ */ jsxs85(CardHeader, { "data-testid": "page-login-container", children: [
|
|
13030
|
+
/* @__PURE__ */ jsxs85(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
|
|
13031
|
+
/* @__PURE__ */ jsx145(Image13, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
|
|
12950
13032
|
t("auth.buttons.login")
|
|
12951
13033
|
] }),
|
|
12952
|
-
/* @__PURE__ */
|
|
13034
|
+
/* @__PURE__ */ jsx145(CardDescription, { className: "text-sm", children: t(`auth.login_description`) })
|
|
12953
13035
|
] }),
|
|
12954
|
-
/* @__PURE__ */
|
|
12955
|
-
/* @__PURE__ */
|
|
12956
|
-
/* @__PURE__ */
|
|
13036
|
+
/* @__PURE__ */ jsx145(Form, { ...form, children: /* @__PURE__ */ jsxs85("form", { onSubmit: form.handleSubmit(onSubmit), children: [
|
|
13037
|
+
/* @__PURE__ */ jsx145(CardContent, { children: isInternalAuthEnabled() && /* @__PURE__ */ jsxs85(Fragment25, { children: [
|
|
13038
|
+
/* @__PURE__ */ jsx145(
|
|
12957
13039
|
FormInput,
|
|
12958
13040
|
{
|
|
12959
13041
|
autoFocus: true,
|
|
@@ -12964,7 +13046,7 @@ function Login() {
|
|
|
12964
13046
|
testId: "form-login-input-email"
|
|
12965
13047
|
}
|
|
12966
13048
|
),
|
|
12967
|
-
/* @__PURE__ */
|
|
13049
|
+
/* @__PURE__ */ jsx145(
|
|
12968
13050
|
FormPassword,
|
|
12969
13051
|
{
|
|
12970
13052
|
form,
|
|
@@ -12974,12 +13056,12 @@ function Login() {
|
|
|
12974
13056
|
testId: "form-login-input-password"
|
|
12975
13057
|
}
|
|
12976
13058
|
),
|
|
12977
|
-
/* @__PURE__ */
|
|
13059
|
+
/* @__PURE__ */ jsx145(Button, { className: "mt-4 w-full", type: "submit", "data-testid": "form-login-button-submit", children: t(`auth.buttons.login`) })
|
|
12978
13060
|
] }) }),
|
|
12979
|
-
/* @__PURE__ */
|
|
12980
|
-
isDiscordAuthEnabled() && /* @__PURE__ */
|
|
12981
|
-
/* @__PURE__ */
|
|
12982
|
-
/* @__PURE__ */
|
|
13061
|
+
/* @__PURE__ */ jsxs85(CardFooter, { className: "flex w-full flex-col gap-y-4 mt-4", children: [
|
|
13062
|
+
isDiscordAuthEnabled() && /* @__PURE__ */ jsx145(Link, { href: `${getApiUrl()}auth/discord`, className: "flex w-full justify-end", children: /* @__PURE__ */ jsx145(Button, { className: "w-full", variant: `outline`, "data-testid": "page-login-button-initial-login", children: "Login with Discord" }) }),
|
|
13063
|
+
/* @__PURE__ */ jsxs85("div", { className: "flex w-full flex-row justify-between", children: [
|
|
13064
|
+
/* @__PURE__ */ jsx145(
|
|
12983
13065
|
Link,
|
|
12984
13066
|
{
|
|
12985
13067
|
href: "#",
|
|
@@ -12988,7 +13070,7 @@ function Login() {
|
|
|
12988
13070
|
children: t(`auth.buttons.register`)
|
|
12989
13071
|
}
|
|
12990
13072
|
),
|
|
12991
|
-
/* @__PURE__ */
|
|
13073
|
+
/* @__PURE__ */ jsx145(
|
|
12992
13074
|
Link,
|
|
12993
13075
|
{
|
|
12994
13076
|
href: "#",
|
|
@@ -13007,7 +13089,7 @@ __name(Login, "Login");
|
|
|
13007
13089
|
|
|
13008
13090
|
// src/features/auth/components/forms/Logout.tsx
|
|
13009
13091
|
import { useEffect as useEffect42 } from "react";
|
|
13010
|
-
import { Fragment as
|
|
13092
|
+
import { Fragment as Fragment26, jsx as jsx146 } from "react/jsx-runtime";
|
|
13011
13093
|
function Logout() {
|
|
13012
13094
|
const generateUrl = usePageUrlGenerator();
|
|
13013
13095
|
useEffect42(() => {
|
|
@@ -13017,7 +13099,7 @@ function Logout() {
|
|
|
13017
13099
|
}, "logOut");
|
|
13018
13100
|
logOut();
|
|
13019
13101
|
}, []);
|
|
13020
|
-
return /* @__PURE__ */
|
|
13102
|
+
return /* @__PURE__ */ jsx146(Fragment26, {});
|
|
13021
13103
|
}
|
|
13022
13104
|
__name(Logout, "Logout");
|
|
13023
13105
|
|
|
@@ -13053,17 +13135,17 @@ __name(RefreshUser, "RefreshUser");
|
|
|
13053
13135
|
|
|
13054
13136
|
// src/features/auth/components/forms/ResetPassword.tsx
|
|
13055
13137
|
import { zodResolver as zodResolver8 } from "@hookform/resolvers/zod";
|
|
13056
|
-
import { useTranslations as
|
|
13138
|
+
import { useTranslations as useTranslations54 } from "next-intl";
|
|
13057
13139
|
import Image14 from "next/image";
|
|
13058
13140
|
import { useEffect as useEffect44, useState as useState51 } from "react";
|
|
13059
13141
|
import { useForm as useForm8 } from "react-hook-form";
|
|
13060
13142
|
import { z as z8 } from "zod";
|
|
13061
|
-
import { Fragment as
|
|
13143
|
+
import { Fragment as Fragment27, jsx as jsx147, jsxs as jsxs86 } from "react/jsx-runtime";
|
|
13062
13144
|
function ResetPassword() {
|
|
13063
13145
|
const { setComponentType, params, setParams } = useAuthContext();
|
|
13064
13146
|
const [showConfirmation, setShowConfirmation] = useState51(false);
|
|
13065
13147
|
const [error, setError] = useState51(void 0);
|
|
13066
|
-
const t =
|
|
13148
|
+
const t = useTranslations54();
|
|
13067
13149
|
useEffect44(() => {
|
|
13068
13150
|
async function validateResetPasswordCode(code) {
|
|
13069
13151
|
try {
|
|
@@ -13121,31 +13203,31 @@ function ResetPassword() {
|
|
|
13121
13203
|
errorToast({ title: t(`common.errors.error`), error });
|
|
13122
13204
|
}
|
|
13123
13205
|
}, "onSubmit");
|
|
13124
|
-
return /* @__PURE__ */
|
|
13125
|
-
/* @__PURE__ */
|
|
13126
|
-
/* @__PURE__ */
|
|
13127
|
-
/* @__PURE__ */
|
|
13206
|
+
return /* @__PURE__ */ jsxs86(Fragment27, { children: [
|
|
13207
|
+
/* @__PURE__ */ jsxs86(CardHeader, { children: [
|
|
13208
|
+
/* @__PURE__ */ jsxs86(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
|
|
13209
|
+
/* @__PURE__ */ jsx147(Image14, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
|
|
13128
13210
|
t(`auth.password_reset`)
|
|
13129
13211
|
] }),
|
|
13130
|
-
/* @__PURE__ */
|
|
13212
|
+
/* @__PURE__ */ jsx147(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx147(Fragment27, { children: t(`auth.errors.password_reset_error`) }) : /* @__PURE__ */ jsx147(Fragment27, { children: t(`auth.reset_password`) }) })
|
|
13131
13213
|
] }),
|
|
13132
|
-
/* @__PURE__ */
|
|
13133
|
-
/* @__PURE__ */
|
|
13134
|
-
/* @__PURE__ */
|
|
13135
|
-
/* @__PURE__ */
|
|
13214
|
+
/* @__PURE__ */ jsx147(CardContent, { children: showConfirmation ? /* @__PURE__ */ jsx147(CardDescription, { className: "text-center text-xl", children: t(`auth.reset_success_description`) }) : error ? /* @__PURE__ */ jsx147(CardDescription, { className: "text-center text-xl", children: error }) : /* @__PURE__ */ jsx147(Form, { ...form, children: /* @__PURE__ */ jsxs86("form", { onSubmit: form.handleSubmit(onSubmit), children: [
|
|
13215
|
+
/* @__PURE__ */ jsx147(FormPassword, { form, id: "password", name: "Password" }),
|
|
13216
|
+
/* @__PURE__ */ jsx147(FormPassword, { form, id: "passwordRetype", name: "Retype Password" }),
|
|
13217
|
+
/* @__PURE__ */ jsx147(Button, { className: "mt-4 w-full", type: "submit", children: t(`auth.buttons.reset_password`) })
|
|
13136
13218
|
] }) }) })
|
|
13137
13219
|
] });
|
|
13138
13220
|
}
|
|
13139
13221
|
__name(ResetPassword, "ResetPassword");
|
|
13140
13222
|
|
|
13141
13223
|
// src/features/content/components/lists/ContentsList.tsx
|
|
13142
|
-
import { useTranslations as
|
|
13143
|
-
import { jsx as
|
|
13224
|
+
import { useTranslations as useTranslations55 } from "next-intl";
|
|
13225
|
+
import { jsx as jsx148, jsxs as jsxs87 } from "react/jsx-runtime";
|
|
13144
13226
|
function ContentsList({ contentList }) {
|
|
13145
|
-
const t =
|
|
13146
|
-
return /* @__PURE__ */
|
|
13147
|
-
/* @__PURE__ */
|
|
13148
|
-
/* @__PURE__ */
|
|
13227
|
+
const t = useTranslations55();
|
|
13228
|
+
return /* @__PURE__ */ jsxs87("div", { className: "flex min-h-0 w-full flex-col overflow-y-auto", children: [
|
|
13229
|
+
/* @__PURE__ */ jsx148("h2", { className: "text-xl font-semibold", children: t(`content.news`) }),
|
|
13230
|
+
/* @__PURE__ */ jsx148("div", { className: "flex flex-col", children: contentList.map((content) => /* @__PURE__ */ jsx148(ContentsListElement, { content }, content.id)) })
|
|
13149
13231
|
] });
|
|
13150
13232
|
}
|
|
13151
13233
|
__name(ContentsList, "ContentsList");
|
|
@@ -13153,33 +13235,33 @@ function ContentsListElement({ content }) {
|
|
|
13153
13235
|
const generateUrl = usePageUrlGenerator();
|
|
13154
13236
|
const contentModule = content.contentType ? Modules.findByModelName(content.contentType) : void 0;
|
|
13155
13237
|
const link = contentModule ? generateUrl({ page: contentModule, id: content.id }) : "#";
|
|
13156
|
-
return /* @__PURE__ */
|
|
13157
|
-
/* @__PURE__ */
|
|
13158
|
-
/* @__PURE__ */
|
|
13238
|
+
return /* @__PURE__ */ jsx148("div", { className: "hover:bg-muted flex w-full flex-col gap-y-2 border-b p-2 py-4", children: /* @__PURE__ */ jsxs87("div", { className: "flex w-full justify-between gap-x-2", children: [
|
|
13239
|
+
/* @__PURE__ */ jsxs87(HoverCard, { children: [
|
|
13240
|
+
/* @__PURE__ */ jsx148(HoverCardTrigger, { children: /* @__PURE__ */ jsxs87(Link, { href: link, className: "flex w-full items-center justify-start gap-2 font-semibold", children: [
|
|
13159
13241
|
contentModule && getIconByModule({ module: contentModule, className: "h-4 w-4" }),
|
|
13160
13242
|
content.name
|
|
13161
13243
|
] }) }),
|
|
13162
|
-
/* @__PURE__ */
|
|
13163
|
-
/* @__PURE__ */
|
|
13164
|
-
/* @__PURE__ */
|
|
13244
|
+
/* @__PURE__ */ jsxs87(HoverCardContent, { className: "flex max-h-96 w-96 flex-col gap-y-4 overflow-y-auto", children: [
|
|
13245
|
+
/* @__PURE__ */ jsx148(Link, { href: link, className: "font-semibold", children: content.name }),
|
|
13246
|
+
/* @__PURE__ */ jsx148("div", { className: "text-xs", children: content.abstract })
|
|
13165
13247
|
] })
|
|
13166
13248
|
] }),
|
|
13167
|
-
/* @__PURE__ */
|
|
13249
|
+
/* @__PURE__ */ jsx148(ContributorsList, { content })
|
|
13168
13250
|
] }) });
|
|
13169
13251
|
}
|
|
13170
13252
|
__name(ContentsListElement, "ContentsListElement");
|
|
13171
13253
|
|
|
13172
13254
|
// src/features/content/components/lists/ContentsListById.tsx
|
|
13173
|
-
import { useTranslations as
|
|
13174
|
-
import { jsx as
|
|
13255
|
+
import { useTranslations as useTranslations56 } from "next-intl";
|
|
13256
|
+
import { jsx as jsx149 } from "react/jsx-runtime";
|
|
13175
13257
|
function ContentsListById({ contentIds }) {
|
|
13176
|
-
const t =
|
|
13258
|
+
const t = useTranslations56();
|
|
13177
13259
|
const data = useDataListRetriever({
|
|
13178
13260
|
module: Modules.Content,
|
|
13179
13261
|
retriever: /* @__PURE__ */ __name((params) => ContentService.findMany(params), "retriever"),
|
|
13180
13262
|
retrieverParams: { contentIds }
|
|
13181
13263
|
});
|
|
13182
|
-
return /* @__PURE__ */
|
|
13264
|
+
return /* @__PURE__ */ jsx149(
|
|
13183
13265
|
ContentListTable,
|
|
13184
13266
|
{
|
|
13185
13267
|
data,
|
|
@@ -13192,16 +13274,16 @@ function ContentsListById({ contentIds }) {
|
|
|
13192
13274
|
__name(ContentsListById, "ContentsListById");
|
|
13193
13275
|
|
|
13194
13276
|
// src/features/content/components/lists/RelevantContentsList.tsx
|
|
13195
|
-
import { useTranslations as
|
|
13196
|
-
import { jsx as
|
|
13277
|
+
import { useTranslations as useTranslations57 } from "next-intl";
|
|
13278
|
+
import { jsx as jsx150 } from "react/jsx-runtime";
|
|
13197
13279
|
function RelevantContentsList({ id }) {
|
|
13198
|
-
const t =
|
|
13280
|
+
const t = useTranslations57();
|
|
13199
13281
|
const data = useDataListRetriever({
|
|
13200
13282
|
module: Modules.Content,
|
|
13201
13283
|
retriever: /* @__PURE__ */ __name((params) => ContentService.findRelevant(params), "retriever"),
|
|
13202
13284
|
retrieverParams: { id }
|
|
13203
13285
|
});
|
|
13204
|
-
return /* @__PURE__ */
|
|
13286
|
+
return /* @__PURE__ */ jsx150(
|
|
13205
13287
|
ContentListTable,
|
|
13206
13288
|
{
|
|
13207
13289
|
data,
|
|
@@ -13215,7 +13297,7 @@ __name(RelevantContentsList, "RelevantContentsList");
|
|
|
13215
13297
|
|
|
13216
13298
|
// src/features/notification/components/common/NotificationErrorBoundary.tsx
|
|
13217
13299
|
import { Component } from "react";
|
|
13218
|
-
import { jsx as
|
|
13300
|
+
import { jsx as jsx151, jsxs as jsxs88 } from "react/jsx-runtime";
|
|
13219
13301
|
var NotificationErrorBoundary = class extends Component {
|
|
13220
13302
|
static {
|
|
13221
13303
|
__name(this, "NotificationErrorBoundary");
|
|
@@ -13232,9 +13314,9 @@ var NotificationErrorBoundary = class extends Component {
|
|
|
13232
13314
|
}
|
|
13233
13315
|
render() {
|
|
13234
13316
|
if (this.state.hasError) {
|
|
13235
|
-
return this.props.fallback || /* @__PURE__ */
|
|
13236
|
-
/* @__PURE__ */
|
|
13237
|
-
/* @__PURE__ */
|
|
13317
|
+
return this.props.fallback || /* @__PURE__ */ jsx151("div", { className: "flex items-center justify-center p-4 text-center", children: /* @__PURE__ */ jsxs88("div", { className: "text-muted-foreground text-sm", children: [
|
|
13318
|
+
/* @__PURE__ */ jsx151("p", { children: "Something went wrong with notifications." }),
|
|
13319
|
+
/* @__PURE__ */ jsx151(
|
|
13238
13320
|
"button",
|
|
13239
13321
|
{
|
|
13240
13322
|
onClick: () => this.setState({ hasError: false }),
|
|
@@ -13249,14 +13331,14 @@ var NotificationErrorBoundary = class extends Component {
|
|
|
13249
13331
|
};
|
|
13250
13332
|
|
|
13251
13333
|
// src/features/notification/components/containers/NotificationsListContainer.tsx
|
|
13252
|
-
import { useTranslations as
|
|
13334
|
+
import { useTranslations as useTranslations59 } from "next-intl";
|
|
13253
13335
|
|
|
13254
13336
|
// src/features/notification/components/lists/NotificationsList.tsx
|
|
13255
13337
|
import { ArchiveIcon } from "lucide-react";
|
|
13256
|
-
import { useTranslations as
|
|
13257
|
-
import { Fragment as
|
|
13338
|
+
import { useTranslations as useTranslations58 } from "next-intl";
|
|
13339
|
+
import { Fragment as Fragment28, jsx as jsx152, jsxs as jsxs89 } from "react/jsx-runtime";
|
|
13258
13340
|
function NotificationsList({ archived }) {
|
|
13259
|
-
const t =
|
|
13341
|
+
const t = useTranslations58();
|
|
13260
13342
|
const generateUrl = usePageUrlGenerator();
|
|
13261
13343
|
const data = useDataListRetriever({
|
|
13262
13344
|
retriever: /* @__PURE__ */ __name((params) => NotificationService.findMany(params), "retriever"),
|
|
@@ -13267,30 +13349,30 @@ function NotificationsList({ archived }) {
|
|
|
13267
13349
|
await NotificationService.archive({ id: notification.id });
|
|
13268
13350
|
data.removeElement(notification);
|
|
13269
13351
|
}, "archiveNotification");
|
|
13270
|
-
const LoadingSkeleton = /* @__PURE__ */ __name(() => /* @__PURE__ */
|
|
13271
|
-
/* @__PURE__ */
|
|
13272
|
-
/* @__PURE__ */
|
|
13273
|
-
/* @__PURE__ */
|
|
13274
|
-
/* @__PURE__ */
|
|
13352
|
+
const LoadingSkeleton = /* @__PURE__ */ __name(() => /* @__PURE__ */ jsx152("div", { className: "space-y-4", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsx152(Card, { children: /* @__PURE__ */ jsx152(CardContent, { className: "p-2", children: /* @__PURE__ */ jsxs89("div", { className: "flex w-full flex-row items-center", children: [
|
|
13353
|
+
/* @__PURE__ */ jsx152(Skeleton, { className: "mr-4 h-8 w-8 rounded-full" }),
|
|
13354
|
+
/* @__PURE__ */ jsxs89("div", { className: "flex-1 space-y-2", children: [
|
|
13355
|
+
/* @__PURE__ */ jsx152(Skeleton, { className: "h-4 w-3/4" }),
|
|
13356
|
+
/* @__PURE__ */ jsx152(Skeleton, { className: "h-3 w-1/2" })
|
|
13275
13357
|
] }),
|
|
13276
|
-
/* @__PURE__ */
|
|
13358
|
+
/* @__PURE__ */ jsx152(Skeleton, { className: "h-8 w-20" })
|
|
13277
13359
|
] }) }) }, i)) }), "LoadingSkeleton");
|
|
13278
|
-
return /* @__PURE__ */
|
|
13360
|
+
return /* @__PURE__ */ jsx152("div", { className: "space-y-4", children: data.isLoaded ? data.data?.map((notification) => {
|
|
13279
13361
|
const notificationData = generateNotificationData({ notification, generateUrl });
|
|
13280
|
-
return /* @__PURE__ */
|
|
13281
|
-
notificationData.actor ? /* @__PURE__ */
|
|
13282
|
-
/* @__PURE__ */
|
|
13283
|
-
/* @__PURE__ */
|
|
13284
|
-
strong: /* @__PURE__ */ __name((chunks) => /* @__PURE__ */
|
|
13362
|
+
return /* @__PURE__ */ jsx152(Card, { children: /* @__PURE__ */ jsx152(CardContent, { className: "p-0", children: /* @__PURE__ */ jsxs89("div", { className: `flex w-full flex-row items-center p-2`, children: [
|
|
13363
|
+
notificationData.actor ? /* @__PURE__ */ jsx152("div", { className: "flex w-12 max-w-12 px-2", children: /* @__PURE__ */ jsx152(Link, { href: generateUrl({ page: Modules.User, id: notificationData.actor.id }), children: /* @__PURE__ */ jsx152(UserAvatar, { user: notificationData.actor, className: "h-8 w-8" }) }) }) : /* @__PURE__ */ jsx152("div", { className: "flex w-14 max-w-14 px-2" }),
|
|
13364
|
+
/* @__PURE__ */ jsxs89("div", { className: "flex w-full flex-col", children: [
|
|
13365
|
+
/* @__PURE__ */ jsx152("p", { className: "text-sm", children: t.rich(`notification.${notification.notificationType}.description`, {
|
|
13366
|
+
strong: /* @__PURE__ */ __name((chunks) => /* @__PURE__ */ jsx152("strong", { children: chunks }), "strong"),
|
|
13285
13367
|
actor: notificationData.actor?.name ?? "",
|
|
13286
13368
|
title: notificationData.title
|
|
13287
13369
|
}) }),
|
|
13288
|
-
/* @__PURE__ */
|
|
13370
|
+
/* @__PURE__ */ jsx152("div", { className: "text-muted-foreground mt-1 w-full text-xs", children: new Date(notification.createdAt).toLocaleString() })
|
|
13289
13371
|
] }),
|
|
13290
|
-
/* @__PURE__ */
|
|
13291
|
-
notificationData.url ? /* @__PURE__ */
|
|
13292
|
-
!archived && /* @__PURE__ */
|
|
13293
|
-
/* @__PURE__ */
|
|
13372
|
+
/* @__PURE__ */ jsxs89("div", { className: "flex flex-row items-center", children: [
|
|
13373
|
+
notificationData.url ? /* @__PURE__ */ jsx152(Link, { href: notificationData.url, children: /* @__PURE__ */ jsx152(Button, { variant: `outline`, size: `sm`, onClick: (e) => e.stopPropagation(), children: t(`notification.${notification.notificationType}.buttons.action`) }) }) : /* @__PURE__ */ jsx152(Fragment28, {}),
|
|
13374
|
+
!archived && /* @__PURE__ */ jsxs89(Tooltip2, { children: [
|
|
13375
|
+
/* @__PURE__ */ jsx152(TooltipTrigger, { children: /* @__PURE__ */ jsx152(
|
|
13294
13376
|
Button,
|
|
13295
13377
|
{
|
|
13296
13378
|
variant: `link`,
|
|
@@ -13300,54 +13382,54 @@ function NotificationsList({ archived }) {
|
|
|
13300
13382
|
archiveNotification(notification);
|
|
13301
13383
|
},
|
|
13302
13384
|
className: "text-muted-foreground hover:text-destructive ml-2",
|
|
13303
|
-
children: /* @__PURE__ */
|
|
13385
|
+
children: /* @__PURE__ */ jsx152(ArchiveIcon, { className: "h-4 w-4 cursor-pointer" })
|
|
13304
13386
|
}
|
|
13305
13387
|
) }),
|
|
13306
|
-
/* @__PURE__ */
|
|
13388
|
+
/* @__PURE__ */ jsx152(TooltipContent, { children: t(`notification.buttons.archive`) })
|
|
13307
13389
|
] })
|
|
13308
13390
|
] })
|
|
13309
13391
|
] }) }) }, notification.id);
|
|
13310
|
-
}) : /* @__PURE__ */
|
|
13392
|
+
}) : /* @__PURE__ */ jsx152(LoadingSkeleton, {}) });
|
|
13311
13393
|
}
|
|
13312
13394
|
__name(NotificationsList, "NotificationsList");
|
|
13313
13395
|
|
|
13314
13396
|
// src/features/notification/components/containers/NotificationsListContainer.tsx
|
|
13315
|
-
import { jsx as
|
|
13397
|
+
import { jsx as jsx153, jsxs as jsxs90 } from "react/jsx-runtime";
|
|
13316
13398
|
function NotificationsListContainerContent() {
|
|
13317
|
-
const t =
|
|
13399
|
+
const t = useTranslations59();
|
|
13318
13400
|
const { notifications, isLoading, error } = useNotificationContext();
|
|
13319
13401
|
if (error) {
|
|
13320
|
-
return /* @__PURE__ */
|
|
13321
|
-
/* @__PURE__ */
|
|
13402
|
+
return /* @__PURE__ */ jsx153("div", { className: "flex items-center justify-center p-8 text-center", children: /* @__PURE__ */ jsxs90("div", { className: "text-destructive text-sm", children: [
|
|
13403
|
+
/* @__PURE__ */ jsxs90("p", { children: [
|
|
13322
13404
|
"Error loading notifications: ",
|
|
13323
13405
|
error
|
|
13324
13406
|
] }),
|
|
13325
|
-
/* @__PURE__ */
|
|
13407
|
+
/* @__PURE__ */ jsx153("p", { className: "text-muted-foreground mt-2", children: "Please try refreshing the page." })
|
|
13326
13408
|
] }) });
|
|
13327
13409
|
}
|
|
13328
13410
|
const tabs = [
|
|
13329
13411
|
{
|
|
13330
13412
|
label: t(`notification.inbox`),
|
|
13331
|
-
content: /* @__PURE__ */
|
|
13413
|
+
content: /* @__PURE__ */ jsx153(NotificationsList, { archived: false })
|
|
13332
13414
|
},
|
|
13333
13415
|
{
|
|
13334
13416
|
label: t(`notification.archived`),
|
|
13335
|
-
content: /* @__PURE__ */
|
|
13417
|
+
content: /* @__PURE__ */ jsx153(NotificationsList, { archived: true })
|
|
13336
13418
|
}
|
|
13337
13419
|
];
|
|
13338
|
-
return /* @__PURE__ */
|
|
13420
|
+
return /* @__PURE__ */ jsx153(TabsContainer, { tabs });
|
|
13339
13421
|
}
|
|
13340
13422
|
__name(NotificationsListContainerContent, "NotificationsListContainerContent");
|
|
13341
13423
|
function NotificationsListContainer() {
|
|
13342
|
-
return /* @__PURE__ */
|
|
13424
|
+
return /* @__PURE__ */ jsx153(NotificationErrorBoundary, { children: /* @__PURE__ */ jsx153(NotificationsListContainerContent, {}) });
|
|
13343
13425
|
}
|
|
13344
13426
|
__name(NotificationsListContainer, "NotificationsListContainer");
|
|
13345
13427
|
|
|
13346
13428
|
// src/features/notification/components/modals/NotificationModal.tsx
|
|
13347
13429
|
import { BellIcon } from "lucide-react";
|
|
13348
|
-
import { useTranslations as
|
|
13349
|
-
import { Fragment as
|
|
13350
|
-
import { jsx as
|
|
13430
|
+
import { useTranslations as useTranslations60 } from "next-intl";
|
|
13431
|
+
import { Fragment as Fragment29, useCallback as useCallback21, useEffect as useEffect45, useMemo as useMemo21, useRef as useRef18, useState as useState52 } from "react";
|
|
13432
|
+
import { jsx as jsx154, jsxs as jsxs91 } from "react/jsx-runtime";
|
|
13351
13433
|
function NotificationModalContent({ isOpen, setIsOpen }) {
|
|
13352
13434
|
const instanceId = useRef18(Math.random().toString(36).substr(2, 9));
|
|
13353
13435
|
const {
|
|
@@ -13363,7 +13445,7 @@ function NotificationModalContent({ isOpen, setIsOpen }) {
|
|
|
13363
13445
|
lastLoaded
|
|
13364
13446
|
} = useNotificationContext();
|
|
13365
13447
|
const { socketNotifications, removeSocketNotification, clearSocketNotifications } = useSocketContext();
|
|
13366
|
-
const t =
|
|
13448
|
+
const t = useTranslations60();
|
|
13367
13449
|
const generateUrl = usePageUrlGenerator();
|
|
13368
13450
|
const [newNotifications, setNewNotifications] = useState52(false);
|
|
13369
13451
|
const preventAutoClose = useRef18(false);
|
|
@@ -13477,9 +13559,9 @@ function NotificationModalContent({ isOpen, setIsOpen }) {
|
|
|
13477
13559
|
}
|
|
13478
13560
|
}, "handleOpenChange");
|
|
13479
13561
|
const unreadNotifications = newNotifications && unreadCount > 0;
|
|
13480
|
-
return /* @__PURE__ */
|
|
13481
|
-
/* @__PURE__ */
|
|
13482
|
-
/* @__PURE__ */
|
|
13562
|
+
return /* @__PURE__ */ jsxs91(Popover, { open: isOpen, onOpenChange: handleOpenChange, "data-testid": `sidebar-notification button`, children: [
|
|
13563
|
+
/* @__PURE__ */ jsx154(PopoverTrigger, { children: /* @__PURE__ */ jsxs91(SidebarMenuButton, { render: /* @__PURE__ */ jsx154("div", {}), className: "text-muted-foreground h-6", disabled: isLoading, children: [
|
|
13564
|
+
/* @__PURE__ */ jsx154(
|
|
13483
13565
|
BellIcon,
|
|
13484
13566
|
{
|
|
13485
13567
|
className: `h-5 w-5 cursor-pointer ${unreadNotifications ? "text-destructive" : ""} ${isLoading ? "animate-pulse" : ""}`
|
|
@@ -13487,67 +13569,67 @@ function NotificationModalContent({ isOpen, setIsOpen }) {
|
|
|
13487
13569
|
),
|
|
13488
13570
|
t(`entities.notifications`, { count: 2 })
|
|
13489
13571
|
] }) }),
|
|
13490
|
-
/* @__PURE__ */
|
|
13491
|
-
/* @__PURE__ */
|
|
13492
|
-
/* @__PURE__ */
|
|
13493
|
-
isLoading && /* @__PURE__ */
|
|
13494
|
-
error && /* @__PURE__ */
|
|
13572
|
+
/* @__PURE__ */ jsx154(PopoverContent, { className: "relative left-10 w-80 border-0 p-0 shadow-none", children: /* @__PURE__ */ jsxs91(Card, { children: [
|
|
13573
|
+
/* @__PURE__ */ jsxs91(CardHeader, { className: "p-4", children: [
|
|
13574
|
+
/* @__PURE__ */ jsx154(CardTitle, { children: t(`entities.notifications`, { count: 2 }) }),
|
|
13575
|
+
isLoading && /* @__PURE__ */ jsx154("div", { className: "text-muted-foreground text-xs", children: "Loading..." }),
|
|
13576
|
+
error && /* @__PURE__ */ jsxs91("div", { className: "text-destructive text-xs", children: [
|
|
13495
13577
|
"Error: ",
|
|
13496
13578
|
error
|
|
13497
13579
|
] })
|
|
13498
13580
|
] }),
|
|
13499
|
-
/* @__PURE__ */
|
|
13500
|
-
/* @__PURE__ */
|
|
13581
|
+
/* @__PURE__ */ jsx154(Separator, {}),
|
|
13582
|
+
/* @__PURE__ */ jsx154(ScrollArea, { className: "h-96", children: notifications.length > 0 ? notifications.map((notification) => /* @__PURE__ */ jsx154(Fragment29, { children: generateNotification(notification, () => setIsOpen(false)) }, notification.id)) : /* @__PURE__ */ jsx154("div", { className: "p-4 text-center text-sm text-gray-500", children: t(`notification.empty`) }) })
|
|
13501
13583
|
] }) })
|
|
13502
13584
|
] });
|
|
13503
13585
|
}
|
|
13504
13586
|
__name(NotificationModalContent, "NotificationModalContent");
|
|
13505
13587
|
function NotificationModal(props) {
|
|
13506
|
-
return /* @__PURE__ */
|
|
13588
|
+
return /* @__PURE__ */ jsx154(NotificationErrorBoundary, { children: /* @__PURE__ */ jsx154(NotificationModalContent, { ...props }) });
|
|
13507
13589
|
}
|
|
13508
13590
|
__name(NotificationModal, "NotificationModal");
|
|
13509
13591
|
|
|
13510
13592
|
// src/features/notification/components/notifications/PushNotificationProvider.tsx
|
|
13511
|
-
import { Fragment as
|
|
13593
|
+
import { Fragment as Fragment30, jsx as jsx155 } from "react/jsx-runtime";
|
|
13512
13594
|
function PushNotificationProvider({ children }) {
|
|
13513
13595
|
usePushNotifications();
|
|
13514
|
-
return /* @__PURE__ */
|
|
13596
|
+
return /* @__PURE__ */ jsx155(Fragment30, { children });
|
|
13515
13597
|
}
|
|
13516
13598
|
__name(PushNotificationProvider, "PushNotificationProvider");
|
|
13517
13599
|
|
|
13518
13600
|
// src/features/role/components/details/RoleDetails.tsx
|
|
13519
|
-
import { useTranslations as
|
|
13520
|
-
import { jsx as
|
|
13601
|
+
import { useTranslations as useTranslations61 } from "next-intl";
|
|
13602
|
+
import { jsx as jsx156 } from "react/jsx-runtime";
|
|
13521
13603
|
function RoleDetails() {
|
|
13522
13604
|
const { role } = useRoleContext();
|
|
13523
|
-
const t =
|
|
13605
|
+
const t = useTranslations61();
|
|
13524
13606
|
if (!role) return null;
|
|
13525
|
-
return /* @__PURE__ */
|
|
13607
|
+
return /* @__PURE__ */ jsx156(Card, { className: "w-full", children: /* @__PURE__ */ jsx156(CardContent, { className: "p-4", children: /* @__PURE__ */ jsx156(AttributeElement, { title: t(`role.fields.description.label`), value: role.description }) }) });
|
|
13526
13608
|
}
|
|
13527
13609
|
__name(RoleDetails, "RoleDetails");
|
|
13528
13610
|
|
|
13529
13611
|
// src/features/role/components/containers/RoleContainer.tsx
|
|
13530
|
-
import { Fragment as
|
|
13612
|
+
import { Fragment as Fragment31, jsx as jsx157, jsxs as jsxs92 } from "react/jsx-runtime";
|
|
13531
13613
|
function RoleContainer() {
|
|
13532
13614
|
const { role } = useRoleContext();
|
|
13533
13615
|
if (!role) return null;
|
|
13534
|
-
return /* @__PURE__ */
|
|
13535
|
-
/* @__PURE__ */
|
|
13536
|
-
/* @__PURE__ */
|
|
13616
|
+
return /* @__PURE__ */ jsxs92(Fragment31, { children: [
|
|
13617
|
+
/* @__PURE__ */ jsx157(RoleDetails, {}),
|
|
13618
|
+
/* @__PURE__ */ jsx157(RoleUsersList, { role })
|
|
13537
13619
|
] });
|
|
13538
13620
|
}
|
|
13539
13621
|
__name(RoleContainer, "RoleContainer");
|
|
13540
13622
|
|
|
13541
13623
|
// src/features/role/components/forms/FormRoles.tsx
|
|
13542
|
-
import { useTranslations as
|
|
13543
|
-
import { jsx as
|
|
13624
|
+
import { useTranslations as useTranslations62 } from "next-intl";
|
|
13625
|
+
import { jsx as jsx158, jsxs as jsxs93 } from "react/jsx-runtime";
|
|
13544
13626
|
function FormRoles({ form, id, name, roles }) {
|
|
13545
|
-
const t =
|
|
13627
|
+
const t = useTranslations62();
|
|
13546
13628
|
const { hasAccesToFeature } = useCurrentUserContext();
|
|
13547
|
-
return /* @__PURE__ */
|
|
13629
|
+
return /* @__PURE__ */ jsx158("div", { className: "flex w-full flex-col", children: /* @__PURE__ */ jsx158(FormFieldWrapper, { form, name: id, label: name, children: (field) => /* @__PURE__ */ jsx158("div", { children: roles.filter((role) => role.isSelectable).sort((a, b) => a.name.localeCompare(b.name)).map((role) => {
|
|
13548
13630
|
if (role.requiredFeature && !hasAccesToFeature(role.requiredFeature.id)) return null;
|
|
13549
|
-
return /* @__PURE__ */
|
|
13550
|
-
/* @__PURE__ */
|
|
13631
|
+
return /* @__PURE__ */ jsxs93("div", { children: [
|
|
13632
|
+
/* @__PURE__ */ jsx158(
|
|
13551
13633
|
Checkbox,
|
|
13552
13634
|
{
|
|
13553
13635
|
defaultChecked: field.value.some((roleId) => roleId === role.id),
|
|
@@ -13563,9 +13645,9 @@ function FormRoles({ form, id, name, roles }) {
|
|
|
13563
13645
|
}
|
|
13564
13646
|
}
|
|
13565
13647
|
),
|
|
13566
|
-
/* @__PURE__ */
|
|
13567
|
-
/* @__PURE__ */
|
|
13568
|
-
/* @__PURE__ */
|
|
13648
|
+
/* @__PURE__ */ jsxs93(Tooltip2, { children: [
|
|
13649
|
+
/* @__PURE__ */ jsx158(TooltipTrigger, { children: /* @__PURE__ */ jsx158(FieldLabel, { className: "ml-3 font-normal", children: t(`role.roles`, { role: role.id.replaceAll(`-`, ``) }) }) }),
|
|
13650
|
+
/* @__PURE__ */ jsx158(TooltipContent, { children: t(`role.roles_descriptions`, { role: role.id.replaceAll(`-`, ``) }) })
|
|
13569
13651
|
] })
|
|
13570
13652
|
] }, role.id);
|
|
13571
13653
|
}) }) }) });
|
|
@@ -13573,13 +13655,13 @@ function FormRoles({ form, id, name, roles }) {
|
|
|
13573
13655
|
__name(FormRoles, "FormRoles");
|
|
13574
13656
|
|
|
13575
13657
|
// src/features/role/components/forms/RemoveUserFromRole.tsx
|
|
13576
|
-
import { useTranslations as
|
|
13658
|
+
import { useTranslations as useTranslations63 } from "next-intl";
|
|
13577
13659
|
import { useEffect as useEffect46, useState as useState53 } from "react";
|
|
13578
|
-
import { Fragment as
|
|
13660
|
+
import { Fragment as Fragment32, jsx as jsx159, jsxs as jsxs94 } from "react/jsx-runtime";
|
|
13579
13661
|
function RemoveUserFromRole({ role, user, refresh }) {
|
|
13580
13662
|
const [open, setOpen] = useState53(false);
|
|
13581
13663
|
const [canRemove, setCanRemove] = useState53(false);
|
|
13582
|
-
const t =
|
|
13664
|
+
const t = useTranslations63();
|
|
13583
13665
|
useEffect46(() => {
|
|
13584
13666
|
async function checkCompanyAdminDeletability() {
|
|
13585
13667
|
const roleUsers = await UserService.findAllUsersByRole({
|
|
@@ -13607,8 +13689,8 @@ function RemoveUserFromRole({ role, user, refresh }) {
|
|
|
13607
13689
|
}
|
|
13608
13690
|
}, "remove");
|
|
13609
13691
|
const roleName = t(`role.roles`, { role: role.id.replaceAll(`-`, ``) });
|
|
13610
|
-
return /* @__PURE__ */
|
|
13611
|
-
/* @__PURE__ */
|
|
13692
|
+
return /* @__PURE__ */ jsxs94(Dialog, { open, onOpenChange: setOpen, children: [
|
|
13693
|
+
/* @__PURE__ */ jsx159(
|
|
13612
13694
|
DialogTrigger,
|
|
13613
13695
|
{
|
|
13614
13696
|
onClick: (e) => {
|
|
@@ -13616,19 +13698,19 @@ function RemoveUserFromRole({ role, user, refresh }) {
|
|
|
13616
13698
|
e.preventDefault();
|
|
13617
13699
|
setOpen(true);
|
|
13618
13700
|
},
|
|
13619
|
-
children: /* @__PURE__ */
|
|
13701
|
+
children: /* @__PURE__ */ jsx159("span", { className: "hover:text-destructive cursor-pointer", children: t(`role.remove_user.title`) })
|
|
13620
13702
|
}
|
|
13621
13703
|
),
|
|
13622
|
-
/* @__PURE__ */
|
|
13623
|
-
/* @__PURE__ */
|
|
13624
|
-
/* @__PURE__ */
|
|
13625
|
-
/* @__PURE__ */
|
|
13704
|
+
/* @__PURE__ */ jsxs94(DialogContent, { className: `flex max-h-[70vh] max-w-3xl flex-col overflow-y-auto`, children: [
|
|
13705
|
+
/* @__PURE__ */ jsxs94(DialogHeader, { children: [
|
|
13706
|
+
/* @__PURE__ */ jsx159(DialogTitle, { children: t(`role.remove_user.title`) }),
|
|
13707
|
+
/* @__PURE__ */ jsx159(DialogDescription, { children: canRemove ? t(`role.remove_user.subtitle_allowed`) : t(`role.remove_user.subtitle_not_allowed`) })
|
|
13626
13708
|
] }),
|
|
13627
|
-
canRemove ? /* @__PURE__ */
|
|
13709
|
+
canRemove ? /* @__PURE__ */ jsxs94(Fragment32, { children: [
|
|
13628
13710
|
t(`role.remove_user.description_allowed`, { role: roleName, user: user.name }),
|
|
13629
|
-
/* @__PURE__ */
|
|
13630
|
-
/* @__PURE__ */
|
|
13631
|
-
/* @__PURE__ */
|
|
13711
|
+
/* @__PURE__ */ jsxs94("div", { className: "flex justify-end", children: [
|
|
13712
|
+
/* @__PURE__ */ jsx159(Button, { className: "mr-2", variant: "outline", type: `button`, onClick: () => setOpen(false), children: t(`ui.buttons.cancel`) }),
|
|
13713
|
+
/* @__PURE__ */ jsx159(
|
|
13632
13714
|
Button,
|
|
13633
13715
|
{
|
|
13634
13716
|
type: "submit",
|
|
@@ -13641,7 +13723,7 @@ function RemoveUserFromRole({ role, user, refresh }) {
|
|
|
13641
13723
|
}
|
|
13642
13724
|
)
|
|
13643
13725
|
] })
|
|
13644
|
-
] }) : /* @__PURE__ */
|
|
13726
|
+
] }) : /* @__PURE__ */ jsx159(Fragment32, { children: t(`role.remove_user.description_not_allowed`, { role: roleName, user: user.name }) })
|
|
13645
13727
|
] })
|
|
13646
13728
|
] });
|
|
13647
13729
|
}
|
|
@@ -13649,15 +13731,15 @@ __name(RemoveUserFromRole, "RemoveUserFromRole");
|
|
|
13649
13731
|
|
|
13650
13732
|
// src/features/role/components/forms/UserRoleAdd.tsx
|
|
13651
13733
|
import { PlusCircle as PlusCircle2 } from "lucide-react";
|
|
13652
|
-
import { useTranslations as
|
|
13734
|
+
import { useTranslations as useTranslations64 } from "next-intl";
|
|
13653
13735
|
import { useCallback as useCallback22, useEffect as useEffect47, useRef as useRef19, useState as useState54 } from "react";
|
|
13654
|
-
import { Fragment as
|
|
13736
|
+
import { Fragment as Fragment33, jsx as jsx160, jsxs as jsxs95 } from "react/jsx-runtime";
|
|
13655
13737
|
function UserRoleAdd({ user, refresh }) {
|
|
13656
13738
|
const [open, setOpen] = useState54(false);
|
|
13657
13739
|
const inputRef = useRef19(null);
|
|
13658
13740
|
const [searchTerm, setSearchTerm] = useState54("");
|
|
13659
13741
|
const [roles, setRoles] = useState54([]);
|
|
13660
|
-
const t =
|
|
13742
|
+
const t = useTranslations64();
|
|
13661
13743
|
const addUserToRole = /* @__PURE__ */ __name(async (role) => {
|
|
13662
13744
|
await RoleService.addUserToRole({
|
|
13663
13745
|
roleId: role.id,
|
|
@@ -13698,26 +13780,26 @@ function UserRoleAdd({ user, refresh }) {
|
|
|
13698
13780
|
useEffect47(() => {
|
|
13699
13781
|
if (open) searchRoles("");
|
|
13700
13782
|
}, [open]);
|
|
13701
|
-
return /* @__PURE__ */
|
|
13702
|
-
/* @__PURE__ */
|
|
13703
|
-
/* @__PURE__ */
|
|
13783
|
+
return /* @__PURE__ */ jsxs95(Fragment33, { children: [
|
|
13784
|
+
/* @__PURE__ */ jsxs95(Button, { size: "sm", onClick: () => setOpen(true), children: [
|
|
13785
|
+
/* @__PURE__ */ jsx160(PlusCircle2, { className: "mr-3 h-3.5 w-3.5" }),
|
|
13704
13786
|
t(`common.association.label`, {
|
|
13705
13787
|
source: t(`entities.roles`, { count: 1 }),
|
|
13706
13788
|
destination: t(`entities.users`, { count: 1 })
|
|
13707
13789
|
})
|
|
13708
13790
|
] }),
|
|
13709
|
-
/* @__PURE__ */
|
|
13710
|
-
/* @__PURE__ */
|
|
13791
|
+
/* @__PURE__ */ jsxs95(CommandDialog, { open, onOpenChange: setOpen, children: [
|
|
13792
|
+
/* @__PURE__ */ jsx160(DialogTitle, { children: t(`common.association.label`, {
|
|
13711
13793
|
source: t(`entities.roles`, { count: 1 }),
|
|
13712
13794
|
destination: t(`entities.users`, { count: 1 })
|
|
13713
13795
|
}) }),
|
|
13714
|
-
/* @__PURE__ */
|
|
13796
|
+
/* @__PURE__ */ jsx160(DialogDescription, { children: t(`common.association.description`, {
|
|
13715
13797
|
source: t(`entities.roles`, { count: 1 }),
|
|
13716
13798
|
destination: t(`entities.users`, { count: 1 }),
|
|
13717
13799
|
destination_name: user.name
|
|
13718
13800
|
}) }),
|
|
13719
|
-
/* @__PURE__ */
|
|
13720
|
-
/* @__PURE__ */
|
|
13801
|
+
/* @__PURE__ */ jsxs95(Command, { shouldFilter: false, children: [
|
|
13802
|
+
/* @__PURE__ */ jsx160(
|
|
13721
13803
|
CommandInput,
|
|
13722
13804
|
{
|
|
13723
13805
|
placeholder: t(`ui.search.placeholder`, { type: t(`entities.roles`, { count: 1 }) }),
|
|
@@ -13726,9 +13808,9 @@ function UserRoleAdd({ user, refresh }) {
|
|
|
13726
13808
|
ref: inputRef
|
|
13727
13809
|
}
|
|
13728
13810
|
),
|
|
13729
|
-
/* @__PURE__ */
|
|
13730
|
-
/* @__PURE__ */
|
|
13731
|
-
roles.map((role) => /* @__PURE__ */
|
|
13811
|
+
/* @__PURE__ */ jsxs95(CommandList, { className: "mt-3 h-auto max-h-96 min-h-96 max-w-full overflow-x-hidden overflow-y-auto", children: [
|
|
13812
|
+
/* @__PURE__ */ jsx160(CommandEmpty, { children: t(`ui.search.no_results`, { type: t(`entities.roles`, { count: 1 }) }) }),
|
|
13813
|
+
roles.map((role) => /* @__PURE__ */ jsx160(
|
|
13732
13814
|
CommandItem,
|
|
13733
13815
|
{
|
|
13734
13816
|
className: "cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent",
|
|
@@ -13746,16 +13828,16 @@ function UserRoleAdd({ user, refresh }) {
|
|
|
13746
13828
|
__name(UserRoleAdd, "UserRoleAdd");
|
|
13747
13829
|
|
|
13748
13830
|
// src/features/role/components/lists/RolesList.tsx
|
|
13749
|
-
import { useTranslations as
|
|
13750
|
-
import { jsx as
|
|
13831
|
+
import { useTranslations as useTranslations65 } from "next-intl";
|
|
13832
|
+
import { jsx as jsx161 } from "react/jsx-runtime";
|
|
13751
13833
|
function RolesList() {
|
|
13752
|
-
const t =
|
|
13834
|
+
const t = useTranslations65();
|
|
13753
13835
|
const data = useDataListRetriever({
|
|
13754
13836
|
retriever: /* @__PURE__ */ __name((params) => RoleService.findAllRoles(params), "retriever"),
|
|
13755
13837
|
retrieverParams: {},
|
|
13756
13838
|
module: Modules.Role
|
|
13757
13839
|
});
|
|
13758
|
-
return /* @__PURE__ */
|
|
13840
|
+
return /* @__PURE__ */ jsx161(
|
|
13759
13841
|
ContentListTable,
|
|
13760
13842
|
{
|
|
13761
13843
|
data,
|
|
@@ -13768,16 +13850,16 @@ function RolesList() {
|
|
|
13768
13850
|
__name(RolesList, "RolesList");
|
|
13769
13851
|
|
|
13770
13852
|
// src/features/role/components/lists/UserRolesList.tsx
|
|
13771
|
-
import { useTranslations as
|
|
13772
|
-
import { jsx as
|
|
13853
|
+
import { useTranslations as useTranslations66 } from "next-intl";
|
|
13854
|
+
import { jsx as jsx162 } from "react/jsx-runtime";
|
|
13773
13855
|
function UserRolesList({ user }) {
|
|
13774
|
-
const t =
|
|
13856
|
+
const t = useTranslations66();
|
|
13775
13857
|
const data = useDataListRetriever({
|
|
13776
13858
|
retriever: /* @__PURE__ */ __name((params) => RoleService.findAllRolesByUser(params), "retriever"),
|
|
13777
13859
|
retrieverParams: { userId: user.id },
|
|
13778
13860
|
module: Modules.Role
|
|
13779
13861
|
});
|
|
13780
|
-
return /* @__PURE__ */
|
|
13862
|
+
return /* @__PURE__ */ jsx162(
|
|
13781
13863
|
ContentListTable,
|
|
13782
13864
|
{
|
|
13783
13865
|
data,
|
|
@@ -13792,7 +13874,7 @@ __name(UserRolesList, "UserRolesList");
|
|
|
13792
13874
|
// src/features/oauth/components/OAuthRedirectUriInput.tsx
|
|
13793
13875
|
import { useCallback as useCallback23 } from "react";
|
|
13794
13876
|
import { Plus, Trash2 } from "lucide-react";
|
|
13795
|
-
import { jsx as
|
|
13877
|
+
import { jsx as jsx163, jsxs as jsxs96 } from "react/jsx-runtime";
|
|
13796
13878
|
function isValidRedirectUri(uri) {
|
|
13797
13879
|
if (!uri.trim()) return false;
|
|
13798
13880
|
if (uri.startsWith("http://localhost") || uri.startsWith("http://127.0.0.1")) {
|
|
@@ -13838,17 +13920,17 @@ function OAuthRedirectUriInput({
|
|
|
13838
13920
|
},
|
|
13839
13921
|
[value, onChange]
|
|
13840
13922
|
);
|
|
13841
|
-
return /* @__PURE__ */
|
|
13842
|
-
/* @__PURE__ */
|
|
13923
|
+
return /* @__PURE__ */ jsxs96("div", { className: "space-y-2", children: [
|
|
13924
|
+
/* @__PURE__ */ jsxs96(Label, { children: [
|
|
13843
13925
|
label,
|
|
13844
13926
|
" *"
|
|
13845
13927
|
] }),
|
|
13846
|
-
/* @__PURE__ */
|
|
13847
|
-
/* @__PURE__ */
|
|
13928
|
+
/* @__PURE__ */ jsx163("p", { className: "text-sm text-muted-foreground", children: "Enter the URIs where users will be redirected after authorization. Use https:// for production, or custom schemes for mobile apps." }),
|
|
13929
|
+
/* @__PURE__ */ jsx163("div", { className: "space-y-2", children: value.map((uri, index) => {
|
|
13848
13930
|
const isValid3 = !uri || isValidRedirectUri(uri);
|
|
13849
|
-
return /* @__PURE__ */
|
|
13850
|
-
/* @__PURE__ */
|
|
13851
|
-
/* @__PURE__ */
|
|
13931
|
+
return /* @__PURE__ */ jsxs96("div", { className: "flex gap-2", children: [
|
|
13932
|
+
/* @__PURE__ */ jsxs96("div", { className: "flex-1", children: [
|
|
13933
|
+
/* @__PURE__ */ jsx163(
|
|
13852
13934
|
Input,
|
|
13853
13935
|
{
|
|
13854
13936
|
value: uri,
|
|
@@ -13858,9 +13940,9 @@ function OAuthRedirectUriInput({
|
|
|
13858
13940
|
className: !isValid3 ? "border-destructive" : ""
|
|
13859
13941
|
}
|
|
13860
13942
|
),
|
|
13861
|
-
!isValid3 && /* @__PURE__ */
|
|
13943
|
+
!isValid3 && /* @__PURE__ */ jsx163("p", { className: "text-xs text-destructive mt-1", children: "Must be https://, http://localhost, or a custom scheme (app://)" })
|
|
13862
13944
|
] }),
|
|
13863
|
-
/* @__PURE__ */
|
|
13945
|
+
/* @__PURE__ */ jsx163(
|
|
13864
13946
|
Button,
|
|
13865
13947
|
{
|
|
13866
13948
|
type: "button",
|
|
@@ -13869,12 +13951,12 @@ function OAuthRedirectUriInput({
|
|
|
13869
13951
|
onClick: () => handleRemove(index),
|
|
13870
13952
|
disabled: disabled || value.length === 1,
|
|
13871
13953
|
title: "Remove URI",
|
|
13872
|
-
children: /* @__PURE__ */
|
|
13954
|
+
children: /* @__PURE__ */ jsx163(Trash2, { className: "h-4 w-4" })
|
|
13873
13955
|
}
|
|
13874
13956
|
)
|
|
13875
13957
|
] }, index);
|
|
13876
13958
|
}) }),
|
|
13877
|
-
/* @__PURE__ */
|
|
13959
|
+
/* @__PURE__ */ jsxs96(
|
|
13878
13960
|
Button,
|
|
13879
13961
|
{
|
|
13880
13962
|
type: "button",
|
|
@@ -13884,19 +13966,19 @@ function OAuthRedirectUriInput({
|
|
|
13884
13966
|
disabled,
|
|
13885
13967
|
className: "mt-2",
|
|
13886
13968
|
children: [
|
|
13887
|
-
/* @__PURE__ */
|
|
13969
|
+
/* @__PURE__ */ jsx163(Plus, { className: "h-4 w-4 mr-2" }),
|
|
13888
13970
|
"Add Redirect URI"
|
|
13889
13971
|
]
|
|
13890
13972
|
}
|
|
13891
13973
|
),
|
|
13892
|
-
error && /* @__PURE__ */
|
|
13974
|
+
error && /* @__PURE__ */ jsx163("p", { className: "text-sm text-destructive", children: error })
|
|
13893
13975
|
] });
|
|
13894
13976
|
}
|
|
13895
13977
|
__name(OAuthRedirectUriInput, "OAuthRedirectUriInput");
|
|
13896
13978
|
|
|
13897
13979
|
// src/features/oauth/components/OAuthScopeSelector.tsx
|
|
13898
13980
|
import { useCallback as useCallback24 } from "react";
|
|
13899
|
-
import { jsx as
|
|
13981
|
+
import { jsx as jsx164, jsxs as jsxs97 } from "react/jsx-runtime";
|
|
13900
13982
|
function OAuthScopeSelector({
|
|
13901
13983
|
value,
|
|
13902
13984
|
onChange,
|
|
@@ -13924,25 +14006,25 @@ function OAuthScopeSelector({
|
|
|
13924
14006
|
acc[groupName].push(scope);
|
|
13925
14007
|
return acc;
|
|
13926
14008
|
}, {});
|
|
13927
|
-
return /* @__PURE__ */
|
|
13928
|
-
/* @__PURE__ */
|
|
13929
|
-
/* @__PURE__ */
|
|
14009
|
+
return /* @__PURE__ */ jsxs97("div", { className: "space-y-4", children: [
|
|
14010
|
+
/* @__PURE__ */ jsxs97("div", { children: [
|
|
14011
|
+
/* @__PURE__ */ jsxs97(Label, { children: [
|
|
13930
14012
|
label,
|
|
13931
14013
|
" *"
|
|
13932
14014
|
] }),
|
|
13933
|
-
/* @__PURE__ */
|
|
14015
|
+
/* @__PURE__ */ jsx164("p", { className: "text-sm text-muted-foreground", children: "Select the permissions your application needs." })
|
|
13934
14016
|
] }),
|
|
13935
|
-
/* @__PURE__ */
|
|
13936
|
-
/* @__PURE__ */
|
|
13937
|
-
/* @__PURE__ */
|
|
14017
|
+
/* @__PURE__ */ jsx164("div", { className: "space-y-4", children: Object.entries(groupedScopes).map(([groupName, scopes]) => /* @__PURE__ */ jsxs97("div", { className: "space-y-2", children: [
|
|
14018
|
+
/* @__PURE__ */ jsx164("h4", { className: "text-sm font-medium capitalize", children: groupName }),
|
|
14019
|
+
/* @__PURE__ */ jsx164("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-2 pl-2", children: scopes.map((scopeInfo) => {
|
|
13938
14020
|
const isChecked = value.includes(scopeInfo.scope);
|
|
13939
14021
|
const isAdmin = scopeInfo.scope === "admin";
|
|
13940
|
-
return /* @__PURE__ */
|
|
14022
|
+
return /* @__PURE__ */ jsxs97(
|
|
13941
14023
|
"div",
|
|
13942
14024
|
{
|
|
13943
14025
|
className: `flex items-start space-x-3 p-2 rounded-md border ${isChecked ? "bg-primary/5 border-primary/20" : "border-transparent"} ${isAdmin ? "bg-destructive/5" : ""}`,
|
|
13944
14026
|
children: [
|
|
13945
|
-
/* @__PURE__ */
|
|
14027
|
+
/* @__PURE__ */ jsx164(
|
|
13946
14028
|
Checkbox,
|
|
13947
14029
|
{
|
|
13948
14030
|
id: `scope-${scopeInfo.scope}`,
|
|
@@ -13951,19 +14033,19 @@ function OAuthScopeSelector({
|
|
|
13951
14033
|
disabled
|
|
13952
14034
|
}
|
|
13953
14035
|
),
|
|
13954
|
-
/* @__PURE__ */
|
|
13955
|
-
/* @__PURE__ */
|
|
14036
|
+
/* @__PURE__ */ jsxs97("div", { className: "flex-1", children: [
|
|
14037
|
+
/* @__PURE__ */ jsxs97(
|
|
13956
14038
|
Label,
|
|
13957
14039
|
{
|
|
13958
14040
|
htmlFor: `scope-${scopeInfo.scope}`,
|
|
13959
14041
|
className: "text-sm font-medium cursor-pointer",
|
|
13960
14042
|
children: [
|
|
13961
14043
|
scopeInfo.name,
|
|
13962
|
-
isAdmin && /* @__PURE__ */
|
|
14044
|
+
isAdmin && /* @__PURE__ */ jsx164("span", { className: "ml-2 text-xs text-destructive", children: "(Dangerous)" })
|
|
13963
14045
|
]
|
|
13964
14046
|
}
|
|
13965
14047
|
),
|
|
13966
|
-
/* @__PURE__ */
|
|
14048
|
+
/* @__PURE__ */ jsx164("p", { className: "text-xs text-muted-foreground", children: scopeInfo.description })
|
|
13967
14049
|
] })
|
|
13968
14050
|
]
|
|
13969
14051
|
},
|
|
@@ -13971,7 +14053,7 @@ function OAuthScopeSelector({
|
|
|
13971
14053
|
);
|
|
13972
14054
|
}) })
|
|
13973
14055
|
] }, groupName)) }),
|
|
13974
|
-
error && /* @__PURE__ */
|
|
14056
|
+
error && /* @__PURE__ */ jsx164("p", { className: "text-sm text-destructive", children: error })
|
|
13975
14057
|
] });
|
|
13976
14058
|
}
|
|
13977
14059
|
__name(OAuthScopeSelector, "OAuthScopeSelector");
|
|
@@ -13979,7 +14061,7 @@ __name(OAuthScopeSelector, "OAuthScopeSelector");
|
|
|
13979
14061
|
// src/features/oauth/components/OAuthClientSecretDisplay.tsx
|
|
13980
14062
|
import { useState as useState55, useCallback as useCallback25 } from "react";
|
|
13981
14063
|
import { Copy, Check, AlertTriangle } from "lucide-react";
|
|
13982
|
-
import { jsx as
|
|
14064
|
+
import { jsx as jsx165, jsxs as jsxs98 } from "react/jsx-runtime";
|
|
13983
14065
|
function OAuthClientSecretDisplay({
|
|
13984
14066
|
secret,
|
|
13985
14067
|
onDismiss,
|
|
@@ -14000,24 +14082,24 @@ function OAuthClientSecretDisplay({
|
|
|
14000
14082
|
setCopied(false);
|
|
14001
14083
|
onDismiss();
|
|
14002
14084
|
}, [onDismiss]);
|
|
14003
|
-
return /* @__PURE__ */
|
|
14004
|
-
/* @__PURE__ */
|
|
14005
|
-
/* @__PURE__ */
|
|
14006
|
-
/* @__PURE__ */
|
|
14085
|
+
return /* @__PURE__ */ jsx165(Dialog, { open, onOpenChange: (isOpen) => !isOpen && handleDismiss(), children: /* @__PURE__ */ jsxs98(DialogContent, { className: "sm:max-w-md", children: [
|
|
14086
|
+
/* @__PURE__ */ jsxs98(DialogHeader, { children: [
|
|
14087
|
+
/* @__PURE__ */ jsxs98(DialogTitle, { className: "flex items-center gap-2", children: [
|
|
14088
|
+
/* @__PURE__ */ jsx165(AlertTriangle, { className: "h-5 w-5 text-warning" }),
|
|
14007
14089
|
"Save Your Client Secret"
|
|
14008
14090
|
] }),
|
|
14009
|
-
/* @__PURE__ */
|
|
14091
|
+
/* @__PURE__ */ jsx165(DialogDescription, { children: clientName ? `Your client secret for "${clientName}" is shown below.` : "Your client secret is shown below." })
|
|
14010
14092
|
] }),
|
|
14011
|
-
/* @__PURE__ */
|
|
14012
|
-
/* @__PURE__ */
|
|
14013
|
-
/* @__PURE__ */
|
|
14014
|
-
/* @__PURE__ */
|
|
14015
|
-
/* @__PURE__ */
|
|
14093
|
+
/* @__PURE__ */ jsxs98(Alert, { variant: "destructive", className: "my-4", children: [
|
|
14094
|
+
/* @__PURE__ */ jsx165(AlertTriangle, { className: "h-4 w-4" }),
|
|
14095
|
+
/* @__PURE__ */ jsxs98(AlertDescription, { children: [
|
|
14096
|
+
/* @__PURE__ */ jsx165("strong", { children: "This is the only time your client secret will be displayed." }),
|
|
14097
|
+
/* @__PURE__ */ jsx165("br", {}),
|
|
14016
14098
|
"Copy it now and store it securely. You will not be able to retrieve it later."
|
|
14017
14099
|
] })
|
|
14018
14100
|
] }),
|
|
14019
|
-
/* @__PURE__ */
|
|
14020
|
-
/* @__PURE__ */
|
|
14101
|
+
/* @__PURE__ */ jsxs98("div", { className: "flex items-center space-x-2", children: [
|
|
14102
|
+
/* @__PURE__ */ jsx165("div", { className: "flex-1", children: /* @__PURE__ */ jsx165(
|
|
14021
14103
|
Input,
|
|
14022
14104
|
{
|
|
14023
14105
|
value: secret,
|
|
@@ -14026,7 +14108,7 @@ function OAuthClientSecretDisplay({
|
|
|
14026
14108
|
onClick: (e) => e.currentTarget.select()
|
|
14027
14109
|
}
|
|
14028
14110
|
) }),
|
|
14029
|
-
/* @__PURE__ */
|
|
14111
|
+
/* @__PURE__ */ jsx165(
|
|
14030
14112
|
Button,
|
|
14031
14113
|
{
|
|
14032
14114
|
type: "button",
|
|
@@ -14034,12 +14116,12 @@ function OAuthClientSecretDisplay({
|
|
|
14034
14116
|
size: "icon",
|
|
14035
14117
|
onClick: handleCopy,
|
|
14036
14118
|
title: copied ? "Copied!" : "Copy to clipboard",
|
|
14037
|
-
children: copied ? /* @__PURE__ */
|
|
14119
|
+
children: copied ? /* @__PURE__ */ jsx165(Check, { className: "h-4 w-4 text-green-600" }) : /* @__PURE__ */ jsx165(Copy, { className: "h-4 w-4" })
|
|
14038
14120
|
}
|
|
14039
14121
|
)
|
|
14040
14122
|
] }),
|
|
14041
|
-
copied && /* @__PURE__ */
|
|
14042
|
-
/* @__PURE__ */
|
|
14123
|
+
copied && /* @__PURE__ */ jsx165("p", { className: "text-sm text-green-600 text-center", children: "Copied to clipboard!" }),
|
|
14124
|
+
/* @__PURE__ */ jsx165(DialogFooter, { className: "mt-4", children: /* @__PURE__ */ jsx165(Button, { onClick: handleDismiss, className: "w-full", children: "I've Saved My Secret" }) })
|
|
14043
14125
|
] }) });
|
|
14044
14126
|
}
|
|
14045
14127
|
__name(OAuthClientSecretDisplay, "OAuthClientSecretDisplay");
|
|
@@ -14047,7 +14129,7 @@ __name(OAuthClientSecretDisplay, "OAuthClientSecretDisplay");
|
|
|
14047
14129
|
// src/features/oauth/components/OAuthClientCard.tsx
|
|
14048
14130
|
import { formatDistanceToNow } from "date-fns";
|
|
14049
14131
|
import { Key, MoreVertical, Pencil, Trash2 as Trash22 } from "lucide-react";
|
|
14050
|
-
import { jsx as
|
|
14132
|
+
import { jsx as jsx166, jsxs as jsxs99 } from "react/jsx-runtime";
|
|
14051
14133
|
function OAuthClientCard({
|
|
14052
14134
|
client,
|
|
14053
14135
|
onClick,
|
|
@@ -14056,31 +14138,31 @@ function OAuthClientCard({
|
|
|
14056
14138
|
}) {
|
|
14057
14139
|
const truncatedId = client.clientId.length > 12 ? `${client.clientId.slice(0, 8)}...${client.clientId.slice(-4)}` : client.clientId;
|
|
14058
14140
|
const createdAgo = client.createdAt ? formatDistanceToNow(new Date(client.createdAt), { addSuffix: true }) : "Unknown";
|
|
14059
|
-
return /* @__PURE__ */
|
|
14141
|
+
return /* @__PURE__ */ jsxs99(
|
|
14060
14142
|
Card,
|
|
14061
14143
|
{
|
|
14062
14144
|
className: `cursor-pointer transition-colors hover:bg-accent/50 ${!client.isActive ? "opacity-60" : ""}`,
|
|
14063
14145
|
onClick,
|
|
14064
14146
|
children: [
|
|
14065
|
-
/* @__PURE__ */
|
|
14066
|
-
/* @__PURE__ */
|
|
14067
|
-
/* @__PURE__ */
|
|
14068
|
-
/* @__PURE__ */
|
|
14069
|
-
/* @__PURE__ */
|
|
14147
|
+
/* @__PURE__ */ jsxs99(CardHeader, { className: "pb-2", children: [
|
|
14148
|
+
/* @__PURE__ */ jsxs99("div", { className: "flex items-start justify-between", children: [
|
|
14149
|
+
/* @__PURE__ */ jsxs99("div", { className: "flex items-center gap-2", children: [
|
|
14150
|
+
/* @__PURE__ */ jsx166(Key, { className: "h-5 w-5 text-muted-foreground" }),
|
|
14151
|
+
/* @__PURE__ */ jsx166(CardTitle, { className: "text-lg", children: client.name })
|
|
14070
14152
|
] }),
|
|
14071
|
-
/* @__PURE__ */
|
|
14072
|
-
/* @__PURE__ */
|
|
14073
|
-
(onEdit || onDelete) && /* @__PURE__ */
|
|
14074
|
-
/* @__PURE__ */
|
|
14075
|
-
/* @__PURE__ */
|
|
14076
|
-
onEdit && /* @__PURE__ */
|
|
14153
|
+
/* @__PURE__ */ jsxs99("div", { className: "flex items-center gap-2", children: [
|
|
14154
|
+
/* @__PURE__ */ jsx166(Badge, { variant: client.isActive ? "default" : "secondary", children: client.isActive ? "Active" : "Inactive" }),
|
|
14155
|
+
(onEdit || onDelete) && /* @__PURE__ */ jsxs99(DropdownMenu, { children: [
|
|
14156
|
+
/* @__PURE__ */ jsx166(DropdownMenuTrigger, { onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx166(Button, { render: /* @__PURE__ */ jsx166("div", {}), nativeButton: false, variant: "ghost", size: "icon", className: "h-8 w-8", children: /* @__PURE__ */ jsx166(MoreVertical, { className: "h-4 w-4" }) }) }),
|
|
14157
|
+
/* @__PURE__ */ jsxs99(DropdownMenuContent, { align: "end", children: [
|
|
14158
|
+
onEdit && /* @__PURE__ */ jsxs99(DropdownMenuItem, { onClick: (e) => {
|
|
14077
14159
|
e.stopPropagation();
|
|
14078
14160
|
onEdit();
|
|
14079
14161
|
}, children: [
|
|
14080
|
-
/* @__PURE__ */
|
|
14162
|
+
/* @__PURE__ */ jsx166(Pencil, { className: "h-4 w-4 mr-2" }),
|
|
14081
14163
|
"Edit"
|
|
14082
14164
|
] }),
|
|
14083
|
-
onDelete && /* @__PURE__ */
|
|
14165
|
+
onDelete && /* @__PURE__ */ jsxs99(
|
|
14084
14166
|
DropdownMenuItem,
|
|
14085
14167
|
{
|
|
14086
14168
|
onClick: (e) => {
|
|
@@ -14089,7 +14171,7 @@ function OAuthClientCard({
|
|
|
14089
14171
|
},
|
|
14090
14172
|
className: "text-destructive",
|
|
14091
14173
|
children: [
|
|
14092
|
-
/* @__PURE__ */
|
|
14174
|
+
/* @__PURE__ */ jsx166(Trash22, { className: "h-4 w-4 mr-2" }),
|
|
14093
14175
|
"Delete"
|
|
14094
14176
|
]
|
|
14095
14177
|
}
|
|
@@ -14098,15 +14180,15 @@ function OAuthClientCard({
|
|
|
14098
14180
|
] })
|
|
14099
14181
|
] })
|
|
14100
14182
|
] }),
|
|
14101
|
-
client.description && /* @__PURE__ */
|
|
14183
|
+
client.description && /* @__PURE__ */ jsx166(CardDescription, { className: "line-clamp-2", children: client.description })
|
|
14102
14184
|
] }),
|
|
14103
|
-
/* @__PURE__ */
|
|
14104
|
-
/* @__PURE__ */
|
|
14105
|
-
/* @__PURE__ */
|
|
14185
|
+
/* @__PURE__ */ jsx166(CardContent, { children: /* @__PURE__ */ jsxs99("div", { className: "flex flex-wrap gap-x-4 gap-y-1 text-sm text-muted-foreground", children: [
|
|
14186
|
+
/* @__PURE__ */ jsx166("span", { className: "font-mono", children: truncatedId }),
|
|
14187
|
+
/* @__PURE__ */ jsxs99("span", { children: [
|
|
14106
14188
|
"Created ",
|
|
14107
14189
|
createdAgo
|
|
14108
14190
|
] }),
|
|
14109
|
-
/* @__PURE__ */
|
|
14191
|
+
/* @__PURE__ */ jsx166("span", { children: client.isConfidential ? "Confidential" : "Public" })
|
|
14110
14192
|
] }) })
|
|
14111
14193
|
]
|
|
14112
14194
|
}
|
|
@@ -14116,7 +14198,7 @@ __name(OAuthClientCard, "OAuthClientCard");
|
|
|
14116
14198
|
|
|
14117
14199
|
// src/features/oauth/components/OAuthClientList.tsx
|
|
14118
14200
|
import { Plus as Plus2, Key as Key2 } from "lucide-react";
|
|
14119
|
-
import { jsx as
|
|
14201
|
+
import { jsx as jsx167, jsxs as jsxs100 } from "react/jsx-runtime";
|
|
14120
14202
|
function OAuthClientList({
|
|
14121
14203
|
clients,
|
|
14122
14204
|
isLoading = false,
|
|
@@ -14129,49 +14211,49 @@ function OAuthClientList({
|
|
|
14129
14211
|
title = "OAuth Applications"
|
|
14130
14212
|
}) {
|
|
14131
14213
|
if (isLoading && clients.length === 0) {
|
|
14132
|
-
return /* @__PURE__ */
|
|
14133
|
-
/* @__PURE__ */
|
|
14134
|
-
/* @__PURE__ */
|
|
14135
|
-
/* @__PURE__ */
|
|
14214
|
+
return /* @__PURE__ */ jsxs100("div", { className: "space-y-4", children: [
|
|
14215
|
+
/* @__PURE__ */ jsxs100("div", { className: "flex items-center justify-between", children: [
|
|
14216
|
+
/* @__PURE__ */ jsx167("h2", { className: "text-2xl font-bold", children: title }),
|
|
14217
|
+
/* @__PURE__ */ jsx167(Skeleton, { className: "h-10 w-32" })
|
|
14136
14218
|
] }),
|
|
14137
|
-
/* @__PURE__ */
|
|
14219
|
+
/* @__PURE__ */ jsx167("div", { className: "space-y-3", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsx167(Skeleton, { className: "h-32 w-full" }, i)) })
|
|
14138
14220
|
] });
|
|
14139
14221
|
}
|
|
14140
14222
|
if (error) {
|
|
14141
|
-
return /* @__PURE__ */
|
|
14142
|
-
/* @__PURE__ */
|
|
14143
|
-
/* @__PURE__ */
|
|
14223
|
+
return /* @__PURE__ */ jsxs100("div", { className: "space-y-4", children: [
|
|
14224
|
+
/* @__PURE__ */ jsx167("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsx167("h2", { className: "text-2xl font-bold", children: title }) }),
|
|
14225
|
+
/* @__PURE__ */ jsx167("div", { className: "rounded-lg border border-destructive/50 bg-destructive/10 p-6 text-center", children: /* @__PURE__ */ jsx167("p", { className: "text-destructive", children: error.message }) })
|
|
14144
14226
|
] });
|
|
14145
14227
|
}
|
|
14146
14228
|
if (clients.length === 0) {
|
|
14147
|
-
return /* @__PURE__ */
|
|
14148
|
-
/* @__PURE__ */
|
|
14149
|
-
/* @__PURE__ */
|
|
14150
|
-
onCreateClick && /* @__PURE__ */
|
|
14151
|
-
/* @__PURE__ */
|
|
14229
|
+
return /* @__PURE__ */ jsxs100("div", { className: "space-y-4", children: [
|
|
14230
|
+
/* @__PURE__ */ jsxs100("div", { className: "flex items-center justify-between", children: [
|
|
14231
|
+
/* @__PURE__ */ jsx167("h2", { className: "text-2xl font-bold", children: title }),
|
|
14232
|
+
onCreateClick && /* @__PURE__ */ jsxs100(Button, { onClick: onCreateClick, children: [
|
|
14233
|
+
/* @__PURE__ */ jsx167(Plus2, { className: "h-4 w-4 mr-2" }),
|
|
14152
14234
|
"New App"
|
|
14153
14235
|
] })
|
|
14154
14236
|
] }),
|
|
14155
|
-
/* @__PURE__ */
|
|
14156
|
-
/* @__PURE__ */
|
|
14157
|
-
/* @__PURE__ */
|
|
14158
|
-
/* @__PURE__ */
|
|
14159
|
-
onCreateClick && /* @__PURE__ */
|
|
14160
|
-
/* @__PURE__ */
|
|
14237
|
+
/* @__PURE__ */ jsxs100("div", { className: "rounded-lg border border-dashed p-12 text-center", children: [
|
|
14238
|
+
/* @__PURE__ */ jsx167(Key2, { className: "h-12 w-12 mx-auto text-muted-foreground mb-4" }),
|
|
14239
|
+
/* @__PURE__ */ jsx167("h3", { className: "text-lg font-medium mb-2", children: "No OAuth Applications" }),
|
|
14240
|
+
/* @__PURE__ */ jsx167("p", { className: "text-muted-foreground mb-4", children: emptyStateMessage }),
|
|
14241
|
+
onCreateClick && /* @__PURE__ */ jsxs100(Button, { onClick: onCreateClick, children: [
|
|
14242
|
+
/* @__PURE__ */ jsx167(Plus2, { className: "h-4 w-4 mr-2" }),
|
|
14161
14243
|
"Create Application"
|
|
14162
14244
|
] })
|
|
14163
14245
|
] })
|
|
14164
14246
|
] });
|
|
14165
14247
|
}
|
|
14166
|
-
return /* @__PURE__ */
|
|
14167
|
-
/* @__PURE__ */
|
|
14168
|
-
/* @__PURE__ */
|
|
14169
|
-
onCreateClick && /* @__PURE__ */
|
|
14170
|
-
/* @__PURE__ */
|
|
14248
|
+
return /* @__PURE__ */ jsxs100("div", { className: "space-y-4", children: [
|
|
14249
|
+
/* @__PURE__ */ jsxs100("div", { className: "flex items-center justify-between", children: [
|
|
14250
|
+
/* @__PURE__ */ jsx167("h2", { className: "text-2xl font-bold", children: title }),
|
|
14251
|
+
onCreateClick && /* @__PURE__ */ jsxs100(Button, { onClick: onCreateClick, children: [
|
|
14252
|
+
/* @__PURE__ */ jsx167(Plus2, { className: "h-4 w-4 mr-2" }),
|
|
14171
14253
|
"New App"
|
|
14172
14254
|
] })
|
|
14173
14255
|
] }),
|
|
14174
|
-
/* @__PURE__ */
|
|
14256
|
+
/* @__PURE__ */ jsx167("div", { className: "space-y-3", children: clients.map((client) => /* @__PURE__ */ jsx167(
|
|
14175
14257
|
OAuthClientCard,
|
|
14176
14258
|
{
|
|
14177
14259
|
client,
|
|
@@ -14187,7 +14269,7 @@ __name(OAuthClientList, "OAuthClientList");
|
|
|
14187
14269
|
|
|
14188
14270
|
// src/features/oauth/components/OAuthClientForm.tsx
|
|
14189
14271
|
import { useState as useState56, useCallback as useCallback26 } from "react";
|
|
14190
|
-
import { jsx as
|
|
14272
|
+
import { jsx as jsx168, jsxs as jsxs101 } from "react/jsx-runtime";
|
|
14191
14273
|
function OAuthClientForm({
|
|
14192
14274
|
client,
|
|
14193
14275
|
onSubmit,
|
|
@@ -14234,15 +14316,15 @@ function OAuthClientForm({
|
|
|
14234
14316
|
},
|
|
14235
14317
|
[formState, validate, onSubmit]
|
|
14236
14318
|
);
|
|
14237
|
-
return /* @__PURE__ */
|
|
14238
|
-
/* @__PURE__ */
|
|
14239
|
-
/* @__PURE__ */
|
|
14240
|
-
/* @__PURE__ */
|
|
14319
|
+
return /* @__PURE__ */ jsx168(Card, { children: /* @__PURE__ */ jsxs101("form", { onSubmit: handleSubmit, children: [
|
|
14320
|
+
/* @__PURE__ */ jsxs101(CardHeader, { children: [
|
|
14321
|
+
/* @__PURE__ */ jsx168(CardTitle, { children: isEditMode ? "Edit Application" : "Create OAuth Application" }),
|
|
14322
|
+
/* @__PURE__ */ jsx168(CardDescription, { children: isEditMode ? "Update your OAuth application settings." : "Register a new application to access the API." })
|
|
14241
14323
|
] }),
|
|
14242
|
-
/* @__PURE__ */
|
|
14243
|
-
/* @__PURE__ */
|
|
14244
|
-
/* @__PURE__ */
|
|
14245
|
-
/* @__PURE__ */
|
|
14324
|
+
/* @__PURE__ */ jsxs101(CardContent, { className: "space-y-6", children: [
|
|
14325
|
+
/* @__PURE__ */ jsxs101("div", { className: "space-y-2", children: [
|
|
14326
|
+
/* @__PURE__ */ jsx168(Label, { htmlFor: "name", children: "Application Name *" }),
|
|
14327
|
+
/* @__PURE__ */ jsx168(
|
|
14246
14328
|
Input,
|
|
14247
14329
|
{
|
|
14248
14330
|
id: "name",
|
|
@@ -14253,11 +14335,11 @@ function OAuthClientForm({
|
|
|
14253
14335
|
className: errors.name ? "border-destructive" : ""
|
|
14254
14336
|
}
|
|
14255
14337
|
),
|
|
14256
|
-
errors.name && /* @__PURE__ */
|
|
14338
|
+
errors.name && /* @__PURE__ */ jsx168("p", { className: "text-sm text-destructive", children: errors.name })
|
|
14257
14339
|
] }),
|
|
14258
|
-
/* @__PURE__ */
|
|
14259
|
-
/* @__PURE__ */
|
|
14260
|
-
/* @__PURE__ */
|
|
14340
|
+
/* @__PURE__ */ jsxs101("div", { className: "space-y-2", children: [
|
|
14341
|
+
/* @__PURE__ */ jsx168(Label, { htmlFor: "description", children: "Description" }),
|
|
14342
|
+
/* @__PURE__ */ jsx168(
|
|
14261
14343
|
Textarea,
|
|
14262
14344
|
{
|
|
14263
14345
|
id: "description",
|
|
@@ -14269,7 +14351,7 @@ function OAuthClientForm({
|
|
|
14269
14351
|
}
|
|
14270
14352
|
)
|
|
14271
14353
|
] }),
|
|
14272
|
-
/* @__PURE__ */
|
|
14354
|
+
/* @__PURE__ */ jsx168(
|
|
14273
14355
|
OAuthRedirectUriInput,
|
|
14274
14356
|
{
|
|
14275
14357
|
value: formState.redirectUris,
|
|
@@ -14278,7 +14360,7 @@ function OAuthClientForm({
|
|
|
14278
14360
|
disabled: isLoading
|
|
14279
14361
|
}
|
|
14280
14362
|
),
|
|
14281
|
-
/* @__PURE__ */
|
|
14363
|
+
/* @__PURE__ */ jsx168(
|
|
14282
14364
|
OAuthScopeSelector,
|
|
14283
14365
|
{
|
|
14284
14366
|
value: formState.allowedScopes,
|
|
@@ -14287,38 +14369,38 @@ function OAuthClientForm({
|
|
|
14287
14369
|
disabled: isLoading
|
|
14288
14370
|
}
|
|
14289
14371
|
),
|
|
14290
|
-
/* @__PURE__ */
|
|
14291
|
-
/* @__PURE__ */
|
|
14292
|
-
/* @__PURE__ */
|
|
14372
|
+
/* @__PURE__ */ jsxs101("div", { className: "space-y-3", children: [
|
|
14373
|
+
/* @__PURE__ */ jsx168(Label, { children: "Client Type" }),
|
|
14374
|
+
/* @__PURE__ */ jsxs101(
|
|
14293
14375
|
RadioGroup,
|
|
14294
14376
|
{
|
|
14295
14377
|
value: formState.isConfidential ? "confidential" : "public",
|
|
14296
14378
|
onValueChange: (v) => setFormState((s) => ({ ...s, isConfidential: v === "confidential" })),
|
|
14297
14379
|
disabled: isLoading || isEditMode,
|
|
14298
14380
|
children: [
|
|
14299
|
-
/* @__PURE__ */
|
|
14300
|
-
/* @__PURE__ */
|
|
14301
|
-
/* @__PURE__ */
|
|
14302
|
-
/* @__PURE__ */
|
|
14303
|
-
/* @__PURE__ */
|
|
14381
|
+
/* @__PURE__ */ jsxs101("div", { className: "flex items-start space-x-3 p-3 rounded-md border", children: [
|
|
14382
|
+
/* @__PURE__ */ jsx168(RadioGroupItem, { value: "confidential", id: "confidential", className: "mt-1" }),
|
|
14383
|
+
/* @__PURE__ */ jsxs101("div", { children: [
|
|
14384
|
+
/* @__PURE__ */ jsx168(Label, { htmlFor: "confidential", className: "font-medium cursor-pointer", children: "Confidential" }),
|
|
14385
|
+
/* @__PURE__ */ jsx168("p", { className: "text-sm text-muted-foreground", children: "Server-side application that can securely store the client secret." })
|
|
14304
14386
|
] })
|
|
14305
14387
|
] }),
|
|
14306
|
-
/* @__PURE__ */
|
|
14307
|
-
/* @__PURE__ */
|
|
14308
|
-
/* @__PURE__ */
|
|
14309
|
-
/* @__PURE__ */
|
|
14310
|
-
/* @__PURE__ */
|
|
14388
|
+
/* @__PURE__ */ jsxs101("div", { className: "flex items-start space-x-3 p-3 rounded-md border", children: [
|
|
14389
|
+
/* @__PURE__ */ jsx168(RadioGroupItem, { value: "public", id: "public", className: "mt-1" }),
|
|
14390
|
+
/* @__PURE__ */ jsxs101("div", { children: [
|
|
14391
|
+
/* @__PURE__ */ jsx168(Label, { htmlFor: "public", className: "font-medium cursor-pointer", children: "Public" }),
|
|
14392
|
+
/* @__PURE__ */ jsx168("p", { className: "text-sm text-muted-foreground", children: "Mobile or desktop application. Requires PKCE for authorization." })
|
|
14311
14393
|
] })
|
|
14312
14394
|
] })
|
|
14313
14395
|
]
|
|
14314
14396
|
}
|
|
14315
14397
|
),
|
|
14316
|
-
isEditMode && /* @__PURE__ */
|
|
14398
|
+
isEditMode && /* @__PURE__ */ jsx168("p", { className: "text-sm text-muted-foreground", children: "Client type cannot be changed after creation." })
|
|
14317
14399
|
] })
|
|
14318
14400
|
] }),
|
|
14319
|
-
/* @__PURE__ */
|
|
14320
|
-
/* @__PURE__ */
|
|
14321
|
-
/* @__PURE__ */
|
|
14401
|
+
/* @__PURE__ */ jsxs101(CardFooter, { className: "flex justify-end gap-3", children: [
|
|
14402
|
+
/* @__PURE__ */ jsx168(Button, { type: "button", variant: "outline", onClick: onCancel, disabled: isLoading, children: "Cancel" }),
|
|
14403
|
+
/* @__PURE__ */ jsx168(Button, { type: "submit", disabled: isLoading, children: isLoading ? "Saving..." : isEditMode ? "Save Changes" : "Create Application" })
|
|
14322
14404
|
] })
|
|
14323
14405
|
] }) });
|
|
14324
14406
|
}
|
|
@@ -14328,7 +14410,7 @@ __name(OAuthClientForm, "OAuthClientForm");
|
|
|
14328
14410
|
import { useState as useState57, useCallback as useCallback27 } from "react";
|
|
14329
14411
|
import { format as format2 } from "date-fns";
|
|
14330
14412
|
import { Copy as Copy2, Check as Check2, RefreshCw as RefreshCw2, Pencil as Pencil2, Trash2 as Trash23, ExternalLink } from "lucide-react";
|
|
14331
|
-
import { Fragment as
|
|
14413
|
+
import { Fragment as Fragment34, jsx as jsx169, jsxs as jsxs102 } from "react/jsx-runtime";
|
|
14332
14414
|
function OAuthClientDetail({
|
|
14333
14415
|
client,
|
|
14334
14416
|
isLoading = false,
|
|
@@ -14371,40 +14453,40 @@ function OAuthClientDetail({
|
|
|
14371
14453
|
}
|
|
14372
14454
|
}, [onRegenerateSecret]);
|
|
14373
14455
|
const createdDate = client.createdAt ? format2(new Date(client.createdAt), "MMMM d, yyyy") : "Unknown";
|
|
14374
|
-
return /* @__PURE__ */
|
|
14375
|
-
/* @__PURE__ */
|
|
14376
|
-
/* @__PURE__ */
|
|
14377
|
-
/* @__PURE__ */
|
|
14378
|
-
/* @__PURE__ */
|
|
14379
|
-
client.description && /* @__PURE__ */
|
|
14456
|
+
return /* @__PURE__ */ jsxs102(Fragment34, { children: [
|
|
14457
|
+
/* @__PURE__ */ jsxs102(Card, { children: [
|
|
14458
|
+
/* @__PURE__ */ jsx169(CardHeader, { children: /* @__PURE__ */ jsxs102("div", { className: "flex items-start justify-between", children: [
|
|
14459
|
+
/* @__PURE__ */ jsxs102("div", { children: [
|
|
14460
|
+
/* @__PURE__ */ jsx169(CardTitle, { className: "text-2xl", children: client.name }),
|
|
14461
|
+
client.description && /* @__PURE__ */ jsx169(CardDescription, { className: "mt-1", children: client.description })
|
|
14380
14462
|
] }),
|
|
14381
|
-
/* @__PURE__ */
|
|
14382
|
-
/* @__PURE__ */
|
|
14383
|
-
/* @__PURE__ */
|
|
14463
|
+
/* @__PURE__ */ jsxs102("div", { className: "flex items-center gap-2", children: [
|
|
14464
|
+
/* @__PURE__ */ jsx169(Badge, { variant: client.isActive ? "default" : "secondary", children: client.isActive ? "Active" : "Inactive" }),
|
|
14465
|
+
/* @__PURE__ */ jsx169(Badge, { variant: "outline", children: client.isConfidential ? "Confidential" : "Public" })
|
|
14384
14466
|
] })
|
|
14385
14467
|
] }) }),
|
|
14386
|
-
/* @__PURE__ */
|
|
14387
|
-
/* @__PURE__ */
|
|
14388
|
-
/* @__PURE__ */
|
|
14389
|
-
/* @__PURE__ */
|
|
14390
|
-
/* @__PURE__ */
|
|
14391
|
-
/* @__PURE__ */
|
|
14468
|
+
/* @__PURE__ */ jsxs102(CardContent, { className: "space-y-6", children: [
|
|
14469
|
+
/* @__PURE__ */ jsxs102("div", { className: "space-y-2", children: [
|
|
14470
|
+
/* @__PURE__ */ jsx169(Label, { children: "Client ID" }),
|
|
14471
|
+
/* @__PURE__ */ jsxs102("div", { className: "flex gap-2", children: [
|
|
14472
|
+
/* @__PURE__ */ jsx169(Input, { value: client.clientId, readOnly: true, className: "font-mono" }),
|
|
14473
|
+
/* @__PURE__ */ jsx169(
|
|
14392
14474
|
Button,
|
|
14393
14475
|
{
|
|
14394
14476
|
variant: "outline",
|
|
14395
14477
|
size: "icon",
|
|
14396
14478
|
onClick: () => copyToClipboard(client.clientId, "clientId"),
|
|
14397
14479
|
title: "Copy Client ID",
|
|
14398
|
-
children: copiedField === "clientId" ? /* @__PURE__ */
|
|
14480
|
+
children: copiedField === "clientId" ? /* @__PURE__ */ jsx169(Check2, { className: "h-4 w-4 text-green-600" }) : /* @__PURE__ */ jsx169(Copy2, { className: "h-4 w-4" })
|
|
14399
14481
|
}
|
|
14400
14482
|
)
|
|
14401
14483
|
] })
|
|
14402
14484
|
] }),
|
|
14403
|
-
/* @__PURE__ */
|
|
14404
|
-
/* @__PURE__ */
|
|
14405
|
-
/* @__PURE__ */
|
|
14406
|
-
/* @__PURE__ */
|
|
14407
|
-
onRegenerateSecret && /* @__PURE__ */
|
|
14485
|
+
/* @__PURE__ */ jsxs102("div", { className: "space-y-2", children: [
|
|
14486
|
+
/* @__PURE__ */ jsx169(Label, { children: "Client Secret" }),
|
|
14487
|
+
/* @__PURE__ */ jsxs102("div", { className: "flex gap-2", children: [
|
|
14488
|
+
/* @__PURE__ */ jsx169(Input, { value: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", readOnly: true, className: "font-mono" }),
|
|
14489
|
+
onRegenerateSecret && /* @__PURE__ */ jsx169(
|
|
14408
14490
|
Button,
|
|
14409
14491
|
{
|
|
14410
14492
|
variant: "outline",
|
|
@@ -14412,46 +14494,46 @@ function OAuthClientDetail({
|
|
|
14412
14494
|
onClick: () => setShowRegenerateConfirm(true),
|
|
14413
14495
|
title: "Regenerate Secret",
|
|
14414
14496
|
disabled: isLoading,
|
|
14415
|
-
children: /* @__PURE__ */
|
|
14497
|
+
children: /* @__PURE__ */ jsx169(RefreshCw2, { className: "h-4 w-4" })
|
|
14416
14498
|
}
|
|
14417
14499
|
)
|
|
14418
14500
|
] }),
|
|
14419
|
-
/* @__PURE__ */
|
|
14501
|
+
/* @__PURE__ */ jsx169("p", { className: "text-xs text-muted-foreground", children: "Regenerating will invalidate the current secret and all existing tokens." })
|
|
14420
14502
|
] }),
|
|
14421
|
-
/* @__PURE__ */
|
|
14422
|
-
/* @__PURE__ */
|
|
14423
|
-
/* @__PURE__ */
|
|
14424
|
-
/* @__PURE__ */
|
|
14425
|
-
/* @__PURE__ */
|
|
14503
|
+
/* @__PURE__ */ jsx169(Separator, {}),
|
|
14504
|
+
/* @__PURE__ */ jsxs102("div", { className: "space-y-2", children: [
|
|
14505
|
+
/* @__PURE__ */ jsx169(Label, { children: "Redirect URIs" }),
|
|
14506
|
+
/* @__PURE__ */ jsx169("ul", { className: "space-y-1", children: client.redirectUris.map((uri, index) => /* @__PURE__ */ jsxs102("li", { className: "flex items-center gap-2 text-sm font-mono", children: [
|
|
14507
|
+
/* @__PURE__ */ jsx169(ExternalLink, { className: "h-3 w-3 text-muted-foreground" }),
|
|
14426
14508
|
uri
|
|
14427
14509
|
] }, index)) })
|
|
14428
14510
|
] }),
|
|
14429
|
-
/* @__PURE__ */
|
|
14430
|
-
/* @__PURE__ */
|
|
14431
|
-
/* @__PURE__ */
|
|
14511
|
+
/* @__PURE__ */ jsxs102("div", { className: "space-y-2", children: [
|
|
14512
|
+
/* @__PURE__ */ jsx169(Label, { children: "Allowed Scopes" }),
|
|
14513
|
+
/* @__PURE__ */ jsx169("div", { className: "flex flex-wrap gap-2", children: client.allowedScopes.map((scope) => /* @__PURE__ */ jsx169(Badge, { variant: "secondary", children: OAUTH_SCOPE_DISPLAY[scope]?.name || scope }, scope)) })
|
|
14432
14514
|
] }),
|
|
14433
|
-
/* @__PURE__ */
|
|
14434
|
-
/* @__PURE__ */
|
|
14435
|
-
/* @__PURE__ */
|
|
14515
|
+
/* @__PURE__ */ jsxs102("div", { className: "space-y-2", children: [
|
|
14516
|
+
/* @__PURE__ */ jsx169(Label, { children: "Grant Types" }),
|
|
14517
|
+
/* @__PURE__ */ jsx169("div", { className: "flex flex-wrap gap-2", children: client.allowedGrantTypes.map((grant) => /* @__PURE__ */ jsx169(Badge, { variant: "outline", children: grant.replace(/_/g, " ") }, grant)) })
|
|
14436
14518
|
] }),
|
|
14437
|
-
/* @__PURE__ */
|
|
14438
|
-
/* @__PURE__ */
|
|
14519
|
+
/* @__PURE__ */ jsx169(Separator, {}),
|
|
14520
|
+
/* @__PURE__ */ jsx169("div", { className: "flex flex-wrap gap-x-6 gap-y-2 text-sm text-muted-foreground", children: /* @__PURE__ */ jsxs102("span", { children: [
|
|
14439
14521
|
"Created: ",
|
|
14440
14522
|
createdDate
|
|
14441
14523
|
] }) }),
|
|
14442
|
-
/* @__PURE__ */
|
|
14443
|
-
onEdit && /* @__PURE__ */
|
|
14444
|
-
/* @__PURE__ */
|
|
14524
|
+
/* @__PURE__ */ jsxs102("div", { className: "flex gap-3 pt-4", children: [
|
|
14525
|
+
onEdit && /* @__PURE__ */ jsxs102(Button, { variant: "outline", onClick: onEdit, disabled: isLoading, children: [
|
|
14526
|
+
/* @__PURE__ */ jsx169(Pencil2, { className: "h-4 w-4 mr-2" }),
|
|
14445
14527
|
"Edit"
|
|
14446
14528
|
] }),
|
|
14447
|
-
onDelete && /* @__PURE__ */
|
|
14529
|
+
onDelete && /* @__PURE__ */ jsxs102(
|
|
14448
14530
|
Button,
|
|
14449
14531
|
{
|
|
14450
14532
|
variant: "destructive",
|
|
14451
14533
|
onClick: () => setShowDeleteConfirm(true),
|
|
14452
14534
|
disabled: isLoading,
|
|
14453
14535
|
children: [
|
|
14454
|
-
/* @__PURE__ */
|
|
14536
|
+
/* @__PURE__ */ jsx169(Trash23, { className: "h-4 w-4 mr-2" }),
|
|
14455
14537
|
"Delete"
|
|
14456
14538
|
]
|
|
14457
14539
|
}
|
|
@@ -14459,18 +14541,18 @@ function OAuthClientDetail({
|
|
|
14459
14541
|
] })
|
|
14460
14542
|
] })
|
|
14461
14543
|
] }),
|
|
14462
|
-
/* @__PURE__ */
|
|
14463
|
-
/* @__PURE__ */
|
|
14464
|
-
/* @__PURE__ */
|
|
14465
|
-
/* @__PURE__ */
|
|
14544
|
+
/* @__PURE__ */ jsx169(AlertDialog, { open: showDeleteConfirm, onOpenChange: setShowDeleteConfirm, children: /* @__PURE__ */ jsxs102(AlertDialogContent, { children: [
|
|
14545
|
+
/* @__PURE__ */ jsxs102(AlertDialogHeader, { children: [
|
|
14546
|
+
/* @__PURE__ */ jsx169(AlertDialogTitle, { children: "Delete OAuth Application?" }),
|
|
14547
|
+
/* @__PURE__ */ jsxs102(AlertDialogDescription, { children: [
|
|
14466
14548
|
'This will permanently delete "',
|
|
14467
14549
|
client.name,
|
|
14468
14550
|
'" and revoke all access tokens. This action cannot be undone.'
|
|
14469
14551
|
] })
|
|
14470
14552
|
] }),
|
|
14471
|
-
/* @__PURE__ */
|
|
14472
|
-
/* @__PURE__ */
|
|
14473
|
-
/* @__PURE__ */
|
|
14553
|
+
/* @__PURE__ */ jsxs102(AlertDialogFooter, { children: [
|
|
14554
|
+
/* @__PURE__ */ jsx169(AlertDialogCancel, { disabled: isDeleting, children: "Cancel" }),
|
|
14555
|
+
/* @__PURE__ */ jsx169(
|
|
14474
14556
|
AlertDialogAction,
|
|
14475
14557
|
{
|
|
14476
14558
|
onClick: handleDelete,
|
|
@@ -14481,14 +14563,14 @@ function OAuthClientDetail({
|
|
|
14481
14563
|
)
|
|
14482
14564
|
] })
|
|
14483
14565
|
] }) }),
|
|
14484
|
-
/* @__PURE__ */
|
|
14485
|
-
/* @__PURE__ */
|
|
14486
|
-
/* @__PURE__ */
|
|
14487
|
-
/* @__PURE__ */
|
|
14566
|
+
/* @__PURE__ */ jsx169(AlertDialog, { open: showRegenerateConfirm, onOpenChange: setShowRegenerateConfirm, children: /* @__PURE__ */ jsxs102(AlertDialogContent, { children: [
|
|
14567
|
+
/* @__PURE__ */ jsxs102(AlertDialogHeader, { children: [
|
|
14568
|
+
/* @__PURE__ */ jsx169(AlertDialogTitle, { children: "Regenerate Client Secret?" }),
|
|
14569
|
+
/* @__PURE__ */ jsx169(AlertDialogDescription, { children: "This will generate a new client secret and invalidate the old one. All existing tokens will be revoked. You will need to update your application with the new secret." })
|
|
14488
14570
|
] }),
|
|
14489
|
-
/* @__PURE__ */
|
|
14490
|
-
/* @__PURE__ */
|
|
14491
|
-
/* @__PURE__ */
|
|
14571
|
+
/* @__PURE__ */ jsxs102(AlertDialogFooter, { children: [
|
|
14572
|
+
/* @__PURE__ */ jsx169(AlertDialogCancel, { disabled: isRegenerating, children: "Cancel" }),
|
|
14573
|
+
/* @__PURE__ */ jsx169(AlertDialogAction, { onClick: handleRegenerateSecret, disabled: isRegenerating, children: isRegenerating ? "Regenerating..." : "Regenerate" })
|
|
14492
14574
|
] })
|
|
14493
14575
|
] }) })
|
|
14494
14576
|
] });
|
|
@@ -14497,28 +14579,28 @@ __name(OAuthClientDetail, "OAuthClientDetail");
|
|
|
14497
14579
|
|
|
14498
14580
|
// src/features/oauth/components/consent/OAuthConsentHeader.tsx
|
|
14499
14581
|
import { Shield } from "lucide-react";
|
|
14500
|
-
import { jsx as
|
|
14582
|
+
import { jsx as jsx170, jsxs as jsxs103 } from "react/jsx-runtime";
|
|
14501
14583
|
function OAuthConsentHeader({
|
|
14502
14584
|
client,
|
|
14503
14585
|
logoUrl,
|
|
14504
14586
|
appName = "Only35"
|
|
14505
14587
|
}) {
|
|
14506
|
-
return /* @__PURE__ */
|
|
14507
|
-
/* @__PURE__ */
|
|
14588
|
+
return /* @__PURE__ */ jsxs103("div", { className: "text-center space-y-4", children: [
|
|
14589
|
+
/* @__PURE__ */ jsx170("div", { className: "flex justify-center", children: logoUrl ? /* @__PURE__ */ jsx170(
|
|
14508
14590
|
"img",
|
|
14509
14591
|
{
|
|
14510
14592
|
src: logoUrl,
|
|
14511
14593
|
alt: appName,
|
|
14512
14594
|
className: "h-12 w-auto"
|
|
14513
14595
|
}
|
|
14514
|
-
) : /* @__PURE__ */
|
|
14515
|
-
/* @__PURE__ */
|
|
14516
|
-
/* @__PURE__ */
|
|
14596
|
+
) : /* @__PURE__ */ jsx170("div", { className: "h-12 w-12 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsx170(Shield, { className: "h-6 w-6 text-primary-foreground" }) }) }),
|
|
14597
|
+
/* @__PURE__ */ jsxs103("div", { className: "space-y-2", children: [
|
|
14598
|
+
/* @__PURE__ */ jsxs103("h1", { className: "text-2xl font-bold", children: [
|
|
14517
14599
|
"Authorize ",
|
|
14518
14600
|
client.name
|
|
14519
14601
|
] }),
|
|
14520
|
-
/* @__PURE__ */
|
|
14521
|
-
/* @__PURE__ */
|
|
14602
|
+
/* @__PURE__ */ jsxs103("p", { className: "text-muted-foreground", children: [
|
|
14603
|
+
/* @__PURE__ */ jsx170("span", { className: "font-medium text-foreground", children: client.name }),
|
|
14522
14604
|
" ",
|
|
14523
14605
|
"wants to access your ",
|
|
14524
14606
|
appName,
|
|
@@ -14540,7 +14622,7 @@ import {
|
|
|
14540
14622
|
User,
|
|
14541
14623
|
Shield as Shield2
|
|
14542
14624
|
} from "lucide-react";
|
|
14543
|
-
import { jsx as
|
|
14625
|
+
import { jsx as jsx171, jsxs as jsxs104 } from "react/jsx-runtime";
|
|
14544
14626
|
var SCOPE_ICONS = {
|
|
14545
14627
|
eye: Eye,
|
|
14546
14628
|
pencil: Pencil3,
|
|
@@ -14555,19 +14637,19 @@ function OAuthScopeList({ scopes }) {
|
|
|
14555
14637
|
if (scopes.length === 0) {
|
|
14556
14638
|
return null;
|
|
14557
14639
|
}
|
|
14558
|
-
return /* @__PURE__ */
|
|
14559
|
-
/* @__PURE__ */
|
|
14560
|
-
/* @__PURE__ */
|
|
14640
|
+
return /* @__PURE__ */ jsxs104("div", { className: "space-y-3", children: [
|
|
14641
|
+
/* @__PURE__ */ jsx171("h2", { className: "text-sm font-medium text-muted-foreground uppercase tracking-wide", children: "This will allow the application to:" }),
|
|
14642
|
+
/* @__PURE__ */ jsx171("ul", { className: "space-y-3", children: scopes.map((scope) => {
|
|
14561
14643
|
const IconComponent = scope.icon ? SCOPE_ICONS[scope.icon] : Eye;
|
|
14562
|
-
return /* @__PURE__ */
|
|
14644
|
+
return /* @__PURE__ */ jsxs104(
|
|
14563
14645
|
"li",
|
|
14564
14646
|
{
|
|
14565
14647
|
className: "flex items-start gap-3 p-3 rounded-lg bg-muted/50",
|
|
14566
14648
|
children: [
|
|
14567
|
-
/* @__PURE__ */
|
|
14568
|
-
/* @__PURE__ */
|
|
14569
|
-
/* @__PURE__ */
|
|
14570
|
-
/* @__PURE__ */
|
|
14649
|
+
/* @__PURE__ */ jsx171("div", { className: "flex-shrink-0 mt-0.5", children: /* @__PURE__ */ jsx171("div", { className: "h-8 w-8 rounded-full bg-primary/10 flex items-center justify-center", children: IconComponent && /* @__PURE__ */ jsx171(IconComponent, { className: "h-4 w-4 text-primary" }) }) }),
|
|
14650
|
+
/* @__PURE__ */ jsxs104("div", { className: "flex-1", children: [
|
|
14651
|
+
/* @__PURE__ */ jsx171("p", { className: "font-medium", children: scope.name }),
|
|
14652
|
+
/* @__PURE__ */ jsx171("p", { className: "text-sm text-muted-foreground", children: scope.description })
|
|
14571
14653
|
] })
|
|
14572
14654
|
]
|
|
14573
14655
|
},
|
|
@@ -14579,14 +14661,14 @@ function OAuthScopeList({ scopes }) {
|
|
|
14579
14661
|
__name(OAuthScopeList, "OAuthScopeList");
|
|
14580
14662
|
|
|
14581
14663
|
// src/features/oauth/components/consent/OAuthConsentActions.tsx
|
|
14582
|
-
import { jsx as
|
|
14664
|
+
import { jsx as jsx172, jsxs as jsxs105 } from "react/jsx-runtime";
|
|
14583
14665
|
function OAuthConsentActions({
|
|
14584
14666
|
onApprove,
|
|
14585
14667
|
onDeny,
|
|
14586
14668
|
isLoading = false
|
|
14587
14669
|
}) {
|
|
14588
|
-
return /* @__PURE__ */
|
|
14589
|
-
/* @__PURE__ */
|
|
14670
|
+
return /* @__PURE__ */ jsxs105("div", { className: "flex flex-col sm:flex-row gap-3", children: [
|
|
14671
|
+
/* @__PURE__ */ jsx172(
|
|
14590
14672
|
Button,
|
|
14591
14673
|
{
|
|
14592
14674
|
variant: "outline",
|
|
@@ -14596,7 +14678,7 @@ function OAuthConsentActions({
|
|
|
14596
14678
|
children: "Deny"
|
|
14597
14679
|
}
|
|
14598
14680
|
),
|
|
14599
|
-
/* @__PURE__ */
|
|
14681
|
+
/* @__PURE__ */ jsx172(
|
|
14600
14682
|
Button,
|
|
14601
14683
|
{
|
|
14602
14684
|
onClick: onApprove,
|
|
@@ -14611,7 +14693,7 @@ __name(OAuthConsentActions, "OAuthConsentActions");
|
|
|
14611
14693
|
|
|
14612
14694
|
// src/features/oauth/components/consent/OAuthConsentScreen.tsx
|
|
14613
14695
|
import { ExternalLink as ExternalLink2, AlertTriangle as AlertTriangle2, Loader2 as Loader22 } from "lucide-react";
|
|
14614
|
-
import { jsx as
|
|
14696
|
+
import { jsx as jsx173, jsxs as jsxs106 } from "react/jsx-runtime";
|
|
14615
14697
|
function OAuthConsentScreen({
|
|
14616
14698
|
params,
|
|
14617
14699
|
logoUrl,
|
|
@@ -14621,21 +14703,21 @@ function OAuthConsentScreen({
|
|
|
14621
14703
|
}) {
|
|
14622
14704
|
const { clientInfo, isLoading, error, approve, deny, isSubmitting } = useOAuthConsent(params);
|
|
14623
14705
|
if (isLoading) {
|
|
14624
|
-
return /* @__PURE__ */
|
|
14625
|
-
/* @__PURE__ */
|
|
14626
|
-
/* @__PURE__ */
|
|
14706
|
+
return /* @__PURE__ */ jsx173("div", { className: "min-h-screen flex items-center justify-center p-4", children: /* @__PURE__ */ jsx173(Card, { className: "w-full max-w-md", children: /* @__PURE__ */ jsxs106(CardContent, { className: "flex flex-col items-center justify-center py-12", children: [
|
|
14707
|
+
/* @__PURE__ */ jsx173(Loader22, { className: "h-8 w-8 animate-spin text-muted-foreground" }),
|
|
14708
|
+
/* @__PURE__ */ jsx173("p", { className: "mt-4 text-muted-foreground", children: "Loading authorization request..." })
|
|
14627
14709
|
] }) }) });
|
|
14628
14710
|
}
|
|
14629
14711
|
if (error || !clientInfo) {
|
|
14630
|
-
return /* @__PURE__ */
|
|
14631
|
-
/* @__PURE__ */
|
|
14632
|
-
/* @__PURE__ */
|
|
14712
|
+
return /* @__PURE__ */ jsx173("div", { className: "min-h-screen flex items-center justify-center p-4", children: /* @__PURE__ */ jsx173(Card, { className: "w-full max-w-md", children: /* @__PURE__ */ jsx173(CardContent, { className: "py-8", children: /* @__PURE__ */ jsxs106(Alert, { variant: "destructive", children: [
|
|
14713
|
+
/* @__PURE__ */ jsx173(AlertTriangle2, { className: "h-4 w-4" }),
|
|
14714
|
+
/* @__PURE__ */ jsx173(AlertDescription, { children: error?.message || "Invalid authorization request. Please try again." })
|
|
14633
14715
|
] }) }) }) });
|
|
14634
14716
|
}
|
|
14635
14717
|
const { client, scopes } = clientInfo;
|
|
14636
|
-
return /* @__PURE__ */
|
|
14637
|
-
/* @__PURE__ */
|
|
14638
|
-
/* @__PURE__ */
|
|
14718
|
+
return /* @__PURE__ */ jsx173("div", { className: "min-h-screen flex items-center justify-center p-4 bg-muted/30", children: /* @__PURE__ */ jsxs106(Card, { className: "w-full max-w-md", children: [
|
|
14719
|
+
/* @__PURE__ */ jsxs106(CardContent, { className: "pt-6 space-y-6", children: [
|
|
14720
|
+
/* @__PURE__ */ jsx173(
|
|
14639
14721
|
OAuthConsentHeader,
|
|
14640
14722
|
{
|
|
14641
14723
|
client,
|
|
@@ -14643,17 +14725,17 @@ function OAuthConsentScreen({
|
|
|
14643
14725
|
appName
|
|
14644
14726
|
}
|
|
14645
14727
|
),
|
|
14646
|
-
/* @__PURE__ */
|
|
14647
|
-
/* @__PURE__ */
|
|
14648
|
-
/* @__PURE__ */
|
|
14649
|
-
/* @__PURE__ */
|
|
14650
|
-
/* @__PURE__ */
|
|
14651
|
-
/* @__PURE__ */
|
|
14652
|
-
/* @__PURE__ */
|
|
14653
|
-
/* @__PURE__ */
|
|
14728
|
+
/* @__PURE__ */ jsx173(Separator, {}),
|
|
14729
|
+
/* @__PURE__ */ jsx173(OAuthScopeList, { scopes }),
|
|
14730
|
+
/* @__PURE__ */ jsx173(Separator, {}),
|
|
14731
|
+
/* @__PURE__ */ jsxs106("div", { className: "flex items-start gap-2 text-sm text-muted-foreground", children: [
|
|
14732
|
+
/* @__PURE__ */ jsx173(ExternalLink2, { className: "h-4 w-4 mt-0.5 flex-shrink-0" }),
|
|
14733
|
+
/* @__PURE__ */ jsxs106("div", { children: [
|
|
14734
|
+
/* @__PURE__ */ jsx173("span", { children: "Authorizing will redirect you to:" }),
|
|
14735
|
+
/* @__PURE__ */ jsx173("p", { className: "font-mono text-xs mt-1 break-all", children: params.redirectUri })
|
|
14654
14736
|
] })
|
|
14655
14737
|
] }),
|
|
14656
|
-
/* @__PURE__ */
|
|
14738
|
+
/* @__PURE__ */ jsx173(
|
|
14657
14739
|
OAuthConsentActions,
|
|
14658
14740
|
{
|
|
14659
14741
|
onApprove: approve,
|
|
@@ -14662,14 +14744,14 @@ function OAuthConsentScreen({
|
|
|
14662
14744
|
}
|
|
14663
14745
|
)
|
|
14664
14746
|
] }),
|
|
14665
|
-
/* @__PURE__ */
|
|
14747
|
+
/* @__PURE__ */ jsx173(CardFooter, { className: "justify-center", children: /* @__PURE__ */ jsxs106("p", { className: "text-xs text-center text-muted-foreground", children: [
|
|
14666
14748
|
"By authorizing, you agree to the app's",
|
|
14667
14749
|
" ",
|
|
14668
|
-
/* @__PURE__ */
|
|
14750
|
+
/* @__PURE__ */ jsx173("a", { href: termsUrl, className: "underline hover:text-foreground", target: "_blank", rel: "noopener", children: "Terms of Service" }),
|
|
14669
14751
|
" ",
|
|
14670
14752
|
"and",
|
|
14671
14753
|
" ",
|
|
14672
|
-
/* @__PURE__ */
|
|
14754
|
+
/* @__PURE__ */ jsx173("a", { href: privacyUrl, className: "underline hover:text-foreground", target: "_blank", rel: "noopener", children: "Privacy Policy" }),
|
|
14673
14755
|
"."
|
|
14674
14756
|
] }) })
|
|
14675
14757
|
] }) });
|
|
@@ -15007,6 +15089,7 @@ export {
|
|
|
15007
15089
|
FormSlider,
|
|
15008
15090
|
FormSwitch,
|
|
15009
15091
|
FormTextarea,
|
|
15092
|
+
GdprConsentCheckbox,
|
|
15010
15093
|
FormFeatures,
|
|
15011
15094
|
PageContainerContentDetails,
|
|
15012
15095
|
PageContentContainer,
|
|
@@ -15017,6 +15100,7 @@ export {
|
|
|
15017
15100
|
cellUrl,
|
|
15018
15101
|
ContentTableSearch,
|
|
15019
15102
|
ContentListTable,
|
|
15103
|
+
GdprConsentSection,
|
|
15020
15104
|
AuthContainer,
|
|
15021
15105
|
LandingComponent,
|
|
15022
15106
|
AcceptInvitation,
|
|
@@ -15093,4 +15177,4 @@ export {
|
|
|
15093
15177
|
useOAuthClients,
|
|
15094
15178
|
useOAuthClient
|
|
15095
15179
|
};
|
|
15096
|
-
//# sourceMappingURL=chunk-
|
|
15180
|
+
//# sourceMappingURL=chunk-TM4RWVZE.mjs.map
|