@prenta/admin 1.8.0 → 1.9.1

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 (113) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/design-system/tokens.css +38 -6
  3. package/design-system/tokens.json +36 -6
  4. package/design-system/tokens.scss +6 -6
  5. package/dist/AdminRoot.d.ts.map +1 -1
  6. package/dist/AdminRoot.js +14 -4
  7. package/dist/AdminRoot.js.map +1 -1
  8. package/dist/__tests__/components/author-avatar.test.js +18 -1
  9. package/dist/__tests__/components/author-avatar.test.js.map +1 -1
  10. package/dist/__tests__/lib/logout-redirect.test.d.ts +2 -0
  11. package/dist/__tests__/lib/logout-redirect.test.d.ts.map +1 -0
  12. package/dist/__tests__/lib/logout-redirect.test.js +29 -0
  13. package/dist/__tests__/lib/logout-redirect.test.js.map +1 -0
  14. package/dist/__tests__/lib/pages-service.test.js +21 -6
  15. package/dist/__tests__/lib/pages-service.test.js.map +1 -1
  16. package/dist/__tests__/lib/utils.test.js +2 -1
  17. package/dist/__tests__/lib/utils.test.js.map +1 -1
  18. package/dist/__tests__/styles/tokens-drift.test.js +32 -0
  19. package/dist/__tests__/styles/tokens-drift.test.js.map +1 -1
  20. package/dist/__tests__/views/login-root.render.test.js +6 -0
  21. package/dist/__tests__/views/login-root.render.test.js.map +1 -1
  22. package/dist/__tests__/views/security-settings.render.test.js +1 -0
  23. package/dist/__tests__/views/security-settings.render.test.js.map +1 -1
  24. package/dist/__tests__/views/trash.render.test.js +33 -0
  25. package/dist/__tests__/views/trash.render.test.js.map +1 -1
  26. package/dist/__tests__/views/user-detail-drawer.render.test.js +1 -0
  27. package/dist/__tests__/views/user-detail-drawer.render.test.js.map +1 -1
  28. package/dist/__tests__/views/users-selected-deeplink.render.test.js +1 -0
  29. package/dist/__tests__/views/users-selected-deeplink.render.test.js.map +1 -1
  30. package/dist/components/LivePreview.d.ts.map +1 -1
  31. package/dist/components/LivePreview.js +2 -1
  32. package/dist/components/LivePreview.js.map +1 -1
  33. package/dist/components/PresenceIndicator.d.ts.map +1 -1
  34. package/dist/components/PresenceIndicator.js +3 -1
  35. package/dist/components/PresenceIndicator.js.map +1 -1
  36. package/dist/components/ui/AuthorAvatar.d.ts +12 -0
  37. package/dist/components/ui/AuthorAvatar.d.ts.map +1 -1
  38. package/dist/components/ui/AuthorAvatar.js +8 -8
  39. package/dist/components/ui/AuthorAvatar.js.map +1 -1
  40. package/dist/components/ui/DataTable.d.ts.map +1 -1
  41. package/dist/components/ui/DataTable.js +7 -1
  42. package/dist/components/ui/DataTable.js.map +1 -1
  43. package/dist/layout/Sidebar.js +1 -1
  44. package/dist/lib/logout-redirect.d.ts +19 -0
  45. package/dist/lib/logout-redirect.d.ts.map +1 -0
  46. package/dist/lib/logout-redirect.js +20 -0
  47. package/dist/lib/logout-redirect.js.map +1 -0
  48. package/dist/lib/pages-service.d.ts.map +1 -1
  49. package/dist/lib/pages-service.js +2 -16
  50. package/dist/lib/pages-service.js.map +1 -1
  51. package/dist/lib/sentry.d.ts.map +1 -1
  52. package/dist/lib/sentry.js +11 -0
  53. package/dist/lib/sentry.js.map +1 -1
  54. package/dist/prenta-admin.css +1 -1
  55. package/dist/views/CollectionList.d.ts.map +1 -1
  56. package/dist/views/CollectionList.js +6 -2
  57. package/dist/views/CollectionList.js.map +1 -1
  58. package/dist/views/Dashboard.d.ts.map +1 -1
  59. package/dist/views/Dashboard.js +4 -5
  60. package/dist/views/Dashboard.js.map +1 -1
  61. package/dist/views/Login.d.ts.map +1 -1
  62. package/dist/views/Login.js +4 -2
  63. package/dist/views/Login.js.map +1 -1
  64. package/dist/views/MediaBrowser.d.ts.map +1 -1
  65. package/dist/views/MediaBrowser.js +6 -5
  66. package/dist/views/MediaBrowser.js.map +1 -1
  67. package/dist/views/Posts/PostsListView.d.ts.map +1 -1
  68. package/dist/views/Posts/PostsListView.js +6 -5
  69. package/dist/views/Posts/PostsListView.js.map +1 -1
  70. package/dist/views/Redirects.d.ts.map +1 -1
  71. package/dist/views/Redirects.js +2 -1
  72. package/dist/views/Redirects.js.map +1 -1
  73. package/dist/views/settings/SessionPolicyCard.d.ts.map +1 -1
  74. package/dist/views/settings/SessionPolicyCard.js +3 -1
  75. package/dist/views/settings/SessionPolicyCard.js.map +1 -1
  76. package/dist/views/settings/useSecuritySettings.d.ts +2 -0
  77. package/dist/views/settings/useSecuritySettings.d.ts.map +1 -1
  78. package/dist/views/settings/useSecuritySettings.js +8 -0
  79. package/dist/views/settings/useSecuritySettings.js.map +1 -1
  80. package/dist/views/users/UserDetailDrawer.d.ts.map +1 -1
  81. package/dist/views/users/UserDetailDrawer.js +5 -5
  82. package/dist/views/users/UserDetailDrawer.js.map +1 -1
  83. package/package.json +4 -3
  84. package/src/AdminRoot.tsx +13 -4
  85. package/src/__tests__/components/author-avatar.test.tsx +22 -1
  86. package/src/__tests__/lib/logout-redirect.test.ts +35 -0
  87. package/src/__tests__/lib/pages-service.test.ts +22 -8
  88. package/src/__tests__/lib/utils.test.ts +2 -1
  89. package/src/__tests__/styles/tokens-drift.test.ts +46 -0
  90. package/src/__tests__/views/login-root.render.test.tsx +7 -0
  91. package/src/__tests__/views/security-settings.render.test.tsx +1 -0
  92. package/src/__tests__/views/trash.render.test.tsx +38 -0
  93. package/src/__tests__/views/user-detail-drawer.render.test.tsx +1 -0
  94. package/src/__tests__/views/users-selected-deeplink.render.test.tsx +1 -0
  95. package/src/components/LivePreview.tsx +2 -1
  96. package/src/components/PresenceIndicator.tsx +3 -1
  97. package/src/components/ui/AuthorAvatar.tsx +8 -8
  98. package/src/components/ui/DataTable.tsx +13 -1
  99. package/src/layout/Sidebar.tsx +1 -1
  100. package/src/lib/logout-redirect.ts +33 -0
  101. package/src/lib/pages-service.ts +1 -15
  102. package/src/lib/sentry.ts +11 -0
  103. package/src/styles/prenta-tokens.css +38 -6
  104. package/src/styles/theme.css +4 -2
  105. package/src/views/CollectionList.tsx +8 -4
  106. package/src/views/Dashboard.tsx +5 -11
  107. package/src/views/Login.tsx +15 -1
  108. package/src/views/MediaBrowser.tsx +35 -12
  109. package/src/views/Posts/PostsListView.tsx +13 -11
  110. package/src/views/Redirects.tsx +8 -5
  111. package/src/views/settings/SessionPolicyCard.tsx +40 -0
  112. package/src/views/settings/useSecuritySettings.ts +10 -0
  113. package/src/views/users/UserDetailDrawer.tsx +31 -5
@@ -72,6 +72,7 @@ interface UserDetail {
72
72
  invitedBy: { id: string; name: string; email: string } | null
73
73
  externalDomain: boolean
74
74
  contentOwnedCount: number
75
+ liveApiKeyCount: number
75
76
  isCurrentUser: boolean
76
77
  }
77
78
 
@@ -505,6 +506,18 @@ export function UserDetailDrawer({ userId, open, onOpenChange, onChanged }: User
505
506
  label="Content owned"
506
507
  value={`${u.contentOwnedCount} ${u.contentOwnedCount === 1 ? 'item' : 'items'}`}
507
508
  />
509
+ <Fact
510
+ label="Live API keys"
511
+ value={
512
+ u.liveApiKeyCount > 0 ? (
513
+ <span className="text-warning">
514
+ {u.liveApiKeyCount} {u.liveApiKeyCount === 1 ? 'key' : 'keys'}
515
+ </span>
516
+ ) : (
517
+ 'None'
518
+ )
519
+ }
520
+ />
508
521
  <Fact
509
522
  label="Email verified"
510
523
  value={u.emailVerified ? 'Yes' : <span className="text-warning">No</span>}
@@ -541,7 +554,13 @@ export function UserDetailDrawer({ userId, open, onOpenChange, onChanged }: User
541
554
  {/* Security ----------------------------------------------------- */}
542
555
  <Tabs.Content value="security" tabIndex={-1} className="focus:outline-none">
543
556
  <SecurityRow
544
- icon={u.mfaEnabled ? <ShieldCheck size={16} /> : <ShieldAlert size={16} />}
557
+ icon={
558
+ u.mfaEnabled ? (
559
+ <ShieldCheck size={16} aria-hidden />
560
+ ) : (
561
+ <ShieldAlert size={16} aria-hidden />
562
+ )
563
+ }
545
564
  title="Multi-factor authentication"
546
565
  description={
547
566
  u.mfaEnabled
@@ -600,7 +619,7 @@ export function UserDetailDrawer({ userId, open, onOpenChange, onChanged }: User
600
619
  }
601
620
  />
602
621
  <SecurityRow
603
- icon={<KeyRound size={16} />}
622
+ icon={<KeyRound size={16} aria-hidden />}
604
623
  title="Password"
605
624
  description={
606
625
  u.ssoOnly
@@ -660,13 +679,19 @@ export function UserDetailDrawer({ userId, open, onOpenChange, onChanged }: User
660
679
  }
661
680
  />
662
681
  <SecurityRow
663
- icon={<ShieldAlert size={16} />}
682
+ icon={<ShieldAlert size={16} aria-hidden />}
664
683
  title="Failed sign-ins"
665
684
  description={`${u.failedLoginCount} failed ${u.failedLoginCount === 1 ? 'attempt' : 'attempts'} on record.`}
666
685
  action={null}
667
686
  />
668
687
  <SecurityRow
669
- icon={u.status === 'locked' ? <Lock size={16} /> : <Unlock size={16} />}
688
+ icon={
689
+ u.status === 'locked' ? (
690
+ <Lock size={16} aria-hidden />
691
+ ) : (
692
+ <Unlock size={16} aria-hidden />
693
+ )
694
+ }
670
695
  title="Account lock"
671
696
  description={
672
697
  u.status === 'locked' ? 'Locked by a security policy or an admin.' : 'Not locked.'
@@ -717,7 +742,7 @@ export function UserDetailDrawer({ userId, open, onOpenChange, onChanged }: User
717
742
  }
718
743
  />
719
744
  <SecurityRow
720
- icon={<Ban size={16} />}
745
+ icon={<Ban size={16} aria-hidden />}
721
746
  title="Account access"
722
747
  description={
723
748
  u.status === 'suspended'
@@ -850,6 +875,7 @@ export function UserDetailDrawer({ userId, open, onOpenChange, onChanged }: User
850
875
  <button
851
876
  type="button"
852
877
  disabled={pending === `revoke-${s.id}`}
878
+ aria-label={`Revoke session on ${s.deviceLabel}`}
853
879
  onClick={() =>
854
880
  runAction(
855
881
  `revoke-${s.id}`,