Enh: nav LinkPicker (link-to-page) + page-sync + download + box-model/anim/vis #20

Merged
jknapp merged 1 commits from enh-nav into main 2026-07-14 13:58:11 +00:00
Owner

LinkPicker control (site-page dropdown via usePages + Custom URL/#anchor/tel/mailto) wired into Logo href, Navbar logoUrl, and every Navbar/Menu link href. Sync-links-with-Pages rebuilds from pages while preserving CTA links. Per-link download toggle (boolean attr). Box-model + animation/visibility across Navbar/Menu/Logo/Footer. hrefs stay safeUrl-guarded. 683 tests.

🤖 Generated with Claude Code

LinkPicker control (site-page dropdown via usePages + Custom URL/#anchor/tel/mailto) wired into Logo href, Navbar logoUrl, and every Navbar/Menu link href. Sync-links-with-Pages rebuilds from pages while preserving CTA links. Per-link download toggle (boolean attr). Box-model + animation/visibility across Navbar/Menu/Logo/Footer. hrefs stay safeUrl-guarded. 683 tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jknapp added 1 commit 2026-07-14 13:58:11 +00:00
NavStylePanel (Navbar/Menu/Logo/Footer):
- LinkPicker: dropdown of the site's pages (read-only via usePages()) plus
  manual URL / #anchor / tel: / mailto: entry, wired into every link-href
  field (standalone Logo href, Navbar logoUrl, Navbar/Menu link items).
- "Sync links with Pages" button in the Links section: repopulates the
  links array from the current pages list (label = page name, href = '/'
  for the landing page else '/{slug}'), preserving any existing CTA link.
  Regression-fix vs the legacy GrapesJS builder, which had this.
- `download` checkbox per link (Navbar/Menu links, standalone Logo href)
  emits the `download` attribute on export for links to files.
- Links/Colors sections now gate on the component actually carrying a
  `links`/color prop, so Footer (no links array) no longer shows a dead
  "Add Link" editor.
- Box-model (Margin/Padding via SpacingControl, Border & Effects via
  BorderControl + box-shadow presets + opacity), AnimationControl, and
  VisibilityControl added for all four owned components, backed by new
  animation/animationDelay/hideOnDesktop/hideOnTablet/hideOnMobile props
  (with blank/default values in each component's .craft.props).

Tests: NavStylePanel.test.tsx (new, 17 tests: LinkPicker modes, sync
preserves CTA, download toggle, box-model/animation/visibility wiring) +
extended Navbar/Menu/Logo/Footer .toHtml.test.ts (download attribute,
craft.props defaults). Full suite: 683/683 passing. `npm run build` green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jknapp merged commit f7da654c11 into main 2026-07-14 13:58:11 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cloud-hosting-platform/site-builder#20