strapi-plugin-magic-mark 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/_chunks/{App-C5UU0yUr.js → App-B6x0aSMN.js} +97 -55
- package/dist/_chunks/{App-Dt-v39BQ.mjs → App-BCliVBSB.mjs} +98 -56
- package/dist/_chunks/UpgradePage-Bm0SkuCi.js +353 -0
- package/dist/_chunks/UpgradePage-GoocQ4av.mjs +351 -0
- package/dist/_chunks/de-Cs9dd3Mr.js +138 -0
- package/dist/_chunks/de-DOVki5VS.mjs +138 -0
- package/dist/_chunks/en-CE3r46Y2.js +138 -0
- package/dist/_chunks/en-Cf5-O03L.mjs +138 -0
- package/dist/_chunks/es-Ba6JcPIm.mjs +138 -0
- package/dist/_chunks/es-D4AOyJYJ.js +138 -0
- package/dist/_chunks/fr-CWSfoA8i.js +138 -0
- package/dist/_chunks/fr-CrMBXR3c.mjs +138 -0
- package/dist/_chunks/{index-B-Cc7QNW.mjs → index-B_EiWnCU.mjs} +13 -4
- package/dist/_chunks/index-D5-84IjV.js +3365 -0
- package/dist/_chunks/{index-B11QBtag.js → index-DA7Jswi4.js} +12 -3
- package/dist/_chunks/index-DdTUt6EH.mjs +3361 -0
- package/dist/_chunks/pt-BXxZ1Zym.mjs +138 -0
- package/dist/_chunks/pt-DW_6r_mP.js +138 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/QueryBuilder.d.ts +12 -1
- package/dist/admin/src/components/RelationFieldSelector.d.ts +24 -0
- package/dist/admin/src/components/SimpleAdvancedFilterModal.d.ts +2 -0
- package/dist/admin/src/components/UpgradePrompt.d.ts +22 -0
- package/dist/admin/src/hooks/useFeatureGate.d.ts +88 -0
- package/dist/admin/src/hooks/useRelationSchema.d.ts +27 -0
- package/dist/admin/src/pages/UpgradePage.d.ts +6 -0
- package/dist/admin/src/utils/queryGenerator.d.ts +4 -0
- package/dist/admin/src/utils/queryToStructure.d.ts +8 -1
- package/dist/admin/src/utils/theme.d.ts +95 -0
- package/dist/server/index.js +212 -9
- package/dist/server/index.mjs +212 -9
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/license.d.ts +4 -0
- package/dist/server/src/index.d.ts +24 -1
- package/dist/server/src/services/index.d.ts +23 -1
- package/dist/server/src/services/license-guard.d.ts +48 -2
- package/package.json +1 -1
- package/dist/_chunks/de-Bag-366k.mjs +0 -49
- package/dist/_chunks/de-Dic_hhjg.js +0 -49
- package/dist/_chunks/en-C5BvHqNo.js +0 -54
- package/dist/_chunks/en-zokEerzt.mjs +0 -54
- package/dist/_chunks/es-BlSQpU1z.js +0 -54
- package/dist/_chunks/es-Br1ucP3h.mjs +0 -54
- package/dist/_chunks/fr-BHciYPYG.js +0 -54
- package/dist/_chunks/fr-Dzo3kt_q.mjs +0 -54
- package/dist/_chunks/index-BAmZV8aX.mjs +0 -2020
- package/dist/_chunks/index-RuDV4dTy.js +0 -2024
- package/dist/_chunks/pt-DQoGyzyD.mjs +0 -54
- package/dist/_chunks/pt-Dawo5aUA.js +0 -54
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ const styled = require("styled-components");
|
|
|
8
8
|
const designSystem = require("@strapi/design-system");
|
|
9
9
|
const icons = require("@strapi/icons");
|
|
10
10
|
const admin = require("@strapi/strapi/admin");
|
|
11
|
-
const index = require("./index-
|
|
11
|
+
const index = require("./index-D5-84IjV.js");
|
|
12
12
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
13
13
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
14
14
|
const theme = {
|
|
@@ -33,6 +33,11 @@ const theme = {
|
|
|
33
33
|
500: "#F59E0B",
|
|
34
34
|
600: "#D97706"
|
|
35
35
|
},
|
|
36
|
+
danger: {
|
|
37
|
+
100: "#FEE2E2",
|
|
38
|
+
500: "#EF4444",
|
|
39
|
+
600: "#DC2626"
|
|
40
|
+
},
|
|
36
41
|
neutral: {
|
|
37
42
|
0: "#FFFFFF",
|
|
38
43
|
50: "#F9FAFB",
|
|
@@ -381,6 +386,7 @@ const HomePageModern = () => {
|
|
|
381
386
|
const { formatMessage } = reactIntl.useIntl();
|
|
382
387
|
const navigate = reactRouterDom.useNavigate();
|
|
383
388
|
const { get, post, del } = admin.useFetchClient();
|
|
389
|
+
index.useLicenseInfo();
|
|
384
390
|
const [currentUser, setCurrentUser] = React.useState(null);
|
|
385
391
|
const [bookmarks, setBookmarks] = React.useState([]);
|
|
386
392
|
const [loading, setLoading] = React.useState(false);
|
|
@@ -391,11 +397,19 @@ const HomePageModern = () => {
|
|
|
391
397
|
const [entriesPerPage, setEntriesPerPage] = React.useState("10");
|
|
392
398
|
const [availableRoles, setAvailableRoles] = React.useState([]);
|
|
393
399
|
const [availableUsers, setAvailableUsers] = React.useState([]);
|
|
400
|
+
const [licenseLimits, setLicenseLimits] = React.useState({
|
|
401
|
+
maxBookmarks: 10,
|
|
402
|
+
currentBookmarks: 0,
|
|
403
|
+
canCreate: true,
|
|
404
|
+
tier: "free",
|
|
405
|
+
features: {}
|
|
406
|
+
});
|
|
394
407
|
React.useEffect(() => {
|
|
395
408
|
fetchBookmarks();
|
|
396
409
|
fetchCurrentUser();
|
|
397
410
|
fetchRoles();
|
|
398
411
|
fetchUsers();
|
|
412
|
+
fetchLicenseLimits();
|
|
399
413
|
}, []);
|
|
400
414
|
const fetchRoles = async () => {
|
|
401
415
|
try {
|
|
@@ -439,6 +453,17 @@ const HomePageModern = () => {
|
|
|
439
453
|
console.error("[Magic-Mark] Error fetching current user:", error);
|
|
440
454
|
}
|
|
441
455
|
};
|
|
456
|
+
const fetchLicenseLimits = async () => {
|
|
457
|
+
try {
|
|
458
|
+
const response = await get(`/${index.pluginId}/license/limits`);
|
|
459
|
+
if (response.data?.success) {
|
|
460
|
+
setLicenseLimits(response.data.data);
|
|
461
|
+
console.log("[Magic-Mark] License limits loaded:", response.data.data);
|
|
462
|
+
}
|
|
463
|
+
} catch (error) {
|
|
464
|
+
console.error("[Magic-Mark] Error fetching license limits:", error);
|
|
465
|
+
}
|
|
466
|
+
};
|
|
442
467
|
const fetchBookmarks = async () => {
|
|
443
468
|
setLoading(true);
|
|
444
469
|
try {
|
|
@@ -490,6 +515,7 @@ const HomePageModern = () => {
|
|
|
490
515
|
setShowModal(false);
|
|
491
516
|
setEditingBookmark(null);
|
|
492
517
|
fetchBookmarks();
|
|
518
|
+
fetchLicenseLimits();
|
|
493
519
|
};
|
|
494
520
|
const handleBookmarkClick = (bookmark) => {
|
|
495
521
|
if (bookmark.path) {
|
|
@@ -529,52 +555,64 @@ const HomePageModern = () => {
|
|
|
529
555
|
/* @__PURE__ */ jsxRuntime.jsxs(StatCard, { $delay: "0.2s", $color: theme.colors.success[500], children: [
|
|
530
556
|
/* @__PURE__ */ jsxRuntime.jsx(StatIcon, { className: "stat-icon", $bg: theme.colors.success[100], $color: theme.colors.success[600], children: /* @__PURE__ */ jsxRuntime.jsx(icons.Sparkle, {}) }),
|
|
531
557
|
/* @__PURE__ */ jsxRuntime.jsx(StatValue, { className: "stat-value", children: sharedWithMe.length }),
|
|
532
|
-
/* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Shared with Me" })
|
|
558
|
+
/* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: formatMessage({ id: `${index.pluginId}.stats.shared`, defaultMessage: "Shared with Me" }) })
|
|
533
559
|
] }),
|
|
534
560
|
/* @__PURE__ */ jsxRuntime.jsxs(StatCard, { $delay: "0.3s", $color: theme.colors.warning[500], children: [
|
|
535
561
|
/* @__PURE__ */ jsxRuntime.jsx(StatIcon, { className: "stat-icon", $bg: theme.colors.warning[100], $color: theme.colors.warning[600], children: /* @__PURE__ */ jsxRuntime.jsx(icons.Pin, {}) }),
|
|
536
562
|
/* @__PURE__ */ jsxRuntime.jsx(StatValue, { className: "stat-value", children: pinnedBookmarks.length }),
|
|
537
|
-
/* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Pinned" })
|
|
563
|
+
/* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: formatMessage({ id: `${index.pluginId}.stats.pinned`, defaultMessage: "Pinned" }) })
|
|
538
564
|
] }),
|
|
539
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
565
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
566
|
+
StatCard,
|
|
567
|
+
{
|
|
568
|
+
$delay: "0.4s",
|
|
569
|
+
$color: licenseLimits.canCreate ? theme.colors.neutral[600] : theme.colors.danger[500],
|
|
570
|
+
onClick: () => !licenseLimits.canCreate && navigate(`/settings/${index.pluginId}/upgrade`),
|
|
571
|
+
style: { cursor: !licenseLimits.canCreate ? "pointer" : "default" },
|
|
572
|
+
children: [
|
|
573
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
574
|
+
StatIcon,
|
|
575
|
+
{
|
|
576
|
+
className: "stat-icon",
|
|
577
|
+
$bg: licenseLimits.canCreate ? theme.colors.neutral[100] : theme.colors.danger[100],
|
|
578
|
+
$color: licenseLimits.canCreate ? theme.colors.neutral[600] : theme.colors.danger[600],
|
|
579
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons.Link, {})
|
|
580
|
+
}
|
|
581
|
+
),
|
|
582
|
+
/* @__PURE__ */ jsxRuntime.jsxs(StatValue, { className: "stat-value", children: [
|
|
583
|
+
licenseLimits.currentBookmarks,
|
|
584
|
+
"/",
|
|
585
|
+
licenseLimits.maxBookmarks === -1 ? "∞" : licenseLimits.maxBookmarks
|
|
586
|
+
] }),
|
|
587
|
+
/* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: licenseLimits.canCreate ? formatMessage({ id: `${index.pluginId}.stats.limit`, defaultMessage: "Bookmark Limit" }) : formatMessage({ id: `${index.pluginId}.stats.limitReached`, defaultMessage: "Limit Reached - Upgrade" }) })
|
|
588
|
+
]
|
|
589
|
+
}
|
|
590
|
+
)
|
|
544
591
|
] }),
|
|
545
|
-
loading && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", padding: 8, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Loader, { children: "Loading bookmarks..." }) }),
|
|
592
|
+
loading && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", padding: 8, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Loader, { children: formatMessage({ id: `${index.pluginId}.loading`, defaultMessage: "Loading bookmarks..." }) }) }),
|
|
546
593
|
!loading && sharedWithMe.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginBottom: 4, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: {
|
|
547
594
|
padding: theme.spacing.lg,
|
|
548
595
|
background: theme.colors.primary[50],
|
|
549
596
|
borderRadius: theme.borderRadius.lg,
|
|
550
597
|
border: `1px solid ${theme.colors.primary[200]}`
|
|
551
598
|
}, children: [
|
|
552
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "beta", style: { marginBottom: theme.spacing.sm, color: theme.colors.primary[700] }, children: "🤝 Shared with You" }),
|
|
553
|
-
/* @__PURE__ */ jsxRuntime.
|
|
554
|
-
sharedWithMe.length,
|
|
555
|
-
" bookmark",
|
|
556
|
-
sharedWithMe.length > 1 ? "s" : "",
|
|
557
|
-
" have been shared with you"
|
|
558
|
-
] }),
|
|
599
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "beta", style: { marginBottom: theme.spacing.sm, color: theme.colors.primary[700] }, children: formatMessage({ id: `${index.pluginId}.shared.title`, defaultMessage: "🤝 Shared with You" }) }),
|
|
600
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", style: { color: theme.colors.primary[600] }, children: sharedWithMe.length > 1 ? formatMessage({ id: `${index.pluginId}.shared.countPlural`, defaultMessage: "{count} bookmarks have been shared with you" }, { count: sharedWithMe.length }) : formatMessage({ id: `${index.pluginId}.shared.count`, defaultMessage: "{count} bookmark has been shared with you" }, { count: sharedWithMe.length }) }),
|
|
559
601
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginTop: 2, children: [...new Map(sharedWithMe.map((b) => [b.createdBy?.id, b.createdBy])).values()].map((creator) => {
|
|
560
602
|
const creatorBookmarks = sharedWithMe.filter((b) => b.createdBy?.id === creator?.id);
|
|
561
603
|
return creator && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", marginTop: 1, children: [
|
|
562
604
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", fontWeight: "semiBold", children: [
|
|
563
|
-
creator.firstname || "Unknown",
|
|
605
|
+
creator.firstname || formatMessage({ id: `${index.pluginId}.bookmark.unknown`, defaultMessage: "Unknown" }),
|
|
564
606
|
" ",
|
|
565
607
|
creator.lastname || "",
|
|
566
608
|
":"
|
|
567
609
|
] }),
|
|
568
|
-
/* @__PURE__ */ jsxRuntime.
|
|
569
|
-
creatorBookmarks.length,
|
|
570
|
-
" bookmark",
|
|
571
|
-
creatorBookmarks.length > 1 ? "s" : ""
|
|
572
|
-
] })
|
|
610
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", marginLeft: 1, children: creatorBookmarks.length > 1 ? formatMessage({ id: `${index.pluginId}.shared.byCreatorPlural`, defaultMessage: "{count} bookmarks" }, { count: creatorBookmarks.length }) : formatMessage({ id: `${index.pluginId}.shared.byCreator`, defaultMessage: "{count} bookmark" }, { count: creatorBookmarks.length }) })
|
|
573
611
|
] }, creator.id);
|
|
574
612
|
}) })
|
|
575
613
|
] }) }),
|
|
576
614
|
!loading && bookmarks.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
|
|
577
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { style: { marginBottom: theme.spacing.md }, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", style: { marginBottom: theme.spacing.md, color: theme.colors.neutral[700] }, children: "🔖 All Available Bookmarks" }) }),
|
|
615
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { style: { marginBottom: theme.spacing.md }, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", style: { marginBottom: theme.spacing.md, color: theme.colors.neutral[700] }, children: formatMessage({ id: `${index.pluginId}.allBookmarks.title`, defaultMessage: "🔖 All Available Bookmarks" }) }) }),
|
|
578
616
|
/* @__PURE__ */ jsxRuntime.jsxs(FilterBar, { children: [
|
|
579
617
|
/* @__PURE__ */ jsxRuntime.jsxs(SearchInputWrapper, { style: { flex: 1 }, children: [
|
|
580
618
|
/* @__PURE__ */ jsxRuntime.jsx(SearchIcon, {}),
|
|
@@ -583,7 +621,7 @@ const HomePageModern = () => {
|
|
|
583
621
|
{
|
|
584
622
|
value: searchQuery,
|
|
585
623
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
586
|
-
placeholder: "Search by name, description...",
|
|
624
|
+
placeholder: formatMessage({ id: `${index.pluginId}.search.placeholder`, defaultMessage: "Search by name, description..." }),
|
|
587
625
|
type: "text"
|
|
588
626
|
}
|
|
589
627
|
)
|
|
@@ -593,12 +631,12 @@ const HomePageModern = () => {
|
|
|
593
631
|
{
|
|
594
632
|
value: filterType,
|
|
595
633
|
onChange: setFilterType,
|
|
596
|
-
placeholder: "Filter",
|
|
634
|
+
placeholder: formatMessage({ id: `${index.pluginId}.filter.placeholder`, defaultMessage: "Filter" }),
|
|
597
635
|
size: "S",
|
|
598
636
|
children: [
|
|
599
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "all", children: "Show All" }),
|
|
600
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "pinned", children: "Pinned Only" }),
|
|
601
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "unpinned", children: "Unpinned Only" })
|
|
637
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "all", children: formatMessage({ id: `${index.pluginId}.filter.all`, defaultMessage: "Show All" }) }),
|
|
638
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "pinned", children: formatMessage({ id: `${index.pluginId}.filter.pinned`, defaultMessage: "Pinned Only" }) }),
|
|
639
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "unpinned", children: formatMessage({ id: `${index.pluginId}.filter.unpinned`, defaultMessage: "Unpinned Only" }) })
|
|
602
640
|
]
|
|
603
641
|
}
|
|
604
642
|
) }),
|
|
@@ -607,13 +645,13 @@ const HomePageModern = () => {
|
|
|
607
645
|
{
|
|
608
646
|
value: entriesPerPage,
|
|
609
647
|
onChange: setEntriesPerPage,
|
|
610
|
-
placeholder: "Entries",
|
|
648
|
+
placeholder: formatMessage({ id: `${index.pluginId}.entries.placeholder`, defaultMessage: "Entries" }),
|
|
611
649
|
size: "S",
|
|
612
650
|
children: [
|
|
613
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "10", children: "10 entries" }),
|
|
614
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "25", children: "25 entries" }),
|
|
615
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "50", children: "50 entries" }),
|
|
616
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "100", children: "100 entries" })
|
|
651
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "10", children: formatMessage({ id: `${index.pluginId}.entries.10`, defaultMessage: "10 entries" }) }),
|
|
652
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "25", children: formatMessage({ id: `${index.pluginId}.entries.25`, defaultMessage: "25 entries" }) }),
|
|
653
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "50", children: formatMessage({ id: `${index.pluginId}.entries.50`, defaultMessage: "50 entries" }) }),
|
|
654
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "100", children: formatMessage({ id: `${index.pluginId}.entries.100`, defaultMessage: "100 entries" }) })
|
|
617
655
|
]
|
|
618
656
|
}
|
|
619
657
|
) })
|
|
@@ -652,11 +690,17 @@ const HomePageModern = () => {
|
|
|
652
690
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 0, children: [
|
|
653
691
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "semiBold", ellipsis: true, style: { fontSize: "1.125rem", lineHeight: "1.4" }, children: bookmark.name }),
|
|
654
692
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 1, alignItems: "center", children: [
|
|
655
|
-
bookmark.createdBy?.id && currentUser?.id && bookmark.createdBy.id === currentUser.id ? /* @__PURE__ */ jsxRuntime.
|
|
656
|
-
"•
|
|
657
|
-
bookmark.
|
|
693
|
+
bookmark.createdBy?.id && currentUser?.id && bookmark.createdBy.id === currentUser.id ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.primary[600], fontWeight: 500 }, children: [
|
|
694
|
+
"• ",
|
|
695
|
+
formatMessage({ id: `${index.pluginId}.bookmark.myBookmark`, defaultMessage: "My Bookmark" })
|
|
696
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.neutral[600] }, children: [
|
|
697
|
+
"• ",
|
|
698
|
+
formatMessage({ id: `${index.pluginId}.bookmark.sharedBy`, defaultMessage: "Shared by {name}" }, { name: bookmark.createdBy?.firstname || formatMessage({ id: `${index.pluginId}.bookmark.unknown`, defaultMessage: "Unknown" }) })
|
|
699
|
+
] }),
|
|
700
|
+
bookmark.isPublic && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.success[600], marginLeft: "8px" }, children: [
|
|
701
|
+
"• ",
|
|
702
|
+
formatMessage({ id: `${index.pluginId}.bookmark.public`, defaultMessage: "Public" })
|
|
658
703
|
] }),
|
|
659
|
-
bookmark.isPublic && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.success[600], marginLeft: "8px" }, children: "• Public" }),
|
|
660
704
|
bookmark.sharedWithRoles && bookmark.sharedWithRoles.length > 0 && !bookmark.isPublic && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.warning[600], marginLeft: "8px" }, children: [
|
|
661
705
|
"• Roles: ",
|
|
662
706
|
bookmark.sharedWithRoles.map((roleId) => {
|
|
@@ -772,7 +816,7 @@ const HomePageModern = () => {
|
|
|
772
816
|
}
|
|
773
817
|
}
|
|
774
818
|
),
|
|
775
|
-
/* @__PURE__ */ jsxRuntime.jsx(FloatingEmoji, { children: "
|
|
819
|
+
/* @__PURE__ */ jsxRuntime.jsx(FloatingEmoji, { children: /* @__PURE__ */ jsxRuntime.jsx(icons.Sparkle, { fill: "warning500" }) }),
|
|
776
820
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "center", gap: 6, style: { position: "relative", zIndex: 1 }, children: [
|
|
777
821
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
778
822
|
designSystem.Box,
|
|
@@ -800,10 +844,10 @@ const HomePageModern = () => {
|
|
|
800
844
|
color: theme.colors.neutral[800],
|
|
801
845
|
marginBottom: "8px"
|
|
802
846
|
},
|
|
803
|
-
children: "No bookmarks yet"
|
|
847
|
+
children: formatMessage({ id: `${index.pluginId}.empty.title`, defaultMessage: "No bookmarks yet" })
|
|
804
848
|
}
|
|
805
849
|
),
|
|
806
|
-
/* @__PURE__ */ jsxRuntime.
|
|
850
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
807
851
|
designSystem.Typography,
|
|
808
852
|
{
|
|
809
853
|
variant: "omega",
|
|
@@ -813,11 +857,7 @@ const HomePageModern = () => {
|
|
|
813
857
|
maxWidth: "500px",
|
|
814
858
|
lineHeight: "1.6"
|
|
815
859
|
},
|
|
816
|
-
children:
|
|
817
|
-
"Navigate to any Content Manager view, apply filters, and click ",
|
|
818
|
-
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: '"Save Bookmark"' }),
|
|
819
|
-
" to create quick access shortcuts"
|
|
820
|
-
]
|
|
860
|
+
children: formatMessage({ id: `${index.pluginId}.empty.description`, defaultMessage: 'Navigate to any Content Manager view, apply filters, and click "Save Bookmark" to create quick access shortcuts' })
|
|
821
861
|
}
|
|
822
862
|
)
|
|
823
863
|
] })
|
|
@@ -1138,7 +1178,7 @@ const LicenseGuard = ({ children }) => {
|
|
|
1138
1178
|
marginBottom: "12px",
|
|
1139
1179
|
display: "block"
|
|
1140
1180
|
},
|
|
1141
|
-
children: "
|
|
1181
|
+
children: "Activate MagicMark Plugin"
|
|
1142
1182
|
}
|
|
1143
1183
|
),
|
|
1144
1184
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1196,7 +1236,7 @@ const LicenseGuard = ({ children }) => {
|
|
|
1196
1236
|
border: "2px solid #BAE6FD",
|
|
1197
1237
|
width: "100%"
|
|
1198
1238
|
},
|
|
1199
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", style: { fontSize: "13px", lineHeight: "1.6" }, children: useExistingKey ? "
|
|
1239
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", style: { fontSize: "13px", lineHeight: "1.6" }, children: useExistingKey ? "Enter your email and license key to activate." : useAutoCreate && adminUser && adminUser.email ? `Click "Activate" to auto-create a license with your account (${adminUser.email})` : useAutoCreate ? 'Click "Activate" to auto-create a license with your admin account' : "A license will be created with the details below." })
|
|
1200
1240
|
}
|
|
1201
1241
|
),
|
|
1202
1242
|
useExistingKey ? (
|
|
@@ -1262,15 +1302,17 @@ const LicenseGuard = ({ children }) => {
|
|
|
1262
1302
|
},
|
|
1263
1303
|
children: [
|
|
1264
1304
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "bold", style: { marginBottom: "12px", display: "block" }, children: "Ready to activate with your account:" }),
|
|
1265
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.
|
|
1266
|
-
"
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1305
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", gap: 2, style: { marginBottom: "4px" }, children: [
|
|
1306
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.User, { fill: "neutral700", width: "14px", height: "14px" }),
|
|
1307
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", children: [
|
|
1308
|
+
adminUser.firstname || "Admin",
|
|
1309
|
+
" ",
|
|
1310
|
+
adminUser.lastname || "User"
|
|
1311
|
+
] })
|
|
1270
1312
|
] }),
|
|
1271
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.
|
|
1272
|
-
"
|
|
1273
|
-
adminUser.email || "Loading..."
|
|
1313
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", gap: 2, children: [
|
|
1314
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Mail, { fill: "neutral600", width: "14px", height: "14px" }),
|
|
1315
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: adminUser.email || "Loading..." })
|
|
1274
1316
|
] })
|
|
1275
1317
|
]
|
|
1276
1318
|
}
|
|
@@ -4,9 +4,9 @@ import { useIntl } from "react-intl";
|
|
|
4
4
|
import { useNavigate } from "react-router-dom";
|
|
5
5
|
import styled, { keyframes } from "styled-components";
|
|
6
6
|
import { Flex, Loader, Box, Typography, SingleSelect, SingleSelectOption, Thead, Tr, Th, VisuallyHidden, Tbody, Td, Button, Table, TextInput } from "@strapi/design-system";
|
|
7
|
-
import { Book, User, Sparkle, Pin, Link, Eye, Pencil, Trash, Search, Cross, Key, Check } from "@strapi/icons";
|
|
7
|
+
import { Book, User, Sparkle, Pin, Link, Eye, Pencil, Trash, Search, Cross, Key, Mail, Check } from "@strapi/icons";
|
|
8
8
|
import { useFetchClient, useNotification } from "@strapi/strapi/admin";
|
|
9
|
-
import { p as pluginId, C as CreateEditModal } from "./index-
|
|
9
|
+
import { u as useLicenseInfo, p as pluginId, C as CreateEditModal } from "./index-DdTUt6EH.mjs";
|
|
10
10
|
const theme = {
|
|
11
11
|
colors: {
|
|
12
12
|
primary: {
|
|
@@ -29,6 +29,11 @@ const theme = {
|
|
|
29
29
|
500: "#F59E0B",
|
|
30
30
|
600: "#D97706"
|
|
31
31
|
},
|
|
32
|
+
danger: {
|
|
33
|
+
100: "#FEE2E2",
|
|
34
|
+
500: "#EF4444",
|
|
35
|
+
600: "#DC2626"
|
|
36
|
+
},
|
|
32
37
|
neutral: {
|
|
33
38
|
0: "#FFFFFF",
|
|
34
39
|
50: "#F9FAFB",
|
|
@@ -377,6 +382,7 @@ const HomePageModern = () => {
|
|
|
377
382
|
const { formatMessage } = useIntl();
|
|
378
383
|
const navigate = useNavigate();
|
|
379
384
|
const { get, post, del } = useFetchClient();
|
|
385
|
+
useLicenseInfo();
|
|
380
386
|
const [currentUser, setCurrentUser] = useState(null);
|
|
381
387
|
const [bookmarks, setBookmarks] = useState([]);
|
|
382
388
|
const [loading, setLoading] = useState(false);
|
|
@@ -387,11 +393,19 @@ const HomePageModern = () => {
|
|
|
387
393
|
const [entriesPerPage, setEntriesPerPage] = useState("10");
|
|
388
394
|
const [availableRoles, setAvailableRoles] = useState([]);
|
|
389
395
|
const [availableUsers, setAvailableUsers] = useState([]);
|
|
396
|
+
const [licenseLimits, setLicenseLimits] = useState({
|
|
397
|
+
maxBookmarks: 10,
|
|
398
|
+
currentBookmarks: 0,
|
|
399
|
+
canCreate: true,
|
|
400
|
+
tier: "free",
|
|
401
|
+
features: {}
|
|
402
|
+
});
|
|
390
403
|
useEffect(() => {
|
|
391
404
|
fetchBookmarks();
|
|
392
405
|
fetchCurrentUser();
|
|
393
406
|
fetchRoles();
|
|
394
407
|
fetchUsers();
|
|
408
|
+
fetchLicenseLimits();
|
|
395
409
|
}, []);
|
|
396
410
|
const fetchRoles = async () => {
|
|
397
411
|
try {
|
|
@@ -435,6 +449,17 @@ const HomePageModern = () => {
|
|
|
435
449
|
console.error("[Magic-Mark] Error fetching current user:", error);
|
|
436
450
|
}
|
|
437
451
|
};
|
|
452
|
+
const fetchLicenseLimits = async () => {
|
|
453
|
+
try {
|
|
454
|
+
const response = await get(`/${pluginId}/license/limits`);
|
|
455
|
+
if (response.data?.success) {
|
|
456
|
+
setLicenseLimits(response.data.data);
|
|
457
|
+
console.log("[Magic-Mark] License limits loaded:", response.data.data);
|
|
458
|
+
}
|
|
459
|
+
} catch (error) {
|
|
460
|
+
console.error("[Magic-Mark] Error fetching license limits:", error);
|
|
461
|
+
}
|
|
462
|
+
};
|
|
438
463
|
const fetchBookmarks = async () => {
|
|
439
464
|
setLoading(true);
|
|
440
465
|
try {
|
|
@@ -486,6 +511,7 @@ const HomePageModern = () => {
|
|
|
486
511
|
setShowModal(false);
|
|
487
512
|
setEditingBookmark(null);
|
|
488
513
|
fetchBookmarks();
|
|
514
|
+
fetchLicenseLimits();
|
|
489
515
|
};
|
|
490
516
|
const handleBookmarkClick = (bookmark) => {
|
|
491
517
|
if (bookmark.path) {
|
|
@@ -525,52 +551,64 @@ const HomePageModern = () => {
|
|
|
525
551
|
/* @__PURE__ */ jsxs(StatCard, { $delay: "0.2s", $color: theme.colors.success[500], children: [
|
|
526
552
|
/* @__PURE__ */ jsx(StatIcon, { className: "stat-icon", $bg: theme.colors.success[100], $color: theme.colors.success[600], children: /* @__PURE__ */ jsx(Sparkle, {}) }),
|
|
527
553
|
/* @__PURE__ */ jsx(StatValue, { className: "stat-value", children: sharedWithMe.length }),
|
|
528
|
-
/* @__PURE__ */ jsx(StatLabel, { children: "Shared with Me" })
|
|
554
|
+
/* @__PURE__ */ jsx(StatLabel, { children: formatMessage({ id: `${pluginId}.stats.shared`, defaultMessage: "Shared with Me" }) })
|
|
529
555
|
] }),
|
|
530
556
|
/* @__PURE__ */ jsxs(StatCard, { $delay: "0.3s", $color: theme.colors.warning[500], children: [
|
|
531
557
|
/* @__PURE__ */ jsx(StatIcon, { className: "stat-icon", $bg: theme.colors.warning[100], $color: theme.colors.warning[600], children: /* @__PURE__ */ jsx(Pin, {}) }),
|
|
532
558
|
/* @__PURE__ */ jsx(StatValue, { className: "stat-value", children: pinnedBookmarks.length }),
|
|
533
|
-
/* @__PURE__ */ jsx(StatLabel, { children: "Pinned" })
|
|
559
|
+
/* @__PURE__ */ jsx(StatLabel, { children: formatMessage({ id: `${pluginId}.stats.pinned`, defaultMessage: "Pinned" }) })
|
|
534
560
|
] }),
|
|
535
|
-
/* @__PURE__ */ jsxs(
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
561
|
+
/* @__PURE__ */ jsxs(
|
|
562
|
+
StatCard,
|
|
563
|
+
{
|
|
564
|
+
$delay: "0.4s",
|
|
565
|
+
$color: licenseLimits.canCreate ? theme.colors.neutral[600] : theme.colors.danger[500],
|
|
566
|
+
onClick: () => !licenseLimits.canCreate && navigate(`/settings/${pluginId}/upgrade`),
|
|
567
|
+
style: { cursor: !licenseLimits.canCreate ? "pointer" : "default" },
|
|
568
|
+
children: [
|
|
569
|
+
/* @__PURE__ */ jsx(
|
|
570
|
+
StatIcon,
|
|
571
|
+
{
|
|
572
|
+
className: "stat-icon",
|
|
573
|
+
$bg: licenseLimits.canCreate ? theme.colors.neutral[100] : theme.colors.danger[100],
|
|
574
|
+
$color: licenseLimits.canCreate ? theme.colors.neutral[600] : theme.colors.danger[600],
|
|
575
|
+
children: /* @__PURE__ */ jsx(Link, {})
|
|
576
|
+
}
|
|
577
|
+
),
|
|
578
|
+
/* @__PURE__ */ jsxs(StatValue, { className: "stat-value", children: [
|
|
579
|
+
licenseLimits.currentBookmarks,
|
|
580
|
+
"/",
|
|
581
|
+
licenseLimits.maxBookmarks === -1 ? "∞" : licenseLimits.maxBookmarks
|
|
582
|
+
] }),
|
|
583
|
+
/* @__PURE__ */ jsx(StatLabel, { children: licenseLimits.canCreate ? formatMessage({ id: `${pluginId}.stats.limit`, defaultMessage: "Bookmark Limit" }) : formatMessage({ id: `${pluginId}.stats.limitReached`, defaultMessage: "Limit Reached - Upgrade" }) })
|
|
584
|
+
]
|
|
585
|
+
}
|
|
586
|
+
)
|
|
540
587
|
] }),
|
|
541
|
-
loading && /* @__PURE__ */ jsx(Flex, { justifyContent: "center", padding: 8, children: /* @__PURE__ */ jsx(Loader, { children: "Loading bookmarks..." }) }),
|
|
588
|
+
loading && /* @__PURE__ */ jsx(Flex, { justifyContent: "center", padding: 8, children: /* @__PURE__ */ jsx(Loader, { children: formatMessage({ id: `${pluginId}.loading`, defaultMessage: "Loading bookmarks..." }) }) }),
|
|
542
589
|
!loading && sharedWithMe.length > 0 && /* @__PURE__ */ jsx(Box, { marginBottom: 4, children: /* @__PURE__ */ jsxs(Box, { style: {
|
|
543
590
|
padding: theme.spacing.lg,
|
|
544
591
|
background: theme.colors.primary[50],
|
|
545
592
|
borderRadius: theme.borderRadius.lg,
|
|
546
593
|
border: `1px solid ${theme.colors.primary[200]}`
|
|
547
594
|
}, children: [
|
|
548
|
-
/* @__PURE__ */ jsx(Typography, { variant: "beta", style: { marginBottom: theme.spacing.sm, color: theme.colors.primary[700] }, children: "🤝 Shared with You" }),
|
|
549
|
-
/* @__PURE__ */
|
|
550
|
-
sharedWithMe.length,
|
|
551
|
-
" bookmark",
|
|
552
|
-
sharedWithMe.length > 1 ? "s" : "",
|
|
553
|
-
" have been shared with you"
|
|
554
|
-
] }),
|
|
595
|
+
/* @__PURE__ */ jsx(Typography, { variant: "beta", style: { marginBottom: theme.spacing.sm, color: theme.colors.primary[700] }, children: formatMessage({ id: `${pluginId}.shared.title`, defaultMessage: "🤝 Shared with You" }) }),
|
|
596
|
+
/* @__PURE__ */ jsx(Typography, { variant: "pi", style: { color: theme.colors.primary[600] }, children: sharedWithMe.length > 1 ? formatMessage({ id: `${pluginId}.shared.countPlural`, defaultMessage: "{count} bookmarks have been shared with you" }, { count: sharedWithMe.length }) : formatMessage({ id: `${pluginId}.shared.count`, defaultMessage: "{count} bookmark has been shared with you" }, { count: sharedWithMe.length }) }),
|
|
555
597
|
/* @__PURE__ */ jsx(Box, { marginTop: 2, children: [...new Map(sharedWithMe.map((b) => [b.createdBy?.id, b.createdBy])).values()].map((creator) => {
|
|
556
598
|
const creatorBookmarks = sharedWithMe.filter((b) => b.createdBy?.id === creator?.id);
|
|
557
599
|
return creator && /* @__PURE__ */ jsxs(Flex, { alignItems: "center", marginTop: 1, children: [
|
|
558
600
|
/* @__PURE__ */ jsxs(Typography, { variant: "pi", fontWeight: "semiBold", children: [
|
|
559
|
-
creator.firstname || "Unknown",
|
|
601
|
+
creator.firstname || formatMessage({ id: `${pluginId}.bookmark.unknown`, defaultMessage: "Unknown" }),
|
|
560
602
|
" ",
|
|
561
603
|
creator.lastname || "",
|
|
562
604
|
":"
|
|
563
605
|
] }),
|
|
564
|
-
/* @__PURE__ */
|
|
565
|
-
creatorBookmarks.length,
|
|
566
|
-
" bookmark",
|
|
567
|
-
creatorBookmarks.length > 1 ? "s" : ""
|
|
568
|
-
] })
|
|
606
|
+
/* @__PURE__ */ jsx(Typography, { variant: "pi", marginLeft: 1, children: creatorBookmarks.length > 1 ? formatMessage({ id: `${pluginId}.shared.byCreatorPlural`, defaultMessage: "{count} bookmarks" }, { count: creatorBookmarks.length }) : formatMessage({ id: `${pluginId}.shared.byCreator`, defaultMessage: "{count} bookmark" }, { count: creatorBookmarks.length }) })
|
|
569
607
|
] }, creator.id);
|
|
570
608
|
}) })
|
|
571
609
|
] }) }),
|
|
572
610
|
!loading && bookmarks.length > 0 && /* @__PURE__ */ jsxs(Box, { children: [
|
|
573
|
-
/* @__PURE__ */ jsx(Box, { style: { marginBottom: theme.spacing.md }, children: /* @__PURE__ */ jsx(Typography, { variant: "delta", style: { marginBottom: theme.spacing.md, color: theme.colors.neutral[700] }, children: "🔖 All Available Bookmarks" }) }),
|
|
611
|
+
/* @__PURE__ */ jsx(Box, { style: { marginBottom: theme.spacing.md }, children: /* @__PURE__ */ jsx(Typography, { variant: "delta", style: { marginBottom: theme.spacing.md, color: theme.colors.neutral[700] }, children: formatMessage({ id: `${pluginId}.allBookmarks.title`, defaultMessage: "🔖 All Available Bookmarks" }) }) }),
|
|
574
612
|
/* @__PURE__ */ jsxs(FilterBar, { children: [
|
|
575
613
|
/* @__PURE__ */ jsxs(SearchInputWrapper, { style: { flex: 1 }, children: [
|
|
576
614
|
/* @__PURE__ */ jsx(SearchIcon, {}),
|
|
@@ -579,7 +617,7 @@ const HomePageModern = () => {
|
|
|
579
617
|
{
|
|
580
618
|
value: searchQuery,
|
|
581
619
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
582
|
-
placeholder: "Search by name, description...",
|
|
620
|
+
placeholder: formatMessage({ id: `${pluginId}.search.placeholder`, defaultMessage: "Search by name, description..." }),
|
|
583
621
|
type: "text"
|
|
584
622
|
}
|
|
585
623
|
)
|
|
@@ -589,12 +627,12 @@ const HomePageModern = () => {
|
|
|
589
627
|
{
|
|
590
628
|
value: filterType,
|
|
591
629
|
onChange: setFilterType,
|
|
592
|
-
placeholder: "Filter",
|
|
630
|
+
placeholder: formatMessage({ id: `${pluginId}.filter.placeholder`, defaultMessage: "Filter" }),
|
|
593
631
|
size: "S",
|
|
594
632
|
children: [
|
|
595
|
-
/* @__PURE__ */ jsx(SingleSelectOption, { value: "all", children: "Show All" }),
|
|
596
|
-
/* @__PURE__ */ jsx(SingleSelectOption, { value: "pinned", children: "Pinned Only" }),
|
|
597
|
-
/* @__PURE__ */ jsx(SingleSelectOption, { value: "unpinned", children: "Unpinned Only" })
|
|
633
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "all", children: formatMessage({ id: `${pluginId}.filter.all`, defaultMessage: "Show All" }) }),
|
|
634
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "pinned", children: formatMessage({ id: `${pluginId}.filter.pinned`, defaultMessage: "Pinned Only" }) }),
|
|
635
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "unpinned", children: formatMessage({ id: `${pluginId}.filter.unpinned`, defaultMessage: "Unpinned Only" }) })
|
|
598
636
|
]
|
|
599
637
|
}
|
|
600
638
|
) }),
|
|
@@ -603,13 +641,13 @@ const HomePageModern = () => {
|
|
|
603
641
|
{
|
|
604
642
|
value: entriesPerPage,
|
|
605
643
|
onChange: setEntriesPerPage,
|
|
606
|
-
placeholder: "Entries",
|
|
644
|
+
placeholder: formatMessage({ id: `${pluginId}.entries.placeholder`, defaultMessage: "Entries" }),
|
|
607
645
|
size: "S",
|
|
608
646
|
children: [
|
|
609
|
-
/* @__PURE__ */ jsx(SingleSelectOption, { value: "10", children: "10 entries" }),
|
|
610
|
-
/* @__PURE__ */ jsx(SingleSelectOption, { value: "25", children: "25 entries" }),
|
|
611
|
-
/* @__PURE__ */ jsx(SingleSelectOption, { value: "50", children: "50 entries" }),
|
|
612
|
-
/* @__PURE__ */ jsx(SingleSelectOption, { value: "100", children: "100 entries" })
|
|
647
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "10", children: formatMessage({ id: `${pluginId}.entries.10`, defaultMessage: "10 entries" }) }),
|
|
648
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "25", children: formatMessage({ id: `${pluginId}.entries.25`, defaultMessage: "25 entries" }) }),
|
|
649
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "50", children: formatMessage({ id: `${pluginId}.entries.50`, defaultMessage: "50 entries" }) }),
|
|
650
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "100", children: formatMessage({ id: `${pluginId}.entries.100`, defaultMessage: "100 entries" }) })
|
|
613
651
|
]
|
|
614
652
|
}
|
|
615
653
|
) })
|
|
@@ -648,11 +686,17 @@ const HomePageModern = () => {
|
|
|
648
686
|
/* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", gap: 0, children: [
|
|
649
687
|
/* @__PURE__ */ jsx(Typography, { fontWeight: "semiBold", ellipsis: true, style: { fontSize: "1.125rem", lineHeight: "1.4" }, children: bookmark.name }),
|
|
650
688
|
/* @__PURE__ */ jsxs(Flex, { gap: 1, alignItems: "center", children: [
|
|
651
|
-
bookmark.createdBy?.id && currentUser?.id && bookmark.createdBy.id === currentUser.id ? /* @__PURE__ */
|
|
652
|
-
"•
|
|
653
|
-
bookmark.
|
|
689
|
+
bookmark.createdBy?.id && currentUser?.id && bookmark.createdBy.id === currentUser.id ? /* @__PURE__ */ jsxs(Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.primary[600], fontWeight: 500 }, children: [
|
|
690
|
+
"• ",
|
|
691
|
+
formatMessage({ id: `${pluginId}.bookmark.myBookmark`, defaultMessage: "My Bookmark" })
|
|
692
|
+
] }) : /* @__PURE__ */ jsxs(Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.neutral[600] }, children: [
|
|
693
|
+
"• ",
|
|
694
|
+
formatMessage({ id: `${pluginId}.bookmark.sharedBy`, defaultMessage: "Shared by {name}" }, { name: bookmark.createdBy?.firstname || formatMessage({ id: `${pluginId}.bookmark.unknown`, defaultMessage: "Unknown" }) })
|
|
695
|
+
] }),
|
|
696
|
+
bookmark.isPublic && /* @__PURE__ */ jsxs(Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.success[600], marginLeft: "8px" }, children: [
|
|
697
|
+
"• ",
|
|
698
|
+
formatMessage({ id: `${pluginId}.bookmark.public`, defaultMessage: "Public" })
|
|
654
699
|
] }),
|
|
655
|
-
bookmark.isPublic && /* @__PURE__ */ jsx(Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.success[600], marginLeft: "8px" }, children: "• Public" }),
|
|
656
700
|
bookmark.sharedWithRoles && bookmark.sharedWithRoles.length > 0 && !bookmark.isPublic && /* @__PURE__ */ jsxs(Typography, { variant: "pi", style: { fontSize: "0.75rem", color: theme.colors.warning[600], marginLeft: "8px" }, children: [
|
|
657
701
|
"• Roles: ",
|
|
658
702
|
bookmark.sharedWithRoles.map((roleId) => {
|
|
@@ -768,7 +812,7 @@ const HomePageModern = () => {
|
|
|
768
812
|
}
|
|
769
813
|
}
|
|
770
814
|
),
|
|
771
|
-
/* @__PURE__ */ jsx(FloatingEmoji, { children: "
|
|
815
|
+
/* @__PURE__ */ jsx(FloatingEmoji, { children: /* @__PURE__ */ jsx(Sparkle, { fill: "warning500" }) }),
|
|
772
816
|
/* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "center", gap: 6, style: { position: "relative", zIndex: 1 }, children: [
|
|
773
817
|
/* @__PURE__ */ jsx(
|
|
774
818
|
Box,
|
|
@@ -796,10 +840,10 @@ const HomePageModern = () => {
|
|
|
796
840
|
color: theme.colors.neutral[800],
|
|
797
841
|
marginBottom: "8px"
|
|
798
842
|
},
|
|
799
|
-
children: "No bookmarks yet"
|
|
843
|
+
children: formatMessage({ id: `${pluginId}.empty.title`, defaultMessage: "No bookmarks yet" })
|
|
800
844
|
}
|
|
801
845
|
),
|
|
802
|
-
/* @__PURE__ */
|
|
846
|
+
/* @__PURE__ */ jsx(
|
|
803
847
|
Typography,
|
|
804
848
|
{
|
|
805
849
|
variant: "omega",
|
|
@@ -809,11 +853,7 @@ const HomePageModern = () => {
|
|
|
809
853
|
maxWidth: "500px",
|
|
810
854
|
lineHeight: "1.6"
|
|
811
855
|
},
|
|
812
|
-
children:
|
|
813
|
-
"Navigate to any Content Manager view, apply filters, and click ",
|
|
814
|
-
/* @__PURE__ */ jsx("strong", { children: '"Save Bookmark"' }),
|
|
815
|
-
" to create quick access shortcuts"
|
|
816
|
-
]
|
|
856
|
+
children: formatMessage({ id: `${pluginId}.empty.description`, defaultMessage: 'Navigate to any Content Manager view, apply filters, and click "Save Bookmark" to create quick access shortcuts' })
|
|
817
857
|
}
|
|
818
858
|
)
|
|
819
859
|
] })
|
|
@@ -1134,7 +1174,7 @@ const LicenseGuard = ({ children }) => {
|
|
|
1134
1174
|
marginBottom: "12px",
|
|
1135
1175
|
display: "block"
|
|
1136
1176
|
},
|
|
1137
|
-
children: "
|
|
1177
|
+
children: "Activate MagicMark Plugin"
|
|
1138
1178
|
}
|
|
1139
1179
|
),
|
|
1140
1180
|
/* @__PURE__ */ jsx(
|
|
@@ -1192,7 +1232,7 @@ const LicenseGuard = ({ children }) => {
|
|
|
1192
1232
|
border: "2px solid #BAE6FD",
|
|
1193
1233
|
width: "100%"
|
|
1194
1234
|
},
|
|
1195
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "omega", style: { fontSize: "13px", lineHeight: "1.6" }, children: useExistingKey ? "
|
|
1235
|
+
children: /* @__PURE__ */ jsx(Typography, { variant: "omega", style: { fontSize: "13px", lineHeight: "1.6" }, children: useExistingKey ? "Enter your email and license key to activate." : useAutoCreate && adminUser && adminUser.email ? `Click "Activate" to auto-create a license with your account (${adminUser.email})` : useAutoCreate ? 'Click "Activate" to auto-create a license with your admin account' : "A license will be created with the details below." })
|
|
1196
1236
|
}
|
|
1197
1237
|
),
|
|
1198
1238
|
useExistingKey ? (
|
|
@@ -1258,15 +1298,17 @@ const LicenseGuard = ({ children }) => {
|
|
|
1258
1298
|
},
|
|
1259
1299
|
children: [
|
|
1260
1300
|
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "bold", style: { marginBottom: "12px", display: "block" }, children: "Ready to activate with your account:" }),
|
|
1261
|
-
/* @__PURE__ */ jsxs(
|
|
1262
|
-
"
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1301
|
+
/* @__PURE__ */ jsxs(Flex, { alignItems: "center", gap: 2, style: { marginBottom: "4px" }, children: [
|
|
1302
|
+
/* @__PURE__ */ jsx(User, { fill: "neutral700", width: "14px", height: "14px" }),
|
|
1303
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "pi", children: [
|
|
1304
|
+
adminUser.firstname || "Admin",
|
|
1305
|
+
" ",
|
|
1306
|
+
adminUser.lastname || "User"
|
|
1307
|
+
] })
|
|
1266
1308
|
] }),
|
|
1267
|
-
/* @__PURE__ */ jsxs(
|
|
1268
|
-
"
|
|
1269
|
-
adminUser.email || "Loading..."
|
|
1309
|
+
/* @__PURE__ */ jsxs(Flex, { alignItems: "center", gap: 2, children: [
|
|
1310
|
+
/* @__PURE__ */ jsx(Mail, { fill: "neutral600", width: "14px", height: "14px" }),
|
|
1311
|
+
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: adminUser.email || "Loading..." })
|
|
1270
1312
|
] })
|
|
1271
1313
|
]
|
|
1272
1314
|
}
|