@prenta/admin 1.3.2 → 1.4.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 (41) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/__tests__/lib/preview-link.test.js +8 -0
  3. package/dist/__tests__/lib/preview-link.test.js.map +1 -1
  4. package/dist/components/SEOConfigPanel.d.ts.map +1 -1
  5. package/dist/components/SEOConfigPanel.js +1 -1
  6. package/dist/components/SEOConfigPanel.js.map +1 -1
  7. package/dist/hooks/usePublicSiteUrl.d.ts +3 -0
  8. package/dist/hooks/usePublicSiteUrl.d.ts.map +1 -1
  9. package/dist/hooks/usePublicSiteUrl.js +3 -0
  10. package/dist/hooks/usePublicSiteUrl.js.map +1 -1
  11. package/dist/lib/open-public-site-tab.d.ts +2 -0
  12. package/dist/lib/open-public-site-tab.d.ts.map +1 -1
  13. package/dist/lib/open-public-site-tab.js +1 -0
  14. package/dist/lib/open-public-site-tab.js.map +1 -1
  15. package/dist/lib/preview-link.d.ts +5 -2
  16. package/dist/lib/preview-link.d.ts.map +1 -1
  17. package/dist/lib/preview-link.js +7 -10
  18. package/dist/lib/preview-link.js.map +1 -1
  19. package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
  20. package/dist/views/page-editor/PageSectionEditor.js +3 -2
  21. package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
  22. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  23. package/dist/views/post-editor/PostSectionEditor.js +3 -2
  24. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  25. package/dist/views/settings/SiteInformationCard.d.ts.map +1 -1
  26. package/dist/views/settings/SiteInformationCard.js +2 -1
  27. package/dist/views/settings/SiteInformationCard.js.map +1 -1
  28. package/dist/views/settings/useGeneralSettings.d.ts +1 -0
  29. package/dist/views/settings/useGeneralSettings.d.ts.map +1 -1
  30. package/dist/views/settings/useGeneralSettings.js +6 -1
  31. package/dist/views/settings/useGeneralSettings.js.map +1 -1
  32. package/package.json +4 -4
  33. package/src/__tests__/lib/preview-link.test.ts +11 -0
  34. package/src/components/SEOConfigPanel.tsx +11 -0
  35. package/src/hooks/usePublicSiteUrl.ts +7 -0
  36. package/src/lib/open-public-site-tab.ts +3 -0
  37. package/src/lib/preview-link.ts +24 -8
  38. package/src/views/page-editor/PageSectionEditor.tsx +7 -2
  39. package/src/views/post-editor/PostSectionEditor.tsx +7 -2
  40. package/src/views/settings/SiteInformationCard.tsx +23 -0
  41. package/src/views/settings/useGeneralSettings.ts +6 -1
@@ -8,6 +8,7 @@ export interface GeneralSettingsForm {
8
8
  siteTitle: string
9
9
  tagline: string
10
10
  siteUrl: string
11
+ trailingSlash: 'always' | 'never'
11
12
  language: string
12
13
  timezone: string
13
14
  defaultNoIndex: boolean
@@ -59,6 +60,7 @@ const EMPTY_FORM: GeneralSettingsForm = {
59
60
  siteTitle: '',
60
61
  tagline: '',
61
62
  siteUrl: '',
63
+ trailingSlash: 'never',
62
64
  language: 'en',
63
65
  timezone: 'UTC',
64
66
  defaultNoIndex: false,
@@ -212,6 +214,7 @@ export function useGeneralSettings(canEdit: boolean): UseGeneralSettings {
212
214
  siteTitle: String(settingsData.siteTitle ?? ''),
213
215
  tagline: String(settingsData.tagline ?? ''),
214
216
  siteUrl: String(effectiveSite.siteUrl ?? settingsData.siteUrl ?? ''),
217
+ trailingSlash: effectiveSite.trailingSlash === 'always' ? 'always' : 'never',
215
218
  language: String(settingsData.language ?? 'en'),
216
219
  timezone: String(settingsData.timezone ?? 'UTC'),
217
220
  defaultNoIndex: robots.defaultNoIndex === true,
@@ -302,6 +305,7 @@ export function useGeneralSettings(canEdit: boolean): UseGeneralSettings {
302
305
  form.language !== baseline.language ||
303
306
  form.timezone !== baseline.timezone
304
307
  const siteUrlChanged = siteUrlEditable && form.siteUrl !== baseline.siteUrl
308
+ const trailingSlashChanged = form.trailingSlash !== baseline.trailingSlash
305
309
  const robotsChanged =
306
310
  form.defaultNoIndex !== baseline.defaultNoIndex ||
307
311
  form.defaultNoFollow !== baseline.defaultNoFollow ||
@@ -336,9 +340,10 @@ export function useGeneralSettings(canEdit: boolean): UseGeneralSettings {
336
340
 
337
341
  // 2. Site URL + robots defaults → the SHARED SEO config (merge over the
338
342
  // current override site so SEO-tab fields aren't lost).
339
- if (siteUrlChanged || robotsChanged) {
343
+ if (siteUrlChanged || trailingSlashChanged || robotsChanged) {
340
344
  const nextSite: Record<string, any> = { ...overrideSite }
341
345
  if (siteUrlChanged) nextSite.siteUrl = form.siteUrl.trim() || undefined
346
+ if (trailingSlashChanged) nextSite.trailingSlash = form.trailingSlash
342
347
  if (robotsChanged) {
343
348
  nextSite.robots = {
344
349
  ...(overrideSite.robots ?? {}),