# 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: audience-cards
displayName: Audience cards
version: 1.2.0
semanticRole: audience-self-identification
description: |
  Audience segments grid. RFC-0103 bodyKind: cards.
expectedIntents:
  - segmentation
  - clarify-positioning
expectedIndustryFit:
  - trades-and-construction
  - consulting-and-coaching
  - legal-services
layoutHint: card-grid
bodyKind: cards
recommendedItemCount:
  min: 2
  max: 6
propsSchema:
  $shape: zod
  compose:
    - section-visual
    - section-header
    - body-cards
  shape: |
    z.object({
      cta: z.object({
        label: z.string().min(2),
        target: z.discriminatedUnion("kind", [
          z.object({
            kind: z.literal("internal"),
            pageId: z.string().min(1),
            query: z.record(z.string().regex(/^[a-zA-Z0-9_-]{1,32}$/), z.string().regex(/^[a-zA-Z0-9_%.-]{0,128}$/)).optional(),
            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(),
        ]),
      }).optional(),
    }).strict()
acceptedCosmicNames:
  - Epimetheus
constraints:
  forbidPhrases:
    - alle Branchen
    - jeder Kunde
