@actuate-media/cms-admin 0.49.1 → 0.49.4

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 +32 -0
  2. package/dist/AdminRoot.js +2 -2
  3. package/dist/AdminRoot.js.map +1 -1
  4. package/dist/actuate-admin.css +1 -1
  5. package/dist/components/CoauthorResultPopover.js +1 -1
  6. package/dist/components/CoauthorResultPopover.js.map +1 -1
  7. package/dist/components/CommentSidePanel.js +1 -1
  8. package/dist/components/CommentSidePanel.js.map +1 -1
  9. package/dist/components/ContentOverviewChart.js +1 -1
  10. package/dist/components/ContentOverviewChart.js.map +1 -1
  11. package/dist/components/FolderTree.js +19 -19
  12. package/dist/components/FolderTree.js.map +1 -1
  13. package/dist/components/NotificationBell.js +1 -1
  14. package/dist/components/NotificationBell.js.map +1 -1
  15. package/dist/components/PresenceChips.js +1 -1
  16. package/dist/components/PresenceChips.js.map +1 -1
  17. package/dist/components/SEOConfigPanel.js +2 -2
  18. package/dist/components/SEOConfigPanel.js.map +1 -1
  19. package/dist/components/SEOPanel.d.ts.map +1 -1
  20. package/dist/components/SEOPanel.js +2 -2
  21. package/dist/components/SEOPanel.js.map +1 -1
  22. package/dist/components/SEOPerformance.js +2 -2
  23. package/dist/components/SEOPerformance.js.map +1 -1
  24. package/dist/components/forms/EntriesTable.js +1 -1
  25. package/dist/components/forms/EntriesTable.js.map +1 -1
  26. package/dist/components/ui/Card.js +1 -1
  27. package/dist/components/ui/Card.js.map +1 -1
  28. package/dist/components/ui/EmptyState.js +1 -1
  29. package/dist/components/ui/EmptyState.js.map +1 -1
  30. package/dist/layout/Sidebar.js +1 -1
  31. package/dist/layout/Sidebar.js.map +1 -1
  32. package/dist/layout/primitives/PageContainer.js +1 -1
  33. package/dist/layout/primitives/PageContainer.js.map +1 -1
  34. package/dist/views/CollectionList.js +1 -1
  35. package/dist/views/CollectionList.js.map +1 -1
  36. package/dist/views/Dashboard.js +8 -8
  37. package/dist/views/Dashboard.js.map +1 -1
  38. package/dist/views/DocumentEdit.js +1 -1
  39. package/dist/views/DocumentEdit.js.map +1 -1
  40. package/dist/views/ForgotPassword.js +1 -1
  41. package/dist/views/ForgotPassword.js.map +1 -1
  42. package/dist/views/FormEditor.d.ts.map +1 -1
  43. package/dist/views/FormEditor.js +1 -1
  44. package/dist/views/FormEditor.js.map +1 -1
  45. package/dist/views/Login.js +1 -1
  46. package/dist/views/Login.js.map +1 -1
  47. package/dist/views/MediaBrowser.d.ts.map +1 -1
  48. package/dist/views/MediaBrowser.js +16 -16
  49. package/dist/views/MediaBrowser.js.map +1 -1
  50. package/dist/views/PageEditor.js +1 -1
  51. package/dist/views/PageEditor.js.map +1 -1
  52. package/dist/views/Pages/PagesListView.d.ts.map +1 -1
  53. package/dist/views/Pages/PagesListView.js +5 -5
  54. package/dist/views/Pages/PagesListView.js.map +1 -1
  55. package/dist/views/Pages.js +1 -1
  56. package/dist/views/Pages.js.map +1 -1
  57. package/dist/views/Posts/PostsListView.d.ts.map +1 -1
  58. package/dist/views/Posts/PostsListView.js +4 -4
  59. package/dist/views/Posts/PostsListView.js.map +1 -1
  60. package/dist/views/Redirects.d.ts.map +1 -1
  61. package/dist/views/Redirects.js +7 -7
  62. package/dist/views/Redirects.js.map +1 -1
  63. package/dist/views/ResetPassword.js +2 -2
  64. package/dist/views/ResetPassword.js.map +1 -1
  65. package/dist/views/ScriptTagEditor.js +4 -4
  66. package/dist/views/ScriptTagEditor.js.map +1 -1
  67. package/dist/views/ScriptTags.d.ts.map +1 -1
  68. package/dist/views/ScriptTags.js +5 -5
  69. package/dist/views/ScriptTags.js.map +1 -1
  70. package/dist/views/SetupWizard.js +2 -2
  71. package/dist/views/SetupWizard.js.map +1 -1
  72. package/dist/views/page-editor/SectionInspector.js +2 -2
  73. package/dist/views/page-editor/SectionInspector.js.map +1 -1
  74. package/dist/views/post-editor/PostHeader.d.ts.map +1 -1
  75. package/dist/views/post-editor/PostHeader.js +2 -2
  76. package/dist/views/post-editor/PostHeader.js.map +1 -1
  77. package/dist/views/post-editor/PostHeaderPanel.js +1 -1
  78. package/dist/views/post-editor/PostHeaderPanel.js.map +1 -1
  79. package/package.json +1 -1
  80. package/src/AdminRoot.tsx +2 -2
  81. package/src/components/CoauthorResultPopover.tsx +1 -1
  82. package/src/components/CommentSidePanel.tsx +1 -1
  83. package/src/components/ContentOverviewChart.tsx +1 -1
  84. package/src/components/FolderTree.tsx +32 -32
  85. package/src/components/NotificationBell.tsx +2 -2
  86. package/src/components/PresenceChips.tsx +1 -1
  87. package/src/components/SEOConfigPanel.tsx +3 -3
  88. package/src/components/SEOPanel.tsx +8 -6
  89. package/src/components/SEOPerformance.tsx +5 -5
  90. package/src/components/forms/EntriesTable.tsx +1 -1
  91. package/src/components/ui/Card.tsx +1 -1
  92. package/src/components/ui/EmptyState.tsx +1 -1
  93. package/src/layout/Sidebar.tsx +1 -1
  94. package/src/layout/primitives/PageContainer.tsx +1 -1
  95. package/src/views/CollectionList.tsx +1 -1
  96. package/src/views/Dashboard.tsx +12 -12
  97. package/src/views/DocumentEdit.tsx +4 -4
  98. package/src/views/ForgotPassword.tsx +1 -1
  99. package/src/views/FormEditor.tsx +1 -3
  100. package/src/views/Login.tsx +2 -2
  101. package/src/views/MediaBrowser.tsx +126 -120
  102. package/src/views/PageEditor.tsx +2 -2
  103. package/src/views/Pages/PagesListView.tsx +126 -118
  104. package/src/views/Pages.tsx +1 -1
  105. package/src/views/Posts/PostsListView.tsx +115 -111
  106. package/src/views/Redirects.tsx +48 -44
  107. package/src/views/ResetPassword.tsx +2 -2
  108. package/src/views/ScriptTagEditor.tsx +40 -40
  109. package/src/views/ScriptTags.tsx +34 -30
  110. package/src/views/SetupWizard.tsx +2 -2
  111. package/src/views/page-editor/SectionInspector.tsx +4 -4
  112. package/src/views/post-editor/PostHeader.tsx +2 -4
  113. package/src/views/post-editor/PostHeaderPanel.tsx +2 -2
@@ -30,9 +30,9 @@ const PLACEMENT_LABELS: Record<string, string> = {
30
30
  }
31
31
 
32
32
  const PLACEMENT_COLORS: Record<string, string> = {
33
- head: 'bg-purple-100 text-purple-700',
34
- body_open: 'bg-blue-100 text-blue-700',
35
- body_close: 'bg-green-100 text-green-700',
33
+ head: 'bg-accent text-accent-foreground',
34
+ body_open: 'bg-primary/15 text-primary',
35
+ body_close: 'bg-success/15 text-success',
36
36
  }
37
37
 
38
38
  function scopeLabel(tag: ScriptTag): string {
@@ -73,7 +73,7 @@ export function ScriptTags({ onNavigate }: ScriptTagsProps) {
73
73
  if (loading) {
74
74
  return (
75
75
  <div className="flex h-64 items-center justify-center p-3 pr-6 sm:p-4 sm:pr-8">
76
- <Loader2 className="h-6 w-6 animate-spin text-blue-600" />
76
+ <Loader2 className="text-primary h-6 w-6 animate-spin" />
77
77
  </div>
78
78
  )
79
79
  }
@@ -81,12 +81,12 @@ export function ScriptTags({ onNavigate }: ScriptTagsProps) {
81
81
  return (
82
82
  <div className="p-3 pr-6 sm:p-4 sm:pr-8">
83
83
  {error && (
84
- <div className="mb-4 flex items-center gap-3 rounded-lg border border-red-200 bg-red-50 p-3">
85
- <AlertTriangle className="h-5 w-5 shrink-0 text-red-600" />
86
- <span className="flex-1 text-sm text-red-800">{error}</span>
84
+ <div className="border-destructive/30 bg-destructive/10 mb-4 flex items-center gap-3 rounded-lg border p-3">
85
+ <AlertTriangle className="text-destructive h-5 w-5 shrink-0" />
86
+ <span className="text-destructive flex-1 text-sm">{error}</span>
87
87
  <button
88
88
  onClick={refetch}
89
- className="rounded-lg border border-red-300 px-3 py-1 text-sm text-red-700 transition-colors hover:bg-red-100"
89
+ className="border-destructive/40 text-destructive hover:bg-destructive/15 rounded-lg border px-3 py-1 text-sm transition-colors"
90
90
  >
91
91
  Retry
92
92
  </button>
@@ -95,15 +95,15 @@ export function ScriptTags({ onNavigate }: ScriptTagsProps) {
95
95
 
96
96
  <div className="mb-4 flex items-center justify-between">
97
97
  <div>
98
- <h1 className="mb-1 text-2xl font-semibold text-gray-900">Script Tags</h1>
99
- <p className="text-sm text-gray-600">
98
+ <h1 className="text-foreground mb-1 text-2xl font-medium">Script Tags</h1>
99
+ <p className="text-muted-foreground text-sm">
100
100
  Manage tracking codes, analytics, and custom scripts injected into your site
101
101
  </p>
102
102
  </div>
103
103
  <button
104
104
  type="button"
105
105
  onClick={() => onNavigate?.('/script-tags/new')}
106
- className="flex items-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700"
106
+ className="bg-primary text-primary-foreground hover:bg-primary/90 flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-colors"
107
107
  >
108
108
  <Plus className="h-4 w-4" />
109
109
  New Tag
@@ -111,67 +111,71 @@ export function ScriptTags({ onNavigate }: ScriptTagsProps) {
111
111
  </div>
112
112
 
113
113
  {tags.length === 0 && !error ? (
114
- <div className="rounded-lg border border-gray-200 bg-white p-12 text-center">
115
- <Code2 className="mx-auto mb-3 h-10 w-10 text-gray-300" />
116
- <h3 className="text-sm font-semibold text-gray-900">No script tags yet</h3>
117
- <p className="mt-1 text-sm text-gray-500">
114
+ <div className="border-border bg-card rounded-lg border p-12 text-center">
115
+ <Code2 className="text-muted-foreground mx-auto mb-3 h-10 w-10" />
116
+ <h3 className="text-foreground text-sm font-medium">No script tags yet</h3>
117
+ <p className="text-muted-foreground mt-1 text-sm">
118
118
  Add tracking codes like Google Analytics, Tag Manager, or Facebook Pixel.
119
119
  </p>
120
120
  <button
121
121
  type="button"
122
122
  onClick={() => onNavigate?.('/script-tags/new')}
123
- className="mt-4 inline-flex items-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700"
123
+ className="bg-primary text-primary-foreground hover:bg-primary/90 mt-4 inline-flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-colors"
124
124
  >
125
125
  <Plus className="h-4 w-4" />
126
126
  Add Your First Tag
127
127
  </button>
128
128
  </div>
129
129
  ) : (
130
- <div className="overflow-hidden rounded-lg border border-gray-200 bg-white">
130
+ <div className="border-border bg-card overflow-hidden rounded-lg border">
131
131
  <table className="w-full text-sm">
132
132
  <thead>
133
- <tr className="border-b border-gray-200 bg-gray-50">
134
- <th className="px-4 py-3 text-left font-medium text-gray-600">Name</th>
135
- <th className="px-4 py-3 text-left font-medium text-gray-600">Placement</th>
136
- <th className="px-4 py-3 text-left font-medium text-gray-600">Scope</th>
137
- <th className="px-4 py-3 text-center font-medium text-gray-600">Priority</th>
138
- <th className="px-4 py-3 text-center font-medium text-gray-600">Enabled</th>
133
+ <tr className="border-border bg-muted border-b">
134
+ <th className="text-muted-foreground px-4 py-3 text-left font-medium">Name</th>
135
+ <th className="text-muted-foreground px-4 py-3 text-left font-medium">Placement</th>
136
+ <th className="text-muted-foreground px-4 py-3 text-left font-medium">Scope</th>
137
+ <th className="text-muted-foreground px-4 py-3 text-center font-medium">
138
+ Priority
139
+ </th>
140
+ <th className="text-muted-foreground px-4 py-3 text-center font-medium">Enabled</th>
139
141
  </tr>
140
142
  </thead>
141
143
  <tbody>
142
144
  {tags.map((tag) => (
143
145
  <tr
144
146
  key={tag.id}
145
- className="border-b border-gray-100 transition-colors last:border-0 hover:bg-gray-50"
147
+ className="border-border hover:bg-muted border-b transition-colors last:border-0"
146
148
  >
147
149
  <td className="px-4 py-3">
148
150
  <button
149
151
  type="button"
150
152
  onClick={() => onNavigate?.(`/script-tags/${tag.id}`)}
151
- className="font-medium text-blue-600 hover:text-blue-800 hover:underline"
153
+ className="text-primary hover:text-primary/80 font-medium hover:underline"
152
154
  >
153
155
  {tag.name}
154
156
  </button>
155
157
  </td>
156
158
  <td className="px-4 py-3">
157
159
  <span
158
- className={`inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${PLACEMENT_COLORS[tag.placement] ?? 'bg-gray-100 text-gray-700'}`}
160
+ className={`inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${PLACEMENT_COLORS[tag.placement] ?? 'bg-muted text-foreground'}`}
159
161
  >
160
162
  {PLACEMENT_LABELS[tag.placement] ?? tag.placement}
161
163
  </span>
162
164
  </td>
163
- <td className="px-4 py-3 text-gray-600">{scopeLabel(tag)}</td>
164
- <td className="px-4 py-3 text-center font-mono text-gray-600">{tag.priority}</td>
165
+ <td className="text-muted-foreground px-4 py-3">{scopeLabel(tag)}</td>
166
+ <td className="text-muted-foreground px-4 py-3 text-center font-mono">
167
+ {tag.priority}
168
+ </td>
165
169
  <td className="px-4 py-3 text-center">
166
170
  <button
167
171
  type="button"
168
172
  onClick={() => toggleEnabled(tag)}
169
173
  disabled={togglingId === tag.id}
170
- className={`relative h-6 w-11 shrink-0 rounded-full transition-colors ${tag.enabled ? 'bg-blue-600' : 'bg-gray-300'}`}
174
+ className={`relative h-6 w-11 shrink-0 rounded-full transition-colors ${tag.enabled ? 'bg-primary' : 'bg-switch-background'}`}
171
175
  aria-pressed={tag.enabled}
172
176
  >
173
177
  <span
174
- className={`absolute top-0.5 block h-5 w-5 rounded-full bg-white transition-transform ${
178
+ className={`bg-card absolute top-0.5 block h-5 w-5 rounded-full transition-transform ${
175
179
  tag.enabled ? 'translate-x-[22px]' : 'translate-x-0.5'
176
180
  }`}
177
181
  />
@@ -74,7 +74,7 @@ export function SetupWizard({ onComplete, siteName = 'Actuate CMS' }: SetupWizar
74
74
  <div className="mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-full bg-green-100">
75
75
  <CheckCircle2 className="h-8 w-8 text-green-600" />
76
76
  </div>
77
- <h1 className="mb-2 text-2xl font-bold text-gray-900">Setup Complete</h1>
77
+ <h1 className="mb-2 text-2xl font-medium text-gray-900">Setup Complete</h1>
78
78
  <p className="mb-6 text-gray-600">
79
79
  Your admin account has been created. You can now sign in to manage your content.
80
80
  </p>
@@ -96,7 +96,7 @@ export function SetupWizard({ onComplete, siteName = 'Actuate CMS' }: SetupWizar
96
96
  <div className="mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-xl bg-blue-600">
97
97
  <Shield className="h-7 w-7 text-white" />
98
98
  </div>
99
- <h1 className="text-2xl font-bold text-gray-900">Welcome to {siteName}</h1>
99
+ <h1 className="text-2xl font-medium text-gray-900">Welcome to {siteName}</h1>
100
100
  <p className="mt-2 text-gray-600">Create your admin account to get started</p>
101
101
  </div>
102
102
 
@@ -139,7 +139,7 @@ export function SectionInspector({
139
139
 
140
140
  {/* Content fields (schema-driven) */}
141
141
  <fieldset disabled={!canEdit} className="space-y-3">
142
- <legend className="text-muted-foreground mb-2 text-[10px] font-semibold tracking-wider uppercase">
142
+ <legend className="text-muted-foreground mb-2 text-[10px] font-medium tracking-wider uppercase">
143
143
  Content
144
144
  </legend>
145
145
  {def?.fields.map((field) => (
@@ -154,7 +154,7 @@ export function SectionInspector({
154
154
 
155
155
  {/* Section meta + visibility */}
156
156
  <fieldset disabled={!canEdit} className="space-y-3">
157
- <legend className="text-muted-foreground mb-2 text-[10px] font-semibold tracking-wider uppercase">
157
+ <legend className="text-muted-foreground mb-2 text-[10px] font-medium tracking-wider uppercase">
158
158
  Section settings
159
159
  </legend>
160
160
  <div>
@@ -203,7 +203,7 @@ export function SectionInspector({
203
203
 
204
204
  {/* Appearance */}
205
205
  <fieldset disabled={!canEdit} className="space-y-3">
206
- <legend className="text-muted-foreground mb-2 text-[10px] font-semibold tracking-wider uppercase">
206
+ <legend className="text-muted-foreground mb-2 text-[10px] font-medium tracking-wider uppercase">
207
207
  Appearance
208
208
  </legend>
209
209
  <div>
@@ -263,7 +263,7 @@ export function SectionInspector({
263
263
 
264
264
  {/* Advanced */}
265
265
  <fieldset disabled={!canEdit} className="space-y-3">
266
- <legend className="text-muted-foreground mb-2 text-[10px] font-semibold tracking-wider uppercase">
266
+ <legend className="text-muted-foreground mb-2 text-[10px] font-medium tracking-wider uppercase">
267
267
  Advanced
268
268
  </legend>
269
269
  <div>
@@ -49,9 +49,7 @@ export function PostHeader({ config, context }: PostHeaderProps) {
49
49
  <div className="absolute inset-0 bg-linear-to-t from-black/70 to-black/10" aria-hidden />
50
50
  <div className="absolute inset-x-0 bottom-0 px-6 pb-8">
51
51
  <div className={`mx-auto flex max-w-3xl flex-col ${align}`}>
52
- <h1 className="text-3xl font-semibold tracking-tight text-white sm:text-4xl">
53
- {title}
54
- </h1>
52
+ <h1 className="text-3xl font-medium tracking-tight text-white sm:text-4xl">{title}</h1>
55
53
  {config.showExcerpt && context.excerpt && (
56
54
  <p className="mt-3 max-w-2xl text-lg text-white/90">{context.excerpt}</p>
57
55
  )}
@@ -67,7 +65,7 @@ export function PostHeader({ config, context }: PostHeaderProps) {
67
65
  <div
68
66
  className={`flex max-w-3xl flex-col ${align} ${config.layout === 'centered' ? 'mx-auto' : ''}`}
69
67
  >
70
- <h1 className="text-3xl font-semibold tracking-tight text-zinc-900 sm:text-4xl">{title}</h1>
68
+ <h1 className="text-3xl font-medium tracking-tight text-zinc-900 sm:text-4xl">{title}</h1>
71
69
  {config.showExcerpt && context.excerpt && (
72
70
  <p className="mt-3 max-w-2xl text-lg text-zinc-600">{context.excerpt}</p>
73
71
  )}
@@ -48,7 +48,7 @@ export function PostHeaderPanel({ header, canEdit, onClose, onChange }: PostHead
48
48
 
49
49
  <div className="flex-1 space-y-6 overflow-y-auto p-4">
50
50
  <fieldset disabled={!canEdit} className="space-y-3">
51
- <legend className="text-muted-foreground mb-2 text-[10px] font-semibold tracking-wider uppercase">
51
+ <legend className="text-muted-foreground mb-2 text-[10px] font-medium tracking-wider uppercase">
52
52
  Layout
53
53
  </legend>
54
54
  <div>
@@ -69,7 +69,7 @@ export function PostHeaderPanel({ header, canEdit, onClose, onChange }: PostHead
69
69
  </fieldset>
70
70
 
71
71
  <fieldset disabled={!canEdit} className="space-y-2">
72
- <legend className="text-muted-foreground mb-2 text-[10px] font-semibold tracking-wider uppercase">
72
+ <legend className="text-muted-foreground mb-2 text-[10px] font-medium tracking-wider uppercase">
73
73
  Show in header
74
74
  </legend>
75
75
  {TOGGLES.map((t) => {