# GENERATED. Do not change this line unless the file contains project specific changes.
# DO NOT EDIT THIS FILE. Changes are overwritten on the next build.
# Owner command: archetype.registry.build
# Edit instead: the archetype.registry.build generator source (not this file).
# Regenerate:   pnpm exec werkstatt run archetype.registry.build
id: final-cta
displayName: Final Cta
version: 1.3.0
semanticRole: final-cta
description: |
  Final call-to-action. RFC-0103 bodyKind: paragraphs (optional) + RFC-0104
  canonical CtaGroupConfig.
expectedIntents:
  - convert-visitor
  - drive-contact
  - capture-lead
expectedIndustryFit:
  - non-profit
layoutHint: single-column
bodyKind: paragraphs
propsSchema:
  $shape: zod
  compose:
    - section-visual
    - section-header
    - body-paragraphs
  shape: |
    z.object({
      ctaGroup: z.object({
        align: z.enum(["left", "center", "right"]).optional(),
        items: z.array(z.object({
          label: z.string().min(1),
          ariaLabel: z.string().optional(),
          variant: z.enum(["primary", "secondary", "ghost", "danger"]).optional(),
          size: z.enum(["sm", "md", "lg"]).optional(),
          fullWidth: z.boolean().optional(),
          target: z.discriminatedUnion("kind", [
            z.object({
              kind: z.literal("internal"),
              pageId: z.string().min(1),
              anchor: z.string().optional(),
            }).strict(),
            z.object({
              kind: z.literal("external"),
              href: z.string().min(1),
              rel: z.string().optional(),
            }).strict(),
            z.object({
              kind: z.literal("anchor"),
              anchor: z.string().min(1),
            }).strict(),
          ]),
        })).min(1),
      }).strict(),
    }).strict()
acceptedCosmicNames:
  - Dione
constraints: {}
