canvas-component-utils
Originally fromdrupal-canvas/skills
SKILL.md
Import utilities from the drupal-canvas package:
import { FormattedText, Image } from "drupal-canvas";
FormattedText
Use FormattedText to render HTML content from props. This is required for any
prop with contentMediaType: text/html in component.yml.
# component.yml
props:
properties:
text:
title: Text
type: string
contentMediaType: text/html
x-formatting-context: block
examples:
- <p>This is <strong>formatted</strong> text.</p>
import { FormattedText } from "drupal-canvas";
const Text = ({ text, className }) => (
<FormattedText className={className}>{text}</FormattedText>
);
When to use FormattedText:
- Props that accept rich text/HTML content
- Any prop with
contentMediaType: text/html - Content that may contain
<p>,<strong>,<em>,<a>, or other HTML tags
Do NOT use FormattedText for:
- Plain text props (type: string without contentMediaType)
- Headings or titles (use regular elements)
Image
Use Image for responsive image rendering. It handles responsive behavior and
optimization automatically.
# component.yml
props:
properties:
image:
title: Image
type: object
$ref: json-schema-definitions://canvas.module/image
examples:
- src: https://example.com/photo.jpg
alt: Description of image
width: 800
height: 600
import { Image } from "drupal-canvas";
const Card = ({ image }) => {
const { src, alt, width, height } = image;
return (
<Image
src={src}
alt={alt}
width={width}
height={height}
className="w-full rounded-lg object-cover"
/>
);
};
Image props:
src- Image URL (required)alt- Alt text for accessibility (required)width- Original image widthheight- Original image heightclassName- Tailwind classes for styling
Weekly Installs
9
Repository
acquia/nebulaGitHub Stars
5
First Seen
Feb 16, 2026
Security Audits
Installed on
opencode9
antigravity9
github-copilot9
codex9
amp9
kimi-cli9