@strapi-community/plugin-io 5.0.6 → 5.2.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.
@@ -7,7 +7,7 @@ const icons = require("@strapi/icons");
7
7
  const admin = require("@strapi/strapi/admin");
8
8
  const index = require("./index-DkTxsEqL.js");
9
9
  const styled = require("styled-components");
10
- const index$1 = require("./index-BVQ20t1c.js");
10
+ const index$1 = require("./index-BEZDDgvZ.js");
11
11
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
12
12
  const styled__default = /* @__PURE__ */ _interopDefault(styled);
13
13
  const ResponsiveMain = styled__default.default(designSystem.Main)`
@@ -82,6 +82,23 @@ const ResponsiveButtonGroup = styled__default.default(designSystem.Flex)`
82
82
  }
83
83
  }
84
84
  `;
85
+ const ToggleCard = styled__default.default(designSystem.Box)`
86
+ padding: 16px;
87
+ background: ${({ $active, $color }) => $active ? `${$color}15` : "#ffffff"};
88
+ border-radius: 8px;
89
+ cursor: pointer;
90
+ border: 2px solid ${({ $active, $color }) => $active ? $color : "#dcdce4"};
91
+ transition: all 0.2s ease;
92
+ height: 100%;
93
+ min-height: 80px;
94
+ display: flex;
95
+ align-items: center;
96
+
97
+ &:hover {
98
+ border-color: ${({ $color }) => $color};
99
+ background: ${({ $color }) => `${$color}08`};
100
+ }
101
+ `;
85
102
  const InputWrapper = styled__default.default.div`
86
103
  width: 100%;
87
104
 
@@ -688,21 +705,12 @@ const SettingsPage = () => {
688
705
  /* @__PURE__ */ jsxRuntime.jsx(ResponsiveSectionTitle, { variant: "delta", as: "h2", children: t("security.title", "Security Settings") }),
689
706
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("security.description", "Configure authentication and rate limiting") })
690
707
  ] }),
691
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 3, children: [
708
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 4, children: [
692
709
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
693
- designSystem.Box,
710
+ ToggleCard,
694
711
  {
695
- padding: 4,
696
- background: settings.security?.requireAuthentication ? "success100" : "neutral0",
697
- hasRadius: true,
698
- style: {
699
- cursor: "pointer",
700
- border: `2px solid ${settings.security?.requireAuthentication ? "#5cb176" : "#dcdce4"}`,
701
- transition: "all 0.2s ease",
702
- minHeight: "110px",
703
- display: "flex",
704
- alignItems: "center"
705
- },
712
+ $active: settings.security?.requireAuthentication,
713
+ $color: "#5cb176",
706
714
  onClick: () => updateSecurity("requireAuthentication", !settings.security?.requireAuthentication),
707
715
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", style: { width: "100%" }, children: [
708
716
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -713,34 +721,17 @@ const SettingsPage = () => {
713
721
  }
714
722
  ),
715
723
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
716
- /* @__PURE__ */ jsxRuntime.jsx(
717
- designSystem.Typography,
718
- {
719
- variant: "omega",
720
- fontWeight: settings.security?.requireAuthentication ? "bold" : "normal",
721
- textColor: settings.security?.requireAuthentication ? "success700" : "neutral800",
722
- children: t("security.requireAuth", "Require Authentication")
723
- }
724
- ),
725
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", style: { fontSize: "12px" }, children: settings.security?.requireAuthentication ? "✓ Active" : "Inactive" })
724
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: t("security.requireAuth", "Require Authentication") }),
725
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: settings.security?.requireAuthentication ? "Active" : "Inactive" })
726
726
  ] })
727
727
  ] })
728
728
  }
729
729
  ) }),
730
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
731
- designSystem.Box,
730
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
731
+ ToggleCard,
732
732
  {
733
- padding: 4,
734
- background: settings.security?.rateLimiting?.enabled ? "warning100" : "neutral0",
735
- hasRadius: true,
736
- style: {
737
- cursor: "pointer",
738
- border: `2px solid ${settings.security?.rateLimiting?.enabled ? "#f59e0b" : "#dcdce4"}`,
739
- transition: "all 0.2s ease",
740
- minHeight: "110px",
741
- display: "flex",
742
- alignItems: "center"
743
- },
733
+ $active: settings.security?.rateLimiting?.enabled,
734
+ $color: "#f59e0b",
744
735
  onClick: () => updateSecurity("rateLimiting", { ...settings.security?.rateLimiting, enabled: !settings.security?.rateLimiting?.enabled }),
745
736
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", style: { width: "100%" }, children: [
746
737
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -751,49 +742,34 @@ const SettingsPage = () => {
751
742
  }
752
743
  ),
753
744
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
754
- /* @__PURE__ */ jsxRuntime.jsx(
755
- designSystem.Typography,
756
- {
757
- variant: "omega",
758
- fontWeight: settings.security?.rateLimiting?.enabled ? "bold" : "normal",
759
- textColor: settings.security?.rateLimiting?.enabled ? "warning700" : "neutral800",
760
- children: t("security.rateLimiting", "Enable Rate Limiting")
761
- }
762
- ),
763
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", style: { fontSize: "12px" }, children: settings.security?.rateLimiting?.enabled ? "✓ Active" : "Inactive" })
745
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: t("security.rateLimiting", "Enable Rate Limiting") }),
746
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: settings.security?.rateLimiting?.enabled ? "Active" : "Inactive" })
764
747
  ] })
765
748
  ] })
766
749
  }
767
- ) }),
768
- settings.security?.rateLimiting?.enabled && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
750
+ ) })
751
+ ] }),
752
+ settings.security?.rateLimiting?.enabled && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 3, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveField, { children: [
753
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t("security.maxEventsPerSecond", "Max Events/Second") }),
754
+ /* @__PURE__ */ jsxRuntime.jsx(InputWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
769
755
  designSystem.NumberInput,
770
756
  {
771
- label: t("security.maxEventsPerSecond", "Max Events/Second"),
772
757
  value: settings.security?.rateLimiting?.maxEventsPerSecond || 10,
773
758
  onValueChange: (value) => updateSecurity("rateLimiting", { ...settings.security?.rateLimiting, maxEventsPerSecond: value })
774
759
  }
775
760
  ) })
776
- ] }),
761
+ ] }) }) }) }),
777
762
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, paddingBottom: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}) }),
778
763
  /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveSection, { children: [
779
- /* @__PURE__ */ jsxRuntime.jsx(ResponsiveSectionTitle, { variant: "delta", as: "h2", children: t("events.title", "Event Configuration") }),
780
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("events.description", "Global event settings") })
764
+ /* @__PURE__ */ jsxRuntime.jsx(ResponsiveSectionTitle, { variant: "delta", as: "h2", children: t("events.title", "Real-time Events") }),
765
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("events.description", "Configure which events are sent for which content types") })
781
766
  ] }),
782
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 3, children: [
767
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 4, children: [
783
768
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
784
- designSystem.Box,
769
+ ToggleCard,
785
770
  {
786
- padding: 4,
787
- background: settings.events?.customEventNames ? "primary100" : "neutral0",
788
- hasRadius: true,
789
- style: {
790
- cursor: "pointer",
791
- border: `2px solid ${settings.events?.customEventNames ? "#4945ff" : "#dcdce4"}`,
792
- transition: "all 0.2s ease",
793
- minHeight: "110px",
794
- display: "flex",
795
- alignItems: "center"
796
- },
771
+ $active: settings.events?.customEventNames,
772
+ $color: "#4945ff",
797
773
  onClick: () => updateEvents("customEventNames", !settings.events?.customEventNames),
798
774
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", style: { width: "100%" }, children: [
799
775
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -804,34 +780,17 @@ const SettingsPage = () => {
804
780
  }
805
781
  ),
806
782
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
807
- /* @__PURE__ */ jsxRuntime.jsx(
808
- designSystem.Typography,
809
- {
810
- variant: "omega",
811
- fontWeight: settings.events?.customEventNames ? "bold" : "normal",
812
- textColor: settings.events?.customEventNames ? "primary700" : "neutral800",
813
- children: t("events.customNames", "Use Custom Event Names")
814
- }
815
- ),
816
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", style: { fontSize: "12px" }, children: settings.events?.customEventNames ? "✓ Active" : "Inactive" })
783
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: t("events.customNames", "Use Custom Event Names") }),
784
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: settings.events?.customEventNames ? "Active" : "Inactive" })
817
785
  ] })
818
786
  ] })
819
787
  }
820
788
  ) }),
821
789
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
822
- designSystem.Box,
790
+ ToggleCard,
823
791
  {
824
- padding: 4,
825
- background: settings.events?.includeRelations ? "primary100" : "neutral0",
826
- hasRadius: true,
827
- style: {
828
- cursor: "pointer",
829
- border: `2px solid ${settings.events?.includeRelations ? "#4945ff" : "#dcdce4"}`,
830
- transition: "all 0.2s ease",
831
- minHeight: "110px",
832
- display: "flex",
833
- alignItems: "center"
834
- },
792
+ $active: settings.events?.includeRelations,
793
+ $color: "#4945ff",
835
794
  onClick: () => updateEvents("includeRelations", !settings.events?.includeRelations),
836
795
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", style: { width: "100%" }, children: [
837
796
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -842,34 +801,17 @@ const SettingsPage = () => {
842
801
  }
843
802
  ),
844
803
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
845
- /* @__PURE__ */ jsxRuntime.jsx(
846
- designSystem.Typography,
847
- {
848
- variant: "omega",
849
- fontWeight: settings.events?.includeRelations ? "bold" : "normal",
850
- textColor: settings.events?.includeRelations ? "primary700" : "neutral800",
851
- children: t("events.includeRelations", "Include Relations")
852
- }
853
- ),
854
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", style: { fontSize: "12px" }, children: settings.events?.includeRelations ? "✓ Active" : "Inactive" })
804
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: t("events.includeRelations", "Include Relations") }),
805
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: settings.events?.includeRelations ? "Active" : "Inactive" })
855
806
  ] })
856
807
  ] })
857
808
  }
858
809
  ) }),
859
810
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
860
- designSystem.Box,
811
+ ToggleCard,
861
812
  {
862
- padding: 4,
863
- background: settings.events?.onlyPublished ? "primary100" : "neutral0",
864
- hasRadius: true,
865
- style: {
866
- cursor: "pointer",
867
- border: `2px solid ${settings.events?.onlyPublished ? "#4945ff" : "#dcdce4"}`,
868
- transition: "all 0.2s ease",
869
- minHeight: "110px",
870
- display: "flex",
871
- alignItems: "center"
872
- },
813
+ $active: settings.events?.onlyPublished,
814
+ $color: "#4945ff",
873
815
  onClick: () => updateEvents("onlyPublished", !settings.events?.onlyPublished),
874
816
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", style: { width: "100%" }, children: [
875
817
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -880,16 +822,8 @@ const SettingsPage = () => {
880
822
  }
881
823
  ),
882
824
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
883
- /* @__PURE__ */ jsxRuntime.jsx(
884
- designSystem.Typography,
885
- {
886
- variant: "omega",
887
- fontWeight: settings.events?.onlyPublished ? "bold" : "normal",
888
- textColor: settings.events?.onlyPublished ? "primary700" : "neutral800",
889
- children: t("events.onlyPublished", "Only Published Content")
890
- }
891
- ),
892
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", style: { fontSize: "12px" }, children: settings.events?.onlyPublished ? "✓ Active" : "Inactive" })
825
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: t("events.onlyPublished", "Only Published Content") }),
826
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: settings.events?.onlyPublished ? "Active" : "Inactive" })
893
827
  ] })
894
828
  ] })
895
829
  }
@@ -1041,7 +975,7 @@ const SettingsPage = () => {
1041
975
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: t("events.delete", "DELETE") }) }) }),
1042
976
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: [
1043
977
  t("entitySubscriptions.allow", "ENTITIES"),
1044
- " 🆕"
978
+ " [NEW]"
1045
979
  ] }) }) })
1046
980
  ] }) }),
1047
981
  availableContentTypes.map((ct, idx) => {
@@ -1277,7 +1211,7 @@ const SettingsPage = () => {
1277
1211
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Badge, { children: [
1278
1212
  "/",
1279
1213
  ns,
1280
- config.requireAuth && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { marginLeft: "4px" }, children: "🔒" }),
1214
+ config.requireAuth && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { marginLeft: "4px" }, children: "[AUTH]" }),
1281
1215
  /* @__PURE__ */ jsxRuntime.jsx(
1282
1216
  designSystem.Button,
1283
1217
  {
@@ -1299,7 +1233,7 @@ const SettingsPage = () => {
1299
1233
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
1300
1234
  /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveSectionTitle, { variant: "delta", as: "h2", children: [
1301
1235
  t("entitySubscriptions.title", "Entity Subscriptions"),
1302
- " 🆕"
1236
+ " [NEW]"
1303
1237
  ] }),
1304
1238
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("entitySubscriptions.description", "Allow clients to subscribe to specific entities") })
1305
1239
  ] }),
@@ -1344,63 +1278,231 @@ const SettingsPage = () => {
1344
1278
  ] }) })
1345
1279
  ] }) }),
1346
1280
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, paddingBottom: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}) }),
1281
+ /* @__PURE__ */ jsxRuntime.jsx(ResponsiveSection, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", alignItems: "center", children: [
1282
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
1283
+ /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveSectionTitle, { variant: "delta", as: "h2", children: [
1284
+ t("presence.title", "Presence System"),
1285
+ " [NEW]"
1286
+ ] }),
1287
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("presence.description", "Real-time collaboration awareness - see who is editing what") })
1288
+ ] }),
1289
+ /* @__PURE__ */ jsxRuntime.jsx(
1290
+ designSystem.Toggle,
1291
+ {
1292
+ checked: settings.presence?.enabled ?? true,
1293
+ onChange: (e) => updateSettings((prev) => ({
1294
+ ...prev,
1295
+ presence: { ...prev.presence, enabled: e.target.checked }
1296
+ }))
1297
+ }
1298
+ )
1299
+ ] }) }),
1300
+ settings.presence?.enabled !== false && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 3, children: [
1301
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveField, { children: [
1302
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t("presence.heartbeat", "Heartbeat Interval (ms)") }),
1303
+ /* @__PURE__ */ jsxRuntime.jsx(InputWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
1304
+ designSystem.NumberInput,
1305
+ {
1306
+ value: settings.presence?.heartbeatInterval ?? 3e4,
1307
+ onValueChange: (value) => updateSettings((prev) => ({
1308
+ ...prev,
1309
+ presence: { ...prev.presence, heartbeatInterval: value }
1310
+ }))
1311
+ }
1312
+ ) })
1313
+ ] }) }),
1314
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveField, { children: [
1315
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t("presence.staleTimeout", "Stale Timeout (ms)") }),
1316
+ /* @__PURE__ */ jsxRuntime.jsx(InputWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
1317
+ designSystem.NumberInput,
1318
+ {
1319
+ value: settings.presence?.staleTimeout ?? 6e4,
1320
+ onValueChange: (value) => updateSettings((prev) => ({
1321
+ ...prev,
1322
+ presence: { ...prev.presence, staleTimeout: value }
1323
+ }))
1324
+ }
1325
+ ) })
1326
+ ] }) }),
1327
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, alignItems: "center", paddingTop: 6, children: [
1328
+ /* @__PURE__ */ jsxRuntime.jsx(
1329
+ designSystem.Checkbox,
1330
+ {
1331
+ checked: settings.presence?.showTypingIndicator ?? true,
1332
+ onCheckedChange: (checked) => updateSettings((prev) => ({
1333
+ ...prev,
1334
+ presence: { ...prev.presence, showTypingIndicator: checked }
1335
+ }))
1336
+ }
1337
+ ),
1338
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: t("presence.typing", "Show Typing Indicators") })
1339
+ ] }) })
1340
+ ] }) }),
1341
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, paddingBottom: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}) }),
1342
+ /* @__PURE__ */ jsxRuntime.jsx(ResponsiveSection, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", alignItems: "center", children: [
1343
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
1344
+ /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveSectionTitle, { variant: "delta", as: "h2", children: [
1345
+ t("livePreview.title", "Live Preview"),
1346
+ " [NEW]"
1347
+ ] }),
1348
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("livePreview.description", "Real-time preview of draft changes for frontends") })
1349
+ ] }),
1350
+ /* @__PURE__ */ jsxRuntime.jsx(
1351
+ designSystem.Toggle,
1352
+ {
1353
+ checked: settings.livePreview?.enabled ?? true,
1354
+ onChange: (e) => updateSettings((prev) => ({
1355
+ ...prev,
1356
+ livePreview: { ...prev.livePreview, enabled: e.target.checked }
1357
+ }))
1358
+ }
1359
+ )
1360
+ ] }) }),
1361
+ settings.livePreview?.enabled !== false && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 3, children: [
1362
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveField, { children: [
1363
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t("livePreview.debounce", "Debounce (ms)") }),
1364
+ /* @__PURE__ */ jsxRuntime.jsx(InputWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
1365
+ designSystem.NumberInput,
1366
+ {
1367
+ value: settings.livePreview?.debounceMs ?? 300,
1368
+ onValueChange: (value) => updateSettings((prev) => ({
1369
+ ...prev,
1370
+ livePreview: { ...prev.livePreview, debounceMs: value }
1371
+ }))
1372
+ }
1373
+ ) })
1374
+ ] }) }),
1375
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, alignItems: "center", paddingTop: 6, children: [
1376
+ /* @__PURE__ */ jsxRuntime.jsx(
1377
+ designSystem.Checkbox,
1378
+ {
1379
+ checked: settings.livePreview?.draftEvents ?? true,
1380
+ onCheckedChange: (checked) => updateSettings((prev) => ({
1381
+ ...prev,
1382
+ livePreview: { ...prev.livePreview, draftEvents: checked }
1383
+ }))
1384
+ }
1385
+ ),
1386
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: t("livePreview.draftEvents", "Emit Draft Events") })
1387
+ ] }) }),
1388
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveField, { children: [
1389
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t("livePreview.maxSubs", "Max Subscriptions/Socket") }),
1390
+ /* @__PURE__ */ jsxRuntime.jsx(InputWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
1391
+ designSystem.NumberInput,
1392
+ {
1393
+ value: settings.livePreview?.maxSubscriptionsPerSocket ?? 50,
1394
+ onValueChange: (value) => updateSettings((prev) => ({
1395
+ ...prev,
1396
+ livePreview: { ...prev.livePreview, maxSubscriptionsPerSocket: value }
1397
+ }))
1398
+ }
1399
+ ) })
1400
+ ] }) })
1401
+ ] }) }),
1402
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, paddingBottom: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}) }),
1403
+ /* @__PURE__ */ jsxRuntime.jsx(ResponsiveSection, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", alignItems: "center", children: [
1404
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
1405
+ /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveSectionTitle, { variant: "delta", as: "h2", children: [
1406
+ t("fieldChanges.title", "Field-level Changes"),
1407
+ " [NEW]"
1408
+ ] }),
1409
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("fieldChanges.description", "Send only changed fields instead of full entities (bandwidth optimization)") })
1410
+ ] }),
1411
+ /* @__PURE__ */ jsxRuntime.jsx(
1412
+ designSystem.Toggle,
1413
+ {
1414
+ checked: settings.fieldLevelChanges?.enabled ?? true,
1415
+ onChange: (e) => updateSettings((prev) => ({
1416
+ ...prev,
1417
+ fieldLevelChanges: { ...prev.fieldLevelChanges, enabled: e.target.checked }
1418
+ }))
1419
+ }
1420
+ )
1421
+ ] }) }),
1422
+ settings.fieldLevelChanges?.enabled !== false && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 3, children: [
1423
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, alignItems: "center", paddingTop: 2, children: [
1424
+ /* @__PURE__ */ jsxRuntime.jsx(
1425
+ designSystem.Checkbox,
1426
+ {
1427
+ checked: settings.fieldLevelChanges?.includeFullData ?? false,
1428
+ onCheckedChange: (checked) => updateSettings((prev) => ({
1429
+ ...prev,
1430
+ fieldLevelChanges: { ...prev.fieldLevelChanges, includeFullData: checked }
1431
+ }))
1432
+ }
1433
+ ),
1434
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: t("fieldChanges.includeFullData", "Include Full Data") })
1435
+ ] }) }),
1436
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveField, { children: [
1437
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t("fieldChanges.maxDepth", "Max Diff Depth") }),
1438
+ /* @__PURE__ */ jsxRuntime.jsx(InputWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
1439
+ designSystem.NumberInput,
1440
+ {
1441
+ value: settings.fieldLevelChanges?.maxDiffDepth ?? 3,
1442
+ onValueChange: (value) => updateSettings((prev) => ({
1443
+ ...prev,
1444
+ fieldLevelChanges: { ...prev.fieldLevelChanges, maxDiffDepth: value }
1445
+ }))
1446
+ }
1447
+ ) })
1448
+ ] }) })
1449
+ ] }) }),
1450
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, paddingBottom: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}) }),
1347
1451
  /* @__PURE__ */ jsxRuntime.jsx(ResponsiveSection, { children: /* @__PURE__ */ jsxRuntime.jsx(ResponsiveSectionTitle, { variant: "delta", as: "h2", children: t("monitoring.title", "Monitoring & Logging") }) }),
1348
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 3, children: [
1452
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 4, children: [
1349
1453
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
1350
- designSystem.Box,
1454
+ ToggleCard,
1351
1455
  {
1352
- padding: 4,
1353
- background: settings.monitoring?.enableConnectionLogging ? "primary100" : "neutral0",
1354
- hasRadius: true,
1355
- style: { cursor: "pointer", border: `1px solid ${settings.monitoring?.enableConnectionLogging ? "#4945ff" : "#dcdce4"}` },
1456
+ $active: settings.monitoring?.enableConnectionLogging,
1457
+ $color: "#4945ff",
1356
1458
  onClick: () => updateMonitoring("enableConnectionLogging", !settings.monitoring?.enableConnectionLogging),
1357
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", children: [
1459
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", style: { width: "100%" }, children: [
1358
1460
  /* @__PURE__ */ jsxRuntime.jsx(
1359
- designSystem.Checkbox,
1461
+ designSystem.Toggle,
1360
1462
  {
1361
1463
  checked: settings.monitoring?.enableConnectionLogging || false,
1362
- onCheckedChange: (checked) => updateMonitoring("enableConnectionLogging", checked)
1464
+ onChange: (e) => updateMonitoring("enableConnectionLogging", e.target.checked)
1363
1465
  }
1364
1466
  ),
1365
1467
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
1366
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "bold", children: t("monitoring.connectionLogging", "Connection Logging") }),
1468
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: t("monitoring.connectionLogging", "Connection Logging") }),
1367
1469
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("monitoring.connectionLoggingHint", "Log client connections") })
1368
1470
  ] })
1369
1471
  ] })
1370
1472
  }
1371
1473
  ) }),
1372
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
1373
- designSystem.Box,
1474
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
1475
+ ToggleCard,
1374
1476
  {
1375
- padding: 4,
1376
- background: settings.monitoring?.enableEventLogging ? "primary100" : "neutral0",
1377
- hasRadius: true,
1378
- style: { cursor: "pointer", border: `1px solid ${settings.monitoring?.enableEventLogging ? "#4945ff" : "#dcdce4"}` },
1477
+ $active: settings.monitoring?.enableEventLogging,
1478
+ $color: "#4945ff",
1379
1479
  onClick: () => updateMonitoring("enableEventLogging", !settings.monitoring?.enableEventLogging),
1380
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", children: [
1480
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", style: { width: "100%" }, children: [
1381
1481
  /* @__PURE__ */ jsxRuntime.jsx(
1382
- designSystem.Checkbox,
1482
+ designSystem.Toggle,
1383
1483
  {
1384
1484
  checked: settings.monitoring?.enableEventLogging || false,
1385
- onCheckedChange: (checked) => updateMonitoring("enableEventLogging", checked)
1485
+ onChange: (e) => updateMonitoring("enableEventLogging", e.target.checked)
1386
1486
  }
1387
1487
  ),
1388
1488
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
1389
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "bold", children: t("monitoring.eventLogging", "Event Logging") }),
1489
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: t("monitoring.eventLogging", "Event Logging") }),
1390
1490
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t("monitoring.eventLoggingHint", "Log all events for debugging") })
1391
1491
  ] })
1392
1492
  ] })
1393
1493
  }
1394
- ) }),
1395
- settings.monitoring?.enableEventLogging && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 12, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(ResponsiveField, { children: /* @__PURE__ */ jsxRuntime.jsx(InputWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
1494
+ ) })
1495
+ ] }),
1496
+ settings.monitoring?.enableEventLogging && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 3, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(ResponsiveField, { children: [
1497
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t("monitoring.maxLogSize", "Max Log Size") }),
1498
+ /* @__PURE__ */ jsxRuntime.jsx(InputWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
1396
1499
  designSystem.NumberInput,
1397
1500
  {
1398
- label: t("monitoring.maxLogSize", "Max Log Size"),
1399
1501
  value: settings.monitoring?.maxEventLogSize || 100,
1400
1502
  onValueChange: (value) => updateMonitoring("maxEventLogSize", value)
1401
1503
  }
1402
- ) }) }) })
1403
- ] })
1504
+ ) })
1505
+ ] }) }) }) })
1404
1506
  ] }),
1405
1507
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginTop: 3, padding: 3, background: "success100", hasRadius: true, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, alignItems: "center", children: [
1406
1508
  /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
@@ -51,7 +51,7 @@ const index = {
51
51
  },
52
52
  id: `${PLUGIN_ID}-settings`,
53
53
  to: `${PLUGIN_ID}/settings`,
54
- Component: () => Promise.resolve().then(() => require("./SettingsPage-88RdJkLy.js")).then((mod) => ({ default: mod.SettingsPage }))
54
+ Component: () => Promise.resolve().then(() => require("./SettingsPage-CsRazf0j.js")).then((mod) => ({ default: mod.SettingsPage }))
55
55
  },
56
56
  {
57
57
  intlLabel: {
@@ -60,7 +60,7 @@ const index = {
60
60
  },
61
61
  id: `${PLUGIN_ID}-monitoring`,
62
62
  to: `${PLUGIN_ID}/monitoring`,
63
- Component: () => Promise.resolve().then(() => require("./MonitoringPage-HxHK1nFr.js")).then((mod) => ({ default: mod.MonitoringPage }))
63
+ Component: () => Promise.resolve().then(() => require("./MonitoringPage-9f4Gzd2X.js")).then((mod) => ({ default: mod.MonitoringPage }))
64
64
  }
65
65
  ]
66
66
  );
@@ -78,11 +78,21 @@ const index = {
78
78
  id: "socket-io-stats-widget",
79
79
  pluginId: PLUGIN_ID
80
80
  });
81
- console.log(`[${PLUGIN_ID}] Socket.IO Stats Widget registered`);
81
+ console.log(`[${PLUGIN_ID}] [SUCCESS] Socket.IO Stats Widget registered`);
82
82
  }
83
83
  },
84
- bootstrap(app) {
85
- console.log(`[${PLUGIN_ID}] Bootstrapping plugin...`);
84
+ async bootstrap(app) {
85
+ console.log(`[${PLUGIN_ID}] [INFO] Bootstrapping plugin...`);
86
+ try {
87
+ const { default: LivePresencePanel } = await Promise.resolve().then(() => require("./LivePresencePanel-2U3I3yL0.js"));
88
+ const contentManagerPlugin = app.getPlugin("content-manager");
89
+ if (contentManagerPlugin && contentManagerPlugin.apis) {
90
+ contentManagerPlugin.apis.addEditViewSidePanel([LivePresencePanel]);
91
+ console.log(`[${PLUGIN_ID}] [SUCCESS] LivePresencePanel injected into sidebar`);
92
+ }
93
+ } catch (error) {
94
+ console.log(`[${PLUGIN_ID}] [INFO] Content Manager panel injection not available:`, error.message);
95
+ }
86
96
  },
87
97
  async registerTrads({ locales }) {
88
98
  const importedTrads = await Promise.all(
@@ -50,7 +50,7 @@ const index = {
50
50
  },
51
51
  id: `${PLUGIN_ID}-settings`,
52
52
  to: `${PLUGIN_ID}/settings`,
53
- Component: () => import("./SettingsPage-DBIu309c.mjs").then((mod) => ({ default: mod.SettingsPage }))
53
+ Component: () => import("./SettingsPage-Btz_5MuC.mjs").then((mod) => ({ default: mod.SettingsPage }))
54
54
  },
55
55
  {
56
56
  intlLabel: {
@@ -59,7 +59,7 @@ const index = {
59
59
  },
60
60
  id: `${PLUGIN_ID}-monitoring`,
61
61
  to: `${PLUGIN_ID}/monitoring`,
62
- Component: () => import("./MonitoringPage-DLZdTZpg.mjs").then((mod) => ({ default: mod.MonitoringPage }))
62
+ Component: () => import("./MonitoringPage-Bbkoh6ih.mjs").then((mod) => ({ default: mod.MonitoringPage }))
63
63
  }
64
64
  ]
65
65
  );
@@ -77,11 +77,21 @@ const index = {
77
77
  id: "socket-io-stats-widget",
78
78
  pluginId: PLUGIN_ID
79
79
  });
80
- console.log(`[${PLUGIN_ID}] Socket.IO Stats Widget registered`);
80
+ console.log(`[${PLUGIN_ID}] [SUCCESS] Socket.IO Stats Widget registered`);
81
81
  }
82
82
  },
83
- bootstrap(app) {
84
- console.log(`[${PLUGIN_ID}] Bootstrapping plugin...`);
83
+ async bootstrap(app) {
84
+ console.log(`[${PLUGIN_ID}] [INFO] Bootstrapping plugin...`);
85
+ try {
86
+ const { default: LivePresencePanel } = await import("./LivePresencePanel-CIFG_05s.mjs");
87
+ const contentManagerPlugin = app.getPlugin("content-manager");
88
+ if (contentManagerPlugin && contentManagerPlugin.apis) {
89
+ contentManagerPlugin.apis.addEditViewSidePanel([LivePresencePanel]);
90
+ console.log(`[${PLUGIN_ID}] [SUCCESS] LivePresencePanel injected into sidebar`);
91
+ }
92
+ } catch (error) {
93
+ console.log(`[${PLUGIN_ID}] [INFO] Content Manager panel injection not available:`, error.message);
94
+ }
85
95
  },
86
96
  async registerTrads({ locales }) {
87
97
  const importedTrads = await Promise.all(
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
- const index = require("../_chunks/index-BVQ20t1c.js");
2
+ const index = require("../_chunks/index-BEZDDgvZ.js");
3
3
  module.exports = index.index;