@acromedia/gesso-drupal
8.4.0
Minor Changes
- a05b774: - Load Drupal menus from the core linkset endpoint for any
apiTypewith the newmenuLinksetconfig flag (removed in v9, when linkset becomes the only menu source).useMenuandgetMenutake alangcodeoption for a language prefix and abuildTreeoption (defaulttrue;falsereturns a flat list).- Linkset menus now nest by each link's
hierarchyinstead of response order, so children that arrive before their parent are kept and siblings sort by their lasthierarchyvalue. Every link carries itshierarchyindata.hierarchy, and nested link ids use the full hierarchy path (1-1-main-/about/nameinstead of1-main-/about/name). - The create-nextjs Drupal template turns on
menuLinksetwithNEXT_PUBLIC_CMS_MENU_LINKSET, which the generated.envsets totrue. Set it tofalseto keep the GraphQL menu query onapiType: graphql.
- Linkset menus now nest by each link's
8.3.2
Patch Changes
- 20d851b: Handle nested paragraphs
8.3.1
Patch Changes
-
8afcce4: dd dynamic CMS/commerce metadata (metatags) on both routers (GESSO-1224)
Introduces an open, generic metadata pipeline using the established
MetadataShape/MetadataTagcontract ({ tag, attributes }). Drupal exposes the raw computedmetatagarray oncontent.data.metatag(nodes) andproduct.properties.metatag(commerce products) — the shape existing projects already consume — queried via the node-level GraphQLmetatag { tag attributes }field. A normalized convenience copy is also provided oncontent.data.seo/product.seoand consumed by the App Router'sgenerateMetadata(metatagsToNextMetadata); the Pages Router renders the array verbatim vianext/head(MetatagsHead). Nothing is hardcoded or mandatory; unknown tags pass through untouched.Additive / non-breaking:
@acromedia/gesso-core: newMetadataShapetype (+MetadataTagalias),isSeoMetatagsguard,normalizeMetatags(tolerant of both the object-attribute node-level/JSON:API shape and the{key,value}canonical-URL shape),seoToMetatags(structuredSeo→ array), and an advisory dev-onlyassertMetadata(seo, pageType).Product.seo's static type is unchanged (Seo); Drupal Commerce stores theMetadataShape[]array there at runtime — discriminate withisSeoMetatags.@acromedia/gesso-drupal/-drupal-commerce: query the node-levelmetatag { tag attributes }field and pass the raw array through oncontent.data.metatag/product.properties.metatag(the existing consumer contract), plus a normalized convenience copy oncontent.data.seo/product.seo(previously empty).@acromedia/gesso-storyblok:buildMetatags()(now exported) builds the array from Storyblok's structured SEO fields; canonical is absolute when asiteUrlconfig is set (now populated for new projects from the frontend URL), otherwise root-relative.@acromedia/gesso-next: newmetatagsToNextMetadata,createProductMetadata(App Router, with a sharedReact.cacheproduct fetch so metadata + page hit the backend once) andMetatagsHead(Pages Router, with abackupTitleprop) exports; App Router titles usetitle.absoluteso a layouttitle.templatecannot re-wrap CMS titles. Pages RouterDynamicHeadkeeps its legacy{ title, description, tags }props (now deprecated) alongside the newseoprop, so existing callers keep working.
Requires the companion drupal-cms change (metatag + schema_metatag modules, and the
metatagGraphQL extension with the node-levelmetatagfield enabled on the node / commerce_product entity types of the GraphQL server).
8.3.0
Minor Changes
-
f750fc3: GESSO-2111-refactor: centralize the JSON:API Axios client in
@acromedia/gesso-core.The same
axios.create({ baseURL, withCredentials: true, headers: { 'Content-Type': 'application/vnd.api+json' } })snippet was duplicated in three places:gesso-drupal-commerce'sjsonApi.ts,gesso-drupal'sContentSearch.ts, andgesso-drupal'sContent.ts(whose own comment said "Reuse the same JSON:API client creation function as in ContentSearch" but copied it anyway).@acromedia/gesso-corenow exportscreateJsonApiClient(baseURL), memoized per base URL, that returns the pre-configured Axios instance. Throws whenbaseURLis empty.gesso-drupal'sContent.tsandContentSearch.tsdrop their localgetJsonApiClient/memoizeplumbing and import the core helper directly.gesso-drupal-commerce'sjsonApi.tsstays as the thin env-reading wrapper (process.env.NEXT_PUBLIC_DRUPAL_URL) it always was — it now delegates to the core helper. Every call site that imports the defaultJsonApiClientis unchanged.axiosandlodash-esare now runtime dependencies of@acromedia/gesso-core.
8.2.0
Minor Changes
- 037bf45: feat: allow the NodeArticle fragment to be excluded via the
excludeNodeArticleFragmentconfig option. Sites without aNodeGessoArticlecontent type can now opt out of the default fragment instead of spoofing it viaqueries.Nodes.NodeArticle. Combine withexcludeMediaImageFragments: truewhen the rest of your query no longer references MediaImage.
8.1.0
Minor Changes
- fe87014: feat: add ProductPromotion ComponentFactory plugin. Maps Drupal
field_ppc_*fields (product id, title, description, price/quantity toggles, buttons) to the new Gesso ProductPromotion component, composing useLoadProduct and useProductAddToCartProps to render add-to-cart and view-product actions with a loading backdrop.
Patch Changes
- bcdbf39: bugfix: correct image in Image paragraph plugin not aligning when unlinked
8.0.3
Patch Changes
- 2a6ab63: Fix Lint and Typescript issues
8.0.2
Patch Changes
- 3fdcb09: CVE-2026-23864
8.0.1
Patch Changes
- 32e066a: Security update
8.0.0
Major Changes
-
fe0dc22: ESM Migration for @acromedia/gesso-drupal
Migrated package to native ESM with backward-compatible CJS support:
- Build System: Replaced Rollup with tsup for faster, modern builds
- Module Format: Added
"type": "module"with dual ESM/CJS exports via package.jsonexportsfield - Import Paths: Updated all relative imports with explicit
.jsextensions for ESM compliance - Dependencies: Migrated from
lodashtolodash-esfor ESM compatibility - Configuration: Renamed config files to
.cjs(babel, prettier) to work with ESM package - Deprecation: Added CJS deprecation warnings via post-build script to encourage ESM adoption
- TypeScript: Updated Cypress tsconfig for ESM module resolution with
moduleResolution: "NodeNext" - Dev Dependencies: Updated typescript-eslint (v8), prettier (v3), and other tooling to latest versions
This change maintains backward compatibility while modernizing the package for better tree-shaking and future Node.js compatibility.
Patch Changes
- Updated dependencies [fe0dc22]
- Updated dependencies [fe0dc22]
- Updated dependencies [fe0dc22]
- Updated dependencies [fe0dc22]
- @acromedia/gesso@8.0.0
- @acromedia/gesso-cms@8.0.0
7.7.1
Patch Changes
- 94a559e: Remove relationship handling
7.7.0
Minor Changes
- 3469d00: Support new Spacer Height field to have spacing consistent with theme
7.6.0
Minor Changes
-
fddda9d: Add "use client" directives to all componentFactory plugins to improve Next.js App Router compatibility and prevent server-side rendering errors
-
fb362b0: Additional layouts added to Section paragraph type
-
64bf0ec: ESM Migration for @acromedia/gesso-drupal
Migrated package to native ESM with backward-compatible CJS support:
- Build System: Replaced Rollup with tsup for faster, modern builds
- Module Format: Added
"type": "module"with dual ESM/CJS exports via package.jsonexportsfield - Import Paths: Updated all relative imports with explicit
.jsextensions for ESM compliance - Dependencies: Migrated from
lodashtolodash-esfor ESM compatibility - Configuration: Renamed config files to
.cjs(babel, prettier) to work with ESM package - Deprecation: Added CJS deprecation warnings via post-build script to encourage ESM adoption
- TypeScript: Updated Cypress tsconfig for ESM module resolution with
moduleResolution: "NodeNext" - Dev Dependencies: Updated typescript-eslint (v8), prettier (v3), and other tooling to latest versions
This change maintains backward compatibility while modernizing the package for better tree-shaking and future Node.js compatibility.
7.5.2
Patch Changes
- d8a53bf: Update transformFieldComponents to support relationships
7.5.1
Patch Changes
-
6852582: Design System: add optional
expandOnClickprop (defaulttrue) toFacetCheckboxto control expanding a facet with children on click.Drupal plugin: fix
getTagtaxonomy requests that could produce400 Bad Requestwith JSON:API error "Empty include path" by building theincludequery param safely (no leading/trailing commas; only set when non-empty).Refs: GESSO-2269, GESSO-2270
7.5.0
Minor Changes
- 236a6d0: upgrade all packages to React 19, upgrade CI/builds to Node 22
Patch Changes
- 31a0bde: Fix typechecks in plugin packages
7.4.0
Minor Changes
- aaad2a6: Upgrade to typescript v5 and nodenext
7.3.1
Patch Changes
- 6a70c90: add: allow mediaImageFragment to be excluded and modified using the excludeMediaImagesFragment and queries config options.
7.3.0
Minor Changes
- 0137e40: deprecated Drupal getGraphQLClient
Patch Changes
- db9e03d: Add: pass includes property from config to jsonapi includes param in getTag method.
- 2a6b1bf: Add jsonAPI support
- ed346bf: Use ellipsis character properly
7.2.3
Patch Changes
- 9ed5af2: Added jsonapi for contentsearch
7.2.2
Patch Changes
- 45ceaaf: Updated the user package to only use JSON API
- 65bc997: Updated grid and grid items to follow the new naming convention
- 24c5133: Author information added to graphql queries
- 614916c: Added keys to various component lists, pulled out tokens from some component files so they aren't sent directly to the DOM.
7.2.1
Patch Changes
- 6503503: Update blog to use gesso_article
- 178088d: Fix image field on blog content
- ad41a86: Blog image support added
7.2.0
Minor Changes
- d312e6c: - Refactor useMenu to use JSON:API, removed GraphQL
- Added new types: DrupalLinksetResponse and DrupalLinksetItem
- Deprecate DrupalMenuResponse and DrupalMenuItem
7.1.0
Minor Changes
- 4ff0955: feat: Redirects JSON:API Migration feat: Deprecate DrupalRedirect, will be removed in V9. Use DrupalRedirectV2 instead.
- 9c48c7d: feat: Route JSON:API Migration feat: Deprecate DrupalRoutes, will be removed in V9.
7.0.1
Patch Changes
- 1ade4c8: Removed GraphQL code from Tag
7.0.0
Major Changes
- d8721b7: Removed support for old field naming that did not include
_gesso_. Removed regression testing for old field names.
Patch Changes
- d8721b7: axios update
- 2280ed6: Forward credentials with drupal cms graphql client
- Updated dependencies [463096e]
- Updated dependencies [d8721b7]
- Updated dependencies [92ee5d2]
- Updated dependencies [4dd9862]
- Updated dependencies [89bcfbf]
- Updated dependencies [d8721b7]
- Updated dependencies [593ee38]
- Updated dependencies [92ee5d2]
- Updated dependencies [d8721b7]
- @acromedia/gesso@7.0.0
- @acromedia/gesso-cms@7.0.0
6.3.0
Minor Changes
- ec6492d: Extend Tag to allow for additional fields inside the term gql fragment.
6.2.1
Patch Changes
- 45ac2ea: Fixes the CI package deployment and redeploy
6.2.0
Minor Changes
- 7917a25: Add support for HubSpot Forms in EmbedCode components.
- a2663bc: Added placeholder (undefined) SEO data to content response until full implementation is complete.
6.1.0
Minor Changes
- 2c6d2b3: Extend tag hooks to include weight as a property within the returned data with the gql response.
6.0.4
Patch Changes
- 0696c44: Update parsing function in the Drupal Card plugin
6.0.3
Patch Changes
- d2ebf3f: Handle the visible slides breakpoints in the SlideCarouselWrapper plugin.
6.0.2
Patch Changes
- fff76de: Add support for arrows and dots inside the slide carousel wrapper drupal cms plugin.
- fff76de: Grid plugin was updated to allow columnSpacing, rowSpacing and height to be undefined when left unset
- fff76de: Strap plugin was updated to support videos renderd as background or featured media
6.0.1
Patch Changes
- e8fa722: TS type fixes
- b31c0cb: Add jsonapi support for drupal useTag plugin
- 426ad3c: Added withCredentials for login & logout for drupal package.
6.0.0
Major Changes
-
609c5e9: ### Component Factory Plugins
All plugin types changed from
ComponentFactoryPlugintoComponentFactoryPluginV2<AccordionData>to use the updated plugin type with generic parameter.<AccordionData>used here as an example. Function signature: Updated from(data, pluginManager) =>... to({ data, pluginManager }) =>... to match the new plugin structure. If a specific plugin does not requirepluginManagerit is not included.
Patch Changes
- Updated dependencies [609c5e9]
- Updated dependencies [43b2ba1]
- Updated dependencies [609c5e9]
- @acromedia/gesso-cms@6.0.0
- @acromedia/gesso@6.0.0
5.4.4
Patch Changes
- fb6b39f: Correct spacing on fragment gql query.
5.4.3
Patch Changes
- a6b4a0c: Fix issue with Image plugin for component factory not respecting container sizing, causing it to expand past it's container
- 6f73767: - Regex Section Type Handling: Updated the
buildParagraphResponsefunction to use a regex to check for section types. This allows the system to recognize any section type containing the term "section," such assection,gesso_section, orsome_other_project_section, enhancing flexibility for different projects.
5.4.2
Patch Changes
- 1e3ecaf: Fix: correct misspelled drupalUrl config variable name in webform plugin
5.4.1
Patch Changes
- 457547c: Fix: get link field working in the Drupal Image plugin
5.4.0
Minor Changes
- 6f94395: Migrating decodeHTMLEntities to only impact clientside components.
Patch Changes
- c0856d9: Handle the case of unordered taxonomy terms when dealing with hierarchy
- 92b5047: Handle additional fields for query overrides and taxonomy term hierarchy
- 9230e8d: Fixes issue with buildContent erroring on pages without body field. IE: Pages built using paragraphs
5.3.1
Patch Changes
- 1353067: Add: export drupal field types and drupal utils.
5.3.0
Minor Changes
- d5d1a57: Add background video support to the Strap component
- f1feb11: - ContentSearch can optionally pass sort as a property. Adds ContentSearchSort interface.
- ContentSearch can optionally handle offset as an argument.
- ContentSearch can filter by keyword on title or body field.
- Node fragment returns created and path "alias" fields.
- Results can be returned matching ContentSearchResult interface (content, pageInfo, and eventually facets).
- Content data includes a truncated plain text body and url path alias.
5.2.2
Patch Changes
- b2d82cf: truncate gesso prefixed fields that were longer than 32 chars
5.2.1
Patch Changes
- a6fa656: Add a limit parameter to the useTag hook
- f88adaf: prefix all cms plugin fields, remap plugins to prefixed plugin names, conditionally query CMScontent types
- 788f368: add accidentally removed entityReferences back into NodeArticle fragment
5.2.0
Minor Changes
- f1e3667: Improve the caching for the Drupal graphQL Client method and expose it.
5.1.3
Patch Changes
- 5054e1d: Added the user UUID field to the buildUser for Drupal users.
5.1.2
Patch Changes
- 53eced2: Fix issue with redirects improperly labelled, source and destination swapped
5.1.1
Patch Changes
- 5d67fcf: Implemented logic to support Drupal Login & Logout
5.1.0
Minor Changes
- 387fdfa: Updates Redirect interface to a more defined specification, adds Redirects config to create-nextjs
Patch Changes
- 8635e1e: Fixes issue with drupal redirects plugin not being exported
5.0.2
Patch Changes
- 8d3fee2: Implemented support for working-copy revision to the drupal provider
5.0.1
Patch Changes
- 352ef12: Update dependencies and clean up dependency tree
- 6faa87d: Update drupal plugins to take both arrays and flat values
5.0.0
Major Changes
- bff9b4a: Update useCms imports to cms
Patch Changes
- Updated dependencies [bff9b4a]
- Updated dependencies [bff9b4a]
- @acromedia/gesso@5.0.0
- @acromedia/gesso-cms@5.0.0
4.8.2
Patch Changes
- bcf6c1d: Adds status code to failed request message when trying to pull content from Drupal
- e1f64c8: Added null value for Divider if no color token is defined.
4.8.1
Patch Changes
- 54f1216: Remove outdated license settings in package.json
4.8.0
Minor Changes
- 3b16e0d: Added ability for Divider plugin to handle pre-defined dividerColor token values in addition to valid css hex code.
4.7.0
Minor Changes
- a3a7020: Adds getForm handler and form plugins for component factory
4.6.0
Minor Changes
- 393bea8: Password Reset/Update support for Drupal.
4.5.0
Minor Changes
- f0c18c8: ComponentFactoryPlugin - Button: add field_external_link to enable Button to open a link in a new tab
- 7e812e5: Adds grid and grid item component factory plugins
4.4.1
Patch Changes
- 0d98af9: Strap factory was missing some optional chaining
4.4.0
Minor Changes
- 0e01945: Implemented the button plugin and changed Buttons plugin
Patch Changes
- 372826d: updates Strap plugin to use featured object for feature image
- 12c9aeb: updates the imports for query override functions to use gesso core
- fff4c4c: fix: spacer plugin height and width props not working in drupal
4.3.2
Patch Changes
- edc0ea0: Update @types/react
- e46a974: Fixes issue with create-nextjs and cleans up various small items
4.3.1
Patch Changes
- 85164af: Throw a better error message when building content output when there is an issue with pargraph structure.
4.3.0
Minor Changes
- a6f51dd: Added support for next.js preview mode.
Patch Changes
- a1803c8: updates Section plugin to use background prop
- 8ed63b9: enhances the flexibility of the Buttons plugin by allowing it to handle multiple icon scenarios and ensures the correct rendering based on the provided data.
4.2.0
Minor Changes
- 6b468c5: Add limit option from config into gesso drupal getRoutes.
Patch Changes
- 57826f9: fix strap plugin to use background prop and fix issue that was allowing long words to go past containers max-width
- ef3b420: Fixes featured flag for card and cards plugins
4.1.1
Patch Changes
- 36dcf78: removes references to unused Carousel and HeroBanner plugins which were never fully implemented and became redundant with addition of SlideCarouselWrapper plugin and paragraph type
- 1453486: Fixed props in componentFactory card
4.1.0
Minor Changes
- 9ef4fe6: Adds redirect status code to Drupal provider getRedirects response
- 7ce641f: adds SlideCarouselWrapper and Card plugins. Tests and updates dependencies and configs as needed.
4.0.0
Major Changes
- f49ee1f: gesso v4 version bump
Patch Changes
- Updated dependencies [f49ee1f]
- Updated dependencies [80e1851]
- Updated dependencies [f49ee1f]
- Updated dependencies [f49ee1f]
- @acromedia/gesso-cms@4.0.0
- @acromedia/gesso@4.0.0
3.16.0
Minor Changes
- c96d879: Adds Buttons paragraph plugin for Component Factory, Updates Icon component to accept fontAwesomeIcon as a string representing the icon name
Patch Changes
- ebd0186: Adds serverside get methods for all hooks in cms provider
3.15.1
Patch Changes
- 7d40634: Updates graphql query fragment grouping labels
- 774a968: Fixes prop mapping for icon position of Tabs plugin
3.15.0
Minor Changes
- 57d5974: adds Drupal plugin for EmbedCode component
Patch Changes
- 111ae82: Revert v4 and deploy v3.14.4
- fdb775b: Image plugin width defaults to image width unless specified
- 9fb35d5: fixed props that did not connect to the right data
- 257465a: fixed props being passed to the tabs component
4.0.0
Major Changes
- b8f59f1: Fix image alignment on drupal CF plugin
Patch Changes
- 81cd360: Added a default width to the drupal image component to ensure the image doesn't grow beyond it's container
3.14.3
Patch Changes
- f683449: Updates Component Factory plugin to support new DrupalMedia fields
- c5ee4d7: - adjusts css marginBottom calculation for NativeHTML elements to be element fontSize multiplied by 1.6
- corrects stylesheet issue that was preventing p tags from having marginBottom in Drupal WYSIWYG
- updates Storybook explanation for common Drupal WYSIWYG usage
- adds tests to verify NativeHTML default styles and classes are properly picked up by BasicContent plugin
- 8db4d5e: Fix issue with Image destructuring a possible undefined value
3.14.2
Patch Changes
- cc71723: - Defaults AccordionSummary typography to h4 variant in design system.
- Exposes the Square prop to Drupal which creates a field enabling the borderRadius top and bottom fields to be set separately.
- Updates Storybook description for clarity on how the Square prop interacts with borderRadius, roundedTop and roundedBottom props.
- 42523cf: Fixes issue with Spacer plugin not handling boolean fields correctly
3.14.1
Patch Changes
- 5cd173e: Adds support for new card wysiwig field, backwards compatible with old field
3.14.0
Minor Changes
- bf537cc: Adds Spacer plugin for Component Factory
3.13.0
Minor Changes
- b1602e9: Adds NativeHTML for basic_content plugin, Fix minor bugs with types structure not aligning with current data structure
Patch Changes
- fcacb55: - fix: update Cards plugin in Drupal to pull correct field values for border and shadow.
- fix: update design system Card component so that a button is only rendered if link url is present and default backgroundColor to correct token value
- e660f24: Adds match height to card plugins, adds styling to Card to handle match button height when multiple cards displayed with match height"
- 2aee2d5: Updates Card to accept ReactNode instead of strings for its title/content fields, update card plugin component factory to wrap grid"
- e9c71b52: add in missing export for useUser hook
3.12.0
Minor Changes
- 6c4bca1: Updates @acromedia/drupal to match latest spec for gesso_graphql drupal module, Updates Card to align classnames Card content now contains classname card--content
3.11.0
Minor Changes
- cb85946: Adds HeroBanner Component Factory plugin
- fa2a9bc: Adds Hero Banner plugin for Component Factory
Patch Changes
- c7bd2ff: Added @acromedia/gesso as a peerDependency
3.10.2
Patch Changes
- 8c480e1: Fix Image postioning, Accordion Content
3.10.1
Patch Changes
- e9a58e7: Fix export for componentFactoryPlugins, removes empty types file import in Redirects"
- d00bb3a: Fixes issue when divider plugin does not have a set divider color"
3.10.0
Minor Changes
- 08504fc: Updates & fixes for Component Factory, default plugins for drupal provider
3.9.1
Patch Changes
- f119dff: Refactor provider queries to use fragment structure which can be extended by end user. Removing the useage of toArray.
3.9.0
Minor Changes
- 7f5d6d2: Implemented useUser hook
3.8.0
Minor Changes
- a797def: add export for types and plugins
3.7.0
Minor Changes
- 213295b: Add conjuction/grouping to ContentSearch filters
Patch Changes
- 6833962: useTag would crash instead of error on invalid tag
- bea0325: Normalize Drupal field entity references
3.6.0
Minor Changes
- 879057b: Created getRoutes function in Drupal
3.5.0
Minor Changes
- 2b01440: Add withReferences option to useContent and useContentSearch
3.4.0
Minor Changes
- 55e4e7b: Implement useTags hook functionality
3.3.0
Minor Changes
- 5d99bbc: Add support for custom filters to useContentSearch
3.2.0
Minor Changes
- 036f7bd: Implemented useMenu hook
- 80a391a: Implemented useContentSearch hook
3.1.1
Patch Changes
- 0be564a: Drupal provider clean the data output of remaining field data. Removes the array wrapping caused by toArray on graphql query.
3.1.0
Minor Changes
- 7bb4ab0: Implemented useContent call to Drupal
3.0.2
Patch Changes
- @acromedia/gesso-cms@3.2.3
3.0.1
Patch Changes
- Updated dependencies [892d409]
- @acromedia/gesso-cms@3.2.2