@plutonhq/core-frontend 0.1.22 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist-lib/@types/plans.d.ts +11 -20
  2. package/dist-lib/@types/plans.d.ts.map +1 -1
  3. package/dist-lib/components/Plan/PlanSettings/PlanAdvancedSettings.js +49 -47
  4. package/dist-lib/components/Plan/PlanSettings/PlanAdvancedSettings.js.map +1 -1
  5. package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettings.d.ts +7 -4
  6. package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettings.d.ts.map +1 -1
  7. package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettings.js +177 -52
  8. package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettings.js.map +1 -1
  9. package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettingsTester.d.ts +9 -0
  10. package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettingsTester.d.ts.map +1 -0
  11. package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettingsTester.js +62 -0
  12. package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettingsTester.js.map +1 -0
  13. package/dist-lib/components/Plan/PlanSettings/PlanPruneSettings.js +2 -2
  14. package/dist-lib/components/Plan/PlanSettings/PlanPruneSettings.js.map +1 -1
  15. package/dist-lib/components/Plan/PlanSettings/PlanSettings.module.scss.js +56 -40
  16. package/dist-lib/components/Plan/PlanSettings/PlanSettings.module.scss.js.map +1 -1
  17. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.d.ts.map +1 -1
  18. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +16 -8
  19. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
  20. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  21. package/dist-lib/components/common/Icon/Icon.js +15 -1
  22. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  23. package/dist-lib/components/index.d.ts +1 -0
  24. package/dist-lib/components/index.d.ts.map +1 -1
  25. package/dist-lib/components.js +86 -84
  26. package/dist-lib/components.js.map +1 -1
  27. package/dist-lib/providers/s3compatible.png +0 -0
  28. package/dist-lib/services/plans.d.ts +13 -1
  29. package/dist-lib/services/plans.d.ts.map +1 -1
  30. package/dist-lib/services/plans.js +88 -61
  31. package/dist-lib/services/plans.js.map +1 -1
  32. package/dist-lib/services/settings.d.ts.map +1 -1
  33. package/dist-lib/services/settings.js +25 -24
  34. package/dist-lib/services/settings.js.map +1 -1
  35. package/dist-lib/services.js +102 -100
  36. package/dist-lib/styles/core-frontend.css +1 -1
  37. package/dist-lib/utils/constants.d.ts.map +1 -1
  38. package/dist-lib/utils/constants.js +28 -5
  39. package/dist-lib/utils/constants.js.map +1 -1
  40. package/dist-lib/utils/helpers.d.ts +1 -0
  41. package/dist-lib/utils/helpers.d.ts.map +1 -1
  42. package/dist-lib/utils/helpers.js +17 -10
  43. package/dist-lib/utils/helpers.js.map +1 -1
  44. package/dist-lib/utils.js +28 -27
  45. package/package.json +1 -1
  46. package/src/@types/plans.ts +11 -20
  47. package/src/components/Plan/PlanSettings/PlanAdvancedSettings.tsx +4 -4
  48. package/src/components/Plan/PlanSettings/PlanNotificationSettings.tsx +179 -47
  49. package/src/components/Plan/PlanSettings/PlanNotificationSettingsTester.tsx +85 -0
  50. package/src/components/Plan/PlanSettings/PlanPruneSettings.tsx +2 -2
  51. package/src/components/Plan/PlanSettings/PlanSettings.module.scss +71 -0
  52. package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +6 -1
  53. package/src/components/common/Icon/Icon.tsx +16 -0
  54. package/src/components/index.ts +1 -0
  55. package/src/services/plans.ts +38 -1
  56. package/src/services/settings.ts +2 -2
  57. package/src/utils/constants.ts +23 -0
  58. package/src/utils/helpers.ts +9 -0
@@ -0,0 +1,62 @@
1
+ import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
+ import { toast as n } from "react-toastify";
3
+ import { useState as T } from "react";
4
+ import { useTestNotification as k } from "../../../services/plans.js";
5
+ import b from "../../common/Icon/Icon.js";
6
+ import r from "./PlanSettings.module.scss.js";
7
+ import { isValidURL as y } from "../../../utils/helpers.js";
8
+ const w = ({
9
+ planId: s,
10
+ notificationChannel: i,
11
+ notificationSettings: f,
12
+ notificationType: d = "backup"
13
+ }) => {
14
+ const [a, l] = T(!1), m = k(), t = f[i], u = d === "integrity", o = (N) => {
15
+ if (l(!1), !s)
16
+ return n.error("Test notification can be sent after creating the Plan");
17
+ if (!(t != null && t.url) || !y(t.url))
18
+ return n.error("Please enter a valid URL to send test notifications");
19
+ n.promise(
20
+ m.mutateAsync({
21
+ planId: s,
22
+ notificationCase: N,
23
+ notificationChannel: i,
24
+ channelSettings: t
25
+ }),
26
+ {
27
+ pending: `Sending Test Request to your ${i}...`,
28
+ success: "Test Request Sent Successfully!",
29
+ error: {
30
+ render({ data: p }) {
31
+ return p.message || "Failed to send test request";
32
+ }
33
+ }
34
+ }
35
+ );
36
+ };
37
+ return /* @__PURE__ */ c("div", { className: r.testNotificationContainer, children: [
38
+ /* @__PURE__ */ c(
39
+ "button",
40
+ {
41
+ onClick: () => u ? o("integrity_failure") : l(!a),
42
+ className: `${r.testNotificationButton} ${t != null && t.url ? "" : r.disabled}`,
43
+ disabled: !(t != null && t.url) || !s,
44
+ title: s ? t != null && t.url ? void 0 : `Enter ${i === "webhook" ? "the" : i.charAt(0).toUpperCase() + i.slice(1)} Webhook URL to send test notifications` : "Create the Plan first to send test notifications",
45
+ children: [
46
+ /* @__PURE__ */ e(b, { type: "send", size: 12 }),
47
+ " Send Test Request"
48
+ ]
49
+ }
50
+ ),
51
+ !u && a && /* @__PURE__ */ e("div", { className: r.testNotificationOptions, children: /* @__PURE__ */ c("ul", { children: [
52
+ /* @__PURE__ */ e("li", { onClick: () => o("start"), children: "Start Notification" }),
53
+ /* @__PURE__ */ e("li", { onClick: () => o("end"), children: "End Notification" }),
54
+ /* @__PURE__ */ e("li", { onClick: () => o("success"), children: "Success Notification" }),
55
+ /* @__PURE__ */ e("li", { onClick: () => o("failure"), children: "Failure Notification" })
56
+ ] }) })
57
+ ] });
58
+ };
59
+ export {
60
+ w as default
61
+ };
62
+ //# sourceMappingURL=PlanNotificationSettingsTester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanNotificationSettingsTester.js","sources":["../../../../src/components/Plan/PlanSettings/PlanNotificationSettingsTester.tsx"],"sourcesContent":["import { toast } from 'react-toastify';\r\nimport { useState } from 'react';\r\nimport { useTestNotification } from '../../../services';\r\nimport { Icon } from '../..';\r\nimport { NewPlanSettings, PlanNotificationCase } from '../../..';\r\nimport classes from './PlanSettings.module.scss';\r\nimport { isValidURL } from '../../../utils';\r\n\r\nconst PlanNotificationSettingsTester = ({\r\n planId,\r\n notificationChannel,\r\n notificationSettings,\r\n notificationType = 'backup',\r\n}: {\r\n planId: string;\r\n notificationType?: 'backup' | 'integrity';\r\n notificationChannel: 'webhook' | 'slack' | 'discord';\r\n notificationSettings: NewPlanSettings['settings']['notification'];\r\n}) => {\r\n const [showTestNotificationOptions, setShowTestNotificationOptions] = useState(false);\r\n const testNotificationMutation = useTestNotification();\r\n const channelSettings = notificationSettings[notificationChannel as 'webhook' | 'slack' | 'discord'];\r\n const integrityNotification = notificationType === 'integrity';\r\n\r\n const sendTestNotification = (notificationCase: PlanNotificationCase | 'integrity_failure') => {\r\n setShowTestNotificationOptions(false);\r\n if (!planId) {\r\n return toast.error('Test notification can be sent after creating the Plan');\r\n }\r\n if (!channelSettings?.url || !isValidURL(channelSettings.url)) {\r\n return toast.error(`Please enter a valid URL to send test notifications`);\r\n }\r\n\r\n toast.promise(\r\n testNotificationMutation.mutateAsync({\r\n planId,\r\n notificationCase: notificationCase,\r\n notificationChannel,\r\n channelSettings: channelSettings,\r\n }),\r\n {\r\n pending: `Sending Test Request to your ${notificationChannel}...`,\r\n success: 'Test Request Sent Successfully!',\r\n error: {\r\n render({ data }: any) {\r\n return data.message || 'Failed to send test request';\r\n },\r\n },\r\n },\r\n );\r\n };\r\n\r\n return (\r\n <div className={classes.testNotificationContainer}>\r\n <button\r\n onClick={() =>\r\n integrityNotification ? sendTestNotification('integrity_failure') : setShowTestNotificationOptions(!showTestNotificationOptions)\r\n }\r\n className={`${classes.testNotificationButton} ${!channelSettings?.url ? classes.disabled : ''}`}\r\n disabled={!channelSettings?.url || !planId}\r\n title={\r\n !planId\r\n ? 'Create the Plan first to send test notifications'\r\n : !channelSettings?.url\r\n ? `Enter ${notificationChannel === 'webhook' ? 'the' : notificationChannel.charAt(0).toUpperCase() + notificationChannel.slice(1)} Webhook URL to send test notifications`\r\n : undefined\r\n }\r\n >\r\n <Icon type=\"send\" size={12} /> Send Test Request\r\n </button>\r\n {!integrityNotification && showTestNotificationOptions && (\r\n <div className={classes.testNotificationOptions}>\r\n <ul>\r\n <li onClick={() => sendTestNotification('start')}>Start Notification</li>\r\n <li onClick={() => sendTestNotification('end')}>End Notification</li>\r\n <li onClick={() => sendTestNotification('success')}>Success Notification</li>\r\n <li onClick={() => sendTestNotification('failure')}>Failure Notification</li>\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanNotificationSettingsTester;\r\n"],"names":["PlanNotificationSettingsTester","planId","notificationChannel","notificationSettings","notificationType","showTestNotificationOptions","setShowTestNotificationOptions","useState","testNotificationMutation","useTestNotification","channelSettings","integrityNotification","sendTestNotification","notificationCase","toast","isValidURL","data","jsxs","classes","jsx","Icon"],"mappings":";;;;;;;AAQA,MAAMA,IAAiC,CAAC;AAAA,EACrC,QAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,kBAAAC,IAAmB;AACtB,MAKM;AACH,QAAM,CAACC,GAA6BC,CAA8B,IAAIC,EAAS,EAAK,GAC9EC,IAA2BC,EAAA,GAC3BC,IAAkBP,EAAqBD,CAAsD,GAC7FS,IAAwBP,MAAqB,aAE7CQ,IAAuB,CAACC,MAAiE;AAE5F,QADAP,EAA+B,EAAK,GAChC,CAACL;AACF,aAAOa,EAAM,MAAM,uDAAuD;AAE7E,QAAI,EAACJ,KAAA,QAAAA,EAAiB,QAAO,CAACK,EAAWL,EAAgB,GAAG;AACzD,aAAOI,EAAM,MAAM,qDAAqD;AAG3E,IAAAA,EAAM;AAAA,MACHN,EAAyB,YAAY;AAAA,QAClC,QAAAP;AAAA,QACA,kBAAAY;AAAA,QACA,qBAAAX;AAAA,QACA,iBAAAQ;AAAA,MAAA,CACF;AAAA,MACD;AAAA,QACG,SAAS,gCAAgCR,CAAmB;AAAA,QAC5D,SAAS;AAAA,QACT,OAAO;AAAA,UACJ,OAAO,EAAE,MAAAc,KAAa;AACnB,mBAAOA,EAAK,WAAW;AAAA,UAC1B;AAAA,QAAA;AAAA,MACH;AAAA,IACH;AAAA,EAEN;AAEA,SACG,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,2BACrB,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,SAAS,MACNN,IAAwBC,EAAqB,mBAAmB,IAAIN,EAA+B,CAACD,CAA2B;AAAA,QAElI,WAAW,GAAGa,EAAQ,sBAAsB,IAAKR,KAAA,QAAAA,EAAiB,MAAyB,KAAnBQ,EAAQ,QAAa;AAAA,QAC7F,UAAU,EAACR,KAAA,QAAAA,EAAiB,QAAO,CAACT;AAAA,QACpC,OACIA,IAEKS,KAAA,QAAAA,EAAiB,MAEhB,SADA,SAASR,MAAwB,YAAY,QAAQA,EAAoB,OAAO,CAAC,EAAE,YAAA,IAAgBA,EAAoB,MAAM,CAAC,CAAC,4CAFjI;AAAA,QAMR,UAAA;AAAA,UAAA,gBAAAiB,EAACC,GAAA,EAAK,MAAK,QAAO,MAAM,IAAI;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEhC,CAACT,KAAyBN,KACxB,gBAAAc,EAAC,SAAI,WAAWD,EAAQ,yBACrB,UAAA,gBAAAD,EAAC,MAAA,EACE,UAAA;AAAA,MAAA,gBAAAE,EAAC,QAAG,SAAS,MAAMP,EAAqB,OAAO,GAAG,UAAA,sBAAkB;AAAA,wBACnE,MAAA,EAAG,SAAS,MAAMA,EAAqB,KAAK,GAAG,UAAA,oBAAgB;AAAA,wBAC/D,MAAA,EAAG,SAAS,MAAMA,EAAqB,SAAS,GAAG,UAAA,wBAAoB;AAAA,wBACvE,MAAA,EAAG,SAAS,MAAMA,EAAqB,SAAS,GAAG,UAAA,uBAAA,CAAoB;AAAA,IAAA,EAAA,CAC3E,EAAA,CACH;AAAA,EAAA,GAEN;AAEN;"}
@@ -82,7 +82,7 @@ const b = ({ plan: c, onUpdate: t }) => {
82
82
  onUpdate: (a) => t({ ...e, keepWeeklySnaps: a })
83
83
  }
84
84
  ),
85
- /* @__PURE__ */ l("span", { children: "Days" })
85
+ /* @__PURE__ */ l("span", { children: "Weeks" })
86
86
  ] }),
87
87
  /* @__PURE__ */ s("div", { className: i.customPolicyOption, children: [
88
88
  /* @__PURE__ */ l("span", { children: "Keep Monthly Backups for " }),
@@ -93,7 +93,7 @@ const b = ({ plan: c, onUpdate: t }) => {
93
93
  onUpdate: (a) => t({ ...e, keepMonthlySnaps: a })
94
94
  }
95
95
  ),
96
- /* @__PURE__ */ l("span", { children: "Days" })
96
+ /* @__PURE__ */ l("span", { children: "Months" })
97
97
  ] })
98
98
  ] }) })
99
99
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"PlanPruneSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanPruneSettings.tsx"],"sourcesContent":["import classes from './PlanSettings.module.scss';\r\nimport Select from '../../common/form/Select/Select';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\n\r\ninterface PlanPruneSettingsProps {\r\n plan: NewPlanSettings;\r\n onUpdate: (pruneSettings: NewPlanSettings['settings']['prune']) => void;\r\n}\r\n\r\nconst PlanPruneSettings = ({ plan, onUpdate }: PlanPruneSettingsProps) => {\r\n const pruneSettings = plan.settings?.prune;\r\n\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Retention Policy</label>\r\n <Select\r\n options={[\r\n { label: 'Remove by Age', value: 'forgetByAge' },\r\n { label: 'Remove by Date', value: 'forgetByDate' },\r\n { label: 'Custom Prune Policy', value: 'custom' },\r\n ]}\r\n fieldValue={pruneSettings.policy}\r\n onUpdate={(val: string) => onUpdate({ ...pruneSettings, policy: val })}\r\n />\r\n </div>\r\n {pruneSettings.policy === 'forgetByAge' && (\r\n <div className={classes.field}>\r\n <label className={classes.label}>Remove Backups Older Than</label>\r\n <div className={classes.forgetByAgeField}>\r\n <NumberInput\r\n fieldValue={pruneSettings.forgetAge ? parseInt(pruneSettings.forgetAge.replace(/\\D/g, ''), 10) : 3}\r\n onUpdate={(val) =>\r\n onUpdate({\r\n ...pruneSettings,\r\n forgetAge: (pruneSettings.forgetAge || '3m').replace(/\\d+/g, val.toString()),\r\n })\r\n }\r\n placeholder=\"5\"\r\n min={1}\r\n full={true}\r\n />\r\n <Tristate\r\n fieldValue={(pruneSettings.forgetAge || '3m').replace(/\\d/g, '')}\r\n options={[\r\n { label: 'Days', value: 'd' },\r\n { label: 'Weeks', value: 'w' },\r\n { label: 'Months', value: 'm' },\r\n ]}\r\n onUpdate={(val: string) =>\r\n onUpdate({\r\n ...pruneSettings,\r\n forgetAge: (pruneSettings.forgetAge || '3m').replace(/\\D/g, val),\r\n })\r\n }\r\n />\r\n </div>\r\n </div>\r\n )}\r\n {pruneSettings.policy === 'forgetByDate' && (\r\n <div className={classes.field} style={{ width: '200px' }}>\r\n <label className={classes.label}>Remove Backups Older Than</label>\r\n <Input type=\"date\" fieldValue={pruneSettings.forgetDate || ''} onUpdate={(val) => onUpdate({ ...pruneSettings, forgetDate: val })} />\r\n </div>\r\n )}\r\n {pruneSettings.policy === 'custom' && (\r\n <>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Custom Policy Settings</label>\r\n <div className={classes.customPolicyOption}>\r\n <span>Keep Daily Backups for </span>\r\n <NumberInput\r\n fieldValue={pruneSettings.keepDailySnaps || ''}\r\n onUpdate={(val) => onUpdate({ ...pruneSettings, keepDailySnaps: val })}\r\n />\r\n <span>Days</span>\r\n </div>\r\n <div className={classes.customPolicyOption}>\r\n <span>Keep Weekly Backups for </span>\r\n <NumberInput\r\n fieldValue={pruneSettings.keepWeeklySnaps || ''}\r\n onUpdate={(val) => onUpdate({ ...pruneSettings, keepWeeklySnaps: val })}\r\n />\r\n <span>Days</span>\r\n </div>\r\n <div className={classes.customPolicyOption}>\r\n <span>Keep Monthly Backups for </span>\r\n <NumberInput\r\n fieldValue={pruneSettings.keepMonthlySnaps || ''}\r\n onUpdate={(val) => onUpdate({ ...pruneSettings, keepMonthlySnaps: val })}\r\n />\r\n <span>Days</span>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanPruneSettings;\r\n"],"names":["PlanPruneSettings","plan","onUpdate","pruneSettings","_a","jsxs","Fragment","classes","jsx","Select","val","NumberInput","Tristate","Input"],"mappings":"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"}
1
+ {"version":3,"file":"PlanPruneSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanPruneSettings.tsx"],"sourcesContent":["import classes from './PlanSettings.module.scss';\r\nimport Select from '../../common/form/Select/Select';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\n\r\ninterface PlanPruneSettingsProps {\r\n plan: NewPlanSettings;\r\n onUpdate: (pruneSettings: NewPlanSettings['settings']['prune']) => void;\r\n}\r\n\r\nconst PlanPruneSettings = ({ plan, onUpdate }: PlanPruneSettingsProps) => {\r\n const pruneSettings = plan.settings?.prune;\r\n\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Retention Policy</label>\r\n <Select\r\n options={[\r\n { label: 'Remove by Age', value: 'forgetByAge' },\r\n { label: 'Remove by Date', value: 'forgetByDate' },\r\n { label: 'Custom Prune Policy', value: 'custom' },\r\n ]}\r\n fieldValue={pruneSettings.policy}\r\n onUpdate={(val: string) => onUpdate({ ...pruneSettings, policy: val })}\r\n />\r\n </div>\r\n {pruneSettings.policy === 'forgetByAge' && (\r\n <div className={classes.field}>\r\n <label className={classes.label}>Remove Backups Older Than</label>\r\n <div className={classes.forgetByAgeField}>\r\n <NumberInput\r\n fieldValue={pruneSettings.forgetAge ? parseInt(pruneSettings.forgetAge.replace(/\\D/g, ''), 10) : 3}\r\n onUpdate={(val) =>\r\n onUpdate({\r\n ...pruneSettings,\r\n forgetAge: (pruneSettings.forgetAge || '3m').replace(/\\d+/g, val.toString()),\r\n })\r\n }\r\n placeholder=\"5\"\r\n min={1}\r\n full={true}\r\n />\r\n <Tristate\r\n fieldValue={(pruneSettings.forgetAge || '3m').replace(/\\d/g, '')}\r\n options={[\r\n { label: 'Days', value: 'd' },\r\n { label: 'Weeks', value: 'w' },\r\n { label: 'Months', value: 'm' },\r\n ]}\r\n onUpdate={(val: string) =>\r\n onUpdate({\r\n ...pruneSettings,\r\n forgetAge: (pruneSettings.forgetAge || '3m').replace(/\\D/g, val),\r\n })\r\n }\r\n />\r\n </div>\r\n </div>\r\n )}\r\n {pruneSettings.policy === 'forgetByDate' && (\r\n <div className={classes.field} style={{ width: '200px' }}>\r\n <label className={classes.label}>Remove Backups Older Than</label>\r\n <Input type=\"date\" fieldValue={pruneSettings.forgetDate || ''} onUpdate={(val) => onUpdate({ ...pruneSettings, forgetDate: val })} />\r\n </div>\r\n )}\r\n {pruneSettings.policy === 'custom' && (\r\n <>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Custom Policy Settings</label>\r\n <div className={classes.customPolicyOption}>\r\n <span>Keep Daily Backups for </span>\r\n <NumberInput\r\n fieldValue={pruneSettings.keepDailySnaps || ''}\r\n onUpdate={(val) => onUpdate({ ...pruneSettings, keepDailySnaps: val })}\r\n />\r\n <span>Days</span>\r\n </div>\r\n <div className={classes.customPolicyOption}>\r\n <span>Keep Weekly Backups for </span>\r\n <NumberInput\r\n fieldValue={pruneSettings.keepWeeklySnaps || ''}\r\n onUpdate={(val) => onUpdate({ ...pruneSettings, keepWeeklySnaps: val })}\r\n />\r\n <span>Weeks</span>\r\n </div>\r\n <div className={classes.customPolicyOption}>\r\n <span>Keep Monthly Backups for </span>\r\n <NumberInput\r\n fieldValue={pruneSettings.keepMonthlySnaps || ''}\r\n onUpdate={(val) => onUpdate({ ...pruneSettings, keepMonthlySnaps: val })}\r\n />\r\n <span>Months</span>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanPruneSettings;\r\n"],"names":["PlanPruneSettings","plan","onUpdate","pruneSettings","_a","jsxs","Fragment","classes","jsx","Select","val","NumberInput","Tristate","Input"],"mappings":"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"}
@@ -1,62 +1,78 @@
1
- const t = "_field_p3quV", e = "_fieldErrorLabel_eZfCx", n = "_fieldNotice_55Tri", o = "_label_zW0YW", i = "_forgetByAgeField_eLTS9", c = "_customPolicyOption_94fdS", s = "_advancedTabContent_VNIEn", a = "_advancedTabs_Uhv1Q", r = "_advancedTabActive_Ab8AR", _ = "_advancedSettingsSelect_TJsh8", d = "_eventTabs_exCRP", p = "_eventTab_02VQB", T = "_eventTabHead_jSxQ5", l = "_eventTabHeadTitle_DyzgZ", b = "_eventTabContent_uz0W3", v = "_addScriptButton_RhlLa", u = "_scriptItem_gS3xT", S = "_scriptHeader_FU21B", m = "_scriptTitle_0if6d", g = "_scriptPositionControls_Wvb7h", f = "_scriptPathInput_08ovq", O = "_scriptFooter_JGxlJ", C = "_scriptOptions_R8S2e", h = "_scriptOptionCheckbox_bTY18", B = "_removeScriptButton_dmH7L", x = "_scriptOptionTimeout_AxGIu", H = "_hasTimeOutSettings_8H9x5", P = "_timeoutSettings_3kEBP", A = {
1
+ const t = "_field_mtlh9", i = "_fieldErrorLabel_Ydo80", e = "_fieldNotice_Gi8t0", n = "_label_ZF458", o = "_forgetByAgeField_FPhtE", c = "_customPolicyOption_XnYTh", s = "_advancedTabContent_lZsCo", a = "_advancedTabs_64uJh", _ = "_advancedTabActive_7Gdt2", d = "_advancedSettingsSelect_iG976", r = "_eventTabs_jx9ex", p = "_eventTab_pqCBd", l = "_eventTabHead_WfRJc", T = "_eventTabHeadTitle_Pxkrl", b = "_eventTabContent_5EcLX", f = "_addScriptButton_sngQZ", v = "_scriptItem_uike9", u = "_scriptHeader_Zr6xK", S = "_scriptTitle_je8nA", g = "_scriptPositionControls_wx8qF", O = "_scriptPathInput_FRbYR", m = "_scriptFooter_t9nVP", C = "_scriptOptions_yahN5", h = "_scriptOptionCheckbox_Xqn00", F = "_removeScriptButton_iTup8", B = "_scriptOptionTimeout_jRU1W", N = "_hasTimeOutSettings_7Vr2y", x = "_timeoutSettings_xbX9o", P = "_notificationTestField_7IXSB", H = "_notificationSettingsSection_Hf62u", y = "_notificationToggle_4xt2e", A = "_notificationSettings_X8F8e", I = "_testNotificationContainer_hS6w0", X = "_testNotificationButton_9tOKN", k = "_disabled_k7FZh", Z = "_testNotificationOptions_OX0Zx", E = {
2
2
  field: t,
3
- fieldErrorLabel: e,
4
- fieldNotice: n,
5
- label: o,
6
- forgetByAgeField: i,
3
+ fieldErrorLabel: i,
4
+ fieldNotice: e,
5
+ label: n,
6
+ forgetByAgeField: o,
7
7
  customPolicyOption: c,
8
8
  advancedTabContent: s,
9
9
  advancedTabs: a,
10
- advancedTabActive: r,
11
- advancedSettingsSelect: _,
12
- eventTabs: d,
10
+ advancedTabActive: _,
11
+ advancedSettingsSelect: d,
12
+ eventTabs: r,
13
13
  eventTab: p,
14
- eventTabHead: T,
15
- eventTabHeadTitle: l,
14
+ eventTabHead: l,
15
+ eventTabHeadTitle: T,
16
16
  eventTabContent: b,
17
- addScriptButton: v,
18
- scriptItem: u,
19
- scriptHeader: S,
20
- scriptTitle: m,
17
+ addScriptButton: f,
18
+ scriptItem: v,
19
+ scriptHeader: u,
20
+ scriptTitle: S,
21
21
  scriptPositionControls: g,
22
- scriptPathInput: f,
23
- scriptFooter: O,
22
+ scriptPathInput: O,
23
+ scriptFooter: m,
24
24
  scriptOptions: C,
25
25
  scriptOptionCheckbox: h,
26
- removeScriptButton: B,
27
- scriptOptionTimeout: x,
28
- hasTimeOutSettings: H,
29
- timeoutSettings: P
26
+ removeScriptButton: F,
27
+ scriptOptionTimeout: B,
28
+ hasTimeOutSettings: N,
29
+ timeoutSettings: x,
30
+ notificationTestField: P,
31
+ notificationSettingsSection: H,
32
+ notificationToggle: y,
33
+ notificationSettings: A,
34
+ testNotificationContainer: I,
35
+ testNotificationButton: X,
36
+ disabled: k,
37
+ testNotificationOptions: Z
30
38
  };
31
39
  export {
32
- v as addScriptButton,
33
- _ as advancedSettingsSelect,
34
- r as advancedTabActive,
40
+ f as addScriptButton,
41
+ d as advancedSettingsSelect,
42
+ _ as advancedTabActive,
35
43
  s as advancedTabContent,
36
44
  a as advancedTabs,
37
45
  c as customPolicyOption,
38
- A as default,
46
+ E as default,
47
+ k as disabled,
39
48
  p as eventTab,
40
49
  b as eventTabContent,
41
- T as eventTabHead,
42
- l as eventTabHeadTitle,
43
- d as eventTabs,
50
+ l as eventTabHead,
51
+ T as eventTabHeadTitle,
52
+ r as eventTabs,
44
53
  t as field,
45
- e as fieldErrorLabel,
46
- n as fieldNotice,
47
- i as forgetByAgeField,
48
- H as hasTimeOutSettings,
49
- o as label,
50
- B as removeScriptButton,
51
- O as scriptFooter,
52
- S as scriptHeader,
53
- u as scriptItem,
54
+ i as fieldErrorLabel,
55
+ e as fieldNotice,
56
+ o as forgetByAgeField,
57
+ N as hasTimeOutSettings,
58
+ n as label,
59
+ A as notificationSettings,
60
+ H as notificationSettingsSection,
61
+ P as notificationTestField,
62
+ y as notificationToggle,
63
+ F as removeScriptButton,
64
+ m as scriptFooter,
65
+ u as scriptHeader,
66
+ v as scriptItem,
54
67
  h as scriptOptionCheckbox,
55
- x as scriptOptionTimeout,
68
+ B as scriptOptionTimeout,
56
69
  C as scriptOptions,
57
- f as scriptPathInput,
70
+ O as scriptPathInput,
58
71
  g as scriptPositionControls,
59
- m as scriptTitle,
60
- P as timeoutSettings
72
+ S as scriptTitle,
73
+ X as testNotificationButton,
74
+ I as testNotificationContainer,
75
+ Z as testNotificationOptions,
76
+ x as timeoutSettings
61
77
  };
62
78
  //# sourceMappingURL=PlanSettings.module.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanSettings.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlanSettings.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"names":[],"mappings":"AASA,UAAU,oBAAoB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACpD;AAED,QAAA,MAAM,eAAe,GAAI,oCAAoC,oBAAoB,4CAmFhF,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"GeneralSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"names":[],"mappings":"AASA,UAAU,oBAAoB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACpD;AAED,QAAA,MAAM,eAAe,GAAI,oCAAoC,oBAAoB,4CAwFhF,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -2,14 +2,14 @@ import { jsxs as F, jsx as a } from "react/jsx-runtime";
2
2
  import { useState as d } from "react";
3
3
  import S from "../../common/ActionModal/ActionModal.js";
4
4
  import t from "../../common/form/Input/Input.js";
5
- import v from "../../common/form/Toggle/Toggle.js";
6
- import w from "../../common/form/Tristate/Tristate.js";
5
+ import w from "../../common/form/Toggle/Toggle.js";
6
+ import v from "../../common/form/Tristate/Tristate.js";
7
7
  import T from "../TwoFactorSetup/TwoFactorSetup.js";
8
8
  import { useTheme as y } from "../../../context/ThemeContext.js";
9
9
  import i from "./GeneralSettings.module.scss.js";
10
10
  const L = ({ settings: e, settingsID: u, onUpdate: o }) => {
11
- var c;
12
- const { setTheme: f } = y(), [p, n] = d(!1), [h, m] = d(!1), { totp: r } = e || {}, s = r == null ? void 0 : r.secret, A = (l) => {
11
+ var m;
12
+ const { setTheme: f } = y(), [p, n] = d(!1), [h, c] = d(!1), { totp: r } = e || {}, s = r == null ? void 0 : r.secret, A = (l) => {
13
13
  if (l === !0 && !s) {
14
14
  n(!0);
15
15
  return;
@@ -49,7 +49,7 @@ const L = ({ settings: e, settingsID: u, onUpdate: o }) => {
49
49
  }
50
50
  ) }),
51
51
  /* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
52
- w,
52
+ v,
53
53
  {
54
54
  label: "Color Scheme",
55
55
  fieldValue: e.theme,
@@ -62,7 +62,15 @@ const L = ({ settings: e, settingsID: u, onUpdate: o }) => {
62
62
  inline: !1
63
63
  }
64
64
  ) }),
65
- /* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(v, { label: "Enable 2FA", fieldValue: ((c = e == null ? void 0 : e.totp) == null ? void 0 : c.enabled) || !1, onUpdate: (l) => A(l), inline: !0 }) }),
65
+ /* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
66
+ w,
67
+ {
68
+ label: "Enable Two-Factor Authentication (2FA)",
69
+ fieldValue: ((m = e == null ? void 0 : e.totp) == null ? void 0 : m.enabled) || !1,
70
+ onUpdate: (l) => A(l),
71
+ inline: !1
72
+ }
73
+ ) }),
66
74
  p && /* @__PURE__ */ a(
67
75
  S,
68
76
  {
@@ -74,11 +82,11 @@ const L = ({ settings: e, settingsID: u, onUpdate: o }) => {
74
82
  title: "Yes, Enable 2FA",
75
83
  type: "default",
76
84
  isPending: !1,
77
- action: () => m(!0)
85
+ action: () => c(!0)
78
86
  }
79
87
  }
80
88
  ),
81
- h && /* @__PURE__ */ a(T, { id: u, close: () => m(!1) })
89
+ h && /* @__PURE__ */ a(T, { id: u, close: () => c(!1) })
82
90
  ] });
83
91
  };
84
92
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSettings.js","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { ActionModal } from '../..';\r\nimport { useTheme } from '../../../context/ThemeContext';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport TwoFactorSetup from '../TwoFactorSetup/TwoFactorSetup';\r\nimport classes from './GeneralSettings.module.scss';\r\n\r\ninterface GeneralSettingsProps {\r\n settingsID: number;\r\n settings: Record<string, any>;\r\n onUpdate: (settings: Record<string, any>) => void;\r\n}\r\n\r\nconst GeneralSettings = ({ settings, settingsID, onUpdate }: GeneralSettingsProps) => {\r\n const { setTheme } = useTheme();\r\n const [show2FASetupConfirm, setShow2FASetupConfirm] = useState(false);\r\n const [show2FASetup, setShow2FASetup] = useState(false);\r\n\r\n const { totp } = settings || {};\r\n const is2FASetupComplete = totp?.secret;\r\n\r\n const update2FASetting = (enabled: boolean) => {\r\n if (enabled === true && !is2FASetupComplete) {\r\n setShow2FASetupConfirm(true);\r\n return;\r\n } else {\r\n onUpdate({ ...settings, totp: { ...totp, enabled } });\r\n }\r\n };\r\n\r\n const handleThemeChange = (newThemeValue: 'auto' | 'light' | 'dark') => {\r\n setTheme(newThemeValue);\r\n onUpdate({ ...settings, theme: newThemeValue });\r\n };\r\n\r\n return (\r\n <div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Title\"\r\n fieldValue={(settings?.title || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, title: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Description\"\r\n fieldValue={(settings?.description || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, description: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"Admin Email\"\r\n fieldValue={settings.admin_email || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, admin_email: val })}\r\n type=\"email\"\r\n placeholder=\"johndoe@mail.com\"\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Tristate\r\n label=\"Color Scheme\"\r\n fieldValue={settings.theme as string}\r\n options={[\r\n { label: 'Auto', value: 'auto' },\r\n { label: 'Dark', value: 'dark' },\r\n { label: 'Light', value: 'light' },\r\n ]}\r\n onUpdate={(val: string) => handleThemeChange(val as 'auto' | 'light' | 'dark')}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Toggle label=\"Enable 2FA\" fieldValue={settings?.totp?.enabled || false} onUpdate={(val) => update2FASetting(val)} inline={true} />\r\n </div>\r\n {show2FASetupConfirm && (\r\n <ActionModal\r\n title={`Enable Two-Factor Authentication (2FA)`}\r\n message={`Are you sure you want to enable Two-Factor Authentication (2FA) to secure Pluton Login? You will be required to use an authenticator app to login if you enable this feature.`}\r\n closeModal={() => setShow2FASetupConfirm(false)}\r\n width=\"420px\"\r\n primaryAction={{\r\n title: `Yes, Enable 2FA`,\r\n type: 'default',\r\n isPending: false,\r\n action: () => setShow2FASetup(true),\r\n }}\r\n />\r\n )}\r\n {show2FASetup && <TwoFactorSetup id={settingsID} close={() => setShow2FASetup(false)} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default GeneralSettings;\r\n"],"names":["GeneralSettings","settings","settingsID","onUpdate","setTheme","useTheme","show2FASetupConfirm","setShow2FASetupConfirm","useState","show2FASetup","setShow2FASetup","totp","is2FASetupComplete","update2FASetting","enabled","handleThemeChange","newThemeValue","jsx","classes","Input","val","Tristate","Toggle","_a","ActionModal","TwoFactorSetup"],"mappings":"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"}
1
+ {"version":3,"file":"GeneralSettings.js","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { ActionModal } from '../..';\r\nimport { useTheme } from '../../../context/ThemeContext';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport TwoFactorSetup from '../TwoFactorSetup/TwoFactorSetup';\r\nimport classes from './GeneralSettings.module.scss';\r\n\r\ninterface GeneralSettingsProps {\r\n settingsID: number;\r\n settings: Record<string, any>;\r\n onUpdate: (settings: Record<string, any>) => void;\r\n}\r\n\r\nconst GeneralSettings = ({ settings, settingsID, onUpdate }: GeneralSettingsProps) => {\r\n const { setTheme } = useTheme();\r\n const [show2FASetupConfirm, setShow2FASetupConfirm] = useState(false);\r\n const [show2FASetup, setShow2FASetup] = useState(false);\r\n\r\n const { totp } = settings || {};\r\n const is2FASetupComplete = totp?.secret;\r\n\r\n const update2FASetting = (enabled: boolean) => {\r\n if (enabled === true && !is2FASetupComplete) {\r\n setShow2FASetupConfirm(true);\r\n return;\r\n } else {\r\n onUpdate({ ...settings, totp: { ...totp, enabled } });\r\n }\r\n };\r\n\r\n const handleThemeChange = (newThemeValue: 'auto' | 'light' | 'dark') => {\r\n setTheme(newThemeValue);\r\n onUpdate({ ...settings, theme: newThemeValue });\r\n };\r\n\r\n return (\r\n <div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Title\"\r\n fieldValue={(settings?.title || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, title: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Description\"\r\n fieldValue={(settings?.description || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, description: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"Admin Email\"\r\n fieldValue={settings.admin_email || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, admin_email: val })}\r\n type=\"email\"\r\n placeholder=\"johndoe@mail.com\"\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Tristate\r\n label=\"Color Scheme\"\r\n fieldValue={settings.theme as string}\r\n options={[\r\n { label: 'Auto', value: 'auto' },\r\n { label: 'Dark', value: 'dark' },\r\n { label: 'Light', value: 'light' },\r\n ]}\r\n onUpdate={(val: string) => handleThemeChange(val as 'auto' | 'light' | 'dark')}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Toggle\r\n label=\"Enable Two-Factor Authentication (2FA)\"\r\n fieldValue={settings?.totp?.enabled || false}\r\n onUpdate={(val) => update2FASetting(val)}\r\n inline={false}\r\n />\r\n </div>\r\n {show2FASetupConfirm && (\r\n <ActionModal\r\n title={`Enable Two-Factor Authentication (2FA)`}\r\n message={`Are you sure you want to enable Two-Factor Authentication (2FA) to secure Pluton Login? You will be required to use an authenticator app to login if you enable this feature.`}\r\n closeModal={() => setShow2FASetupConfirm(false)}\r\n width=\"420px\"\r\n primaryAction={{\r\n title: `Yes, Enable 2FA`,\r\n type: 'default',\r\n isPending: false,\r\n action: () => setShow2FASetup(true),\r\n }}\r\n />\r\n )}\r\n {show2FASetup && <TwoFactorSetup id={settingsID} close={() => setShow2FASetup(false)} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default GeneralSettings;\r\n"],"names":["GeneralSettings","settings","settingsID","onUpdate","setTheme","useTheme","show2FASetupConfirm","setShow2FASetupConfirm","useState","show2FASetup","setShow2FASetup","totp","is2FASetupComplete","update2FASetting","enabled","handleThemeChange","newThemeValue","jsx","classes","Input","val","Tristate","Toggle","_a","ActionModal","TwoFactorSetup"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/components/common/Icon/Icon.tsx"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAOF,QAAA,MAAM,IAAI,GAAI,uCAAuE,SAAS,4CAw9C7F,CAAC;AAmBF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/components/common/Icon/Icon.tsx"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAOF,QAAA,MAAM,IAAI,GAAI,uCAAuE,SAAS,4CAw+C7F,CAAC;AAmBF,eAAe,IAAI,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as e, jsx as a } from "react/jsx-runtime";
2
- const r = ({ type: c, color: l = "currentColor", size: h = 16, title: d = "", classes: t = "" }) => /* @__PURE__ */ e("span", { className: `icon ${t}`, title: d, children: [
2
+ const r = ({ type: c, color: l = "currentColor", size: h = 16, title: t = "", classes: d = "" }) => /* @__PURE__ */ e("span", { className: `icon ${d}`, title: t, children: [
3
3
  c === "logo" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 120 120", children: /* @__PURE__ */ a(
4
4
  "path",
5
5
  {
@@ -1364,6 +1364,20 @@ const r = ({ type: c, color: l = "currentColor", size: h = 16, title: d = "", cl
1364
1364
  fill: "#338574",
1365
1365
  d: "M11 1H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1M9.5 9h-4c-.28 0-.5-.22-.5-.5s.22-.5.5-.5h4c.28 0 .5.22.5.5s-.22.5-.5.5m-7 .12a.62.62 0 0 1-.44-.18a.63.63 0 0 1 0-.88L4.12 6L2.06 3.94a.63.63 0 0 1 0-.88c.24-.24.64-.24.88 0L5.09 5.2c.44.44.44 1.15 0 1.59L2.94 8.94a.62.62 0 0 1-.44.18"
1366
1366
  }
1367
+ ) }),
1368
+ c === "discord" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 256 199", children: /* @__PURE__ */ a(
1369
+ "path",
1370
+ {
1371
+ fill: "#5865f2",
1372
+ d: "M216.856 16.597A208.5 208.5 0 0 0 164.042 0c-2.275 4.113-4.933 9.645-6.766 14.046q-29.538-4.442-58.533 0c-1.832-4.4-4.55-9.933-6.846-14.046a207.8 207.8 0 0 0-52.855 16.638C5.618 67.147-3.443 116.4 1.087 164.956c22.169 16.555 43.653 26.612 64.775 33.193A161 161 0 0 0 79.735 175.3a136.4 136.4 0 0 1-21.846-10.632a109 109 0 0 0 5.356-4.237c42.122 19.702 87.89 19.702 129.51 0a132 132 0 0 0 5.355 4.237a136 136 0 0 1-21.886 10.653c4.006 8.02 8.638 15.67 13.873 22.848c21.142-6.58 42.646-16.637 64.815-33.213c5.316-56.288-9.08-105.09-38.056-148.36M85.474 135.095c-12.645 0-23.015-11.805-23.015-26.18s10.149-26.2 23.015-26.2s23.236 11.804 23.015 26.2c.02 14.375-10.148 26.18-23.015 26.18m85.051 0c-12.645 0-23.014-11.805-23.014-26.18s10.148-26.2 23.014-26.2c12.867 0 23.236 11.804 23.015 26.2c0 14.375-10.148 26.18-23.015 26.18"
1373
+ }
1374
+ ) }),
1375
+ c === "webhook" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 24 24", children: /* @__PURE__ */ a(
1376
+ "path",
1377
+ {
1378
+ fill: l,
1379
+ d: "M7 21q-2.075 0-3.537-1.463T2 16q0-1.4.675-2.537t1.8-1.788q.525-.3 1.025.013t.5.862q0 .275-.112.5t-.313.325q-.7.375-1.137 1.075T4 16q0 1.25.875 2.125T7 19t2.125-.875T10 16q0-.425.238-.712T10.9 15h4.975q.2-.225.488-.363T17 14.5q.625 0 1.063.438T18.5 16t-.437 1.063T17 17.5q-.35 0-.638-.137T15.876 17H11.9q-.35 1.725-1.713 2.863T7 21m0-3.5q-.625 0-1.062-.437T5.5 16q0-.55.35-.95t.85-.525l2.35-3.9q-.725-.675-1.138-1.612T7.5 7q0-2.075 1.463-3.537T12.5 2q1.75 0 3.088 1.063T17.35 5.75q.125.475-.175.863t-.8.387q-.325 0-.612-.238t-.388-.587q-.275-.95-1.05-1.562T12.5 4q-1.25 0-2.125.875T9.5 7q0 .825.413 1.513T10.974 9.6q.35.2.438.5t-.088.6l-2.9 4.85q.05.125.063.225T8.5 16q0 .625-.437 1.063T7 17.5M17 21q-.65 0-1.263-.162T14.6 20.4q-.675-.375-.537-1.137t1.012-.763q.125 0 .275.05t.275.125q.325.175.663.25T17 19q1.25 0 2.125-.875T20 16t-.875-2.125T17 13q-.25 0-.475.038t-.45.112q-.4.125-.75.013t-.525-.388l-2.575-4.3q-.525-.1-.875-.5T11 7q0-.625.438-1.062T12.5 5.5t1.063.438T14 7v.213q0 .087-.05.212l2.175 3.65q.2-.05.425-.062T17 11q2.075 0 3.538 1.463T22 16t-1.463 3.538T17 21"
1380
+ }
1367
1381
  ) })
1368
1382
  ] }), i = ({ children: c, viewBox: l, size: h }) => /* @__PURE__ */ a(
1369
1383
  "svg",