feat: #3620065 Re-export the Canvas component configs for the Canvas Icon Picker
Issue: https://www.drupal.org/project/horizonaid/issues/3620065
Re-exports six Canvas component configs against the converted theme, and rewrites the icon prop to the picker shape on every stored version, not only the active one:
| component | new active version | curated ids |
|---|---|---|
| badge | 60738022e738eef8 |
43 |
| button | 22dfe88e799bff14 |
51 |
| date | 7b870a5d2bc56530 |
7 |
| icon | 9bc1e1a79ad3aca5 |
51 |
| icon-toggle | 9b1120a77a9891d1 |
50 |
| card-icon | 62345acf6ed14ba8 |
43 |
This is what keeps the recipe installable. recipe.yml hardcodes 134 component_version values, 13 of them pre-conversion hashes of these components. Keeping those hashes as stored versions means recipe.yml needs no edits at all, and content pinned to an old version edits through the picker rather than the old select. No update hook is needed, which matters because a theme cannot implement hook_update_N.
Without it, the theme change alone fails a fresh install:
There were validation errors in canvas.content_template.node.blog.impressed_card_large:
- component_tree.24ba3122-...component_version: '13d91759ac4fcdfe' is not a version that
exists on component config entity 'sdc.vartheme_bs5_horizonaid.badge'.Land with the theme change, https://www.drupal.org/project/vartheme_bs5_horizonaid/issues/3620060. The module install and packs come from Varbase Admin Base, https://www.drupal.org/project/varbase_admin_base/issues/3620064.
Two pre-existing oddities, left exactly as found: every one of these shipped configs declares an active_version the theme does not derive (badge ships 6110e8f5a7d6d5cf while the theme derives 13d91759ac4fcdfe), and the shipped date config's stored version 69cd1843b2f2a0e5 has no icon prop at all yet is pinned in four places.
Verified on two fresh Varbase 11 installs applying this recipe during install, one from a codebase built from scratch: install green, with warning counts identical to an unmodified Horizon Aid install and none naming a theme component; every stored version on the picker; allowed_icon_ids matching the manifests; searching heart on the Button returns nothing because it is not curated; picking arrow-right stores the bare id and the Donate button renders bi bi-arrow-right anonymously; all eight Canvas pages 200 anonymously; picker endpoints 403; zero log entries at Error or worse.
Files are re-encoded with Drupal's own Yaml::encode, so the diff is the real change.
AI-Generated: Yes
Checkpoints:
- File an issue
- Addition/Change/Update/Fix
- Testing to ensure no regression
- Automated unit testing coverage
- Automated functional testing coverage
- UX/UI designer responsibilities
- Readability
- Accessibility
- Performance
- Security
- Developer Documentation
- User Guide Documentation
- Reviewed by human
- Code review by maintainers
- Full testing and approval
- Credit contributors
- Review with the product owner
- Release notes snippet
- Release