@plutonhq/core-frontend 0.1.25 → 0.1.27

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 (91) hide show
  1. package/dist-lib/@types/backups.d.ts +4 -1
  2. package/dist-lib/@types/backups.d.ts.map +1 -1
  3. package/dist-lib/@types/plans.d.ts +2 -0
  4. package/dist-lib/@types/plans.d.ts.map +1 -1
  5. package/dist-lib/@types/restores.d.ts +2 -0
  6. package/dist-lib/@types/restores.d.ts.map +1 -1
  7. package/dist-lib/components/Device/DeviceInfo/DeviceInfo.module.scss.js +26 -26
  8. package/dist-lib/components/Plan/BackupEvents/BackupEvents.d.ts.map +1 -1
  9. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +27 -27
  10. package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
  11. package/dist-lib/components/Plan/PlanBackups/PlanBackups.d.ts.map +1 -1
  12. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js +26 -26
  13. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js.map +1 -1
  14. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts.map +1 -1
  15. package/dist-lib/components/Plan/PlanForm/PlanForm.js +64 -80
  16. package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
  17. package/dist-lib/components/Plan/PlanHistory/PlanHistory.js +1 -1
  18. package/dist-lib/components/Plan/PlanHistory/PlanHistory.js.map +1 -1
  19. package/dist-lib/components/Plan/PlanPruneModal/PlanPruneModal.d.ts.map +1 -1
  20. package/dist-lib/components/Plan/PlanPruneModal/PlanPruneModal.js +62 -26
  21. package/dist-lib/components/Plan/PlanPruneModal/PlanPruneModal.js.map +1 -1
  22. package/dist-lib/components/Plan/PlanSettings/PlanPruneSettings.d.ts.map +1 -1
  23. package/dist-lib/components/Plan/PlanSettings/PlanPruneSettings.js +138 -62
  24. package/dist-lib/components/Plan/PlanSettings/PlanPruneSettings.js.map +1 -1
  25. package/dist-lib/components/Plan/PlanSettings/PlanSettings.module.scss.js +42 -42
  26. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.d.ts.map +1 -1
  27. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js +39 -30
  28. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js.map +1 -1
  29. package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
  30. package/dist-lib/components/Plan/PlanStats/PlanStats.js +25 -25
  31. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  32. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +1 -1
  33. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  34. package/dist-lib/components/common/Icon/Icon.js +12 -1
  35. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  36. package/dist-lib/components/common/StatusLabel/StatusLabel.d.ts +1 -1
  37. package/dist-lib/components/common/StatusLabel/StatusLabel.d.ts.map +1 -1
  38. package/dist-lib/components/common/StatusLabel/StatusLabel.js +17 -12
  39. package/dist-lib/components/common/StatusLabel/StatusLabel.js.map +1 -1
  40. package/dist-lib/components/common/form/IntervalField/IntervalField.d.ts.map +1 -1
  41. package/dist-lib/components/common/form/IntervalField/IntervalField.js +66 -46
  42. package/dist-lib/components/common/form/IntervalField/IntervalField.js.map +1 -1
  43. package/dist-lib/components/common/form/NumberInput/NumberInput.module.scss.js +4 -4
  44. package/dist-lib/components/common/form/StoragePicker/StoragePicker.d.ts.map +1 -1
  45. package/dist-lib/components/common/form/StoragePicker/StoragePicker.js +49 -47
  46. package/dist-lib/components/common/form/StoragePicker/StoragePicker.js.map +1 -1
  47. package/dist-lib/components/common/form/TagsInput/TagsInput.d.ts +2 -1
  48. package/dist-lib/components/common/form/TagsInput/TagsInput.d.ts.map +1 -1
  49. package/dist-lib/components/common/form/TagsInput/TagsInput.js +15 -15
  50. package/dist-lib/components/common/form/TagsInput/TagsInput.js.map +1 -1
  51. package/dist-lib/components/common/form/TimePicker/TimePicker.module.scss.js +13 -13
  52. package/dist-lib/hooks/usePlanSingleActions.js +7 -7
  53. package/dist-lib/hooks/usePlanSingleActions.js.map +1 -1
  54. package/dist-lib/styles/core-frontend.css +1 -1
  55. package/dist-lib/styles/global.scss +6 -0
  56. package/dist-lib/utils/constants.js +1 -1
  57. package/dist-lib/utils/constants.js.map +1 -1
  58. package/dist-lib/utils/helpers.d.ts +2 -0
  59. package/dist-lib/utils/helpers.d.ts.map +1 -1
  60. package/dist-lib/utils/helpers.js +55 -33
  61. package/dist-lib/utils/helpers.js.map +1 -1
  62. package/dist-lib/utils/plans.js +6 -6
  63. package/dist-lib/utils/plans.js.map +1 -1
  64. package/dist-lib/utils.js +34 -33
  65. package/package.json +1 -1
  66. package/src/@types/backups.ts +4 -1
  67. package/src/@types/plans.ts +2 -0
  68. package/src/@types/restores.ts +2 -0
  69. package/src/components/Device/DeviceInfo/DeviceInfo.module.scss +1 -0
  70. package/src/components/Plan/BackupEvents/BackupEvents.tsx +5 -3
  71. package/src/components/Plan/PlanBackups/PlanBackups.tsx +5 -2
  72. package/src/components/Plan/PlanForm/PlanForm.tsx +1 -19
  73. package/src/components/Plan/PlanHistory/PlanHistory.tsx +1 -1
  74. package/src/components/Plan/PlanPruneModal/PlanPruneModal.tsx +54 -11
  75. package/src/components/Plan/PlanSettings/PlanPruneSettings.tsx +145 -61
  76. package/src/components/Plan/PlanSettings/PlanSettings.module.scss +5 -0
  77. package/src/components/Plan/PlanSettings/PlanSourceSettings.tsx +15 -1
  78. package/src/components/Plan/PlanStats/PlanStats.module.scss +3 -0
  79. package/src/components/Plan/PlanStats/PlanStats.tsx +2 -8
  80. package/src/components/common/Icon/Icon.tsx +12 -0
  81. package/src/components/common/StatusLabel/StatusLabel.tsx +7 -1
  82. package/src/components/common/form/IntervalField/IntervalField.tsx +21 -1
  83. package/src/components/common/form/NumberInput/NumberInput.module.scss +1 -0
  84. package/src/components/common/form/StoragePicker/StoragePicker.tsx +8 -1
  85. package/src/components/common/form/TagsInput/TagsInput.tsx +3 -2
  86. package/src/components/common/form/TimePicker/TimePicker.module.scss +1 -0
  87. package/src/hooks/usePlanSingleActions.tsx +2 -2
  88. package/src/styles/global.scss +6 -0
  89. package/src/utils/constants.ts +1 -1
  90. package/src/utils/helpers.ts +25 -0
  91. package/src/utils/plans.ts +3 -3
@@ -1,26 +1,26 @@
1
1
  import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
- import a from "../../common/Icon/Icon.js";
3
- import { formatNumberToK as u, formatBytes as T } from "../../../utils/helpers.js";
4
- import S from "../PlanHistory/PlanHistory.js";
2
+ import s from "../../common/Icon/Icon.js";
3
+ import { formatIntervalDisplay as T, formatNumberToK as S, formatBytes as z } from "../../../utils/helpers.js";
4
+ import x from "../PlanHistory/PlanHistory.js";
5
5
  import t from "./PlanStats.module.scss.js";
6
- import z from "../PlanStorageInfo/PlanStorageInfo.js";
7
- const C = ({ plan: d, isSync: c, lastBackupItem: s }) => {
8
- const { sourceConfig: r, storage: g, storagePath: y, isActive: p, settings: f } = d, { interval: n } = f, m = (s == null ? void 0 : s.totalFiles) || 0, v = (s == null ? void 0 : s.totalSize) || 0, N = (l) => {
9
- let o = "";
10
- return l && l.includes && l.includes.length > 0 && (o += "<div><strong>Includes</strong></div>", o += l.includes.map((h) => `<div>${d.device.name} -> ${h}</div>`).join("")), l && l.excludes && l.excludes.length > 0 && (o += "<div><strong>Excludes</strong></div>", o += l.excludes.map((h) => `<div>${h}</div>`).join("")), o;
6
+ import u from "../PlanStorageInfo/PlanStorageInfo.js";
7
+ const A = ({ plan: o, isSync: r, lastBackupItem: n }) => {
8
+ const { sourceConfig: a, storage: m, storagePath: g, isActive: h, settings: f } = o, { interval: N } = f, p = (n == null ? void 0 : n.totalFiles) || 0, v = (n == null ? void 0 : n.totalSize) || 0, y = (l) => {
9
+ let d = "";
10
+ return l && l.includes && l.includes.length > 0 && (d += "<div><strong>Includes</strong></div>", d += l.includes.map((c) => `<div>${o.device.name} -> ${c}</div>`).join("")), l && l.excludes && l.excludes.length > 0 && (d += "<div><strong>Excludes</strong></div>", d += l.excludes.map((c) => `<div>${c}</div>`).join("")), d;
11
11
  };
12
12
  return /* @__PURE__ */ i("div", { className: t.planStats, children: [
13
13
  /* @__PURE__ */ i("div", { className: t.sources, children: [
14
14
  /* @__PURE__ */ i("div", { className: t.widgetTitle, children: [
15
- /* @__PURE__ */ e(a, { type: "backup", size: 12 }),
15
+ /* @__PURE__ */ e(s, { type: "backup", size: 12 }),
16
16
  " ",
17
- c ? "Syncing" : "Backing Up"
17
+ r ? "Syncing" : "Backing Up"
18
18
  ] }),
19
19
  /* @__PURE__ */ i("div", { className: t.sourceContent, children: [
20
- /* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": N(r), children: [
21
- /* @__PURE__ */ e(a, { type: "folders", size: 18 }),
20
+ /* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": y(a), children: [
21
+ /* @__PURE__ */ e(s, { type: "folders", size: 18 }),
22
22
  /* @__PURE__ */ i("span", { children: [
23
- r == null ? void 0 : r.includes.length,
23
+ a == null ? void 0 : a.includes.length,
24
24
  " Sources"
25
25
  ] })
26
26
  ] }),
@@ -29,52 +29,52 @@ const C = ({ plan: d, isSync: c, lastBackupItem: s }) => {
29
29
  {
30
30
  "data-tooltip-id": "htmlToolTip",
31
31
  "data-tooltip-place": "top",
32
- "data-tooltip-html": p ? c ? `Syncing changes every ${n.minutes} minutes` : `Copying changes ${["hours", "minutes", "days"].includes(n.type) ? n[n.type] + n.type : n.type}` : "Plan is Not Active",
32
+ "data-tooltip-html": h ? `${r ? "Syncing" : "Copying"} changes ${T(N)}` : "Plan is Not Active",
33
33
  children: [
34
- /* @__PURE__ */ e(a, { type: p ? c ? "reload" : "copy" : "pause", size: 16 }),
34
+ /* @__PURE__ */ e(s, { type: h ? r ? "reload" : "copy" : "pause", size: 16 }),
35
35
  /* @__PURE__ */ e("div", { className: t.sourceArrow, children: "→" })
36
36
  ]
37
37
  }
38
38
  ),
39
39
  /* @__PURE__ */ e(
40
- z,
40
+ u,
41
41
  {
42
42
  disableTooltip: !1,
43
43
  inline: !1,
44
- replicationSettings: d.settings.replication,
45
- storage: g,
46
- storagePath: y
44
+ replicationSettings: o.settings.replication,
45
+ storage: m,
46
+ storagePath: g
47
47
  }
48
48
  )
49
49
  ] })
50
50
  ] }),
51
51
  /* @__PURE__ */ i("div", { className: t.snapshots, children: [
52
52
  /* @__PURE__ */ i("div", { className: t.widgetTitle, children: [
53
- /* @__PURE__ */ e(a, { type: "folders", size: 12 }),
53
+ /* @__PURE__ */ e(s, { type: "folders", size: 12 }),
54
54
  " Source Stats"
55
55
  ] }),
56
56
  /* @__PURE__ */ i("div", { className: t.snapshotsContent, children: [
57
57
  /* @__PURE__ */ i("div", { children: [
58
- /* @__PURE__ */ e("span", { children: m ? u(m) : 0 }),
58
+ /* @__PURE__ */ e("span", { children: p ? S(p) : 0 }),
59
59
  /* @__PURE__ */ e("span", { children: "Files" })
60
60
  ] }),
61
61
  /* @__PURE__ */ e("div", {}),
62
62
  /* @__PURE__ */ i("div", { children: [
63
- /* @__PURE__ */ e("span", { children: v ? T(v) : "0.00B" }),
63
+ /* @__PURE__ */ e("span", { children: v ? z(v) : "0.00B" }),
64
64
  /* @__PURE__ */ e("span", { children: "Size" })
65
65
  ] })
66
66
  ] })
67
67
  ] }),
68
68
  /* @__PURE__ */ i("div", { className: t.health, children: [
69
69
  /* @__PURE__ */ i("div", { className: t.widgetTitle, children: [
70
- /* @__PURE__ */ e(a, { type: "speed", size: 12 }),
70
+ /* @__PURE__ */ e(s, { type: "speed", size: 12 }),
71
71
  " Health"
72
72
  ] }),
73
- /* @__PURE__ */ e("div", { className: t.healthContent, children: /* @__PURE__ */ e(S, { planId: d.id, history: d.backups, itemsCount: 90 }) })
73
+ /* @__PURE__ */ e("div", { className: t.healthContent, children: /* @__PURE__ */ e(x, { planId: o.id, history: o.backups, itemsCount: 90 }) })
74
74
  ] })
75
75
  ] });
76
76
  };
77
77
  export {
78
- C as default
78
+ A as default
79
79
  };
80
80
  //# sourceMappingURL=PlanStats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\nimport PlanStorageInfo from '../PlanStorageInfo/PlanStorageInfo';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${plan.device.name} -> ${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <PlanStorageInfo\r\n disableTooltip={false}\r\n inline={false}\r\n replicationSettings={plan.settings.replication}\r\n storage={storage}\r\n storagePath={storagePath}\r\n />\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","p","jsxs","classes","jsx","Icon","PlanStorageInfo","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
1
+ {"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK, formatIntervalDisplay } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\nimport PlanStorageInfo from '../PlanStorageInfo/PlanStorageInfo';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${plan.device.name} -> ${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={isActive ? `${isSync ? 'Syncing' : 'Copying'} changes ${formatIntervalDisplay(interval)}` : 'Plan is Not Active'}\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <PlanStorageInfo\r\n disableTooltip={false}\r\n inline={false}\r\n replicationSettings={plan.settings.replication}\r\n storage={storage}\r\n storagePath={storagePath}\r\n />\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","p","jsxs","classes","jsx","Icon","formatIntervalDisplay","PlanStorageInfo","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const s = "_planStats_rYcAd", t = "_widgetTitle_PJX4o", o = "_sources_KFvuD", n = "_snapshots_s9ThB", e = "_health_Tux66", c = "_sourceContent_ioGQg", a = "_sourceArrow_VI4d7", r = "_snapshotsContent_ZuAcY", _ = {
1
+ const s = "_planStats_Q8GaX", t = "_widgetTitle_2cQ1i", o = "_sources_Ddf4g", n = "_snapshots_LJ3RW", e = "_health_BlVH1", c = "_sourceContent_X5Yf9", a = "_sourceArrow_XqRux", r = "_snapshotsContent_juzd3", _ = {
2
2
  planStats: s,
3
3
  widgetTitle: t,
4
4
  sources: o,
@@ -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,4CAw+C7F,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,4CAo/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: t = "", classes: d = "" }) => /* @__PURE__ */ e("span", { className: `icon ${d}`, title: t, children: [
2
+ const r = ({ type: c, color: l = "currentColor", size: h = 16, title: d = "", classes: t = "" }) => /* @__PURE__ */ e("span", { className: `icon ${t}`, title: d, children: [
3
3
  c === "logo" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 120 120", children: /* @__PURE__ */ a(
4
4
  "path",
5
5
  {
@@ -683,6 +683,17 @@ const r = ({ type: c, color: l = "currentColor", size: h = 16, title: t = "", cl
683
683
  }
684
684
  )
685
685
  ] }) }),
686
+ c === "folder-exclude" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 24 24", children: /* @__PURE__ */ a(
687
+ "path",
688
+ {
689
+ fill: "none",
690
+ stroke: l,
691
+ strokeLinecap: "round",
692
+ strokeLinejoin: "round",
693
+ strokeWidth: 2,
694
+ d: "M13.5 19H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h4l3 3h7a2 2 0 0 1 2 2v4m1 9l-5-5m0 5l5-5"
695
+ }
696
+ ) }),
686
697
  c === "folders" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 24 24", children: /* @__PURE__ */ e("g", { fill: "none", stroke: l, strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, children: [
687
698
  /* @__PURE__ */ a("path", { d: "M9 3h3l2 2h5a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2" }),
688
699
  /* @__PURE__ */ a("path", { d: "M17 16v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h2" })