@actuate-media/cms-admin 0.1.0

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 (295) hide show
  1. package/dist/AdminRoot.d.ts +21 -0
  2. package/dist/AdminRoot.d.ts.map +1 -0
  3. package/dist/AdminRoot.js +136 -0
  4. package/dist/AdminRoot.js.map +1 -0
  5. package/dist/components/Breadcrumbs.d.ts +6 -0
  6. package/dist/components/Breadcrumbs.d.ts.map +1 -0
  7. package/dist/components/Breadcrumbs.js +52 -0
  8. package/dist/components/Breadcrumbs.js.map +1 -0
  9. package/dist/components/CommandPalette.d.ts +7 -0
  10. package/dist/components/CommandPalette.d.ts.map +1 -0
  11. package/dist/components/CommandPalette.js +152 -0
  12. package/dist/components/CommandPalette.js.map +1 -0
  13. package/dist/components/ErrorBoundary.d.ts +17 -0
  14. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  15. package/dist/components/ErrorBoundary.js +24 -0
  16. package/dist/components/ErrorBoundary.js.map +1 -0
  17. package/dist/components/FocalPointPicker.d.ts +9 -0
  18. package/dist/components/FocalPointPicker.d.ts.map +1 -0
  19. package/dist/components/FocalPointPicker.js +19 -0
  20. package/dist/components/FocalPointPicker.js.map +1 -0
  21. package/dist/components/FolderTree.d.ts +28 -0
  22. package/dist/components/FolderTree.d.ts.map +1 -0
  23. package/dist/components/FolderTree.js +198 -0
  24. package/dist/components/FolderTree.js.map +1 -0
  25. package/dist/components/LivePreview.d.ts +10 -0
  26. package/dist/components/LivePreview.d.ts.map +1 -0
  27. package/dist/components/LivePreview.js +62 -0
  28. package/dist/components/LivePreview.js.map +1 -0
  29. package/dist/components/LocaleProvider.d.ts +28 -0
  30. package/dist/components/LocaleProvider.d.ts.map +1 -0
  31. package/dist/components/LocaleProvider.js +29 -0
  32. package/dist/components/LocaleProvider.js.map +1 -0
  33. package/dist/components/LocaleSwitcher.d.ts +2 -0
  34. package/dist/components/LocaleSwitcher.d.ts.map +1 -0
  35. package/dist/components/LocaleSwitcher.js +13 -0
  36. package/dist/components/LocaleSwitcher.js.map +1 -0
  37. package/dist/components/MediaPickerModal.d.ts +8 -0
  38. package/dist/components/MediaPickerModal.d.ts.map +1 -0
  39. package/dist/components/MediaPickerModal.js +53 -0
  40. package/dist/components/MediaPickerModal.js.map +1 -0
  41. package/dist/components/PresenceIndicator.d.ts +7 -0
  42. package/dist/components/PresenceIndicator.d.ts.map +1 -0
  43. package/dist/components/PresenceIndicator.js +37 -0
  44. package/dist/components/PresenceIndicator.js.map +1 -0
  45. package/dist/components/SEOPanel.d.ts +26 -0
  46. package/dist/components/SEOPanel.d.ts.map +1 -0
  47. package/dist/components/SEOPanel.js +249 -0
  48. package/dist/components/SEOPanel.js.map +1 -0
  49. package/dist/components/ThemeProvider.d.ts +13 -0
  50. package/dist/components/ThemeProvider.d.ts.map +1 -0
  51. package/dist/components/ThemeProvider.js +62 -0
  52. package/dist/components/ThemeProvider.js.map +1 -0
  53. package/dist/components/TipTapEditor.d.ts +9 -0
  54. package/dist/components/TipTapEditor.d.ts.map +1 -0
  55. package/dist/components/TipTapEditor.js +167 -0
  56. package/dist/components/TipTapEditor.js.map +1 -0
  57. package/dist/components/VersionHistory.d.ts +9 -0
  58. package/dist/components/VersionHistory.d.ts.map +1 -0
  59. package/dist/components/VersionHistory.js +70 -0
  60. package/dist/components/VersionHistory.js.map +1 -0
  61. package/dist/components/ui/Avatar.d.ts +9 -0
  62. package/dist/components/ui/Avatar.d.ts.map +1 -0
  63. package/dist/components/ui/Avatar.js +21 -0
  64. package/dist/components/ui/Avatar.js.map +1 -0
  65. package/dist/components/ui/Badge.d.ts +5 -0
  66. package/dist/components/ui/Badge.d.ts.map +1 -0
  67. package/dist/components/ui/Badge.js +17 -0
  68. package/dist/components/ui/Badge.js.map +1 -0
  69. package/dist/components/ui/Button.d.ts +12 -0
  70. package/dist/components/ui/Button.d.ts.map +1 -0
  71. package/dist/components/ui/Button.js +17 -0
  72. package/dist/components/ui/Button.js.map +1 -0
  73. package/dist/components/ui/CommandPalette.d.ts +14 -0
  74. package/dist/components/ui/CommandPalette.d.ts.map +1 -0
  75. package/dist/components/ui/CommandPalette.js +52 -0
  76. package/dist/components/ui/CommandPalette.js.map +1 -0
  77. package/dist/components/ui/ConfirmDialog.d.ts +12 -0
  78. package/dist/components/ui/ConfirmDialog.d.ts.map +1 -0
  79. package/dist/components/ui/ConfirmDialog.js +11 -0
  80. package/dist/components/ui/ConfirmDialog.js.map +1 -0
  81. package/dist/components/ui/DataTable.d.ts +30 -0
  82. package/dist/components/ui/DataTable.d.ts.map +1 -0
  83. package/dist/components/ui/DataTable.js +40 -0
  84. package/dist/components/ui/DataTable.js.map +1 -0
  85. package/dist/components/ui/EmptyState.d.ts +10 -0
  86. package/dist/components/ui/EmptyState.d.ts.map +1 -0
  87. package/dist/components/ui/EmptyState.js +6 -0
  88. package/dist/components/ui/EmptyState.js.map +1 -0
  89. package/dist/components/ui/Modal.d.ts +10 -0
  90. package/dist/components/ui/Modal.d.ts.map +1 -0
  91. package/dist/components/ui/Modal.js +19 -0
  92. package/dist/components/ui/Modal.js.map +1 -0
  93. package/dist/components/ui/Pagination.d.ts +9 -0
  94. package/dist/components/ui/Pagination.d.ts.map +1 -0
  95. package/dist/components/ui/Pagination.js +21 -0
  96. package/dist/components/ui/Pagination.js.map +1 -0
  97. package/dist/components/ui/SearchInput.d.ts +7 -0
  98. package/dist/components/ui/SearchInput.d.ts.map +1 -0
  99. package/dist/components/ui/SearchInput.js +6 -0
  100. package/dist/components/ui/SearchInput.js.map +1 -0
  101. package/dist/components/ui/Skeleton.d.ts +9 -0
  102. package/dist/components/ui/Skeleton.d.ts.map +1 -0
  103. package/dist/components/ui/Skeleton.js +11 -0
  104. package/dist/components/ui/Skeleton.js.map +1 -0
  105. package/dist/components/ui/Toast.d.ts +18 -0
  106. package/dist/components/ui/Toast.d.ts.map +1 -0
  107. package/dist/components/ui/Toast.js +29 -0
  108. package/dist/components/ui/Toast.js.map +1 -0
  109. package/dist/components/ui/index.d.ts +25 -0
  110. package/dist/components/ui/index.d.ts.map +1 -0
  111. package/dist/components/ui/index.js +13 -0
  112. package/dist/components/ui/index.js.map +1 -0
  113. package/dist/fields/ArrayField.d.ts +9 -0
  114. package/dist/fields/ArrayField.d.ts.map +1 -0
  115. package/dist/fields/ArrayField.js +21 -0
  116. package/dist/fields/ArrayField.js.map +1 -0
  117. package/dist/fields/BlockBuilderField.d.ts +16 -0
  118. package/dist/fields/BlockBuilderField.d.ts.map +1 -0
  119. package/dist/fields/BlockBuilderField.js +110 -0
  120. package/dist/fields/BlockBuilderField.js.map +1 -0
  121. package/dist/fields/DateField.d.ts +9 -0
  122. package/dist/fields/DateField.d.ts.map +1 -0
  123. package/dist/fields/DateField.js +6 -0
  124. package/dist/fields/DateField.js.map +1 -0
  125. package/dist/fields/FieldRenderer.d.ts +22 -0
  126. package/dist/fields/FieldRenderer.d.ts.map +1 -0
  127. package/dist/fields/FieldRenderer.js +38 -0
  128. package/dist/fields/FieldRenderer.js.map +1 -0
  129. package/dist/fields/GroupField.d.ts +8 -0
  130. package/dist/fields/GroupField.d.ts.map +1 -0
  131. package/dist/fields/GroupField.js +8 -0
  132. package/dist/fields/GroupField.js.map +1 -0
  133. package/dist/fields/MediaField.d.ts +13 -0
  134. package/dist/fields/MediaField.d.ts.map +1 -0
  135. package/dist/fields/MediaField.js +6 -0
  136. package/dist/fields/MediaField.js.map +1 -0
  137. package/dist/fields/NavBuilderField.d.ts +15 -0
  138. package/dist/fields/NavBuilderField.d.ts.map +1 -0
  139. package/dist/fields/NavBuilderField.js +19 -0
  140. package/dist/fields/NavBuilderField.js.map +1 -0
  141. package/dist/fields/NumberField.d.ts +12 -0
  142. package/dist/fields/NumberField.d.ts.map +1 -0
  143. package/dist/fields/NumberField.js +6 -0
  144. package/dist/fields/NumberField.js.map +1 -0
  145. package/dist/fields/RelationshipField.d.ts +13 -0
  146. package/dist/fields/RelationshipField.d.ts.map +1 -0
  147. package/dist/fields/RelationshipField.js +119 -0
  148. package/dist/fields/RelationshipField.js.map +1 -0
  149. package/dist/fields/RichTextField.d.ts +9 -0
  150. package/dist/fields/RichTextField.d.ts.map +1 -0
  151. package/dist/fields/RichTextField.js +7 -0
  152. package/dist/fields/RichTextField.js.map +1 -0
  153. package/dist/fields/SelectField.d.ts +11 -0
  154. package/dist/fields/SelectField.d.ts.map +1 -0
  155. package/dist/fields/SelectField.js +31 -0
  156. package/dist/fields/SelectField.js.map +1 -0
  157. package/dist/fields/SlugField.d.ts +10 -0
  158. package/dist/fields/SlugField.d.ts.map +1 -0
  159. package/dist/fields/SlugField.js +15 -0
  160. package/dist/fields/SlugField.js.map +1 -0
  161. package/dist/fields/TextField.d.ts +11 -0
  162. package/dist/fields/TextField.d.ts.map +1 -0
  163. package/dist/fields/TextField.js +8 -0
  164. package/dist/fields/TextField.js.map +1 -0
  165. package/dist/fields/ToggleField.d.ts +8 -0
  166. package/dist/fields/ToggleField.d.ts.map +1 -0
  167. package/dist/fields/ToggleField.js +6 -0
  168. package/dist/fields/ToggleField.js.map +1 -0
  169. package/dist/fields/block-types.d.ts +18 -0
  170. package/dist/fields/block-types.d.ts.map +1 -0
  171. package/dist/fields/block-types.js +88 -0
  172. package/dist/fields/block-types.js.map +1 -0
  173. package/dist/fields/index.d.ts +18 -0
  174. package/dist/fields/index.d.ts.map +1 -0
  175. package/dist/fields/index.js +16 -0
  176. package/dist/fields/index.js.map +1 -0
  177. package/dist/hooks/useContentLock.d.ts +12 -0
  178. package/dist/hooks/useContentLock.d.ts.map +1 -0
  179. package/dist/hooks/useContentLock.js +38 -0
  180. package/dist/hooks/useContentLock.js.map +1 -0
  181. package/dist/hooks/useDebounce.d.ts +2 -0
  182. package/dist/hooks/useDebounce.d.ts.map +1 -0
  183. package/dist/hooks/useDebounce.js +11 -0
  184. package/dist/hooks/useDebounce.js.map +1 -0
  185. package/dist/hooks/useKeyboardShortcuts.d.ts +6 -0
  186. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  187. package/dist/hooks/useKeyboardShortcuts.js +26 -0
  188. package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
  189. package/dist/index.d.ts +52 -0
  190. package/dist/index.d.ts.map +1 -0
  191. package/dist/index.js +39 -0
  192. package/dist/index.js.map +1 -0
  193. package/dist/layout/Header.d.ts +7 -0
  194. package/dist/layout/Header.d.ts.map +1 -0
  195. package/dist/layout/Header.js +18 -0
  196. package/dist/layout/Header.js.map +1 -0
  197. package/dist/layout/Layout.d.ts +10 -0
  198. package/dist/layout/Layout.d.ts.map +1 -0
  199. package/dist/layout/Layout.js +25 -0
  200. package/dist/layout/Layout.js.map +1 -0
  201. package/dist/layout/Sidebar.d.ts +9 -0
  202. package/dist/layout/Sidebar.d.ts.map +1 -0
  203. package/dist/layout/Sidebar.js +63 -0
  204. package/dist/layout/Sidebar.js.map +1 -0
  205. package/dist/lib/api.d.ts +8 -0
  206. package/dist/lib/api.d.ts.map +1 -0
  207. package/dist/lib/api.js +59 -0
  208. package/dist/lib/api.js.map +1 -0
  209. package/dist/lib/search.d.ts +11 -0
  210. package/dist/lib/search.d.ts.map +1 -0
  211. package/dist/lib/search.js +46 -0
  212. package/dist/lib/search.js.map +1 -0
  213. package/dist/lib/useApiData.d.ts +8 -0
  214. package/dist/lib/useApiData.d.ts.map +1 -0
  215. package/dist/lib/useApiData.js +36 -0
  216. package/dist/lib/useApiData.js.map +1 -0
  217. package/dist/lib/utils.d.ts +3 -0
  218. package/dist/lib/utils.d.ts.map +1 -0
  219. package/dist/lib/utils.js +6 -0
  220. package/dist/lib/utils.js.map +1 -0
  221. package/dist/router/index.d.ts +10 -0
  222. package/dist/router/index.d.ts.map +1 -0
  223. package/dist/router/index.js +61 -0
  224. package/dist/router/index.js.map +1 -0
  225. package/dist/views/CollectionList.d.ts +7 -0
  226. package/dist/views/CollectionList.d.ts.map +1 -0
  227. package/dist/views/CollectionList.js +107 -0
  228. package/dist/views/CollectionList.js.map +1 -0
  229. package/dist/views/Dashboard.d.ts +5 -0
  230. package/dist/views/Dashboard.d.ts.map +1 -0
  231. package/dist/views/Dashboard.js +17 -0
  232. package/dist/views/Dashboard.js.map +1 -0
  233. package/dist/views/DocumentEdit.d.ts +8 -0
  234. package/dist/views/DocumentEdit.d.ts.map +1 -0
  235. package/dist/views/DocumentEdit.js +210 -0
  236. package/dist/views/DocumentEdit.js.map +1 -0
  237. package/dist/views/FormEditor.d.ts +6 -0
  238. package/dist/views/FormEditor.d.ts.map +1 -0
  239. package/dist/views/FormEditor.js +126 -0
  240. package/dist/views/FormEditor.js.map +1 -0
  241. package/dist/views/FormSubmissions.d.ts +6 -0
  242. package/dist/views/FormSubmissions.d.ts.map +1 -0
  243. package/dist/views/FormSubmissions.js +88 -0
  244. package/dist/views/FormSubmissions.js.map +1 -0
  245. package/dist/views/Forms.d.ts +5 -0
  246. package/dist/views/Forms.d.ts.map +1 -0
  247. package/dist/views/Forms.js +24 -0
  248. package/dist/views/Forms.js.map +1 -0
  249. package/dist/views/Login.d.ts +10 -0
  250. package/dist/views/Login.d.ts.map +1 -0
  251. package/dist/views/Login.js +83 -0
  252. package/dist/views/Login.js.map +1 -0
  253. package/dist/views/MediaBrowser.d.ts +5 -0
  254. package/dist/views/MediaBrowser.d.ts.map +1 -0
  255. package/dist/views/MediaBrowser.js +245 -0
  256. package/dist/views/MediaBrowser.js.map +1 -0
  257. package/dist/views/PageEditor.d.ts +6 -0
  258. package/dist/views/PageEditor.d.ts.map +1 -0
  259. package/dist/views/PageEditor.js +74 -0
  260. package/dist/views/PageEditor.js.map +1 -0
  261. package/dist/views/Pages.d.ts +5 -0
  262. package/dist/views/Pages.d.ts.map +1 -0
  263. package/dist/views/Pages.js +127 -0
  264. package/dist/views/Pages.js.map +1 -0
  265. package/dist/views/PostEditor.d.ts +6 -0
  266. package/dist/views/PostEditor.d.ts.map +1 -0
  267. package/dist/views/PostEditor.js +79 -0
  268. package/dist/views/PostEditor.js.map +1 -0
  269. package/dist/views/Posts.d.ts +5 -0
  270. package/dist/views/Posts.d.ts.map +1 -0
  271. package/dist/views/Posts.js +67 -0
  272. package/dist/views/Posts.js.map +1 -0
  273. package/dist/views/Redirects.d.ts +5 -0
  274. package/dist/views/Redirects.d.ts.map +1 -0
  275. package/dist/views/Redirects.js +79 -0
  276. package/dist/views/Redirects.js.map +1 -0
  277. package/dist/views/SEO.d.ts +6 -0
  278. package/dist/views/SEO.d.ts.map +1 -0
  279. package/dist/views/SEO.js +120 -0
  280. package/dist/views/SEO.js.map +1 -0
  281. package/dist/views/Settings.d.ts +5 -0
  282. package/dist/views/Settings.d.ts.map +1 -0
  283. package/dist/views/Settings.js +95 -0
  284. package/dist/views/Settings.js.map +1 -0
  285. package/dist/views/SetupWizard.d.ts +13 -0
  286. package/dist/views/SetupWizard.d.ts.map +1 -0
  287. package/dist/views/SetupWizard.js +68 -0
  288. package/dist/views/SetupWizard.js.map +1 -0
  289. package/dist/views/Users.d.ts +5 -0
  290. package/dist/views/Users.d.ts.map +1 -0
  291. package/dist/views/Users.js +69 -0
  292. package/dist/views/Users.js.map +1 -0
  293. package/package.json +71 -0
  294. package/src/styles/tailwind.css +2 -0
  295. package/src/styles/theme.css +175 -0
@@ -0,0 +1,249 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useMemo } from 'react';
4
+ import { Search, RefreshCw, EyeOff, ChevronDown, ChevronUp, Globe, Share2, Settings2, Target, BookOpen, CheckCircle2, AlertCircle, XCircle, BarChart3, Star, } from 'lucide-react';
5
+ const SCHEMA_TYPES = [
6
+ 'Article',
7
+ 'BlogPosting',
8
+ 'WebPage',
9
+ 'FAQPage',
10
+ 'Product',
11
+ 'Event',
12
+ 'LocalBusiness',
13
+ 'HowTo',
14
+ 'Recipe',
15
+ ];
16
+ function stripHtml(html) {
17
+ return html.replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim();
18
+ }
19
+ function countWords(text) {
20
+ if (!text.trim())
21
+ return 0;
22
+ return text.trim().split(/\s+/).length;
23
+ }
24
+ function countSentences(text) {
25
+ if (!text.trim())
26
+ return 0;
27
+ const matches = text.match(/[.!?]+/g);
28
+ return matches ? matches.length : 1;
29
+ }
30
+ function countSyllables(word) {
31
+ const w = word.toLowerCase().replace(/[^a-z]/g, '');
32
+ if (w.length <= 3)
33
+ return 1;
34
+ let count = 0;
35
+ const vowels = 'aeiouy';
36
+ let prevVowel = false;
37
+ for (let i = 0; i < w.length; i++) {
38
+ const isVowel = vowels.includes(w[i] ?? '');
39
+ if (isVowel && !prevVowel)
40
+ count++;
41
+ prevVowel = isVowel;
42
+ }
43
+ if (w.endsWith('e') && count > 1)
44
+ count--;
45
+ return Math.max(count, 1);
46
+ }
47
+ function analyzeReadability(text) {
48
+ const plainText = stripHtml(text);
49
+ const wordCount = countWords(plainText);
50
+ const sentenceCount = countSentences(plainText);
51
+ const avgSentenceLength = sentenceCount > 0 ? wordCount / sentenceCount : 0;
52
+ const readingTime = Math.max(1, Math.ceil(wordCount / 200));
53
+ let fleschScore = 0;
54
+ if (wordCount > 0 && sentenceCount > 0) {
55
+ const words = plainText.split(/\s+/);
56
+ const totalSyllables = words.reduce((sum, w) => sum + countSyllables(w), 0);
57
+ fleschScore = Math.round(206.835 - 1.015 * (wordCount / sentenceCount) - 84.6 * (totalSyllables / wordCount));
58
+ fleschScore = Math.max(0, Math.min(100, fleschScore));
59
+ }
60
+ const passivePatterns = /\b(is|are|was|were|been|being|be)\s+\w+ed\b/gi;
61
+ const passiveMatches = plainText.match(passivePatterns);
62
+ const passiveEstimate = passiveMatches
63
+ ? Math.round((passiveMatches.length / Math.max(sentenceCount, 1)) * 100)
64
+ : 0;
65
+ return { fleschScore, avgSentenceLength, wordCount, readingTime, passiveEstimate };
66
+ }
67
+ function runSEOChecks(seoData, title, slug, content) {
68
+ const checks = [];
69
+ const plainText = stripHtml(content);
70
+ const wordCount = countWords(plainText);
71
+ const keyphrase = (seoData.focusKeyphrase ?? '').toLowerCase().trim();
72
+ const metaTitle = seoData.metaTitle ?? '';
73
+ const metaDesc = seoData.metaDescription ?? '';
74
+ // Meta title length
75
+ if (!metaTitle) {
76
+ checks.push({ id: 'title-missing', label: 'Meta title', status: 'bad', detail: 'No meta title set' });
77
+ }
78
+ else if (metaTitle.length >= 30 && metaTitle.length <= 60) {
79
+ checks.push({ id: 'title-length', label: 'Meta title length', status: 'good', detail: `${metaTitle.length} chars (ideal: 30-60)` });
80
+ }
81
+ else if (metaTitle.length > 60) {
82
+ checks.push({ id: 'title-length', label: 'Meta title length', status: 'ok', detail: `${metaTitle.length} chars — too long, may be truncated` });
83
+ }
84
+ else {
85
+ checks.push({ id: 'title-length', label: 'Meta title length', status: 'ok', detail: `${metaTitle.length} chars — quite short` });
86
+ }
87
+ // Meta description length
88
+ if (!metaDesc) {
89
+ checks.push({ id: 'desc-missing', label: 'Meta description', status: 'bad', detail: 'No meta description set' });
90
+ }
91
+ else if (metaDesc.length >= 120 && metaDesc.length <= 160) {
92
+ checks.push({ id: 'desc-length', label: 'Meta description length', status: 'good', detail: `${metaDesc.length} chars (ideal: 120-160)` });
93
+ }
94
+ else if (metaDesc.length > 160) {
95
+ checks.push({ id: 'desc-length', label: 'Meta description length', status: 'ok', detail: `${metaDesc.length} chars — may be truncated` });
96
+ }
97
+ else {
98
+ checks.push({ id: 'desc-length', label: 'Meta description length', status: 'ok', detail: `${metaDesc.length} chars — could be longer` });
99
+ }
100
+ // Content length
101
+ if (wordCount >= 300) {
102
+ checks.push({ id: 'content-length', label: 'Content length', status: 'good', detail: `${wordCount} words` });
103
+ }
104
+ else if (wordCount >= 150) {
105
+ checks.push({ id: 'content-length', label: 'Content length', status: 'ok', detail: `${wordCount} words — aim for 300+` });
106
+ }
107
+ else {
108
+ checks.push({ id: 'content-length', label: 'Content length', status: 'bad', detail: `${wordCount} words — too short` });
109
+ }
110
+ // Focus keyphrase checks
111
+ if (!keyphrase) {
112
+ checks.push({ id: 'keyphrase-missing', label: 'Focus keyphrase', status: 'bad', detail: 'No focus keyphrase set' });
113
+ }
114
+ else {
115
+ const inTitle = metaTitle.toLowerCase().includes(keyphrase);
116
+ checks.push({
117
+ id: 'keyphrase-title',
118
+ label: 'Keyphrase in title',
119
+ status: inTitle ? 'good' : 'bad',
120
+ detail: inTitle ? 'Found in meta title' : 'Not found in meta title',
121
+ });
122
+ const inDesc = metaDesc.toLowerCase().includes(keyphrase);
123
+ checks.push({
124
+ id: 'keyphrase-desc',
125
+ label: 'Keyphrase in description',
126
+ status: inDesc ? 'good' : 'ok',
127
+ detail: inDesc ? 'Found in meta description' : 'Not found in meta description',
128
+ });
129
+ const inSlug = slug.toLowerCase().includes(keyphrase.replace(/\s+/g, '-'));
130
+ checks.push({
131
+ id: 'keyphrase-slug',
132
+ label: 'Keyphrase in slug',
133
+ status: inSlug ? 'good' : 'ok',
134
+ detail: inSlug ? 'Found in URL slug' : 'Not found in URL slug',
135
+ });
136
+ const firstParagraph = plainText.slice(0, 300).toLowerCase();
137
+ const inIntro = firstParagraph.includes(keyphrase);
138
+ checks.push({
139
+ id: 'keyphrase-intro',
140
+ label: 'Keyphrase in introduction',
141
+ status: inIntro ? 'good' : 'ok',
142
+ detail: inIntro ? 'Found in first paragraph' : 'Not found in first paragraph',
143
+ });
144
+ if (wordCount > 0) {
145
+ const kpWords = keyphrase.split(/\s+/).length;
146
+ const regex = new RegExp(keyphrase.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi');
147
+ const matches = plainText.match(regex);
148
+ const occurrences = matches ? matches.length : 0;
149
+ const density = (occurrences * kpWords) / wordCount * 100;
150
+ const densityOk = density >= 0.5 && density <= 3;
151
+ checks.push({
152
+ id: 'keyphrase-density',
153
+ label: 'Keyphrase density',
154
+ status: densityOk ? 'good' : density === 0 ? 'bad' : 'ok',
155
+ detail: `${density.toFixed(1)}% (aim for 0.5-3%)`,
156
+ });
157
+ }
158
+ }
159
+ // Image alt text
160
+ const imgTags = content.match(/<img[^>]*>/gi) ?? [];
161
+ if (imgTags.length > 0) {
162
+ const withoutAlt = imgTags.filter(tag => !tag.match(/alt\s*=\s*["'][^"']+["']/i));
163
+ if (withoutAlt.length === 0) {
164
+ checks.push({ id: 'img-alt', label: 'Image alt text', status: 'good', detail: 'All images have alt text' });
165
+ }
166
+ else {
167
+ checks.push({ id: 'img-alt', label: 'Image alt text', status: 'ok', detail: `${withoutAlt.length} image(s) missing alt text` });
168
+ }
169
+ }
170
+ // OG checks
171
+ const hasOgTitle = !!(seoData.ogTitle || metaTitle);
172
+ const hasOgDesc = !!(seoData.ogDescription || metaDesc);
173
+ const hasOgImage = !!seoData.ogImage;
174
+ checks.push({
175
+ id: 'og-title',
176
+ label: 'Social title',
177
+ status: hasOgTitle ? 'good' : 'ok',
178
+ detail: hasOgTitle ? 'Set' : 'Missing — will fall back to page title',
179
+ });
180
+ checks.push({
181
+ id: 'og-desc',
182
+ label: 'Social description',
183
+ status: hasOgDesc ? 'good' : 'ok',
184
+ detail: hasOgDesc ? 'Set' : 'Missing — will fall back to meta description',
185
+ });
186
+ checks.push({
187
+ id: 'og-image',
188
+ label: 'Social image',
189
+ status: hasOgImage ? 'good' : 'bad',
190
+ detail: hasOgImage ? 'Set' : 'No OG image set — strongly recommended',
191
+ });
192
+ return checks;
193
+ }
194
+ function computeOverallScore(checks) {
195
+ if (checks.length === 0)
196
+ return 0;
197
+ const scoreMap = { good: 100, ok: 50, bad: 0 };
198
+ const total = checks.reduce((sum, c) => sum + scoreMap[c.status], 0);
199
+ return Math.round(total / checks.length);
200
+ }
201
+ function StatusDot({ status }) {
202
+ if (status === 'good')
203
+ return _jsx(CheckCircle2, { className: "h-4 w-4 shrink-0 text-green-500" });
204
+ if (status === 'ok')
205
+ return _jsx(AlertCircle, { className: "h-4 w-4 shrink-0 text-amber-500" });
206
+ return _jsx(XCircle, { className: "h-4 w-4 shrink-0 text-red-500" });
207
+ }
208
+ function ScoreRing({ score }) {
209
+ const radius = 28;
210
+ const circumference = 2 * Math.PI * radius;
211
+ const offset = circumference - (score / 100) * circumference;
212
+ const color = score >= 70 ? '#22c55e' : score >= 40 ? '#f59e0b' : '#ef4444';
213
+ return (_jsxs("div", { className: "relative inline-flex items-center justify-center", children: [_jsxs("svg", { width: "72", height: "72", className: "-rotate-90", children: [_jsx("circle", { cx: "36", cy: "36", r: radius, fill: "none", stroke: "var(--border)", strokeWidth: "5" }), _jsx("circle", { cx: "36", cy: "36", r: radius, fill: "none", stroke: color, strokeWidth: "5", strokeDasharray: circumference, strokeDashoffset: offset, strokeLinecap: "round", className: "transition-all duration-500" })] }), _jsx("span", { className: "absolute text-sm font-bold", style: { color }, children: score })] }));
214
+ }
215
+ function Section({ id, title, icon, expanded, onToggle, children, badge, }) {
216
+ return (_jsxs("div", { className: "border border-[var(--border)] rounded-lg overflow-hidden", children: [_jsxs("button", { onClick: () => onToggle(id), className: "flex items-center justify-between w-full px-4 py-2.5 text-left text-sm font-medium text-[var(--foreground)] hover:bg-[var(--muted)] transition-colors", children: [_jsxs("span", { className: "flex items-center gap-2", children: [icon, title, badge] }), expanded ? _jsx(ChevronUp, { className: "h-4 w-4 text-[var(--muted-foreground)]" }) : _jsx(ChevronDown, { className: "h-4 w-4 text-[var(--muted-foreground)]" })] }), expanded && _jsx("div", { className: "px-4 pb-4 pt-1", children: children })] }));
217
+ }
218
+ function ToggleSwitch({ label, description, checked, onChange, }) {
219
+ return (_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("label", { className: "text-sm font-medium text-[var(--foreground)]", children: label }), _jsx("p", { className: "text-xs text-[var(--muted-foreground)] mt-0.5", children: description })] }), _jsx("button", { type: "button", role: "switch", "aria-checked": checked, onClick: () => onChange(!checked), className: `relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full transition-colors ${checked ? 'bg-[var(--primary)]' : 'bg-[var(--muted)]'}`, children: _jsx("span", { className: `pointer-events-none block h-5 w-5 rounded-full bg-white shadow-sm transition-transform mt-0.5 ${checked ? 'translate-x-[22px]' : 'translate-x-0.5'}` }) })] }));
220
+ }
221
+ function InputField({ label, value, onChange, placeholder, type = 'text', charCount, charTarget, }) {
222
+ return (_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium text-[var(--muted-foreground)] mb-1", children: label }), _jsx("input", { type: type, value: value, onChange: (e) => onChange(e.target.value), className: "w-full px-3 py-1.5 text-sm border border-[var(--border)] rounded-lg bg-[var(--background)] text-[var(--foreground)] focus:outline-none focus:ring-2 focus:ring-[var(--primary)] placeholder:text-[var(--muted-foreground)]", placeholder: placeholder }), charCount !== undefined && charTarget && (_jsxs("p", { className: "text-xs mt-1 text-[var(--muted-foreground)]", children: [charCount, " chars ", charTarget] }))] }));
223
+ }
224
+ function TextareaField({ label, value, onChange, placeholder, rows = 3, charCount, charTarget, }) {
225
+ return (_jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium text-[var(--muted-foreground)] mb-1", children: label }), _jsx("textarea", { value: value, onChange: (e) => onChange(e.target.value), rows: rows, className: "w-full px-3 py-1.5 text-sm border border-[var(--border)] rounded-lg bg-[var(--background)] text-[var(--foreground)] focus:outline-none focus:ring-2 focus:ring-[var(--primary)] resize-none placeholder:text-[var(--muted-foreground)]", placeholder: placeholder }), charCount !== undefined && charTarget && (_jsxs("p", { className: "text-xs mt-1 text-[var(--muted-foreground)]", children: [charCount, " chars ", charTarget] }))] }));
226
+ }
227
+ export function SEOPanel({ title, slug, content = '', seoData, onChange, siteUrl = 'https://example.com' }) {
228
+ const [expandedSections, setExpandedSections] = useState(['analysis']);
229
+ const update = (partial) => {
230
+ onChange({ ...seoData, ...partial });
231
+ };
232
+ const toggleSection = (id) => {
233
+ setExpandedSections((prev) => prev.includes(id) ? prev.filter((s) => s !== id) : [...prev, id]);
234
+ };
235
+ const checks = useMemo(() => runSEOChecks(seoData, title, slug, content), [seoData, title, slug, content]);
236
+ const readability = useMemo(() => analyzeReadability(content), [content]);
237
+ const score = useMemo(() => computeOverallScore(checks), [checks]);
238
+ const goodCount = checks.filter((c) => c.status === 'good').length;
239
+ const okCount = checks.filter((c) => c.status === 'ok').length;
240
+ const badCount = checks.filter((c) => c.status === 'bad').length;
241
+ const metaTitle = seoData.metaTitle ?? '';
242
+ const metaDesc = seoData.metaDescription ?? '';
243
+ const displayTitle = seoData.ogTitle || metaTitle || title || 'Page Title';
244
+ const displayDesc = seoData.ogDescription || metaDesc || 'Add a meta description to see how this page will appear in search results.';
245
+ const fleschLabel = readability.fleschScore >= 60 ? 'Easy to read' : readability.fleschScore >= 30 ? 'Fairly difficult' : 'Very difficult';
246
+ const fleschColor = readability.fleschScore >= 60 ? 'text-green-500' : readability.fleschScore >= 30 ? 'text-amber-500' : 'text-red-500';
247
+ return (_jsxs("div", { className: "rounded-lg border border-[var(--border)] bg-[var(--card)]", children: [_jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b border-[var(--border)]", children: [_jsxs("h3", { className: "font-semibold text-[var(--foreground)] flex items-center gap-2 text-sm", children: [_jsx(Search, { className: "w-4 h-4" }), "SEO"] }), _jsxs("button", { onClick: () => update({ metaTitle: title, ogTitle: '', ogDescription: '' }), className: "text-xs text-[var(--primary)] hover:opacity-80 flex items-center gap-1", children: [_jsx(RefreshCw, { className: "w-3 h-3" }), "Reset"] })] }), _jsxs("div", { className: "flex items-center gap-4 px-4 py-3 border-b border-[var(--border)]", children: [_jsx(ScoreRing, { score: score }), _jsxs("div", { className: "text-xs text-[var(--muted-foreground)] space-y-0.5", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(CheckCircle2, { className: "h-3 w-3 text-green-500" }), " ", goodCount, " passed"] }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(AlertCircle, { className: "h-3 w-3 text-amber-500" }), " ", okCount, " improvements"] }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(XCircle, { className: "h-3 w-3 text-red-500" }), " ", badCount, " issues"] })] })] }), _jsxs("div", { className: "p-3 space-y-2", children: [_jsx(Section, { id: "analysis", title: "SEO Analysis", icon: _jsx(BarChart3, { className: "h-4 w-4" }), expanded: expandedSections.includes('analysis'), onToggle: toggleSection, badge: _jsxs("span", { className: "ml-1 inline-flex items-center rounded-full bg-[var(--muted)] px-2 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)]", children: [goodCount, "/", checks.length] }), children: _jsx("div", { className: "space-y-1.5", children: checks.map((c) => (_jsxs("div", { className: "flex items-start gap-2 py-1", children: [_jsx(StatusDot, { status: c.status }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "text-sm text-[var(--foreground)] leading-snug", children: c.label }), _jsx("p", { className: "text-xs text-[var(--muted-foreground)]", children: c.detail })] })] }, c.id))) }) }), _jsxs(Section, { id: "readability", title: "Readability", icon: _jsx(BookOpen, { className: "h-4 w-4" }), expanded: expandedSections.includes('readability'), onToggle: toggleSection, children: [_jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "rounded-lg bg-[var(--muted)] p-2.5", children: [_jsx("p", { className: "text-xs text-[var(--muted-foreground)]", children: "Flesch Score" }), _jsx("p", { className: `text-lg font-bold ${fleschColor}`, children: readability.fleschScore }), _jsx("p", { className: `text-[10px] ${fleschColor}`, children: fleschLabel })] }), _jsxs("div", { className: "rounded-lg bg-[var(--muted)] p-2.5", children: [_jsx("p", { className: "text-xs text-[var(--muted-foreground)]", children: "Word Count" }), _jsx("p", { className: "text-lg font-bold text-[var(--foreground)]", children: readability.wordCount }), _jsx("p", { className: "text-[10px] text-[var(--muted-foreground)]", children: "words" })] }), _jsxs("div", { className: "rounded-lg bg-[var(--muted)] p-2.5", children: [_jsx("p", { className: "text-xs text-[var(--muted-foreground)]", children: "Avg. Sentence" }), _jsx("p", { className: "text-lg font-bold text-[var(--foreground)]", children: readability.avgSentenceLength.toFixed(1) }), _jsx("p", { className: "text-[10px] text-[var(--muted-foreground)]", children: "words/sentence" })] }), _jsxs("div", { className: "rounded-lg bg-[var(--muted)] p-2.5", children: [_jsx("p", { className: "text-xs text-[var(--muted-foreground)]", children: "Reading Time" }), _jsx("p", { className: "text-lg font-bold text-[var(--foreground)]", children: readability.readingTime }), _jsx("p", { className: "text-[10px] text-[var(--muted-foreground)]", children: "min" })] })] }), _jsxs("div", { className: "mt-3 flex items-center gap-2 text-xs text-[var(--muted-foreground)]", children: [_jsx("span", { children: "Passive voice est.:" }), _jsxs("span", { className: readability.passiveEstimate > 15 ? 'text-amber-500 font-medium' : 'text-green-500 font-medium', children: [readability.passiveEstimate, "%"] })] })] }), _jsx(Section, { id: "basic", title: "Basic SEO", icon: _jsx(Target, { className: "h-4 w-4" }), expanded: expandedSections.includes('basic'), onToggle: toggleSection, children: _jsxs("div", { className: "space-y-3", children: [_jsx(InputField, { label: "Meta Title", value: metaTitle, onChange: (v) => update({ metaTitle: v }), placeholder: title || 'Enter meta title', charCount: metaTitle.length, charTarget: "(ideal: 30-60)" }), _jsx(TextareaField, { label: "Meta Description", value: metaDesc, onChange: (v) => update({ metaDescription: v }), placeholder: "Brief description for search engines", charCount: metaDesc.length, charTarget: "(ideal: 120-160)" }), _jsx(InputField, { label: "Focus Keyphrase", value: seoData.focusKeyphrase ?? '', onChange: (v) => update({ focusKeyphrase: v }), placeholder: "Primary keyword or phrase" }), _jsx(InputField, { label: "Canonical URL", value: seoData.canonical ?? '', onChange: (v) => update({ canonical: v }), placeholder: "https://example.com/canonical-url", type: "url" })] }) }), _jsx(Section, { id: "robots", title: "Robots Meta", icon: _jsx(EyeOff, { className: "h-4 w-4" }), expanded: expandedSections.includes('robots'), onToggle: toggleSection, children: _jsxs("div", { className: "space-y-4", children: [_jsx(ToggleSwitch, { label: "No Index", description: "Prevent search engines from indexing this page", checked: seoData.noIndex ?? false, onChange: (v) => update({ noIndex: v }) }), _jsx(ToggleSwitch, { label: "No Follow", description: "Prevent search engines from following links", checked: seoData.noFollow ?? false, onChange: (v) => update({ noFollow: v }) })] }) }), _jsx(Section, { id: "preview", title: "Search Preview", icon: _jsx(Globe, { className: "h-4 w-4" }), expanded: expandedSections.includes('preview'), onToggle: toggleSection, children: _jsxs("div", { className: "rounded-lg border border-[var(--border)] p-3 bg-[var(--background)]", children: [_jsx("div", { className: "text-sm text-blue-600 hover:underline cursor-pointer line-clamp-1", children: metaTitle || title || 'Page Title' }), _jsxs("div", { className: "text-xs text-green-700 mt-1 truncate", children: [siteUrl, "/", slug] }), _jsx("div", { className: "text-sm text-[var(--muted-foreground)] mt-1 line-clamp-2", children: metaDesc || 'Add a meta description to see how this page will appear in search results.' })] }) }), _jsx(Section, { id: "social", title: "Social Media", icon: _jsx(Share2, { className: "h-4 w-4" }), expanded: expandedSections.includes('social'), onToggle: toggleSection, children: _jsxs("div", { className: "space-y-3", children: [_jsx(InputField, { label: "OG Title", value: seoData.ogTitle ?? '', onChange: (v) => update({ ogTitle: v }), placeholder: metaTitle || title || 'Leave blank to use meta title' }), _jsx(TextareaField, { label: "OG Description", value: seoData.ogDescription ?? '', onChange: (v) => update({ ogDescription: v }), rows: 2, placeholder: metaDesc || 'Leave blank to use meta description' }), _jsx(InputField, { label: "OG Image URL", value: seoData.ogImage ?? '', onChange: (v) => update({ ogImage: v }), placeholder: "https://example.com/og-image.jpg", type: "url" }), _jsxs("div", { className: "border-t border-[var(--border)] pt-3 mt-3", children: [_jsx("p", { className: "text-xs font-medium text-[var(--muted-foreground)] mb-2", children: "Twitter / X Overrides" }), _jsxs("div", { className: "space-y-3", children: [_jsx(InputField, { label: "Twitter Title", value: seoData.twitterTitle ?? '', onChange: (v) => update({ twitterTitle: v }), placeholder: "Leave blank to use OG title" }), _jsx(TextareaField, { label: "Twitter Description", value: seoData.twitterDescription ?? '', onChange: (v) => update({ twitterDescription: v }), rows: 2, placeholder: "Leave blank to use OG description" }), _jsx(InputField, { label: "Twitter Image URL", value: seoData.twitterImage ?? '', onChange: (v) => update({ twitterImage: v }), placeholder: "Leave blank to use OG image", type: "url" })] })] }), _jsxs("div", { className: "mt-3", children: [_jsx("p", { className: "text-xs font-medium text-[var(--muted-foreground)] mb-2", children: "Social Preview" }), _jsxs("div", { className: "rounded-lg border border-[var(--border)] overflow-hidden bg-[var(--muted)]", children: [seoData.ogImage ? (_jsx("div", { className: "aspect-video bg-[var(--muted)] flex items-center justify-center overflow-hidden", children: _jsx("img", { src: seoData.ogImage, alt: "OG preview", className: "w-full h-full object-cover" }) })) : (_jsx("div", { className: "aspect-video bg-[var(--muted)] flex items-center justify-center text-[var(--muted-foreground)] text-sm", children: "No OG image set" })), _jsxs("div", { className: "p-3", children: [_jsx("div", { className: "text-sm font-medium text-[var(--foreground)] line-clamp-1", children: displayTitle }), _jsx("div", { className: "text-xs text-[var(--muted-foreground)] mt-1 line-clamp-2", children: displayDesc.slice(0, 100) }), _jsx("div", { className: "text-xs text-[var(--muted-foreground)] mt-1 truncate", children: siteUrl })] })] })] })] }) }), _jsx(Section, { id: "advanced", title: "Advanced", icon: _jsx(Settings2, { className: "h-4 w-4" }), expanded: expandedSections.includes('advanced'), onToggle: toggleSection, children: _jsxs("div", { className: "space-y-4", children: [_jsx(ToggleSwitch, { label: "Cornerstone Content", description: "Mark as cornerstone \u2014 your most important, comprehensive articles", checked: seoData.isCornerstone ?? false, onChange: (v) => update({ isCornerstone: v }) }), seoData.isCornerstone && (_jsxs("div", { className: "flex items-center gap-1.5 text-xs text-amber-600 bg-amber-50 rounded-md px-2.5 py-1.5", children: [_jsx(Star, { className: "h-3.5 w-3.5" }), "Cornerstone content is held to stricter SEO standards"] })), _jsxs("div", { children: [_jsx("label", { className: "block text-xs font-medium text-[var(--muted-foreground)] mb-1", children: "Schema Type" }), _jsx("select", { value: seoData.schemaType ?? 'Article', onChange: (e) => update({ schemaType: e.target.value }), className: "w-full px-3 py-1.5 text-sm border border-[var(--border)] rounded-lg bg-[var(--background)] text-[var(--foreground)] focus:outline-none focus:ring-2 focus:ring-[var(--primary)]", children: SCHEMA_TYPES.map((t) => (_jsx("option", { value: t, children: t }, t))) })] })] }) })] })] }));
248
+ }
249
+ //# sourceMappingURL=SEOPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SEOPanel.js","sourceRoot":"","sources":["../../src/components/SEOPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type ReactNode } from 'react';
2
+ type Theme = 'light' | 'dark' | 'system';
3
+ interface ThemeContextValue {
4
+ theme: Theme;
5
+ resolvedTheme: 'light' | 'dark';
6
+ setTheme: (theme: Theme) => void;
7
+ }
8
+ export declare function useTheme(): ThemeContextValue;
9
+ export declare function ThemeProvider({ children }: {
10
+ children: ReactNode;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/components/ThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpG,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEzC,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAQD,wBAAgB,QAAQ,sBAEvB;AAaD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAuClE"}
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useState, useEffect, useCallback } from 'react';
4
+ const ThemeContext = createContext({
5
+ theme: 'system',
6
+ resolvedTheme: 'light',
7
+ setTheme: () => { },
8
+ });
9
+ export function useTheme() {
10
+ return useContext(ThemeContext);
11
+ }
12
+ function getSystemTheme() {
13
+ if (typeof window === 'undefined')
14
+ return 'light';
15
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
16
+ }
17
+ function resolveTheme(theme) {
18
+ return theme === 'system' ? getSystemTheme() : theme;
19
+ }
20
+ const STORAGE_KEY = 'actuate-theme';
21
+ export function ThemeProvider({ children }) {
22
+ const [theme, setThemeState] = useState('system');
23
+ const [resolvedTheme, setResolvedTheme] = useState('light');
24
+ useEffect(() => {
25
+ const stored = localStorage.getItem(STORAGE_KEY);
26
+ const initial = stored && ['light', 'dark', 'system'].includes(stored) ? stored : 'system';
27
+ setThemeState(initial);
28
+ const resolved = resolveTheme(initial);
29
+ setResolvedTheme(resolved);
30
+ applyTheme(resolved);
31
+ }, []);
32
+ useEffect(() => {
33
+ const mq = window.matchMedia('(prefers-color-scheme: dark)');
34
+ const handler = () => {
35
+ if (theme === 'system') {
36
+ const resolved = getSystemTheme();
37
+ setResolvedTheme(resolved);
38
+ applyTheme(resolved);
39
+ }
40
+ };
41
+ mq.addEventListener('change', handler);
42
+ return () => mq.removeEventListener('change', handler);
43
+ }, [theme]);
44
+ const setTheme = useCallback((next) => {
45
+ setThemeState(next);
46
+ localStorage.setItem(STORAGE_KEY, next);
47
+ const resolved = resolveTheme(next);
48
+ setResolvedTheme(resolved);
49
+ applyTheme(resolved);
50
+ }, []);
51
+ return (_jsx(ThemeContext.Provider, { value: { theme, resolvedTheme, setTheme }, children: children }));
52
+ }
53
+ function applyTheme(resolved) {
54
+ const root = document.documentElement;
55
+ if (resolved === 'dark') {
56
+ root.classList.add('dark');
57
+ }
58
+ else {
59
+ root.classList.remove('dark');
60
+ }
61
+ }
62
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/components/ThemeProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface TipTapEditorProps {
2
+ content: string;
3
+ onChange: (html: string) => void;
4
+ placeholder?: string;
5
+ editable?: boolean;
6
+ className?: string;
7
+ }
8
+ export declare function TipTapEditor({ content, onChange, placeholder, editable, className, }: TipTapEditorProps): import("react/jsx-runtime").JSX.Element | null;
9
+ //# sourceMappingURL=TipTapEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TipTapEditor.d.ts","sourceRoot":"","sources":["../../src/components/TipTapEditor.tsx"],"names":[],"mappings":"AA+CA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkWD,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAe,EACf,SAAS,GACV,EAAE,iBAAiB,kDAuDnB"}
@@ -0,0 +1,167 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { useEditor, EditorContent } from '@tiptap/react';
5
+ import { MediaPickerModal } from './MediaPickerModal';
6
+ import StarterKit from '@tiptap/starter-kit';
7
+ import UnderlineExt from '@tiptap/extension-underline';
8
+ import Link from '@tiptap/extension-link';
9
+ import Image from '@tiptap/extension-image';
10
+ import Table from '@tiptap/extension-table';
11
+ import TableRow from '@tiptap/extension-table-row';
12
+ import TableHeader from '@tiptap/extension-table-header';
13
+ import TableCell from '@tiptap/extension-table-cell';
14
+ import TextAlign from '@tiptap/extension-text-align';
15
+ import Placeholder from '@tiptap/extension-placeholder';
16
+ import CodeBlockLowlight from '@tiptap/extension-code-block-lowlight';
17
+ import HorizontalRule from '@tiptap/extension-horizontal-rule';
18
+ import { common, createLowlight } from 'lowlight';
19
+ import { Bold, Italic, Underline, Strikethrough, Code, Heading1, Heading2, Heading3, List, ListOrdered, Quote, FileCode, Minus, AlignLeft, AlignCenter, AlignRight, Link as LinkIcon, Image as ImageIcon, Table as TableIcon, Columns, Rows, Trash2, Undo, Redo, } from 'lucide-react';
20
+ const lowlight = createLowlight(common);
21
+ const editorStyles = `
22
+ .ProseMirror {
23
+ min-height: 300px;
24
+ outline: none;
25
+ padding: 1rem;
26
+ }
27
+ .ProseMirror h1 { font-size: 2em; font-weight: 700; margin: 0.67em 0; }
28
+ .ProseMirror h2 { font-size: 1.5em; font-weight: 700; margin: 0.75em 0; }
29
+ .ProseMirror h3 { font-size: 1.17em; font-weight: 700; margin: 0.83em 0; }
30
+ .ProseMirror h4 { font-size: 1em; font-weight: 700; margin: 1em 0; }
31
+ .ProseMirror h5 { font-size: 0.83em; font-weight: 700; margin: 1.17em 0; }
32
+ .ProseMirror h6 { font-size: 0.67em; font-weight: 700; margin: 1.33em 0; }
33
+ .ProseMirror ul { list-style: disc; padding-left: 1.5rem; margin: 0.5em 0; }
34
+ .ProseMirror ol { list-style: decimal; padding-left: 1.5rem; margin: 0.5em 0; }
35
+ .ProseMirror li { margin: 0.25em 0; }
36
+ .ProseMirror p { margin: 0.5em 0; }
37
+ .ProseMirror table {
38
+ border-collapse: collapse;
39
+ width: 100%;
40
+ margin: 1rem 0;
41
+ }
42
+ .ProseMirror th,
43
+ .ProseMirror td {
44
+ border: 1px solid #d1d5db;
45
+ padding: 0.5rem;
46
+ text-align: left;
47
+ min-width: 80px;
48
+ }
49
+ .ProseMirror th {
50
+ background-color: #f3f4f6;
51
+ font-weight: 600;
52
+ }
53
+ .ProseMirror img {
54
+ max-width: 100%;
55
+ height: auto;
56
+ border-radius: 0.375rem;
57
+ }
58
+ .ProseMirror blockquote {
59
+ border-left: 3px solid #3b82f6;
60
+ padding-left: 1rem;
61
+ margin: 1rem 0;
62
+ color: #4b5563;
63
+ }
64
+ .ProseMirror pre {
65
+ background: #1e293b;
66
+ color: #e2e8f0;
67
+ padding: 1rem;
68
+ border-radius: 0.5rem;
69
+ overflow-x: auto;
70
+ margin: 0.75rem 0;
71
+ }
72
+ .ProseMirror code {
73
+ background: #f1f5f9;
74
+ padding: 0.125rem 0.375rem;
75
+ border-radius: 0.25rem;
76
+ font-size: 0.875em;
77
+ }
78
+ .ProseMirror pre code {
79
+ background: none;
80
+ padding: 0;
81
+ border-radius: 0;
82
+ font-size: inherit;
83
+ }
84
+ .ProseMirror hr {
85
+ border: none;
86
+ border-top: 2px solid #e5e7eb;
87
+ margin: 1.5rem 0;
88
+ }
89
+ .ProseMirror p.is-editor-empty:first-child::before {
90
+ content: attr(data-placeholder);
91
+ float: left;
92
+ color: #9ca3af;
93
+ pointer-events: none;
94
+ height: 0;
95
+ }
96
+ .ProseMirror .selectedCell {
97
+ background-color: #dbeafe;
98
+ }
99
+ `;
100
+ function ToolbarButton({ onClick, isActive = false, disabled = false, title, children, }) {
101
+ return (_jsx("button", { type: "button", onClick: onClick, disabled: disabled, title: title, className: `p-1.5 rounded transition-colors ${isActive
102
+ ? 'bg-blue-100 text-blue-700'
103
+ : 'text-gray-600 hover:bg-gray-100 hover:text-gray-900'} ${disabled ? 'opacity-40 cursor-not-allowed' : ''}`, children: children }));
104
+ }
105
+ function Divider() {
106
+ return _jsx("div", { className: "w-px h-6 bg-gray-200 mx-1" });
107
+ }
108
+ function Toolbar({ editor, onOpenMediaPicker }) {
109
+ const addLink = () => {
110
+ const previousUrl = editor.getAttributes('link').href ?? '';
111
+ const url = window.prompt('Enter URL:', previousUrl);
112
+ if (url === null)
113
+ return;
114
+ if (url === '') {
115
+ editor.chain().focus().extendMarkRange('link').unsetLink().run();
116
+ return;
117
+ }
118
+ editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();
119
+ };
120
+ const insertTable = () => {
121
+ editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run();
122
+ };
123
+ const isInTable = editor.isActive('table');
124
+ return (_jsxs("div", { className: "border-b border-gray-200 bg-gray-50 p-2 flex items-center gap-0.5 flex-wrap sticky top-0 z-10", children: [_jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleBold().run(), isActive: editor.isActive('bold'), title: "Bold (Ctrl+B)", children: _jsx(Bold, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleItalic().run(), isActive: editor.isActive('italic'), title: "Italic (Ctrl+I)", children: _jsx(Italic, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleUnderline().run(), isActive: editor.isActive('underline'), title: "Underline (Ctrl+U)", children: _jsx(Underline, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleStrike().run(), isActive: editor.isActive('strike'), title: "Strikethrough", children: _jsx(Strikethrough, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleCode().run(), isActive: editor.isActive('code'), title: "Inline code", children: _jsx(Code, { className: "w-4 h-4" }) }), _jsx(Divider, {}), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleHeading({ level: 1 }).run(), isActive: editor.isActive('heading', { level: 1 }), title: "Heading 1", children: _jsx(Heading1, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(), isActive: editor.isActive('heading', { level: 2 }), title: "Heading 2", children: _jsx(Heading2, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleHeading({ level: 3 }).run(), isActive: editor.isActive('heading', { level: 3 }), title: "Heading 3", children: _jsx(Heading3, { className: "w-4 h-4" }) }), _jsx(Divider, {}), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleBulletList().run(), isActive: editor.isActive('bulletList'), title: "Bullet list", children: _jsx(List, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleOrderedList().run(), isActive: editor.isActive('orderedList'), title: "Ordered list", children: _jsx(ListOrdered, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleBlockquote().run(), isActive: editor.isActive('blockquote'), title: "Blockquote", children: _jsx(Quote, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().toggleCodeBlock().run(), isActive: editor.isActive('codeBlock'), title: "Code block", children: _jsx(FileCode, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().setHorizontalRule().run(), title: "Horizontal rule", children: _jsx(Minus, { className: "w-4 h-4" }) }), _jsx(Divider, {}), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().setTextAlign('left').run(), isActive: editor.isActive({ textAlign: 'left' }), title: "Align left", children: _jsx(AlignLeft, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().setTextAlign('center').run(), isActive: editor.isActive({ textAlign: 'center' }), title: "Align center", children: _jsx(AlignCenter, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().setTextAlign('right').run(), isActive: editor.isActive({ textAlign: 'right' }), title: "Align right", children: _jsx(AlignRight, { className: "w-4 h-4" }) }), _jsx(Divider, {}), _jsx(ToolbarButton, { onClick: addLink, isActive: editor.isActive('link'), title: "Insert link", children: _jsx(LinkIcon, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: onOpenMediaPicker, title: "Insert image", children: _jsx(ImageIcon, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: insertTable, title: "Insert table (3\u00D73)", children: _jsx(TableIcon, { className: "w-4 h-4" }) }), isInTable && (_jsxs(_Fragment, { children: [_jsx(Divider, {}), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().addColumnBefore().run(), title: "Add column before", children: _jsx(Columns, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().addColumnAfter().run(), title: "Add column after", children: _jsx(Columns, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().deleteColumn().run(), title: "Delete column", children: _jsx(Columns, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().addRowBefore().run(), title: "Add row before", children: _jsx(Rows, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().addRowAfter().run(), title: "Add row after", children: _jsx(Rows, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().deleteRow().run(), title: "Delete row", children: _jsx(Rows, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().deleteTable().run(), title: "Delete table", children: _jsx(Trash2, { className: "w-4 h-4" }) })] })), _jsx(Divider, {}), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().undo().run(), disabled: !editor.can().undo(), title: "Undo", children: _jsx(Undo, { className: "w-4 h-4" }) }), _jsx(ToolbarButton, { onClick: () => editor.chain().focus().redo().run(), disabled: !editor.can().redo(), title: "Redo", children: _jsx(Redo, { className: "w-4 h-4" }) })] }));
125
+ }
126
+ export function TipTapEditor({ content, onChange, placeholder, editable = true, className, }) {
127
+ const [mediaPickerOpen, setMediaPickerOpen] = useState(false);
128
+ const editor = useEditor({
129
+ extensions: [
130
+ StarterKit.configure({
131
+ codeBlock: false,
132
+ horizontalRule: false,
133
+ }),
134
+ UnderlineExt,
135
+ Link.configure({
136
+ openOnClick: false,
137
+ HTMLAttributes: { class: 'text-blue-600 underline' },
138
+ }),
139
+ Image.configure({
140
+ inline: true,
141
+ allowBase64: true,
142
+ }),
143
+ Table.configure({ resizable: true }),
144
+ TableRow,
145
+ TableHeader,
146
+ TableCell,
147
+ TextAlign.configure({ types: ['heading', 'paragraph'] }),
148
+ Placeholder.configure({
149
+ placeholder: placeholder || 'Start writing...',
150
+ }),
151
+ CodeBlockLowlight.configure({ lowlight }),
152
+ HorizontalRule,
153
+ ],
154
+ content,
155
+ editable: editable !== false,
156
+ onUpdate: ({ editor: ed }) => {
157
+ onChange(ed.getHTML());
158
+ },
159
+ });
160
+ if (!editor)
161
+ return null;
162
+ const handleImageSelected = (url, alt) => {
163
+ editor.chain().focus().setImage({ src: url, alt: alt ?? '' }).run();
164
+ };
165
+ return (_jsxs("div", { className: `border border-gray-200 rounded-lg overflow-hidden bg-white ${className ?? ''}`, children: [editable && _jsx(Toolbar, { editor: editor, onOpenMediaPicker: () => setMediaPickerOpen(true) }), _jsx(EditorContent, { editor: editor }), _jsx("style", { dangerouslySetInnerHTML: { __html: editorStyles } }), _jsx(MediaPickerModal, { open: mediaPickerOpen, onClose: () => setMediaPickerOpen(false), onSelect: handleImageSelected, accept: "image/*" })] }));
166
+ }
167
+ //# sourceMappingURL=TipTapEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TipTapEditor.js","sourceRoot":"","sources":["../../src/components/TipTapEditor.tsx"],"names":[],"mappings":"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"}