@bison-lab/payload-blocks 3.1.0 → 3.3.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.
- package/README.md +150 -1
- package/dist/index.d.mts +139 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +632 -6
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +123 -7
- package/dist/react.d.mts.map +1 -1
- package/dist/react.mjs +312 -72
- package/dist/react.mjs.map +1 -1
- package/dist/rich-text.d.mts +3 -1
- package/dist/rich-text.d.mts.map +1 -1
- package/dist/rich-text.mjs +12 -6
- package/dist/rich-text.mjs.map +1 -1
- package/dist/seam-BDFZlV3F.mjs +54 -0
- package/dist/seam-BDFZlV3F.mjs.map +1 -0
- package/dist/{types-BBumyFd-.d.mts → types-D9rg0BoW.d.mts} +132 -8
- package/dist/types-D9rg0BoW.d.mts.map +1 -0
- package/package.json +2 -2
- package/dist/cx-BKHSv3xT.mjs +0 -17
- package/dist/cx-BKHSv3xT.mjs.map +0 -1
- package/dist/types-BBumyFd-.d.mts.map +0 -1
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Payload CMS block configs and renderers for the Bison Lab marketing blocks.
|
|
4
4
|
|
|
5
|
+
Full guide, with every block rendered live: <https://payload.bisonlab.ai/>
|
|
6
|
+
|
|
5
7
|
Install it in a Payload site and editors get the same sections `@bison-lab/ui`
|
|
6
8
|
ships as React props — showcase panels, process steps, FAQ columns, testimonial
|
|
7
9
|
masonry, NAP — as blocks they can add to a page.
|
|
@@ -20,7 +22,7 @@ Payload site already has).
|
|
|
20
22
|
| Import | Contents | Runs where |
|
|
21
23
|
| --- | --- | --- |
|
|
22
24
|
| `@bison-lab/payload-blocks` | Block configs, field builders, row types, `resolveMedia` | Node. This is what `payload.config.ts` imports, and it touches no React. |
|
|
23
|
-
| `@bison-lab/payload-blocks/react` | Renderers, `RenderBlocks`, the rendering types | Client (`"use client"`). |
|
|
25
|
+
| `@bison-lab/payload-blocks/react` | Renderers, `RenderBlocks`, the image and link seams, the rendering types | Client (`"use client"`). |
|
|
24
26
|
| `@bison-lab/payload-blocks/rich-text` | The `richText` renderer, alone | Client. Split out because it is the only thing that needs `@payloadcms/richtext-lexical`. |
|
|
25
27
|
| `@bison-lab/payload-blocks/admin` | `MinRowsArrayField`, the admin field the configs reference by path | Client, inside the Payload admin. Resolved through the site's import map, never imported by hand. |
|
|
26
28
|
|
|
@@ -130,6 +132,7 @@ renderer. Never widen that type to get past the error; add the entry.
|
|
|
130
132
|
registry={blockRegistry}
|
|
131
133
|
containerClassName={CONTAINER}
|
|
132
134
|
imageComponent={NextBlockImage}
|
|
135
|
+
linkComponent={NextBlockLink}
|
|
133
136
|
/>
|
|
134
137
|
```
|
|
135
138
|
|
|
@@ -156,6 +159,141 @@ Uploads are served from `/api/media/file/…`, so widen `next.config.ts`
|
|
|
156
159
|
`images.localPatterns` (or `remotePatterns`) to match before any CMS image
|
|
157
160
|
renders.
|
|
158
161
|
|
|
162
|
+
`linkComponent` is the same seam for links. No renderer writes an `<a>`
|
|
163
|
+
itself: every `href` a block emits — a hero call to action, a showcase panel's
|
|
164
|
+
corner action, a NAP `tel:` link, a menu — goes through the component you pass,
|
|
165
|
+
so a Next site's navigation stays client-side. `newTab` arrives as a flag
|
|
166
|
+
**and** as `target`/`rel` already expanded from it, so the adapter only has to
|
|
167
|
+
drop the flag before spreading:
|
|
168
|
+
|
|
169
|
+
```tsx
|
|
170
|
+
'use client'
|
|
171
|
+
import Link from 'next/link'
|
|
172
|
+
import type { BlockLinkComponent } from '@bison-lab/payload-blocks/react'
|
|
173
|
+
|
|
174
|
+
export const NextBlockLink: BlockLinkComponent = ({ newTab, ...props }) => <Link {...props} />
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Without one, `DefaultBlockLink` renders a plain anchor and sets `target` and
|
|
178
|
+
`rel` together whenever `newTab` is on.
|
|
179
|
+
|
|
180
|
+
### The seam
|
|
181
|
+
|
|
182
|
+
One block floats across the join between two bands: the stats band with
|
|
183
|
+
`overlap` on. It pulls itself up over the block above and down over the block
|
|
184
|
+
below with negative margins, and each neighbour adds the same distance on its
|
|
185
|
+
own side so the band sits across the seam without covering copy. Nothing is
|
|
186
|
+
configured for this: `RenderBlocks` works out which rows float and hands every
|
|
187
|
+
renderer two booleans, `overlapAbove` and `overlapBelow`, the same kind of
|
|
188
|
+
derived neighbour fact as `runIndex` and `isLast`. Every package renderer's
|
|
189
|
+
band wrapper adds `seamClasses(props)`; a renderer never reads a neighbour's
|
|
190
|
+
row.
|
|
191
|
+
|
|
192
|
+
A site's own renderer does the same. The usual case is the hero, which keeps
|
|
193
|
+
symmetric padding until an editor drops an overlapping band under it:
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
export function SiteHeroRenderer(props: BlockRendererProps<HeroBlockData>) {
|
|
197
|
+
return <PageHero overlap={props.overlapBelow} … />
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Which rows float is `RenderBlocks`' `floats` prop, defaulting to
|
|
202
|
+
`overlapsSeam` (the package's stats band with `overlap` on). A site with a
|
|
203
|
+
floating block of its own composes it:
|
|
204
|
+
|
|
205
|
+
```tsx
|
|
206
|
+
<RenderBlocks … floats={(row) => overlapsSeam(row) || row.blockType === 'bookingCard'} />
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
`SEAM_PULL_UP` / `SEAM_PULL_DOWN` are the floating block's negative margins
|
|
210
|
+
and `OVERLAP_ABOVE_CLEARANCE` / `OVERLAP_BELOW_CLEARANCE` the matching
|
|
211
|
+
padding, all from `./react`, so a site block that floats uses the same
|
|
212
|
+
distance the neighbours clear. A floating block that is first on the page
|
|
213
|
+
keeps its top padding, and one that is last keeps its bottom padding rather
|
|
214
|
+
than pulling the footer up.
|
|
215
|
+
|
|
216
|
+
**Tailwind has to see the renderers.** The padding and margins above are
|
|
217
|
+
utilities in this package's output, not in `@bison-lab/ui`, so a site's
|
|
218
|
+
stylesheet scans both packages:
|
|
219
|
+
|
|
220
|
+
```css
|
|
221
|
+
@source '../../../node_modules/@bison-lab/ui/dist';
|
|
222
|
+
@source '../../../node_modules/@bison-lab/payload-blocks/dist';
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Wiring a header
|
|
226
|
+
|
|
227
|
+
Two more blocks build a header rather than a page: `megaMenuBlock` and
|
|
228
|
+
`LinkBlock`. They go in a global's `items` array, and the site owns that
|
|
229
|
+
global. `megaMenuBlock` is a factory because the featured-link variants and
|
|
230
|
+
the icon list are the site's — the CMS only ever offers approved values:
|
|
231
|
+
|
|
232
|
+
```ts
|
|
233
|
+
import { LinkBlock, megaMenuBlock } from '@bison-lab/payload-blocks'
|
|
234
|
+
|
|
235
|
+
export const Navigation: GlobalConfig = {
|
|
236
|
+
slug: 'navigation',
|
|
237
|
+
fields: [
|
|
238
|
+
{
|
|
239
|
+
name: 'items',
|
|
240
|
+
type: 'blocks',
|
|
241
|
+
blocks: [
|
|
242
|
+
megaMenuBlock({
|
|
243
|
+
variants: [
|
|
244
|
+
{ label: 'Lumbar', value: 'lumbar' },
|
|
245
|
+
{ label: 'SI joint', value: 'si' },
|
|
246
|
+
],
|
|
247
|
+
icons: [{ label: 'Help', value: 'help' }],
|
|
248
|
+
}),
|
|
249
|
+
LinkBlock,
|
|
250
|
+
],
|
|
251
|
+
},
|
|
252
|
+
],
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Then `payload generate:types` and `payload migrate:create`.
|
|
257
|
+
|
|
258
|
+
An editor sees: label, landing page, the panel's max width, one to four
|
|
259
|
+
columns (each a width, an optional divider, and sections of links), a footer
|
|
260
|
+
with an overview link and a call to action, and an **Advanced** collapsible
|
|
261
|
+
for CSS widths. The column widths, read as fractions, must add up to 100%:
|
|
262
|
+
the rule is the array's own `validate`, so the editor sees "The columns add
|
|
263
|
+
up to 75%. They need to add up to 100%." as they build, and the global's
|
|
264
|
+
publish refuses the same. Custom widths skip it.
|
|
265
|
+
|
|
266
|
+
In the site header, one call turns the rows into `FloatingNavBlock` items.
|
|
267
|
+
The variants and icons here are the looks behind the values above:
|
|
268
|
+
|
|
269
|
+
```tsx
|
|
270
|
+
'use client'
|
|
271
|
+
import { FloatingNavBlock } from '@bison-lab/ui'
|
|
272
|
+
import { headerItemsFromBlocks } from '@bison-lab/payload-blocks/react'
|
|
273
|
+
import { usePathname } from 'next/navigation'
|
|
274
|
+
|
|
275
|
+
export function SiteHeader({ items }: { items: Navigation['items'] }) {
|
|
276
|
+
const pathname = usePathname()
|
|
277
|
+
return (
|
|
278
|
+
<FloatingNavBlock
|
|
279
|
+
breakpoint="lg" // the panel flattens below lg; the bar must switch there too
|
|
280
|
+
items={headerItemsFromBlocks(items, {
|
|
281
|
+
variants: { lumbar: { chip: '…', title: '…', icon: <Marker region="lumbar" /> }, si: { … } },
|
|
282
|
+
icons: { help: <CircleHelp className="size-4" aria-hidden /> },
|
|
283
|
+
isActive: (href) => pathname.startsWith(href),
|
|
284
|
+
linkComponent: NextBlockLink,
|
|
285
|
+
})}
|
|
286
|
+
renderLink={({ href, children, ...rest }) => <Link href={href} {...rest}>{children}</Link>}
|
|
287
|
+
/>
|
|
288
|
+
)
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
`MegaMenuBlockRenderer` renders one panel on its own, which is what a live
|
|
293
|
+
preview of the row wants; it is not a page block and has no place in the
|
|
294
|
+
registry. A row with no columns, or whose columns hold no complete links,
|
|
295
|
+
renders nothing, and `headerItemsFromBlocks` drops it.
|
|
296
|
+
|
|
159
297
|
## Blocks
|
|
160
298
|
|
|
161
299
|
| Slug | Renders | Notes |
|
|
@@ -167,6 +305,9 @@ renders.
|
|
|
167
305
|
| `faqColumns` | `FAQColumnsBlock` | Answers are plain text, not Lexical — see the config for why. |
|
|
168
306
|
| `testimonialMasonry` | `TestimonialMasonry` | Avatars fall back to initials. |
|
|
169
307
|
| `nap` | `NapBlock` + `JsonLd` | Emits schema.org `LocalBusiness`; `phoneE164` is what the `tel:` link uses. |
|
|
308
|
+
| `statsBand` | `StatsBandBlock` | 2–6 figures. Phones show two per row, tablets three, `columns` from `lg`. `overlap` floats it over the seam with its neighbours — see "The seam". |
|
|
309
|
+
| `megaMenu` | `MegaMenuPanel` | A header block, from `megaMenuBlock({ variants, icons })`. See "Wiring a header". |
|
|
310
|
+
| `navLink` | — | A header block: a plain bar item. `headerItemsFromBlocks` maps it. |
|
|
170
311
|
|
|
171
312
|
A row whose upload has not resolved is dropped rather than rendered empty, and a
|
|
172
313
|
block left with nothing to show renders nothing at all. Draft saves skip Payload
|
|
@@ -184,6 +325,10 @@ blockSamples.showcasePanels // a ShowcasePanelsBlockData with three panels
|
|
|
184
325
|
|
|
185
326
|
`blockSamples` is one map keyed by `blockType`, typed per block
|
|
186
327
|
(`BlockSamples`) and assignable to `Record<BisonBlockType, BisonBlockData>`.
|
|
328
|
+
The header blocks are in it too: `megaMenu` renders through
|
|
329
|
+
`MegaMenuBlockRenderer`, and its sample fits a config built with
|
|
330
|
+
`megaMenuBlock(megaMenuSampleOptions)`, the options it was written against;
|
|
331
|
+
`navLink` is data only.
|
|
187
332
|
It comes from the main entry and is React-free, so a Global's field config and
|
|
188
333
|
a route handler can both read it. The Block library page that renders these
|
|
189
334
|
live for an admin is a separate piece of work (BIS-52); this package ships the
|
|
@@ -236,3 +381,7 @@ renderer's is here.
|
|
|
236
381
|
`src/__tests__/samples.test.tsx` fails until it does, and again if the sample
|
|
237
382
|
leaves a config field unset. A new field on an existing block means its
|
|
238
383
|
sample sets that field too.
|
|
384
|
+
- **A factory block takes only what the site must decide.** `megaMenuBlock`
|
|
385
|
+
takes the approved variants and icons and nothing else; a select whose
|
|
386
|
+
options come from the site is omitted when the site passes none, so the
|
|
387
|
+
field-name lock tests the factory with both lists given.
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Block, CollectionSlug, Field, GroupField, UploadField } from "payload";
|
|
1
|
+
import { ArrayFieldValidation, Block, CollectionSlug, Condition, Field, GroupField, TextFieldSingleValidation, UploadField } from "payload";
|
|
2
2
|
|
|
3
3
|
//#region src/blocks/hero/config.d.ts
|
|
4
4
|
/**
|
|
@@ -43,6 +43,62 @@ declare const TestimonialMasonryBlock: Block;
|
|
|
43
43
|
*/
|
|
44
44
|
declare const NapBlock: Block;
|
|
45
45
|
//#endregion
|
|
46
|
+
//#region src/blocks/stats-band/config.d.ts
|
|
47
|
+
/**
|
|
48
|
+
* A strip of figures: the facts a visitor should take in at a glance.
|
|
49
|
+
*
|
|
50
|
+
* The count, the order and the desktop column count are the editor's. The
|
|
51
|
+
* phone and tablet layouts are the library's: two per row and three per row,
|
|
52
|
+
* with `wide` naming the one stat that takes a full phone row when the count
|
|
53
|
+
* is odd.
|
|
54
|
+
*/
|
|
55
|
+
declare const StatsBandBlock: Block;
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/blocks/mega-menu/config.d.ts
|
|
58
|
+
/**
|
|
59
|
+
* The blocks a header global's `items` array takes.
|
|
60
|
+
*
|
|
61
|
+
* `megaMenuBlock({ variants, icons })` is the first factory-built block in the
|
|
62
|
+
* package. Every other config is a static `Block`; this one cannot be, because
|
|
63
|
+
* the featured-link variants and the icon list are the site's: the CMS only
|
|
64
|
+
* ever offers approved values, the same rule the sites use for block
|
|
65
|
+
* backgrounds. `LinkBlock` is the plain bar item beside it.
|
|
66
|
+
*
|
|
67
|
+
* Until SPI-52 lands in the Spinal Simplicity repo, no site renders its header
|
|
68
|
+
* from these rows; the Storybook `Blocks/CMS/MegaMenu` fixture is the only
|
|
69
|
+
* header built from them.
|
|
70
|
+
*/
|
|
71
|
+
/** One approved value, as a select option. */
|
|
72
|
+
interface MegaMenuOption {
|
|
73
|
+
label: string;
|
|
74
|
+
value: string;
|
|
75
|
+
}
|
|
76
|
+
interface MegaMenuBlockOptions {
|
|
77
|
+
/** Looks a featured link can take. Empty or absent drops the select. */
|
|
78
|
+
variants?: MegaMenuOption[];
|
|
79
|
+
/** Glyphs a list link can carry. Empty or absent drops the select. */
|
|
80
|
+
icons?: MegaMenuOption[];
|
|
81
|
+
}
|
|
82
|
+
/** The percent tokens a column can take, as Payload stores them. */
|
|
83
|
+
declare const MEGA_MENU_WIDTHS: readonly ["25", "33", "50", "66", "75", "100"];
|
|
84
|
+
type MegaMenuWidthValue = (typeof MEGA_MENU_WIDTHS)[number];
|
|
85
|
+
/**
|
|
86
|
+
* The rule on `columns`: read as fractions, the widths must total 100%. It is
|
|
87
|
+
* the array's own `validate`, so the editor sees the message as they build,
|
|
88
|
+
* and Payload runs field validation again on publish (only draft saves skip
|
|
89
|
+
* it), so nothing publishes with a short row. Skipped when Advanced has custom
|
|
90
|
+
* widths on.
|
|
91
|
+
*/
|
|
92
|
+
declare const validateColumnWidths: ArrayFieldValidation;
|
|
93
|
+
/** The renderer would fall back to the preset silently; the editor should hear it here instead. */
|
|
94
|
+
declare const validateRemWidth: TextFieldSingleValidation;
|
|
95
|
+
declare function megaMenuBlock({
|
|
96
|
+
variants,
|
|
97
|
+
icons
|
|
98
|
+
}?: MegaMenuBlockOptions): Block;
|
|
99
|
+
/** A plain bar item: label and destination, nothing to open. */
|
|
100
|
+
declare const LinkBlock: Block;
|
|
101
|
+
//#endregion
|
|
46
102
|
//#region src/fields/image.d.ts
|
|
47
103
|
/**
|
|
48
104
|
* Payload's `UploadField` is a union over the polymorphic (`relationTo: [...]`)
|
|
@@ -118,6 +174,12 @@ interface HeadingFieldsOptions {
|
|
|
118
174
|
required?: boolean;
|
|
119
175
|
/** Description shown under the eyebrow input. */
|
|
120
176
|
eyebrowDescription?: string;
|
|
177
|
+
/**
|
|
178
|
+
* Show the three fields only when this holds, e.g. unless the block floats.
|
|
179
|
+
* Pair it with `required: false`: a hidden required field can never be
|
|
180
|
+
* satisfied, and the block could not publish.
|
|
181
|
+
*/
|
|
182
|
+
condition?: Condition;
|
|
121
183
|
}
|
|
122
184
|
/**
|
|
123
185
|
* The eyebrow / title / description trio every marketing band opens with.
|
|
@@ -129,7 +191,8 @@ interface HeadingFieldsOptions {
|
|
|
129
191
|
*/
|
|
130
192
|
declare function headingFields({
|
|
131
193
|
required,
|
|
132
|
-
eyebrowDescription
|
|
194
|
+
eyebrowDescription,
|
|
195
|
+
condition
|
|
133
196
|
}?: HeadingFieldsOptions): Field[];
|
|
134
197
|
//#endregion
|
|
135
198
|
//#region src/fields/min-rows.d.ts
|
|
@@ -324,6 +387,24 @@ interface TestimonialMasonryBlockData extends BlockRow<"testimonialMasonry"> {
|
|
|
324
387
|
minItemsForFade?: number | null;
|
|
325
388
|
maxVisibleRows?: number | null;
|
|
326
389
|
}
|
|
390
|
+
interface StatsBandItemData {
|
|
391
|
+
value?: string | null;
|
|
392
|
+
label?: string | null;
|
|
393
|
+
href?: string | null;
|
|
394
|
+
wide?: boolean | null;
|
|
395
|
+
id?: string | null;
|
|
396
|
+
}
|
|
397
|
+
interface StatsBandBlockData extends BlockRow<"statsBand"> {
|
|
398
|
+
eyebrow?: string | null;
|
|
399
|
+
title?: string | null;
|
|
400
|
+
description?: string | null;
|
|
401
|
+
items?: StatsBandItemData[] | null;
|
|
402
|
+
/** A select, so the value is the digit as a string. */
|
|
403
|
+
columns?: ("2" | "3" | "4" | "5" | "6") | null;
|
|
404
|
+
tone?: ("card" | "plain") | null;
|
|
405
|
+
align?: ("start" | "center") | null;
|
|
406
|
+
overlap?: boolean | null;
|
|
407
|
+
}
|
|
327
408
|
interface NapDepartmentData {
|
|
328
409
|
name?: string | null;
|
|
329
410
|
departmentType?: string | null;
|
|
@@ -347,8 +428,45 @@ interface NapBlockData extends BlockRow<"nap"> {
|
|
|
347
428
|
headingLevel?: ("h2" | "h3" | "h4") | null;
|
|
348
429
|
emitJsonLd?: boolean | null;
|
|
349
430
|
}
|
|
431
|
+
interface MegaMenuLinkData extends LinkValue {
|
|
432
|
+
description?: string | null;
|
|
433
|
+
/** A value from the `variants` the site passed to `megaMenuBlock`. */
|
|
434
|
+
variant?: string | null;
|
|
435
|
+
/** A value from the `icons` the site passed to `megaMenuBlock`. */
|
|
436
|
+
icon?: string | null;
|
|
437
|
+
id?: string | null;
|
|
438
|
+
}
|
|
439
|
+
interface MegaMenuSectionData {
|
|
440
|
+
eyebrow?: string | null;
|
|
441
|
+
display?: ("featured" | "list") | null;
|
|
442
|
+
hideDescriptionsOnMobile?: boolean | null;
|
|
443
|
+
links?: MegaMenuLinkData[] | null;
|
|
444
|
+
id?: string | null;
|
|
445
|
+
}
|
|
446
|
+
interface MegaMenuColumnData {
|
|
447
|
+
width?: ("25" | "33" | "50" | "66" | "75" | "100") | null;
|
|
448
|
+
customWidth?: string | null;
|
|
449
|
+
divider?: boolean | null;
|
|
450
|
+
sections?: MegaMenuSectionData[] | null;
|
|
451
|
+
id?: string | null;
|
|
452
|
+
}
|
|
453
|
+
interface MegaMenuBlockData extends BlockRow<"megaMenu"> {
|
|
454
|
+
label?: string | null;
|
|
455
|
+
href?: string | null;
|
|
456
|
+
panel?: {
|
|
457
|
+
maxWidth?: ("narrow" | "standard" | "wide") | null;
|
|
458
|
+
columns?: MegaMenuColumnData[] | null;
|
|
459
|
+
footer?: {
|
|
460
|
+
overview?: LinkValue;
|
|
461
|
+
cta?: LinkValue;
|
|
462
|
+
};
|
|
463
|
+
customWidths?: boolean | null; /** In rem: "30" or "30rem". */
|
|
464
|
+
customMaxWidth?: string | null;
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
interface NavLinkBlockData extends BlockRow<"navLink">, LinkValue {}
|
|
350
468
|
/** Every block this package ships, as one union. */
|
|
351
|
-
type BisonBlockData = HeroBlockData | RichTextBlockData | ShowcasePanelsBlockData | ProcessStepsBlockData | FaqColumnsBlockData | TestimonialMasonryBlockData | NapBlockData;
|
|
469
|
+
type BisonBlockData = HeroBlockData | RichTextBlockData | ShowcasePanelsBlockData | ProcessStepsBlockData | FaqColumnsBlockData | TestimonialMasonryBlockData | NapBlockData | StatsBandBlockData | MegaMenuBlockData | NavLinkBlockData;
|
|
352
470
|
/** The `blockType` of every block this package ships. */
|
|
353
471
|
type BisonBlockType = BisonBlockData["blockType"];
|
|
354
472
|
//#endregion
|
|
@@ -377,6 +495,23 @@ type BlockSamples = { [K in BisonBlockType]: Extract<BisonBlockData, {
|
|
|
377
495
|
*/
|
|
378
496
|
declare const blockSamples: BlockSamples;
|
|
379
497
|
//#endregion
|
|
498
|
+
//#region src/blocks/mega-menu/sample.d.ts
|
|
499
|
+
/**
|
|
500
|
+
* The options the mega menu sample was written against. A factory block's
|
|
501
|
+
* sample only fits a config built with the same approved values, so a
|
|
502
|
+
* preview builds its block with `megaMenuBlock(megaMenuSampleOptions)`.
|
|
503
|
+
*/
|
|
504
|
+
declare const megaMenuSampleOptions: {
|
|
505
|
+
variants: {
|
|
506
|
+
label: string;
|
|
507
|
+
value: string;
|
|
508
|
+
}[];
|
|
509
|
+
icons: {
|
|
510
|
+
label: string;
|
|
511
|
+
value: string;
|
|
512
|
+
}[];
|
|
513
|
+
};
|
|
514
|
+
//#endregion
|
|
380
515
|
//#region src/sample-image.d.ts
|
|
381
516
|
interface SampleImageOptions {
|
|
382
517
|
/** Text drawn across the placeholder, e.g. "Panel 1 · 1400 × 1000". */
|
|
@@ -406,5 +541,5 @@ declare function sampleImage({
|
|
|
406
541
|
alt
|
|
407
542
|
}: SampleImageOptions): MediaDoc;
|
|
408
543
|
//#endregion
|
|
409
|
-
export { type BisonBlockData, type BisonBlockType, type BlockSamples, FaqColumnsBlock, type FaqColumnsBlockData, type FaqColumnsItemData, type HeadingFieldsOptions, HeroBlock, type HeroBlockData, type ImageFieldOptions, type LinkFieldOptions, type LinkFieldsOptions, type LinkValue, MIN_ROWS_ARRAY_FIELD, type MediaDoc, type MediaValue, NapBlock, type NapBlockData, type NapDepartmentData, ProcessStepsBlock, type ProcessStepsBlockData, type ProcessStepsItemData, type ResolvedMedia, RichTextBlock, type RichTextBlockData, type RichTextContent, type SampleImageOptions, ShowcasePanelsBlock, type ShowcasePanelsBlockData, type ShowcasePanelsItemData, TestimonialMasonryBlock, type TestimonialMasonryBlockData, type TestimonialMasonryItemData, blockSamples, emptyRows, headingFields, imageField, linkField, linkFields, resolveMedia, sampleImage };
|
|
544
|
+
export { type BisonBlockData, type BisonBlockType, type BlockSamples, FaqColumnsBlock, type FaqColumnsBlockData, type FaqColumnsItemData, type HeadingFieldsOptions, HeroBlock, type HeroBlockData, type ImageFieldOptions, LinkBlock, type LinkFieldOptions, type LinkFieldsOptions, type LinkValue, MEGA_MENU_WIDTHS, MIN_ROWS_ARRAY_FIELD, type MediaDoc, type MediaValue, type MegaMenuBlockData, type MegaMenuBlockOptions, type MegaMenuColumnData, type MegaMenuLinkData, type MegaMenuOption, type MegaMenuSectionData, type MegaMenuWidthValue, NapBlock, type NapBlockData, type NapDepartmentData, type NavLinkBlockData, ProcessStepsBlock, type ProcessStepsBlockData, type ProcessStepsItemData, type ResolvedMedia, RichTextBlock, type RichTextBlockData, type RichTextContent, type SampleImageOptions, ShowcasePanelsBlock, type ShowcasePanelsBlockData, type ShowcasePanelsItemData, StatsBandBlock, type StatsBandBlockData, type StatsBandItemData, TestimonialMasonryBlock, type TestimonialMasonryBlockData, type TestimonialMasonryItemData, blockSamples, emptyRows, headingFields, imageField, linkField, linkFields, megaMenuBlock, megaMenuSampleOptions, resolveMedia, sampleImage, validateColumnWidths, validateRemWidth };
|
|
410
545
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/blocks/hero/config.ts","../src/blocks/rich-text/config.ts","../src/blocks/showcase-panels/config.ts","../src/blocks/process-steps/config.ts","../src/blocks/faq-columns/config.ts","../src/blocks/testimonial-masonry/config.ts","../src/blocks/nap/config.ts","../src/fields/image.ts","../src/fields/link.ts","../src/fields/heading.ts","../src/fields/min-rows.ts","../src/media.ts","../src/types.ts","../src/samples.ts","../src/sample-image.ts"],"mappings":";;;;;AAcA;;;;;;;cAAa,SAAA,EAAW,KAAA;;;;cCXX,aAAA,EAAe,KAAA;;;;cCGf,mBAAA,EAAqB,KAAA;;;;cCArB,iBAAA,EAAmB,KAAA;;;;cCAnB,eAAA,EAAiB,KAAA;;;;cCEjB,uBAAA,EAAyB,KAAA;;;;;ALMtC;;;;;;cMFa,QAAA,EAAU,KAAA;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/blocks/hero/config.ts","../src/blocks/rich-text/config.ts","../src/blocks/showcase-panels/config.ts","../src/blocks/process-steps/config.ts","../src/blocks/faq-columns/config.ts","../src/blocks/testimonial-masonry/config.ts","../src/blocks/nap/config.ts","../src/blocks/stats-band/config.ts","../src/blocks/mega-menu/config.ts","../src/fields/image.ts","../src/fields/link.ts","../src/fields/heading.ts","../src/fields/min-rows.ts","../src/media.ts","../src/types.ts","../src/samples.ts","../src/blocks/mega-menu/sample.ts","../src/sample-image.ts"],"mappings":"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"}
|