@almadar/core 11.2.0 → 11.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/behavior-package.js +1 -3
  2. package/dist/{builders-C4TIhiks.d.ts → builders-CAQ_shuO.d.ts} +274 -274
  3. package/dist/builders.d.ts +6 -6
  4. package/dist/builders.js +8 -10
  5. package/dist/{bus-do1P9luP.d.ts → bus-QFvlnIfW.d.ts} +113 -438
  6. package/dist/{chunk-B4MNHGBP.js → chunk-5IRZ6ROW.js} +0 -2
  7. package/dist/{chunk-7NDAXM2Z.js → chunk-6XYHVJ4J.js} +1 -3
  8. package/dist/{chunk-2NKK2X53.js → chunk-7JO77HA6.js} +1 -3
  9. package/dist/chunk-AIRZM37O.js +3809 -0
  10. package/dist/{chunk-RGACZEYC.js → chunk-DDBAQMWA.js} +0 -2
  11. package/dist/{chunk-VOFHP52Z.js → chunk-DHWP7B4S.js} +147 -7
  12. package/dist/{chunk-7GHJU5WI.js → chunk-GNLND5O2.js} +0 -2
  13. package/dist/{chunk-PYYHDYTD.js → chunk-ISAUHHDU.js} +1 -3
  14. package/dist/{chunk-M4S2B5VJ.js → chunk-IU3WGC6Q.js} +0 -2
  15. package/dist/{chunk-VIHQKKTZ.js → chunk-JCRN3F6T.js} +10 -12
  16. package/dist/{chunk-7B4JRMRL.js → chunk-JPJQCTJI.js} +12 -6
  17. package/dist/{chunk-6H3UIZR2.js → chunk-O2ZUOWNK.js} +4 -6
  18. package/dist/{chunk-IE6WCCJP.js → chunk-OLSKERKZ.js} +51 -47
  19. package/dist/{chunk-N3CK4AYW.js → chunk-QV6J4EAF.js} +560 -58
  20. package/dist/{chunk-347APWFM.js → chunk-R3Y7ABF4.js} +2 -4
  21. package/dist/{chunk-3DZOFI53.js → chunk-TOAMAGC7.js} +2 -4
  22. package/dist/{chunk-LPJ7GKRM.js → chunk-UCP26C3C.js} +4 -6
  23. package/dist/{chunk-VG7BRFUD.js → chunk-W3UJRSYC.js} +0 -2
  24. package/dist/{effect-Dr--GXRe.d.ts → effect--PY8R4Oi.d.ts} +72 -38
  25. package/dist/{effect-result-geymPT9w.d.ts → effect-result-fH1ZTxn6.d.ts} +59 -38
  26. package/dist/{expression-DirYKz-f.d.ts → expression-DxY6ct3t.d.ts} +1 -1
  27. package/dist/factory/index.d.ts +3 -3
  28. package/dist/factory/index.js +8 -10
  29. package/dist/factory-runtime/index.d.ts +4 -4
  30. package/dist/factory-runtime/index.js +15 -17
  31. package/dist/fixtures.d.ts +8 -7
  32. package/dist/fixtures.js +6 -8
  33. package/dist/i18n/index.js +2 -4
  34. package/dist/{index-C8mF8btS.d.ts → index-Dk2AoJdI.d.ts} +43 -30
  35. package/dist/index.d.ts +17 -19
  36. package/dist/index.js +23 -25
  37. package/dist/kernel-wire.d.ts +3 -3
  38. package/dist/kernel-wire.js +3 -5
  39. package/dist/language/constructs.json +5 -0
  40. package/dist/language/program-types.json +6 -0
  41. package/dist/language/validation-codes.json +140 -0
  42. package/dist/language/vocabulary.json +45 -1
  43. package/dist/language-data.js +3 -5
  44. package/dist/lolo-document/index.js +0 -2
  45. package/dist/patterns/component-mapping.json +1 -1
  46. package/dist/patterns/definitions.d.ts +2 -2
  47. package/dist/patterns/definitions.js +1 -3
  48. package/dist/patterns/event-contracts.json +1 -1
  49. package/dist/patterns/index.d.ts +9 -3
  50. package/dist/patterns/index.js +3 -5
  51. package/dist/patterns/patterns-registry.json +560 -56
  52. package/dist/patterns/registry.json +560 -56
  53. package/dist/themes/index.js +2 -4
  54. package/dist/{trait-D9MjuwGC.d.ts → trait-BO2gbBte.d.ts} +82 -92
  55. package/dist/types/index.d.ts +9 -9
  56. package/dist/types/index.js +12 -14
  57. package/dist/{types-Bi-KSa0a.d.ts → types-CSBhbbse.d.ts} +3 -3
  58. package/package.json +6 -6
  59. package/dist/behavior-package.js.map +0 -1
  60. package/dist/builders.js.map +0 -1
  61. package/dist/chunk-2NKK2X53.js.map +0 -1
  62. package/dist/chunk-347APWFM.js.map +0 -1
  63. package/dist/chunk-3DZOFI53.js.map +0 -1
  64. package/dist/chunk-6H3UIZR2.js.map +0 -1
  65. package/dist/chunk-7B4JRMRL.js.map +0 -1
  66. package/dist/chunk-7GHJU5WI.js.map +0 -1
  67. package/dist/chunk-7NDAXM2Z.js.map +0 -1
  68. package/dist/chunk-B4MNHGBP.js.map +0 -1
  69. package/dist/chunk-IE6WCCJP.js.map +0 -1
  70. package/dist/chunk-LPJ7GKRM.js.map +0 -1
  71. package/dist/chunk-M4S2B5VJ.js.map +0 -1
  72. package/dist/chunk-N3CK4AYW.js.map +0 -1
  73. package/dist/chunk-PYYHDYTD.js.map +0 -1
  74. package/dist/chunk-RGACZEYC.js.map +0 -1
  75. package/dist/chunk-VG7BRFUD.js.map +0 -1
  76. package/dist/chunk-VIHQKKTZ.js.map +0 -1
  77. package/dist/chunk-VOFHP52Z.js.map +0 -1
  78. package/dist/chunk-ZDIHVDTW.js +0 -3810
  79. package/dist/chunk-ZDIHVDTW.js.map +0 -1
  80. package/dist/factory/index.js.map +0 -1
  81. package/dist/factory-runtime/index.js.map +0 -1
  82. package/dist/fixtures.js.map +0 -1
  83. package/dist/i18n/index.js.map +0 -1
  84. package/dist/index.js.map +0 -1
  85. package/dist/kernel-wire.js.map +0 -1
  86. package/dist/language-data.js.map +0 -1
  87. package/dist/lolo-document/index.js.map +0 -1
  88. package/dist/patterns/definitions.js.map +0 -1
  89. package/dist/patterns/index.js.map +0 -1
  90. package/dist/themes/index.js.map +0 -1
  91. package/dist/types/index.js.map +0 -1
  92. package/dist/{domain-JuWUUeJ3.d.ts → domain-Cpmja5ak.d.ts} +51 -51
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types/domain.ts"],"names":[],"mappings":"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","file":"chunk-M4S2B5VJ.js","sourcesContent":["/**\n * Domain Context Types (Self-Contained)\n *\n * Defines domain classification types for applications.\n * Copied from schema/domain-context.ts to make orbitals/ self-contained.\n *\n * @packageDocumentation\n */\n\nimport { z } from \"zod\";\n\n// ============================================================================\n// Domain Categories\n// ============================================================================\n\n/**\n * High-level domain categories\n */\nexport type DomainCategory =\n | \"healthcare\"\n | \"education\"\n | \"finance\"\n | \"ecommerce\"\n | \"real-estate\"\n | \"logistics\"\n | \"hospitality\"\n | \"hr-management\"\n | \"project-management\"\n | \"social\"\n | \"content-management\"\n | \"iot\"\n | \"analytics\"\n | \"game\"\n | \"custom\";\n\nexport const DomainCategorySchema = z.enum([\n \"healthcare\",\n \"education\",\n \"finance\",\n \"ecommerce\",\n \"real-estate\",\n \"logistics\",\n \"hospitality\",\n \"hr-management\",\n \"project-management\",\n \"social\",\n \"content-management\",\n \"iot\",\n \"analytics\",\n \"game\",\n \"custom\",\n]);\n\n// ============================================================================\n// Agent Domain Categories (simplified for LLM-based tools)\n// ============================================================================\n\n/**\n * Simplified domain categories used by the agent tools for application classification.\n * All agent tools and skill generators should derive from this constant.\n */\nexport const AGENT_DOMAIN_CATEGORIES = [\n \"game\",\n \"business\",\n \"dashboard\",\n \"form\",\n \"content\",\n \"social\",\n \"ecommerce\",\n \"workflow\",\n] as const;\n\nexport type AgentDomainCategory = (typeof AGENT_DOMAIN_CATEGORIES)[number];\n\nexport const AgentDomainCategorySchema = z.enum([...AGENT_DOMAIN_CATEGORIES]);\n\n// ============================================================================\n// Game Sub-Categories\n// ============================================================================\n\n/**\n * Game genre sub-categories\n */\nexport type GameSubCategory =\n | \"platformer\"\n | \"shooter\"\n | \"puzzle\"\n | \"rpg\"\n | \"board\"\n | \"racing\"\n | \"fighting\"\n | \"tower-defense\"\n | \"endless-runner\"\n | \"simulation\"\n | \"arcade\"\n | \"adventure\";\n\nexport const GameSubCategorySchema = z.enum([\n \"platformer\",\n \"shooter\",\n \"puzzle\",\n \"rpg\",\n \"board\",\n \"racing\",\n \"fighting\",\n \"tower-defense\",\n \"endless-runner\",\n \"simulation\",\n \"arcade\",\n \"adventure\",\n]);\n\n// ============================================================================\n// Node Classification\n// ============================================================================\n\n/**\n * Domain vs System classification\n */\nexport type NodeClassification = \"domain\" | \"system\";\n\nexport const NodeClassificationSchema = z.enum([\"domain\", \"system\"]);\n\n// ============================================================================\n// Semantic Roles\n// ============================================================================\n\nexport type StateSemanticRole =\n | \"pending\"\n | \"active\"\n | \"completed\"\n | \"cancelled\"\n | \"error\"\n | \"suspended\"\n | \"blocked\"\n | \"domain_workflow\"\n | \"domain_status\"\n | \"system_loading\"\n | \"system_error\"\n | \"system_idle\"\n | \"system_editing\"\n | \"system_confirming\";\n\nexport const StateSemanticRoleSchema = z.enum([\n \"pending\",\n \"active\",\n \"completed\",\n \"cancelled\",\n \"error\",\n \"suspended\",\n \"blocked\",\n \"domain_workflow\",\n \"domain_status\",\n \"system_loading\",\n \"system_error\",\n \"system_idle\",\n \"system_editing\",\n \"system_confirming\",\n]);\n\nexport type EventSemanticRole =\n | \"domain_action\"\n | \"domain_trigger\"\n | \"system_crud\"\n | \"system_navigation\"\n | \"system_form\"\n | \"system_ui\";\n\nexport const EventSemanticRoleSchema = z.enum([\n \"domain_action\",\n \"domain_trigger\",\n \"system_crud\",\n \"system_navigation\",\n \"system_form\",\n \"system_ui\",\n]);\n\nexport type EntitySemanticRole =\n | \"domain_core\"\n | \"domain_supporting\"\n | \"domain_reference\"\n | \"system_user\"\n | \"system_config\"\n | \"system_audit\";\n\nexport const EntitySemanticRoleSchema = z.enum([\n \"domain_core\",\n \"domain_supporting\",\n \"domain_reference\",\n \"system_user\",\n \"system_config\",\n \"system_audit\",\n]);\n\n// ============================================================================\n// Domain Vocabulary\n// ============================================================================\n\n/**\n * Domain-specific vocabulary for naming conventions.\n * Maps generic terms to domain-appropriate labels.\n */\nexport type DomainVocabulary = {\n /** Label for items (e.g., \"Task\", \"Cargo\", \"Patient\") */\n item?: string;\n /** Label for collections (e.g., \"Tasks\", \"Inventory\", \"Patients\") */\n collection?: string;\n /** Label for create action (e.g., \"Add\", \"Recruit\", \"Admit\") */\n create?: string;\n /** Label for delete action (e.g., \"Remove\", \"Discharge\", \"Archive\") */\n delete?: string;\n /** Label for container (e.g., \"List\", \"Hold\", \"Ward\") */\n container?: string;\n /** Additional custom vocabulary */\n [key: string]: string | undefined;\n};\n\nexport const DomainVocabularySchema = z\n .record(z.string(), z.string())\n .optional();\n\n// ============================================================================\n// Domain Context (Simplified for Design System)\n// ============================================================================\n\n/**\n * User persona for UX decisions\n */\nexport type UserPersona = {\n /** Persona name */\n name: string;\n /** Role for RBAC */\n role?: string;\n /** Primary device */\n device?: \"mobile\" | \"tablet\" | \"desktop\";\n};\n\nexport const UserPersonaSchema = z.object({\n name: z.string().min(1),\n role: z.string().optional(),\n device: z.enum([\"mobile\", \"tablet\", \"desktop\"]).optional(),\n});\n\n/**\n * Domain context - user request + classification\n */\nexport type DomainContext = {\n /** Original user request - verbatim (typically at schema level) */\n request: string;\n /**\n * The verbatim excerpt or summary of the user request that produced THIS orbital.\n *\n * Purpose: Traceability - know exactly what the user asked for that led to this orbital.\n *\n * Can be:\n * - Exact quote: \"...with a calendar that syncs with Google Calendar...\"\n * - Summarized: \"Calendar integration with Google Calendar sync\"\n *\n * Examples:\n * - Request: \"Build a project management app with tasks, team collaboration, and Gantt charts\"\n * - Task orbital: requestFragment: \"tasks\"\n * - Team orbital: requestFragment: \"team collaboration\"\n * - Timeline orbital: requestFragment: \"Gantt charts\"\n *\n * This enables:\n * - Understanding WHY this orbital exists\n * - Regenerating with original context preserved\n * - Validating the orbital matches user intent\n */\n requestFragment?: string;\n /** Domain category */\n category: AgentDomainCategory;\n /** Sub-domain for more specific classification */\n subDomain?: string;\n /** User personas */\n personas?: UserPersona[];\n /** Domain-specific vocabulary for naming */\n vocabulary?: DomainVocabulary;\n};\n\nexport const DomainContextSchema = z.object({\n request: z.string().min(1, \"Original request is required\"),\n requestFragment: z.string().optional(),\n category: AgentDomainCategorySchema,\n subDomain: z.string().optional(),\n personas: z.array(UserPersonaSchema).optional(),\n vocabulary: DomainVocabularySchema.optional(),\n});\n\n// ============================================================================\n// UX Hints\n// ============================================================================\n\n/**\n * UX hints for guiding UI generation.\n * These inform pattern selection and layout decisions.\n */\n/**\n * UX hints for guiding UI generation.\n * These inform pattern selection and layout decisions.\n *\n * Note: These are HINTS, not strict requirements. LLMs may use any string value\n * including 'dashboard-grid', 'none', etc. The subagent generator interprets these\n * flexibly to produce appropriate render-ui effects.\n */\nexport type UXHints = {\n /** Overall user flow pattern (e.g., 'hub-spoke', 'crud-cycle', 'linear') */\n flowPattern?: string;\n /** Pattern for displaying lists (e.g., 'table-view', 'data-grid', 'dashboard-grid', 'none') */\n listPattern?: string;\n /** Pattern for create/edit forms (e.g., 'modal', 'drawer', 'page', 'none') */\n formPattern?: string;\n /** Pattern for entity detail views (e.g., 'drawer', 'page', 'split', 'none') */\n detailPattern?: string;\n /** Cross-orbital navigation links */\n relatedLinks?: RelatedLink[];\n};\n\n// UX hints use flexible string types - they are guidance, not strict validation\nexport const UXHintsSchema = z.object({\n flowPattern: z.string().optional(),\n listPattern: z.string().optional(),\n formPattern: z.string().optional(),\n detailPattern: z.string().optional(),\n relatedLinks: z.array(z.lazy(() => RelatedLinkSchema)).optional(),\n});\n\n/**\n * Related link for cross-orbital navigation.\n */\nexport type RelatedLink = {\n /** Field name of the relation (e.g., \"customerId\") */\n relation: string;\n /** Button/link text (e.g., \"View Customer\") */\n label: string;\n /** Target view type */\n targetView?: \"list\" | \"detail\";\n};\n\nexport const RelatedLinkSchema = z.object({\n relation: z.string().min(1),\n label: z.string().min(1),\n targetView: z.enum([\"list\", \"detail\"]).optional(),\n});\n\n// ============================================================================\n// Suggested Guards (Pre-Generation)\n// ============================================================================\n\n/**\n * Suggested guard - natural language description for decomposition phase.\n * Generator converts these to S-expressions during generation.\n */\nexport type SuggestedGuard = {\n /** Unique identifier */\n id: string;\n /** Natural language description (e.g., \"Weight must be under 1000kg\") */\n description: string;\n /** Events this guard applies to (e.g., [\"Cargo.CREATE\", \"Cargo.UPDATE\"]) */\n appliesTo: string[];\n};\n\nexport const SuggestedGuardSchema = z.object({\n id: z.string().min(1),\n description: z.string().min(1),\n appliesTo: z.array(z.string().min(1)),\n});\n\n// ============================================================================\n// Design Preferences\n// ============================================================================\n\n/**\n * Design preferences for visual styling\n */\nexport type DesignPreferences = {\n /** Design style */\n style?: \"minimal\" | \"modern\" | \"playful\" | \"data-driven\" | \"immersive\";\n /** Primary color (hex) */\n primaryColor?: string;\n /** Target device */\n device?: \"mobile\" | \"tablet\" | \"desktop\" | \"all\";\n /** Dark mode */\n darkMode?: boolean;\n /** UX hints for pattern selection */\n uxHints?: UXHints;\n};\n\nexport const DesignPreferencesSchema = z.object({\n style: z\n .enum([\"minimal\", \"modern\", \"playful\", \"data-driven\", \"immersive\"])\n .optional(),\n primaryColor: z\n .string()\n .regex(/^#[0-9A-Fa-f]{6}$/, \"Must be valid hex color\")\n .optional(),\n device: z.enum([\"mobile\", \"tablet\", \"desktop\", \"all\"]).optional(),\n darkMode: z.boolean().optional(),\n uxHints: UXHintsSchema.optional(),\n});\n\n// ============================================================================\n// Theme Definition — Skin axes (Layer 1 visual variation, see docs/Almadar_Std_Variations.md)\n// ============================================================================\n\n/** Spacing scale entry — each step pairs with a CSS `--space-N` variable */\nexport type SpacingScale = {\n space0?: string;\n space1?: string;\n space2?: string;\n space3?: string;\n space4?: string;\n space5?: string;\n space6?: string;\n space7?: string;\n space8?: string;\n space9?: string;\n space10?: string;\n space11?: string;\n space12?: string;\n};\n\nexport const SpacingScaleSchema = z.object({\n space0: z.string().optional(),\n space1: z.string().optional(),\n space2: z.string().optional(),\n space3: z.string().optional(),\n space4: z.string().optional(),\n space5: z.string().optional(),\n space6: z.string().optional(),\n space7: z.string().optional(),\n space8: z.string().optional(),\n space9: z.string().optional(),\n space10: z.string().optional(),\n space11: z.string().optional(),\n space12: z.string().optional(),\n});\n\n/**\n * Density axis — spacing rhythm + per-element heights and paddings.\n * Determines whether a UI feels compact (Linear), cozy (default), or spacious (Notion).\n */\nexport type DensityTokens = {\n spacing?: SpacingScale;\n buttonHeightSm?: string;\n buttonHeightMd?: string;\n buttonHeightLg?: string;\n inputHeightSm?: string;\n inputHeightMd?: string;\n inputHeightLg?: string;\n rowHeightCompact?: string;\n rowHeightNormal?: string;\n rowHeightSpacious?: string;\n cardPaddingSm?: string;\n cardPaddingMd?: string;\n cardPaddingLg?: string;\n dialogPadding?: string;\n sectionGap?: string;\n};\n\nexport const DensityTokensSchema = z.object({\n spacing: SpacingScaleSchema.optional(),\n buttonHeightSm: z.string().optional(),\n buttonHeightMd: z.string().optional(),\n buttonHeightLg: z.string().optional(),\n inputHeightSm: z.string().optional(),\n inputHeightMd: z.string().optional(),\n inputHeightLg: z.string().optional(),\n rowHeightCompact: z.string().optional(),\n rowHeightNormal: z.string().optional(),\n rowHeightSpacious: z.string().optional(),\n cardPaddingSm: z.string().optional(),\n cardPaddingMd: z.string().optional(),\n cardPaddingLg: z.string().optional(),\n dialogPadding: z.string().optional(),\n sectionGap: z.string().optional(),\n});\n\n/** Single entry in the type scale — size + matching line-height */\nexport type TypeScaleEntry = {\n size: string;\n lineHeight: string;\n};\n\nexport const TypeScaleEntrySchema = z.object({\n size: z.string(),\n lineHeight: z.string(),\n});\n\n/** Type slot (which family the intent renders in) */\nexport type TypeSlot = \"display\" | \"body\" | \"mono\";\n\nexport const TypeSlotSchema = z.enum([\"display\", \"body\", \"mono\"]);\n\n/** Type size key from the scale */\nexport type TypeSizeKey =\n | \"xs\"\n | \"sm\"\n | \"base\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"display-1\"\n | \"display-2\";\n\nexport const TypeSizeKeySchema = z.enum([\n \"xs\",\n \"sm\",\n \"base\",\n \"lg\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n \"4xl\",\n \"display-1\",\n \"display-2\",\n]);\n\n/** Type weight key */\nexport type TypeWeight = \"normal\" | \"medium\" | \"bold\";\n\nexport const TypeWeightSchema = z.enum([\"normal\", \"medium\", \"bold\"]);\n\n/** Intent → (slot, size, weight) mapping. Authors write intent in render-ui; skin resolves. */\nexport type TypeIntent = {\n slot: TypeSlot;\n size: TypeSizeKey;\n weight: TypeWeight;\n};\n\nexport const TypeIntentSchema = z.object({\n slot: TypeSlotSchema,\n size: TypeSizeKeySchema,\n weight: TypeWeightSchema,\n});\n\nexport type TypeScale = {\n xs?: TypeScaleEntry;\n sm?: TypeScaleEntry;\n base?: TypeScaleEntry;\n lg?: TypeScaleEntry;\n xl?: TypeScaleEntry;\n \"2xl\"?: TypeScaleEntry;\n \"3xl\"?: TypeScaleEntry;\n \"4xl\"?: TypeScaleEntry;\n \"display-1\"?: TypeScaleEntry;\n \"display-2\"?: TypeScaleEntry;\n};\n\nexport const TypeScaleSchema = z.object({\n xs: TypeScaleEntrySchema.optional(),\n sm: TypeScaleEntrySchema.optional(),\n base: TypeScaleEntrySchema.optional(),\n lg: TypeScaleEntrySchema.optional(),\n xl: TypeScaleEntrySchema.optional(),\n \"2xl\": TypeScaleEntrySchema.optional(),\n \"3xl\": TypeScaleEntrySchema.optional(),\n \"4xl\": TypeScaleEntrySchema.optional(),\n \"display-1\": TypeScaleEntrySchema.optional(),\n \"display-2\": TypeScaleEntrySchema.optional(),\n});\n\nexport type TypeIntentMap = {\n headingMajor?: TypeIntent;\n headingMinor?: TypeIntent;\n bodyEmphasis?: TypeIntent;\n bodyDefault?: TypeIntent;\n bodyQuiet?: TypeIntent;\n caption?: TypeIntent;\n numeric?: TypeIntent;\n};\n\nexport const TypeIntentMapSchema = z.object({\n headingMajor: TypeIntentSchema.optional(),\n headingMinor: TypeIntentSchema.optional(),\n bodyEmphasis: TypeIntentSchema.optional(),\n bodyDefault: TypeIntentSchema.optional(),\n bodyQuiet: TypeIntentSchema.optional(),\n caption: TypeIntentSchema.optional(),\n numeric: TypeIntentSchema.optional(),\n});\n\n/**\n * Type axis — family triplet, size scale, and intent mapping.\n * Determines whether a UI reads as editorial (serif display + sans body),\n * tech (sans + mono numeric), or dense (mono everywhere, tight leading).\n */\nexport type TypeScaleTokens = {\n /** Heading / display family — every h1–h6 and heading variant renders in it. */\n displayFamily?: string;\n bodyFamily?: string;\n monoFamily?: string;\n /** Stylesheet URL that loads the theme's web fonts (e.g. a Google Fonts css2 URL). */\n fontImport?: string;\n /** Heading voice — CSS `font-weight` for headings (`--heading-weight`). */\n headingWeight?: string;\n /** Heading voice — CSS `text-transform` (`uppercase`, `lowercase`, `none`). */\n headingTransform?: string;\n /** Heading voice — CSS `letter-spacing` (`--heading-tracking`). */\n headingTracking?: string;\n /** Heading voice — CSS `font-style` (`italic` for Victorian/Nouveau voices). */\n headingStyle?: string;\n /** Heading voice — CSS `text-shadow` (glow, emboss, letterpress, misregistration). */\n headingShadow?: string;\n scale?: TypeScale;\n intents?: TypeIntentMap;\n};\n\n/**\n * A CSS `font-family` stack is a comma-separated list of family names, each a\n * fully quoted string, an unquoted identifier sequence, or a `var(...)`. A\n * malformed stack (`\"A\"\"B\"`, `\"A\"B`) invalidates the whole declaration in the\n * browser and the theme's font silently falls back, so the schema rejects it.\n */\nexport function isWellFormedFontStack(stack: string): boolean {\n const items: string[] = [];\n let current = '';\n let quote: string | null = null;\n let depth = 0;\n for (const ch of stack) {\n if (quote) {\n current += ch;\n if (ch === quote) quote = null;\n continue;\n }\n if (ch === '\"' || ch === \"'\") quote = ch;\n else if (ch === '(') depth++;\n else if (ch === ')') depth--;\n if (ch === ',' && depth === 0) {\n items.push(current.trim());\n current = '';\n continue;\n }\n current += ch;\n }\n if (quote || depth !== 0) return false;\n items.push(current.trim());\n return items.every(\n (item) =>\n /^\"[^\"]+\"$/.test(item) ||\n /^'[^']+'$/.test(item) ||\n /^-?[A-Za-z][\\w-]*( [A-Za-z0-9][\\w-]*)*$/.test(item) ||\n /^var\\(--[\\w-]+(,.*)?\\)$/.test(item),\n );\n}\n\nconst FontStackSchema = z.string().refine(isWellFormedFontStack, {\n message: 'Malformed CSS font-family stack (each family must be comma-separated and fully quoted or bare)',\n});\n\n/** Legacy `typography` map: its `font-family*` keys carry font stacks. */\nconst LegacyTypographySchema = z.record(z.string(), z.string()).superRefine((map, ctx) => {\n for (const [key, value] of Object.entries(map)) {\n if (key.startsWith('font-family') && !isWellFormedFontStack(value)) {\n ctx.addIssue({ code: 'custom', path: [key], message: `Malformed CSS font-family stack: ${value}` });\n }\n }\n});\n\nexport const TypeScaleTokensSchema = z.object({\n displayFamily: FontStackSchema.optional(),\n bodyFamily: FontStackSchema.optional(),\n monoFamily: FontStackSchema.optional(),\n fontImport: z.string().optional(),\n headingWeight: z.string().optional(),\n headingTransform: z.string().optional(),\n headingTracking: z.string().optional(),\n headingStyle: z.string().optional(),\n headingShadow: z.string().optional(),\n scale: TypeScaleSchema.optional(),\n intents: TypeIntentMapSchema.optional(),\n});\n\n/** Duration palette key */\nexport type MotionDurationKey =\n | \"instant\"\n | \"fast\"\n | \"normal\"\n | \"slow\"\n | \"dramatic\";\n\nexport const MotionDurationKeySchema = z.enum([\n \"instant\",\n \"fast\",\n \"normal\",\n \"slow\",\n \"dramatic\",\n]);\n\n/** Easing palette key */\nexport type MotionEasingKey = \"linear\" | \"standard\" | \"emphasized\" | \"spring\";\n\nexport const MotionEasingKeySchema = z.enum([\n \"linear\",\n \"standard\",\n \"emphasized\",\n \"spring\",\n]);\n\n/** Per-intent motion specification (duration + easing) */\nexport type MotionIntent = {\n duration: MotionDurationKey;\n easing: MotionEasingKey;\n};\n\nexport const MotionIntentSchema = z.object({\n duration: MotionDurationKeySchema,\n easing: MotionEasingKeySchema,\n});\n\nexport type MotionDurationPalette = {\n instant?: string;\n fast?: string;\n normal?: string;\n slow?: string;\n dramatic?: string;\n};\n\nexport const MotionDurationPaletteSchema = z.object({\n instant: z.string().optional(),\n fast: z.string().optional(),\n normal: z.string().optional(),\n slow: z.string().optional(),\n dramatic: z.string().optional(),\n});\n\nexport type MotionEasingPalette = {\n linear?: string;\n standard?: string;\n emphasized?: string;\n spring?: string;\n};\n\nexport const MotionEasingPaletteSchema = z.object({\n linear: z.string().optional(),\n standard: z.string().optional(),\n emphasized: z.string().optional(),\n spring: z.string().optional(),\n});\n\nexport type MotionIntentMap = {\n enter?: MotionIntent;\n exit?: MotionIntent;\n hover?: MotionIntent;\n press?: MotionIntent;\n expand?: MotionIntent;\n transition?: MotionIntent;\n};\n\nexport const MotionIntentMapSchema = z.object({\n enter: MotionIntentSchema.optional(),\n exit: MotionIntentSchema.optional(),\n hover: MotionIntentSchema.optional(),\n press: MotionIntentSchema.optional(),\n expand: MotionIntentSchema.optional(),\n transition: MotionIntentSchema.optional(),\n});\n\n/**\n * Motion axis — duration palette + easing palette + per-intent mapping.\n * Mechanical (linear, fast) vs organic (cubic-bezier, medium) vs dramatic (spring, slow).\n */\n/**\n * Motion shapes — the transform each animated surface starts its enter from\n * and ends its exit at (opacity always fades). Raw CSS `transform` values:\n * `scale(0.9)`, `translateY(24px)`, `perspective(800px) rotateX(-12deg)`,\n * `none` for a pure fade. Duration/easing still come from the palettes.\n */\nexport type MotionShapeTokens = {\n /** Dialog enter-from transform (`--motion-modal-enter-from-transform`). */\n modalEnter?: string;\n /** Dialog exit-to transform (`--motion-modal-exit-to-transform`). */\n modalExit?: string;\n /** Popover/menu enter-from transform. */\n popoverEnter?: string;\n /** Popover/menu exit-to transform. */\n popoverExit?: string;\n /** Toast enter-from transform. */\n toastEnter?: string;\n /** Toast exit-to transform. */\n toastExit?: string;\n /** Page (route) content enter-from transform (pages animate in only). */\n pageEnter?: string;\n /** `rise` element-entry enter-from transform (`--motion-enter-rise-from-transform`). */\n enterRise?: string;\n /** `scale` element-entry enter-from transform. */\n enterScale?: string;\n /** `slide` element-entry enter-from transform (inline-start side). */\n enterSlide?: string;\n};\n\nexport const MotionShapeTokensSchema = z.object({\n modalEnter: z.string().optional(),\n modalExit: z.string().optional(),\n popoverEnter: z.string().optional(),\n popoverExit: z.string().optional(),\n toastEnter: z.string().optional(),\n toastExit: z.string().optional(),\n pageEnter: z.string().optional(),\n enterRise: z.string().optional(),\n enterScale: z.string().optional(),\n enterSlide: z.string().optional(),\n});\n\n/**\n * Element-entry vocabulary — how a rendered element animates in when it mounts.\n * One list for both layers: a theme's `motion.entry.default` and a render-ui\n * node's own `enter` (which always wins; `none` opts out).\n */\nexport const ENTER_ANIMATIONS = [\"none\", \"fade\", \"rise\", \"scale\", \"slide\"] as const;\nexport type EnterAnimation = (typeof ENTER_ANIMATIONS)[number];\nexport const EnterAnimationSchema = z.enum(ENTER_ANIMATIONS);\n\n/** Stagger steps a node may declare as `enterDelay` (each step = `--motion-enter-stagger`). */\nexport const ENTER_DELAY_STEPS = [1, 2, 3, 4, 5, 6, 7, 8] as const;\nexport type EnterDelayStep = (typeof ENTER_DELAY_STEPS)[number];\n\n/** Theme-level element entry: the default for slot content + the stagger step. */\nexport type MotionEntryTokens = {\n /** Entry every slot's content plays when it changes (`--motion-enter-default`); `none` = off. */\n default?: EnterAnimation;\n /** Delay between consecutive staggered entries (`--motion-enter-stagger`), e.g. `40ms`. */\n stagger?: string;\n};\n\nexport const MotionEntryTokensSchema = z.object({\n default: EnterAnimationSchema.optional(),\n stagger: z.string().optional(),\n});\n\nexport type MotionTokens = {\n durations?: MotionDurationPalette;\n easings?: MotionEasingPalette;\n intents?: MotionIntentMap;\n /** Per-surface motion shapes (modal, popover, toast, page, element entry). */\n shapes?: MotionShapeTokens;\n /** Element entry: the default for slot content and the stagger step. */\n entry?: MotionEntryTokens;\n /** How long an action must run before its control shows a spinner (`--motion-busy-delay`, e.g. `300ms`). */\n busyDelay?: string;\n /** Whether an empty slot shows the predicted skeleton while its server-backed trait awaits a round trip (`--awaiting-skeleton: on | off`). */\n awaitingSkeleton?: boolean;\n};\n\nexport const MotionTokensSchema = z.object({\n durations: MotionDurationPaletteSchema.optional(),\n easings: MotionEasingPaletteSchema.optional(),\n intents: MotionIntentMapSchema.optional(),\n shapes: MotionShapeTokensSchema.optional(),\n entry: MotionEntryTokensSchema.optional(),\n busyDelay: z.string().optional(),\n awaitingSkeleton: z.boolean().optional(),\n});\n\n/** Icon family selector */\nexport type IconFamily =\n | \"lucide\"\n | \"phosphor-outline\"\n | \"phosphor-fill\"\n | \"phosphor-duotone\"\n | \"tabler\"\n | \"fa-solid\";\n\nexport const IconFamilySchema = z.enum([\n \"lucide\",\n \"phosphor-outline\",\n \"phosphor-fill\",\n \"phosphor-duotone\",\n \"tabler\",\n \"fa-solid\",\n]);\n\n/**\n * Iconography axis — icon set + stroke + default size.\n * Outline (Lucide) vs filled (Phosphor-fill) vs duotone (Phosphor-duotone).\n */\nexport type IconographyTokens = {\n family?: IconFamily;\n strokeWidth?: string;\n defaultSize?: string;\n};\n\nexport const IconographyTokensSchema = z.object({\n family: IconFamilySchema.optional(),\n strokeWidth: z.string().optional(),\n defaultSize: z.string().optional(),\n});\n\n/**\n * Elevation axis — per-layer shadow mapping.\n * Each value references a `--shadow-*` token or a raw CSS shadow value.\n */\nexport type ElevationTokens = {\n cardElevation?: string;\n popoverElevation?: string;\n dialogElevation?: string;\n toastElevation?: string;\n /** Resting shadow on interactive controls (buttons) — `--elevation-interactive`. */\n interactiveElevation?: string;\n /** Shadow while a control is pressed — `--elevation-pressed` (inset for bevel/neumorphic). */\n pressedElevation?: string;\n};\n\nexport const ElevationTokensSchema = z.object({\n cardElevation: z.string().optional(),\n popoverElevation: z.string().optional(),\n dialogElevation: z.string().optional(),\n toastElevation: z.string().optional(),\n interactiveElevation: z.string().optional(),\n pressedElevation: z.string().optional(),\n});\n\n/**\n * Geometry axis — radius rhythm + border-width rhythm with intent.\n * Sharp (radius 0) vs soft (radius 8/12) vs pill (radius full on interactive).\n */\nexport type GeometryTokens = {\n radiusContainer?: string;\n radiusInteractive?: string;\n radiusPill?: string;\n borderHairline?: string;\n borderStandard?: string;\n borderHeavy?: string;\n /** CSS `corner-shape` for every rounded box (`round`, `squircle`, `bevel`, `scoop`, `notch`, `superellipse(n)`). */\n cornerShape?: string;\n /** CSS `corner-shape` for pill/circle boxes (`rounded-full`) — keeps avatars round under a bevel theme. */\n cornerShapePill?: string;\n /** CSS `corner-shape` for interactive controls (buttons, inputs) — round controls inside a scoop/notch frame. Falls back to `cornerShape`. */\n cornerShapeInteractive?: string;\n /** CSS `border-style` for every bordered box (`solid`, `dashed`, `double`, `dotted`, `groove`, `ridge`, `inset`, `outset`). */\n borderStyle?: string;\n /** CSS `border-style` for interactive controls (buttons) — `outset` for bevelled chrome. */\n borderStyleInteractive?: string;\n};\n\nexport const GeometryTokensSchema = z.object({\n radiusContainer: z.string().optional(),\n radiusInteractive: z.string().optional(),\n radiusPill: z.string().optional(),\n borderHairline: z.string().optional(),\n borderStandard: z.string().optional(),\n borderHeavy: z.string().optional(),\n cornerShape: z.string().optional(),\n cornerShapePill: z.string().optional(),\n cornerShapeInteractive: z.string().optional(),\n borderStyle: z.string().optional(),\n borderStyleInteractive: z.string().optional(),\n});\n\n/**\n * Surface axis — the material a theme's panels and page are made of: frosted\n * glass (backdrop filter), gloss or paper (card image layers), grid paper,\n * halftone or tessellation (page image layers). Values are raw CSS.\n */\nexport type SurfaceTokens = {\n /** CSS `backdrop-filter` on card/overlay surfaces (`blur(18px) saturate(1.6)`). */\n backdrop?: string;\n /** CSS `background-image` layered over card surfaces (gloss gradient, grain, paper). */\n cardImage?: string;\n /** CSS `background-image` on the page background (grid paper, halftone, pattern tile). */\n pageImage?: string;\n /** CSS `background-size` for `pageImage`. */\n pageImageSize?: string;\n /** Ground a canvas, chart or diagram draws on (`var(--color-card)`, a chalkboard green, blueprint blue). */\n diagram?: string;\n /** CSS `mask-image` of a band's curved edge (`url(\"data:image/svg+xml;…\")`); `none` = straight edge. */\n edgeMask?: string;\n /** Height of a band's curved edge (`clamp(24px, 6vw, 96px)`). */\n edgeHeight?: string;\n /** CSS `mask-image` tiled as a band texture; the theme's primary color shows through it. */\n textureMask?: string;\n /** CSS `mask-size` for `textureMask`. */\n textureSize?: string;\n /** CSS `background-image` of an accent band (soft mesh, gradient); `none` = flat. */\n accentImage?: string;\n /** CSS `background-image` laid over a photo so text on it stays readable. */\n scrim?: string;\n};\n\nexport const SurfaceTokensSchema = z.object({\n backdrop: z.string().optional(),\n cardImage: z.string().optional(),\n pageImage: z.string().optional(),\n pageImageSize: z.string().optional(),\n diagram: z.string().optional(),\n edgeMask: z.string().optional(),\n edgeHeight: z.string().optional(),\n textureMask: z.string().optional(),\n textureSize: z.string().optional(),\n accentImage: z.string().optional(),\n scrim: z.string().optional(),\n});\n\nexport type DiagramLineCap = 'butt' | 'round' | 'square';\nexport const DiagramLineCapSchema = z.enum(['butt', 'round', 'square']);\n\nexport type DiagramLineJoin = 'miter' | 'round' | 'bevel';\nexport const DiagramLineJoinSchema = z.enum(['miter', 'round', 'bevel']);\n\n/** How a closed mark is filled: a solid fill, a translucent tint, no fill, or hatching. */\nexport type DiagramFillStyle = 'solid' | 'tint' | 'outline' | 'hatch';\nexport const DiagramFillStyleSchema = z.enum(['solid', 'tint', 'outline', 'hatch']);\n\nexport type DiagramMarker = 'triangle' | 'open' | 'line' | 'dot';\nexport const DiagramMarkerSchema = z.enum(['triangle', 'open', 'line', 'dot']);\n\n/** Which of the theme's three faces diagram labels are set in. */\nexport type DiagramLabelFont = 'body' | 'display' | 'mono';\nexport const DiagramLabelFontSchema = z.enum(['body', 'display', 'mono']);\n\nexport type DiagramLabelCase = 'none' | 'uppercase';\nexport const DiagramLabelCaseSchema = z.enum(['none', 'uppercase']);\n\n/**\n * Diagram axis — how marks are drawn on every drawing surface (canvas, chart, diagram, game\n * board): stroke weights and character, fill treatment, hand-drawn wobble, glow, arrowheads and\n * label voice. Colors ride the `colors` map (`series-1…8`, `diagram-ink/guide/axis/grid/\n * highlight/label/fill`); the ground is `surface.diagram`.\n */\nexport type DiagramTokens = {\n /** Guide and construction lines. */\n strokeThin?: string;\n /** Ordinary marks. */\n strokeNormal?: string;\n /** Emphasized marks. */\n strokeBold?: string;\n lineCap?: DiagramLineCap;\n lineJoin?: DiagramLineJoin;\n /** Dash pattern of a dashed mark, as space-separated lengths (`6 4`). */\n dash?: string;\n /** Dash pattern of a dotted mark (`1 4`). */\n dot?: string;\n fillStyle?: DiagramFillStyle;\n /** Opacity of a `tint` fill, 0–1. */\n fillOpacity?: string;\n /** Hand-drawn wobble in px; `0` draws exact geometry. */\n roughness?: string;\n /** Glow blur in px around strokes; `0` is none. */\n glow?: string;\n /** CSS box-shadow recipe applied to filled marks (`none`, a hard offset, a soft drop). */\n shadow?: string;\n marker?: DiagramMarker;\n labelFont?: DiagramLabelFont;\n /** A type-scale step (`xs`, `sm`, `base`, …) labels are set at. */\n labelSize?: string;\n labelWeight?: string;\n labelCase?: DiagramLabelCase;\n /** Corner radius of rects and bars in px. */\n corner?: string;\n};\n\nconst DIAGRAM_TOKEN_KEY_LIST = [\n 'strokeThin', 'strokeNormal', 'strokeBold', 'lineCap', 'lineJoin', 'dash', 'dot', 'fillStyle',\n 'fillOpacity', 'roughness', 'glow', 'shadow', 'marker', 'labelFont', 'labelSize', 'labelWeight',\n 'labelCase', 'corner',\n] as const satisfies readonly (keyof DiagramTokens)[];\n\n/** Every `DiagramTokens` key — see `COLOR_TOKEN_KEYS`. */\nexport const DIAGRAM_TOKEN_KEYS: KeysComplete<DiagramTokens, typeof DIAGRAM_TOKEN_KEY_LIST> = DIAGRAM_TOKEN_KEY_LIST;\nexport type DiagramTokenKey = (typeof DIAGRAM_TOKEN_KEYS)[number];\n\nexport const DiagramTokensSchema = z.object({\n strokeThin: z.string().optional(),\n strokeNormal: z.string().optional(),\n strokeBold: z.string().optional(),\n lineCap: DiagramLineCapSchema.optional(),\n lineJoin: DiagramLineJoinSchema.optional(),\n dash: z.string().optional(),\n dot: z.string().optional(),\n fillStyle: DiagramFillStyleSchema.optional(),\n fillOpacity: z.string().optional(),\n roughness: z.string().optional(),\n glow: z.string().optional(),\n shadow: z.string().optional(),\n marker: DiagramMarkerSchema.optional(),\n labelFont: DiagramLabelFontSchema.optional(),\n labelSize: z.string().optional(),\n labelWeight: z.string().optional(),\n labelCase: DiagramLabelCaseSchema.optional(),\n corner: z.string().optional(),\n});\n\n/**\n * Scene axis — the look of 3D drawing surfaces: material response (clay, glass, metal, flat\n * toon) and lighting. Numbers are carried as strings like every other token.\n */\nexport type SceneTokens = {\n /** 0 (mirror) – 1 (matte). */\n materialRoughness?: string;\n /** 0 (dielectric) – 1 (metal). */\n materialMetalness?: string;\n /** `1` flat-shades every face (low-poly, pixel, toon); `0` smooth. */\n materialFlat?: string;\n /** Toon outline width in px; `0` is none. */\n materialOutline?: string;\n lightAmbient?: string;\n lightKey?: string;\n lightKeyColor?: string;\n /** Depth haze 0–1. */\n fog?: string;\n};\n\nconst SCENE_TOKEN_KEY_LIST = [\n 'materialRoughness', 'materialMetalness', 'materialFlat', 'materialOutline', 'lightAmbient',\n 'lightKey', 'lightKeyColor', 'fog',\n] as const satisfies readonly (keyof SceneTokens)[];\n\n/** Every `SceneTokens` key — see `COLOR_TOKEN_KEYS`. */\nexport const SCENE_TOKEN_KEYS: KeysComplete<SceneTokens, typeof SCENE_TOKEN_KEY_LIST> = SCENE_TOKEN_KEY_LIST;\nexport type SceneTokenKey = (typeof SCENE_TOKEN_KEYS)[number];\n\nexport const SceneTokensSchema = z.object({\n materialRoughness: z.string().optional(),\n materialMetalness: z.string().optional(),\n materialFlat: z.string().optional(),\n materialOutline: z.string().optional(),\n lightAmbient: z.string().optional(),\n lightKey: z.string().optional(),\n lightKeyColor: z.string().optional(),\n fog: z.string().optional(),\n});\n\n/**\n * Color axis — semantic + surface + feedback color tokens as a typed bundle.\n *\n * Replaces the free-form `colors: Record<string, string>` on `ThemeTokens` for\n * authors targeting the typed SkinSpec entrypoint. Every field maps 1:1 to a\n * `--color-*` CSS custom property emitted by themes. All fields are optional\n * so a partial slice can layer onto a default (light/dark mode pair, etc.).\n */\nexport type ColorTokens = {\n /* Brand / accent */\n primary?: string;\n primaryHover?: string;\n primaryForeground?: string;\n secondary?: string;\n secondaryHover?: string;\n secondaryForeground?: string;\n accent?: string;\n accentForeground?: string;\n muted?: string;\n mutedForeground?: string;\n\n /* Surface palette */\n background?: string;\n foreground?: string;\n card?: string;\n cardForeground?: string;\n surface?: string;\n border?: string;\n input?: string;\n ring?: string;\n\n /* Feedback */\n error?: string;\n errorForeground?: string;\n success?: string;\n successForeground?: string;\n warning?: string;\n warningForeground?: string;\n info?: string;\n infoForeground?: string;\n\n /* Optional table-specific (themes that ship them; default to neutrals) */\n tableHeader?: string;\n tableBorder?: string;\n tableRowHover?: string;\n surfaceHover?: string;\n borderHover?: string;\n placeholder?: string;\n\n /* Backdrop dimming behind modals, drawers and lightboxes */\n scrim?: string;\n};\n\n/** Rejects the array unless it names every key of `T` — the completeness half\n * of \"one list, derived from the type\": `satisfies readonly (keyof T)[]` stops\n * a non-key, this stops a missing key. */\nexport type KeysComplete<T, Keys extends readonly (keyof T)[]> =\n Exclude<keyof T, Keys[number]> extends never ? Keys : never;\n\nconst COLOR_TOKEN_KEY_LIST = [\n 'primary', 'primaryHover', 'primaryForeground', 'secondary', 'secondaryHover', 'secondaryForeground',\n 'accent', 'accentForeground', 'muted', 'mutedForeground', 'background', 'foreground',\n 'card', 'cardForeground', 'surface', 'border', 'input', 'ring',\n 'error', 'errorForeground', 'success', 'successForeground', 'warning', 'warningForeground',\n 'info', 'infoForeground', 'tableHeader', 'tableBorder', 'tableRowHover', 'surfaceHover',\n 'borderHover', 'placeholder', 'scrim',\n] as const satisfies readonly (keyof ColorTokens)[];\n\n/** Every `ColorTokens` key, in declaration order — the ONE list. The zod twin\n * below, the native theme accessors (`almadar-pattern-sync`\n * `native-theme-map.ts`) and the `theme-tokens/every-key` fixture that gates\n * the Rust `ColorTokens` mirror all derive from it (ledger §166). */\nexport const COLOR_TOKEN_KEYS: KeysComplete<ColorTokens, typeof COLOR_TOKEN_KEY_LIST> = COLOR_TOKEN_KEY_LIST;\nexport type ColorTokenKey = (typeof COLOR_TOKEN_KEYS)[number];\n\nexport const ColorTokensSchema: z.ZodType<ColorTokens> = z.object(\n Object.fromEntries(COLOR_TOKEN_KEYS.map((key) => [key, z.string().optional()])),\n);\n\n/**\n * Illustration style preset for empty/loading/error/onboarding states.\n *\n * - `minimal`: icon + short text, no imagery (current default)\n * - `illustrated`: svg illustration library (undraw-style)\n * - `photo`: stock photography\n * - `text-only`: clean text, no imagery\n * - `mascot`: branded character (Mailchimp-style)\n */\nexport type IllustrationStyle =\n | \"minimal\"\n | \"illustrated\"\n | \"photo\"\n | \"text-only\"\n | \"mascot\";\n\nexport const IllustrationStyleSchema = z.enum([\n \"minimal\",\n \"illustrated\",\n \"photo\",\n \"text-only\",\n \"mascot\",\n]);\n\n/**\n * Illustration axis — empty/loading/error/onboarding imagery style.\n * `style` selects the preset; the per-state `*Asset` fields are optional\n * overrides for skins that want to ship custom artwork.\n */\nexport type IllustrationTokens = {\n style?: IllustrationStyle;\n emptyAsset?: string;\n loadingAsset?: string;\n errorAsset?: string;\n onboardingAsset?: string;\n};\n\nconst ILLUSTRATION_TOKEN_KEY_LIST = [\n 'style', 'emptyAsset', 'loadingAsset', 'errorAsset', 'onboardingAsset',\n] as const satisfies readonly (keyof IllustrationTokens)[];\n\n/** Every `IllustrationTokens` key — see `COLOR_TOKEN_KEYS`. */\nexport const ILLUSTRATION_TOKEN_KEYS: KeysComplete<IllustrationTokens, typeof ILLUSTRATION_TOKEN_KEY_LIST> =\n ILLUSTRATION_TOKEN_KEY_LIST;\nexport type IllustrationTokenKey = (typeof ILLUSTRATION_TOKEN_KEYS)[number];\n\nexport const IllustrationTokensSchema = z.object({\n style: IllustrationStyleSchema.optional(),\n emptyAsset: z.string().optional(),\n loadingAsset: z.string().optional(),\n errorAsset: z.string().optional(),\n onboardingAsset: z.string().optional(),\n});\n\n/**\n * Theme tokens - CSS custom properties for design system.\n *\n * Layer 1 visual variation (see docs/Almadar_Std_Variations.md): the original\n * `colors`/`radii`/`spacing`/`typography`/`shadows` Record fields are kept for\n * backward compatibility. The new typed axes (`density`, `typeScale`, `motion`,\n * `iconography`, `elevation`, `geometry`) carry the structured token surface\n * that lets two themes feel like different products, not just different paint.\n */\nexport type ThemeTokens = {\n /**\n * Color axis — typed semantic + surface + feedback colors.\n * Replaces the free-form `colors` Record below for new authors.\n */\n color?: ColorTokens;\n /** Density axis — spacing rhythm, per-element heights and paddings */\n density?: DensityTokens;\n /** Type axis — family triplet, scale, intent mapping */\n typeScale?: TypeScaleTokens;\n /** Motion axis — duration palette, easing palette, intent mapping */\n motion?: MotionTokens;\n /** Iconography axis — icon family, stroke, default size */\n iconography?: IconographyTokens;\n /** Elevation axis — per-layer shadow mapping */\n elevation?: ElevationTokens;\n /** Geometry axis — radius rhythm, border-width rhythm with intent */\n geometry?: GeometryTokens;\n /** Illustration axis — empty/loading/error state imagery style */\n illustration?: IllustrationTokens;\n /** Surface axis — panel/page material (glass, gloss, paper, pattern) */\n surface?: SurfaceTokens;\n /** Diagram axis — how marks are drawn on every drawing surface */\n diagram?: DiagramTokens;\n /** Scene axis — 3D material and lighting */\n scene?: SceneTokens;\n\n // ── Legacy free-form maps (pre-Layer-1). Kept for back-compat with\n // older callers that emit raw `--color-*` / `--radius-*` etc. as\n // string maps. New authors should use the typed axes above.\n /** @deprecated Use `color` (typed). */\n colors?: Record<string, string>;\n /** @deprecated Use `geometry.radius*` and theme CSS for full radius scale. */\n radii?: Record<string, string>;\n /** @deprecated Use `density.spacing` (typed scale). */\n spacing?: Record<string, string>;\n /** @deprecated Use `typeScale` (typed family + scale + intents). */\n typography?: Record<string, string>;\n /** @deprecated Use `elevation` (typed per-layer mapping). */\n shadows?: Record<string, string>;\n};\n\nexport const ThemeTokensSchema = z.object({\n color: ColorTokensSchema.optional(),\n density: DensityTokensSchema.optional(),\n typeScale: TypeScaleTokensSchema.optional(),\n motion: MotionTokensSchema.optional(),\n iconography: IconographyTokensSchema.optional(),\n elevation: ElevationTokensSchema.optional(),\n geometry: GeometryTokensSchema.optional(),\n illustration: IllustrationTokensSchema.optional(),\n surface: SurfaceTokensSchema.optional(),\n diagram: DiagramTokensSchema.optional(),\n scene: SceneTokensSchema.optional(),\n // Legacy\n colors: z.record(z.string(), z.string()).optional(),\n radii: z.record(z.string(), z.string()).optional(),\n spacing: z.record(z.string(), z.string()).optional(),\n typography: LegacyTypographySchema.optional(),\n shadows: z.record(z.string(), z.string()).optional(),\n});\n\n/**\n * Theme variant - overrides for a specific mode (e.g., dark mode).\n * Mirrors ThemeTokens fields with the same backward-compat + new-axis structure.\n */\nexport type ThemeVariant = {\n /** Color axis overrides */\n color?: ColorTokens;\n /** Density axis overrides */\n density?: DensityTokens;\n /** Type axis overrides */\n typeScale?: TypeScaleTokens;\n /** Motion axis overrides */\n motion?: MotionTokens;\n /** Iconography axis overrides */\n iconography?: IconographyTokens;\n /** Elevation axis overrides */\n elevation?: ElevationTokens;\n /** Geometry axis overrides */\n geometry?: GeometryTokens;\n /** Illustration axis overrides */\n illustration?: IllustrationTokens;\n /** Surface axis overrides */\n surface?: SurfaceTokens;\n /** Diagram axis overrides */\n diagram?: DiagramTokens;\n /** Scene axis overrides */\n scene?: SceneTokens;\n\n // ── Legacy free-form maps (pre-Layer-1). See ThemeTokens for guidance.\n /** @deprecated Use `color`. */\n colors?: Record<string, string>;\n /** @deprecated */\n radii?: Record<string, string>;\n /** @deprecated */\n spacing?: Record<string, string>;\n /** @deprecated */\n typography?: Record<string, string>;\n /** @deprecated */\n shadows?: Record<string, string>;\n};\n\nexport const ThemeVariantSchema = z.object({\n color: ColorTokensSchema.optional(),\n density: DensityTokensSchema.optional(),\n typeScale: TypeScaleTokensSchema.optional(),\n motion: MotionTokensSchema.optional(),\n iconography: IconographyTokensSchema.optional(),\n elevation: ElevationTokensSchema.optional(),\n geometry: GeometryTokensSchema.optional(),\n illustration: IllustrationTokensSchema.optional(),\n surface: SurfaceTokensSchema.optional(),\n diagram: DiagramTokensSchema.optional(),\n scene: SceneTokensSchema.optional(),\n colors: z.record(z.string(), z.string()).optional(),\n radii: z.record(z.string(), z.string()).optional(),\n spacing: z.record(z.string(), z.string()).optional(),\n typography: LegacyTypographySchema.optional(),\n shadows: z.record(z.string(), z.string()).optional(),\n});\n\n/**\n * Theme definition - design system for an orbital.\n */\nexport type ThemeDefinition = {\n /** Theme name */\n name: string;\n /** Human-readable name for theme pickers (e.g. \"Art Deco\"). */\n displayName?: string;\n /** Base tokens */\n tokens: ThemeTokens;\n /** Named variants (e.g., \"dark\", \"high-contrast\") */\n variants?: Record<string, ThemeVariant>;\n};\n\nexport const ThemeDefinitionSchema = z.object({\n name: z.string().min(1, \"Theme name is required\"),\n displayName: z.string().optional(),\n tokens: ThemeTokensSchema,\n variants: z.record(z.string(), ThemeVariantSchema).optional(),\n});\n\n/**\n * ThemeRef - Theme can be inline definition OR reference to imported theme.\n *\n * Reference format: \"Alias.theme\"\n */\nexport type ThemeRef = ThemeDefinition | string;\n\n/**\n * NavItem - a single navigation entry rendered by a layout trait (e.g.\n * `AppShell.traits.AppLayout`'s `navItems`). `label` + `href` are required;\n * `icon`/`badge`/`children`/`roles` are optional shaping knobs an author may set on a\n * call-site override. The `@pages` render sigil yields one entry per root page\n * that declares `@label` (`href = page.path`, `label`, plus its `@icon` and\n * `@roles`), which is assignable to this type. `roles` lists the viewer roles\n * the entry shows for (absent = everyone). `children` nests\n * one level deep — a NavItem with children renders as a group header that\n * expands its children on click rather than navigating directly; a further\n * nested `children` on those entries is not rendered (depth 2 only).\n */\nexport interface NavItem {\n label: string;\n href: string;\n icon?: string;\n badge?: string;\n children?: NavItem[];\n roles?: string[];\n}\n\n/**\n * NavStackEntry - one level of the client-session navigation stack an\n * orbital's pages accumulate. The stack lives client-side (per browser\n * session, keyed per orbital) and is what breadcrumb bands and the\n * `navigate-back` effect read: `href` is the visited page path with route\n * params substituted; `label` is the pushed `crumb` from the navigate\n * effect's options when one was carried, else the page's declared/derived\n * label.\n */\nexport interface NavStackEntry {\n href: string;\n label: string;\n}\n\n/**\n * Checks if a theme reference is a string.\n * \n * Type guard to determine if a theme reference is a string reference\n * (format: \"Alias.theme\") rather than an inline theme definition.\n * \n * @param {ThemeRef} theme - Theme reference to check\n * @returns {boolean} True if theme is a string reference, false otherwise\n * \n * @example\n * isThemeReference(\"Ocean.theme\"); // returns true\n * isThemeReference({ name: \"ocean\", colors: {...} }); // returns false\n */\nexport function isThemeReference(theme: ThemeRef): theme is string {\n return typeof theme === \"string\";\n}\n\n/** Grammar of a registry theme key — the full kebab-case `data-theme` value. */\nconst THEME_REGISTRY_KEY_PATTERN = \"[a-z][a-z0-9]*(-[a-z0-9]+)*\";\nconst THEME_REGISTRY_KEY = new RegExp(`^${THEME_REGISTRY_KEY_PATTERN}$`);\n\n/**\n * True when `theme` is a registry theme key (e.g. \"gazette-light\") — a value a\n * `[data-theme]` selector can match — as opposed to an inline definition or\n * the legacy \"Alias.theme\" import form, which must be resolved upstream.\n */\nexport function isThemeRegistryKey(theme: ThemeRef | undefined): theme is string {\n return typeof theme === \"string\" && THEME_REGISTRY_KEY.test(theme);\n}\n\n/**\n * The `data-theme` key an orbital's `theme` maps to: a string ref is the key\n * itself, an inline definition keys by its `name`, and an absent theme is \"\".\n * Mirrors orbital-core's `theme_data_key`.\n */\nexport function themeDataKey(theme: ThemeRef | undefined): string {\n if (theme === undefined) return \"\";\n if (typeof theme === \"string\") return theme;\n return theme.name;\n}\n\n/**\n * Validate theme reference format: either the legacy import form\n * \"Alias.theme\" or a registry theme key (the full kebab-case `data-theme`\n * value, e.g. \"linear-clean-light\") — the form rabit stamps per-orbital and\n * the `.lolo` `theme \"<key>\"` declarations carry. Mirrors the compiler's\n * `is_valid_theme_reference` acceptance; key existence is validated there,\n * not here.\n */\nexport const ThemeRefStringSchema = z\n .string()\n .regex(\n new RegExp(`^([A-Z][a-zA-Z0-9]*\\\\.theme|${THEME_REGISTRY_KEY_PATTERN})$`),\n 'Theme reference must be \"Alias.theme\" or a registry theme key (e.g., \"linear-clean-light\")',\n );\n\nexport const ThemeRefSchema = z.union([\n ThemeDefinitionSchema,\n ThemeRefStringSchema,\n]);\n\n// ============================================================================\n// SkinSpec — Layer 1 visual variation vocabulary (docs/Almadar_Std_Variations.md §2.3)\n// ============================================================================\n\n/**\n * `SkinSpec` is an alias for `ThemeDefinition` — same object, doc-aligned\n * name. The doc refers to a complete eight-axis visual identity as a\n * \"SkinSpec\"; in the type system it's a `ThemeDefinition` whose `tokens`\n * field carries the eight typed slices (`color`, `density`, `typeScale`,\n * `geometry`, `elevation`, `motion`, `iconography`, `illustration`).\n *\n * There is no separate type — this alias prevents the two surfaces from\n * drifting.\n */\nexport type SkinSpec = ThemeDefinition;\nexport const SkinSpecSchema = ThemeDefinitionSchema;\n\n/**\n * Slice-name aliases — the doc and `_contract.md` refer to each axis as\n * `<Name>Slice`. The existing types use `<Name>Tokens`. These aliases let\n * skin authors write the doc's vocabulary while pointing at the single\n * canonical type definition. No forks.\n */\nexport type ColorSlice = ColorTokens;\nexport type DensitySlice = DensityTokens;\nexport type TypeSlice = TypeScaleTokens;\nexport type GeometrySlice = GeometryTokens;\nexport type ElevationSlice = ElevationTokens;\nexport type MotionSlice = MotionTokens;\nexport type IconographySlice = IconographyTokens;\nexport type IllustrationSlice = IllustrationTokens;\nexport type SurfaceSlice = SurfaceTokens;\n\nexport const ColorSliceSchema = ColorTokensSchema;\nexport const DensitySliceSchema = DensityTokensSchema;\nexport const TypeSliceSchema = TypeScaleTokensSchema;\nexport const GeometrySliceSchema = GeometryTokensSchema;\nexport const ElevationSliceSchema = ElevationTokensSchema;\nexport const MotionSliceSchema = MotionTokensSchema;\nexport const IconographySliceSchema = IconographyTokensSchema;\nexport const IllustrationSliceSchema = IllustrationTokensSchema;\nexport const SurfaceSliceSchema = SurfaceTokensSchema;\n\n// ============================================================================\n// Design Tokens (Legacy)\n// ============================================================================\n\n/**\n * Design tokens - reusable Tailwind class collections.\n * @deprecated Use ThemeDefinition instead for new code.\n *\n * Instead of repeating raw Tailwind classes everywhere, define once and reference by name.\n * Example: `token: \"surfaces.glass\"` resolves to the Tailwind classes defined here.\n */\nexport interface DesignTokens {\n /** Surface styles: backgrounds, borders, shadows */\n surfaces?: Record<string, string>;\n /** Text styles: typography, colors */\n text?: Record<string, string>;\n /** Interactive element styles: buttons, links */\n interactive?: Record<string, string>;\n /** Effect styles: shadows, animations, transitions */\n effects?: Record<string, string>;\n /** Additional custom categories */\n [category: string]: Record<string, string> | undefined;\n}\n\nexport const DesignTokensSchema = z\n .record(z.string(), z.record(z.string(), z.string()))\n .optional();\n\n// ============================================================================\n// Custom Pattern Definitions\n// ============================================================================\n\n/**\n * Allowed HTML elements for custom patterns.\n * These are safe, semantic elements for building custom UIs.\n */\nexport const ALLOWED_CUSTOM_COMPONENTS = [\n \"div\",\n \"span\",\n \"button\",\n \"a\",\n \"p\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"footer\",\n \"section\",\n \"article\",\n \"nav\",\n \"main\",\n \"aside\",\n \"ul\",\n \"ol\",\n \"li\",\n \"img\",\n \"label\",\n \"input\",\n \"form\",\n] as const;\n\nexport type AllowedCustomComponent = (typeof ALLOWED_CUSTOM_COMPONENTS)[number];\n\n/**\n * Custom pattern definition for app-specific reusable patterns.\n *\n * Register custom designs that can be referenced by name throughout the schema.\n */\nexport interface CustomPatternDefinition {\n /** Always 'custom' for custom patterns */\n type: \"custom\";\n /** HTML element to render */\n component: AllowedCustomComponent;\n /** Base Tailwind classes (can include {prop} placeholders) */\n className: string;\n /** Named content slots for nested content */\n slots?: string[];\n /** Configurable props that can be passed when using the pattern */\n props?: string[];\n}\n\nexport const CustomPatternDefinitionSchema = z.object({\n type: z.literal(\"custom\"),\n component: z.enum(ALLOWED_CUSTOM_COMPONENTS),\n className: z.string(),\n slots: z.array(z.string()).optional(),\n props: z.array(z.string()).optional(),\n});\n\n/**\n * Map of custom pattern names to their definitions.\n */\nexport type CustomPatternMap = Record<string, CustomPatternDefinition>;\n\nexport const CustomPatternMapSchema = z\n .record(z.string(), CustomPatternDefinitionSchema)\n .optional();\n\n// ============================================================================\n// Type exports\n// ============================================================================\n\nexport type DomainContextInput = z.input<typeof DomainContextSchema>;\nexport type DesignPreferencesInput = z.input<typeof DesignPreferencesSchema>;\nexport type UserPersonaInput = z.input<typeof UserPersonaSchema>;\nexport type DesignTokensInput = z.input<typeof DesignTokensSchema>;\nexport type CustomPatternDefinitionInput = z.input<\n typeof CustomPatternDefinitionSchema\n>;\nexport type CustomPatternMapInput = z.input<typeof CustomPatternMapSchema>;\n"]}