riverbankcms 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -749,32 +749,27 @@ riverbankcms block list home --json
749
749
 
750
750
  ## Navigation Commands
751
751
 
752
- Manage navigation menus.
752
+ Every site has three fixed locations: `main`, `footer`, and `legal`. Each owns its items. Locations cannot be renamed, reassigned, shared or deleted.
753
753
 
754
754
  ### navigation upsert
755
755
 
756
- Create or update a navigation menu.
756
+ Replace the items in one location. An empty array clears its links and keeps the location.
757
757
 
758
758
  ```bash
759
- # With inline JSON
760
- riverbankcms navigation upsert <menu-name> --data '[{"label": "Home", "url": "/"}]'
761
-
762
- # With JSON file
763
- riverbankcms navigation upsert main --file ./main-nav.json
759
+ riverbankcms navigation upsert main --data '[{"label":"Home","link":{"kind":"page","identifier":"home"}}]'
760
+ riverbankcms navigation upsert footer --file ./footer-links.json
761
+ riverbankcms navigation upsert legal --data '[]'
764
762
  ```
765
763
 
766
- **Example menu structure:**
764
+ Example item array:
767
765
 
768
766
  ```json
769
767
  [
770
- { "label": "Home", "url": "/" },
771
- { "label": "About", "url": "/about" },
768
+ { "label": "Home", "link": { "kind": "page", "identifier": "home" } },
772
769
  {
773
770
  "label": "Products",
774
- "url": "/products",
775
771
  "children": [
776
- { "label": "Category A", "url": "/products/a" },
777
- { "label": "Category B", "url": "/products/b" }
772
+ { "label": "Category A", "link": { "kind": "url", "href": "/products/a" } }
778
773
  ]
779
774
  }
780
775
  ]
@@ -782,17 +777,17 @@ riverbankcms navigation upsert main --file ./main-nav.json
782
777
 
783
778
  ### navigation get
784
779
 
785
- Retrieve a navigation menu.
780
+ Read one fixed location.
786
781
 
787
782
  ```bash
788
- riverbankcms navigation get <menu-name>
789
783
  riverbankcms navigation get main
790
- riverbankcms navigation get main --json
784
+ riverbankcms navigation get footer --json
785
+ riverbankcms navigation get legal
791
786
  ```
792
787
 
793
788
  ### navigation list
794
789
 
795
- List all navigation menus.
790
+ List all three locations, including those with no items.
796
791
 
797
792
  ```bash
798
793
  riverbankcms navigation list
@@ -65,7 +65,8 @@ See `block-types.md` for the full list.
65
65
 
66
66
  Menu structures for site navigation.
67
67
 
68
- - Named menus (e.g., "main", "footer")
68
+ - Three independent fixed locations: `main`, `footer`, and `legal`
69
+ - Empty item lists clear a location; omitted locations are left unchanged
69
70
  - Hierarchical items with labels, URLs, and children
70
71
 
71
72
  **Local file structure:**
@@ -557,8 +558,7 @@ riverbankcms push --env=remote --yes
557
558
  {
558
559
  "menus": [
559
560
  {
560
- "identifier": "main",
561
- "name": "Main Navigation",
561
+ "location": "main",
562
562
  "items": [
563
563
  { "label": "Home", "link": { "kind": "page", "identifier": "home" } },
564
564
  {
@@ -582,8 +582,7 @@ riverbankcms push --env=remote --yes
582
582
  ]
583
583
  },
584
584
  {
585
- "identifier": "footer",
586
- "name": "Footer Navigation",
585
+ "location": "footer",
587
586
  "items": [
588
587
  { "label": "Privacy", "link": { "kind": "url", "href": "/privacy" } },
589
588
  { "label": "Terms", "link": { "kind": "url", "href": "/terms" } }
@@ -30,7 +30,7 @@ import { blockOverrides } from '@/lib/block-overrides'
30
30
  import { getRiverbankClient } from '@/lib/riverbank-client'
31
31
 
32
32
  // Next.js route config values must remain statically analyzable literals.
33
- export const revalidate = 300
33
+ export const revalidate = 60
34
34
  export const dynamicParams = true
35
35
  export const generateStaticParams = createGenerateStaticParams({
36
36
  getClient: getRiverbankClient,
@@ -130,7 +130,7 @@ riverbankcms webhooks setup \
130
130
 
131
131
  The command keeps the CMS as the source of truth for the webhook secret. It creates or updates the endpoint, ensures the full SDK revalidation event list is subscribed, writes a newly generated one-time secret to `.env.local` when one is returned, and prints hosted-environment and deploy/test steps. Existing endpoint secrets are not returned or changed unless you pass `--rotate-secret`.
132
132
 
133
- The deployed SDK site uses the returned one-time `RIVERBANK_WEBHOOK_SECRET`. The dashboard/CMS uses a separate `WEBHOOK_SIGNING_SECRET_KEYRING_JSON` environment variable to encrypt stored endpoint secrets; keep that keyring only in the dashboard environment.
133
+ The deployed SDK site uses the returned one-time `RIVERBANK_WEBHOOK_SECRET`. The dashboard/CMS uses a separate `SERVICE_SECRET_KEYRING_JSON` environment variable to encrypt stored endpoint secrets; keep that keyring only in the dashboard environment.
134
134
 
135
135
  The same destination URL can also be configured from the Riverbank dashboard:
136
136
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { a as classifySdkEventBookingOffer, i as classifySdkEventSchedule, r as sdkEventUpsertOptionalFieldSchemas } from "./sdk-event-upsert-CvFCbzNc.mjs";
3
- import { c as EVENT_PRESET_VALUES } from "./src-X9oZOIoK.mjs";
2
+ import { a as classifySdkEventBookingOffer, i as classifySdkEventSchedule, r as sdkEventUpsertOptionalFieldSchemas } from "./sdk-event-upsert-Cp043nSP.mjs";
3
+ import { l as EVENT_PRESET_VALUES } from "./src-B8fOSKJ6.mjs";
4
4
  import { z } from "zod";
5
5
 
6
6
  //#region ../blocks/src/lib/typeGuards.ts
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as assertCompatibleSdkPeer } from "./sdk-peer-CyQ2so48.mjs";
2
+ import { n as assertCompatibleSdkPeer } from "./sdk-peer-CADuG9SR.mjs";
3
3
  import { dirname, resolve } from "path";
4
4
  import { createJiti } from "jiti";
5
5
  import { existsSync } from "fs";
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import "./sdk-peer-CADuG9SR.mjs";
3
+ import { t as loadConfigFile } from "./load-config-CkSoLJFY.mjs";
4
+
5
+ export { loadConfigFile };
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { Ft as ok, Pt as err, st as parseSiteId } from "./src-X9oZOIoK.mjs";
2
+ import { Ht as ok, Vt as err, mt as parseSiteId } from "./src-B8fOSKJ6.mjs";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
4
  import { dirname, isAbsolute, join, parse, relative, resolve, sep } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
@@ -561,7 +561,7 @@ import { dataLoaderOverrides } from '@/lib/data-loader-overrides.server';
561
561
  ${previewImports}
562
562
 
563
563
  // Next.js route config values must remain statically analyzable literals.
564
- export const revalidate = 300;
564
+ export const revalidate = 60;
565
565
  export const dynamicParams = true;
566
566
  // Route discovery falls back to the homepage when the CMS is unavailable so
567
567
  // the scaffold verification build does not require a live API. Add
@@ -2014,18 +2014,26 @@ function starterContentTemplates(config) {
2014
2014
  status: "published",
2015
2015
  blocks: []
2016
2016
  }),
2017
- jsonTemplate("content/navigation.json", { menus: [{
2018
- identifier: "main",
2019
- name: "Main",
2020
- isPrimary: true,
2021
- items: [{
2022
- label: "Home",
2023
- link: {
2024
- kind: "page",
2025
- identifier: "home"
2026
- }
2027
- }]
2028
- }] }),
2017
+ jsonTemplate("content/navigation.json", { menus: [
2018
+ {
2019
+ location: "main",
2020
+ items: [{
2021
+ label: "Home",
2022
+ link: {
2023
+ kind: "page",
2024
+ identifier: "home"
2025
+ }
2026
+ }]
2027
+ },
2028
+ {
2029
+ location: "footer",
2030
+ items: []
2031
+ },
2032
+ {
2033
+ location: "legal",
2034
+ items: []
2035
+ }
2036
+ ] }),
2029
2037
  jsonTemplate("content/settings.json", {
2030
2038
  homepageId: "home",
2031
2039
  seoDefaults: {
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import "../src-X9oZOIoK.mjs";
3
- import { a as prepareScaffoldExecution, d as loadGeneratedPackageRanges, i as preflightScaffoldTargets, l as deriveGeneratedPackageRanges, o as writeScaffoldFiles, r as preflightScaffoldPlan, s as deriveScaffoldLocalManifest, t as deriveScaffoldPlan, u as findPackageManifestPath } from "../plan-DubdLR3N.mjs";
2
+ import "../src-B8fOSKJ6.mjs";
3
+ import { a as prepareScaffoldExecution, d as loadGeneratedPackageRanges, i as preflightScaffoldTargets, l as deriveGeneratedPackageRanges, o as writeScaffoldFiles, r as preflightScaffoldPlan, s as deriveScaffoldLocalManifest, t as deriveScaffoldPlan, u as findPackageManifestPath } from "../plan-BFmMfERc.mjs";
4
4
 
5
5
  export { deriveGeneratedPackageRanges, deriveScaffoldLocalManifest, deriveScaffoldPlan, findPackageManifestPath, loadGeneratedPackageRanges, preflightScaffoldPlan, preflightScaffoldTargets, prepareScaffoldExecution, writeScaffoldFiles };