@strapi-community/plugin-io 5.0.4 → 5.1.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--2NeIKGR.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, {}),