<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ivan Abramenko</title>
    <description>The latest articles on DEV Community by Ivan Abramenko (@ivan_abramenko_c58493d36d).</description>
    <link>https://dev.to/ivan_abramenko_c58493d36d</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3402840%2Fedff4521-83a3-4239-a8fa-ac4cc107965c.jpg</url>
      <title>DEV Community: Ivan Abramenko</title>
      <link>https://dev.to/ivan_abramenko_c58493d36d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ivan_abramenko_c58493d36d"/>
    <language>en</language>
    <item>
      <title>Canvas Palette: page builder for Drupal</title>
      <dc:creator>Ivan Abramenko</dc:creator>
      <pubDate>Sat, 29 Aug 2026 11:43:00 +0000</pubDate>
      <link>https://dev.to/ivan_abramenko_c58493d36d/canvas-palette-page-builder-for-drupal-48m3</link>
      <guid>https://dev.to/ivan_abramenko_c58493d36d/canvas-palette-page-builder-for-drupal-48m3</guid>
      <description>&lt;p&gt;Canvas Palette is a Drupal module that adds a collection of ready-to-use visual components to Drupal Canvas, making it possible to build modern pages without writing custom code.&lt;/p&gt;

&lt;p&gt;It is designed primarily for site builders, editors, and developers who need a convenient visual way to assemble pages from ready-made elements: sections, columns, buttons, images, videos, galleries, tabs, accordions, sliders, and more.&lt;/p&gt;

&lt;p&gt;Canvas Palette on Drupal.org:&lt;br&gt;
&lt;a href="https://www.drupal.org/project/canvas_palette" rel="noopener noreferrer"&gt;https://www.drupal.org/project/canvas_palette&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live Demo:&lt;br&gt;
&lt;a href="https://drupalbook.org/canvas/editor/canvas_page/4" rel="noopener noreferrer"&gt;https://drupalbook.org/canvas/editor/canvas_page/4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Canvas Palette Demo:&lt;br&gt;
&lt;a href="https://drupalbook.org/canvas-palette/demo" rel="noopener noreferrer"&gt;https://drupalbook.org/canvas-palette/demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb716t34u3m66a2bpz5gm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb716t34u3m66a2bpz5gm.gif" alt="Editing process"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What Is Canvas Palette?
&lt;/h2&gt;

&lt;p&gt;Drupal Canvas provides a visual approach to building pages, but a visual editor still needs a good collection of components that can be used to create real-world pages.&lt;/p&gt;

&lt;p&gt;Canvas Palette addresses this by providing a collection of Single Directory Components (SDC) that are compatible with Canvas.&lt;/p&gt;

&lt;p&gt;Each component is a standard SDC component. Interactive elements use lightweight JavaScript and remain editable directly in the page preview.&lt;/p&gt;

&lt;p&gt;The idea behind the module is simple:&lt;/p&gt;

&lt;p&gt;Don't build every page element from scratch. Build pages from ready-made components directly in the visual editor.&lt;/p&gt;

&lt;p&gt;This is particularly useful for landing pages, marketing websites, corporate sites, documentation, and editorial projects where content needs to look modern while still following a consistent design system.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Use Canvas Palette?
&lt;/h2&gt;

&lt;p&gt;In a traditional Drupal project, developers can create almost any content structure. However, visual page design often requires additional work: creating components, CSS, JavaScript, Paragraph types, or custom templates.&lt;/p&gt;

&lt;p&gt;Canvas Palette moves much of this work into the visual editor.&lt;/p&gt;

&lt;p&gt;Editors can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a section&lt;/li&gt;
&lt;li&gt;Choose the number of columns&lt;/li&gt;
&lt;li&gt;Add text&lt;/li&gt;
&lt;li&gt;Place an image or video&lt;/li&gt;
&lt;li&gt;Create a CTA block&lt;/li&gt;
&lt;li&gt;Add buttons&lt;/li&gt;
&lt;li&gt;Build an image gallery&lt;/li&gt;
&lt;li&gt;Add Tabs or Accordion&lt;/li&gt;
&lt;li&gt;Create a Carousel or Slider&lt;/li&gt;
&lt;li&gt;Display an existing View&lt;/li&gt;
&lt;li&gt;Embed a Webform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no need to create a separate Paragraph type for every one of these elements.&lt;/p&gt;

&lt;p&gt;In this sense, Canvas Palette acts as a building-block library for Drupal Canvas.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Components Are Included?
&lt;/h2&gt;

&lt;p&gt;Canvas Palette currently includes components across several major categories.&lt;/p&gt;
&lt;h2&gt;
  
  
  Design &amp;amp; Layout
&lt;/h2&gt;

&lt;p&gt;The basic components for building a page structure:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Section&lt;/strong&gt; — a universal section/container&lt;br&gt;
&lt;strong&gt;Columns&lt;/strong&gt; — a responsive multi-column layout&lt;br&gt;
&lt;strong&gt;Text&lt;/strong&gt; — headings and formatted text&lt;br&gt;
&lt;strong&gt;Buttons&lt;/strong&gt; &amp;amp; &lt;strong&gt;Calls to Action&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Components for buttons and calls to action:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Button&lt;/strong&gt; — a configurable button&lt;br&gt;
&lt;strong&gt;CTA&lt;/strong&gt; — a block with an image and up to two buttons&lt;br&gt;
&lt;strong&gt;Hero&lt;/strong&gt; — a large banner with a heading, image, and buttons&lt;br&gt;
&lt;strong&gt;Modal Dialog&lt;/strong&gt; — a button that opens a modal window&lt;br&gt;
&lt;strong&gt;Webform Popup&lt;/strong&gt; — a button that opens an existing Webform in a popup&lt;/p&gt;

&lt;p&gt;For example, Basic Button allows you to configure the link, colors, hover color, shape, size, and alignment.&lt;/p&gt;
&lt;h2&gt;
  
  
  Media
&lt;/h2&gt;

&lt;p&gt;Components for working with images and video:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Images&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Image Gallery&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Video&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Video Gallery&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Image Gallery can open images in GLightbox, while Video Gallery supports both local videos and external sources such as YouTube, Vimeo, and MP4.&lt;/p&gt;
&lt;h2&gt;
  
  
  Interactive Components &amp;amp; Sliders
&lt;/h2&gt;

&lt;p&gt;For interactive content:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accordion&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Tabs&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Carousel&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Slider&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Sticky Menu&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tabs use a custom implementation without jQuery. Slider is powered by Splide, while Carousel uses tiny-slider.&lt;/p&gt;

&lt;p&gt;This makes it possible to create interactive components without introducing heavy JavaScript frameworks.&lt;/p&gt;
&lt;h2&gt;
  
  
  Content &amp;amp; Data
&lt;/h2&gt;

&lt;p&gt;Components for presenting content and data:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quote&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Stats&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Counter&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Countdown&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Tiles&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Timeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example, Counter can be used to create animated counters, while Timeline provides a vertical timeline for events.&lt;/p&gt;
&lt;h2&gt;
  
  
  Drupal Integration
&lt;/h2&gt;

&lt;p&gt;Canvas Palette can also work with existing Drupal content:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Webform *&lt;/em&gt; — select and insert an existing form&lt;br&gt;
*&lt;em&gt;Views *&lt;/em&gt; — display an existing View with support for passing arguments&lt;/p&gt;

&lt;p&gt;This is particularly important for real-world Drupal projects. Canvas Palette is not limited to static decorative components — it can also use existing Drupal infrastructure.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Foundation of Canvas Palette
&lt;/h2&gt;

&lt;p&gt;One of the key components in Canvas Palette is Section.&lt;/p&gt;

&lt;p&gt;Instead of adding margin, padding, background, and border settings to every component individually, Palette uses a dedicated wrapper component.&lt;/p&gt;

&lt;p&gt;Other components are placed inside the Section, while the Section itself controls the appearance of the surrounding area.&lt;/p&gt;

&lt;p&gt;For example, you can create a structure like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Section ** → **Columns&lt;/strong&gt; → &lt;strong&gt;Text&lt;/strong&gt; + &lt;strong&gt;Image&lt;/strong&gt; + &lt;strong&gt;Button&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and manage the design of the entire section from a single place.&lt;/p&gt;

&lt;p&gt;Visual Spacing Controls&lt;/p&gt;

&lt;p&gt;Section provides a visual DOM Box model similar to the box model available in browser developer tools.&lt;/p&gt;

&lt;p&gt;You can configure:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Margin&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Padding&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Border&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Border radius&lt;/em&gt;&lt;br&gt;
Individual values for each side&lt;/p&gt;

&lt;p&gt;This approach is much more intuitive than a collection of fields with unclear names. The visual diagram shows exactly which value applies to which side of the element.&lt;/p&gt;
&lt;h2&gt;
  
  
  Section Backgrounds
&lt;/h2&gt;

&lt;p&gt;Section can also be used to create more sophisticated visual blocks.&lt;/p&gt;

&lt;p&gt;You can configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;A solid color&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A gradient&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A background image&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;An overlay on top of an image&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A background video&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Image position and size&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Background image repetition&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Overlay opacity&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;A fallback image for video on mobile devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it possible to create full-featured hero sections and visual content blocks directly inside Canvas.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why SDC?
&lt;/h2&gt;

&lt;p&gt;Canvas Palette is built around Single Directory Components.&lt;/p&gt;

&lt;p&gt;This is an important architectural characteristic of the module.&lt;/p&gt;

&lt;p&gt;Instead of creating a large number of specialized Paragraph types or Block types, each element is represented as an independent SDC component.&lt;/p&gt;

&lt;p&gt;This approach fits well with the architecture of modern Drupal and Canvas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component&lt;/strong&gt; → &lt;strong&gt;Configuration&lt;/strong&gt; → &lt;strong&gt;Visual Editing&lt;/strong&gt; → &lt;strong&gt;Final Result&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Components can be used independently and combined into different compositions.&lt;/p&gt;
&lt;h2&gt;
  
  
  Canvas Palette and EPT / EBT
&lt;/h2&gt;

&lt;p&gt;Canvas Palette grew from an idea that was already used in the &lt;strong&gt;Extra Paragraph Types&lt;/strong&gt; (EPT) and &lt;strong&gt;Extra Block Types&lt;/strong&gt; (EBT) projects.&lt;/p&gt;

&lt;p&gt;EPT provides a collection of ready-made Paragraph types, while EBT provides ready-made Drupal Block types.&lt;/p&gt;

&lt;p&gt;Canvas Palette brings a similar concept to the world of visual page builders, but uses Single Directory Components, which are native to the Canvas architecture.&lt;/p&gt;

&lt;p&gt;This gives us three different approaches to the same problem:&lt;/p&gt;

&lt;p&gt;EPT — ready-made components as Paragraphs&lt;br&gt;
EBT — ready-made components as Blocks&lt;br&gt;
Canvas Palette — ready-made components for visual Canvas editing&lt;/p&gt;

&lt;p&gt;This makes Palette particularly interesting for projects that want to move from traditional content modeling toward visual page creation.&lt;/p&gt;

&lt;p&gt;Building a Page with Canvas Palette&lt;/p&gt;

&lt;p&gt;Imagine that you need to create a simple landing page.&lt;/p&gt;

&lt;p&gt;With Canvas Palette, you could build it approximately like this:&lt;/p&gt;

&lt;p&gt;Section&lt;br&gt;
├── Hero&lt;br&gt;
│   ├── Heading&lt;br&gt;
│   ├── Image&lt;br&gt;
│   └── Button&lt;br&gt;
│&lt;br&gt;
Section&lt;br&gt;
├── Columns&lt;br&gt;
│   ├── Image&lt;br&gt;
│   └── Text&lt;br&gt;
│&lt;br&gt;
Section&lt;br&gt;
├── Stats&lt;br&gt;
│   ├── Counter&lt;br&gt;
│   ├── Counter&lt;br&gt;
│   └── Counter&lt;br&gt;
│&lt;br&gt;
Section&lt;br&gt;
├── Accordion&lt;br&gt;
│   ├── FAQ&lt;br&gt;
│   ├── FAQ&lt;br&gt;
│   └── FAQ&lt;br&gt;
│&lt;br&gt;
Section&lt;br&gt;
└── CTA&lt;br&gt;
    ├── Image&lt;br&gt;
    └── Buttons&lt;/p&gt;

&lt;p&gt;Section can be used around a single component or an entire group of components.&lt;/p&gt;

&lt;p&gt;This makes it possible to create nested compositions and control the design at different levels.&lt;/p&gt;
&lt;h2&gt;
  
  
  Do You Need to Write Code?
&lt;/h2&gt;

&lt;p&gt;One of the main goals of Canvas Palette is to reduce the number of situations where an editor or site builder needs to work with code.&lt;/p&gt;

&lt;p&gt;Ready-made components can be added and configured visually.&lt;/p&gt;

&lt;p&gt;This is particularly useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Content managers&lt;/li&gt;
&lt;li&gt;Marketers&lt;/li&gt;
&lt;li&gt;Editors&lt;/li&gt;
&lt;li&gt;Site builders&lt;/li&gt;
&lt;li&gt;Small teams without a dedicated frontend developer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the same time, developers still maintain control over the component architecture and can create their own SDC components when the standard collection is not sufficient.&lt;/p&gt;

&lt;p&gt;Canvas Palette is therefore not intended to replace developers.&lt;/p&gt;

&lt;p&gt;Instead, it allows developers to create a set of building blocks in advance that other members of the team can then use.&lt;/p&gt;
&lt;h2&gt;
  
  
  Performance and JavaScript
&lt;/h2&gt;

&lt;p&gt;Canvas Palette does not require jQuery for its interactive components.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tabs use custom JavaScript&lt;/li&gt;
&lt;li&gt;Accordion is implemented without jQuery&lt;/li&gt;
&lt;li&gt;Slider uses Splide&lt;/li&gt;
&lt;li&gt;Carousel uses tiny-slider&lt;/li&gt;
&lt;li&gt;Modal windows use a custom implementation&lt;/li&gt;
&lt;li&gt;Galleries use GLightbox&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it possible to use modern interactive components without building the entire frontend around jQuery.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing Canvas Palette
&lt;/h2&gt;

&lt;p&gt;Canvas Palette is distributed as a regular Drupal module.&lt;/p&gt;

&lt;p&gt;You can install it with Composer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require &lt;span class="s1"&gt;'drupal/canvas_palette:^1.0'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Drupal.org project page currently lists 1.0.2 as the stable release, and the module is listed as supporting Drupal 10.3 and Drupal 11.&lt;/p&gt;

&lt;p&gt;After installation, Palette provides components that can be used with Drupal Canvas.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Projects Is Canvas Palette Good For?
&lt;/h2&gt;

&lt;p&gt;Canvas Palette is particularly useful for projects where pages need to be created quickly while maintaining control over the visual design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Landing Pages
&lt;/h3&gt;

&lt;p&gt;Create hero sections, CTAs, images, buttons, statistics, and other marketing blocks quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Corporate Websites
&lt;/h3&gt;

&lt;p&gt;Teams get a ready-made component library that can be used to build new pages without constantly involving developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Media &amp;amp; Editorial Websites
&lt;/h3&gt;

&lt;p&gt;Tabs, Accordions, galleries, video, quotes, Timelines, and other components make it possible to create richer editorial content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Documentation
&lt;/h3&gt;

&lt;p&gt;Combine text, images, content tables, Accordions, Tabs, and other elements while maintaining a consistent visual style.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design Systems
&lt;/h2&gt;

&lt;p&gt;Palette allows you to define a controlled set of available components, reducing the number of arbitrary design decisions editors can make.&lt;/p&gt;

&lt;p&gt;Canvas Palette as the Layer Between Drupal and the Visual Editor&lt;/p&gt;

&lt;p&gt;One of the strengths of the Palette approach is the separation of responsibilities.&lt;/p&gt;

&lt;p&gt;Drupal handles content, entities, Views, Webforms, and other data.&lt;/p&gt;

&lt;p&gt;Canvas handles visual page editing.&lt;/p&gt;

&lt;p&gt;Canvas Palette provides the ready-made visual components that connect these two layers.&lt;/p&gt;

&lt;p&gt;As a result, editors get a visual interface while developers retain control over the site's components and architecture.&lt;/p&gt;

&lt;p&gt;This is especially important for Drupal projects where visual freedom needs to coexist with control over the site's structure and design system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Canvas Palette is a collection of ready-made SDC components for Drupal Canvas, designed for visually building modern pages.&lt;/p&gt;

&lt;p&gt;The module combines Drupal's familiar concept of reusable components with visual page building, allowing users to create pages from ready-made elements without manually developing every new block.&lt;/p&gt;

&lt;p&gt;The core idea behind Palette is to give editors a ready-made palette instead of a blank canvas.&lt;/p&gt;

&lt;p&gt;Instead of starting from scratch every time, you can select a Section, add Columns, place Text, Image, Button, Gallery, or another component, and immediately create a visually complete page.&lt;/p&gt;

&lt;p&gt;At the same time, developers retain control over which components are available to editors and how those components are implemented.&lt;/p&gt;

&lt;p&gt;If you are using Drupal Canvas and want to expand its standard component collection, Canvas Palette can be a good starting point for building a full-featured visual page editor.&lt;/p&gt;

&lt;p&gt;Useful Links&lt;br&gt;
Canvas Palette on Drupal.org: &lt;a href="https://www.drupal.org/project/canvas_palette" rel="noopener noreferrer"&gt;https://www.drupal.org/project/canvas_palette&lt;/a&gt;&lt;br&gt;
Canvas Palette Demo: &lt;a href="https://drupalbook.org/canvas-palette/demo" rel="noopener noreferrer"&gt;https://drupalbook.org/canvas-palette/demo&lt;/a&gt;&lt;br&gt;
Canvas Palette Documentation: &lt;a href="https://drupalbook.org/palette" rel="noopener noreferrer"&gt;https://drupalbook.org/palette&lt;/a&gt;&lt;br&gt;
Live Demo: &lt;a href="https://drupalbook.org/canvas/editor/canvas_page/4" rel="noopener noreferrer"&gt;https://drupalbook.org/canvas/editor/canvas_page/4&lt;/a&gt;&lt;/p&gt;

</description>
      <category>drupal</category>
      <category>contentwriting</category>
      <category>marketing</category>
      <category>sdc</category>
    </item>
  </channel>
</rss>
