@bison-lab/payload-blocks 3.2.0 → 3.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.
@@ -89,9 +89,73 @@ declare namespace DefaultBlockLink {
89
89
  * Adapts the seam to the `renderLink` prop every `@bison-lab/ui` block takes.
90
90
  * The ui blocks hand over `target`/`rel` already expanded, so `newTab` is
91
91
  * read back off `target` to keep the flag and the attributes in step.
92
+ *
93
+ * An empty `href` is a link with no destination: a page link whose page is
94
+ * missing or unpublished (`resolveLink` gave `null`). It renders as text in
95
+ * the same place, with the same class, so a call to action never points
96
+ * nowhere and never throws.
92
97
  */
93
98
  declare function renderLinkWith(Link: BlockLinkComponent): RenderLink;
94
99
  //#endregion
100
+ //#region src/fields/link.d.ts
101
+ type LinkType = "page" | "external";
102
+ /**
103
+ * A page as the `page` relationship populates it: what `resolveLink` reads,
104
+ * and what the picker shows. A site's generated `Page` is assignable to it.
105
+ * `_status` is absent on a collection without drafts, which counts as
106
+ * published.
107
+ */
108
+ interface LinkPageDoc {
109
+ id: number | string;
110
+ title?: string | null;
111
+ slug?: string | null;
112
+ _status?: ("draft" | "published") | null;
113
+ }
114
+ /** Where a link goes: the three fields the picker writes. */
115
+ interface LinkDestination {
116
+ /** `page` unless the editor pasted a URL. Rows saved before links had a type carry only `href`. */
117
+ type?: LinkType | null;
118
+ /** The page's id, or the page itself once a `depth >= 1` read populates it. */
119
+ page?: LinkPageDoc | number | string | null;
120
+ /** The pasted URL of an external link. */
121
+ href?: string | null;
122
+ }
123
+ /** The shape `linkField`/`linkFields` produce once Payload generates types. */
124
+ interface LinkValue extends LinkDestination {
125
+ label?: string | null;
126
+ newTab?: boolean | null;
127
+ }
128
+ /**
129
+ * Turns a link's destination into the `href` a renderer emits, or `null`
130
+ * when there is nothing to point at, in which case the renderer shows the
131
+ * label as text. A site passes its own (`RenderBlocks`' `resolveLink`) when
132
+ * a page's path is not `/<slug>`: the package has no way to know a site's
133
+ * routes, the same reason it takes an `imageComponent`.
134
+ */
135
+ type ResolveLink = (link: LinkDestination) => string | null;
136
+ /**
137
+ * The package's resolver: a published, populated page is `/<slug>`; an
138
+ * external link is its `href` as typed.
139
+ *
140
+ * A page that did not populate is `null`: Payload hands the public read the
141
+ * bare id when the reader may not see the page, which is what an unpublished
142
+ * page looks like from the site. A populated page whose `_status` is `draft`
143
+ * is `null` too, for a read that can see drafts. A row from before links had
144
+ * a `type` is an external link by `linkTypeOf`, here, in the stock fields'
145
+ * conditions and in the picker alike: the site keeps rendering its `href`,
146
+ * the admin shows it as an External chip, and the site's migration to
147
+ * `type: external` only makes the stored row say what every reader already
148
+ * assumes.
149
+ */
150
+ declare function resolveLink$1(link: LinkDestination | null | undefined): string | null;
151
+ /**
152
+ * Which of the two stored destinations a row is using. `type` decides; a row
153
+ * with no `type` yet (saved before links had one) is read by what it holds,
154
+ * an `href` making it external, the same reading `resolveLink` and the picker
155
+ * make, so all three agree on every row.
156
+ */
157
+ declare function linkTypeOf(link: LinkDestination | null | undefined): LinkType;
158
+ //#endregion
95
159
  //#region src/render-blocks.d.ts
96
160
  /** The minimum a row must be for the dispatch to place it. */
97
161
  interface BlockLike {
@@ -104,12 +168,14 @@ interface BlockLike {
104
168
  * The neighbour props let a block adapt to what sits around it: `prevType` to
105
169
  * close a seam against the block above, `runIndex` to alternate surfaces across
106
170
  * back-to-back blocks of one type, `isLast` because the final block sits
107
- * against the site footer.
171
+ * against the site footer, and `overlapAbove` / `overlapBelow` when the
172
+ * neighbour on that side floats across the seam (see `seam.ts`).
108
173
  *
109
- * `containerClassName`, `imageComponent` and `linkComponent` are the three
110
- * things a package block cannot decide for itself — the site's page measure,
111
- * how an image gets optimised, and which router a link goes through. All three
112
- * arrive already defaulted, so a renderer never checks them.
174
+ * `containerClassName`, `imageComponent`, `linkComponent` and `resolveLink`
175
+ * are the four things a package block cannot decide for itself — the site's
176
+ * page measure, how an image gets optimised, which router a link goes
177
+ * through, and what path a CMS page lives at. All four arrive already
178
+ * defaulted, so a renderer never checks them.
113
179
  */
114
180
  interface BlockRendererProps<B extends BlockLike = BlockLike> {
115
181
  block: B;
@@ -120,12 +186,21 @@ interface BlockRendererProps<B extends BlockLike = BlockLike> {
120
186
  /** Position within a run of consecutive same-type blocks, from 0. */
121
187
  runIndex: number;
122
188
  isLast: boolean;
189
+ /**
190
+ * The block before this one floats down over the seam, so this block's band
191
+ * wrapper needs clearance at the top. Decided by `RenderBlocks`' `floats`.
192
+ */
193
+ overlapAbove?: boolean;
194
+ /** The block after this one floats up over the seam; clearance at the bottom. */
195
+ overlapBelow?: boolean;
123
196
  /** The site's page measure, for the band wrapper. */
124
197
  containerClassName: string;
125
198
  /** How this block turns a resolved image into an element. */
126
199
  imageComponent: BlockImageComponent;
127
200
  /** How this block turns an `href` into an element. */
128
201
  linkComponent: BlockLinkComponent;
202
+ /** How this block turns a link's destination into an `href`; `null` renders the label as text. */
203
+ resolveLink: ResolveLink;
129
204
  }
130
205
  /**
131
206
  * One renderer per block type, each typed to its own block.
@@ -141,6 +216,14 @@ type BlockRegistryFor<B extends BlockLike> = { [K in B["blockType"]]: ComponentT
141
216
  }>>> };
142
217
  /** Fallback page measure for a site that does not pass its own. */
143
218
  declare const DEFAULT_CONTAINER = "mx-auto w-full max-w-7xl px-6";
219
+ /**
220
+ * The attribute a block editor in the Payload admin (payload-better-editor)
221
+ * walks up to from a click in its preview iframe, to find which row was
222
+ * clicked. `RenderBlocks` puts it on a wrapper around every block, so a site
223
+ * adopting the editor has nothing to add per block; a site's tests can assert
224
+ * against the name here rather than retype it.
225
+ */
226
+ declare const BLOCK_ID_ATTRIBUTE = "data-better-editor-id";
144
227
  interface RenderBlocksProps<B extends BlockLike> {
145
228
  /** Pass `[...page.hero, ...page.layout]`, so the hero counts as index 0. */
146
229
  blocks: B[];
@@ -151,27 +234,42 @@ interface RenderBlocksProps<B extends BlockLike> {
151
234
  imageComponent?: BlockImageComponent;
152
235
  /** Defaults to a plain `<a>`; a Next site passes a `next/link` adapter. */
153
236
  linkComponent?: BlockLinkComponent;
237
+ /**
238
+ * Which rows float across their seams, so their neighbours make room.
239
+ * Defaults to `overlapsSeam`: the package's stats band with `overlap` on. A
240
+ * site with its own floating block extends it:
241
+ * `floats={(row) => overlapsSeam(row) || row.blockType === "bookingCard"}`.
242
+ */
243
+ floats?: (block: B) => boolean;
244
+ /**
245
+ * Defaults to `resolveLink`, which makes a page link `/<slug>`. A site
246
+ * whose routes differ passes its own; like `linkComponent`, it must be
247
+ * exported from a client module, since a Server Component cannot hand a
248
+ * closure across the boundary.
249
+ */
250
+ resolveLink?: ResolveLink;
154
251
  }
155
252
  /**
156
253
  * Renders a page's blocks in order through the registry. A Server Component:
157
254
  * it only maps and looks up, and each renderer decides its own nature.
255
+ *
256
+ * Each block sits inside an unstyled block-level `<div>` carrying
257
+ * `BLOCK_ID_ATTRIBUTE`, which is what a click-to-edit overlay resolves and
258
+ * what its hover outline paints on. A row with no `id` (a fixture, a row the
259
+ * form has not saved) gets no attribute: there is no form-state path for an
260
+ * editor to open. The band's own `<section>` and its full-bleed background
261
+ * are unchanged by the wrapper.
158
262
  */
159
263
  declare function RenderBlocks<B extends BlockLike>({
160
264
  blocks,
161
265
  registry,
162
266
  containerClassName,
163
267
  imageComponent,
164
- linkComponent
268
+ linkComponent,
269
+ floats,
270
+ resolveLink
165
271
  }: RenderBlocksProps<B>): ReactElement;
166
272
  //#endregion
167
- //#region src/fields/link.d.ts
168
- /** The shape `linkField`/`linkFields` produce once Payload generates types. */
169
- interface LinkValue {
170
- label?: string | null;
171
- href?: string | null;
172
- newTab?: boolean | null;
173
- }
174
- //#endregion
175
273
  //#region src/media.d.ts
176
274
  /**
177
275
  * The upload side of the boundary.
@@ -293,12 +391,12 @@ interface FaqColumnsBlockData extends BlockRow<"faqColumns"> {
293
391
  title?: string | null;
294
392
  description?: string | null;
295
393
  items?: FaqColumnsItemData[] | null;
394
+ /** A link whose visible text is `linkText`, not `label`; the destination is `linkFields()`' shape. */
296
395
  cta?: {
297
396
  title?: string | null;
298
397
  linkText?: string | null;
299
- href?: string | null;
300
398
  newTab?: boolean | null;
301
- };
399
+ } & LinkDestination;
302
400
  sticky?: boolean | null;
303
401
  type?: ("single" | "multiple") | null;
304
402
  collapsible?: boolean | null;
@@ -321,6 +419,24 @@ interface TestimonialMasonryBlockData extends BlockRow<"testimonialMasonry"> {
321
419
  minItemsForFade?: number | null;
322
420
  maxVisibleRows?: number | null;
323
421
  }
422
+ interface StatsBandItemData {
423
+ value?: string | null;
424
+ label?: string | null;
425
+ href?: string | null;
426
+ wide?: boolean | null;
427
+ id?: string | null;
428
+ }
429
+ interface StatsBandBlockData extends BlockRow<"statsBand"> {
430
+ eyebrow?: string | null;
431
+ title?: string | null;
432
+ description?: string | null;
433
+ items?: StatsBandItemData[] | null;
434
+ /** A select, so the value is the digit as a string. */
435
+ columns?: ("2" | "3" | "4" | "5" | "6") | null;
436
+ tone?: ("card" | "plain") | null;
437
+ align?: ("start" | "center") | null;
438
+ overlap?: boolean | null;
439
+ }
324
440
  interface NapDepartmentData {
325
441
  name?: string | null;
326
442
  departmentType?: string | null;
@@ -382,5 +498,5 @@ interface MegaMenuBlockData extends BlockRow<"megaMenu"> {
382
498
  }
383
499
  interface NavLinkBlockData extends BlockRow<"navLink">, LinkValue {}
384
500
  //#endregion
385
- export { DefaultBlockImage as C, BlockImageProps as S, BlockLinkProps as _, NavLinkBlockData as a, renderLinkWith as b, ShowcasePanelsBlockData as c, BlockRegistryFor as d, BlockRendererProps as f, BlockLinkComponent as g, RenderBlocksProps as h, NapBlockData as i, TestimonialMasonryBlockData as l, RenderBlocks as m, HeroBlockData as n, ProcessStepsBlockData as o, DEFAULT_CONTAINER as p, MegaMenuBlockData as r, RichTextBlockData as s, FaqColumnsBlockData as t, BlockLike as u, DefaultBlockLink as v, BlockImageComponent as x, newTabAttributes as y };
386
- //# sourceMappingURL=types-CJAvoZMk.d.mts.map
501
+ export { BlockImageProps as A, resolveLink$1 as C, newTabAttributes as D, DefaultBlockLink as E, renderLinkWith as O, linkTypeOf as S, BlockLinkProps as T, RenderBlocksProps as _, NavLinkBlockData as a, LinkValue as b, ShowcasePanelsBlockData as c, BLOCK_ID_ATTRIBUTE as d, BlockLike as f, RenderBlocks as g, DEFAULT_CONTAINER as h, NapBlockData as i, DefaultBlockImage as j, BlockImageComponent as k, StatsBandBlockData as l, BlockRendererProps as m, HeroBlockData as n, ProcessStepsBlockData as o, BlockRegistryFor as p, MegaMenuBlockData as r, RichTextBlockData as s, FaqColumnsBlockData as t, TestimonialMasonryBlockData as u, LinkDestination as v, BlockLinkComponent as w, ResolveLink as x, LinkPageDoc as y };
502
+ //# sourceMappingURL=types-ODMRyOpH.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-ODMRyOpH.d.mts","names":[],"sources":["../src/image.tsx","../src/link.tsx","../src/fields/link.ts","../src/render-blocks.tsx","../src/media.ts","../src/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bison-lab/payload-blocks",
3
- "version": "3.2.0",
3
+ "version": "3.4.0",
4
4
  "description": "Payload CMS block configs and renderers for the Bison Lab marketing blocks",
5
5
  "homepage": "https://components.bisonlab.ai",
6
6
  "repository": {
@@ -74,7 +74,7 @@
74
74
  "tsdown": "^0.21.0",
75
75
  "typescript": "^5.9.3",
76
76
  "vitest": "^4.1.2",
77
- "@bison-lab/ui": "3.2.0"
77
+ "@bison-lab/ui": "3.3.0"
78
78
  },
79
79
  "publishConfig": {
80
80
  "access": "public"
@@ -1,17 +0,0 @@
1
- "use client";
2
- //#region src/cx.ts
3
- /**
4
- * Class joining, locally.
5
- *
6
- * `cn()` from `@bison-lab/ui` cannot be used here: that barrel is stamped
7
- * `"use client"`, so calling it from a Server Component throws. The renderers
8
- * only ever concatenate their own literals with a caller-supplied string —
9
- * there are no conflicting Tailwind utilities to merge — so a join is enough.
10
- */
11
- function cx(...parts) {
12
- return parts.filter(Boolean).join(" ");
13
- }
14
- //#endregion
15
- export { cx as t };
16
-
17
- //# sourceMappingURL=cx-BKHSv3xT.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cx-BKHSv3xT.mjs","names":[],"sources":["../src/cx.ts"],"sourcesContent":["/**\n * Class joining, locally.\n *\n * `cn()` from `@bison-lab/ui` cannot be used here: that barrel is stamped\n * `\"use client\"`, so calling it from a Server Component throws. The renderers\n * only ever concatenate their own literals with a caller-supplied string —\n * there are no conflicting Tailwind utilities to merge — so a join is enough.\n */\nexport function cx(...parts: (string | false | null | undefined)[]): string {\n return parts.filter(Boolean).join(\" \");\n}\n"],"mappings":";;;;;;;;;;AAQA,SAAgB,GAAG,GAAG,OAAsD;AAC1E,QAAO,MAAM,OAAO,QAAQ,CAAC,KAAK,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-CJAvoZMk.d.mts","names":[],"sources":["../src/image.tsx","../src/link.tsx","../src/render-blocks.tsx","../src/fields/link.ts","../src/media.ts","../src/types.ts"],"mappings":"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"}