@bison-lab/payload-blocks 3.21.0 → 3.22.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.
@@ -122,6 +122,7 @@ interface LinkDestination {
122
122
  }
123
123
  /** The shape `linkField`/`linkFields` produce once Payload generates types. */
124
124
  interface LinkValue extends LinkDestination {
125
+ enabled?: boolean | null;
125
126
  label?: string | null;
126
127
  newTab?: boolean | null;
127
128
  }
@@ -477,7 +478,6 @@ interface MegaMenuSectionData {
477
478
  }
478
479
  interface MegaMenuColumnData {
479
480
  width?: ("25" | "33" | "50" | "66" | "75" | "100") | null;
480
- customWidth?: string | null;
481
481
  divider?: boolean | null;
482
482
  sections?: MegaMenuSectionData[] | null;
483
483
  id?: string | null;
@@ -492,16 +492,15 @@ interface MegaMenuBlockData extends BlockRow<"megaMenu">, LinkDestination {
492
492
  overview?: LinkValue;
493
493
  cta?: LinkValue;
494
494
  };
495
- customWidths?: boolean | null; /** In rem: "30" or "30rem". */
496
- customMaxWidth?: string | null;
497
495
  };
498
496
  }
499
497
  interface NavLinkBlockData extends BlockRow<"navLink">, LinkValue {}
500
498
  /**
501
- * Header Settings → `bar`. Featured looks are not here: they come from
502
- * chrome roles (BIS-85 / SPI-89). A site without the consume bump
503
- * (SPI-99) never sees these fields. Locked against `createNavigation`
504
- * in `configs.test.ts`.
499
+ * Header `bar` settings. Featured looks are not here: they come from
500
+ * chrome roles (BIS-85 / SPI-89). Hidden in the admin (BIS-121); a
501
+ * site without the consume bump (SPI-99) still reads them through
502
+ * `headerFromNavigation`. Locked against `createNavigation` in
503
+ * `configs.test.ts`.
505
504
  */
506
505
  interface NavigationSettingsData {
507
506
  hideOnScroll?: boolean | null;
@@ -510,4 +509,4 @@ interface NavigationSettingsData {
510
509
  }
511
510
  //#endregion
512
511
  export { BlockImageComponent as A, linkTypeOf as C, DefaultBlockLink as D, BlockLinkProps as E, DefaultBlockImage as M, newTabAttributes as O, ResolveLink as S, BlockLinkComponent as T, RenderBlocks as _, NavLinkBlockData as a, LinkPageDoc as b, RichTextBlockData as c, TestimonialMasonryBlockData as d, BLOCK_ID_ATTRIBUTE as f, DEFAULT_CONTAINER as g, BlockRendererProps as h, NapBlockData as i, BlockImageProps as j, renderLinkWith as k, ShowcasePanelsBlockData as l, BlockRegistryFor as m, HeroBlockData as n, NavigationSettingsData as o, BlockLike as p, MegaMenuBlockData as r, ProcessStepsBlockData as s, FaqColumnsBlockData as t, StatsBandBlockData as u, RenderBlocksProps as v, resolveLink$1 as w, LinkValue as x, LinkDestination as y };
513
- //# sourceMappingURL=types-BurBx5me.d.mts.map
512
+ //# sourceMappingURL=types-BwWCwKJ4.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-BwWCwKJ4.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.21.0",
3
+ "version": "3.22.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": {
@@ -36,7 +36,7 @@
36
36
  "dist"
37
37
  ],
38
38
  "dependencies": {
39
- "@bison-lab/admin-ui": "3.20.0"
39
+ "@bison-lab/admin-ui": "3.22.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "@bison-lab/payload-core": "^3.0.0",
@@ -78,8 +78,8 @@
78
78
  "tsdown": "^0.21.0",
79
79
  "typescript": "^5.9.3",
80
80
  "vitest": "^4.1.2",
81
- "@bison-lab/payload-core": "3.21.0",
82
- "@bison-lab/ui": "3.11.0"
81
+ "@bison-lab/payload-core": "3.22.0",
82
+ "@bison-lab/ui": "3.22.0"
83
83
  },
84
84
  "publishConfig": {
85
85
  "access": "public"
@@ -1 +0,0 @@
1
- {"version":3,"file":"header-CV7K-3yB.mjs","names":[],"sources":["../src/fields/link.ts","../src/blocks/mega-menu/rem-width.ts","../src/blocks/mega-menu/component.tsx","../src/blocks/mega-menu/header.tsx"],"sourcesContent":["import type { Condition, Field, GroupField, RowField } from \"payload\";\n\n/**\n * The import-map path of the link picker, `LinkField` in\n * `@bison-lab/payload-blocks/admin`.\n *\n * It sits on the row that holds a link's `type`, `page` and `href`, and\n * replaces those three inputs with one box: type to search published pages,\n * or paste a URL. Referenced here by package specifier, like\n * `MIN_ROWS_ARRAY_FIELD`; a site picks it up with `payload generate:importmap`.\n * Until it does, Payload logs the missing entry and renders the row as\n * nothing (a custom `Field` with no component behind it is an empty element,\n * not the stock fields), so the step is part of adopting this release.\n */\nexport const LINK_FIELD = \"@bison-lab/payload-blocks/admin#LinkField\";\n\nexport type LinkType = \"page\" | \"external\";\n\n/**\n * A page as the `page` relationship populates it: what `resolveLink` reads,\n * and what the picker shows. A site's generated `Page` is assignable to it.\n * `_status` is absent on a collection without drafts, which counts as\n * published.\n */\nexport interface LinkPageDoc {\n id: number | string;\n title?: string | null;\n slug?: string | null;\n _status?: (\"draft\" | \"published\") | null;\n}\n\n/** Where a link goes: the three fields the picker writes. */\nexport interface LinkDestination {\n /** `page` unless the editor pasted a URL. Rows saved before links had a type carry only `href`. */\n type?: LinkType | null;\n /** The page's id, or the page itself once a `depth >= 1` read populates it. */\n page?: LinkPageDoc | number | string | null;\n /** The pasted URL of an external link. */\n href?: string | null;\n}\n\n/** The shape `linkField`/`linkFields` produce once Payload generates types. */\nexport interface LinkValue extends LinkDestination {\n label?: string | null;\n newTab?: boolean | null;\n}\n\n/**\n * Turns a link's destination into the `href` a renderer emits, or `null`\n * when there is nothing to point at, in which case the renderer shows the\n * label as text. A site passes its own (`RenderBlocks`' `resolveLink`) when\n * a page's path is not `/<slug>`: the package has no way to know a site's\n * routes, the same reason it takes an `imageComponent`.\n */\nexport type ResolveLink = (link: LinkDestination) => string | null;\n\n/**\n * The package's resolver: a published, populated page is `/<slug>`; an\n * external link is its `href` as typed.\n *\n * A page that did not populate is `null`: Payload hands the public read the\n * bare id when the reader may not see the page, which is what an unpublished\n * page looks like from the site. A populated page whose `_status` is `draft`\n * is `null` too, for a read that can see drafts. A row from before links had\n * a `type` is an external link by `linkTypeOf`, here, in the stock fields'\n * conditions and in the picker alike: the site keeps rendering its `href`,\n * the admin shows it as an External chip, and the site's migration to\n * `type: external` only makes the stored row say what every reader already\n * assumes.\n */\nexport function resolveLink(\n link: LinkDestination | null | undefined,\n): string | null {\n if (!link) return null;\n if (linkTypeOf(link) === \"page\") {\n const page = link.page;\n if (!page || typeof page !== \"object\") return null;\n if (page._status === \"draft\") return null;\n return page.slug ? `/${page.slug}` : null;\n }\n return link.href ? link.href : null;\n}\n\n/**\n * Preview resolver for the Header items kit. `LinkField` stores a page as\n * its id; the public `resolveLink` treats that as unpublished. The editor\n * looks the id up (or uses a populated draft) so the sticky bar still\n * shows the destination the picker chose.\n */\nexport function resolveAdminPreviewLink(\n link: LinkDestination | null | undefined,\n pages: ReadonlyMap<string, LinkPageDoc>,\n): string | null {\n const live = resolveLink(link);\n if (live) return live;\n if (!link || linkTypeOf(link) !== \"page\") return null;\n const page = link.page;\n if (page && typeof page === \"object\") {\n return page.slug ? `/${page.slug}` : null;\n }\n if (page == null) return null;\n const doc = pages.get(String(page));\n return doc?.slug ? `/${doc.slug}` : null;\n}\n\n/**\n * Which of the two stored destinations a row is using. `type` decides; a row\n * with no `type` yet (saved before links had one) is read by what it holds,\n * an `href` making it external, the same reading `resolveLink` and the picker\n * make, so all three agree on every row.\n */\nexport function linkTypeOf(link: LinkDestination | null | undefined): LinkType {\n if (link?.type === \"external\") return \"external\";\n if (link?.type === \"page\") return \"page\";\n return link?.href ? \"external\" : \"page\";\n}\n\nconst whenPage: Condition = (_data, siblingData) =>\n linkTypeOf(siblingData as LinkDestination) === \"page\";\n\nconst whenExternal: Condition = (_data, siblingData) =>\n linkTypeOf(siblingData as LinkDestination) === \"external\";\n\nexport interface LinkDestinationOptions {\n /** Require a destination. Defaults to `false`. */\n required?: boolean;\n /** The collection a page link points into. Defaults to `pages`. */\n pagesCollection?: string;\n}\n\n/**\n * Where a link goes, as stored: `type`, `page` and `href` in one row.\n *\n * The row carries the picker (`LINK_FIELD`), which replaces all three inputs\n * with one box. The stored fields are the website template's shape and stay\n * editable on their own: `page` shows for a page link, `href` for an external\n * one, and `required` binds whichever is active, since Payload skips\n * validation on a field whose condition is false. `page` offers published\n * rows only, and Payload re-checks that on publish, so a page that was\n * unpublished after being picked has to be picked again or republished.\n */\nexport function linkDestinationFields({\n required = false,\n pagesCollection = \"pages\",\n}: LinkDestinationOptions = {}): RowField[] {\n return [\n {\n type: \"row\",\n admin: { components: { Field: LINK_FIELD } },\n fields: [\n {\n name: \"type\",\n type: \"radio\",\n label: \"Goes to\",\n defaultValue: \"page\",\n options: [\n { label: \"Page\", value: \"page\" },\n { label: \"URL\", value: \"external\" },\n ],\n admin: { layout: \"horizontal\" },\n },\n {\n name: \"page\",\n type: \"relationship\",\n relationTo: pagesCollection,\n required,\n filterOptions: { _status: { equals: \"published\" } },\n admin: { condition: whenPage },\n },\n {\n name: \"href\",\n type: \"text\",\n label: \"URL\",\n required,\n admin: {\n condition: whenExternal,\n description:\n 'A full URL (\"https://example.com\"), \"mailto:\" or \"tel:\", or a site path (\"/contact\").',\n },\n },\n ],\n },\n ];\n}\n\nexport interface LinkFieldsOptions extends LinkDestinationOptions {\n /** Require the label and destination. Defaults to `false`. */\n required?: boolean;\n /** Wording for the visible text field. Defaults to \"Label\". */\n labelFieldLabel?: string;\n}\n\n/**\n * The fields a call to action is made of, unwrapped: the destination row,\n * then the label and the new-tab flag.\n *\n * `newTab` drives `target=\"_blank\"` *and* the matching `rel`, which is why no\n * renderer takes one without the other.\n */\nexport function linkFields({\n required = false,\n labelFieldLabel = \"Label\",\n pagesCollection,\n}: LinkFieldsOptions = {}): Field[] {\n return [\n ...linkDestinationFields({ required, pagesCollection }),\n { name: \"label\", type: \"text\", label: labelFieldLabel, required },\n {\n name: \"newTab\",\n type: \"checkbox\",\n label: \"Open in a new tab\",\n defaultValue: false,\n },\n ];\n}\n\nexport interface LinkFieldOptions extends LinkFieldsOptions {\n /** Field name. Defaults to `link`. */\n name?: string;\n label?: GroupField[\"label\"];\n admin?: GroupField[\"admin\"];\n}\n\n/** `linkFields()` as one named group, for a block with a single CTA. */\nexport function linkField({\n name = \"link\",\n label,\n admin,\n ...rest\n}: LinkFieldOptions = {}): GroupField {\n return {\n name,\n type: \"group\",\n fields: linkFields(rest),\n ...(label === undefined ? {} : { label }),\n ...(admin === undefined ? {} : { admin }),\n };\n}\n","/**\n * The one rule for a typed panel width, shared by the config's validator and\n * the renderer's reader so the two cannot drift: if the validator accepted a\n * value the renderer dropped, the editor would be back to a width that\n * silently does nothing. React-free, because `config.ts` ships from the Node\n * entry.\n */\nconst REM_WIDTH = /^\\s*(\\d+(?:\\.\\d+)?)\\s*(rem)?\\s*$/;\n\n/** \"30\" and \"30rem\" both mean 30rem; anything else is not a width. */\nexport function remWidth(\n value: string | null | undefined,\n): `${number}rem` | null {\n const match = REM_WIDTH.exec(value ?? \"\");\n return match ? (`${Number(match[1])}rem` as `${number}rem`) : null;\n}\n","import {\n MegaMenuPanel,\n type MegaMenuColumn,\n type MegaMenuIcons,\n type MegaMenuLink,\n type MegaMenuPanelData,\n type MegaMenuSection,\n type MegaMenuMaxWidth,\n type MegaMenuVariants,\n type MegaMenuWidth,\n} from \"@bison-lab/ui\";\n\nimport { resolveLink, type LinkValue, type ResolveLink } from \"../../fields/link\";\nimport { renderLinkWith } from \"../../link\";\nimport type { BlockRendererProps } from \"../../render-blocks\";\nimport type { MegaMenuBlockData, MegaMenuLinkData } from \"../../types\";\nimport { remWidth } from \"./rem-width\";\n\n/**\n * A menu link needs both halves. Unlike a call to action, a link whose page\n * is missing or unpublished is dropped rather than shown as text: a menu\n * item that goes nowhere is worse than one fewer item.\n */\nfunction completeLink(\n row: MegaMenuLinkData,\n resolve: ResolveLink,\n): MegaMenuLink | null {\n const href = resolve(row);\n if (!row.label || !href) return null;\n return {\n label: row.label,\n href,\n ...(row.description ? { description: row.description } : {}),\n ...(row.variant ? { variant: row.variant } : {}),\n ...(row.icon ? { icon: row.icon } : {}),\n ...(row.newTab ? { newTab: true } : {}),\n };\n}\n\n/**\n * The row as `MegaMenuPanel` data, or `null` when there is nothing to open:\n * no columns, or columns whose links are not yet complete. Draft saves skip\n * validation, so a live preview genuinely hands this half-built rows.\n * `resolve` turns each link's page into a path; the package's own is the\n * default.\n */\nexport function megaMenuPanelFromRow(\n row: MegaMenuBlockData,\n resolve: ResolveLink = resolveLink,\n defaultMaxWidth: MegaMenuMaxWidth = \"standard\",\n): MegaMenuPanelData | null {\n const panel = row.panel;\n if (!panel?.columns?.length) return null;\n const custom = Boolean(panel.customWidths);\n\n const columns: MegaMenuColumn[] = [];\n for (const column of panel.columns) {\n const sections: MegaMenuSection[] = [];\n for (const section of column.sections ?? []) {\n const links = (section.links ?? [])\n .map((link) => completeLink(link, resolve))\n .filter((link): link is MegaMenuLink => link !== null);\n if (!links.length) continue;\n sections.push({\n ...(section.eyebrow ? { eyebrow: section.eyebrow } : {}),\n display: section.display ?? \"list\",\n hideDescriptionsOnMobile: section.hideDescriptionsOnMobile ?? true,\n links,\n });\n }\n columns.push({\n ...(custom && column.customWidth\n ? { customWidth: column.customWidth }\n : { width: Number(column.width ?? \"100\") as MegaMenuWidth }),\n ...(column.divider ? { divider: true } : {}),\n sections,\n });\n }\n if (!columns.some((column) => column.sections.length)) return null;\n\n const overview = footerLink(panel.footer?.overview, resolve);\n const cta = footerLink(panel.footer?.cta, resolve);\n // Independent of the column checkbox: the config gates only `customWidth`\n // on it, and the help text promises a typed panel width is used.\n const customMax = remWidth(panel.customMaxWidth);\n\n return {\n maxWidth: customMax ?? panel.maxWidth ?? defaultMaxWidth,\n columns,\n footer: {\n ...(overview ? { overview } : {}),\n ...(cta ? { cta } : {}),\n },\n };\n}\n\n/** A footer link, complete, or nothing: same rule as `completeLink`. */\nfunction footerLink(\n row: LinkValue | undefined,\n resolve: ResolveLink,\n): { label: string; href: string; newTab?: true } | null {\n const href = row ? resolve(row) : null;\n if (!row?.label || !href) return null;\n return {\n label: row.label,\n href,\n ...(row.newTab ? { newTab: true } : {}),\n };\n}\n\nexport interface MegaMenuBlockRendererProps\n extends BlockRendererProps<MegaMenuBlockData> {\n /** The look behind each `variants` value the site passed to `megaMenuBlock`. */\n variants?: MegaMenuVariants;\n /** The glyph behind each `icons` value the site passed to `megaMenuBlock`. */\n icons?: MegaMenuIcons;\n}\n\n/**\n * One panel, standing alone: what a live preview shows while the row is being\n * edited. A whole header goes through `headerItemsFromBlocks` instead.\n */\nexport function MegaMenuBlockRenderer({\n block,\n linkComponent,\n resolveLink: resolve,\n variants,\n icons,\n}: MegaMenuBlockRendererProps) {\n const panel = megaMenuPanelFromRow(block, resolve);\n if (!panel) return null;\n return (\n <MegaMenuPanel\n {...panel}\n variants={variants}\n icons={icons}\n renderLink={renderLinkWith(linkComponent)}\n />\n );\n}\n","import {\n megaMenuToFloatingNavItems,\n type FloatingNavItem,\n type MegaMenuIcons,\n type MegaMenuItem,\n type MegaMenuMaxWidth,\n type MegaMenuVariants,\n} from \"@bison-lab/ui\";\n\nimport { resolveLink, type ResolveLink } from \"../../fields/link\";\nimport { renderLinkWith, type BlockLinkComponent } from \"../../link\";\nimport type { MegaMenuBlockData, NavigationSettingsData, NavLinkBlockData } from \"../../types\";\nimport { megaMenuPanelFromRow } from \"./component\";\n\n/** A row of a header global's `items`: either block, or whatever else a site added. */\nexport type HeaderBlockRow = MegaMenuBlockData | NavLinkBlockData;\n\nexport interface HeaderItemsOptions {\n variants?: MegaMenuVariants;\n icons?: MegaMenuIcons;\n /** Marks the current section; receives each item's `href`. */\n isActive?: (href: string) => boolean;\n /** The site's link adapter, applied to every link inside the panels. */\n linkComponent?: BlockLinkComponent;\n /** The site's resolver for page links; defaults to the package's `resolveLink`. */\n resolveLink?: ResolveLink;\n /** Fallback panel width when a mega menu row does not set `panel.maxWidth`. */\n defaultMaxWidth?: MegaMenuMaxWidth;\n}\n\n/** The Header global (or `getNavigation`'s `{ header, bar }`) as this helper reads it. */\nexport interface HeaderNavigationDoc {\n header?: { items?: unknown } | null;\n bar?: NavigationSettingsData | null;\n}\n\nexport interface HeaderFromNavigationOptions {\n icons?: MegaMenuIcons;\n isActive?: (href: string) => boolean;\n linkComponent?: BlockLinkComponent;\n /**\n * Featured-link looks from chrome roles (`megaMenuVariantsFromLooks`),\n * not a variants array on Header.\n */\n looks?: MegaMenuVariants;\n resolveLink?: ResolveLink;\n /** Holds the named item's panel open — a CMS live preview of the edited row. */\n openItem?: string;\n}\n\nexport interface HeaderFromNavigationProps {\n items: FloatingNavItem[];\n breakpoint: \"lg\";\n hideOnScroll: boolean;\n viewport: boolean;\n openItem?: string;\n}\n\n/**\n * A global's `items` as `FloatingNavBlock` items, so a site's header is one\n * call. Rows the bar cannot show are dropped rather than rendered broken: a\n * row with no label, a mega menu with nothing to open, and any block type a\n * site added that this package does not know.\n *\n * A `navLink` row's `newTab` is not carried: `FloatingNavItem` has no such\n * field, because the bar renders its own links. A bar item whose page is\n * missing or unpublished is dropped, like a panel link. A mega menu's\n * landing page goes through the same resolver: unpublished or missing\n * pages omit the trigger `href` and keep the panel.\n */\nexport function headerItemsFromBlocks(\n blocks: HeaderBlockRow[],\n {\n variants,\n icons,\n isActive,\n linkComponent,\n resolveLink: resolve = resolveLink,\n defaultMaxWidth = \"standard\",\n }: HeaderItemsOptions = {},\n): FloatingNavItem[] {\n const items: MegaMenuItem[] = [];\n for (const row of blocks) {\n if (!row.label) continue;\n if (row.blockType === \"navLink\") {\n const href = resolve(row);\n if (!href) continue;\n items.push({ label: row.label, href });\n } else if (row.blockType === \"megaMenu\") {\n const panel = megaMenuPanelFromRow(row, resolve, defaultMaxWidth);\n if (!panel) continue;\n const href = resolve(row);\n items.push({\n label: row.label,\n ...(href ? { href } : {}),\n panel,\n });\n }\n }\n return megaMenuToFloatingNavItems(\n { items },\n {\n isActive,\n variants,\n icons,\n ...(linkComponent ? { renderLink: renderLinkWith(linkComponent) } : {}),\n },\n );\n}\n\n/**\n * The Header global as `FloatingNavBlock` props: items through\n * `headerItemsFromBlocks`, `breakpoint: \"lg\"`, and bar behaviour from\n * Settings. Looks come from chrome roles (`looks`), not a Header array.\n * A site without the consume bump (SPI-99) never reads these fields.\n */\nexport function headerFromNavigation(\n doc: HeaderNavigationDoc,\n {\n icons,\n isActive,\n linkComponent,\n looks,\n resolveLink: resolve,\n openItem,\n }: HeaderFromNavigationOptions = {},\n): HeaderFromNavigationProps {\n const raw = doc.header?.items;\n const items = Array.isArray(raw) ? (raw as HeaderBlockRow[]) : [];\n const defaultMaxWidth = doc.bar?.defaultMaxWidth ?? \"standard\";\n return {\n items: headerItemsFromBlocks(items, {\n variants: looks,\n icons,\n isActive,\n linkComponent,\n resolveLink: resolve,\n defaultMaxWidth,\n }),\n breakpoint: \"lg\",\n hideOnScroll: doc.bar?.hideOnScroll ?? true,\n viewport: doc.bar?.viewport ?? false,\n ...(openItem ? { openItem } : {}),\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-BurBx5me.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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"}