@actuate-media/cms-admin 0.67.0 → 0.69.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 (180) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/AdminRoot.d.ts.map +1 -1
  3. package/dist/AdminRoot.js +59 -15
  4. package/dist/AdminRoot.js.map +1 -1
  5. package/dist/__tests__/hooks/useIdleLogout.test.d.ts +2 -0
  6. package/dist/__tests__/hooks/useIdleLogout.test.d.ts.map +1 -0
  7. package/dist/__tests__/hooks/useIdleLogout.test.js +119 -0
  8. package/dist/__tests__/hooks/useIdleLogout.test.js.map +1 -0
  9. package/dist/__tests__/lib/post-types-service.test.d.ts +2 -0
  10. package/dist/__tests__/lib/post-types-service.test.d.ts.map +1 -0
  11. package/dist/__tests__/lib/post-types-service.test.js +88 -0
  12. package/dist/__tests__/lib/post-types-service.test.js.map +1 -0
  13. package/dist/__tests__/router/query-string.test.d.ts +2 -0
  14. package/dist/__tests__/router/query-string.test.d.ts.map +1 -0
  15. package/dist/__tests__/router/query-string.test.js +44 -0
  16. package/dist/__tests__/router/query-string.test.js.map +1 -0
  17. package/dist/__tests__/views/collection-list-nav.render.test.js +43 -5
  18. package/dist/__tests__/views/collection-list-nav.render.test.js.map +1 -1
  19. package/dist/__tests__/views/forms-list.render.test.js +25 -6
  20. package/dist/__tests__/views/forms-list.render.test.js.map +1 -1
  21. package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts +2 -0
  22. package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts.map +1 -0
  23. package/dist/__tests__/views/page-builder-sections-panel.render.test.js +121 -0
  24. package/dist/__tests__/views/page-builder-sections-panel.render.test.js.map +1 -0
  25. package/dist/__tests__/views/page-templates.render.test.d.ts +2 -0
  26. package/dist/__tests__/views/page-templates.render.test.d.ts.map +1 -0
  27. package/dist/__tests__/views/page-templates.render.test.js +105 -0
  28. package/dist/__tests__/views/page-templates.render.test.js.map +1 -0
  29. package/dist/__tests__/views/post-type-editor.render.test.d.ts +2 -0
  30. package/dist/__tests__/views/post-type-editor.render.test.d.ts.map +1 -0
  31. package/dist/__tests__/views/post-type-editor.render.test.js +102 -0
  32. package/dist/__tests__/views/post-type-editor.render.test.js.map +1 -0
  33. package/dist/__tests__/views/security-settings.render.test.js +85 -4
  34. package/dist/__tests__/views/security-settings.render.test.js.map +1 -1
  35. package/dist/__tests__/views/seo-content-pane.render.test.d.ts +2 -0
  36. package/dist/__tests__/views/seo-content-pane.render.test.d.ts.map +1 -0
  37. package/dist/__tests__/views/seo-content-pane.render.test.js +117 -0
  38. package/dist/__tests__/views/seo-content-pane.render.test.js.map +1 -0
  39. package/dist/__tests__/views/users-selected-deeplink.render.test.d.ts +2 -0
  40. package/dist/__tests__/views/users-selected-deeplink.render.test.d.ts.map +1 -0
  41. package/dist/__tests__/views/users-selected-deeplink.render.test.js +91 -0
  42. package/dist/__tests__/views/users-selected-deeplink.render.test.js.map +1 -0
  43. package/dist/actuate-admin.css +1 -1
  44. package/dist/components/collections/EntryDetailPane.d.ts +10 -0
  45. package/dist/components/collections/EntryDetailPane.d.ts.map +1 -0
  46. package/dist/components/collections/EntryDetailPane.js +92 -0
  47. package/dist/components/collections/EntryDetailPane.js.map +1 -0
  48. package/dist/components/forms/FieldsPanel.js +1 -1
  49. package/dist/components/forms/FieldsPanel.js.map +1 -1
  50. package/dist/components/forms/FormSchemaPane.d.ts +8 -0
  51. package/dist/components/forms/FormSchemaPane.d.ts.map +1 -0
  52. package/dist/components/forms/FormSchemaPane.js +95 -0
  53. package/dist/components/forms/FormSchemaPane.js.map +1 -0
  54. package/dist/components/seo/SeoEditorPane.d.ts +9 -0
  55. package/dist/components/seo/SeoEditorPane.d.ts.map +1 -0
  56. package/dist/components/seo/SeoEditorPane.js +175 -0
  57. package/dist/components/seo/SeoEditorPane.js.map +1 -0
  58. package/dist/components/ui/Badge.d.ts +1 -1
  59. package/dist/components/ui/Button.d.ts +1 -1
  60. package/dist/components/ui/StatusBadge.d.ts +1 -1
  61. package/dist/hooks/useIdleLogout.d.ts +33 -0
  62. package/dist/hooks/useIdleLogout.d.ts.map +1 -0
  63. package/dist/hooks/useIdleLogout.js +99 -0
  64. package/dist/hooks/useIdleLogout.js.map +1 -0
  65. package/dist/lib/api.d.ts +1 -0
  66. package/dist/lib/api.d.ts.map +1 -1
  67. package/dist/lib/api.js +7 -1
  68. package/dist/lib/api.js.map +1 -1
  69. package/dist/lib/post-types-service.d.ts +44 -0
  70. package/dist/lib/post-types-service.d.ts.map +1 -0
  71. package/dist/lib/post-types-service.js +83 -0
  72. package/dist/lib/post-types-service.js.map +1 -0
  73. package/dist/router/index.d.ts +7 -0
  74. package/dist/router/index.d.ts.map +1 -1
  75. package/dist/router/index.js +23 -4
  76. package/dist/router/index.js.map +1 -1
  77. package/dist/views/CollectionList.d.ts.map +1 -1
  78. package/dist/views/CollectionList.js +23 -4
  79. package/dist/views/CollectionList.js.map +1 -1
  80. package/dist/views/Forms.d.ts.map +1 -1
  81. package/dist/views/Forms.js +25 -21
  82. package/dist/views/Forms.js.map +1 -1
  83. package/dist/views/MediaBrowser.d.ts +4 -1
  84. package/dist/views/MediaBrowser.d.ts.map +1 -1
  85. package/dist/views/MediaBrowser.js +27 -5
  86. package/dist/views/MediaBrowser.js.map +1 -1
  87. package/dist/views/Posts/PostTypeEditor.d.ts +16 -0
  88. package/dist/views/Posts/PostTypeEditor.d.ts.map +1 -0
  89. package/dist/views/Posts/PostTypeEditor.js +159 -0
  90. package/dist/views/Posts/PostTypeEditor.js.map +1 -0
  91. package/dist/views/Posts/PostTypesView.d.ts +3 -2
  92. package/dist/views/Posts/PostTypesView.d.ts.map +1 -1
  93. package/dist/views/Posts/PostTypesView.js +1 -1
  94. package/dist/views/Posts/PostTypesView.js.map +1 -1
  95. package/dist/views/SEO.d.ts.map +1 -1
  96. package/dist/views/SEO.js +2 -1
  97. package/dist/views/SEO.js.map +1 -1
  98. package/dist/views/Settings.d.ts +4 -1
  99. package/dist/views/Settings.d.ts.map +1 -1
  100. package/dist/views/Settings.js +4 -3
  101. package/dist/views/Settings.js.map +1 -1
  102. package/dist/views/Users.d.ts +4 -1
  103. package/dist/views/Users.d.ts.map +1 -1
  104. package/dist/views/Users.js +22 -2
  105. package/dist/views/Users.js.map +1 -1
  106. package/dist/views/page-builder/BuilderSectionsPanel.d.ts +20 -0
  107. package/dist/views/page-builder/BuilderSectionsPanel.d.ts.map +1 -0
  108. package/dist/views/page-builder/BuilderSectionsPanel.js +105 -0
  109. package/dist/views/page-builder/BuilderSectionsPanel.js.map +1 -0
  110. package/dist/views/page-builder/PageBuilder.d.ts.map +1 -1
  111. package/dist/views/page-builder/PageBuilder.js +51 -2
  112. package/dist/views/page-builder/PageBuilder.js.map +1 -1
  113. package/dist/views/page-builder/PageTemplates.d.ts.map +1 -1
  114. package/dist/views/page-builder/PageTemplates.js +113 -6
  115. package/dist/views/page-builder/PageTemplates.js.map +1 -1
  116. package/dist/views/seo/ContentTab.d.ts.map +1 -1
  117. package/dist/views/seo/ContentTab.js +22 -6
  118. package/dist/views/seo/ContentTab.js.map +1 -1
  119. package/dist/views/settings/AccessProtectionCard.d.ts +5 -1
  120. package/dist/views/settings/AccessProtectionCard.d.ts.map +1 -1
  121. package/dist/views/settings/AccessProtectionCard.js +13 -10
  122. package/dist/views/settings/AccessProtectionCard.js.map +1 -1
  123. package/dist/views/settings/SecurityTab.d.ts.map +1 -1
  124. package/dist/views/settings/SecurityTab.js +5 -4
  125. package/dist/views/settings/SecurityTab.js.map +1 -1
  126. package/dist/views/settings/SessionPolicyCard.d.ts +1 -2
  127. package/dist/views/settings/SessionPolicyCard.d.ts.map +1 -1
  128. package/dist/views/settings/SessionPolicyCard.js +12 -5
  129. package/dist/views/settings/SessionPolicyCard.js.map +1 -1
  130. package/dist/views/settings/useSecuritySettings.d.ts +13 -1
  131. package/dist/views/settings/useSecuritySettings.d.ts.map +1 -1
  132. package/dist/views/settings/useSecuritySettings.js +47 -4
  133. package/dist/views/settings/useSecuritySettings.js.map +1 -1
  134. package/package.json +2 -2
  135. package/src/AdminRoot.tsx +88 -18
  136. package/src/__tests__/hooks/useIdleLogout.test.tsx +188 -0
  137. package/src/__tests__/lib/post-types-service.test.ts +112 -0
  138. package/src/__tests__/router/query-string.test.ts +54 -0
  139. package/src/__tests__/views/collection-list-nav.render.test.tsx +51 -5
  140. package/src/__tests__/views/forms-list.render.test.tsx +34 -6
  141. package/src/__tests__/views/page-builder-sections-panel.render.test.tsx +138 -0
  142. package/src/__tests__/views/page-templates.render.test.tsx +142 -0
  143. package/src/__tests__/views/post-type-editor.render.test.tsx +116 -0
  144. package/src/__tests__/views/security-settings.render.test.tsx +111 -4
  145. package/src/__tests__/views/seo-content-pane.render.test.tsx +142 -0
  146. package/src/__tests__/views/users-selected-deeplink.render.test.tsx +102 -0
  147. package/src/components/collections/EntryDetailPane.tsx +182 -0
  148. package/src/components/forms/FieldsPanel.tsx +3 -1
  149. package/src/components/forms/FormSchemaPane.tsx +192 -0
  150. package/src/components/seo/SeoEditorPane.tsx +533 -0
  151. package/src/hooks/useIdleLogout.ts +129 -0
  152. package/src/lib/api.ts +8 -2
  153. package/src/lib/post-types-service.ts +129 -0
  154. package/src/router/index.ts +25 -4
  155. package/src/views/CollectionList.tsx +158 -110
  156. package/src/views/Forms.tsx +154 -126
  157. package/src/views/MediaBrowser.tsx +28 -5
  158. package/src/views/Posts/PostTypeEditor.tsx +568 -0
  159. package/src/views/Posts/PostTypesView.tsx +5 -4
  160. package/src/views/SEO.tsx +2 -1
  161. package/src/views/Settings.tsx +7 -2
  162. package/src/views/Users.tsx +23 -2
  163. package/src/views/page-builder/BuilderSectionsPanel.tsx +304 -0
  164. package/src/views/page-builder/PageBuilder.tsx +69 -2
  165. package/src/views/page-builder/PageTemplates.tsx +340 -57
  166. package/src/views/seo/ContentTab.tsx +113 -80
  167. package/src/views/settings/AccessProtectionCard.tsx +83 -53
  168. package/src/views/settings/SecurityTab.tsx +25 -3
  169. package/src/views/settings/SessionPolicyCard.tsx +45 -9
  170. package/src/views/settings/useSecuritySettings.ts +78 -22
  171. package/dist/components/forms/FormSchemaDrawer.d.ts +0 -9
  172. package/dist/components/forms/FormSchemaDrawer.d.ts.map +0 -1
  173. package/dist/components/forms/FormSchemaDrawer.js +0 -99
  174. package/dist/components/forms/FormSchemaDrawer.js.map +0 -1
  175. package/dist/components/seo/SeoEditorDrawer.d.ts +0 -8
  176. package/dist/components/seo/SeoEditorDrawer.d.ts.map +0 -1
  177. package/dist/components/seo/SeoEditorDrawer.js +0 -172
  178. package/dist/components/seo/SeoEditorDrawer.js.map +0 -1
  179. package/src/components/forms/FormSchemaDrawer.tsx +0 -192
  180. package/src/components/seo/SeoEditorDrawer.tsx +0 -529
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @actuate-media/cms-admin
2
2
 
3
+ ## 0.69.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 41bd56a: Correctness fixes from the post-Phase-3 polish plan.
8
+
9
+ **plugin-consent — granular consent categories.** Consent is no longer binary: visitors can grant individual categories (`analytics`, `marketing`, `functional`, `preferences`) via a new "Manage preferences" expansion in `ConsentBanner`. Custom selections persist as JSON in the same `am_cookie_consent` key; `all`/`essential` still persist as legacy strings so previously shipped consent gates keep working, and legacy stored values migrate transparently on read. New exports: `CONSENT_CATEGORIES`, `ConsentCategory`, `ConsentState`, `readConsentState`, `writeConsentState`, `setConsentCategories`, `hasCategoryConsent`, `categoriesForLevel`, `normalizeConsentSelection`, `waitForConsentState`. `useConsent` now reports `categories` and an `allows(category)` helper; `loadConsentGatedAnalytics` gates GA4/Google Ads on `analytics` and Meta Pixel on `marketing` when passed a consent state.
10
+
11
+ **cms-core — script-tag consent gate honors categories.** `wrapCodeInConsentGate` now grants when the visitor accepted all cookies _or_ granted the tag's specific category through a custom selection, instead of requiring full consent for every gated tag. Legacy stored `'all'` strings still pass.
12
+
13
+ **cms-admin — router query strings + idle-logout warning.** `useAdminRouter` now includes the query string in `currentPath` on mount and popstate, so deep links like `/pages/new?parent=<id>` and `/settings?tab=users` survive hard reloads and back/forward. New `parseRouteQuery` helper and `search` return value; the command palette's `?selected=` deep links now open the media detail panel and user drawer. `useIdleLogout` gains a warning stage — one minute before idle sign-out a toast offers "Stay signed in" to reset the clock.
14
+
15
+ ## 0.68.0
16
+
17
+ ### Minor Changes
18
+
19
+ - 9046381: Design parity phase 3 (wave 2): enforced security settings, Post Type editor, Page Builder sections panel, Templates card grid, and the remaining split-pane editor conversions.
20
+
21
+ **cms-core**
22
+ - Security settings gain enforced session and access controls, stored in the settings global: `session.timeoutHours` (1/8/24/168) now drives the JWT expiry, Session row `expiresAt`, and cookie `Max-Age` at login; `session.idleLogoutEnabled` is exposed to clients via a new `GET /auth/session-policy` endpoint; `access.ipAllowlist` is enforced on every API request as the union of the DB list and config `admin.ipAllowlist`, with per-line CIDR validation and a confirmable `IP_LOCKOUT_RISK` guard when a save would lock the caller out; `access.auditLoggingEnabled` makes `logEvent()` a no-op except for security-critical events (failed logins, MFA changes, and security-settings changes are always recorded).
23
+ - Security Center reporting now reflects the configured session max age, audit state, and effective allowlist instead of hardcoded values.
24
+
25
+ **cms-admin**
26
+ - New Post Type editor at `/posts/types/:slug/edit` (replacing the fallthrough to the documents list): toolbar with breadcrumb and post-count badge, identity panel with live API endpoint preview, and a Field Builder that renders the collection's real schema with type/required badges plus an Add Field snippet generator (auto-derived keys, duplicate detection) for the config-defined schema.
27
+ - Settings → Security gains Sessions (timeout select, idle auto-logout toggle) and Access Control (editable IP allowlist with inline validation and lockout confirm, audit logging toggle) sections; idle logout is enforced client-side via a new `useIdleLogout` hook.
28
+ - The node-tree Page Builder gains a collapsible left sections panel (dnd-kit reorder, select-to-inspect, localStorage persistence), and Page Templates is rebuilt as the design's card grid with search, category filters, and Edit/Delete for non-built-in templates.
29
+ - SEO Content, collection Entries, and Forms schema editing move from overlay drawers to inline inspector panes (380/400/390px) using the shared SplitPane primitives, preserving all existing fields, validation, and save flows.
30
+
3
31
  ## 0.67.0
4
32
 
5
33
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"AdminRoot.d.ts","sourceRoot":"","sources":["../src/AdminRoot.tsx"],"names":[],"mappings":"AA2CA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,uCAAuC,CAAA;AAc9C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,GAAG,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnD,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC;QACX,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAC,CAAA;IACF,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CACb,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IACxF;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;IAC1C,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAguBD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAoB9C"}
1
+ {"version":3,"file":"AdminRoot.d.ts","sourceRoot":"","sources":["../src/AdminRoot.tsx"],"names":[],"mappings":"AA4CA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,uCAAuC,CAAA;AAe9C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,GAAG,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnD,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC;QACX,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAC,CAAA;IACF,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CACb,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IACxF;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;IAC1C,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAoyBD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAoB9C"}
package/dist/AdminRoot.js CHANGED
@@ -5,7 +5,7 @@ import * as Dialog from '@radix-ui/react-dialog';
5
5
  import { toast } from 'sonner';
6
6
  import { Layout } from './layout/Layout.js';
7
7
  import { adminPortalContainer } from './lib/portal-container.js';
8
- import { useAdminRouter } from './router/index.js';
8
+ import { useAdminRouter, parseRouteQuery } from './router/index.js';
9
9
  import { cmsApi, ensureCsrfToken } from './lib/api.js';
10
10
  import { setDocumentFavicon, BRAND_UPDATED_EVENT } from './lib/favicon.js';
11
11
  import { registerSectionTypes, resetCustomSectionTypes, resolveCustomSectionTypes, } from '@actuate-media/cms-core/page-sections';
@@ -33,6 +33,7 @@ import { ThemeProvider } from './components/ThemeProvider.js';
33
33
  import { LocaleProvider } from './components/LocaleProvider.js';
34
34
  import { useKeyboardShortcuts } from './hooks/useKeyboardShortcuts.js';
35
35
  import { useAppearanceBootstrap } from './hooks/useAppearanceBootstrap.js';
36
+ import { useIdleLogout } from './hooks/useIdleLogout.js';
36
37
  import { PageBuilder } from './views/page-builder/PageBuilder.js';
37
38
  import { PageSectionEditor } from './views/page-editor/PageSectionEditor.js';
38
39
  import { PagePreview } from './views/page-editor/PagePreview.js';
@@ -44,6 +45,7 @@ import { PagesListView } from './views/Pages/PagesListView.js';
44
45
  import { PageTagManager } from './views/Pages/PageTagManager.js';
45
46
  import { PostsListView } from './views/Posts/PostsListView.js';
46
47
  import { PostTypesView } from './views/Posts/PostTypesView.js';
48
+ import { PostTypeEditor } from './views/Posts/PostTypeEditor.js';
47
49
  import { NewPostPicker } from './views/Posts/NewPostPicker.js';
48
50
  import { NewPostTypeInstructions } from './views/Posts/NewPostTypeInstructions.js';
49
51
  import { PostSectionEditor } from './views/post-editor/PostSectionEditor.js';
@@ -99,6 +101,48 @@ function AdminShell({ config, session, basePath = '/admin', initialPath = '/', l
99
101
  .then(go)
100
102
  .catch(() => tab?.close());
101
103
  }, [buildHref]);
104
+ // Idle auto-logout (Settings → Security). The policy is read from the
105
+ // non-admin-gated /auth/session-policy endpoint so every member's client
106
+ // enforces it, not just admins. When enabled, `timeoutHours` of inactivity
107
+ // signs the user out through the normal logout flow (server revocation +
108
+ // cookie clear + local state reset).
109
+ const [sessionPolicy, setSessionPolicy] = useState(null);
110
+ useEffect(() => {
111
+ if (!session) {
112
+ setSessionPolicy(null);
113
+ return;
114
+ }
115
+ let cancelled = false;
116
+ void cmsApi('/auth/session-policy').then((res) => {
117
+ if (!cancelled && res.data && typeof res.data.timeoutHours === 'number') {
118
+ setSessionPolicy(res.data);
119
+ }
120
+ });
121
+ return () => {
122
+ cancelled = true;
123
+ };
124
+ }, [session]);
125
+ const { stayActive } = useIdleLogout({
126
+ enabled: Boolean(session && sessionPolicy?.idleLogoutEnabled),
127
+ timeoutMs: (sessionPolicy?.timeoutHours ?? 0) * 3_600_000,
128
+ onIdle: handleLogout,
129
+ // One-minute heads-up so the sign-out is never a surprise. Any activity
130
+ // (or the toast action) resets the clock and dismisses the warning.
131
+ warningMs: 60_000,
132
+ onWarn: () => {
133
+ toast.warning('You will be signed out in about a minute due to inactivity.', {
134
+ id: 'idle-logout-warning',
135
+ duration: 60_000,
136
+ action: {
137
+ label: 'Stay signed in',
138
+ onClick: () => stayActive(),
139
+ },
140
+ });
141
+ },
142
+ onWarnCancelled: () => {
143
+ toast.dismiss('idle-logout-warning');
144
+ },
145
+ });
102
146
  useBranding(config);
103
147
  useAppearanceBootstrap(session);
104
148
  useAdminPageTitle(config, currentPath);
@@ -194,8 +238,9 @@ function AdminShell({ config, session, basePath = '/admin', initialPath = '/', l
194
238
  }
195
239
  const resetMatch = matchRoute('/reset-password');
196
240
  if (resetMatch) {
197
- const params = new URLSearchParams(typeof window !== 'undefined' ? window.location.search : '');
198
- return _jsx(ResetPassword, { onNavigate: navigate, token: params.get('token') });
241
+ // currentPath carries the query string (router syncs it from the URL on
242
+ // mount/popstate), so the emailed `?token=` deep link survives reloads.
243
+ return (_jsx(ResetPassword, { onNavigate: navigate, token: parseRouteQuery(currentPath).get('token') }));
199
244
  }
200
245
  if (onLogin) {
201
246
  // Thread `config.admin.branding` through so the login screen matches the
@@ -213,7 +258,7 @@ function AdminShell({ config, session, basePath = '/admin', initialPath = '/', l
213
258
  // so they cannot be shadowed by a consumer-defined collection (e.g.
214
259
  // a collection slugged `media`, `users`, or `settings`).
215
260
  if (matchRoute('/media')) {
216
- return _jsx(MediaBrowser, { onNavigate: navigate });
261
+ return _jsx(MediaBrowser, { onNavigate: navigate, currentPath: currentPath });
217
262
  }
218
263
  // ─── Posts area ────────────────────────────────────────────────
219
264
  // These take priority over the per-collection `/<slug>` matcher
@@ -231,11 +276,7 @@ function AdminShell({ config, session, basePath = '/admin', initialPath = '/', l
231
276
  }
232
277
  const postTypeEdit = matchRoute('/posts/types/:slug/edit');
233
278
  if (postTypeEdit?.slug) {
234
- // V1 falls through to the per-collection list view; future
235
- // PR introduces a dedicated PostTypeEditor with field-level
236
- // metadata. The list view is the natural per-type management
237
- // surface today (it already shows posts in that type).
238
- return (_jsx(CollectionList, { collectionSlug: postTypeEdit.slug, config: config, onNavigate: navigate }));
279
+ return _jsx(PostTypeEditor, { slug: postTypeEdit.slug, onNavigate: navigate });
239
280
  }
240
281
  if (matchRoute('/posts/types')) {
241
282
  return _jsx(PostTypesView, { onNavigate: navigate });
@@ -280,7 +321,7 @@ function AdminShell({ config, session, basePath = '/admin', initialPath = '/', l
280
321
  // "Add sub-page" in the Pages tree view arrives with the parent id
281
322
  // in the query string (`/pages/new?parent=<id>`); matchRoute ignores
282
323
  // the query so it's parsed here and preselected in the editor.
283
- const newPageQuery = new URLSearchParams(currentPath.split('?')[1] ?? '');
324
+ const newPageQuery = parseRouteQuery(currentPath);
284
325
  return (_jsx(PageSectionEditor, { initialParentId: newPageQuery.get('parent'), config: config, session: session, onNavigate: navigate, onOpenPreview: openPreview }));
285
326
  }
286
327
  const pagePreview = matchRoute('/pages/:id/preview');
@@ -353,13 +394,13 @@ function AdminShell({ config, session, basePath = '/admin', initialPath = '/', l
353
394
  // Users + API Keys moved into the Settings view as tabs. The legacy
354
395
  // top-level routes still resolve — they just land on the matching tab.
355
396
  if (matchRoute('/users')) {
356
- return _jsx(Settings, { onNavigate: navigate, config: config, session: session, initialTab: "users" });
397
+ return (_jsx(Settings, { onNavigate: navigate, config: config, session: session, initialTab: "users", currentPath: currentPath }));
357
398
  }
358
399
  if (matchRoute('/api-keys')) {
359
- return (_jsx(Settings, { onNavigate: navigate, config: config, session: session, initialTab: "api-keys" }));
400
+ return (_jsx(Settings, { onNavigate: navigate, config: config, session: session, initialTab: "api-keys", currentPath: currentPath }));
360
401
  }
361
402
  if (matchRoute('/settings')) {
362
- return _jsx(Settings, { onNavigate: navigate, config: config, session: session });
403
+ return (_jsx(Settings, { onNavigate: navigate, config: config, session: session, currentPath: currentPath }));
363
404
  }
364
405
  if (matchRoute('/profile')) {
365
406
  return _jsx(Profile, { onNavigate: navigate, session: session });
@@ -434,7 +475,8 @@ function AdminShell({ config, session, basePath = '/admin', initialPath = '/', l
434
475
  // Preview routes render as standalone pages (no sidebar/header) so a
435
476
  // new-tab preview looks like the real published page rather than an
436
477
  // embedded admin view. Everything else gets the full admin chrome.
437
- if (currentPath.endsWith('/preview')) {
478
+ // Query string is stripped — currentPath carries it after reloads.
479
+ if (currentPath.split('?')[0].endsWith('/preview')) {
438
480
  return (_jsx("div", { className: "bg-background h-full min-h-screen", children: _jsx(ErrorBoundary, { children: renderView() }) }));
439
481
  }
440
482
  return (_jsxs(Layout, { config: config, session: session, currentPath: currentPath, onNavigate: navigate, onLogout: handleLogout, children: [_jsx(ErrorBoundary, { children: renderView() }), _jsx(ShortcutHelp, { open: shortcutHelpOpen, onClose: () => setShortcutHelpOpen(false) })] }));
@@ -531,7 +573,9 @@ function useAdminPageTitle(config, currentPath) {
531
573
  const baseName = branding?.title ?? (branding?.name ? `${branding.name} Admin` : null);
532
574
  if (!baseName)
533
575
  return;
534
- const segment = currentPath === '/' ? 'Dashboard' : currentPath.split('/').filter(Boolean)[0];
576
+ // Strip the query so `/settings?tab=users` titles as "Settings".
577
+ const pathname = currentPath.split('?')[0].split('#')[0];
578
+ const segment = pathname === '/' ? 'Dashboard' : pathname.split('/').filter(Boolean)[0];
535
579
  const pageName = segment ? segment.charAt(0).toUpperCase() + segment.slice(1) : 'Dashboard';
536
580
  document.title = `${pageName} — ${baseName}`;
537
581
  }, [config, currentPath]);
@@ -1 +1 @@
1
- {"version":3,"file":"AdminRoot.js","sourceRoot":"","sources":["../src/AdminRoot.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AdminRoot.js","sourceRoot":"","sources":["../src/AdminRoot.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useIdleLogout.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIdleLogout.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/hooks/useIdleLogout.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,119 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @vitest-environment happy-dom
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
+ import { render } from '@testing-library/react';
5
+ import { useIdleLogout } from '../../hooks/useIdleLogout.js';
6
+ function Harness({ enabled, timeoutMs, onIdle, warningMs, onWarn, onWarnCancelled, stayActiveRef, }) {
7
+ const { stayActive } = useIdleLogout({
8
+ enabled,
9
+ timeoutMs,
10
+ onIdle,
11
+ warningMs,
12
+ onWarn,
13
+ onWarnCancelled,
14
+ });
15
+ if (stayActiveRef)
16
+ stayActiveRef.current = stayActive;
17
+ return null;
18
+ }
19
+ const TIMEOUT_MS = 60_000;
20
+ beforeEach(() => {
21
+ vi.useFakeTimers();
22
+ });
23
+ afterEach(() => {
24
+ vi.useRealTimers();
25
+ });
26
+ describe('useIdleLogout', () => {
27
+ it('fires onIdle exactly once after the timeout with no activity', () => {
28
+ const onIdle = vi.fn();
29
+ render(_jsx(Harness, { enabled: true, timeoutMs: TIMEOUT_MS, onIdle: onIdle }));
30
+ vi.advanceTimersByTime(TIMEOUT_MS - 1_000);
31
+ expect(onIdle).not.toHaveBeenCalled();
32
+ vi.advanceTimersByTime(TIMEOUT_MS);
33
+ expect(onIdle).toHaveBeenCalledTimes(1);
34
+ // The idle callback must not re-fire on subsequent ticks.
35
+ vi.advanceTimersByTime(TIMEOUT_MS * 3);
36
+ expect(onIdle).toHaveBeenCalledTimes(1);
37
+ });
38
+ it('resets the idle deadline on user activity', () => {
39
+ const onIdle = vi.fn();
40
+ render(_jsx(Harness, { enabled: true, timeoutMs: TIMEOUT_MS, onIdle: onIdle }));
41
+ // Just before the deadline the user types — the clock restarts.
42
+ vi.advanceTimersByTime(TIMEOUT_MS - 5_000);
43
+ window.dispatchEvent(new Event('keydown'));
44
+ vi.advanceTimersByTime(TIMEOUT_MS - 5_000);
45
+ expect(onIdle).not.toHaveBeenCalled();
46
+ // A full quiet timeout after the last activity signs the user out.
47
+ vi.advanceTimersByTime(TIMEOUT_MS);
48
+ expect(onIdle).toHaveBeenCalledTimes(1);
49
+ });
50
+ it('does nothing when disabled', () => {
51
+ const onIdle = vi.fn();
52
+ render(_jsx(Harness, { enabled: false, timeoutMs: TIMEOUT_MS, onIdle: onIdle }));
53
+ vi.advanceTimersByTime(TIMEOUT_MS * 10);
54
+ expect(onIdle).not.toHaveBeenCalled();
55
+ });
56
+ it('tears everything down on unmount', () => {
57
+ const onIdle = vi.fn();
58
+ const { unmount } = render(_jsx(Harness, { enabled: true, timeoutMs: TIMEOUT_MS, onIdle: onIdle }));
59
+ unmount();
60
+ vi.advanceTimersByTime(TIMEOUT_MS * 10);
61
+ expect(onIdle).not.toHaveBeenCalled();
62
+ });
63
+ it('checks the deadline immediately when a hidden tab becomes visible', () => {
64
+ const onIdle = vi.fn();
65
+ render(_jsx(Harness, { enabled: true, timeoutMs: TIMEOUT_MS, onIdle: onIdle }));
66
+ // Simulate the deadline passing while the tab was hidden (the interval is
67
+ // shared with visibility, so freeze it by only moving the mocked clock).
68
+ vi.setSystemTime(Date.now() + TIMEOUT_MS + 1_000);
69
+ document.dispatchEvent(new Event('visibilitychange'));
70
+ expect(onIdle).toHaveBeenCalledTimes(1);
71
+ });
72
+ describe('warning window', () => {
73
+ const WARNING_MS = 20_000;
74
+ it('fires onWarn once inside the warning window, then onIdle at the deadline', () => {
75
+ const onIdle = vi.fn();
76
+ const onWarn = vi.fn();
77
+ render(_jsx(Harness, { enabled: true, timeoutMs: TIMEOUT_MS, warningMs: WARNING_MS, onIdle: onIdle, onWarn: onWarn }));
78
+ // Before the warning window: nothing.
79
+ vi.advanceTimersByTime(TIMEOUT_MS - WARNING_MS - 5_000);
80
+ expect(onWarn).not.toHaveBeenCalled();
81
+ // Inside the window: warn exactly once, no logout yet.
82
+ vi.advanceTimersByTime(10_000);
83
+ expect(onWarn).toHaveBeenCalledTimes(1);
84
+ expect(onIdle).not.toHaveBeenCalled();
85
+ // Deadline: logout, and the warning doesn't re-fire.
86
+ vi.advanceTimersByTime(TIMEOUT_MS);
87
+ expect(onIdle).toHaveBeenCalledTimes(1);
88
+ expect(onWarn).toHaveBeenCalledTimes(1);
89
+ });
90
+ it('activity after the warning cancels it and resets the clock', () => {
91
+ const onIdle = vi.fn();
92
+ const onWarn = vi.fn();
93
+ const onWarnCancelled = vi.fn();
94
+ render(_jsx(Harness, { enabled: true, timeoutMs: TIMEOUT_MS, warningMs: WARNING_MS, onIdle: onIdle, onWarn: onWarn, onWarnCancelled: onWarnCancelled }));
95
+ vi.advanceTimersByTime(TIMEOUT_MS - 10_000);
96
+ expect(onWarn).toHaveBeenCalledTimes(1);
97
+ window.dispatchEvent(new Event('keydown'));
98
+ expect(onWarnCancelled).toHaveBeenCalledTimes(1);
99
+ // The clock restarted: warn again on the next quiet cycle, no logout yet.
100
+ vi.advanceTimersByTime(TIMEOUT_MS - 10_000);
101
+ expect(onWarn).toHaveBeenCalledTimes(2);
102
+ expect(onIdle).not.toHaveBeenCalled();
103
+ });
104
+ it('stayActive resets the clock like real activity', () => {
105
+ const onIdle = vi.fn();
106
+ const onWarn = vi.fn();
107
+ const onWarnCancelled = vi.fn();
108
+ const stayActiveRef = { current: null };
109
+ render(_jsx(Harness, { enabled: true, timeoutMs: TIMEOUT_MS, warningMs: WARNING_MS, onIdle: onIdle, onWarn: onWarn, onWarnCancelled: onWarnCancelled, stayActiveRef: stayActiveRef }));
110
+ vi.advanceTimersByTime(TIMEOUT_MS - 10_000);
111
+ expect(onWarn).toHaveBeenCalledTimes(1);
112
+ stayActiveRef.current?.();
113
+ expect(onWarnCancelled).toHaveBeenCalledTimes(1);
114
+ vi.advanceTimersByTime(TIMEOUT_MS - 15_000);
115
+ expect(onIdle).not.toHaveBeenCalled();
116
+ });
117
+ });
118
+ });
119
+ //# sourceMappingURL=useIdleLogout.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIdleLogout.test.js","sourceRoot":"","sources":["../../../src/__tests__/hooks/useIdleLogout.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=post-types-service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-types-service.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/post-types-service.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
2
+ const cmsApiMock = vi.fn();
3
+ vi.mock('../../lib/api.js', () => ({
4
+ cmsApi: (...args) => cmsApiMock(...args),
5
+ }));
6
+ const { fetchPostTypeDetail, fieldKeyFromName, fieldTypeLabel, humanizeFieldName, renderFieldSnippet, } = await import('../../lib/post-types-service.js');
7
+ const COLLECTIONS = [
8
+ {
9
+ slug: 'blog',
10
+ labels: { singular: 'Blog Post', plural: 'Blog' },
11
+ type: 'post',
12
+ urlPrefix: 'blog',
13
+ description: 'Long-form articles',
14
+ icon: 'file-text',
15
+ color: 'purple',
16
+ hidden: false,
17
+ fields: [
18
+ { name: 'title', type: 'text', required: true },
19
+ { name: 'body', type: 'richText', required: false },
20
+ { name: 'author', type: 'relationship', required: false, relationTo: 'users' },
21
+ ],
22
+ },
23
+ ];
24
+ describe('fetchPostTypeDetail', () => {
25
+ beforeEach(() => {
26
+ cmsApiMock.mockReset();
27
+ cmsApiMock.mockResolvedValue({ data: COLLECTIONS });
28
+ });
29
+ it('maps the matching collection row onto PostTypeDetail', async () => {
30
+ const detail = await fetchPostTypeDetail('blog');
31
+ expect(detail).toEqual({
32
+ slug: 'blog',
33
+ singular: 'Blog Post',
34
+ plural: 'Blog',
35
+ description: 'Long-form articles',
36
+ urlPrefix: 'blog',
37
+ icon: 'file-text',
38
+ color: 'purple',
39
+ fields: COLLECTIONS[0].fields,
40
+ });
41
+ });
42
+ it('returns null when the slug is unknown', async () => {
43
+ expect(await fetchPostTypeDetail('missing')).toBeNull();
44
+ });
45
+ it('throws on an API error envelope', async () => {
46
+ cmsApiMock.mockResolvedValue({ error: 'boom' });
47
+ await expect(fetchPostTypeDetail('blog')).rejects.toThrow('boom');
48
+ });
49
+ });
50
+ describe('field name helpers', () => {
51
+ it('humanizes camelCase and snake_case keys', () => {
52
+ expect(humanizeFieldName('clientName')).toBe('Client Name');
53
+ expect(humanizeFieldName('meta_description')).toBe('Meta Description');
54
+ expect(humanizeFieldName('seo-score')).toBe('Seo Score');
55
+ });
56
+ it('derives camelCase keys from display names', () => {
57
+ expect(fieldKeyFromName('Client Name')).toBe('clientName');
58
+ expect(fieldKeyFromName(' Featured Image! ')).toBe('featuredImage');
59
+ expect(fieldKeyFromName('')).toBe('');
60
+ });
61
+ it('labels known field types and passes through unknown ones', () => {
62
+ expect(fieldTypeLabel('text')).toBe('Short Text');
63
+ expect(fieldTypeLabel('relationship')).toBe('Relation');
64
+ expect(fieldTypeLabel('customThing')).toBe('customThing');
65
+ });
66
+ });
67
+ describe('renderFieldSnippet', () => {
68
+ it('renders a minimal optional field', () => {
69
+ expect(renderFieldSnippet({ key: 'subtitle', label: 'Subtitle', type: 'text', required: false })).toBe("subtitle: { type: 'text', label: 'Subtitle' },");
70
+ });
71
+ it('includes required, help text, and escapes quotes', () => {
72
+ const snippet = renderFieldSnippet({
73
+ key: 'clientName',
74
+ label: "Client's Name",
75
+ type: 'text',
76
+ required: true,
77
+ helpText: "Editor's hint",
78
+ });
79
+ expect(snippet).toContain("label: 'Client\\'s Name'");
80
+ expect(snippet).toContain('required: true');
81
+ expect(snippet).toContain("admin: { description: 'Editor\\'s hint' }");
82
+ });
83
+ it('seeds placeholder options for select and relationTo for relationship', () => {
84
+ expect(renderFieldSnippet({ key: 'tone', label: 'Tone', type: 'select', required: false })).toContain("options: [{ label: 'Option A', value: 'option-a' }]");
85
+ expect(renderFieldSnippet({ key: 'owner', label: 'Owner', type: 'relationship', required: false })).toContain("relationTo: 'posts'");
86
+ });
87
+ });
88
+ //# sourceMappingURL=post-types-service.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-types-service.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/post-types-service.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=query-string.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-string.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/router/query-string.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ // @vitest-environment happy-dom
2
+ import { describe, expect, it } from 'vitest';
3
+ import { act, renderHook } from '@testing-library/react';
4
+ import { parseRouteQuery, useAdminRouter } from '../../router/index.js';
5
+ // The admin router must carry the query string in `currentPath` so deep links
6
+ // like `/pages/new?parent=<id>` survive hard reloads and back/forward — not
7
+ // just in-app `navigate()` calls (which always carried it).
8
+ describe('useAdminRouter query strings', () => {
9
+ it('includes the query string when syncing from the browser URL on mount', () => {
10
+ window.history.pushState({}, '', '/admin/pages/new?parent=abc');
11
+ const { result } = renderHook(() => useAdminRouter('/admin', '/pages/new'));
12
+ expect(result.current.currentPath).toBe('/pages/new?parent=abc');
13
+ expect(result.current.search).toBe('?parent=abc');
14
+ // matchRoute strips the query, so route patterns still match.
15
+ expect(result.current.matchRoute('/pages/new')).toEqual({});
16
+ expect(parseRouteQuery(result.current.currentPath).get('parent')).toBe('abc');
17
+ });
18
+ it('carries the query string through popstate (back/forward)', () => {
19
+ window.history.pushState({}, '', '/admin/settings?tab=users');
20
+ const { result } = renderHook(() => useAdminRouter('/admin', '/'));
21
+ act(() => {
22
+ window.history.pushState({}, '', '/admin/seo?tab=audit&issueId=i1');
23
+ window.dispatchEvent(new PopStateEvent('popstate'));
24
+ });
25
+ expect(result.current.currentPath).toBe('/seo?tab=audit&issueId=i1');
26
+ expect(result.current.search).toBe('?tab=audit&issueId=i1');
27
+ expect(result.current.matchRoute('/seo')).toEqual({});
28
+ expect(result.current.matchRoute('/seo/:id')).toBeNull();
29
+ });
30
+ it('handles a query on the admin root path', () => {
31
+ window.history.pushState({}, '', '/admin?foo=1');
32
+ const { result } = renderHook(() => useAdminRouter('/admin', '/'));
33
+ expect(result.current.currentPath).toBe('/?foo=1');
34
+ expect(result.current.matchRoute('/')).toEqual({});
35
+ });
36
+ it('parseRouteQuery accepts full paths, raw search strings, and hashes', () => {
37
+ expect(parseRouteQuery('/pages/new?parent=abc').get('parent')).toBe('abc');
38
+ expect(parseRouteQuery('?tab=users&selected=u1').get('selected')).toBe('u1');
39
+ expect(parseRouteQuery('/pages').get('parent')).toBeNull();
40
+ expect(parseRouteQuery('').get('parent')).toBeNull();
41
+ expect(parseRouteQuery('/seo?tab=audit#section').get('tab')).toBe('audit');
42
+ });
43
+ });
44
+ //# sourceMappingURL=query-string.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-string.test.js","sourceRoot":"","sources":["../../../src/__tests__/router/query-string.test.ts"],"names":[],"mappings":"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"}