@contractspec/bundle.library 3.7.6 → 3.7.7
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.
- package/.turbo/turbo-build.log +144 -142
- package/AGENTS.md +42 -24
- package/README.md +59 -37
- package/dist/application/index.d.ts +1 -1
- package/dist/application/index.js +842 -840
- package/dist/application/mcp/cliMcp.js +30 -30
- package/dist/application/mcp/common.d.ts +2 -2
- package/dist/application/mcp/common.js +2 -2
- package/dist/application/mcp/contractsMcp.d.ts +1 -1
- package/dist/application/mcp/contractsMcp.js +163 -163
- package/dist/application/mcp/docsMcp.js +31 -31
- package/dist/application/mcp/index.d.ts +2 -2
- package/dist/application/mcp/index.js +842 -840
- package/dist/application/mcp/internalMcp.js +30 -30
- package/dist/application/mcp/providerRankingMcp.js +35 -33
- package/dist/components/docs/DocsIndexPage.js +859 -212
- package/dist/components/docs/advanced/AdvancedMCPPage.js +15 -15
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +4 -4
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +7 -7
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +9 -9
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +16 -16
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +6 -6
- package/dist/components/docs/advanced/index.d.ts +2 -2
- package/dist/components/docs/advanced/index.js +57 -57
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +10 -10
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +8 -8
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +14 -14
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +16 -16
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +7 -7
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +90 -411
- package/dist/components/docs/architecture/index.d.ts +3 -3
- package/dist/components/docs/architecture/index.js +145 -466
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +6 -6
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +7 -7
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +6 -6
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +4 -4
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +6 -6
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +6 -6
- package/dist/components/docs/comparison/index.d.ts +2 -2
- package/dist/components/docs/comparison/index.js +35 -35
- package/dist/components/docs/docsManifest.d.ts +42 -0
- package/dist/components/docs/docsManifest.js +612 -0
- package/dist/components/docs/ecosystem/IntegrationsPage.js +5 -5
- package/dist/components/docs/ecosystem/PluginsPage.js +7 -7
- package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
- package/dist/components/docs/ecosystem/TemplatesPage.js +11 -11
- package/dist/components/docs/ecosystem/index.d.ts +2 -2
- package/dist/components/docs/ecosystem/index.js +27 -27
- package/dist/components/docs/examples/DocsExamplesPage.js +4 -4
- package/dist/components/docs/examples/index.js +4 -4
- package/dist/components/docs/getting-started/CLIPage.js +9 -9
- package/dist/components/docs/getting-started/CompatibilityPage.js +12 -12
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +7 -7
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +10 -10
- package/dist/components/docs/getting-started/HelloWorldPage.js +8 -8
- package/dist/components/docs/getting-started/InstallationPage.js +10 -10
- package/dist/components/docs/getting-started/StartHerePage.js +8 -8
- package/dist/components/docs/getting-started/TroubleshootingPage.js +12 -12
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +13 -13
- package/dist/components/docs/getting-started/index.d.ts +5 -5
- package/dist/components/docs/getting-started/index.js +89 -89
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +13 -13
- package/dist/components/docs/guides/GuideContractTypesPage.js +33 -33
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +13 -13
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +13 -13
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +35 -35
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +15 -15
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +13 -13
- package/dist/components/docs/guides/GuidesIndexPage.js +69 -46
- package/dist/components/docs/guides/index.d.ts +4 -4
- package/dist/components/docs/guides/index.js +174 -151
- package/dist/components/docs/index.d.ts +13 -12
- package/dist/components/docs/index.js +14060 -15332
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +4 -4
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +7 -7
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +11 -11
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +7 -7
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +5 -5
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +12 -12
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +12 -12
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +11 -11
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +119 -736
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +12 -12
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +24 -24
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +9 -9
- package/dist/components/docs/integrations/IntegrationsResendPage.js +7 -7
- package/dist/components/docs/integrations/IntegrationsS3Page.js +9 -9
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +11 -11
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +19 -19
- package/dist/components/docs/integrations/IntegrationsStripePage.js +25 -25
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +9 -9
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +12 -12
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +13 -13
- package/dist/components/docs/integrations/index.d.ts +1 -1
- package/dist/components/docs/integrations/index.js +614 -1231
- package/dist/components/docs/intent/ContractFirstApiPage.js +8 -8
- package/dist/components/docs/intent/DeterministicCodegenPage.js +9 -9
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +13 -13
- package/dist/components/docs/intent/OpenapiAlternativePage.js +13 -13
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +9 -9
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +8 -8
- package/dist/components/docs/intent/index.d.ts +3 -3
- package/dist/components/docs/intent/index.js +766 -766
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +38 -38
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +9 -9
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +91 -439
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +28 -28
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +21 -21
- package/dist/components/docs/knowledge/index.d.ts +1 -1
- package/dist/components/docs/knowledge/index.js +437 -785
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +16 -16
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +8 -8
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesContractsPage.js +16 -16
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +14 -14
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +13 -13
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +13 -13
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +5 -5
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +5 -5
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +6 -6
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +117 -430
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +6 -6
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +13 -13
- package/dist/components/docs/libraries/LibrariesSLOPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +16 -16
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesTestingPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +10 -10
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +5 -5
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +8 -8
- package/dist/components/docs/libraries/index.d.ts +4 -4
- package/dist/components/docs/libraries/index.js +1308 -1621
- package/dist/components/docs/manifesto/ManifestoPage.js +33 -138
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +9 -9
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +5 -5
- package/dist/components/docs/ops/index.js +14 -14
- package/dist/components/docs/reference/DocsMarkdownContent.js +1 -1
- package/dist/components/docs/reference/DocsReferenceContent.js +2 -2
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +8 -8
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +8 -8
- package/dist/components/docs/reference/DocsReferencePage.js +2 -2
- package/dist/components/docs/reference/index.js +10 -10
- package/dist/components/docs/safety/SafetyAuditingPage.js +16 -16
- package/dist/components/docs/safety/SafetyMigrationsPage.js +15 -15
- package/dist/components/docs/safety/SafetyOverviewPage.js +69 -206
- package/dist/components/docs/safety/SafetyPDPPage.js +12 -12
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +11 -11
- package/dist/components/docs/safety/SafetySigningPage.js +7 -7
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +6 -6
- package/dist/components/docs/safety/index.d.ts +3 -3
- package/dist/components/docs/safety/index.js +616 -753
- package/dist/components/docs/shared/StudioPrompt.js +5 -5
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +12 -12
- package/dist/components/docs/specs/SpecsDataViewsPage.js +14 -14
- package/dist/components/docs/specs/SpecsOverlaysPage.js +14 -14
- package/dist/components/docs/specs/SpecsOverviewPage.js +135 -297
- package/dist/components/docs/specs/SpecsPolicyPage.js +29 -29
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +18 -18
- package/dist/components/docs/specs/index.d.ts +3 -3
- package/dist/components/docs/specs/index.js +814 -976
- package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
- package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
- package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
- package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
- package/dist/components/docs/studio/StudioOverviewPage.js +109 -56
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
- package/dist/components/docs/studio/index.d.ts +4 -4
- package/dist/components/docs/studio/index.js +170 -117
- package/dist/components/integrations/index.js +25 -25
- package/dist/components/integrations/molecules/IntegrationCard.js +5 -5
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +12 -12
- package/dist/components/integrations/organisms/IntegrationSettings.js +7 -7
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +6 -6
- package/dist/components/legal/PrivacyTemplate.js +67 -67
- package/dist/components/legal/TermsTemplate.js +54 -54
- package/dist/components/legal/index.js +121 -121
- package/dist/components/shared/FeatureGateNotice.js +4 -4
- package/dist/components/shared/index.js +4 -4
- package/dist/components/shell/WorkspaceHeader.js +4 -4
- package/dist/components/shell/WorkspaceProjectShellLayout.d.ts +3 -3
- package/dist/components/shell/WorkspaceProjectShellLayout.js +10 -10
- package/dist/components/shell/WorkspaceShellRenderer.d.ts +4 -4
- package/dist/components/shell/WorkspaceShellRenderer.js +8 -8
- package/dist/components/shell/WorkspaceSidebar.js +2 -2
- package/dist/components/shell/index.d.ts +1 -1
- package/dist/components/shell/index.js +12 -12
- package/dist/components/templates/engine/index.d.ts +1 -1
- package/dist/components/templates/index.d.ts +1 -1
- package/dist/components/templates/index.js +835 -835
- package/dist/components/templates/messaging/ConversationList.js +11 -11
- package/dist/components/templates/messaging/MessageComposer.js +11 -11
- package/dist/components/templates/messaging/MessageThread.js +6 -6
- package/dist/components/templates/messaging/MessagingWorkspace.js +23 -23
- package/dist/components/templates/messaging/index.d.ts +1 -1
- package/dist/components/templates/messaging/index.js +23 -23
- package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
- package/dist/components/templates/recipes/RecipeCard.js +5 -5
- package/dist/components/templates/recipes/RecipeDetail.js +8 -8
- package/dist/components/templates/recipes/RecipeList.js +17 -17
- package/dist/components/templates/recipes/index.d.ts +2 -2
- package/dist/components/templates/recipes/index.js +17 -17
- package/dist/components/templates/todos/FilterBar.d.ts +1 -1
- package/dist/components/templates/todos/FilterBar.js +9 -9
- package/dist/components/templates/todos/TaskForm.js +14 -14
- package/dist/components/templates/todos/TaskItem.js +4 -4
- package/dist/components/templates/todos/TaskList.js +30 -30
- package/dist/components/templates/todos/index.d.ts +2 -2
- package/dist/components/templates/todos/index.js +30 -30
- package/dist/config/index.d.ts +2 -2
- package/dist/features/contracts-registry.d.ts +3 -3
- package/dist/features/contracts-registry.js +15 -15
- package/dist/features/docs/docs.contracts.d.ts +1 -1
- package/dist/features/docs/docs.contracts.js +2 -2
- package/dist/features/docs/index.d.ts +1 -1
- package/dist/features/docs/index.js +2 -2
- package/dist/features/index.d.ts +4 -4
- package/dist/features/index.js +18 -18
- package/dist/features/registry.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +14982 -16254
- package/dist/libs/email/client.js +1 -1
- package/dist/libs/email/contact.js +1 -1
- package/dist/libs/email/newsletter.js +1 -1
- package/dist/libs/email/waitlist-application.js +1 -1
- package/dist/libs/email/waitlist.js +1 -1
- package/dist/libs/email.d.ts +1 -1
- package/dist/libs/email.js +1 -1
- package/dist/node/application/index.js +842 -840
- package/dist/node/application/mcp/cliMcp.js +30 -30
- package/dist/node/application/mcp/common.js +2 -2
- package/dist/node/application/mcp/contractsMcp.js +163 -163
- package/dist/node/application/mcp/docsMcp.js +31 -31
- package/dist/node/application/mcp/index.js +842 -840
- package/dist/node/application/mcp/internalMcp.js +30 -30
- package/dist/node/application/mcp/providerRankingMcp.js +35 -33
- package/dist/node/components/docs/DocsIndexPage.js +859 -212
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +15 -15
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +4 -4
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +7 -7
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +9 -9
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +16 -16
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +6 -6
- package/dist/node/components/docs/advanced/index.js +57 -57
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +10 -10
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +8 -8
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +14 -14
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +16 -16
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +7 -7
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +90 -411
- package/dist/node/components/docs/architecture/index.js +145 -466
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +6 -6
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +7 -7
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +6 -6
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +4 -4
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +6 -6
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +6 -6
- package/dist/node/components/docs/comparison/index.js +35 -35
- package/dist/node/components/docs/docsManifest.js +611 -0
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +5 -5
- package/dist/node/components/docs/ecosystem/PluginsPage.js +7 -7
- package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +11 -11
- package/dist/node/components/docs/ecosystem/index.js +27 -27
- package/dist/node/components/docs/examples/DocsExamplesPage.js +4 -4
- package/dist/node/components/docs/examples/index.js +4 -4
- package/dist/node/components/docs/getting-started/CLIPage.js +9 -9
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +12 -12
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +7 -7
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +10 -10
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +8 -8
- package/dist/node/components/docs/getting-started/InstallationPage.js +10 -10
- package/dist/node/components/docs/getting-started/StartHerePage.js +8 -8
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +12 -12
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +13 -13
- package/dist/node/components/docs/getting-started/index.js +89 -89
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +13 -13
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +33 -33
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +13 -13
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +13 -13
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +35 -35
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +15 -15
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +13 -13
- package/dist/node/components/docs/guides/GuidesIndexPage.js +69 -46
- package/dist/node/components/docs/guides/index.js +174 -151
- package/dist/node/components/docs/index.js +14060 -15332
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +4 -4
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +7 -7
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +11 -11
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +7 -7
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +5 -5
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +12 -12
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +12 -12
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +11 -11
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +119 -736
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +12 -12
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +24 -24
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +9 -9
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +7 -7
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +9 -9
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +11 -11
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +19 -19
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +25 -25
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +9 -9
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +12 -12
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +13 -13
- package/dist/node/components/docs/integrations/index.js +614 -1231
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +8 -8
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +9 -9
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +13 -13
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +13 -13
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +9 -9
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +8 -8
- package/dist/node/components/docs/intent/index.js +766 -766
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +38 -38
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +9 -9
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +91 -439
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +28 -28
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +21 -21
- package/dist/node/components/docs/knowledge/index.js +437 -785
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +16 -16
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +8 -8
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +16 -16
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +14 -14
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +13 -13
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +13 -13
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +117 -430
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +13 -13
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +16 -16
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +10 -10
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +8 -8
- package/dist/node/components/docs/libraries/index.js +1308 -1621
- package/dist/node/components/docs/manifesto/ManifestoPage.js +33 -138
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +9 -9
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +5 -5
- package/dist/node/components/docs/ops/index.js +14 -14
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +1 -1
- package/dist/node/components/docs/reference/DocsReferenceContent.js +2 -2
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +8 -8
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +8 -8
- package/dist/node/components/docs/reference/DocsReferencePage.js +2 -2
- package/dist/node/components/docs/reference/index.js +10 -10
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +16 -16
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +15 -15
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +69 -206
- package/dist/node/components/docs/safety/SafetyPDPPage.js +12 -12
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +11 -11
- package/dist/node/components/docs/safety/SafetySigningPage.js +7 -7
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +6 -6
- package/dist/node/components/docs/safety/index.js +616 -753
- package/dist/node/components/docs/shared/StudioPrompt.js +5 -5
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +12 -12
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +14 -14
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +14 -14
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +135 -297
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +29 -29
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +18 -18
- package/dist/node/components/docs/specs/index.js +814 -976
- package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
- package/dist/node/components/docs/studio/StudioOverviewPage.js +109 -56
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
- package/dist/node/components/docs/studio/index.js +170 -117
- package/dist/node/components/integrations/index.js +25 -25
- package/dist/node/components/integrations/molecules/IntegrationCard.js +5 -5
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +12 -12
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +7 -7
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +6 -6
- package/dist/node/components/legal/PrivacyTemplate.js +67 -67
- package/dist/node/components/legal/TermsTemplate.js +54 -54
- package/dist/node/components/legal/index.js +121 -121
- package/dist/node/components/shared/FeatureGateNotice.js +4 -4
- package/dist/node/components/shared/index.js +4 -4
- package/dist/node/components/shell/WorkspaceHeader.js +4 -4
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +10 -10
- package/dist/node/components/shell/WorkspaceShellRenderer.js +8 -8
- package/dist/node/components/shell/WorkspaceSidebar.js +2 -2
- package/dist/node/components/shell/index.js +12 -12
- package/dist/node/components/templates/index.js +835 -835
- package/dist/node/components/templates/messaging/ConversationList.js +11 -11
- package/dist/node/components/templates/messaging/MessageComposer.js +11 -11
- package/dist/node/components/templates/messaging/MessageThread.js +6 -6
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +23 -23
- package/dist/node/components/templates/messaging/index.js +23 -23
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
- package/dist/node/components/templates/recipes/RecipeCard.js +5 -5
- package/dist/node/components/templates/recipes/RecipeDetail.js +8 -8
- package/dist/node/components/templates/recipes/RecipeList.js +17 -17
- package/dist/node/components/templates/recipes/index.js +17 -17
- package/dist/node/components/templates/todos/FilterBar.js +9 -9
- package/dist/node/components/templates/todos/TaskForm.js +14 -14
- package/dist/node/components/templates/todos/TaskItem.js +4 -4
- package/dist/node/components/templates/todos/TaskList.js +30 -30
- package/dist/node/components/templates/todos/index.js +30 -30
- package/dist/node/features/contracts-registry.js +15 -15
- package/dist/node/features/docs/docs.contracts.js +2 -2
- package/dist/node/features/docs/index.js +2 -2
- package/dist/node/features/index.js +18 -18
- package/dist/node/features/registry.js +1 -1
- package/dist/node/index.js +14982 -16254
- package/dist/node/libs/email/client.js +1 -1
- package/dist/node/libs/email/contact.js +1 -1
- package/dist/node/libs/email/newsletter.js +1 -1
- package/dist/node/libs/email/waitlist-application.js +1 -1
- package/dist/node/libs/email/waitlist.js +1 -1
- package/dist/node/libs/email.js +1 -1
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +7 -7
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +7 -7
- package/dist/node/presentation/features/atoms/index.js +7 -7
- package/dist/node/presentation/features/hooks/index.js +56 -56
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +18 -18
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
- package/dist/node/presentation/features/index.js +1364 -1364
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +7 -7
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +7 -7
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +5 -5
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +5 -5
- package/dist/node/presentation/features/molecules/index.js +77 -77
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +18 -18
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +121 -121
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +121 -121
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +18 -18
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +18 -18
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +15 -15
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +18 -18
- package/dist/node/presentation/features/organisms/index.js +401 -401
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +13 -13
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +13 -13
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +20 -20
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +20 -20
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +12 -12
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +12 -12
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +18 -18
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +18 -18
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +13 -13
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +13 -13
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +20 -20
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +20 -20
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +8 -8
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +8 -8
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +15 -15
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +15 -15
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +2 -2
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +2 -2
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +12 -12
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +12 -12
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +18 -18
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +18 -18
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +7 -7
- package/dist/presentation/features/atoms/FeatureIcon/index.d.ts +1 -1
- package/dist/presentation/features/atoms/FeatureIcon/index.js +7 -7
- package/dist/presentation/features/atoms/index.js +7 -7
- package/dist/presentation/features/hooks/index.d.ts +3 -3
- package/dist/presentation/features/hooks/index.js +56 -56
- package/dist/presentation/features/hooks/useContractsRegistry.js +18 -18
- package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
- package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
- package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
- package/dist/presentation/features/index.d.ts +14 -14
- package/dist/presentation/features/index.js +1364 -1364
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +15 -15
- package/dist/presentation/features/molecules/FeatureCard/index.js +15 -15
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +7 -7
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +7 -7
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
- package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +5 -5
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +5 -5
- package/dist/presentation/features/molecules/index.d.ts +1 -1
- package/dist/presentation/features/molecules/index.js +77 -77
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +18 -18
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +121 -121
- package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts +1 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +121 -121
- package/dist/presentation/features/organisms/FeatureEventsList.js +18 -18
- package/dist/presentation/features/organisms/FeatureFormsList.js +18 -18
- package/dist/presentation/features/organisms/FeatureOperationsList.js +15 -15
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +18 -18
- package/dist/presentation/features/organisms/index.d.ts +4 -4
- package/dist/presentation/features/organisms/index.js +401 -401
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +13 -13
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +13 -13
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts +1 -1
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +20 -20
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +20 -20
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +12 -12
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +12 -12
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +18 -18
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +18 -18
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +13 -13
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +13 -13
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +20 -20
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +20 -20
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +8 -8
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +8 -8
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +15 -15
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +15 -15
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +2 -2
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +2 -2
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +12 -12
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +12 -12
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +18 -18
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +18 -18
- package/package.json +38 -24
- package/src/__tests__/env-setup.ts +1 -1
- package/src/__tests__/mocks/prisma.ts +78 -78
- package/src/__tests__/setup.ts +2 -2
- package/src/application/context-storage/index.ts +42 -42
- package/src/application/index.ts +1 -1
- package/src/application/mcp/cliMcp.ts +221 -221
- package/src/application/mcp/common.ts +210 -210
- package/src/application/mcp/contractsMcp.ts +15 -15
- package/src/application/mcp/contractsMcpResources.ts +119 -119
- package/src/application/mcp/contractsMcpTools.ts +218 -218
- package/src/application/mcp/contractsMcpTypes.ts +35 -35
- package/src/application/mcp/docsMcp.ts +173 -173
- package/src/application/mcp/index.ts +2 -2
- package/src/application/mcp/internalMcp.ts +204 -204
- package/src/application/mcp/providerRankingMcp.ts +346 -344
- package/src/bundles/LibraryBundle.ts +136 -136
- package/src/components/docs/DocsIndexPage.tsx +189 -241
- package/src/components/docs/advanced/AdvancedMCPPage.tsx +168 -168
- package/src/components/docs/advanced/AdvancedOverlayEditorPage.tsx +52 -52
- package/src/components/docs/advanced/AdvancedRenderersPage.tsx +53 -53
- package/src/components/docs/advanced/AdvancedSpecExperimentsPage.tsx +48 -48
- package/src/components/docs/advanced/AdvancedTelemetryPage.tsx +205 -205
- package/src/components/docs/advanced/AdvancedWorkflowMonitoringPage.tsx +42 -42
- package/src/components/docs/advanced/index.ts +2 -2
- package/src/components/docs/architecture/ArchitectureAppConfigPage.tsx +127 -127
- package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +79 -79
- package/src/components/docs/architecture/ArchitectureIntegrationBindingPage.tsx +147 -147
- package/src/components/docs/architecture/ArchitectureKnowledgeBindingPage.tsx +193 -193
- package/src/components/docs/architecture/ArchitectureMultiTenancyPage.tsx +73 -73
- package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +98 -273
- package/src/components/docs/architecture/index.ts +3 -3
- package/src/components/docs/comparison/ComparisonAutomationPlatformsPage.tsx +137 -137
- package/src/components/docs/comparison/ComparisonEnterprisePlatformsPage.tsx +138 -138
- package/src/components/docs/comparison/ComparisonInternalToolBuildersPage.tsx +147 -147
- package/src/components/docs/comparison/ComparisonOverviewPage.tsx +106 -106
- package/src/components/docs/comparison/ComparisonWindmillPage.tsx +143 -143
- package/src/components/docs/comparison/ComparisonWorkflowEnginesPage.tsx +168 -168
- package/src/components/docs/comparison/index.ts +2 -2
- package/src/components/docs/docsManifest.ts +720 -0
- package/src/components/docs/ecosystem/IntegrationsPage.tsx +45 -45
- package/src/components/docs/ecosystem/PluginsPage.tsx +77 -77
- package/src/components/docs/ecosystem/RegistryPage.tsx +48 -48
- package/src/components/docs/ecosystem/TemplatesPage.tsx +52 -52
- package/src/components/docs/ecosystem/ecosystem.docblocks.ts +42 -42
- package/src/components/docs/ecosystem/index.ts +2 -2
- package/src/components/docs/examples/DocsExamplesPage.tsx +67 -66
- package/src/components/docs/generated/docs-index._common.json +1757 -1757
- package/src/components/docs/generated/docs-index.agent-console.json +376 -376
- package/src/components/docs/generated/docs-index.ai-chat-assistant.json +8 -8
- package/src/components/docs/generated/docs-index.ai-chat.json +104 -104
- package/src/components/docs/generated/docs-index.ai-support-bot.json +8 -8
- package/src/components/docs/generated/docs-index.analytics-dashboard.json +168 -168
- package/src/components/docs/generated/docs-index.app-config.json +136 -136
- package/src/components/docs/generated/docs-index.audit-trail.json +48 -48
- package/src/components/docs/generated/docs-index.calendar-google.json +8 -8
- package/src/components/docs/generated/docs-index.content-generation.json +8 -8
- package/src/components/docs/generated/docs-index.crm-pipeline.json +160 -160
- package/src/components/docs/generated/docs-index.email-gmail.json +8 -8
- package/src/components/docs/generated/docs-index.feature-flags.json +216 -216
- package/src/components/docs/generated/docs-index.files.json +176 -176
- package/src/components/docs/generated/docs-index.generated.ts +19 -19
- package/src/components/docs/generated/docs-index.health.json +96 -96
- package/src/components/docs/generated/docs-index.identity-rbac.json +312 -312
- package/src/components/docs/generated/docs-index.in-app-docs.json +8 -8
- package/src/components/docs/generated/docs-index.integration-hub.json +264 -264
- package/src/components/docs/generated/docs-index.integration-posthog.json +8 -8
- package/src/components/docs/generated/docs-index.integration-stripe.json +8 -8
- package/src/components/docs/generated/docs-index.integration-supabase.json +8 -8
- package/src/components/docs/generated/docs-index.jobs.json +136 -136
- package/src/components/docs/generated/docs-index.kb-update-pipeline.json +128 -128
- package/src/components/docs/generated/docs-index.knowledge-canon.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +48 -48
- package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +48 -48
- package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-registry.json +32 -32
- package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +48 -48
- package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey.json +216 -216
- package/src/components/docs/generated/docs-index.learning-patterns.json +8 -8
- package/src/components/docs/generated/docs-index.lifecycle-cli.json +8 -8
- package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +8 -8
- package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +48 -48
- package/src/components/docs/generated/docs-index.manifest.json +376 -376
- package/src/components/docs/generated/docs-index.marketplace.json +336 -336
- package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +8 -8
- package/src/components/docs/generated/docs-index.meeting-recorder.json +48 -48
- package/src/components/docs/generated/docs-index.metrics.json +200 -200
- package/src/components/docs/generated/docs-index.minimal.json +16 -16
- package/src/components/docs/generated/docs-index.notifications.json +64 -64
- package/src/components/docs/generated/docs-index.openbanking-powens.json +8 -8
- package/src/components/docs/generated/docs-index.openbanking.json +64 -64
- package/src/components/docs/generated/docs-index.opencode-cli.json +16 -16
- package/src/components/docs/generated/docs-index.personalization.json +8 -8
- package/src/components/docs/generated/docs-index.platform-acp.json +72 -72
- package/src/components/docs/generated/docs-index.platform-agent.json +96 -96
- package/src/components/docs/generated/docs-index.platform-context.json +56 -56
- package/src/components/docs/generated/docs-index.platform-database.json +48 -48
- package/src/components/docs/generated/docs-index.platform-docs.json +88 -88
- package/src/components/docs/generated/docs-index.platform-integrations.json +320 -320
- package/src/components/docs/generated/docs-index.platform-knowledge.json +56 -56
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +96 -96
- package/src/components/docs/generated/docs-index.pocket-family-office.json +120 -120
- package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +8 -8
- package/src/components/docs/generated/docs-index.product-intent.json +8 -8
- package/src/components/docs/generated/docs-index.project-management-sync.json +8 -8
- package/src/components/docs/generated/docs-index.saas-boilerplate.json +208 -208
- package/src/components/docs/generated/docs-index.service-business-os.json +192 -192
- package/src/components/docs/generated/docs-index.team-hub.json +184 -184
- package/src/components/docs/generated/docs-index.unknown.json +512 -512
- package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +80 -80
- package/src/components/docs/generated/docs-index.video-api-showcase.json +32 -32
- package/src/components/docs/generated/docs-index.video-docs-terminal.json +8 -8
- package/src/components/docs/generated/docs-index.video-marketing-clip.json +8 -8
- package/src/components/docs/generated/docs-index.voice-providers.json +8 -8
- package/src/components/docs/generated/docs-index.wealth-snapshot.json +152 -152
- package/src/components/docs/generated/docs-index.workflow-system.json +432 -432
- package/src/components/docs/generated/docs-index.workspace-cli.json +8 -8
- package/src/components/docs/generated/index.ts +6 -6
- package/src/components/docs/generated/loader.ts +49 -49
- package/src/components/docs/getting-started/CLIPage.tsx +157 -157
- package/src/components/docs/getting-started/CompatibilityPage.tsx +69 -69
- package/src/components/docs/getting-started/DataViewTutorialPage.tsx +63 -63
- package/src/components/docs/getting-started/DeveloperToolsPage.tsx +141 -140
- package/src/components/docs/getting-started/HelloWorldPage.tsx +88 -88
- package/src/components/docs/getting-started/InstallationPage.tsx +78 -78
- package/src/components/docs/getting-started/StartHerePage.tsx +64 -64
- package/src/components/docs/getting-started/TroubleshootingPage.tsx +68 -68
- package/src/components/docs/getting-started/VSCodeExtensionPage.tsx +233 -233
- package/src/components/docs/getting-started/getting-started.docblocks.ts +30 -30
- package/src/components/docs/getting-started/index.ts +6 -5
- package/src/components/docs/guides/GuideCIDiffGatingPage.tsx +88 -88
- package/src/components/docs/guides/GuideContractTypesPage.tsx +266 -266
- package/src/components/docs/guides/GuideDocsPipelinePage.tsx +78 -78
- package/src/components/docs/guides/GuideGenerateDocsClientsSchemasPage.tsx +89 -89
- package/src/components/docs/guides/GuideImportExistingCodebasesPage.tsx +360 -360
- package/src/components/docs/guides/GuideNextjsOneEndpointPage.tsx +117 -117
- package/src/components/docs/guides/GuideSpecValidationTypingPage.tsx +82 -82
- package/src/components/docs/guides/GuidesIndexPage.tsx +109 -99
- package/src/components/docs/guides/guides.docblocks.ts +60 -60
- package/src/components/docs/guides/index.ts +4 -4
- package/src/components/docs/index.ts +26 -40
- package/src/components/docs/integrations/IntegrationsCircuitBreakersPage.tsx +22 -22
- package/src/components/docs/integrations/IntegrationsElevenLabsPage.tsx +41 -41
- package/src/components/docs/integrations/IntegrationsGithubPage.tsx +66 -66
- package/src/components/docs/integrations/IntegrationsGmailPage.tsx +44 -44
- package/src/components/docs/integrations/IntegrationsGoogleCalendarPage.tsx +31 -31
- package/src/components/docs/integrations/IntegrationsHealthRoutingPage.tsx +80 -80
- package/src/components/docs/integrations/IntegrationsMistralPage.tsx +65 -65
- package/src/components/docs/integrations/IntegrationsOpenAIPage.tsx +54 -54
- package/src/components/docs/integrations/IntegrationsOverviewPage.tsx +124 -529
- package/src/components/docs/integrations/IntegrationsPostmarkPage.tsx +97 -97
- package/src/components/docs/integrations/IntegrationsPowensPage.tsx +165 -165
- package/src/components/docs/integrations/IntegrationsQdrantPage.tsx +44 -44
- package/src/components/docs/integrations/IntegrationsResendPage.tsx +40 -40
- package/src/components/docs/integrations/IntegrationsS3Page.tsx +48 -48
- package/src/components/docs/integrations/IntegrationsSlackPage.tsx +70 -70
- package/src/components/docs/integrations/IntegrationsSpecModelPage.tsx +139 -139
- package/src/components/docs/integrations/IntegrationsStripePage.tsx +153 -153
- package/src/components/docs/integrations/IntegrationsTwilioPage.tsx +50 -50
- package/src/components/docs/integrations/IntegrationsWhatsappMetaPage.tsx +69 -69
- package/src/components/docs/integrations/IntegrationsWhatsappTwilioPage.tsx +73 -73
- package/src/components/docs/integrations/index.ts +1 -1
- package/src/components/docs/intent/ContractFirstApiPage.tsx +61 -61
- package/src/components/docs/intent/DeterministicCodegenPage.tsx +81 -80
- package/src/components/docs/intent/GenerateClientFromSchemaPage.tsx +108 -108
- package/src/components/docs/intent/OpenapiAlternativePage.tsx +98 -98
- package/src/components/docs/intent/SchemaValidationTypescriptPage.tsx +79 -79
- package/src/components/docs/intent/SpecDrivenDevelopmentPage.tsx +67 -67
- package/src/components/docs/intent/index.ts +3 -3
- package/src/components/docs/intent/intent-pages.docblocks.ts +186 -186
- package/src/components/docs/knowledge/KnowledgeCategoriesPage.tsx +304 -304
- package/src/components/docs/knowledge/KnowledgeExamplesPage.tsx +84 -84
- package/src/components/docs/knowledge/KnowledgeOverviewPage.tsx +76 -285
- package/src/components/docs/knowledge/KnowledgeSourcesPage.tsx +171 -171
- package/src/components/docs/knowledge/KnowledgeSpacesPage.tsx +132 -132
- package/src/components/docs/knowledge/index.ts +1 -1
- package/src/components/docs/libraries/LibrariesAccessibilityPage.tsx +95 -95
- package/src/components/docs/libraries/LibrariesAiAgentPage.tsx +58 -58
- package/src/components/docs/libraries/LibrariesAnalyticsPage.tsx +39 -39
- package/src/components/docs/libraries/LibrariesContentGenPage.tsx +41 -41
- package/src/components/docs/libraries/LibrariesContractsPage.tsx +132 -132
- package/src/components/docs/libraries/LibrariesCostTrackingPage.tsx +47 -47
- package/src/components/docs/libraries/LibrariesDataBackendPage.tsx +73 -73
- package/src/components/docs/libraries/LibrariesDataViewsPage.tsx +76 -76
- package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +115 -115
- package/src/components/docs/libraries/LibrariesEvolutionPage.tsx +64 -64
- package/src/components/docs/libraries/LibrariesGraphQLPage.tsx +92 -92
- package/src/components/docs/libraries/LibrariesGrowthPage.tsx +37 -37
- package/src/components/docs/libraries/LibrariesMultiTenancyPage.tsx +47 -47
- package/src/components/docs/libraries/LibrariesObservabilityPage.tsx +58 -58
- package/src/components/docs/libraries/LibrariesOverlayEnginePage.tsx +51 -51
- package/src/components/docs/libraries/LibrariesOverviewPage.tsx +137 -301
- package/src/components/docs/libraries/LibrariesPersonalizationPage.tsx +57 -57
- package/src/components/docs/libraries/LibrariesProgressiveDeliveryPage.tsx +51 -51
- package/src/components/docs/libraries/LibrariesResiliencePage.tsx +54 -54
- package/src/components/docs/libraries/LibrariesRuntimePage.tsx +96 -96
- package/src/components/docs/libraries/LibrariesSLOPage.tsx +52 -52
- package/src/components/docs/libraries/LibrariesSchemaPage.tsx +131 -131
- package/src/components/docs/libraries/LibrariesSupportBotPage.tsx +59 -59
- package/src/components/docs/libraries/LibrariesTestingPage.tsx +64 -64
- package/src/components/docs/libraries/LibrariesUIKitPage.tsx +85 -85
- package/src/components/docs/libraries/LibrariesWorkflowComposerPage.tsx +38 -38
- package/src/components/docs/libraries/LibrariesWorkflowsPage.tsx +79 -79
- package/src/components/docs/libraries/index.ts +4 -4
- package/src/components/docs/manifesto/ManifestoPage.tsx +61 -132
- package/src/components/docs/ops/AutoEvolutionOpsPage.tsx +81 -81
- package/src/components/docs/ops/DistributedTracingOpsPage.tsx +28 -28
- package/src/components/docs/ops/ops-lifecycle.docblocks.ts +32 -32
- package/src/components/docs/ops/ops-runbooks-a.docblocks.ts +60 -60
- package/src/components/docs/ops/ops-runbooks-b.docblocks.ts +60 -60
- package/src/components/docs/ops/ops-slo-tenant.docblocks.ts +61 -61
- package/src/components/docs/ops/ops-top.docs.ts +10 -10
- package/src/components/docs/ops/ops.docs.ts +6 -6
- package/src/components/docs/product/product.docblocks.ts +60 -60
- package/src/components/docs/reference/DocsMarkdownContent.tsx +74 -74
- package/src/components/docs/reference/DocsReferenceContent.tsx +51 -51
- package/src/components/docs/reference/DocsReferenceIndexClient.tsx +106 -105
- package/src/components/docs/reference/DocsReferenceIndexPage.tsx +2 -2
- package/src/components/docs/reference/DocsReferencePage.tsx +3 -3
- package/src/components/docs/reference/docsMarkdownParser.ts +90 -90
- package/src/components/docs/safety/SafetyAuditingPage.tsx +189 -189
- package/src/components/docs/safety/SafetyMigrationsPage.tsx +189 -189
- package/src/components/docs/safety/SafetyOverviewPage.tsx +70 -157
- package/src/components/docs/safety/SafetyPDPPage.tsx +163 -163
- package/src/components/docs/safety/SafetySecurityTrustPage.tsx +89 -89
- package/src/components/docs/safety/SafetySigningPage.tsx +38 -38
- package/src/components/docs/safety/SafetyTenantIsolationPage.tsx +39 -39
- package/src/components/docs/safety/index.ts +3 -3
- package/src/components/docs/shared/StudioPrompt.tsx +17 -17
- package/src/components/docs/specs/SpecsCapabilitiesPage.tsx +79 -79
- package/src/components/docs/specs/SpecsDataViewsPage.tsx +142 -142
- package/src/components/docs/specs/SpecsOverlaysPage.tsx +202 -202
- package/src/components/docs/specs/SpecsOverviewPage.tsx +118 -193
- package/src/components/docs/specs/SpecsPolicyPage.tsx +233 -233
- package/src/components/docs/specs/SpecsWorkflowsPage.tsx +156 -156
- package/src/components/docs/specs/index.ts +3 -3
- package/src/components/docs/studio/StudioBYOKPage.tsx +11 -11
- package/src/components/docs/studio/StudioDeploymentsPage.tsx +11 -11
- package/src/components/docs/studio/StudioGettingStartedPage.tsx +11 -11
- package/src/components/docs/studio/StudioIntegrationsPage.tsx +11 -11
- package/src/components/docs/studio/StudioOverviewPage.tsx +94 -73
- package/src/components/docs/studio/StudioVisualBuilderPage.tsx +11 -11
- package/src/components/docs/studio/index.ts +4 -4
- package/src/components/docs/tech/contracts/tech-docs.docblocks.ts +10 -10
- package/src/components/integrations/molecules/IntegrationCard.tsx +71 -72
- package/src/components/integrations/organisms/IntegrationMarketplace.tsx +116 -116
- package/src/components/integrations/organisms/IntegrationSettings.tsx +201 -201
- package/src/components/integrations/organisms/KnowledgeSourceList.tsx +93 -94
- package/src/components/legal/PrivacyTemplate.tsx +611 -611
- package/src/components/legal/TermsTemplate.tsx +675 -675
- package/src/components/shared/FeatureGateNotice.tsx +26 -27
- package/src/components/shell/WorkspaceHeader.tsx +80 -80
- package/src/components/shell/WorkspaceProjectShellLayout.tsx +59 -58
- package/src/components/shell/WorkspaceShellRenderer.tsx +69 -68
- package/src/components/shell/WorkspaceSidebar.tsx +58 -58
- package/src/components/shell/index.ts +1 -1
- package/src/components/templates/engine/index.ts +29 -28
- package/src/components/templates/index.ts +1 -1
- package/src/components/templates/messaging/ConversationList.tsx +68 -69
- package/src/components/templates/messaging/MessageComposer.tsx +59 -59
- package/src/components/templates/messaging/MessageThread.tsx +73 -74
- package/src/components/templates/messaging/MessagingWorkspace.tsx +18 -19
- package/src/components/templates/messaging/index.ts +1 -1
- package/src/components/templates/messaging/types.ts +17 -17
- package/src/components/templates/recipes/LanguageSwitcher.tsx +20 -20
- package/src/components/templates/recipes/RecipeCard.tsx +56 -56
- package/src/components/templates/recipes/RecipeDetail.tsx +43 -43
- package/src/components/templates/recipes/RecipeList.tsx +62 -63
- package/src/components/templates/recipes/index.ts +2 -2
- package/src/components/templates/recipes/types.ts +24 -24
- package/src/components/templates/todos/FilterBar.tsx +84 -84
- package/src/components/templates/todos/TaskForm.tsx +118 -119
- package/src/components/templates/todos/TaskItem.tsx +78 -78
- package/src/components/templates/todos/TaskList.tsx +106 -107
- package/src/components/templates/todos/index.ts +2 -2
- package/src/components/templates/todos/types.ts +11 -11
- package/src/config/contractspec-blueprint.ts +55 -55
- package/src/config/contractspec-branding.ts +37 -37
- package/src/config/contractspec-routes.ts +22 -22
- package/src/config/index.ts +14 -15
- package/src/features/contracts-registry.ts +118 -118
- package/src/features/docs/docs.contracts.ts +6 -6
- package/src/features/docs/index.ts +6 -6
- package/src/features/docs.feature.ts +27 -27
- package/src/features/index.ts +59 -63
- package/src/features/mcp.feature.ts +24 -24
- package/src/features/presentations.feature.ts +27 -27
- package/src/features/registry.ts +14 -14
- package/src/index.ts +2 -2
- package/src/infrastructure/elysia/logger.ts +21 -21
- package/src/libs/email/client.test.ts +81 -81
- package/src/libs/email/client.ts +111 -111
- package/src/libs/email/contact.ts +35 -35
- package/src/libs/email/newsletter.ts +46 -46
- package/src/libs/email/types.ts +29 -29
- package/src/libs/email/utils.ts +5 -5
- package/src/libs/email/waitlist-application.ts +69 -69
- package/src/libs/email/waitlist.ts +46 -46
- package/src/libs/email.ts +7 -7
- package/src/libs/posthog/client.ts +44 -44
- package/src/libs/posthog/native.ts +23 -22
- package/src/libs/posthog/server.ts +7 -7
- package/src/libs/pricing-examples.ts +12 -12
- package/src/presentation/features/atoms/FeatureIcon/FeatureIcon.tsx +90 -90
- package/src/presentation/features/atoms/FeatureIcon/index.ts +3 -3
- package/src/presentation/features/hooks/index.ts +9 -9
- package/src/presentation/features/hooks/useContractsRegistry.ts +23 -23
- package/src/presentation/features/hooks/useFeatureFilters.ts +117 -117
- package/src/presentation/features/hooks/useFeatureRegistry.ts +40 -40
- package/src/presentation/features/hooks/useRelatedDocs.ts +28 -28
- package/src/presentation/features/index.ts +50 -52
- package/src/presentation/features/molecules/FeatureCard/FeatureCard.tsx +80 -80
- package/src/presentation/features/molecules/FeatureCard/types.ts +6 -6
- package/src/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.tsx +54 -54
- package/src/presentation/features/molecules/FeatureCategoryHeader/index.ts +2 -2
- package/src/presentation/features/molecules/FeatureFilters/FeatureFilters.tsx +67 -67
- package/src/presentation/features/molecules/FeatureFilters/types.ts +20 -20
- package/src/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.tsx +120 -121
- package/src/presentation/features/molecules/FeatureHoverPreview/index.ts +2 -2
- package/src/presentation/features/molecules/index.ts +8 -8
- package/src/presentation/features/organisms/FeatureDataViewsList.tsx +21 -21
- package/src/presentation/features/organisms/FeatureDetail/FeatureDetail.tsx +86 -86
- package/src/presentation/features/organisms/FeatureDetail/types.ts +4 -4
- package/src/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.tsx +210 -210
- package/src/presentation/features/organisms/FeatureDiscovery/index.ts +3 -3
- package/src/presentation/features/organisms/FeatureDiscovery/types.ts +10 -10
- package/src/presentation/features/organisms/FeatureEventsList.tsx +19 -19
- package/src/presentation/features/organisms/FeatureFormsList.tsx +19 -19
- package/src/presentation/features/organisms/FeatureOperationsList.tsx +21 -21
- package/src/presentation/features/organisms/FeaturePresentationsList.tsx +21 -21
- package/src/presentation/features/organisms/index.ts +6 -6
- package/src/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.tsx +219 -219
- package/src/presentation/features/templates/FeatureDataViewDetailTemplate/types.ts +7 -7
- package/src/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.tsx +26 -26
- package/src/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.tsx +195 -195
- package/src/presentation/features/templates/FeatureEventDetailTemplate/types.ts +7 -7
- package/src/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.tsx +26 -26
- package/src/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.tsx +216 -216
- package/src/presentation/features/templates/FeatureFormDetailTemplate/types.ts +7 -7
- package/src/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.tsx +26 -26
- package/src/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.tsx +228 -228
- package/src/presentation/features/templates/FeatureOperationDetailTemplate/types.ts +7 -7
- package/src/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.tsx +26 -26
- package/src/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.tsx +24 -24
- package/src/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.tsx +201 -201
- package/src/presentation/features/templates/FeaturePresentationDetailTemplate/types.ts +8 -8
- package/src/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.tsx +26 -26
- package/src/presentation/features/templates/types.ts +2 -2
- package/tsconfig.json +12 -12
- package/tsdown.config.js +5 -5
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// src/components/docs/libraries/
|
|
2
|
+
// src/components/docs/libraries/LibrariesAccessibilityPage.tsx
|
|
3
|
+
import { CodeBlock, InstallCommand } from "@contractspec/lib.design-system";
|
|
3
4
|
import Link from "@contractspec/lib.ui-link";
|
|
4
5
|
import { ChevronRight } from "lucide-react";
|
|
5
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
function
|
|
7
|
+
function LibrariesAccessibilityPage() {
|
|
7
8
|
return /* @__PURE__ */ jsxs("div", {
|
|
8
9
|
className: "space-y-8",
|
|
9
10
|
children: [
|
|
@@ -11,12 +12,12 @@ function LibrariesOverviewPage() {
|
|
|
11
12
|
className: "space-y-4",
|
|
12
13
|
children: [
|
|
13
14
|
/* @__PURE__ */ jsx("h1", {
|
|
14
|
-
className: "text-4xl
|
|
15
|
-
children: "
|
|
15
|
+
className: "font-bold text-4xl",
|
|
16
|
+
children: "@contractspec/lib.accessibility"
|
|
16
17
|
}),
|
|
17
18
|
/* @__PURE__ */ jsx("p", {
|
|
18
19
|
className: "text-muted-foreground",
|
|
19
|
-
children: "
|
|
20
|
+
children: "Stable exports of accessibility primitives for LSSM web apps, ensuring WCAG compliance and inclusive design."
|
|
20
21
|
})
|
|
21
22
|
]
|
|
22
23
|
}),
|
|
@@ -24,188 +25,11 @@ function LibrariesOverviewPage() {
|
|
|
24
25
|
className: "space-y-4",
|
|
25
26
|
children: [
|
|
26
27
|
/* @__PURE__ */ jsx("h2", {
|
|
27
|
-
className: "text-2xl
|
|
28
|
-
children: "
|
|
29
|
-
}),
|
|
30
|
-
/* @__PURE__ */ jsxs("div", {
|
|
31
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
32
|
-
children: [
|
|
33
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
34
|
-
href: "/docs/libraries/contracts",
|
|
35
|
-
className: "card-subtle group p-6 transition-colors hover:border-violet-500/50",
|
|
36
|
-
children: [
|
|
37
|
-
/* @__PURE__ */ jsx("h3", {
|
|
38
|
-
className: "text-lg font-bold transition-colors group-hover:text-violet-400",
|
|
39
|
-
children: "@contractspec/lib.contracts-spec"
|
|
40
|
-
}),
|
|
41
|
-
/* @__PURE__ */ jsx("p", {
|
|
42
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
43
|
-
children: "Define operations, events, and policies in pure TypeScript. Runtime adapters serve them as REST/GraphQL/MCP endpoints."
|
|
44
|
-
}),
|
|
45
|
-
/* @__PURE__ */ jsxs("div", {
|
|
46
|
-
className: "mt-3 flex items-center gap-2 text-sm text-violet-400",
|
|
47
|
-
children: [
|
|
48
|
-
"Learn more ",
|
|
49
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
50
|
-
size: 14
|
|
51
|
-
})
|
|
52
|
-
]
|
|
53
|
-
})
|
|
54
|
-
]
|
|
55
|
-
}),
|
|
56
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
57
|
-
href: "/docs/libraries/schema",
|
|
58
|
-
className: "card-subtle group p-6 transition-colors hover:border-violet-500/50",
|
|
59
|
-
children: [
|
|
60
|
-
/* @__PURE__ */ jsx("h3", {
|
|
61
|
-
className: "text-lg font-bold transition-colors group-hover:text-violet-400",
|
|
62
|
-
children: "@contractspec/lib.schema"
|
|
63
|
-
}),
|
|
64
|
-
/* @__PURE__ */ jsx("p", {
|
|
65
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
66
|
-
children: "Type-safe schema models that export to Zod, Pothos GraphQL, and JSON Schema from a single source."
|
|
67
|
-
}),
|
|
68
|
-
/* @__PURE__ */ jsxs("div", {
|
|
69
|
-
className: "mt-3 flex items-center gap-2 text-sm text-violet-400",
|
|
70
|
-
children: [
|
|
71
|
-
"Learn more ",
|
|
72
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
73
|
-
size: 14
|
|
74
|
-
})
|
|
75
|
-
]
|
|
76
|
-
})
|
|
77
|
-
]
|
|
78
|
-
})
|
|
79
|
-
]
|
|
80
|
-
})
|
|
81
|
-
]
|
|
82
|
-
}),
|
|
83
|
-
/* @__PURE__ */ jsxs("div", {
|
|
84
|
-
className: "space-y-4",
|
|
85
|
-
children: [
|
|
86
|
-
/* @__PURE__ */ jsxs("h2", {
|
|
87
|
-
className: "flex items-center gap-2 text-2xl font-bold",
|
|
88
|
-
children: [
|
|
89
|
-
"AI-Native Operations",
|
|
90
|
-
/* @__PURE__ */ jsx("span", {
|
|
91
|
-
className: "badge badge-secondary text-xs",
|
|
92
|
-
children: "Featured"
|
|
93
|
-
})
|
|
94
|
-
]
|
|
95
|
-
}),
|
|
96
|
-
/* @__PURE__ */ jsx("div", {
|
|
97
|
-
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
98
|
-
children: [
|
|
99
|
-
{
|
|
100
|
-
title: "@contractspec/lib.ai-agent",
|
|
101
|
-
description: "Agent specs, runner, memory, and approval workflow for safe AI copilots.",
|
|
102
|
-
href: "/docs/libraries/ai-agent"
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
title: "@contractspec/lib.support-bot",
|
|
106
|
-
description: "Classification, RAG resolver, auto-responder, and performance loop for L1 automation.",
|
|
107
|
-
href: "/docs/libraries/support-bot"
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
title: "@contractspec/lib.content-gen",
|
|
111
|
-
description: "Blog, landing, email, social, and SEO generators powered by ContentBriefs.",
|
|
112
|
-
href: "/docs/libraries/content-gen"
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
title: "@contractspec/lib.analytics",
|
|
116
|
-
description: "Funnels, cohorts, churn scoring, and hypothesis generation without a warehouse.",
|
|
117
|
-
href: "/docs/libraries/analytics"
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
title: "@contractspec/lib.growth",
|
|
121
|
-
description: "Experiment registry, runner, tracker, and stats engine for deterministic A/B tests.",
|
|
122
|
-
href: "/docs/libraries/growth"
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
title: "@contractspec/lib.design-system",
|
|
126
|
-
description: "Now includes ApprovalQueue + AgentMonitor for human-in-the-loop decisions.",
|
|
127
|
-
href: "/docs/libraries/design-system"
|
|
128
|
-
}
|
|
129
|
-
].map((lib) => /* @__PURE__ */ jsxs(Link, {
|
|
130
|
-
href: lib.href,
|
|
131
|
-
className: "card-subtle group p-6 transition-colors hover:border-violet-500/50",
|
|
132
|
-
children: [
|
|
133
|
-
/* @__PURE__ */ jsx("h3", {
|
|
134
|
-
className: "text-lg font-bold transition-colors group-hover:text-violet-400",
|
|
135
|
-
children: lib.title
|
|
136
|
-
}),
|
|
137
|
-
/* @__PURE__ */ jsx("p", {
|
|
138
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
139
|
-
children: lib.description
|
|
140
|
-
}),
|
|
141
|
-
/* @__PURE__ */ jsxs("div", {
|
|
142
|
-
className: "mt-3 flex items-center gap-2 text-sm text-violet-400",
|
|
143
|
-
children: [
|
|
144
|
-
"Learn more ",
|
|
145
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
146
|
-
size: 14
|
|
147
|
-
})
|
|
148
|
-
]
|
|
149
|
-
})
|
|
150
|
-
]
|
|
151
|
-
}, lib.title))
|
|
152
|
-
})
|
|
153
|
-
]
|
|
154
|
-
}),
|
|
155
|
-
/* @__PURE__ */ jsxs("div", {
|
|
156
|
-
className: "space-y-4",
|
|
157
|
-
children: [
|
|
158
|
-
/* @__PURE__ */ jsxs("h2", {
|
|
159
|
-
className: "flex items-center gap-2 text-2xl font-bold",
|
|
160
|
-
children: [
|
|
161
|
-
"Personalization & Customization",
|
|
162
|
-
/* @__PURE__ */ jsx("span", {
|
|
163
|
-
className: "badge badge-primary text-xs",
|
|
164
|
-
children: "Featured"
|
|
165
|
-
})
|
|
166
|
-
]
|
|
28
|
+
className: "font-bold text-2xl",
|
|
29
|
+
children: "Installation"
|
|
167
30
|
}),
|
|
168
|
-
/* @__PURE__ */ jsx(
|
|
169
|
-
|
|
170
|
-
children: [
|
|
171
|
-
{
|
|
172
|
-
title: "@contractspec/lib.personalization",
|
|
173
|
-
description: "Track behavior, analyze unused UI, and feed overlay/workflow adapters.",
|
|
174
|
-
href: "/docs/libraries/personalization"
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
title: "@contractspec/lib.overlay-engine",
|
|
178
|
-
description: "Signed overlays with validator, registry, runtime engine, and React hooks.",
|
|
179
|
-
href: "/docs/libraries/overlay-engine"
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
title: "@contractspec/lib.workflow-composer",
|
|
183
|
-
description: "Tenant-aware workflow extensions with step injection helpers.",
|
|
184
|
-
href: "/docs/libraries/workflow-composer"
|
|
185
|
-
}
|
|
186
|
-
].map((lib) => /* @__PURE__ */ jsxs(Link, {
|
|
187
|
-
href: lib.href,
|
|
188
|
-
className: "card-subtle group p-6 transition-colors hover:border-violet-500/50",
|
|
189
|
-
children: [
|
|
190
|
-
/* @__PURE__ */ jsx("h3", {
|
|
191
|
-
className: "text-lg font-bold transition-colors group-hover:text-violet-400",
|
|
192
|
-
children: lib.title
|
|
193
|
-
}),
|
|
194
|
-
/* @__PURE__ */ jsx("p", {
|
|
195
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
196
|
-
children: lib.description
|
|
197
|
-
}),
|
|
198
|
-
/* @__PURE__ */ jsxs("div", {
|
|
199
|
-
className: "mt-3 flex items-center gap-2 text-sm text-violet-400",
|
|
200
|
-
children: [
|
|
201
|
-
"Learn more ",
|
|
202
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
203
|
-
size: 14
|
|
204
|
-
})
|
|
205
|
-
]
|
|
206
|
-
})
|
|
207
|
-
]
|
|
208
|
-
}, lib.title))
|
|
31
|
+
/* @__PURE__ */ jsx(InstallCommand, {
|
|
32
|
+
package: "@contractspec/lib.accessibility"
|
|
209
33
|
})
|
|
210
34
|
]
|
|
211
35
|
}),
|
|
@@ -213,132 +37,70 @@ function LibrariesOverviewPage() {
|
|
|
213
37
|
className: "space-y-4",
|
|
214
38
|
children: [
|
|
215
39
|
/* @__PURE__ */ jsx("h2", {
|
|
216
|
-
className: "text-2xl
|
|
217
|
-
children: "
|
|
40
|
+
className: "font-bold text-2xl",
|
|
41
|
+
children: "Exports"
|
|
218
42
|
}),
|
|
219
|
-
/* @__PURE__ */ jsxs("
|
|
220
|
-
className: "
|
|
43
|
+
/* @__PURE__ */ jsxs("ul", {
|
|
44
|
+
className: "space-y-2 text-muted-foreground",
|
|
221
45
|
children: [
|
|
222
|
-
/* @__PURE__ */ jsxs(
|
|
223
|
-
href: "/docs/libraries/ui-kit",
|
|
224
|
-
className: "card-subtle group p-6 transition-colors hover:border-violet-500/50",
|
|
46
|
+
/* @__PURE__ */ jsxs("li", {
|
|
225
47
|
children: [
|
|
226
|
-
/* @__PURE__ */ jsx("
|
|
227
|
-
className: "
|
|
228
|
-
children: "
|
|
229
|
-
}),
|
|
230
|
-
/* @__PURE__ */ jsx("p", {
|
|
231
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
232
|
-
children: "Universal UI components for React Native and Web, built on NativeWind and @rn-primitives."
|
|
48
|
+
/* @__PURE__ */ jsx("code", {
|
|
49
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
50
|
+
children: "SkipLink"
|
|
233
51
|
}),
|
|
234
|
-
|
|
235
|
-
className: "mt-3 flex items-center gap-2 text-sm text-violet-400",
|
|
236
|
-
children: [
|
|
237
|
-
"Learn more ",
|
|
238
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
239
|
-
size: 14
|
|
240
|
-
})
|
|
241
|
-
]
|
|
242
|
-
})
|
|
52
|
+
": A link to skip navigation, visible on focus"
|
|
243
53
|
]
|
|
244
54
|
}),
|
|
245
|
-
/* @__PURE__ */ jsxs(
|
|
246
|
-
href: "/docs/libraries/design-system",
|
|
247
|
-
className: "card-subtle group p-6 transition-colors hover:border-violet-500/50",
|
|
55
|
+
/* @__PURE__ */ jsxs("li", {
|
|
248
56
|
children: [
|
|
249
|
-
/* @__PURE__ */ jsx("
|
|
250
|
-
className: "
|
|
251
|
-
children: "
|
|
252
|
-
}),
|
|
253
|
-
/* @__PURE__ */ jsx("p", {
|
|
254
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
255
|
-
children: "High-level design system components, patterns, and layouts. Built on top of ui-kit."
|
|
57
|
+
/* @__PURE__ */ jsx("code", {
|
|
58
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
59
|
+
children: "VisuallyHidden"
|
|
256
60
|
}),
|
|
257
|
-
|
|
258
|
-
className: "mt-3 flex items-center gap-2 text-sm text-violet-400",
|
|
259
|
-
children: [
|
|
260
|
-
"Learn more ",
|
|
261
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
262
|
-
size: 14
|
|
263
|
-
})
|
|
264
|
-
]
|
|
265
|
-
})
|
|
61
|
+
": Hide content visually but keep it for screen readers"
|
|
266
62
|
]
|
|
267
63
|
}),
|
|
268
|
-
/* @__PURE__ */ jsxs(
|
|
269
|
-
href: "/docs/libraries/accessibility",
|
|
270
|
-
className: "card-subtle group p-6 transition-colors hover:border-violet-500/50",
|
|
64
|
+
/* @__PURE__ */ jsxs("li", {
|
|
271
65
|
children: [
|
|
272
|
-
/* @__PURE__ */ jsx("
|
|
273
|
-
className: "
|
|
274
|
-
children: "
|
|
66
|
+
/* @__PURE__ */ jsx("code", {
|
|
67
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
68
|
+
children: "SRLiveRegionProvider"
|
|
275
69
|
}),
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
70
|
+
",",
|
|
71
|
+
" ",
|
|
72
|
+
/* @__PURE__ */ jsx("code", {
|
|
73
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
74
|
+
children: "useSRLiveRegion"
|
|
279
75
|
}),
|
|
280
|
-
|
|
281
|
-
className: "mt-3 flex items-center gap-2 text-sm text-violet-400",
|
|
282
|
-
children: [
|
|
283
|
-
"Learn more ",
|
|
284
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
285
|
-
size: 14
|
|
286
|
-
})
|
|
287
|
-
]
|
|
288
|
-
})
|
|
76
|
+
": Manage live region announcements"
|
|
289
77
|
]
|
|
290
|
-
})
|
|
291
|
-
|
|
292
|
-
})
|
|
293
|
-
]
|
|
294
|
-
}),
|
|
295
|
-
/* @__PURE__ */ jsxs("div", {
|
|
296
|
-
className: "space-y-4",
|
|
297
|
-
children: [
|
|
298
|
-
/* @__PURE__ */ jsx("h2", {
|
|
299
|
-
className: "text-2xl font-bold",
|
|
300
|
-
children: "Data & Backend"
|
|
301
|
-
}),
|
|
302
|
-
/* @__PURE__ */ jsxs("div", {
|
|
303
|
-
className: "grid gap-4 md:grid-cols-3",
|
|
304
|
-
children: [
|
|
305
|
-
/* @__PURE__ */ jsxs("div", {
|
|
306
|
-
className: "card-subtle p-4",
|
|
78
|
+
}),
|
|
79
|
+
/* @__PURE__ */ jsxs("li", {
|
|
307
80
|
children: [
|
|
308
|
-
/* @__PURE__ */ jsx("
|
|
309
|
-
className: "
|
|
310
|
-
children: "
|
|
81
|
+
/* @__PURE__ */ jsx("code", {
|
|
82
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
83
|
+
children: "RouteAnnouncer"
|
|
311
84
|
}),
|
|
312
|
-
|
|
313
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
314
|
-
children: "Prisma wrapper and CLI for schema management"
|
|
315
|
-
})
|
|
85
|
+
": Announce page title/path changes on navigation"
|
|
316
86
|
]
|
|
317
87
|
}),
|
|
318
|
-
/* @__PURE__ */ jsxs("
|
|
319
|
-
className: "card-subtle p-4",
|
|
88
|
+
/* @__PURE__ */ jsxs("li", {
|
|
320
89
|
children: [
|
|
321
|
-
/* @__PURE__ */ jsx("
|
|
322
|
-
className: "
|
|
323
|
-
children: "
|
|
90
|
+
/* @__PURE__ */ jsx("code", {
|
|
91
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
92
|
+
children: "FocusOnRouteChange"
|
|
324
93
|
}),
|
|
325
|
-
|
|
326
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
327
|
-
children: "Type-safe event bus for in-memory and distributed events"
|
|
328
|
-
})
|
|
94
|
+
": Reset focus to body or main content on navigation"
|
|
329
95
|
]
|
|
330
96
|
}),
|
|
331
|
-
/* @__PURE__ */ jsxs("
|
|
332
|
-
className: "card-subtle p-4",
|
|
97
|
+
/* @__PURE__ */ jsxs("li", {
|
|
333
98
|
children: [
|
|
334
|
-
/* @__PURE__ */ jsx("
|
|
335
|
-
className: "
|
|
336
|
-
children: "
|
|
99
|
+
/* @__PURE__ */ jsx("code", {
|
|
100
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
101
|
+
children: "useReducedMotion"
|
|
337
102
|
}),
|
|
338
|
-
|
|
339
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
340
|
-
children: "Structured logging optimized for Bun with Elysia integration"
|
|
341
|
-
})
|
|
103
|
+
": Detect if the user prefers reduced motion"
|
|
342
104
|
]
|
|
343
105
|
})
|
|
344
106
|
]
|
|
@@ -349,52 +111,32 @@ function LibrariesOverviewPage() {
|
|
|
349
111
|
className: "space-y-4",
|
|
350
112
|
children: [
|
|
351
113
|
/* @__PURE__ */ jsx("h2", {
|
|
352
|
-
className: "text-2xl
|
|
353
|
-
children: "
|
|
114
|
+
className: "font-bold text-2xl",
|
|
115
|
+
children: "Example: App Setup"
|
|
354
116
|
}),
|
|
355
|
-
/* @__PURE__ */
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
/* @__PURE__ */ jsx("p", {
|
|
379
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
380
|
-
children: "Prisma integration for Pothos schemas"
|
|
381
|
-
})
|
|
382
|
-
]
|
|
383
|
-
}),
|
|
384
|
-
/* @__PURE__ */ jsxs("div", {
|
|
385
|
-
className: "card-subtle p-4",
|
|
386
|
-
children: [
|
|
387
|
-
/* @__PURE__ */ jsx("h3", {
|
|
388
|
-
className: "font-semibold",
|
|
389
|
-
children: "@contractspec/lib.graphql-federation"
|
|
390
|
-
}),
|
|
391
|
-
/* @__PURE__ */ jsx("p", {
|
|
392
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
393
|
-
children: "Apollo Federation support for Pothos"
|
|
394
|
-
})
|
|
395
|
-
]
|
|
396
|
-
})
|
|
397
|
-
]
|
|
117
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
118
|
+
language: "tsx",
|
|
119
|
+
code: `import {
|
|
120
|
+
SRLiveRegionProvider,
|
|
121
|
+
RouteAnnouncer,
|
|
122
|
+
SkipLink
|
|
123
|
+
} from '@contractspec/lib.accessibility';
|
|
124
|
+
|
|
125
|
+
export function RootLayout({ children }) {
|
|
126
|
+
return (
|
|
127
|
+
<html lang="en">
|
|
128
|
+
<body>
|
|
129
|
+
<SRLiveRegionProvider>
|
|
130
|
+
<SkipLink />
|
|
131
|
+
<RouteAnnouncer />
|
|
132
|
+
<main id="main-content">
|
|
133
|
+
{children}
|
|
134
|
+
</main>
|
|
135
|
+
</SRLiveRegionProvider>
|
|
136
|
+
</body>
|
|
137
|
+
</html>
|
|
138
|
+
);
|
|
139
|
+
}`
|
|
398
140
|
})
|
|
399
141
|
]
|
|
400
142
|
}),
|
|
@@ -402,55 +144,57 @@ function LibrariesOverviewPage() {
|
|
|
402
144
|
className: "space-y-4",
|
|
403
145
|
children: [
|
|
404
146
|
/* @__PURE__ */ jsx("h2", {
|
|
405
|
-
className: "text-2xl
|
|
406
|
-
children: "
|
|
147
|
+
className: "font-bold text-2xl",
|
|
148
|
+
children: "Example: Live Announcements"
|
|
407
149
|
}),
|
|
408
|
-
/* @__PURE__ */ jsx(
|
|
150
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
151
|
+
language: "tsx",
|
|
152
|
+
code: `import { useSRLiveRegion } from '@contractspec/lib.accessibility';
|
|
153
|
+
|
|
154
|
+
export function TodoList() {
|
|
155
|
+
const { announce } = useSRLiveRegion();
|
|
156
|
+
|
|
157
|
+
const addTodo = () => {
|
|
158
|
+
// ... add logic
|
|
159
|
+
announce('Todo added successfully', 'polite');
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
return <button onClick={addTodo}>Add Todo</button>;
|
|
163
|
+
}`
|
|
164
|
+
})
|
|
165
|
+
]
|
|
166
|
+
}),
|
|
167
|
+
/* @__PURE__ */ jsxs("div", {
|
|
168
|
+
className: "space-y-4",
|
|
169
|
+
children: [
|
|
170
|
+
/* @__PURE__ */ jsx("h2", {
|
|
171
|
+
className: "font-bold text-2xl",
|
|
172
|
+
children: "WCAG Compliance"
|
|
173
|
+
}),
|
|
174
|
+
/* @__PURE__ */ jsxs("p", {
|
|
409
175
|
className: "text-muted-foreground",
|
|
410
|
-
children:
|
|
176
|
+
children: [
|
|
177
|
+
"These components map directly to WCAG 2.1 Level AA requirements documented in ",
|
|
178
|
+
/* @__PURE__ */ jsx("code", {
|
|
179
|
+
children: "docs/accessibility_wcag_compliance_specs.md"
|
|
180
|
+
}),
|
|
181
|
+
":"
|
|
182
|
+
]
|
|
411
183
|
}),
|
|
412
184
|
/* @__PURE__ */ jsxs("ul", {
|
|
413
|
-
className: "
|
|
185
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
414
186
|
children: [
|
|
415
|
-
/* @__PURE__ */
|
|
416
|
-
children:
|
|
417
|
-
/* @__PURE__ */ jsx("strong", {
|
|
418
|
-
children: "Type Safety First"
|
|
419
|
-
}),
|
|
420
|
-
": Full TypeScript support with strict types."
|
|
421
|
-
]
|
|
422
|
-
}),
|
|
423
|
-
/* @__PURE__ */ jsxs("li", {
|
|
424
|
-
children: [
|
|
425
|
-
/* @__PURE__ */ jsx("strong", {
|
|
426
|
-
children: "Modular"
|
|
427
|
-
}),
|
|
428
|
-
": Use only what you need, tree-shake the rest."
|
|
429
|
-
]
|
|
187
|
+
/* @__PURE__ */ jsx("li", {
|
|
188
|
+
children: "2.4.1 Bypass Blocks (SkipLink)"
|
|
430
189
|
}),
|
|
431
|
-
/* @__PURE__ */
|
|
432
|
-
children:
|
|
433
|
-
/* @__PURE__ */ jsx("strong", {
|
|
434
|
-
children: "Platform Aware"
|
|
435
|
-
}),
|
|
436
|
-
": Optimized for both Web and Native where applicable."
|
|
437
|
-
]
|
|
190
|
+
/* @__PURE__ */ jsx("li", {
|
|
191
|
+
children: "4.1.3 Status Messages (LiveRegion)"
|
|
438
192
|
}),
|
|
439
|
-
/* @__PURE__ */
|
|
440
|
-
children:
|
|
441
|
-
/* @__PURE__ */ jsx("strong", {
|
|
442
|
-
children: "Single Source of Truth"
|
|
443
|
-
}),
|
|
444
|
-
": Avoid duplication between layers (REST, GraphQL, Zod)."
|
|
445
|
-
]
|
|
193
|
+
/* @__PURE__ */ jsx("li", {
|
|
194
|
+
children: "2.4.3 Focus Order (FocusOnRouteChange)"
|
|
446
195
|
}),
|
|
447
|
-
/* @__PURE__ */
|
|
448
|
-
children:
|
|
449
|
-
/* @__PURE__ */ jsx("strong", {
|
|
450
|
-
children: "Developer Experience"
|
|
451
|
-
}),
|
|
452
|
-
": Clear APIs, comprehensive docs, and helpful error messages."
|
|
453
|
-
]
|
|
196
|
+
/* @__PURE__ */ jsx("li", {
|
|
197
|
+
children: "2.3.3 Animation from Interactions (useReducedMotion)"
|
|
454
198
|
})
|
|
455
199
|
]
|
|
456
200
|
})
|
|
@@ -459,20 +203,20 @@ function LibrariesOverviewPage() {
|
|
|
459
203
|
/* @__PURE__ */ jsxs("div", {
|
|
460
204
|
className: "flex items-center gap-4 pt-4",
|
|
461
205
|
children: [
|
|
206
|
+
/* @__PURE__ */ jsx(Link, {
|
|
207
|
+
href: "/docs/libraries/design-system",
|
|
208
|
+
className: "btn-ghost",
|
|
209
|
+
children: "Previous: Design System"
|
|
210
|
+
}),
|
|
462
211
|
/* @__PURE__ */ jsxs(Link, {
|
|
463
|
-
href: "/docs/libraries
|
|
212
|
+
href: "/docs/libraries",
|
|
464
213
|
className: "btn-primary",
|
|
465
214
|
children: [
|
|
466
|
-
"
|
|
215
|
+
"Back to Libraries ",
|
|
467
216
|
/* @__PURE__ */ jsx(ChevronRight, {
|
|
468
217
|
size: 16
|
|
469
218
|
})
|
|
470
219
|
]
|
|
471
|
-
}),
|
|
472
|
-
/* @__PURE__ */ jsx(Link, {
|
|
473
|
-
href: "/docs/getting-started",
|
|
474
|
-
className: "btn-ghost",
|
|
475
|
-
children: "Getting Started"
|
|
476
220
|
})
|
|
477
221
|
]
|
|
478
222
|
})
|
|
@@ -480,12 +224,12 @@ function LibrariesOverviewPage() {
|
|
|
480
224
|
});
|
|
481
225
|
}
|
|
482
226
|
|
|
483
|
-
// src/components/docs/libraries/
|
|
227
|
+
// src/components/docs/libraries/LibrariesAiAgentPage.tsx
|
|
228
|
+
import { CodeBlock as CodeBlock2, InstallCommand as InstallCommand2 } from "@contractspec/lib.design-system";
|
|
484
229
|
import Link2 from "@contractspec/lib.ui-link";
|
|
485
230
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
486
|
-
import { CodeBlock, InstallCommand } from "@contractspec/lib.design-system";
|
|
487
231
|
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
488
|
-
function
|
|
232
|
+
function LibrariesAiAgentPage() {
|
|
489
233
|
return /* @__PURE__ */ jsxs2("div", {
|
|
490
234
|
className: "space-y-8",
|
|
491
235
|
children: [
|
|
@@ -493,12 +237,12 @@ function LibrariesContractsPage() {
|
|
|
493
237
|
className: "space-y-4",
|
|
494
238
|
children: [
|
|
495
239
|
/* @__PURE__ */ jsx2("h1", {
|
|
496
|
-
className: "text-4xl
|
|
497
|
-
children: "@contractspec/lib.
|
|
240
|
+
className: "font-bold text-4xl",
|
|
241
|
+
children: "@contractspec/lib.ai-agent"
|
|
498
242
|
}),
|
|
499
243
|
/* @__PURE__ */ jsx2("p", {
|
|
500
|
-
className: "text-muted-foreground
|
|
501
|
-
children: "
|
|
244
|
+
className: "text-lg text-muted-foreground",
|
|
245
|
+
children: "Define AI agents in TypeScript, run them with deterministic tool calling, capture working memory, and route low-confidence decisions to human reviewers."
|
|
502
246
|
})
|
|
503
247
|
]
|
|
504
248
|
}),
|
|
@@ -506,253 +250,116 @@ function LibrariesContractsPage() {
|
|
|
506
250
|
className: "space-y-4",
|
|
507
251
|
children: [
|
|
508
252
|
/* @__PURE__ */ jsx2("h2", {
|
|
509
|
-
className: "text-2xl
|
|
253
|
+
className: "font-bold text-2xl",
|
|
510
254
|
children: "Installation"
|
|
511
255
|
}),
|
|
512
|
-
/* @__PURE__ */ jsx2(
|
|
513
|
-
package:
|
|
514
|
-
"@contractspec/lib.contracts-spec",
|
|
515
|
-
"@contractspec/lib.schema"
|
|
516
|
-
]
|
|
256
|
+
/* @__PURE__ */ jsx2(InstallCommand2, {
|
|
257
|
+
package: "@contractspec/lib.ai-agent"
|
|
517
258
|
})
|
|
518
259
|
]
|
|
519
260
|
}),
|
|
520
261
|
/* @__PURE__ */ jsxs2("div", {
|
|
521
|
-
className: "space-y-
|
|
262
|
+
className: "space-y-3",
|
|
522
263
|
children: [
|
|
523
264
|
/* @__PURE__ */ jsx2("h2", {
|
|
524
|
-
className: "text-2xl
|
|
525
|
-
children: "
|
|
265
|
+
className: "font-bold text-2xl",
|
|
266
|
+
children: "Define & register"
|
|
526
267
|
}),
|
|
527
|
-
/* @__PURE__ */
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
}),
|
|
543
|
-
": Browser-safe helpers (React renderers, client SDK). Import this for web/React Native."
|
|
544
|
-
]
|
|
545
|
-
}),
|
|
546
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
547
|
-
children: [
|
|
548
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
549
|
-
children: "@contractspec/lib.contracts-runtime-server-rest"
|
|
550
|
-
}),
|
|
551
|
-
": HTTP/MCP adapters, registries, integrations (Node-only)."
|
|
552
|
-
]
|
|
553
|
-
}),
|
|
554
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
555
|
-
children: [
|
|
556
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
557
|
-
children: "@contractspec/lib.schema"
|
|
558
|
-
}),
|
|
559
|
-
": Schema dictionary (SchemaModel, FieldType) for I/O definitions."
|
|
560
|
-
]
|
|
561
|
-
})
|
|
562
|
-
]
|
|
268
|
+
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
269
|
+
language: "typescript",
|
|
270
|
+
code: `import { defineAgent, AgentRegistry } from '@contractspec/lib.ai-agent';
|
|
271
|
+
|
|
272
|
+
const SupportBot = defineAgent({
|
|
273
|
+
meta: { name: 'support.bot', version: '1.0.0' },
|
|
274
|
+
instructions: 'Resolve tickets. Escalate when confidence < 0.75.',
|
|
275
|
+
tools: [{ name: 'support_resolve_ticket' }],
|
|
276
|
+
policy: {
|
|
277
|
+
confidence: { min: 0.7, default: 0.6 },
|
|
278
|
+
escalation: { confidenceThreshold: 0.75 },
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
const registry = new AgentRegistry().register(SupportBot);`
|
|
563
283
|
})
|
|
564
284
|
]
|
|
565
285
|
}),
|
|
566
286
|
/* @__PURE__ */ jsxs2("div", {
|
|
567
|
-
className: "space-y-
|
|
287
|
+
className: "space-y-3",
|
|
568
288
|
children: [
|
|
569
289
|
/* @__PURE__ */ jsx2("h2", {
|
|
570
|
-
className: "text-2xl
|
|
571
|
-
children: "
|
|
290
|
+
className: "font-bold text-2xl",
|
|
291
|
+
children: "Run with approvals"
|
|
572
292
|
}),
|
|
573
|
-
/* @__PURE__ */ jsx2(
|
|
293
|
+
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
574
294
|
language: "typescript",
|
|
575
|
-
code: `import {
|
|
576
|
-
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
295
|
+
code: `import { AgentRunner, ToolExecutor, ApprovalWorkflow } from '@contractspec/lib.ai-agent';
|
|
577
296
|
|
|
578
|
-
const
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
},
|
|
297
|
+
const runner = new AgentRunner({
|
|
298
|
+
registry,
|
|
299
|
+
llm: mistralProvider,
|
|
300
|
+
toolExecutor: new ToolExecutor({ tools: supportTools }),
|
|
301
|
+
approvalWorkflow: new ApprovalWorkflow(),
|
|
584
302
|
});
|
|
585
303
|
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
description: 'Create a new user account',
|
|
591
|
-
},
|
|
592
|
-
io: {
|
|
593
|
-
input: CreateUserInput,
|
|
594
|
-
output: /* ... */,
|
|
595
|
-
},
|
|
596
|
-
policy: { auth: 'admin' },
|
|
597
|
-
});`
|
|
304
|
+
const result = await runner.run({ agent: 'support.bot', input: ticket.body });
|
|
305
|
+
if (result.approvalRequestId) {
|
|
306
|
+
// show in ApprovalQueue UI
|
|
307
|
+
}`
|
|
598
308
|
})
|
|
599
309
|
]
|
|
600
310
|
}),
|
|
601
311
|
/* @__PURE__ */ jsxs2("div", {
|
|
602
|
-
className: "space-y-
|
|
312
|
+
className: "space-y-3",
|
|
603
313
|
children: [
|
|
604
314
|
/* @__PURE__ */ jsx2("h2", {
|
|
605
|
-
className: "text-2xl
|
|
606
|
-
children: "
|
|
315
|
+
className: "font-bold text-2xl",
|
|
316
|
+
children: "What's inside"
|
|
607
317
|
}),
|
|
608
318
|
/* @__PURE__ */ jsxs2("ul", {
|
|
609
|
-
className: "
|
|
319
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
610
320
|
children: [
|
|
611
321
|
/* @__PURE__ */ jsxs2("li", {
|
|
612
322
|
children: [
|
|
613
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
614
|
-
children: "OperationSpec"
|
|
615
|
-
}),
|
|
616
|
-
": Immutable description of an operation (Command or Query). Defines I/O, policy, and metadata."
|
|
617
|
-
]
|
|
618
|
-
}),
|
|
619
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
620
|
-
children: [
|
|
621
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
622
|
-
children: "OperationSpecRegistry"
|
|
623
|
-
}),
|
|
624
|
-
": Registry of specs + handlers. Use ",
|
|
625
323
|
/* @__PURE__ */ jsx2("code", {
|
|
626
|
-
|
|
627
|
-
children: "installOp"
|
|
628
|
-
}),
|
|
629
|
-
" ",
|
|
630
|
-
"to attach a handler."
|
|
631
|
-
]
|
|
632
|
-
}),
|
|
633
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
634
|
-
children: [
|
|
635
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
636
|
-
children: "CapabilitySpec"
|
|
637
|
-
}),
|
|
638
|
-
": Canonical capability declaration (requires/provides)."
|
|
639
|
-
]
|
|
640
|
-
}),
|
|
641
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
642
|
-
children: [
|
|
643
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
644
|
-
children: "PolicySpec"
|
|
645
|
-
}),
|
|
646
|
-
": Declarative policy rules (ABAC/ReBAC, rate limits)."
|
|
647
|
-
]
|
|
648
|
-
}),
|
|
649
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
650
|
-
children: [
|
|
651
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
652
|
-
children: "TelemetrySpec"
|
|
653
|
-
}),
|
|
654
|
-
": Analytics definitions and privacy levels."
|
|
655
|
-
]
|
|
656
|
-
}),
|
|
657
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
658
|
-
children: [
|
|
659
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
660
|
-
children: "PresentationSpec (V2)"
|
|
661
|
-
}),
|
|
662
|
-
": Describes how data is rendered (Web Components, Markdown, Data)."
|
|
663
|
-
]
|
|
664
|
-
})
|
|
665
|
-
]
|
|
666
|
-
})
|
|
667
|
-
]
|
|
668
|
-
}),
|
|
669
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
670
|
-
className: "space-y-4",
|
|
671
|
-
children: [
|
|
672
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
673
|
-
className: "text-2xl font-bold",
|
|
674
|
-
children: "Lifecycle"
|
|
675
|
-
}),
|
|
676
|
-
/* @__PURE__ */ jsxs2("ol", {
|
|
677
|
-
className: "text-muted-foreground list-inside list-decimal space-y-2",
|
|
678
|
-
children: [
|
|
679
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
680
|
-
children: [
|
|
681
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
682
|
-
children: "Define"
|
|
324
|
+
children: "defineAgent"
|
|
683
325
|
}),
|
|
684
|
-
"
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
688
|
-
children: [
|
|
689
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
690
|
-
children: "Register"
|
|
326
|
+
", ",
|
|
327
|
+
/* @__PURE__ */ jsx2("code", {
|
|
328
|
+
children: "AgentRegistry"
|
|
691
329
|
}),
|
|
692
|
-
"
|
|
330
|
+
",",
|
|
693
331
|
" ",
|
|
694
332
|
/* @__PURE__ */ jsx2("code", {
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
}),
|
|
698
|
-
"."
|
|
333
|
+
children: "AgentRunner"
|
|
334
|
+
})
|
|
699
335
|
]
|
|
700
336
|
}),
|
|
701
337
|
/* @__PURE__ */ jsxs2("li", {
|
|
702
338
|
children: [
|
|
703
|
-
/* @__PURE__ */ jsx2("
|
|
704
|
-
children: "
|
|
339
|
+
/* @__PURE__ */ jsx2("code", {
|
|
340
|
+
children: "ToolExecutor"
|
|
705
341
|
}),
|
|
706
|
-
"
|
|
342
|
+
" with schema-enforced tool definitions"
|
|
707
343
|
]
|
|
708
344
|
}),
|
|
709
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
710
|
-
children: [
|
|
711
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
712
|
-
children: "Validate"
|
|
713
|
-
}),
|
|
714
|
-
" at runtime automatically."
|
|
715
|
-
]
|
|
716
|
-
})
|
|
717
|
-
]
|
|
718
|
-
})
|
|
719
|
-
]
|
|
720
|
-
}),
|
|
721
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
722
|
-
className: "space-y-4",
|
|
723
|
-
children: [
|
|
724
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
725
|
-
className: "text-2xl font-bold",
|
|
726
|
-
children: "Adapters"
|
|
727
|
-
}),
|
|
728
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
729
|
-
className: "text-muted-foreground space-y-2",
|
|
730
|
-
children: [
|
|
731
345
|
/* @__PURE__ */ jsxs2("li", {
|
|
732
346
|
children: [
|
|
733
347
|
/* @__PURE__ */ jsx2("code", {
|
|
734
|
-
|
|
735
|
-
children: "server/rest-next-app"
|
|
348
|
+
children: "InMemoryAgentMemory"
|
|
736
349
|
}),
|
|
737
|
-
"
|
|
350
|
+
" plus interfaces for custom stores"
|
|
738
351
|
]
|
|
739
352
|
}),
|
|
740
353
|
/* @__PURE__ */ jsxs2("li", {
|
|
741
354
|
children: [
|
|
742
355
|
/* @__PURE__ */ jsx2("code", {
|
|
743
|
-
|
|
744
|
-
children: "server/provider-mcp"
|
|
356
|
+
children: "ApprovalWorkflow"
|
|
745
357
|
}),
|
|
746
|
-
"
|
|
747
|
-
]
|
|
748
|
-
}),
|
|
749
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
750
|
-
children: [
|
|
358
|
+
" + ",
|
|
751
359
|
/* @__PURE__ */ jsx2("code", {
|
|
752
|
-
|
|
753
|
-
children: "server/graphql-pothos"
|
|
360
|
+
children: "ApprovalStore"
|
|
754
361
|
}),
|
|
755
|
-
"
|
|
362
|
+
" for human-in-the-loop reviews"
|
|
756
363
|
]
|
|
757
364
|
})
|
|
758
365
|
]
|
|
@@ -762,20 +369,20 @@ export const CreateUser = defineCommand({
|
|
|
762
369
|
/* @__PURE__ */ jsxs2("div", {
|
|
763
370
|
className: "flex items-center gap-4 pt-4",
|
|
764
371
|
children: [
|
|
372
|
+
/* @__PURE__ */ jsx2(Link2, {
|
|
373
|
+
href: "/docs/libraries",
|
|
374
|
+
className: "btn-ghost",
|
|
375
|
+
children: "Back to Libraries"
|
|
376
|
+
}),
|
|
765
377
|
/* @__PURE__ */ jsxs2(Link2, {
|
|
766
|
-
href: "/docs/libraries/
|
|
378
|
+
href: "/docs/libraries/support-bot",
|
|
767
379
|
className: "btn-primary",
|
|
768
380
|
children: [
|
|
769
|
-
"Next:
|
|
381
|
+
"Next: Support Bot ",
|
|
770
382
|
/* @__PURE__ */ jsx2(ChevronRight2, {
|
|
771
383
|
size: 16
|
|
772
384
|
})
|
|
773
385
|
]
|
|
774
|
-
}),
|
|
775
|
-
/* @__PURE__ */ jsx2(Link2, {
|
|
776
|
-
href: "/docs/specs/capabilities",
|
|
777
|
-
className: "btn-ghost",
|
|
778
|
-
children: "Core Concepts"
|
|
779
386
|
})
|
|
780
387
|
]
|
|
781
388
|
})
|
|
@@ -783,12 +390,10 @@ export const CreateUser = defineCommand({
|
|
|
783
390
|
});
|
|
784
391
|
}
|
|
785
392
|
|
|
786
|
-
// src/components/docs/libraries/
|
|
787
|
-
import
|
|
788
|
-
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
789
|
-
import { CodeBlock as CodeBlock2, InstallCommand as InstallCommand2 } from "@contractspec/lib.design-system";
|
|
393
|
+
// src/components/docs/libraries/LibrariesAnalyticsPage.tsx
|
|
394
|
+
import { CodeBlock as CodeBlock3, InstallCommand as InstallCommand3 } from "@contractspec/lib.design-system";
|
|
790
395
|
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
791
|
-
function
|
|
396
|
+
function LibrariesAnalyticsPage() {
|
|
792
397
|
return /* @__PURE__ */ jsxs3("div", {
|
|
793
398
|
className: "space-y-8",
|
|
794
399
|
children: [
|
|
@@ -796,12 +401,12 @@ function LibrariesAiAgentPage() {
|
|
|
796
401
|
className: "space-y-4",
|
|
797
402
|
children: [
|
|
798
403
|
/* @__PURE__ */ jsx3("h1", {
|
|
799
|
-
className: "text-4xl
|
|
800
|
-
children: "@contractspec/lib.
|
|
404
|
+
className: "font-bold text-4xl",
|
|
405
|
+
children: "@contractspec/lib.analytics"
|
|
801
406
|
}),
|
|
802
407
|
/* @__PURE__ */ jsx3("p", {
|
|
803
|
-
className: "text-muted-foreground
|
|
804
|
-
children: "
|
|
408
|
+
className: "text-lg text-muted-foreground",
|
|
409
|
+
children: "Work directly with telemetry events to understand conversion, retention, churn, and growth opportunities."
|
|
805
410
|
})
|
|
806
411
|
]
|
|
807
412
|
}),
|
|
@@ -809,11 +414,11 @@ function LibrariesAiAgentPage() {
|
|
|
809
414
|
className: "space-y-4",
|
|
810
415
|
children: [
|
|
811
416
|
/* @__PURE__ */ jsx3("h2", {
|
|
812
|
-
className: "text-2xl
|
|
417
|
+
className: "font-bold text-2xl",
|
|
813
418
|
children: "Installation"
|
|
814
419
|
}),
|
|
815
|
-
/* @__PURE__ */ jsx3(
|
|
816
|
-
package: "@contractspec/lib.
|
|
420
|
+
/* @__PURE__ */ jsx3(InstallCommand3, {
|
|
421
|
+
package: "@contractspec/lib.analytics"
|
|
817
422
|
})
|
|
818
423
|
]
|
|
819
424
|
}),
|
|
@@ -821,24 +426,22 @@ function LibrariesAiAgentPage() {
|
|
|
821
426
|
className: "space-y-3",
|
|
822
427
|
children: [
|
|
823
428
|
/* @__PURE__ */ jsx3("h2", {
|
|
824
|
-
className: "text-2xl
|
|
825
|
-
children: "
|
|
429
|
+
className: "font-bold text-2xl",
|
|
430
|
+
children: "Funnels in memory"
|
|
826
431
|
}),
|
|
827
|
-
/* @__PURE__ */ jsx3(
|
|
432
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
828
433
|
language: "typescript",
|
|
829
|
-
code: `import {
|
|
830
|
-
|
|
831
|
-
const SupportBot = defineAgent({
|
|
832
|
-
meta: { name: 'support.bot', version: '1.0.0' },
|
|
833
|
-
instructions: 'Resolve tickets. Escalate when confidence < 0.75.',
|
|
834
|
-
tools: [{ name: 'support_resolve_ticket' }],
|
|
835
|
-
policy: {
|
|
836
|
-
confidence: { min: 0.7, default: 0.6 },
|
|
837
|
-
escalation: { confidenceThreshold: 0.75 },
|
|
838
|
-
},
|
|
839
|
-
});
|
|
434
|
+
code: `import { FunnelAnalyzer } from '@contractspec/lib.analytics/funnel';
|
|
840
435
|
|
|
841
|
-
const
|
|
436
|
+
const analyzer = new FunnelAnalyzer();
|
|
437
|
+
const report = analyzer.analyze(events, {
|
|
438
|
+
name: 'signup',
|
|
439
|
+
steps: [
|
|
440
|
+
{ id: 'view', eventName: 'page.view', match: (e) => e.properties?.slug === '/signup' },
|
|
441
|
+
{ id: 'submit', eventName: 'signup.submit' },
|
|
442
|
+
{ id: 'verified', eventName: 'account.verified' },
|
|
443
|
+
],
|
|
444
|
+
});`
|
|
842
445
|
})
|
|
843
446
|
]
|
|
844
447
|
}),
|
|
@@ -846,24 +449,16 @@ const registry = new AgentRegistry().register(SupportBot);`
|
|
|
846
449
|
className: "space-y-3",
|
|
847
450
|
children: [
|
|
848
451
|
/* @__PURE__ */ jsx3("h2", {
|
|
849
|
-
className: "text-2xl
|
|
850
|
-
children: "
|
|
452
|
+
className: "font-bold text-2xl",
|
|
453
|
+
children: "Cohorts & churn"
|
|
851
454
|
}),
|
|
852
|
-
/* @__PURE__ */ jsx3(
|
|
455
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
853
456
|
language: "typescript",
|
|
854
|
-
code: `import {
|
|
855
|
-
|
|
856
|
-
const runner = new AgentRunner({
|
|
857
|
-
registry,
|
|
858
|
-
llm: mistralProvider,
|
|
859
|
-
toolExecutor: new ToolExecutor({ tools: supportTools }),
|
|
860
|
-
approvalWorkflow: new ApprovalWorkflow(),
|
|
861
|
-
});
|
|
457
|
+
code: `import { CohortTracker } from '@contractspec/lib.analytics/cohort';
|
|
458
|
+
import { ChurnPredictor } from '@contractspec/lib.analytics/churn';
|
|
862
459
|
|
|
863
|
-
const
|
|
864
|
-
|
|
865
|
-
// show in ApprovalQueue UI
|
|
866
|
-
}`
|
|
460
|
+
const cohorts = new CohortTracker().analyze(events, { bucket: 'week', periods: 8 });
|
|
461
|
+
const churn = new ChurnPredictor().score(events);`
|
|
867
462
|
})
|
|
868
463
|
]
|
|
869
464
|
}),
|
|
@@ -871,77 +466,17 @@ if (result.approvalRequestId) {
|
|
|
871
466
|
className: "space-y-3",
|
|
872
467
|
children: [
|
|
873
468
|
/* @__PURE__ */ jsx3("h2", {
|
|
874
|
-
className: "text-2xl
|
|
875
|
-
children: "
|
|
876
|
-
}),
|
|
877
|
-
/* @__PURE__ */ jsxs3("ul", {
|
|
878
|
-
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
879
|
-
children: [
|
|
880
|
-
/* @__PURE__ */ jsxs3("li", {
|
|
881
|
-
children: [
|
|
882
|
-
/* @__PURE__ */ jsx3("code", {
|
|
883
|
-
children: "defineAgent"
|
|
884
|
-
}),
|
|
885
|
-
", ",
|
|
886
|
-
/* @__PURE__ */ jsx3("code", {
|
|
887
|
-
children: "AgentRegistry"
|
|
888
|
-
}),
|
|
889
|
-
",",
|
|
890
|
-
" ",
|
|
891
|
-
/* @__PURE__ */ jsx3("code", {
|
|
892
|
-
children: "AgentRunner"
|
|
893
|
-
})
|
|
894
|
-
]
|
|
895
|
-
}),
|
|
896
|
-
/* @__PURE__ */ jsxs3("li", {
|
|
897
|
-
children: [
|
|
898
|
-
/* @__PURE__ */ jsx3("code", {
|
|
899
|
-
children: "ToolExecutor"
|
|
900
|
-
}),
|
|
901
|
-
" with schema-enforced tool definitions"
|
|
902
|
-
]
|
|
903
|
-
}),
|
|
904
|
-
/* @__PURE__ */ jsxs3("li", {
|
|
905
|
-
children: [
|
|
906
|
-
/* @__PURE__ */ jsx3("code", {
|
|
907
|
-
children: "InMemoryAgentMemory"
|
|
908
|
-
}),
|
|
909
|
-
" plus interfaces for custom stores"
|
|
910
|
-
]
|
|
911
|
-
}),
|
|
912
|
-
/* @__PURE__ */ jsxs3("li", {
|
|
913
|
-
children: [
|
|
914
|
-
/* @__PURE__ */ jsx3("code", {
|
|
915
|
-
children: "ApprovalWorkflow"
|
|
916
|
-
}),
|
|
917
|
-
" + ",
|
|
918
|
-
/* @__PURE__ */ jsx3("code", {
|
|
919
|
-
children: "ApprovalStore"
|
|
920
|
-
}),
|
|
921
|
-
" for human-in-the-loop reviews"
|
|
922
|
-
]
|
|
923
|
-
})
|
|
924
|
-
]
|
|
925
|
-
})
|
|
926
|
-
]
|
|
927
|
-
}),
|
|
928
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
929
|
-
className: "flex items-center gap-4 pt-4",
|
|
930
|
-
children: [
|
|
931
|
-
/* @__PURE__ */ jsx3(Link3, {
|
|
932
|
-
href: "/docs/libraries",
|
|
933
|
-
className: "btn-ghost",
|
|
934
|
-
children: "Back to Libraries"
|
|
469
|
+
className: "font-bold text-2xl",
|
|
470
|
+
children: "Growth hypotheses"
|
|
935
471
|
}),
|
|
936
|
-
/* @__PURE__ */
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
]
|
|
472
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
473
|
+
language: "typescript",
|
|
474
|
+
code: `import { GrowthHypothesisGenerator } from '@contractspec/lib.analytics/growth';
|
|
475
|
+
|
|
476
|
+
const ideas = new GrowthHypothesisGenerator().generate([
|
|
477
|
+
{ name: 'Activation rate', current: 0.42, previous: 0.55, target: 0.6 },
|
|
478
|
+
{ name: 'Expansion ARPU', current: 1.2, previous: 0.9 },
|
|
479
|
+
]);`
|
|
945
480
|
})
|
|
946
481
|
]
|
|
947
482
|
})
|
|
@@ -949,10 +484,12 @@ if (result.approvalRequestId) {
|
|
|
949
484
|
});
|
|
950
485
|
}
|
|
951
486
|
|
|
952
|
-
// src/components/docs/libraries/
|
|
953
|
-
import { CodeBlock as
|
|
487
|
+
// src/components/docs/libraries/LibrariesContentGenPage.tsx
|
|
488
|
+
import { CodeBlock as CodeBlock4, InstallCommand as InstallCommand4 } from "@contractspec/lib.design-system";
|
|
489
|
+
import Link3 from "@contractspec/lib.ui-link";
|
|
490
|
+
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
954
491
|
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
955
|
-
function
|
|
492
|
+
function LibrariesContentGenPage() {
|
|
956
493
|
return /* @__PURE__ */ jsxs4("div", {
|
|
957
494
|
className: "space-y-8",
|
|
958
495
|
children: [
|
|
@@ -960,12 +497,12 @@ function LibrariesAnalyticsPage() {
|
|
|
960
497
|
className: "space-y-4",
|
|
961
498
|
children: [
|
|
962
499
|
/* @__PURE__ */ jsx4("h1", {
|
|
963
|
-
className: "text-4xl
|
|
964
|
-
children: "@contractspec/lib.
|
|
500
|
+
className: "font-bold text-4xl",
|
|
501
|
+
children: "@contractspec/lib.content-gen"
|
|
965
502
|
}),
|
|
966
503
|
/* @__PURE__ */ jsx4("p", {
|
|
967
|
-
className: "text-muted-foreground
|
|
968
|
-
children: "
|
|
504
|
+
className: "text-lg text-muted-foreground",
|
|
505
|
+
children: "Feed a single ContentBrief and produce cohesive marketing assets without touching a CMS."
|
|
969
506
|
})
|
|
970
507
|
]
|
|
971
508
|
}),
|
|
@@ -973,11 +510,11 @@ function LibrariesAnalyticsPage() {
|
|
|
973
510
|
className: "space-y-4",
|
|
974
511
|
children: [
|
|
975
512
|
/* @__PURE__ */ jsx4("h2", {
|
|
976
|
-
className: "text-2xl
|
|
513
|
+
className: "font-bold text-2xl",
|
|
977
514
|
children: "Installation"
|
|
978
515
|
}),
|
|
979
|
-
/* @__PURE__ */ jsx4(
|
|
980
|
-
package: "@contractspec/lib.
|
|
516
|
+
/* @__PURE__ */ jsx4(InstallCommand4, {
|
|
517
|
+
package: "@contractspec/lib.content-gen"
|
|
981
518
|
})
|
|
982
519
|
]
|
|
983
520
|
}),
|
|
@@ -985,22 +522,32 @@ function LibrariesAnalyticsPage() {
|
|
|
985
522
|
className: "space-y-3",
|
|
986
523
|
children: [
|
|
987
524
|
/* @__PURE__ */ jsx4("h2", {
|
|
988
|
-
className: "text-2xl
|
|
989
|
-
children: "
|
|
525
|
+
className: "font-bold text-2xl",
|
|
526
|
+
children: "One brief, many assets"
|
|
990
527
|
}),
|
|
991
|
-
/* @__PURE__ */ jsx4(
|
|
528
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
992
529
|
language: "typescript",
|
|
993
|
-
code: `import {
|
|
530
|
+
code: `import {
|
|
531
|
+
BlogGenerator,
|
|
532
|
+
LandingPageGenerator,
|
|
533
|
+
EmailCampaignGenerator,
|
|
534
|
+
SocialPostGenerator,
|
|
535
|
+
} from '@contractspec/lib.content-gen/generators';
|
|
536
|
+
import { SeoOptimizer } from '@contractspec/lib.content-gen/seo';
|
|
994
537
|
|
|
995
|
-
const
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
538
|
+
const brief = {
|
|
539
|
+
title: 'AI Ops Copilot',
|
|
540
|
+
summary: 'Automates support + growth.',
|
|
541
|
+
problems: ['Support queues pile up', 'Growth teams lack experiments'],
|
|
542
|
+
solutions: ['AI agents', 'Approval queue', 'Analytics'],
|
|
543
|
+
audience: { role: 'COO', industry: 'Fintech' },
|
|
544
|
+
};
|
|
545
|
+
|
|
546
|
+
const blog = await new BlogGenerator().generate(brief);
|
|
547
|
+
const landing = await new LandingPageGenerator().generate(brief);
|
|
548
|
+
const email = await new EmailCampaignGenerator().generate({ brief, variant: 'announcement' });
|
|
549
|
+
const social = await new SocialPostGenerator().generate(brief);
|
|
550
|
+
const seo = new SeoOptimizer().optimize(brief);`
|
|
1004
551
|
})
|
|
1005
552
|
]
|
|
1006
553
|
}),
|
|
@@ -1008,34 +555,45 @@ const report = analyzer.analyze(events, {
|
|
|
1008
555
|
className: "space-y-3",
|
|
1009
556
|
children: [
|
|
1010
557
|
/* @__PURE__ */ jsx4("h2", {
|
|
1011
|
-
className: "text-2xl
|
|
1012
|
-
children: "
|
|
558
|
+
className: "font-bold text-2xl",
|
|
559
|
+
children: "When to use"
|
|
1013
560
|
}),
|
|
1014
|
-
/* @__PURE__ */
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
561
|
+
/* @__PURE__ */ jsxs4("ul", {
|
|
562
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
563
|
+
children: [
|
|
564
|
+
/* @__PURE__ */ jsx4("li", {
|
|
565
|
+
children: "Ship landing page refreshes whenever specs change."
|
|
566
|
+
}),
|
|
567
|
+
/* @__PURE__ */ jsx4("li", {
|
|
568
|
+
children: "Automate release emails + nurture sequences per vertical."
|
|
569
|
+
}),
|
|
570
|
+
/* @__PURE__ */ jsx4("li", {
|
|
571
|
+
children: "Create social snippets that stay on-message with the same brief."
|
|
572
|
+
}),
|
|
573
|
+
/* @__PURE__ */ jsx4("li", {
|
|
574
|
+
children: "Generate SEO metadata + Schema.org markup alongside content."
|
|
575
|
+
})
|
|
576
|
+
]
|
|
1021
577
|
})
|
|
1022
578
|
]
|
|
1023
579
|
}),
|
|
1024
580
|
/* @__PURE__ */ jsxs4("div", {
|
|
1025
|
-
className: "
|
|
581
|
+
className: "flex items-center gap-4 pt-4",
|
|
1026
582
|
children: [
|
|
1027
|
-
/* @__PURE__ */ jsx4(
|
|
1028
|
-
|
|
1029
|
-
|
|
583
|
+
/* @__PURE__ */ jsx4(Link3, {
|
|
584
|
+
href: "/docs/libraries",
|
|
585
|
+
className: "btn-ghost",
|
|
586
|
+
children: "Back to Libraries"
|
|
1030
587
|
}),
|
|
1031
|
-
/* @__PURE__ */
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
588
|
+
/* @__PURE__ */ jsxs4(Link3, {
|
|
589
|
+
href: "/docs/libraries/support-bot",
|
|
590
|
+
className: "btn-primary",
|
|
591
|
+
children: [
|
|
592
|
+
"Next: Support Bot ",
|
|
593
|
+
/* @__PURE__ */ jsx4(ChevronRight3, {
|
|
594
|
+
size: 16
|
|
595
|
+
})
|
|
596
|
+
]
|
|
1039
597
|
})
|
|
1040
598
|
]
|
|
1041
599
|
})
|
|
@@ -1043,12 +601,12 @@ const ideas = new GrowthHypothesisGenerator().generate([
|
|
|
1043
601
|
});
|
|
1044
602
|
}
|
|
1045
603
|
|
|
1046
|
-
// src/components/docs/libraries/
|
|
604
|
+
// src/components/docs/libraries/LibrariesContractsPage.tsx
|
|
605
|
+
import { CodeBlock as CodeBlock5, InstallCommand as InstallCommand5 } from "@contractspec/lib.design-system";
|
|
1047
606
|
import Link4 from "@contractspec/lib.ui-link";
|
|
1048
607
|
import { ChevronRight as ChevronRight4 } from "lucide-react";
|
|
1049
|
-
import { CodeBlock as CodeBlock4, InstallCommand as InstallCommand4 } from "@contractspec/lib.design-system";
|
|
1050
608
|
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1051
|
-
function
|
|
609
|
+
function LibrariesContractsPage() {
|
|
1052
610
|
return /* @__PURE__ */ jsxs5("div", {
|
|
1053
611
|
className: "space-y-8",
|
|
1054
612
|
children: [
|
|
@@ -1056,12 +614,12 @@ function LibrariesAccessibilityPage() {
|
|
|
1056
614
|
className: "space-y-4",
|
|
1057
615
|
children: [
|
|
1058
616
|
/* @__PURE__ */ jsx5("h1", {
|
|
1059
|
-
className: "text-4xl
|
|
1060
|
-
children: "@contractspec/lib.
|
|
617
|
+
className: "font-bold text-4xl",
|
|
618
|
+
children: "@contractspec/lib.contracts-spec"
|
|
1061
619
|
}),
|
|
1062
620
|
/* @__PURE__ */ jsx5("p", {
|
|
1063
|
-
className: "text-muted-foreground",
|
|
1064
|
-
children: "
|
|
621
|
+
className: "text-lg text-muted-foreground",
|
|
622
|
+
children: "The core library for defining what your application can do. Unified specifications for Operations, Events, Presentations, and Features."
|
|
1065
623
|
})
|
|
1066
624
|
]
|
|
1067
625
|
}),
|
|
@@ -1069,11 +627,14 @@ function LibrariesAccessibilityPage() {
|
|
|
1069
627
|
className: "space-y-4",
|
|
1070
628
|
children: [
|
|
1071
629
|
/* @__PURE__ */ jsx5("h2", {
|
|
1072
|
-
className: "text-2xl
|
|
630
|
+
className: "font-bold text-2xl",
|
|
1073
631
|
children: "Installation"
|
|
1074
632
|
}),
|
|
1075
|
-
/* @__PURE__ */ jsx5(
|
|
1076
|
-
package:
|
|
633
|
+
/* @__PURE__ */ jsx5(InstallCommand5, {
|
|
634
|
+
package: [
|
|
635
|
+
"@contractspec/lib.contracts-spec",
|
|
636
|
+
"@contractspec/lib.schema"
|
|
637
|
+
]
|
|
1077
638
|
})
|
|
1078
639
|
]
|
|
1079
640
|
}),
|
|
@@ -1081,70 +642,42 @@ function LibrariesAccessibilityPage() {
|
|
|
1081
642
|
className: "space-y-4",
|
|
1082
643
|
children: [
|
|
1083
644
|
/* @__PURE__ */ jsx5("h2", {
|
|
1084
|
-
className: "text-2xl
|
|
1085
|
-
children: "
|
|
645
|
+
className: "font-bold text-2xl",
|
|
646
|
+
children: "What lives where"
|
|
1086
647
|
}),
|
|
1087
648
|
/* @__PURE__ */ jsxs5("ul", {
|
|
1088
|
-
className: "
|
|
649
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1089
650
|
children: [
|
|
1090
651
|
/* @__PURE__ */ jsxs5("li", {
|
|
1091
652
|
children: [
|
|
1092
|
-
/* @__PURE__ */ jsx5("
|
|
1093
|
-
|
|
1094
|
-
children: "SkipLink"
|
|
1095
|
-
}),
|
|
1096
|
-
": A link to skip navigation, visible on focus"
|
|
1097
|
-
]
|
|
1098
|
-
}),
|
|
1099
|
-
/* @__PURE__ */ jsxs5("li", {
|
|
1100
|
-
children: [
|
|
1101
|
-
/* @__PURE__ */ jsx5("code", {
|
|
1102
|
-
className: "bg-background/50 rounded px-2 py-1",
|
|
1103
|
-
children: "VisuallyHidden"
|
|
1104
|
-
}),
|
|
1105
|
-
": Hide content visually but keep it for screen readers"
|
|
1106
|
-
]
|
|
1107
|
-
}),
|
|
1108
|
-
/* @__PURE__ */ jsxs5("li", {
|
|
1109
|
-
children: [
|
|
1110
|
-
/* @__PURE__ */ jsx5("code", {
|
|
1111
|
-
className: "bg-background/50 rounded px-2 py-1",
|
|
1112
|
-
children: "SRLiveRegionProvider"
|
|
1113
|
-
}),
|
|
1114
|
-
",",
|
|
1115
|
-
" ",
|
|
1116
|
-
/* @__PURE__ */ jsx5("code", {
|
|
1117
|
-
className: "bg-background/50 rounded px-2 py-1",
|
|
1118
|
-
children: "useSRLiveRegion"
|
|
653
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
654
|
+
children: "@contractspec/lib.contracts-spec"
|
|
1119
655
|
}),
|
|
1120
|
-
":
|
|
656
|
+
" (root): The core contracts definitions (OperationSpec, PresentationSpec, Registry)."
|
|
1121
657
|
]
|
|
1122
658
|
}),
|
|
1123
659
|
/* @__PURE__ */ jsxs5("li", {
|
|
1124
660
|
children: [
|
|
1125
|
-
/* @__PURE__ */ jsx5("
|
|
1126
|
-
|
|
1127
|
-
children: "RouteAnnouncer"
|
|
661
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
662
|
+
children: "@contractspec/lib.contracts-runtime-client-react"
|
|
1128
663
|
}),
|
|
1129
|
-
":
|
|
664
|
+
": Browser-safe helpers (React renderers, client SDK). Import this for web/React Native."
|
|
1130
665
|
]
|
|
1131
666
|
}),
|
|
1132
667
|
/* @__PURE__ */ jsxs5("li", {
|
|
1133
668
|
children: [
|
|
1134
|
-
/* @__PURE__ */ jsx5("
|
|
1135
|
-
|
|
1136
|
-
children: "FocusOnRouteChange"
|
|
669
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
670
|
+
children: "@contractspec/lib.contracts-runtime-server-rest"
|
|
1137
671
|
}),
|
|
1138
|
-
":
|
|
672
|
+
": HTTP/MCP adapters, registries, integrations (Node-only)."
|
|
1139
673
|
]
|
|
1140
674
|
}),
|
|
1141
675
|
/* @__PURE__ */ jsxs5("li", {
|
|
1142
676
|
children: [
|
|
1143
|
-
/* @__PURE__ */ jsx5("
|
|
1144
|
-
|
|
1145
|
-
children: "useReducedMotion"
|
|
677
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
678
|
+
children: "@contractspec/lib.schema"
|
|
1146
679
|
}),
|
|
1147
|
-
":
|
|
680
|
+
": Schema dictionary (SchemaModel, FieldType) for I/O definitions."
|
|
1148
681
|
]
|
|
1149
682
|
})
|
|
1150
683
|
]
|
|
@@ -1155,56 +688,34 @@ function LibrariesAccessibilityPage() {
|
|
|
1155
688
|
className: "space-y-4",
|
|
1156
689
|
children: [
|
|
1157
690
|
/* @__PURE__ */ jsx5("h2", {
|
|
1158
|
-
className: "text-2xl
|
|
1159
|
-
children: "Example
|
|
1160
|
-
}),
|
|
1161
|
-
/* @__PURE__ */ jsx5(CodeBlock4, {
|
|
1162
|
-
language: "tsx",
|
|
1163
|
-
code: `import {
|
|
1164
|
-
SRLiveRegionProvider,
|
|
1165
|
-
RouteAnnouncer,
|
|
1166
|
-
SkipLink
|
|
1167
|
-
} from '@contractspec/lib.accessibility';
|
|
1168
|
-
|
|
1169
|
-
export function RootLayout({ children }) {
|
|
1170
|
-
return (
|
|
1171
|
-
<html lang="en">
|
|
1172
|
-
<body>
|
|
1173
|
-
<SRLiveRegionProvider>
|
|
1174
|
-
<SkipLink />
|
|
1175
|
-
<RouteAnnouncer />
|
|
1176
|
-
<main id="main-content">
|
|
1177
|
-
{children}
|
|
1178
|
-
</main>
|
|
1179
|
-
</SRLiveRegionProvider>
|
|
1180
|
-
</body>
|
|
1181
|
-
</html>
|
|
1182
|
-
);
|
|
1183
|
-
}`
|
|
1184
|
-
})
|
|
1185
|
-
]
|
|
1186
|
-
}),
|
|
1187
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1188
|
-
className: "space-y-4",
|
|
1189
|
-
children: [
|
|
1190
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
1191
|
-
className: "text-2xl font-bold",
|
|
1192
|
-
children: "Example: Live Announcements"
|
|
691
|
+
className: "font-bold text-2xl",
|
|
692
|
+
children: "Quick Example"
|
|
1193
693
|
}),
|
|
1194
|
-
/* @__PURE__ */ jsx5(
|
|
1195
|
-
language: "
|
|
1196
|
-
code: `import {
|
|
1197
|
-
|
|
1198
|
-
export function TodoList() {
|
|
1199
|
-
const { announce } = useSRLiveRegion();
|
|
694
|
+
/* @__PURE__ */ jsx5(CodeBlock5, {
|
|
695
|
+
language: "typescript",
|
|
696
|
+
code: `import { defineCommand } from '@contractspec/lib.contracts-spec';
|
|
697
|
+
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
1200
698
|
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
699
|
+
const CreateUserInput = new SchemaModel({
|
|
700
|
+
name: 'CreateUserInput',
|
|
701
|
+
fields: {
|
|
702
|
+
email: { type: ScalarTypeEnum.Email(), isOptional: false },
|
|
703
|
+
name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
704
|
+
},
|
|
705
|
+
});
|
|
1205
706
|
|
|
1206
|
-
|
|
1207
|
-
|
|
707
|
+
export const CreateUser = defineCommand({
|
|
708
|
+
meta: {
|
|
709
|
+
key: 'users.createUser',
|
|
710
|
+
version: '1.0.0',
|
|
711
|
+
description: 'Create a new user account',
|
|
712
|
+
},
|
|
713
|
+
io: {
|
|
714
|
+
input: CreateUserInput,
|
|
715
|
+
output: /* ... */,
|
|
716
|
+
},
|
|
717
|
+
policy: { auth: 'admin' },
|
|
718
|
+
});`
|
|
1208
719
|
})
|
|
1209
720
|
]
|
|
1210
721
|
}),
|
|
@@ -1212,172 +723,180 @@ export function TodoList() {
|
|
|
1212
723
|
className: "space-y-4",
|
|
1213
724
|
children: [
|
|
1214
725
|
/* @__PURE__ */ jsx5("h2", {
|
|
1215
|
-
className: "text-2xl
|
|
1216
|
-
children: "
|
|
1217
|
-
}),
|
|
1218
|
-
/* @__PURE__ */ jsxs5("p", {
|
|
1219
|
-
className: "text-muted-foreground",
|
|
1220
|
-
children: [
|
|
1221
|
-
"These components map directly to WCAG 2.1 Level AA requirements documented in ",
|
|
1222
|
-
/* @__PURE__ */ jsx5("code", {
|
|
1223
|
-
children: "docs/accessibility_wcag_compliance_specs.md"
|
|
1224
|
-
}),
|
|
1225
|
-
":"
|
|
1226
|
-
]
|
|
726
|
+
className: "font-bold text-2xl",
|
|
727
|
+
children: "Core Concepts"
|
|
1227
728
|
}),
|
|
1228
729
|
/* @__PURE__ */ jsxs5("ul", {
|
|
1229
|
-
className: "
|
|
730
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1230
731
|
children: [
|
|
1231
|
-
/* @__PURE__ */
|
|
1232
|
-
children:
|
|
732
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
733
|
+
children: [
|
|
734
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
735
|
+
children: "OperationSpec"
|
|
736
|
+
}),
|
|
737
|
+
": Immutable description of an operation (Command or Query). Defines I/O, policy, and metadata."
|
|
738
|
+
]
|
|
1233
739
|
}),
|
|
1234
|
-
/* @__PURE__ */
|
|
1235
|
-
children:
|
|
740
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
741
|
+
children: [
|
|
742
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
743
|
+
children: "OperationSpecRegistry"
|
|
744
|
+
}),
|
|
745
|
+
": Registry of specs + handlers. Use ",
|
|
746
|
+
/* @__PURE__ */ jsx5("code", {
|
|
747
|
+
className: "font-mono text-xs",
|
|
748
|
+
children: "installOp"
|
|
749
|
+
}),
|
|
750
|
+
" ",
|
|
751
|
+
"to attach a handler."
|
|
752
|
+
]
|
|
1236
753
|
}),
|
|
1237
|
-
/* @__PURE__ */
|
|
1238
|
-
children:
|
|
754
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
755
|
+
children: [
|
|
756
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
757
|
+
children: "CapabilitySpec"
|
|
758
|
+
}),
|
|
759
|
+
": Canonical capability declaration (requires/provides)."
|
|
760
|
+
]
|
|
1239
761
|
}),
|
|
1240
|
-
/* @__PURE__ */
|
|
1241
|
-
children:
|
|
762
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
763
|
+
children: [
|
|
764
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
765
|
+
children: "PolicySpec"
|
|
766
|
+
}),
|
|
767
|
+
": Declarative policy rules (ABAC/ReBAC, rate limits)."
|
|
768
|
+
]
|
|
769
|
+
}),
|
|
770
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
771
|
+
children: [
|
|
772
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
773
|
+
children: "TelemetrySpec"
|
|
774
|
+
}),
|
|
775
|
+
": Analytics definitions and privacy levels."
|
|
776
|
+
]
|
|
777
|
+
}),
|
|
778
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
779
|
+
children: [
|
|
780
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
781
|
+
children: "PresentationSpec (V2)"
|
|
782
|
+
}),
|
|
783
|
+
": Describes how data is rendered (Web Components, Markdown, Data)."
|
|
784
|
+
]
|
|
1242
785
|
})
|
|
1243
786
|
]
|
|
1244
787
|
})
|
|
1245
788
|
]
|
|
1246
789
|
}),
|
|
1247
790
|
/* @__PURE__ */ jsxs5("div", {
|
|
1248
|
-
className: "flex items-center gap-4 pt-4",
|
|
1249
|
-
children: [
|
|
1250
|
-
/* @__PURE__ */ jsx5(Link4, {
|
|
1251
|
-
href: "/docs/libraries/design-system",
|
|
1252
|
-
className: "btn-ghost",
|
|
1253
|
-
children: "Previous: Design System"
|
|
1254
|
-
}),
|
|
1255
|
-
/* @__PURE__ */ jsxs5(Link4, {
|
|
1256
|
-
href: "/docs/libraries",
|
|
1257
|
-
className: "btn-primary",
|
|
1258
|
-
children: [
|
|
1259
|
-
"Back to Libraries ",
|
|
1260
|
-
/* @__PURE__ */ jsx5(ChevronRight4, {
|
|
1261
|
-
size: 16
|
|
1262
|
-
})
|
|
1263
|
-
]
|
|
1264
|
-
})
|
|
1265
|
-
]
|
|
1266
|
-
})
|
|
1267
|
-
]
|
|
1268
|
-
});
|
|
1269
|
-
}
|
|
1270
|
-
|
|
1271
|
-
// src/components/docs/libraries/LibrariesContentGenPage.tsx
|
|
1272
|
-
import { CodeBlock as CodeBlock5, InstallCommand as InstallCommand5 } from "@contractspec/lib.design-system";
|
|
1273
|
-
import Link5 from "@contractspec/lib.ui-link";
|
|
1274
|
-
import { ChevronRight as ChevronRight5 } from "lucide-react";
|
|
1275
|
-
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1276
|
-
function LibrariesContentGenPage() {
|
|
1277
|
-
return /* @__PURE__ */ jsxs6("div", {
|
|
1278
|
-
className: "space-y-8",
|
|
1279
|
-
children: [
|
|
1280
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1281
|
-
className: "space-y-4",
|
|
1282
|
-
children: [
|
|
1283
|
-
/* @__PURE__ */ jsx6("h1", {
|
|
1284
|
-
className: "text-4xl font-bold",
|
|
1285
|
-
children: "@contractspec/lib.content-gen"
|
|
1286
|
-
}),
|
|
1287
|
-
/* @__PURE__ */ jsx6("p", {
|
|
1288
|
-
className: "text-muted-foreground text-lg",
|
|
1289
|
-
children: "Feed a single ContentBrief and produce cohesive marketing assets without touching a CMS."
|
|
1290
|
-
})
|
|
1291
|
-
]
|
|
1292
|
-
}),
|
|
1293
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1294
791
|
className: "space-y-4",
|
|
1295
792
|
children: [
|
|
1296
|
-
/* @__PURE__ */
|
|
1297
|
-
className: "text-2xl
|
|
1298
|
-
children: "
|
|
1299
|
-
}),
|
|
1300
|
-
/* @__PURE__ */ jsx6(InstallCommand5, {
|
|
1301
|
-
package: "@contractspec/lib.content-gen"
|
|
1302
|
-
})
|
|
1303
|
-
]
|
|
1304
|
-
}),
|
|
1305
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1306
|
-
className: "space-y-3",
|
|
1307
|
-
children: [
|
|
1308
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1309
|
-
className: "text-2xl font-bold",
|
|
1310
|
-
children: "One brief, many assets"
|
|
793
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
794
|
+
className: "font-bold text-2xl",
|
|
795
|
+
children: "Lifecycle"
|
|
1311
796
|
}),
|
|
1312
|
-
/* @__PURE__ */
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
}
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
797
|
+
/* @__PURE__ */ jsxs5("ol", {
|
|
798
|
+
className: "list-inside list-decimal space-y-2 text-muted-foreground",
|
|
799
|
+
children: [
|
|
800
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
801
|
+
children: [
|
|
802
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
803
|
+
children: "Define"
|
|
804
|
+
}),
|
|
805
|
+
" the spec (I/O via SchemaModel or Zod)."
|
|
806
|
+
]
|
|
807
|
+
}),
|
|
808
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
809
|
+
children: [
|
|
810
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
811
|
+
children: "Register"
|
|
812
|
+
}),
|
|
813
|
+
" it:",
|
|
814
|
+
" ",
|
|
815
|
+
/* @__PURE__ */ jsx5("code", {
|
|
816
|
+
className: "font-mono text-xs",
|
|
817
|
+
children: "installOp(registry, spec, handler)"
|
|
818
|
+
}),
|
|
819
|
+
"."
|
|
820
|
+
]
|
|
821
|
+
}),
|
|
822
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
823
|
+
children: [
|
|
824
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
825
|
+
children: "Expose"
|
|
826
|
+
}),
|
|
827
|
+
" it via an adapter (REST, GraphQL, MCP)."
|
|
828
|
+
]
|
|
829
|
+
}),
|
|
830
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
831
|
+
children: [
|
|
832
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
833
|
+
children: "Validate"
|
|
834
|
+
}),
|
|
835
|
+
" at runtime automatically."
|
|
836
|
+
]
|
|
837
|
+
})
|
|
838
|
+
]
|
|
1335
839
|
})
|
|
1336
840
|
]
|
|
1337
841
|
}),
|
|
1338
|
-
/* @__PURE__ */
|
|
1339
|
-
className: "space-y-
|
|
842
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
843
|
+
className: "space-y-4",
|
|
1340
844
|
children: [
|
|
1341
|
-
/* @__PURE__ */
|
|
1342
|
-
className: "text-2xl
|
|
1343
|
-
children: "
|
|
845
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
846
|
+
className: "font-bold text-2xl",
|
|
847
|
+
children: "Adapters"
|
|
1344
848
|
}),
|
|
1345
|
-
/* @__PURE__ */
|
|
1346
|
-
className: "text-muted-foreground
|
|
849
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
850
|
+
className: "space-y-2 text-muted-foreground",
|
|
1347
851
|
children: [
|
|
1348
|
-
/* @__PURE__ */
|
|
1349
|
-
children:
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
852
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
853
|
+
children: [
|
|
854
|
+
/* @__PURE__ */ jsx5("code", {
|
|
855
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
856
|
+
children: "server/rest-next-app"
|
|
857
|
+
}),
|
|
858
|
+
": Next.js App Router adapter"
|
|
859
|
+
]
|
|
1353
860
|
}),
|
|
1354
|
-
/* @__PURE__ */
|
|
1355
|
-
children:
|
|
861
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
862
|
+
children: [
|
|
863
|
+
/* @__PURE__ */ jsx5("code", {
|
|
864
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
865
|
+
children: "server/provider-mcp"
|
|
866
|
+
}),
|
|
867
|
+
": Model Context Protocol (MCP) for AI agents"
|
|
868
|
+
]
|
|
1356
869
|
}),
|
|
1357
|
-
/* @__PURE__ */
|
|
1358
|
-
children:
|
|
870
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
871
|
+
children: [
|
|
872
|
+
/* @__PURE__ */ jsx5("code", {
|
|
873
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
874
|
+
children: "server/graphql-pothos"
|
|
875
|
+
}),
|
|
876
|
+
": GraphQL schema generator"
|
|
877
|
+
]
|
|
1359
878
|
})
|
|
1360
879
|
]
|
|
1361
880
|
})
|
|
1362
881
|
]
|
|
1363
882
|
}),
|
|
1364
|
-
/* @__PURE__ */
|
|
883
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1365
884
|
className: "flex items-center gap-4 pt-4",
|
|
1366
885
|
children: [
|
|
1367
|
-
/* @__PURE__ */
|
|
1368
|
-
href: "/docs/libraries",
|
|
1369
|
-
className: "btn-ghost",
|
|
1370
|
-
children: "Back to Libraries"
|
|
1371
|
-
}),
|
|
1372
|
-
/* @__PURE__ */ jsxs6(Link5, {
|
|
1373
|
-
href: "/docs/libraries/support-bot",
|
|
886
|
+
/* @__PURE__ */ jsxs5(Link4, {
|
|
887
|
+
href: "/docs/libraries/schema",
|
|
1374
888
|
className: "btn-primary",
|
|
1375
889
|
children: [
|
|
1376
|
-
"Next:
|
|
1377
|
-
/* @__PURE__ */
|
|
890
|
+
"Next: Schema ",
|
|
891
|
+
/* @__PURE__ */ jsx5(ChevronRight4, {
|
|
1378
892
|
size: 16
|
|
1379
893
|
})
|
|
1380
894
|
]
|
|
895
|
+
}),
|
|
896
|
+
/* @__PURE__ */ jsx5(Link4, {
|
|
897
|
+
href: "/docs/specs/capabilities",
|
|
898
|
+
className: "btn-ghost",
|
|
899
|
+
children: "Core Concepts"
|
|
1381
900
|
})
|
|
1382
901
|
]
|
|
1383
902
|
})
|
|
@@ -1387,24 +906,24 @@ const seo = new SeoOptimizer().optimize(brief);`
|
|
|
1387
906
|
|
|
1388
907
|
// src/components/docs/libraries/LibrariesCostTrackingPage.tsx
|
|
1389
908
|
import { CodeBlock as CodeBlock6, InstallCommand as InstallCommand6 } from "@contractspec/lib.design-system";
|
|
1390
|
-
import
|
|
1391
|
-
import { ChevronRight as
|
|
1392
|
-
import { jsx as
|
|
909
|
+
import Link5 from "@contractspec/lib.ui-link";
|
|
910
|
+
import { ChevronRight as ChevronRight5 } from "lucide-react";
|
|
911
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1393
912
|
function LibrariesCostTrackingPage() {
|
|
1394
|
-
return /* @__PURE__ */
|
|
913
|
+
return /* @__PURE__ */ jsxs6("div", {
|
|
1395
914
|
className: "space-y-8",
|
|
1396
915
|
children: [
|
|
1397
|
-
/* @__PURE__ */
|
|
916
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1398
917
|
className: "space-y-4",
|
|
1399
918
|
children: [
|
|
1400
|
-
/* @__PURE__ */
|
|
1401
|
-
className: "text-4xl
|
|
919
|
+
/* @__PURE__ */ jsx6("h1", {
|
|
920
|
+
className: "font-bold text-4xl",
|
|
1402
921
|
children: "Cost Tracking Library"
|
|
1403
922
|
}),
|
|
1404
|
-
/* @__PURE__ */
|
|
1405
|
-
className: "text-muted-foreground
|
|
923
|
+
/* @__PURE__ */ jsxs6("p", {
|
|
924
|
+
className: "text-lg text-muted-foreground",
|
|
1406
925
|
children: [
|
|
1407
|
-
/* @__PURE__ */
|
|
926
|
+
/* @__PURE__ */ jsx6("code", {
|
|
1408
927
|
children: "@contractspec/lib.cost-tracking"
|
|
1409
928
|
}),
|
|
1410
929
|
" transforms raw telemetry into dollars: DB/API/compute costs per operation, budget alerts per tenant, and actionable optimization tips."
|
|
@@ -1412,26 +931,26 @@ function LibrariesCostTrackingPage() {
|
|
|
1412
931
|
})
|
|
1413
932
|
]
|
|
1414
933
|
}),
|
|
1415
|
-
/* @__PURE__ */
|
|
934
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1416
935
|
className: "space-y-4",
|
|
1417
936
|
children: [
|
|
1418
|
-
/* @__PURE__ */
|
|
1419
|
-
className: "text-2xl
|
|
937
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
938
|
+
className: "font-bold text-2xl",
|
|
1420
939
|
children: "Installation"
|
|
1421
940
|
}),
|
|
1422
|
-
/* @__PURE__ */
|
|
941
|
+
/* @__PURE__ */ jsx6(InstallCommand6, {
|
|
1423
942
|
package: "@contractspec/lib.cost-tracking"
|
|
1424
943
|
})
|
|
1425
944
|
]
|
|
1426
945
|
}),
|
|
1427
|
-
/* @__PURE__ */
|
|
946
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1428
947
|
className: "space-y-4",
|
|
1429
948
|
children: [
|
|
1430
|
-
/* @__PURE__ */
|
|
1431
|
-
className: "text-2xl
|
|
949
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
950
|
+
className: "font-bold text-2xl",
|
|
1432
951
|
children: "Record Samples"
|
|
1433
952
|
}),
|
|
1434
|
-
/* @__PURE__ */
|
|
953
|
+
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1435
954
|
language: "typescript",
|
|
1436
955
|
code: `const tracker = new CostTracker();
|
|
1437
956
|
tracker.recordSample({
|
|
@@ -1445,14 +964,14 @@ tracker.recordSample({
|
|
|
1445
964
|
})
|
|
1446
965
|
]
|
|
1447
966
|
}),
|
|
1448
|
-
/* @__PURE__ */
|
|
967
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1449
968
|
className: "space-y-4",
|
|
1450
969
|
children: [
|
|
1451
|
-
/* @__PURE__ */
|
|
1452
|
-
className: "text-2xl
|
|
970
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
971
|
+
className: "font-bold text-2xl",
|
|
1453
972
|
children: "Budget Alerts"
|
|
1454
973
|
}),
|
|
1455
|
-
/* @__PURE__ */
|
|
974
|
+
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1456
975
|
language: "typescript",
|
|
1457
976
|
code: `const budgets = new BudgetAlertManager({
|
|
1458
977
|
budgets: [{ tenantId: 'acme', monthlyLimit: 150 }],
|
|
@@ -1463,18 +982,18 @@ tracker.getTotals({ tenantId: 'acme' }).forEach((summary) => budgets.track(summa
|
|
|
1463
982
|
})
|
|
1464
983
|
]
|
|
1465
984
|
}),
|
|
1466
|
-
/* @__PURE__ */
|
|
985
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1467
986
|
className: "space-y-4",
|
|
1468
987
|
children: [
|
|
1469
|
-
/* @__PURE__ */
|
|
1470
|
-
className: "text-2xl
|
|
988
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
989
|
+
className: "font-bold text-2xl",
|
|
1471
990
|
children: "Optimization Suggestions"
|
|
1472
991
|
}),
|
|
1473
|
-
/* @__PURE__ */
|
|
992
|
+
/* @__PURE__ */ jsxs6("p", {
|
|
1474
993
|
className: "text-muted-foreground text-sm",
|
|
1475
994
|
children: [
|
|
1476
995
|
"Feed summaries into ",
|
|
1477
|
-
/* @__PURE__ */
|
|
996
|
+
/* @__PURE__ */ jsx6("code", {
|
|
1478
997
|
children: "OptimizationRecommender"
|
|
1479
998
|
}),
|
|
1480
999
|
" to surface N+1 queries, compute-heavy steps, or expensive external calls. Store the generated suggestions in the new Prisma model to power Ops playbooks."
|
|
@@ -1482,20 +1001,20 @@ tracker.getTotals({ tenantId: 'acme' }).forEach((summary) => budgets.track(summa
|
|
|
1482
1001
|
})
|
|
1483
1002
|
]
|
|
1484
1003
|
}),
|
|
1485
|
-
/* @__PURE__ */
|
|
1004
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1486
1005
|
className: "flex items-center gap-4 pt-4",
|
|
1487
1006
|
children: [
|
|
1488
|
-
/* @__PURE__ */
|
|
1007
|
+
/* @__PURE__ */ jsx6(Link5, {
|
|
1489
1008
|
href: "/docs/libraries",
|
|
1490
1009
|
className: "btn-ghost",
|
|
1491
1010
|
children: "Back to Libraries"
|
|
1492
1011
|
}),
|
|
1493
|
-
/* @__PURE__ */
|
|
1012
|
+
/* @__PURE__ */ jsxs6(Link5, {
|
|
1494
1013
|
href: "/docs/libraries/slo",
|
|
1495
1014
|
className: "btn-primary",
|
|
1496
1015
|
children: [
|
|
1497
1016
|
"Next: SLO ",
|
|
1498
|
-
/* @__PURE__ */
|
|
1017
|
+
/* @__PURE__ */ jsx6(ChevronRight5, {
|
|
1499
1018
|
size: 16
|
|
1500
1019
|
})
|
|
1501
1020
|
]
|
|
@@ -1507,48 +1026,48 @@ tracker.getTotals({ tenantId: 'acme' }).forEach((summary) => budgets.track(summa
|
|
|
1507
1026
|
}
|
|
1508
1027
|
|
|
1509
1028
|
// src/components/docs/libraries/LibrariesDataBackendPage.tsx
|
|
1510
|
-
import Link7 from "@contractspec/lib.ui-link";
|
|
1511
|
-
import { ChevronRight as ChevronRight7 } from "lucide-react";
|
|
1512
1029
|
import { CodeBlock as CodeBlock7 } from "@contractspec/lib.design-system";
|
|
1513
|
-
import
|
|
1030
|
+
import Link6 from "@contractspec/lib.ui-link";
|
|
1031
|
+
import { ChevronRight as ChevronRight6 } from "lucide-react";
|
|
1032
|
+
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1514
1033
|
function LibrariesDataBackendPage() {
|
|
1515
|
-
return /* @__PURE__ */
|
|
1034
|
+
return /* @__PURE__ */ jsxs7("div", {
|
|
1516
1035
|
className: "space-y-8",
|
|
1517
1036
|
children: [
|
|
1518
|
-
/* @__PURE__ */
|
|
1037
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1519
1038
|
className: "space-y-4",
|
|
1520
1039
|
children: [
|
|
1521
|
-
/* @__PURE__ */
|
|
1522
|
-
className: "text-4xl
|
|
1040
|
+
/* @__PURE__ */ jsx7("h1", {
|
|
1041
|
+
className: "font-bold text-4xl",
|
|
1523
1042
|
children: "Data & Backend"
|
|
1524
1043
|
}),
|
|
1525
|
-
/* @__PURE__ */
|
|
1044
|
+
/* @__PURE__ */ jsx7("p", {
|
|
1526
1045
|
className: "text-muted-foreground",
|
|
1527
1046
|
children: "A collection of robust, platform-agnostic libraries for building the backend infrastructure of your LSSM applications."
|
|
1528
1047
|
})
|
|
1529
1048
|
]
|
|
1530
1049
|
}),
|
|
1531
|
-
/* @__PURE__ */
|
|
1050
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1532
1051
|
className: "space-y-4",
|
|
1533
1052
|
children: [
|
|
1534
|
-
/* @__PURE__ */
|
|
1535
|
-
className: "text-2xl
|
|
1053
|
+
/* @__PURE__ */ jsx7("h2", {
|
|
1054
|
+
className: "font-bold text-2xl",
|
|
1536
1055
|
children: "Libraries"
|
|
1537
1056
|
}),
|
|
1538
|
-
/* @__PURE__ */
|
|
1057
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1539
1058
|
className: "space-y-6",
|
|
1540
1059
|
children: [
|
|
1541
|
-
/* @__PURE__ */
|
|
1060
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1542
1061
|
className: "card-subtle p-6",
|
|
1543
1062
|
children: [
|
|
1544
|
-
/* @__PURE__ */
|
|
1545
|
-
className: "text-lg
|
|
1063
|
+
/* @__PURE__ */ jsx7("h3", {
|
|
1064
|
+
className: "font-bold text-lg",
|
|
1546
1065
|
children: "@contractspec/app.cli-database"
|
|
1547
1066
|
}),
|
|
1548
|
-
/* @__PURE__ */
|
|
1549
|
-
className: "text-muted-foreground
|
|
1067
|
+
/* @__PURE__ */ jsxs7("p", {
|
|
1068
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
1550
1069
|
children: [
|
|
1551
|
-
/* @__PURE__ */
|
|
1070
|
+
/* @__PURE__ */ jsx7("strong", {
|
|
1552
1071
|
children: "Prisma Wrapper & CLI"
|
|
1553
1072
|
}),
|
|
1554
1073
|
". Provides a unified way to manage database schemas, migrations, and clients. Includes seeders and factory patterns for testing."
|
|
@@ -1556,17 +1075,17 @@ function LibrariesDataBackendPage() {
|
|
|
1556
1075
|
})
|
|
1557
1076
|
]
|
|
1558
1077
|
}),
|
|
1559
|
-
/* @__PURE__ */
|
|
1078
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1560
1079
|
className: "card-subtle p-6",
|
|
1561
1080
|
children: [
|
|
1562
|
-
/* @__PURE__ */
|
|
1563
|
-
className: "text-lg
|
|
1081
|
+
/* @__PURE__ */ jsx7("h3", {
|
|
1082
|
+
className: "font-bold text-lg",
|
|
1564
1083
|
children: "@contractspec/lib.bus"
|
|
1565
1084
|
}),
|
|
1566
|
-
/* @__PURE__ */
|
|
1567
|
-
className: "text-muted-foreground
|
|
1085
|
+
/* @__PURE__ */ jsxs7("p", {
|
|
1086
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
1568
1087
|
children: [
|
|
1569
|
-
/* @__PURE__ */
|
|
1088
|
+
/* @__PURE__ */ jsx7("strong", {
|
|
1570
1089
|
children: "Type-Safe Event Bus"
|
|
1571
1090
|
}),
|
|
1572
1091
|
". Decouple your architecture with typed events. Supports in-memory dispatch for monoliths and can be extended for distributed message queues (Redis, SQS)."
|
|
@@ -1574,17 +1093,17 @@ function LibrariesDataBackendPage() {
|
|
|
1574
1093
|
})
|
|
1575
1094
|
]
|
|
1576
1095
|
}),
|
|
1577
|
-
/* @__PURE__ */
|
|
1096
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1578
1097
|
className: "card-subtle p-6",
|
|
1579
1098
|
children: [
|
|
1580
|
-
/* @__PURE__ */
|
|
1581
|
-
className: "text-lg
|
|
1099
|
+
/* @__PURE__ */ jsx7("h3", {
|
|
1100
|
+
className: "font-bold text-lg",
|
|
1582
1101
|
children: "@contractspec/lib.logger"
|
|
1583
1102
|
}),
|
|
1584
|
-
/* @__PURE__ */
|
|
1585
|
-
className: "text-muted-foreground
|
|
1103
|
+
/* @__PURE__ */ jsxs7("p", {
|
|
1104
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
1586
1105
|
children: [
|
|
1587
|
-
/* @__PURE__ */
|
|
1106
|
+
/* @__PURE__ */ jsx7("strong", {
|
|
1588
1107
|
children: "High-Performance Logging"
|
|
1589
1108
|
}),
|
|
1590
1109
|
". Optimized for Bun and structured JSON output. Includes plugins for ElysiaJS to log HTTP requests automatically."
|
|
@@ -1592,17 +1111,17 @@ function LibrariesDataBackendPage() {
|
|
|
1592
1111
|
})
|
|
1593
1112
|
]
|
|
1594
1113
|
}),
|
|
1595
|
-
/* @__PURE__ */
|
|
1114
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1596
1115
|
className: "card-subtle p-6",
|
|
1597
1116
|
children: [
|
|
1598
|
-
/* @__PURE__ */
|
|
1599
|
-
className: "text-lg
|
|
1117
|
+
/* @__PURE__ */ jsx7("h3", {
|
|
1118
|
+
className: "font-bold text-lg",
|
|
1600
1119
|
children: "@contractspec/lib.error"
|
|
1601
1120
|
}),
|
|
1602
|
-
/* @__PURE__ */
|
|
1603
|
-
className: "text-muted-foreground
|
|
1121
|
+
/* @__PURE__ */ jsxs7("p", {
|
|
1122
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
1604
1123
|
children: [
|
|
1605
|
-
/* @__PURE__ */
|
|
1124
|
+
/* @__PURE__ */ jsx7("strong", {
|
|
1606
1125
|
children: "Standardized Errors"
|
|
1607
1126
|
}),
|
|
1608
1127
|
". Use `AppError` with standard codes (NOT_FOUND, UNAUTHORIZED) to ensure consistent HTTP responses and error handling across services."
|
|
@@ -1610,17 +1129,17 @@ function LibrariesDataBackendPage() {
|
|
|
1610
1129
|
})
|
|
1611
1130
|
]
|
|
1612
1131
|
}),
|
|
1613
|
-
/* @__PURE__ */
|
|
1132
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1614
1133
|
className: "card-subtle p-6",
|
|
1615
1134
|
children: [
|
|
1616
|
-
/* @__PURE__ */
|
|
1617
|
-
className: "text-lg
|
|
1135
|
+
/* @__PURE__ */ jsx7("h3", {
|
|
1136
|
+
className: "font-bold text-lg",
|
|
1618
1137
|
children: "@contractspec/lib.exporter"
|
|
1619
1138
|
}),
|
|
1620
|
-
/* @__PURE__ */
|
|
1621
|
-
className: "text-muted-foreground
|
|
1139
|
+
/* @__PURE__ */ jsxs7("p", {
|
|
1140
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
1622
1141
|
children: [
|
|
1623
|
-
/* @__PURE__ */
|
|
1142
|
+
/* @__PURE__ */ jsx7("strong", {
|
|
1624
1143
|
children: "Data Export"
|
|
1625
1144
|
}),
|
|
1626
1145
|
". Generate CSV and XML files from your data. Platform-agnostic and streaming-friendly."
|
|
@@ -1632,14 +1151,14 @@ function LibrariesDataBackendPage() {
|
|
|
1632
1151
|
})
|
|
1633
1152
|
]
|
|
1634
1153
|
}),
|
|
1635
|
-
/* @__PURE__ */
|
|
1154
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1636
1155
|
className: "space-y-4",
|
|
1637
1156
|
children: [
|
|
1638
|
-
/* @__PURE__ */
|
|
1639
|
-
className: "text-2xl
|
|
1157
|
+
/* @__PURE__ */ jsx7("h2", {
|
|
1158
|
+
className: "font-bold text-2xl",
|
|
1640
1159
|
children: "Example: Unified Backend Flow"
|
|
1641
1160
|
}),
|
|
1642
|
-
/* @__PURE__ */
|
|
1161
|
+
/* @__PURE__ */ jsx7(CodeBlock7, {
|
|
1643
1162
|
language: "typescript",
|
|
1644
1163
|
code: `import { logger } from '@contractspec/lib.logger';
|
|
1645
1164
|
import { AppError } from '@contractspec/lib.error';
|
|
@@ -1663,20 +1182,20 @@ export async function createUser(email: string) {
|
|
|
1663
1182
|
})
|
|
1664
1183
|
]
|
|
1665
1184
|
}),
|
|
1666
|
-
/* @__PURE__ */
|
|
1185
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1667
1186
|
className: "flex items-center gap-4 pt-4",
|
|
1668
1187
|
children: [
|
|
1669
|
-
/* @__PURE__ */
|
|
1188
|
+
/* @__PURE__ */ jsxs7(Link6, {
|
|
1670
1189
|
href: "/docs/libraries/runtime",
|
|
1671
1190
|
className: "btn-primary",
|
|
1672
1191
|
children: [
|
|
1673
1192
|
"Next: Runtime ",
|
|
1674
|
-
/* @__PURE__ */
|
|
1193
|
+
/* @__PURE__ */ jsx7(ChevronRight6, {
|
|
1675
1194
|
size: 16
|
|
1676
1195
|
})
|
|
1677
1196
|
]
|
|
1678
1197
|
}),
|
|
1679
|
-
/* @__PURE__ */
|
|
1198
|
+
/* @__PURE__ */ jsx7(Link6, {
|
|
1680
1199
|
href: "/docs/libraries",
|
|
1681
1200
|
className: "btn-ghost",
|
|
1682
1201
|
children: "Back to Libraries"
|
|
@@ -1689,30 +1208,30 @@ export async function createUser(email: string) {
|
|
|
1689
1208
|
|
|
1690
1209
|
// src/components/docs/libraries/LibrariesDataViewsPage.tsx
|
|
1691
1210
|
import { CodeBlock as CodeBlock8, InstallCommand as InstallCommand7 } from "@contractspec/lib.design-system";
|
|
1692
|
-
import
|
|
1693
|
-
import { ChevronRight as
|
|
1694
|
-
import { jsx as
|
|
1211
|
+
import Link7 from "@contractspec/lib.ui-link";
|
|
1212
|
+
import { ChevronRight as ChevronRight7 } from "lucide-react";
|
|
1213
|
+
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1695
1214
|
function LibrariesDataViewsPage() {
|
|
1696
|
-
return /* @__PURE__ */
|
|
1215
|
+
return /* @__PURE__ */ jsxs8("div", {
|
|
1697
1216
|
className: "space-y-8",
|
|
1698
1217
|
children: [
|
|
1699
|
-
/* @__PURE__ */
|
|
1218
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1700
1219
|
className: "space-y-4",
|
|
1701
1220
|
children: [
|
|
1702
|
-
/* @__PURE__ */
|
|
1703
|
-
className: "text-4xl
|
|
1221
|
+
/* @__PURE__ */ jsx8("h1", {
|
|
1222
|
+
className: "font-bold text-4xl",
|
|
1704
1223
|
children: "DataViews Runtime Library"
|
|
1705
1224
|
}),
|
|
1706
|
-
/* @__PURE__ */
|
|
1707
|
-
className: "text-muted-foreground
|
|
1225
|
+
/* @__PURE__ */ jsxs8("p", {
|
|
1226
|
+
className: "text-lg text-muted-foreground",
|
|
1708
1227
|
children: [
|
|
1709
1228
|
"The ",
|
|
1710
|
-
/* @__PURE__ */
|
|
1229
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1711
1230
|
children: "@contractspec/lib.contracts-spec/data-views"
|
|
1712
1231
|
}),
|
|
1713
1232
|
" and",
|
|
1714
1233
|
" ",
|
|
1715
|
-
/* @__PURE__ */
|
|
1234
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1716
1235
|
children: "@contractspec/lib.design-system"
|
|
1717
1236
|
}),
|
|
1718
1237
|
" libraries provide the runtime logic and UI components to render DataViews in your application."
|
|
@@ -1720,14 +1239,14 @@ function LibrariesDataViewsPage() {
|
|
|
1720
1239
|
})
|
|
1721
1240
|
]
|
|
1722
1241
|
}),
|
|
1723
|
-
/* @__PURE__ */
|
|
1242
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1724
1243
|
className: "space-y-4",
|
|
1725
1244
|
children: [
|
|
1726
|
-
/* @__PURE__ */
|
|
1727
|
-
className: "text-2xl
|
|
1245
|
+
/* @__PURE__ */ jsx8("h2", {
|
|
1246
|
+
className: "font-bold text-2xl",
|
|
1728
1247
|
children: "Installation"
|
|
1729
1248
|
}),
|
|
1730
|
-
/* @__PURE__ */
|
|
1249
|
+
/* @__PURE__ */ jsx8(InstallCommand7, {
|
|
1731
1250
|
package: [
|
|
1732
1251
|
"@contractspec/lib.contracts-spec",
|
|
1733
1252
|
"@contractspec/lib.design-system"
|
|
@@ -1735,18 +1254,18 @@ function LibrariesDataViewsPage() {
|
|
|
1735
1254
|
})
|
|
1736
1255
|
]
|
|
1737
1256
|
}),
|
|
1738
|
-
/* @__PURE__ */
|
|
1257
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1739
1258
|
className: "space-y-4",
|
|
1740
1259
|
children: [
|
|
1741
|
-
/* @__PURE__ */
|
|
1742
|
-
className: "text-2xl
|
|
1260
|
+
/* @__PURE__ */ jsx8("h2", {
|
|
1261
|
+
className: "font-bold text-2xl",
|
|
1743
1262
|
children: "DataViewRenderer"
|
|
1744
1263
|
}),
|
|
1745
|
-
/* @__PURE__ */
|
|
1264
|
+
/* @__PURE__ */ jsx8("p", {
|
|
1746
1265
|
className: "text-muted-foreground",
|
|
1747
1266
|
children: "The primary component for rendering any DataView. It automatically selects the correct layout (List, Table, Grid, Detail) based on the spec."
|
|
1748
1267
|
}),
|
|
1749
|
-
/* @__PURE__ */
|
|
1268
|
+
/* @__PURE__ */ jsx8(CodeBlock8, {
|
|
1750
1269
|
language: "tsx",
|
|
1751
1270
|
code: `import { DataViewRenderer } from '@contractspec/lib.design-system';
|
|
1752
1271
|
import { MyUserList } from './specs/users.data-view';
|
|
@@ -1762,69 +1281,69 @@ export function UserPage() {
|
|
|
1762
1281
|
);
|
|
1763
1282
|
}`
|
|
1764
1283
|
}),
|
|
1765
|
-
/* @__PURE__ */
|
|
1766
|
-
className: "text-xl
|
|
1284
|
+
/* @__PURE__ */ jsx8("h3", {
|
|
1285
|
+
className: "font-semibold text-xl",
|
|
1767
1286
|
children: "Props"
|
|
1768
1287
|
}),
|
|
1769
|
-
/* @__PURE__ */
|
|
1770
|
-
className: "
|
|
1288
|
+
/* @__PURE__ */ jsxs8("ul", {
|
|
1289
|
+
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1771
1290
|
children: [
|
|
1772
|
-
/* @__PURE__ */
|
|
1291
|
+
/* @__PURE__ */ jsxs8("li", {
|
|
1773
1292
|
children: [
|
|
1774
|
-
/* @__PURE__ */
|
|
1293
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1775
1294
|
children: "spec"
|
|
1776
1295
|
}),
|
|
1777
1296
|
": The DataViewSpec definition."
|
|
1778
1297
|
]
|
|
1779
1298
|
}),
|
|
1780
|
-
/* @__PURE__ */
|
|
1299
|
+
/* @__PURE__ */ jsxs8("li", {
|
|
1781
1300
|
children: [
|
|
1782
|
-
/* @__PURE__ */
|
|
1301
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1783
1302
|
children: "items"
|
|
1784
1303
|
}),
|
|
1785
1304
|
": Array of data items to render."
|
|
1786
1305
|
]
|
|
1787
1306
|
}),
|
|
1788
|
-
/* @__PURE__ */
|
|
1307
|
+
/* @__PURE__ */ jsxs8("li", {
|
|
1789
1308
|
children: [
|
|
1790
|
-
/* @__PURE__ */
|
|
1309
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1791
1310
|
children: "filters"
|
|
1792
1311
|
}),
|
|
1793
1312
|
": Current filter state object."
|
|
1794
1313
|
]
|
|
1795
1314
|
}),
|
|
1796
|
-
/* @__PURE__ */
|
|
1315
|
+
/* @__PURE__ */ jsxs8("li", {
|
|
1797
1316
|
children: [
|
|
1798
|
-
/* @__PURE__ */
|
|
1317
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1799
1318
|
children: "onFilterChange"
|
|
1800
1319
|
}),
|
|
1801
1320
|
": Callback when filters change."
|
|
1802
1321
|
]
|
|
1803
1322
|
}),
|
|
1804
|
-
/* @__PURE__ */
|
|
1323
|
+
/* @__PURE__ */ jsxs8("li", {
|
|
1805
1324
|
children: [
|
|
1806
|
-
/* @__PURE__ */
|
|
1325
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1807
1326
|
children: "pagination"
|
|
1808
1327
|
}),
|
|
1809
1328
|
": Object with ",
|
|
1810
|
-
/* @__PURE__ */
|
|
1329
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1811
1330
|
children: "page"
|
|
1812
1331
|
}),
|
|
1813
1332
|
",",
|
|
1814
1333
|
" ",
|
|
1815
|
-
/* @__PURE__ */
|
|
1334
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1816
1335
|
children: "pageSize"
|
|
1817
1336
|
}),
|
|
1818
1337
|
", ",
|
|
1819
|
-
/* @__PURE__ */
|
|
1338
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1820
1339
|
children: "total"
|
|
1821
1340
|
}),
|
|
1822
1341
|
"."
|
|
1823
1342
|
]
|
|
1824
1343
|
}),
|
|
1825
|
-
/* @__PURE__ */
|
|
1344
|
+
/* @__PURE__ */ jsxs8("li", {
|
|
1826
1345
|
children: [
|
|
1827
|
-
/* @__PURE__ */
|
|
1346
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1828
1347
|
children: "onPageChange"
|
|
1829
1348
|
}),
|
|
1830
1349
|
": Callback when page changes."
|
|
@@ -1834,24 +1353,24 @@ export function UserPage() {
|
|
|
1834
1353
|
})
|
|
1835
1354
|
]
|
|
1836
1355
|
}),
|
|
1837
|
-
/* @__PURE__ */
|
|
1356
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1838
1357
|
className: "space-y-4",
|
|
1839
1358
|
children: [
|
|
1840
|
-
/* @__PURE__ */
|
|
1841
|
-
className: "text-2xl
|
|
1359
|
+
/* @__PURE__ */ jsx8("h2", {
|
|
1360
|
+
className: "font-bold text-2xl",
|
|
1842
1361
|
children: "Query Generation"
|
|
1843
1362
|
}),
|
|
1844
|
-
/* @__PURE__ */
|
|
1363
|
+
/* @__PURE__ */ jsxs8("p", {
|
|
1845
1364
|
className: "text-muted-foreground",
|
|
1846
1365
|
children: [
|
|
1847
1366
|
"The ",
|
|
1848
|
-
/* @__PURE__ */
|
|
1367
|
+
/* @__PURE__ */ jsx8("code", {
|
|
1849
1368
|
children: "DataViewQueryGenerator"
|
|
1850
1369
|
}),
|
|
1851
1370
|
" utility helps translate DataView parameters (filters, sorting, pagination) into query arguments for your backend."
|
|
1852
1371
|
]
|
|
1853
1372
|
}),
|
|
1854
|
-
/* @__PURE__ */
|
|
1373
|
+
/* @__PURE__ */ jsx8(CodeBlock8, {
|
|
1855
1374
|
language: "typescript",
|
|
1856
1375
|
code: `import { DataViewQueryGenerator } from '@contractspec/lib.contracts-spec/data-views/query-generator';
|
|
1857
1376
|
|
|
@@ -1865,20 +1384,20 @@ const query = generator.generate({
|
|
|
1865
1384
|
})
|
|
1866
1385
|
]
|
|
1867
1386
|
}),
|
|
1868
|
-
/* @__PURE__ */
|
|
1387
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1869
1388
|
className: "flex items-center gap-4 pt-4",
|
|
1870
1389
|
children: [
|
|
1871
|
-
/* @__PURE__ */
|
|
1390
|
+
/* @__PURE__ */ jsx8(Link7, {
|
|
1872
1391
|
href: "/docs/libraries",
|
|
1873
1392
|
className: "btn-ghost",
|
|
1874
1393
|
children: "Back to Libraries"
|
|
1875
1394
|
}),
|
|
1876
|
-
/* @__PURE__ */
|
|
1395
|
+
/* @__PURE__ */ jsxs8(Link7, {
|
|
1877
1396
|
href: "/docs/libraries/data-backend",
|
|
1878
1397
|
className: "btn-primary",
|
|
1879
1398
|
children: [
|
|
1880
1399
|
"Next: Data & Backend ",
|
|
1881
|
-
/* @__PURE__ */
|
|
1400
|
+
/* @__PURE__ */ jsx8(ChevronRight7, {
|
|
1882
1401
|
size: 16
|
|
1883
1402
|
})
|
|
1884
1403
|
]
|
|
@@ -1890,26 +1409,26 @@ const query = generator.generate({
|
|
|
1890
1409
|
}
|
|
1891
1410
|
|
|
1892
1411
|
// src/components/docs/libraries/LibrariesDesignSystemPage.tsx
|
|
1893
|
-
import Link9 from "@contractspec/lib.ui-link";
|
|
1894
|
-
import { ChevronRight as ChevronRight9 } from "lucide-react";
|
|
1895
1412
|
import { CodeBlock as CodeBlock9, InstallCommand as InstallCommand8 } from "@contractspec/lib.design-system";
|
|
1896
|
-
import
|
|
1413
|
+
import Link8 from "@contractspec/lib.ui-link";
|
|
1414
|
+
import { ChevronRight as ChevronRight8 } from "lucide-react";
|
|
1415
|
+
import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1897
1416
|
function LibrariesDesignSystemPage() {
|
|
1898
|
-
return /* @__PURE__ */
|
|
1417
|
+
return /* @__PURE__ */ jsxs9("div", {
|
|
1899
1418
|
className: "space-y-8",
|
|
1900
1419
|
children: [
|
|
1901
|
-
/* @__PURE__ */
|
|
1420
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1902
1421
|
className: "space-y-4",
|
|
1903
1422
|
children: [
|
|
1904
|
-
/* @__PURE__ */
|
|
1905
|
-
className: "text-4xl
|
|
1423
|
+
/* @__PURE__ */ jsx9("h1", {
|
|
1424
|
+
className: "font-bold text-4xl",
|
|
1906
1425
|
children: "@contractspec/lib.design-system"
|
|
1907
1426
|
}),
|
|
1908
|
-
/* @__PURE__ */
|
|
1427
|
+
/* @__PURE__ */ jsxs9("p", {
|
|
1909
1428
|
className: "text-muted-foreground",
|
|
1910
1429
|
children: [
|
|
1911
1430
|
"High-level design system components, patterns, and layouts for LSSM applications. Built on top of ",
|
|
1912
|
-
/* @__PURE__ */
|
|
1431
|
+
/* @__PURE__ */ jsx9("code", {
|
|
1913
1432
|
children: "@contractspec/lib.ui-kit"
|
|
1914
1433
|
}),
|
|
1915
1434
|
"."
|
|
@@ -1917,79 +1436,79 @@ function LibrariesDesignSystemPage() {
|
|
|
1917
1436
|
})
|
|
1918
1437
|
]
|
|
1919
1438
|
}),
|
|
1920
|
-
/* @__PURE__ */
|
|
1439
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1921
1440
|
className: "space-y-4",
|
|
1922
1441
|
children: [
|
|
1923
|
-
/* @__PURE__ */
|
|
1924
|
-
className: "text-2xl
|
|
1442
|
+
/* @__PURE__ */ jsx9("h2", {
|
|
1443
|
+
className: "font-bold text-2xl",
|
|
1925
1444
|
children: "Installation"
|
|
1926
1445
|
}),
|
|
1927
|
-
/* @__PURE__ */
|
|
1446
|
+
/* @__PURE__ */ jsx9(InstallCommand8, {
|
|
1928
1447
|
package: "@contractspec/lib.design-system"
|
|
1929
1448
|
})
|
|
1930
1449
|
]
|
|
1931
1450
|
}),
|
|
1932
|
-
/* @__PURE__ */
|
|
1451
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1933
1452
|
className: "space-y-4",
|
|
1934
1453
|
children: [
|
|
1935
|
-
/* @__PURE__ */
|
|
1936
|
-
className: "text-2xl
|
|
1454
|
+
/* @__PURE__ */ jsx9("h2", {
|
|
1455
|
+
className: "font-bold text-2xl",
|
|
1937
1456
|
children: "What It Provides"
|
|
1938
1457
|
}),
|
|
1939
|
-
/* @__PURE__ */
|
|
1940
|
-
className: "
|
|
1458
|
+
/* @__PURE__ */ jsxs9("ul", {
|
|
1459
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1941
1460
|
children: [
|
|
1942
|
-
/* @__PURE__ */
|
|
1461
|
+
/* @__PURE__ */ jsxs9("li", {
|
|
1943
1462
|
children: [
|
|
1944
|
-
/* @__PURE__ */
|
|
1463
|
+
/* @__PURE__ */ jsx9("strong", {
|
|
1945
1464
|
children: "Composite Components"
|
|
1946
1465
|
}),
|
|
1947
1466
|
": Molecules and Organisms that solve common UI problems"
|
|
1948
1467
|
]
|
|
1949
1468
|
}),
|
|
1950
|
-
/* @__PURE__ */
|
|
1469
|
+
/* @__PURE__ */ jsxs9("li", {
|
|
1951
1470
|
children: [
|
|
1952
|
-
/* @__PURE__ */
|
|
1471
|
+
/* @__PURE__ */ jsx9("strong", {
|
|
1953
1472
|
children: "Layouts"
|
|
1954
1473
|
}),
|
|
1955
1474
|
": Ready-to-use page structures for dashboards, marketing sites, and lists"
|
|
1956
1475
|
]
|
|
1957
1476
|
}),
|
|
1958
|
-
/* @__PURE__ */
|
|
1477
|
+
/* @__PURE__ */ jsxs9("li", {
|
|
1959
1478
|
children: [
|
|
1960
|
-
/* @__PURE__ */
|
|
1479
|
+
/* @__PURE__ */ jsx9("strong", {
|
|
1961
1480
|
children: "Data Views"
|
|
1962
1481
|
}),
|
|
1963
1482
|
": Standardized renderers for lists, tables, and detail views"
|
|
1964
1483
|
]
|
|
1965
1484
|
}),
|
|
1966
|
-
/* @__PURE__ */
|
|
1485
|
+
/* @__PURE__ */ jsxs9("li", {
|
|
1967
1486
|
children: [
|
|
1968
|
-
/* @__PURE__ */
|
|
1487
|
+
/* @__PURE__ */ jsx9("strong", {
|
|
1969
1488
|
children: "Forms"
|
|
1970
1489
|
}),
|
|
1971
1490
|
": Zod-integrated form layouts and components"
|
|
1972
1491
|
]
|
|
1973
1492
|
}),
|
|
1974
|
-
/* @__PURE__ */
|
|
1493
|
+
/* @__PURE__ */ jsxs9("li", {
|
|
1975
1494
|
children: [
|
|
1976
|
-
/* @__PURE__ */
|
|
1495
|
+
/* @__PURE__ */ jsx9("strong", {
|
|
1977
1496
|
children: "Code Display"
|
|
1978
1497
|
}),
|
|
1979
1498
|
": Syntax-highlighted code blocks with package manager tabs"
|
|
1980
1499
|
]
|
|
1981
1500
|
}),
|
|
1982
|
-
/* @__PURE__ */
|
|
1501
|
+
/* @__PURE__ */ jsxs9("li", {
|
|
1983
1502
|
children: [
|
|
1984
|
-
/* @__PURE__ */
|
|
1503
|
+
/* @__PURE__ */ jsx9("strong", {
|
|
1985
1504
|
children: "Platform Utilities"
|
|
1986
1505
|
}),
|
|
1987
1506
|
": Hooks for responsive and adaptive design"
|
|
1988
1507
|
]
|
|
1989
1508
|
}),
|
|
1990
|
-
/* @__PURE__ */
|
|
1509
|
+
/* @__PURE__ */ jsxs9("li", {
|
|
1991
1510
|
children: [
|
|
1992
|
-
/* @__PURE__ */
|
|
1511
|
+
/* @__PURE__ */ jsx9("strong", {
|
|
1993
1512
|
children: "Legal Templates"
|
|
1994
1513
|
}),
|
|
1995
1514
|
": Compliant templates for Terms, Privacy, and GDPR"
|
|
@@ -1999,14 +1518,14 @@ function LibrariesDesignSystemPage() {
|
|
|
1999
1518
|
})
|
|
2000
1519
|
]
|
|
2001
1520
|
}),
|
|
2002
|
-
/* @__PURE__ */
|
|
1521
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2003
1522
|
className: "space-y-4",
|
|
2004
1523
|
children: [
|
|
2005
|
-
/* @__PURE__ */
|
|
2006
|
-
className: "text-2xl
|
|
1524
|
+
/* @__PURE__ */ jsx9("h2", {
|
|
1525
|
+
className: "font-bold text-2xl",
|
|
2007
1526
|
children: "Example: App Layout"
|
|
2008
1527
|
}),
|
|
2009
|
-
/* @__PURE__ */
|
|
1528
|
+
/* @__PURE__ */ jsx9(CodeBlock9, {
|
|
2010
1529
|
language: "tsx",
|
|
2011
1530
|
code: `import { AppLayout } from '@contractspec/lib.design-system';
|
|
2012
1531
|
import { AppSidebar } from '@contractspec/lib.design-system';
|
|
@@ -2021,14 +1540,14 @@ export function Layout({ children }) {
|
|
|
2021
1540
|
})
|
|
2022
1541
|
]
|
|
2023
1542
|
}),
|
|
2024
|
-
/* @__PURE__ */
|
|
1543
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2025
1544
|
className: "space-y-4",
|
|
2026
1545
|
children: [
|
|
2027
|
-
/* @__PURE__ */
|
|
2028
|
-
className: "text-2xl
|
|
1546
|
+
/* @__PURE__ */ jsx9("h2", {
|
|
1547
|
+
className: "font-bold text-2xl",
|
|
2029
1548
|
children: "Example: Zod Form"
|
|
2030
1549
|
}),
|
|
2031
|
-
/* @__PURE__ */
|
|
1550
|
+
/* @__PURE__ */ jsx9(CodeBlock9, {
|
|
2032
1551
|
language: "tsx",
|
|
2033
1552
|
code: `import { ZodForm } from '@contractspec/lib.design-system';
|
|
2034
1553
|
import * as z from "zod";
|
|
@@ -2050,14 +1569,14 @@ export function SignupForm() {
|
|
|
2050
1569
|
})
|
|
2051
1570
|
]
|
|
2052
1571
|
}),
|
|
2053
|
-
/* @__PURE__ */
|
|
1572
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2054
1573
|
className: "space-y-4",
|
|
2055
1574
|
children: [
|
|
2056
|
-
/* @__PURE__ */
|
|
2057
|
-
className: "text-2xl
|
|
1575
|
+
/* @__PURE__ */ jsx9("h2", {
|
|
1576
|
+
className: "font-bold text-2xl",
|
|
2058
1577
|
children: "Example: Code Block with Package Manager Tabs"
|
|
2059
1578
|
}),
|
|
2060
|
-
/* @__PURE__ */
|
|
1579
|
+
/* @__PURE__ */ jsx9(CodeBlock9, {
|
|
2061
1580
|
language: "tsx",
|
|
2062
1581
|
code: `import { CodeBlock, InstallCommand } from '@contractspec/lib.design-system';
|
|
2063
1582
|
|
|
@@ -2074,98 +1593,98 @@ export function SignupForm() {
|
|
|
2074
1593
|
})
|
|
2075
1594
|
]
|
|
2076
1595
|
}),
|
|
2077
|
-
/* @__PURE__ */
|
|
1596
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2078
1597
|
className: "space-y-4",
|
|
2079
1598
|
children: [
|
|
2080
|
-
/* @__PURE__ */
|
|
2081
|
-
className: "text-2xl
|
|
1599
|
+
/* @__PURE__ */ jsx9("h2", {
|
|
1600
|
+
className: "font-bold text-2xl",
|
|
2082
1601
|
children: "Key Exports"
|
|
2083
1602
|
}),
|
|
2084
|
-
/* @__PURE__ */
|
|
1603
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2085
1604
|
className: "grid gap-4 md:grid-cols-2",
|
|
2086
1605
|
children: [
|
|
2087
|
-
/* @__PURE__ */
|
|
1606
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2088
1607
|
className: "card-subtle p-4",
|
|
2089
1608
|
children: [
|
|
2090
|
-
/* @__PURE__ */
|
|
1609
|
+
/* @__PURE__ */ jsx9("h3", {
|
|
2091
1610
|
className: "mb-2 font-semibold",
|
|
2092
1611
|
children: "Organisms"
|
|
2093
1612
|
}),
|
|
2094
|
-
/* @__PURE__ */
|
|
2095
|
-
className: "
|
|
1613
|
+
/* @__PURE__ */ jsxs9("ul", {
|
|
1614
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
2096
1615
|
children: [
|
|
2097
|
-
/* @__PURE__ */
|
|
1616
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2098
1617
|
children: "AppLayout, AppHeader, AppSidebar"
|
|
2099
1618
|
}),
|
|
2100
|
-
/* @__PURE__ */
|
|
1619
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2101
1620
|
children: "MarketingLayout, HeroSection"
|
|
2102
1621
|
}),
|
|
2103
|
-
/* @__PURE__ */
|
|
1622
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2104
1623
|
children: "ListCardPage, ListTablePage"
|
|
2105
1624
|
})
|
|
2106
1625
|
]
|
|
2107
1626
|
})
|
|
2108
1627
|
]
|
|
2109
1628
|
}),
|
|
2110
|
-
/* @__PURE__ */
|
|
1629
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2111
1630
|
className: "card-subtle p-4",
|
|
2112
1631
|
children: [
|
|
2113
|
-
/* @__PURE__ */
|
|
1632
|
+
/* @__PURE__ */ jsx9("h3", {
|
|
2114
1633
|
className: "mb-2 font-semibold",
|
|
2115
1634
|
children: "Data & Forms"
|
|
2116
1635
|
}),
|
|
2117
|
-
/* @__PURE__ */
|
|
2118
|
-
className: "
|
|
1636
|
+
/* @__PURE__ */ jsxs9("ul", {
|
|
1637
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
2119
1638
|
children: [
|
|
2120
|
-
/* @__PURE__ */
|
|
1639
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2121
1640
|
children: "DataViewRenderer"
|
|
2122
1641
|
}),
|
|
2123
|
-
/* @__PURE__ */
|
|
1642
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2124
1643
|
children: "ZodForm"
|
|
2125
1644
|
}),
|
|
2126
|
-
/* @__PURE__ */
|
|
1645
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2127
1646
|
children: "FormLayout, FormDialog"
|
|
2128
1647
|
})
|
|
2129
1648
|
]
|
|
2130
1649
|
})
|
|
2131
1650
|
]
|
|
2132
1651
|
}),
|
|
2133
|
-
/* @__PURE__ */
|
|
1652
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2134
1653
|
className: "card-subtle p-4",
|
|
2135
1654
|
children: [
|
|
2136
|
-
/* @__PURE__ */
|
|
1655
|
+
/* @__PURE__ */ jsx9("h3", {
|
|
2137
1656
|
className: "mb-2 font-semibold",
|
|
2138
1657
|
children: "Code Display"
|
|
2139
1658
|
}),
|
|
2140
|
-
/* @__PURE__ */
|
|
2141
|
-
className: "
|
|
1659
|
+
/* @__PURE__ */ jsxs9("ul", {
|
|
1660
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
2142
1661
|
children: [
|
|
2143
|
-
/* @__PURE__ */
|
|
1662
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2144
1663
|
children: "CodeBlock (syntax highlighting)"
|
|
2145
1664
|
}),
|
|
2146
|
-
/* @__PURE__ */
|
|
1665
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2147
1666
|
children: "CommandTabs (package manager tabs)"
|
|
2148
1667
|
}),
|
|
2149
|
-
/* @__PURE__ */
|
|
1668
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2150
1669
|
children: "InstallCommand (convenience wrapper)"
|
|
2151
1670
|
}),
|
|
2152
|
-
/* @__PURE__ */
|
|
1671
|
+
/* @__PURE__ */ jsx9("li", {
|
|
2153
1672
|
children: "CopyButton"
|
|
2154
1673
|
})
|
|
2155
1674
|
]
|
|
2156
1675
|
})
|
|
2157
1676
|
]
|
|
2158
1677
|
}),
|
|
2159
|
-
/* @__PURE__ */
|
|
1678
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2160
1679
|
className: "card-subtle p-4",
|
|
2161
1680
|
children: [
|
|
2162
|
-
/* @__PURE__ */
|
|
1681
|
+
/* @__PURE__ */ jsx9("h3", {
|
|
2163
1682
|
className: "mb-2 font-semibold",
|
|
2164
1683
|
children: "Providers"
|
|
2165
1684
|
}),
|
|
2166
|
-
/* @__PURE__ */
|
|
2167
|
-
className: "
|
|
2168
|
-
children: /* @__PURE__ */
|
|
1685
|
+
/* @__PURE__ */ jsx9("ul", {
|
|
1686
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
1687
|
+
children: /* @__PURE__ */ jsx9("li", {
|
|
2169
1688
|
children: "PackageManagerProvider"
|
|
2170
1689
|
})
|
|
2171
1690
|
})
|
|
@@ -2175,20 +1694,20 @@ export function SignupForm() {
|
|
|
2175
1694
|
})
|
|
2176
1695
|
]
|
|
2177
1696
|
}),
|
|
2178
|
-
/* @__PURE__ */
|
|
1697
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
2179
1698
|
className: "flex items-center gap-4 pt-4",
|
|
2180
1699
|
children: [
|
|
2181
|
-
/* @__PURE__ */
|
|
1700
|
+
/* @__PURE__ */ jsx9(Link8, {
|
|
2182
1701
|
href: "/docs/libraries/ui-kit",
|
|
2183
1702
|
className: "btn-ghost",
|
|
2184
1703
|
children: "Previous: UI Kit"
|
|
2185
1704
|
}),
|
|
2186
|
-
/* @__PURE__ */
|
|
1705
|
+
/* @__PURE__ */ jsxs9(Link8, {
|
|
2187
1706
|
href: "/docs/libraries/accessibility",
|
|
2188
1707
|
className: "btn-primary",
|
|
2189
1708
|
children: [
|
|
2190
1709
|
"Next: Accessibility ",
|
|
2191
|
-
/* @__PURE__ */
|
|
1710
|
+
/* @__PURE__ */ jsx9(ChevronRight8, {
|
|
2192
1711
|
size: 16
|
|
2193
1712
|
})
|
|
2194
1713
|
]
|
|
@@ -2201,46 +1720,46 @@ export function SignupForm() {
|
|
|
2201
1720
|
|
|
2202
1721
|
// src/components/docs/libraries/LibrariesEvolutionPage.tsx
|
|
2203
1722
|
import { CodeBlock as CodeBlock10, InstallCommand as InstallCommand9 } from "@contractspec/lib.design-system";
|
|
2204
|
-
import
|
|
2205
|
-
import { ChevronRight as
|
|
2206
|
-
import { jsx as
|
|
1723
|
+
import Link9 from "@contractspec/lib.ui-link";
|
|
1724
|
+
import { ChevronRight as ChevronRight9 } from "lucide-react";
|
|
1725
|
+
import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2207
1726
|
function LibrariesEvolutionPage() {
|
|
2208
|
-
return /* @__PURE__ */
|
|
1727
|
+
return /* @__PURE__ */ jsxs10("div", {
|
|
2209
1728
|
className: "space-y-8",
|
|
2210
1729
|
children: [
|
|
2211
|
-
/* @__PURE__ */
|
|
1730
|
+
/* @__PURE__ */ jsxs10("div", {
|
|
2212
1731
|
className: "space-y-4",
|
|
2213
1732
|
children: [
|
|
2214
|
-
/* @__PURE__ */
|
|
2215
|
-
className: "text-4xl
|
|
1733
|
+
/* @__PURE__ */ jsx10("h1", {
|
|
1734
|
+
className: "font-bold text-4xl",
|
|
2216
1735
|
children: "@contractspec/lib.evolution"
|
|
2217
1736
|
}),
|
|
2218
|
-
/* @__PURE__ */
|
|
2219
|
-
className: "text-muted-foreground
|
|
1737
|
+
/* @__PURE__ */ jsx10("p", {
|
|
1738
|
+
className: "text-lg text-muted-foreground",
|
|
2220
1739
|
children: "Analyze production telemetry, surface anomalies, and turn them into AI-reviewed spec proposals that can be approved, rolled out, or reverted."
|
|
2221
1740
|
})
|
|
2222
1741
|
]
|
|
2223
1742
|
}),
|
|
2224
|
-
/* @__PURE__ */
|
|
1743
|
+
/* @__PURE__ */ jsxs10("div", {
|
|
2225
1744
|
className: "space-y-4",
|
|
2226
1745
|
children: [
|
|
2227
|
-
/* @__PURE__ */
|
|
2228
|
-
className: "text-2xl
|
|
1746
|
+
/* @__PURE__ */ jsx10("h2", {
|
|
1747
|
+
className: "font-bold text-2xl",
|
|
2229
1748
|
children: "Installation"
|
|
2230
1749
|
}),
|
|
2231
|
-
/* @__PURE__ */
|
|
1750
|
+
/* @__PURE__ */ jsx10(InstallCommand9, {
|
|
2232
1751
|
package: "@contractspec/lib.evolution"
|
|
2233
1752
|
})
|
|
2234
1753
|
]
|
|
2235
1754
|
}),
|
|
2236
|
-
/* @__PURE__ */
|
|
1755
|
+
/* @__PURE__ */ jsxs10("div", {
|
|
2237
1756
|
className: "space-y-3",
|
|
2238
1757
|
children: [
|
|
2239
|
-
/* @__PURE__ */
|
|
2240
|
-
className: "text-2xl
|
|
1758
|
+
/* @__PURE__ */ jsx10("h2", {
|
|
1759
|
+
className: "font-bold text-2xl",
|
|
2241
1760
|
children: "From telemetry to intent"
|
|
2242
1761
|
}),
|
|
2243
|
-
/* @__PURE__ */
|
|
1762
|
+
/* @__PURE__ */ jsx10(CodeBlock10, {
|
|
2244
1763
|
language: "typescript",
|
|
2245
1764
|
code: `import { SpecAnalyzer } from '@contractspec/lib.evolution/analyzer';
|
|
2246
1765
|
import { EvolutionPipeline } from '@contractspec/lib.observability';
|
|
@@ -2261,14 +1780,14 @@ pipeline.ingest({
|
|
|
2261
1780
|
})
|
|
2262
1781
|
]
|
|
2263
1782
|
}),
|
|
2264
|
-
/* @__PURE__ */
|
|
1783
|
+
/* @__PURE__ */ jsxs10("div", {
|
|
2265
1784
|
className: "space-y-3",
|
|
2266
1785
|
children: [
|
|
2267
|
-
/* @__PURE__ */
|
|
2268
|
-
className: "text-2xl
|
|
1786
|
+
/* @__PURE__ */ jsx10("h2", {
|
|
1787
|
+
className: "font-bold text-2xl",
|
|
2269
1788
|
children: "Generate & approve suggestions"
|
|
2270
1789
|
}),
|
|
2271
|
-
/* @__PURE__ */
|
|
1790
|
+
/* @__PURE__ */ jsx10(CodeBlock10, {
|
|
2272
1791
|
language: "typescript",
|
|
2273
1792
|
code: `import {
|
|
2274
1793
|
SpecGenerator,
|
|
@@ -2288,14 +1807,14 @@ await orchestrator.submit(suggestion, sessionState);`
|
|
|
2288
1807
|
})
|
|
2289
1808
|
]
|
|
2290
1809
|
}),
|
|
2291
|
-
/* @__PURE__ */
|
|
1810
|
+
/* @__PURE__ */ jsxs10("div", {
|
|
2292
1811
|
className: "space-y-3",
|
|
2293
1812
|
children: [
|
|
2294
|
-
/* @__PURE__ */
|
|
2295
|
-
className: "text-2xl
|
|
1813
|
+
/* @__PURE__ */ jsx10("h2", {
|
|
1814
|
+
className: "font-bold text-2xl",
|
|
2296
1815
|
children: "Write approved specs back to git"
|
|
2297
1816
|
}),
|
|
2298
|
-
/* @__PURE__ */
|
|
1817
|
+
/* @__PURE__ */ jsx10(CodeBlock10, {
|
|
2299
1818
|
language: "typescript",
|
|
2300
1819
|
code: `import { FileSystemSuggestionWriter } from '@contractspec/lib.evolution/approval';
|
|
2301
1820
|
|
|
@@ -2312,7 +1831,7 @@ await writer.write({
|
|
|
2312
1831
|
})
|
|
2313
1832
|
]
|
|
2314
1833
|
}),
|
|
2315
|
-
/* @__PURE__ */
|
|
1834
|
+
/* @__PURE__ */ jsx10("div", {
|
|
2316
1835
|
className: "grid gap-4 md:grid-cols-2",
|
|
2317
1836
|
children: [
|
|
2318
1837
|
{
|
|
@@ -2323,34 +1842,34 @@ await writer.write({
|
|
|
2323
1842
|
title: "Pluggable storage",
|
|
2324
1843
|
description: "Use the Prisma repository in production, in-memory for tests, or stream serialized suggestions into your own queue."
|
|
2325
1844
|
}
|
|
2326
|
-
].map((card) => /* @__PURE__ */
|
|
1845
|
+
].map((card) => /* @__PURE__ */ jsxs10("div", {
|
|
2327
1846
|
className: "card-subtle space-y-2 p-4",
|
|
2328
1847
|
children: [
|
|
2329
|
-
/* @__PURE__ */
|
|
2330
|
-
className: "text-lg
|
|
1848
|
+
/* @__PURE__ */ jsx10("h3", {
|
|
1849
|
+
className: "font-semibold text-lg",
|
|
2331
1850
|
children: card.title
|
|
2332
1851
|
}),
|
|
2333
|
-
/* @__PURE__ */
|
|
1852
|
+
/* @__PURE__ */ jsx10("p", {
|
|
2334
1853
|
className: "text-muted-foreground text-sm",
|
|
2335
1854
|
children: card.description
|
|
2336
1855
|
})
|
|
2337
1856
|
]
|
|
2338
1857
|
}, card.title))
|
|
2339
1858
|
}),
|
|
2340
|
-
/* @__PURE__ */
|
|
1859
|
+
/* @__PURE__ */ jsxs10("div", {
|
|
2341
1860
|
className: "flex items-center gap-4 pt-4",
|
|
2342
1861
|
children: [
|
|
2343
|
-
/* @__PURE__ */
|
|
1862
|
+
/* @__PURE__ */ jsx10(Link9, {
|
|
2344
1863
|
href: "/docs/libraries",
|
|
2345
1864
|
className: "btn-ghost",
|
|
2346
1865
|
children: "Back to Libraries"
|
|
2347
1866
|
}),
|
|
2348
|
-
/* @__PURE__ */
|
|
1867
|
+
/* @__PURE__ */ jsxs10(Link9, {
|
|
2349
1868
|
href: "/docs/libraries/observability",
|
|
2350
1869
|
className: "btn-primary",
|
|
2351
1870
|
children: [
|
|
2352
1871
|
"Next: Observability ",
|
|
2353
|
-
/* @__PURE__ */
|
|
1872
|
+
/* @__PURE__ */ jsx10(ChevronRight9, {
|
|
2354
1873
|
size: 16
|
|
2355
1874
|
})
|
|
2356
1875
|
]
|
|
@@ -2362,72 +1881,72 @@ await writer.write({
|
|
|
2362
1881
|
}
|
|
2363
1882
|
|
|
2364
1883
|
// src/components/docs/libraries/LibrariesGraphQLPage.tsx
|
|
2365
|
-
import Link11 from "@contractspec/lib.ui-link";
|
|
2366
|
-
import { ChevronRight as ChevronRight11 } from "lucide-react";
|
|
2367
1884
|
import { CodeBlock as CodeBlock11, InstallCommand as InstallCommand10 } from "@contractspec/lib.design-system";
|
|
2368
|
-
import
|
|
1885
|
+
import Link10 from "@contractspec/lib.ui-link";
|
|
1886
|
+
import { ChevronRight as ChevronRight10 } from "lucide-react";
|
|
1887
|
+
import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2369
1888
|
function LibrariesGraphQLPage() {
|
|
2370
|
-
return /* @__PURE__ */
|
|
1889
|
+
return /* @__PURE__ */ jsxs11("div", {
|
|
2371
1890
|
className: "space-y-8",
|
|
2372
1891
|
children: [
|
|
2373
|
-
/* @__PURE__ */
|
|
1892
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2374
1893
|
className: "space-y-4",
|
|
2375
1894
|
children: [
|
|
2376
|
-
/* @__PURE__ */
|
|
2377
|
-
className: "text-4xl
|
|
1895
|
+
/* @__PURE__ */ jsx11("h1", {
|
|
1896
|
+
className: "font-bold text-4xl",
|
|
2378
1897
|
children: "GraphQL Libraries"
|
|
2379
1898
|
}),
|
|
2380
|
-
/* @__PURE__ */
|
|
1899
|
+
/* @__PURE__ */ jsx11("p", {
|
|
2381
1900
|
className: "text-muted-foreground",
|
|
2382
1901
|
children: "This suite of libraries enables seamless GraphQL integration, transforming your ContractSpecs into a type-safe Pothos schema, connecting with Prisma, and enabling Apollo Federation."
|
|
2383
1902
|
})
|
|
2384
1903
|
]
|
|
2385
1904
|
}),
|
|
2386
|
-
/* @__PURE__ */
|
|
1905
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2387
1906
|
className: "space-y-4",
|
|
2388
1907
|
children: [
|
|
2389
|
-
/* @__PURE__ */
|
|
2390
|
-
className: "text-2xl
|
|
1908
|
+
/* @__PURE__ */ jsx11("h2", {
|
|
1909
|
+
className: "font-bold text-2xl",
|
|
2391
1910
|
children: "Libraries"
|
|
2392
1911
|
}),
|
|
2393
|
-
/* @__PURE__ */
|
|
1912
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2394
1913
|
className: "grid gap-4 md:grid-cols-1",
|
|
2395
1914
|
children: [
|
|
2396
|
-
/* @__PURE__ */
|
|
1915
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2397
1916
|
className: "card-subtle p-6",
|
|
2398
1917
|
children: [
|
|
2399
|
-
/* @__PURE__ */
|
|
2400
|
-
className: "text-lg
|
|
1918
|
+
/* @__PURE__ */ jsx11("h3", {
|
|
1919
|
+
className: "font-bold text-lg",
|
|
2401
1920
|
children: "@contractspec/lib.graphql-core"
|
|
2402
1921
|
}),
|
|
2403
|
-
/* @__PURE__ */
|
|
2404
|
-
className: "text-muted-foreground
|
|
1922
|
+
/* @__PURE__ */ jsx11("p", {
|
|
1923
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
2405
1924
|
children: "The foundation. Provides a configured Pothos builder, common scalars (JSON, DateTime), and utilities for mapping ContractSpec I/O to Pothos types."
|
|
2406
1925
|
})
|
|
2407
1926
|
]
|
|
2408
1927
|
}),
|
|
2409
|
-
/* @__PURE__ */
|
|
1928
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2410
1929
|
className: "card-subtle p-6",
|
|
2411
1930
|
children: [
|
|
2412
|
-
/* @__PURE__ */
|
|
2413
|
-
className: "text-lg
|
|
1931
|
+
/* @__PURE__ */ jsx11("h3", {
|
|
1932
|
+
className: "font-bold text-lg",
|
|
2414
1933
|
children: "@contractspec/lib.graphql-prisma"
|
|
2415
1934
|
}),
|
|
2416
|
-
/* @__PURE__ */
|
|
2417
|
-
className: "text-muted-foreground
|
|
1935
|
+
/* @__PURE__ */ jsx11("p", {
|
|
1936
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
2418
1937
|
children: "Connects Pothos to Prisma. Automatically generates GraphQL types from your Prisma schema and optimizes queries to prevent N+1 issues."
|
|
2419
1938
|
})
|
|
2420
1939
|
]
|
|
2421
1940
|
}),
|
|
2422
|
-
/* @__PURE__ */
|
|
1941
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2423
1942
|
className: "card-subtle p-6",
|
|
2424
1943
|
children: [
|
|
2425
|
-
/* @__PURE__ */
|
|
2426
|
-
className: "text-lg
|
|
1944
|
+
/* @__PURE__ */ jsx11("h3", {
|
|
1945
|
+
className: "font-bold text-lg",
|
|
2427
1946
|
children: "@contractspec/lib.graphql-federation"
|
|
2428
1947
|
}),
|
|
2429
|
-
/* @__PURE__ */
|
|
2430
|
-
className: "text-muted-foreground
|
|
1948
|
+
/* @__PURE__ */ jsx11("p", {
|
|
1949
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
2431
1950
|
children: "Adds Apollo Federation V2 support. Allows your subgraph to define keys and entities, making it ready for a supergraph."
|
|
2432
1951
|
})
|
|
2433
1952
|
]
|
|
@@ -2436,14 +1955,14 @@ function LibrariesGraphQLPage() {
|
|
|
2436
1955
|
})
|
|
2437
1956
|
]
|
|
2438
1957
|
}),
|
|
2439
|
-
/* @__PURE__ */
|
|
1958
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2440
1959
|
className: "space-y-4",
|
|
2441
1960
|
children: [
|
|
2442
|
-
/* @__PURE__ */
|
|
2443
|
-
className: "text-2xl
|
|
1961
|
+
/* @__PURE__ */ jsx11("h2", {
|
|
1962
|
+
className: "font-bold text-2xl",
|
|
2444
1963
|
children: "Installation"
|
|
2445
1964
|
}),
|
|
2446
|
-
/* @__PURE__ */
|
|
1965
|
+
/* @__PURE__ */ jsx11(InstallCommand10, {
|
|
2447
1966
|
package: [
|
|
2448
1967
|
"@contractspec/lib.graphql-core",
|
|
2449
1968
|
"@contractspec/lib.graphql-prisma",
|
|
@@ -2452,18 +1971,18 @@ function LibrariesGraphQLPage() {
|
|
|
2452
1971
|
})
|
|
2453
1972
|
]
|
|
2454
1973
|
}),
|
|
2455
|
-
/* @__PURE__ */
|
|
1974
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2456
1975
|
className: "space-y-4",
|
|
2457
1976
|
children: [
|
|
2458
|
-
/* @__PURE__ */
|
|
2459
|
-
className: "text-2xl
|
|
1977
|
+
/* @__PURE__ */ jsx11("h2", {
|
|
1978
|
+
className: "font-bold text-2xl",
|
|
2460
1979
|
children: "Usage: Building a Schema"
|
|
2461
1980
|
}),
|
|
2462
|
-
/* @__PURE__ */
|
|
1981
|
+
/* @__PURE__ */ jsx11("p", {
|
|
2463
1982
|
className: "text-muted-foreground",
|
|
2464
1983
|
children: "Here's how to assemble a federated GraphQL schema from your specs:"
|
|
2465
1984
|
}),
|
|
2466
|
-
/* @__PURE__ */
|
|
1985
|
+
/* @__PURE__ */ jsx11(CodeBlock11, {
|
|
2467
1986
|
language: "typescript",
|
|
2468
1987
|
code: `import { builder } from '@contractspec/lib.graphql-core';
|
|
2469
1988
|
import { registerContractsOnBuilder } from '@contractspec/lib.contracts-runtime-server-graphql/graphql-pothos';
|
|
@@ -2483,35 +2002,35 @@ console.log(printSchema(schema));`
|
|
|
2483
2002
|
})
|
|
2484
2003
|
]
|
|
2485
2004
|
}),
|
|
2486
|
-
/* @__PURE__ */
|
|
2005
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2487
2006
|
className: "space-y-4",
|
|
2488
2007
|
children: [
|
|
2489
|
-
/* @__PURE__ */
|
|
2490
|
-
className: "text-2xl
|
|
2008
|
+
/* @__PURE__ */ jsx11("h2", {
|
|
2009
|
+
className: "font-bold text-2xl",
|
|
2491
2010
|
children: "Features"
|
|
2492
2011
|
}),
|
|
2493
|
-
/* @__PURE__ */
|
|
2494
|
-
className: "
|
|
2012
|
+
/* @__PURE__ */ jsxs11("ul", {
|
|
2013
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
2495
2014
|
children: [
|
|
2496
|
-
/* @__PURE__ */
|
|
2015
|
+
/* @__PURE__ */ jsxs11("li", {
|
|
2497
2016
|
children: [
|
|
2498
|
-
/* @__PURE__ */
|
|
2017
|
+
/* @__PURE__ */ jsx11("strong", {
|
|
2499
2018
|
children: "Code-First"
|
|
2500
2019
|
}),
|
|
2501
2020
|
": Define schema in TypeScript (Pothos), get SDL as artifact."
|
|
2502
2021
|
]
|
|
2503
2022
|
}),
|
|
2504
|
-
/* @__PURE__ */
|
|
2023
|
+
/* @__PURE__ */ jsxs11("li", {
|
|
2505
2024
|
children: [
|
|
2506
|
-
/* @__PURE__ */
|
|
2025
|
+
/* @__PURE__ */ jsx11("strong", {
|
|
2507
2026
|
children: "Spec Integration"
|
|
2508
2027
|
}),
|
|
2509
2028
|
": `registerContractsOnBuilder` automatically converts Command/Query specs into Mutations/Queries."
|
|
2510
2029
|
]
|
|
2511
2030
|
}),
|
|
2512
|
-
/* @__PURE__ */
|
|
2031
|
+
/* @__PURE__ */ jsxs11("li", {
|
|
2513
2032
|
children: [
|
|
2514
|
-
/* @__PURE__ */
|
|
2033
|
+
/* @__PURE__ */ jsx11("strong", {
|
|
2515
2034
|
children: "Federation Ready"
|
|
2516
2035
|
}),
|
|
2517
2036
|
": Just add `provider: 'federation'` to your config."
|
|
@@ -2521,20 +2040,20 @@ console.log(printSchema(schema));`
|
|
|
2521
2040
|
})
|
|
2522
2041
|
]
|
|
2523
2042
|
}),
|
|
2524
|
-
/* @__PURE__ */
|
|
2043
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2525
2044
|
className: "flex items-center gap-4 pt-4",
|
|
2526
2045
|
children: [
|
|
2527
|
-
/* @__PURE__ */
|
|
2046
|
+
/* @__PURE__ */ jsxs11(Link10, {
|
|
2528
2047
|
href: "/docs/libraries/data-backend",
|
|
2529
2048
|
className: "btn-primary",
|
|
2530
2049
|
children: [
|
|
2531
2050
|
"Next: Data & Backend ",
|
|
2532
|
-
/* @__PURE__ */
|
|
2051
|
+
/* @__PURE__ */ jsx11(ChevronRight10, {
|
|
2533
2052
|
size: 16
|
|
2534
2053
|
})
|
|
2535
2054
|
]
|
|
2536
2055
|
}),
|
|
2537
|
-
/* @__PURE__ */
|
|
2056
|
+
/* @__PURE__ */ jsx11(Link10, {
|
|
2538
2057
|
href: "/docs/libraries",
|
|
2539
2058
|
className: "btn-ghost",
|
|
2540
2059
|
children: "Back to Libraries"
|
|
@@ -2547,46 +2066,46 @@ console.log(printSchema(schema));`
|
|
|
2547
2066
|
|
|
2548
2067
|
// src/components/docs/libraries/LibrariesGrowthPage.tsx
|
|
2549
2068
|
import { CodeBlock as CodeBlock12, InstallCommand as InstallCommand11 } from "@contractspec/lib.design-system";
|
|
2550
|
-
import
|
|
2551
|
-
import { ChevronRight as
|
|
2552
|
-
import { jsx as
|
|
2069
|
+
import Link11 from "@contractspec/lib.ui-link";
|
|
2070
|
+
import { ChevronRight as ChevronRight11 } from "lucide-react";
|
|
2071
|
+
import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2553
2072
|
function LibrariesGrowthPage() {
|
|
2554
|
-
return /* @__PURE__ */
|
|
2073
|
+
return /* @__PURE__ */ jsxs12("div", {
|
|
2555
2074
|
className: "space-y-8",
|
|
2556
2075
|
children: [
|
|
2557
|
-
/* @__PURE__ */
|
|
2076
|
+
/* @__PURE__ */ jsxs12("div", {
|
|
2558
2077
|
className: "space-y-4",
|
|
2559
2078
|
children: [
|
|
2560
|
-
/* @__PURE__ */
|
|
2561
|
-
className: "text-4xl
|
|
2079
|
+
/* @__PURE__ */ jsx12("h1", {
|
|
2080
|
+
className: "font-bold text-4xl",
|
|
2562
2081
|
children: "@contractspec/lib.growth"
|
|
2563
2082
|
}),
|
|
2564
|
-
/* @__PURE__ */
|
|
2565
|
-
className: "text-muted-foreground
|
|
2083
|
+
/* @__PURE__ */ jsx12("p", {
|
|
2084
|
+
className: "text-lg text-muted-foreground",
|
|
2566
2085
|
children: "Launch experiments without third-party SDKs. Register variants, assign users deterministically, track exposures, and compute significance."
|
|
2567
2086
|
})
|
|
2568
2087
|
]
|
|
2569
2088
|
}),
|
|
2570
|
-
/* @__PURE__ */
|
|
2089
|
+
/* @__PURE__ */ jsxs12("div", {
|
|
2571
2090
|
className: "space-y-4",
|
|
2572
2091
|
children: [
|
|
2573
|
-
/* @__PURE__ */
|
|
2574
|
-
className: "text-2xl
|
|
2092
|
+
/* @__PURE__ */ jsx12("h2", {
|
|
2093
|
+
className: "font-bold text-2xl",
|
|
2575
2094
|
children: "Installation"
|
|
2576
2095
|
}),
|
|
2577
|
-
/* @__PURE__ */
|
|
2096
|
+
/* @__PURE__ */ jsx12(InstallCommand11, {
|
|
2578
2097
|
package: "@contractspec/lib.growth"
|
|
2579
2098
|
})
|
|
2580
2099
|
]
|
|
2581
2100
|
}),
|
|
2582
|
-
/* @__PURE__ */
|
|
2101
|
+
/* @__PURE__ */ jsxs12("div", {
|
|
2583
2102
|
className: "space-y-3",
|
|
2584
2103
|
children: [
|
|
2585
|
-
/* @__PURE__ */
|
|
2586
|
-
className: "text-2xl
|
|
2104
|
+
/* @__PURE__ */ jsx12("h2", {
|
|
2105
|
+
className: "font-bold text-2xl",
|
|
2587
2106
|
children: "Register + assign"
|
|
2588
2107
|
}),
|
|
2589
|
-
/* @__PURE__ */
|
|
2108
|
+
/* @__PURE__ */ jsx12(CodeBlock12, {
|
|
2590
2109
|
language: "typescript",
|
|
2591
2110
|
code: `import { ExperimentRegistry, ExperimentRunner } from '@contractspec/lib.growth/experiments';
|
|
2592
2111
|
|
|
@@ -2606,14 +2125,14 @@ const assignment = runner.assign(registry.get('pricing.cta')!, 'user_123');`
|
|
|
2606
2125
|
})
|
|
2607
2126
|
]
|
|
2608
2127
|
}),
|
|
2609
|
-
/* @__PURE__ */
|
|
2128
|
+
/* @__PURE__ */ jsxs12("div", {
|
|
2610
2129
|
className: "space-y-3",
|
|
2611
2130
|
children: [
|
|
2612
|
-
/* @__PURE__ */
|
|
2613
|
-
className: "text-2xl
|
|
2131
|
+
/* @__PURE__ */ jsx12("h2", {
|
|
2132
|
+
className: "font-bold text-2xl",
|
|
2614
2133
|
children: "Track + analyze"
|
|
2615
2134
|
}),
|
|
2616
|
-
/* @__PURE__ */
|
|
2135
|
+
/* @__PURE__ */ jsx12(CodeBlock12, {
|
|
2617
2136
|
language: "typescript",
|
|
2618
2137
|
code: `import { ExperimentTracker } from '@contractspec/lib.growth/tracker';
|
|
2619
2138
|
import { StatsEngine } from '@contractspec/lib.growth/stats';
|
|
@@ -2635,20 +2154,20 @@ const stats = new StatsEngine().summarize(
|
|
|
2635
2154
|
})
|
|
2636
2155
|
]
|
|
2637
2156
|
}),
|
|
2638
|
-
/* @__PURE__ */
|
|
2157
|
+
/* @__PURE__ */ jsxs12("div", {
|
|
2639
2158
|
className: "flex items-center gap-4 pt-4",
|
|
2640
2159
|
children: [
|
|
2641
|
-
/* @__PURE__ */
|
|
2160
|
+
/* @__PURE__ */ jsx12(Link11, {
|
|
2642
2161
|
href: "/docs/libraries",
|
|
2643
2162
|
className: "btn-ghost",
|
|
2644
2163
|
children: "Back to Libraries"
|
|
2645
2164
|
}),
|
|
2646
|
-
/* @__PURE__ */
|
|
2165
|
+
/* @__PURE__ */ jsxs12(Link11, {
|
|
2647
2166
|
href: "/docs/libraries/analytics",
|
|
2648
2167
|
className: "btn-primary",
|
|
2649
2168
|
children: [
|
|
2650
2169
|
"Next: Analytics ",
|
|
2651
|
-
/* @__PURE__ */
|
|
2170
|
+
/* @__PURE__ */ jsx12(ChevronRight11, {
|
|
2652
2171
|
size: 16
|
|
2653
2172
|
})
|
|
2654
2173
|
]
|
|
@@ -2661,25 +2180,25 @@ const stats = new StatsEngine().summarize(
|
|
|
2661
2180
|
|
|
2662
2181
|
// src/components/docs/libraries/LibrariesMultiTenancyPage.tsx
|
|
2663
2182
|
import { CodeBlock as CodeBlock13, InstallCommand as InstallCommand12 } from "@contractspec/lib.design-system";
|
|
2664
|
-
import
|
|
2665
|
-
import { ChevronRight as
|
|
2666
|
-
import { jsx as
|
|
2183
|
+
import Link12 from "@contractspec/lib.ui-link";
|
|
2184
|
+
import { ChevronRight as ChevronRight12 } from "lucide-react";
|
|
2185
|
+
import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2667
2186
|
function LibrariesMultiTenancyPage() {
|
|
2668
|
-
return /* @__PURE__ */
|
|
2187
|
+
return /* @__PURE__ */ jsxs13("div", {
|
|
2669
2188
|
className: "space-y-8",
|
|
2670
2189
|
children: [
|
|
2671
|
-
/* @__PURE__ */
|
|
2190
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
2672
2191
|
className: "space-y-4",
|
|
2673
2192
|
children: [
|
|
2674
|
-
/* @__PURE__ */
|
|
2675
|
-
className: "text-4xl
|
|
2193
|
+
/* @__PURE__ */ jsx13("h1", {
|
|
2194
|
+
className: "font-bold text-4xl",
|
|
2676
2195
|
children: "Multi-Tenancy Library"
|
|
2677
2196
|
}),
|
|
2678
|
-
/* @__PURE__ */
|
|
2679
|
-
className: "text-muted-foreground
|
|
2197
|
+
/* @__PURE__ */ jsxs13("p", {
|
|
2198
|
+
className: "text-lg text-muted-foreground",
|
|
2680
2199
|
children: [
|
|
2681
2200
|
"The ",
|
|
2682
|
-
/* @__PURE__ */
|
|
2201
|
+
/* @__PURE__ */ jsx13("code", {
|
|
2683
2202
|
children: "@contractspec/lib.multi-tenancy"
|
|
2684
2203
|
}),
|
|
2685
2204
|
" library provides the core building blocks for secure SaaS applications."
|
|
@@ -2687,36 +2206,36 @@ function LibrariesMultiTenancyPage() {
|
|
|
2687
2206
|
})
|
|
2688
2207
|
]
|
|
2689
2208
|
}),
|
|
2690
|
-
/* @__PURE__ */
|
|
2209
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
2691
2210
|
className: "space-y-4",
|
|
2692
2211
|
children: [
|
|
2693
|
-
/* @__PURE__ */
|
|
2694
|
-
className: "text-2xl
|
|
2212
|
+
/* @__PURE__ */ jsx13("h2", {
|
|
2213
|
+
className: "font-bold text-2xl",
|
|
2695
2214
|
children: "Installation"
|
|
2696
2215
|
}),
|
|
2697
|
-
/* @__PURE__ */
|
|
2216
|
+
/* @__PURE__ */ jsx13(InstallCommand12, {
|
|
2698
2217
|
package: "@contractspec/lib.multi-tenancy"
|
|
2699
2218
|
})
|
|
2700
2219
|
]
|
|
2701
2220
|
}),
|
|
2702
|
-
/* @__PURE__ */
|
|
2221
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
2703
2222
|
className: "space-y-4",
|
|
2704
2223
|
children: [
|
|
2705
|
-
/* @__PURE__ */
|
|
2706
|
-
className: "text-2xl
|
|
2224
|
+
/* @__PURE__ */ jsx13("h2", {
|
|
2225
|
+
className: "font-bold text-2xl",
|
|
2707
2226
|
children: "Prisma RLS Middleware"
|
|
2708
2227
|
}),
|
|
2709
|
-
/* @__PURE__ */
|
|
2228
|
+
/* @__PURE__ */ jsxs13("p", {
|
|
2710
2229
|
className: "text-muted-foreground",
|
|
2711
2230
|
children: [
|
|
2712
2231
|
"Automatically injects ",
|
|
2713
|
-
/* @__PURE__ */
|
|
2232
|
+
/* @__PURE__ */ jsx13("code", {
|
|
2714
2233
|
children: "tenantId"
|
|
2715
2234
|
}),
|
|
2716
2235
|
" into all queries."
|
|
2717
2236
|
]
|
|
2718
2237
|
}),
|
|
2719
|
-
/* @__PURE__ */
|
|
2238
|
+
/* @__PURE__ */ jsx13(CodeBlock13, {
|
|
2720
2239
|
language: "typescript",
|
|
2721
2240
|
code: `import { createRlsMiddleware } from '@contractspec/lib.multi-tenancy/rls';
|
|
2722
2241
|
import { prisma } from './db';
|
|
@@ -2726,18 +2245,18 @@ prisma.$use(createRlsMiddleware(() => getTenantId()));`
|
|
|
2726
2245
|
})
|
|
2727
2246
|
]
|
|
2728
2247
|
}),
|
|
2729
|
-
/* @__PURE__ */
|
|
2248
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
2730
2249
|
className: "space-y-4",
|
|
2731
2250
|
children: [
|
|
2732
|
-
/* @__PURE__ */
|
|
2733
|
-
className: "text-2xl
|
|
2251
|
+
/* @__PURE__ */ jsx13("h2", {
|
|
2252
|
+
className: "font-bold text-2xl",
|
|
2734
2253
|
children: "Provisioning Service"
|
|
2735
2254
|
}),
|
|
2736
|
-
/* @__PURE__ */
|
|
2255
|
+
/* @__PURE__ */ jsx13("p", {
|
|
2737
2256
|
className: "text-muted-foreground",
|
|
2738
2257
|
children: "Automates the creation of new tenants, including database setup and default user creation."
|
|
2739
2258
|
}),
|
|
2740
|
-
/* @__PURE__ */
|
|
2259
|
+
/* @__PURE__ */ jsx13(CodeBlock13, {
|
|
2741
2260
|
language: "typescript",
|
|
2742
2261
|
code: `import { TenantProvisioningService } from '@contractspec/lib.multi-tenancy/provisioning';
|
|
2743
2262
|
|
|
@@ -2751,20 +2270,20 @@ await service.provision({
|
|
|
2751
2270
|
})
|
|
2752
2271
|
]
|
|
2753
2272
|
}),
|
|
2754
|
-
/* @__PURE__ */
|
|
2273
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
2755
2274
|
className: "flex items-center gap-4 pt-4",
|
|
2756
2275
|
children: [
|
|
2757
|
-
/* @__PURE__ */
|
|
2276
|
+
/* @__PURE__ */ jsx13(Link12, {
|
|
2758
2277
|
href: "/docs/libraries",
|
|
2759
2278
|
className: "btn-ghost",
|
|
2760
2279
|
children: "Back to Libraries"
|
|
2761
2280
|
}),
|
|
2762
|
-
/* @__PURE__ */
|
|
2281
|
+
/* @__PURE__ */ jsxs13(Link12, {
|
|
2763
2282
|
href: "/docs/libraries/progressive-delivery",
|
|
2764
2283
|
className: "btn-primary",
|
|
2765
2284
|
children: [
|
|
2766
2285
|
"Next: Progressive Delivery ",
|
|
2767
|
-
/* @__PURE__ */
|
|
2286
|
+
/* @__PURE__ */ jsx13(ChevronRight12, {
|
|
2768
2287
|
size: 16
|
|
2769
2288
|
})
|
|
2770
2289
|
]
|
|
@@ -2777,25 +2296,25 @@ await service.provision({
|
|
|
2777
2296
|
|
|
2778
2297
|
// src/components/docs/libraries/LibrariesObservabilityPage.tsx
|
|
2779
2298
|
import { CodeBlock as CodeBlock14, InstallCommand as InstallCommand13 } from "@contractspec/lib.design-system";
|
|
2780
|
-
import
|
|
2781
|
-
import { ChevronRight as
|
|
2782
|
-
import { jsx as
|
|
2299
|
+
import Link13 from "@contractspec/lib.ui-link";
|
|
2300
|
+
import { ChevronRight as ChevronRight13 } from "lucide-react";
|
|
2301
|
+
import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2783
2302
|
function LibrariesObservabilityPage() {
|
|
2784
|
-
return /* @__PURE__ */
|
|
2303
|
+
return /* @__PURE__ */ jsxs14("div", {
|
|
2785
2304
|
className: "space-y-8",
|
|
2786
2305
|
children: [
|
|
2787
|
-
/* @__PURE__ */
|
|
2306
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
2788
2307
|
className: "space-y-4",
|
|
2789
2308
|
children: [
|
|
2790
|
-
/* @__PURE__ */
|
|
2791
|
-
className: "text-4xl
|
|
2309
|
+
/* @__PURE__ */ jsx14("h1", {
|
|
2310
|
+
className: "font-bold text-4xl",
|
|
2792
2311
|
children: "Observability Library"
|
|
2793
2312
|
}),
|
|
2794
|
-
/* @__PURE__ */
|
|
2795
|
-
className: "text-muted-foreground
|
|
2313
|
+
/* @__PURE__ */ jsxs14("p", {
|
|
2314
|
+
className: "text-lg text-muted-foreground",
|
|
2796
2315
|
children: [
|
|
2797
2316
|
"The ",
|
|
2798
|
-
/* @__PURE__ */
|
|
2317
|
+
/* @__PURE__ */ jsx14("code", {
|
|
2799
2318
|
children: "@contractspec/lib.observability"
|
|
2800
2319
|
}),
|
|
2801
2320
|
" library provides a thin wrapper around OpenTelemetry to simplify instrumentation."
|
|
@@ -2803,26 +2322,26 @@ function LibrariesObservabilityPage() {
|
|
|
2803
2322
|
})
|
|
2804
2323
|
]
|
|
2805
2324
|
}),
|
|
2806
|
-
/* @__PURE__ */
|
|
2325
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
2807
2326
|
className: "space-y-4",
|
|
2808
2327
|
children: [
|
|
2809
|
-
/* @__PURE__ */
|
|
2810
|
-
className: "text-2xl
|
|
2328
|
+
/* @__PURE__ */ jsx14("h2", {
|
|
2329
|
+
className: "font-bold text-2xl",
|
|
2811
2330
|
children: "Installation"
|
|
2812
2331
|
}),
|
|
2813
|
-
/* @__PURE__ */
|
|
2332
|
+
/* @__PURE__ */ jsx14(InstallCommand13, {
|
|
2814
2333
|
package: "@contractspec/lib.observability"
|
|
2815
2334
|
})
|
|
2816
2335
|
]
|
|
2817
2336
|
}),
|
|
2818
|
-
/* @__PURE__ */
|
|
2337
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
2819
2338
|
className: "space-y-4",
|
|
2820
2339
|
children: [
|
|
2821
|
-
/* @__PURE__ */
|
|
2822
|
-
className: "text-2xl
|
|
2340
|
+
/* @__PURE__ */ jsx14("h2", {
|
|
2341
|
+
className: "font-bold text-2xl",
|
|
2823
2342
|
children: "Tracing"
|
|
2824
2343
|
}),
|
|
2825
|
-
/* @__PURE__ */
|
|
2344
|
+
/* @__PURE__ */ jsx14(CodeBlock14, {
|
|
2826
2345
|
language: "typescript",
|
|
2827
2346
|
code: `import { traceAsync, traceSync } from '@contractspec/lib.observability/tracing';
|
|
2828
2347
|
|
|
@@ -2833,14 +2352,14 @@ await traceAsync('process_order', async (span) => {
|
|
|
2833
2352
|
})
|
|
2834
2353
|
]
|
|
2835
2354
|
}),
|
|
2836
|
-
/* @__PURE__ */
|
|
2355
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
2837
2356
|
className: "space-y-4",
|
|
2838
2357
|
children: [
|
|
2839
|
-
/* @__PURE__ */
|
|
2840
|
-
className: "text-2xl
|
|
2358
|
+
/* @__PURE__ */ jsx14("h2", {
|
|
2359
|
+
className: "font-bold text-2xl",
|
|
2841
2360
|
children: "Metrics"
|
|
2842
2361
|
}),
|
|
2843
|
-
/* @__PURE__ */
|
|
2362
|
+
/* @__PURE__ */ jsx14(CodeBlock14, {
|
|
2844
2363
|
language: "typescript",
|
|
2845
2364
|
code: `import { createCounter, createHistogram } from '@contractspec/lib.observability/metrics';
|
|
2846
2365
|
|
|
@@ -2852,18 +2371,18 @@ latencyHistogram.record(0.123);`
|
|
|
2852
2371
|
})
|
|
2853
2372
|
]
|
|
2854
2373
|
}),
|
|
2855
|
-
/* @__PURE__ */
|
|
2374
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
2856
2375
|
className: "space-y-4",
|
|
2857
2376
|
children: [
|
|
2858
|
-
/* @__PURE__ */
|
|
2859
|
-
className: "text-2xl
|
|
2377
|
+
/* @__PURE__ */ jsx14("h2", {
|
|
2378
|
+
className: "font-bold text-2xl",
|
|
2860
2379
|
children: "Middleware"
|
|
2861
2380
|
}),
|
|
2862
|
-
/* @__PURE__ */
|
|
2381
|
+
/* @__PURE__ */ jsx14("p", {
|
|
2863
2382
|
className: "text-muted-foreground",
|
|
2864
2383
|
children: "Automatically instrument your HTTP handlers:"
|
|
2865
2384
|
}),
|
|
2866
|
-
/* @__PURE__ */
|
|
2385
|
+
/* @__PURE__ */ jsx14(CodeBlock14, {
|
|
2867
2386
|
language: "typescript",
|
|
2868
2387
|
code: `import { createTracingMiddleware } from '@contractspec/lib.observability/tracing/middleware';
|
|
2869
2388
|
|
|
@@ -2871,18 +2390,18 @@ app.use(createTracingMiddleware());`
|
|
|
2871
2390
|
})
|
|
2872
2391
|
]
|
|
2873
2392
|
}),
|
|
2874
|
-
/* @__PURE__ */
|
|
2393
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
2875
2394
|
className: "space-y-4",
|
|
2876
2395
|
children: [
|
|
2877
|
-
/* @__PURE__ */
|
|
2878
|
-
className: "text-2xl
|
|
2396
|
+
/* @__PURE__ */ jsx14("h2", {
|
|
2397
|
+
className: "font-bold text-2xl",
|
|
2879
2398
|
children: "Anomaly Detection"
|
|
2880
2399
|
}),
|
|
2881
|
-
/* @__PURE__ */
|
|
2400
|
+
/* @__PURE__ */ jsx14("p", {
|
|
2882
2401
|
className: "text-muted-foreground text-sm",
|
|
2883
2402
|
children: "Includes baseline calculation and anomaly detection helpers for auto-rollback without writing custom math."
|
|
2884
2403
|
}),
|
|
2885
|
-
/* @__PURE__ */
|
|
2404
|
+
/* @__PURE__ */ jsx14(CodeBlock14, {
|
|
2886
2405
|
language: "typescript",
|
|
2887
2406
|
code: `import { AnomalyDetector, RootCauseAnalyzer, AlertManager } from '@contractspec/lib.observability';
|
|
2888
2407
|
|
|
@@ -2898,20 +2417,20 @@ signals.forEach((signal) => {
|
|
|
2898
2417
|
})
|
|
2899
2418
|
]
|
|
2900
2419
|
}),
|
|
2901
|
-
/* @__PURE__ */
|
|
2420
|
+
/* @__PURE__ */ jsxs14("div", {
|
|
2902
2421
|
className: "flex items-center gap-4 pt-4",
|
|
2903
2422
|
children: [
|
|
2904
|
-
/* @__PURE__ */
|
|
2423
|
+
/* @__PURE__ */ jsx14(Link13, {
|
|
2905
2424
|
href: "/docs/libraries",
|
|
2906
2425
|
className: "btn-ghost",
|
|
2907
2426
|
children: "Back to Libraries"
|
|
2908
2427
|
}),
|
|
2909
|
-
/* @__PURE__ */
|
|
2428
|
+
/* @__PURE__ */ jsxs14(Link13, {
|
|
2910
2429
|
href: "/docs/libraries/slo",
|
|
2911
2430
|
className: "btn-primary",
|
|
2912
2431
|
children: [
|
|
2913
2432
|
"Next: SLO ",
|
|
2914
|
-
/* @__PURE__ */
|
|
2433
|
+
/* @__PURE__ */ jsx14(ChevronRight13, {
|
|
2915
2434
|
size: 16
|
|
2916
2435
|
})
|
|
2917
2436
|
]
|
|
@@ -2924,46 +2443,46 @@ signals.forEach((signal) => {
|
|
|
2924
2443
|
|
|
2925
2444
|
// src/components/docs/libraries/LibrariesOverlayEnginePage.tsx
|
|
2926
2445
|
import { CodeBlock as CodeBlock15, InstallCommand as InstallCommand14 } from "@contractspec/lib.design-system";
|
|
2927
|
-
import
|
|
2928
|
-
import { ChevronRight as
|
|
2929
|
-
import { jsx as
|
|
2446
|
+
import Link14 from "@contractspec/lib.ui-link";
|
|
2447
|
+
import { ChevronRight as ChevronRight14 } from "lucide-react";
|
|
2448
|
+
import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2930
2449
|
function LibrariesOverlayEnginePage() {
|
|
2931
|
-
return /* @__PURE__ */
|
|
2450
|
+
return /* @__PURE__ */ jsxs15("div", {
|
|
2932
2451
|
className: "space-y-8",
|
|
2933
2452
|
children: [
|
|
2934
|
-
/* @__PURE__ */
|
|
2453
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
2935
2454
|
className: "space-y-4",
|
|
2936
2455
|
children: [
|
|
2937
|
-
/* @__PURE__ */
|
|
2938
|
-
className: "text-4xl
|
|
2456
|
+
/* @__PURE__ */ jsx15("h1", {
|
|
2457
|
+
className: "font-bold text-4xl",
|
|
2939
2458
|
children: "Overlay Engine"
|
|
2940
2459
|
}),
|
|
2941
|
-
/* @__PURE__ */
|
|
2942
|
-
className: "text-muted-foreground
|
|
2460
|
+
/* @__PURE__ */ jsx15("p", {
|
|
2461
|
+
className: "text-lg text-muted-foreground",
|
|
2943
2462
|
children: "`@contractspec/lib.overlay-engine` keeps OverlaySpecs typed, signed, and auditable across tenants, roles, users, and devices."
|
|
2944
2463
|
})
|
|
2945
2464
|
]
|
|
2946
2465
|
}),
|
|
2947
|
-
/* @__PURE__ */
|
|
2466
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
2948
2467
|
className: "space-y-4",
|
|
2949
2468
|
children: [
|
|
2950
|
-
/* @__PURE__ */
|
|
2951
|
-
className: "text-2xl
|
|
2469
|
+
/* @__PURE__ */ jsx15("h2", {
|
|
2470
|
+
className: "font-bold text-2xl",
|
|
2952
2471
|
children: "Installation"
|
|
2953
2472
|
}),
|
|
2954
|
-
/* @__PURE__ */
|
|
2473
|
+
/* @__PURE__ */ jsx15(InstallCommand14, {
|
|
2955
2474
|
package: "@contractspec/lib.overlay-engine"
|
|
2956
2475
|
})
|
|
2957
2476
|
]
|
|
2958
2477
|
}),
|
|
2959
|
-
/* @__PURE__ */
|
|
2478
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
2960
2479
|
className: "space-y-4",
|
|
2961
2480
|
children: [
|
|
2962
|
-
/* @__PURE__ */
|
|
2963
|
-
className: "text-2xl
|
|
2481
|
+
/* @__PURE__ */ jsx15("h2", {
|
|
2482
|
+
className: "font-bold text-2xl",
|
|
2964
2483
|
children: "Define + Sign"
|
|
2965
2484
|
}),
|
|
2966
|
-
/* @__PURE__ */
|
|
2485
|
+
/* @__PURE__ */ jsx15(CodeBlock15, {
|
|
2967
2486
|
language: "typescript",
|
|
2968
2487
|
code: `import { defineOverlay } from '@contractspec/lib.overlay-engine/spec';
|
|
2969
2488
|
import { signOverlay } from '@contractspec/lib.overlay-engine/signer';
|
|
@@ -2979,18 +2498,18 @@ const signed = await signOverlay(overlay, privateKeyPem);`
|
|
|
2979
2498
|
})
|
|
2980
2499
|
]
|
|
2981
2500
|
}),
|
|
2982
|
-
/* @__PURE__ */
|
|
2501
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
2983
2502
|
className: "space-y-4",
|
|
2984
2503
|
children: [
|
|
2985
|
-
/* @__PURE__ */
|
|
2986
|
-
className: "text-2xl
|
|
2504
|
+
/* @__PURE__ */ jsx15("h2", {
|
|
2505
|
+
className: "font-bold text-2xl",
|
|
2987
2506
|
children: "Runtime"
|
|
2988
2507
|
}),
|
|
2989
|
-
/* @__PURE__ */
|
|
2508
|
+
/* @__PURE__ */ jsx15("p", {
|
|
2990
2509
|
className: "text-muted-foreground",
|
|
2991
2510
|
children: "`OverlayRegistry` stores signed overlays with specificity scoring. `OverlayEngine` merges modifications and emits audit events."
|
|
2992
2511
|
}),
|
|
2993
|
-
/* @__PURE__ */
|
|
2512
|
+
/* @__PURE__ */ jsx15(CodeBlock15, {
|
|
2994
2513
|
language: "typescript",
|
|
2995
2514
|
code: `const registry = new OverlayRegistry();
|
|
2996
2515
|
registry.register(signed);
|
|
@@ -3008,18 +2527,18 @@ const result = engine.apply({
|
|
|
3008
2527
|
})
|
|
3009
2528
|
]
|
|
3010
2529
|
}),
|
|
3011
|
-
/* @__PURE__ */
|
|
2530
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
3012
2531
|
className: "space-y-4",
|
|
3013
2532
|
children: [
|
|
3014
|
-
/* @__PURE__ */
|
|
3015
|
-
className: "text-2xl
|
|
2533
|
+
/* @__PURE__ */ jsx15("h2", {
|
|
2534
|
+
className: "font-bold text-2xl",
|
|
3016
2535
|
children: "React Hooks"
|
|
3017
2536
|
}),
|
|
3018
|
-
/* @__PURE__ */
|
|
2537
|
+
/* @__PURE__ */ jsx15("p", {
|
|
3019
2538
|
className: "text-muted-foreground",
|
|
3020
2539
|
children: "Render overlays in React/React Native via `useOverlay`."
|
|
3021
2540
|
}),
|
|
3022
|
-
/* @__PURE__ */
|
|
2541
|
+
/* @__PURE__ */ jsx15(CodeBlock15, {
|
|
3023
2542
|
language: "typescript",
|
|
3024
2543
|
code: `import { useOverlay } from '@contractspec/lib.overlay-engine/react';
|
|
3025
2544
|
|
|
@@ -3031,20 +2550,20 @@ const { target } = useOverlay(engine, {
|
|
|
3031
2550
|
})
|
|
3032
2551
|
]
|
|
3033
2552
|
}),
|
|
3034
|
-
/* @__PURE__ */
|
|
2553
|
+
/* @__PURE__ */ jsxs15("div", {
|
|
3035
2554
|
className: "flex items-center gap-4 pt-4",
|
|
3036
2555
|
children: [
|
|
3037
|
-
/* @__PURE__ */
|
|
2556
|
+
/* @__PURE__ */ jsx15(Link14, {
|
|
3038
2557
|
href: "/docs/libraries",
|
|
3039
2558
|
className: "btn-ghost",
|
|
3040
2559
|
children: "Back to Libraries"
|
|
3041
2560
|
}),
|
|
3042
|
-
/* @__PURE__ */
|
|
2561
|
+
/* @__PURE__ */ jsxs15(Link14, {
|
|
3043
2562
|
href: "/docs/libraries/workflow-composer",
|
|
3044
2563
|
className: "btn-primary",
|
|
3045
2564
|
children: [
|
|
3046
2565
|
"Next: Workflow Composer ",
|
|
3047
|
-
/* @__PURE__ */
|
|
2566
|
+
/* @__PURE__ */ jsx15(ChevronRight14, {
|
|
3048
2567
|
size: 16
|
|
3049
2568
|
})
|
|
3050
2569
|
]
|
|
@@ -3055,6 +2574,174 @@ const { target } = useOverlay(engine, {
|
|
|
3055
2574
|
});
|
|
3056
2575
|
}
|
|
3057
2576
|
|
|
2577
|
+
// src/components/docs/libraries/LibrariesOverviewPage.tsx
|
|
2578
|
+
import Link15 from "@contractspec/lib.ui-link";
|
|
2579
|
+
import { ChevronRight as ChevronRight15 } from "lucide-react";
|
|
2580
|
+
import { jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2581
|
+
var libraryGroups = [
|
|
2582
|
+
{
|
|
2583
|
+
title: "Contract and schema foundation",
|
|
2584
|
+
body: "Use these packages to define explicit contracts, schemas, and generated artifacts without inventing a new platform-specific language.",
|
|
2585
|
+
items: [
|
|
2586
|
+
{
|
|
2587
|
+
title: "@contractspec/lib.contracts-spec",
|
|
2588
|
+
description: "Define operations, events, policies, and generated surfaces in TypeScript.",
|
|
2589
|
+
href: "/docs/libraries/contracts"
|
|
2590
|
+
},
|
|
2591
|
+
{
|
|
2592
|
+
title: "@contractspec/lib.schema",
|
|
2593
|
+
description: "Share type-safe schema definitions across validation, clients, and runtime adapters.",
|
|
2594
|
+
href: "/docs/libraries/schema"
|
|
2595
|
+
}
|
|
2596
|
+
]
|
|
2597
|
+
},
|
|
2598
|
+
{
|
|
2599
|
+
title: "Runtime and surface libraries",
|
|
2600
|
+
body: "These packages execute the contract model across UI, data, observability, workflows, and generated runtime behavior.",
|
|
2601
|
+
items: [
|
|
2602
|
+
{
|
|
2603
|
+
title: "@contractspec/lib.runtime",
|
|
2604
|
+
description: "Run typed capability surfaces, execute policies, and connect runtime adapters.",
|
|
2605
|
+
href: "/docs/libraries/runtime"
|
|
2606
|
+
},
|
|
2607
|
+
{
|
|
2608
|
+
title: "@contractspec/lib.ui-kit",
|
|
2609
|
+
description: "Render shared surfaces across web and React Native without forking the contract layer.",
|
|
2610
|
+
href: "/docs/libraries/ui-kit"
|
|
2611
|
+
},
|
|
2612
|
+
{
|
|
2613
|
+
title: "@contractspec/lib.design-system",
|
|
2614
|
+
description: "Build higher-level product surfaces and documented marketing/docs primitives on top of the UI kit.",
|
|
2615
|
+
href: "/docs/libraries/design-system"
|
|
2616
|
+
},
|
|
2617
|
+
{
|
|
2618
|
+
title: "@contractspec/lib.data-views",
|
|
2619
|
+
description: "Generate and render list/detail style surfaces that stay aligned with data contracts.",
|
|
2620
|
+
href: "/docs/libraries/data-views"
|
|
2621
|
+
}
|
|
2622
|
+
]
|
|
2623
|
+
},
|
|
2624
|
+
{
|
|
2625
|
+
title: "Operator and system packages",
|
|
2626
|
+
body: "These packages matter once the system is live and you need governance, resilience, and observability.",
|
|
2627
|
+
items: [
|
|
2628
|
+
{
|
|
2629
|
+
title: "@contractspec/lib.observability",
|
|
2630
|
+
description: "Trace, log, and measure contract execution using the same system boundaries.",
|
|
2631
|
+
href: "/docs/libraries/observability"
|
|
2632
|
+
},
|
|
2633
|
+
{
|
|
2634
|
+
title: "@contractspec/lib.resilience",
|
|
2635
|
+
description: "Add circuit breakers, retries, and failure controls without hiding the integration model.",
|
|
2636
|
+
href: "/docs/libraries/resilience"
|
|
2637
|
+
},
|
|
2638
|
+
{
|
|
2639
|
+
title: "@contractspec/lib.multi-tenancy",
|
|
2640
|
+
description: "Keep tenant-specific config, policy, and surface resolution explicit.",
|
|
2641
|
+
href: "/docs/libraries/multi-tenancy"
|
|
2642
|
+
},
|
|
2643
|
+
{
|
|
2644
|
+
title: "@contractspec/lib.workflow-composer",
|
|
2645
|
+
description: "Compose and extend workflows without smearing orchestration concerns across apps.",
|
|
2646
|
+
href: "/docs/libraries/workflow-composer"
|
|
2647
|
+
}
|
|
2648
|
+
]
|
|
2649
|
+
}
|
|
2650
|
+
];
|
|
2651
|
+
function LibrariesOverviewPage() {
|
|
2652
|
+
return /* @__PURE__ */ jsxs16("div", {
|
|
2653
|
+
className: "space-y-10",
|
|
2654
|
+
children: [
|
|
2655
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
2656
|
+
className: "space-y-3",
|
|
2657
|
+
children: [
|
|
2658
|
+
/* @__PURE__ */ jsx16("p", {
|
|
2659
|
+
className: "editorial-kicker",
|
|
2660
|
+
children: "Build"
|
|
2661
|
+
}),
|
|
2662
|
+
/* @__PURE__ */ jsx16("h1", {
|
|
2663
|
+
className: "font-serif text-4xl tracking-[-0.04em] md:text-5xl",
|
|
2664
|
+
children: "The OSS foundation is a library system, not a closed platform."
|
|
2665
|
+
}),
|
|
2666
|
+
/* @__PURE__ */ jsx16("p", {
|
|
2667
|
+
className: "max-w-3xl text-lg text-muted-foreground leading-8",
|
|
2668
|
+
children: "ContractSpec is assembled from libraries that remain useful on their own and stronger together. Start with the contract and schema foundation, then add runtime, UI, integration, and operator packages as your system grows."
|
|
2669
|
+
})
|
|
2670
|
+
]
|
|
2671
|
+
}),
|
|
2672
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
2673
|
+
className: "editorial-proof-strip",
|
|
2674
|
+
children: [
|
|
2675
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
2676
|
+
className: "editorial-stat",
|
|
2677
|
+
children: [
|
|
2678
|
+
/* @__PURE__ */ jsx16("span", {
|
|
2679
|
+
className: "editorial-label",
|
|
2680
|
+
children: "Layering rule"
|
|
2681
|
+
}),
|
|
2682
|
+
/* @__PURE__ */ jsx16("span", {
|
|
2683
|
+
className: "editorial-stat-value",
|
|
2684
|
+
children: "libs \u2192 bundles \u2192 apps"
|
|
2685
|
+
})
|
|
2686
|
+
]
|
|
2687
|
+
}),
|
|
2688
|
+
/* @__PURE__ */ jsx16("p", {
|
|
2689
|
+
className: "max-w-2xl text-muted-foreground text-sm leading-7",
|
|
2690
|
+
children: "Keep reusable behavior in libraries, compose it into bundle-level surfaces, and reserve app packages for concrete delivery shells."
|
|
2691
|
+
})
|
|
2692
|
+
]
|
|
2693
|
+
}),
|
|
2694
|
+
/* @__PURE__ */ jsx16("div", {
|
|
2695
|
+
className: "space-y-6",
|
|
2696
|
+
children: libraryGroups.map((group) => /* @__PURE__ */ jsxs16("section", {
|
|
2697
|
+
className: "editorial-panel space-y-5",
|
|
2698
|
+
children: [
|
|
2699
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
2700
|
+
className: "space-y-2",
|
|
2701
|
+
children: [
|
|
2702
|
+
/* @__PURE__ */ jsx16("h2", {
|
|
2703
|
+
className: "font-serif text-3xl tracking-[-0.03em]",
|
|
2704
|
+
children: group.title
|
|
2705
|
+
}),
|
|
2706
|
+
/* @__PURE__ */ jsx16("p", {
|
|
2707
|
+
className: "text-muted-foreground text-sm leading-7",
|
|
2708
|
+
children: group.body
|
|
2709
|
+
})
|
|
2710
|
+
]
|
|
2711
|
+
}),
|
|
2712
|
+
/* @__PURE__ */ jsx16("div", {
|
|
2713
|
+
className: "grid gap-4 md:grid-cols-2",
|
|
2714
|
+
children: group.items.map((item) => /* @__PURE__ */ jsxs16(Link15, {
|
|
2715
|
+
href: item.href,
|
|
2716
|
+
className: "rounded-[24px] border border-border/75 bg-background/70 p-5 transition-colors hover:border-[color:rgb(162_79_42_/_0.45)]",
|
|
2717
|
+
children: [
|
|
2718
|
+
/* @__PURE__ */ jsx16("h3", {
|
|
2719
|
+
className: "font-semibold text-lg",
|
|
2720
|
+
children: item.title
|
|
2721
|
+
}),
|
|
2722
|
+
/* @__PURE__ */ jsx16("p", {
|
|
2723
|
+
className: "mt-2 text-muted-foreground text-sm leading-7",
|
|
2724
|
+
children: item.description
|
|
2725
|
+
}),
|
|
2726
|
+
/* @__PURE__ */ jsxs16("div", {
|
|
2727
|
+
className: "mt-3 flex items-center gap-2 text-[color:var(--rust)] text-sm",
|
|
2728
|
+
children: [
|
|
2729
|
+
"Learn more ",
|
|
2730
|
+
/* @__PURE__ */ jsx16(ChevronRight15, {
|
|
2731
|
+
size: 14
|
|
2732
|
+
})
|
|
2733
|
+
]
|
|
2734
|
+
})
|
|
2735
|
+
]
|
|
2736
|
+
}, item.title))
|
|
2737
|
+
})
|
|
2738
|
+
]
|
|
2739
|
+
}, group.title))
|
|
2740
|
+
})
|
|
2741
|
+
]
|
|
2742
|
+
});
|
|
2743
|
+
}
|
|
2744
|
+
|
|
3058
2745
|
// src/components/docs/libraries/LibrariesPersonalizationPage.tsx
|
|
3059
2746
|
import { CodeBlock as CodeBlock16, InstallCommand as InstallCommand15 } from "@contractspec/lib.design-system";
|
|
3060
2747
|
import Link16 from "@contractspec/lib.ui-link";
|
|
@@ -3068,11 +2755,11 @@ function LibrariesPersonalizationPage() {
|
|
|
3068
2755
|
className: "space-y-4",
|
|
3069
2756
|
children: [
|
|
3070
2757
|
/* @__PURE__ */ jsx17("h1", {
|
|
3071
|
-
className: "text-4xl
|
|
2758
|
+
className: "font-bold text-4xl",
|
|
3072
2759
|
children: "@contractspec/lib.personalization"
|
|
3073
2760
|
}),
|
|
3074
2761
|
/* @__PURE__ */ jsx17("p", {
|
|
3075
|
-
className: "text-muted-foreground
|
|
2762
|
+
className: "text-lg text-muted-foreground",
|
|
3076
2763
|
children: "Track field/feature/workflow usage, analyze drop-offs, and convert insights into OverlaySpecs or workflow tweaks."
|
|
3077
2764
|
})
|
|
3078
2765
|
]
|
|
@@ -3081,7 +2768,7 @@ function LibrariesPersonalizationPage() {
|
|
|
3081
2768
|
className: "space-y-4",
|
|
3082
2769
|
children: [
|
|
3083
2770
|
/* @__PURE__ */ jsx17("h2", {
|
|
3084
|
-
className: "text-2xl
|
|
2771
|
+
className: "font-bold text-2xl",
|
|
3085
2772
|
children: "Installation"
|
|
3086
2773
|
}),
|
|
3087
2774
|
/* @__PURE__ */ jsx17(InstallCommand15, {
|
|
@@ -3093,7 +2780,7 @@ function LibrariesPersonalizationPage() {
|
|
|
3093
2780
|
className: "space-y-4",
|
|
3094
2781
|
children: [
|
|
3095
2782
|
/* @__PURE__ */ jsx17("h2", {
|
|
3096
|
-
className: "text-2xl
|
|
2783
|
+
className: "font-bold text-2xl",
|
|
3097
2784
|
children: "Tracker"
|
|
3098
2785
|
}),
|
|
3099
2786
|
/* @__PURE__ */ jsx17("p", {
|
|
@@ -3118,7 +2805,7 @@ tracker.trackWorkflowStep({ workflow: 'invoice', step: 'review', status: 'entere
|
|
|
3118
2805
|
className: "space-y-4",
|
|
3119
2806
|
children: [
|
|
3120
2807
|
/* @__PURE__ */ jsx17("h2", {
|
|
3121
|
-
className: "text-2xl
|
|
2808
|
+
className: "font-bold text-2xl",
|
|
3122
2809
|
children: "Analyzer"
|
|
3123
2810
|
}),
|
|
3124
2811
|
/* @__PURE__ */ jsx17("p", {
|
|
@@ -3139,7 +2826,7 @@ const insights = await analyzer.analyze({ tenantId: 'acme', userId: 'ops-42' });
|
|
|
3139
2826
|
className: "space-y-4",
|
|
3140
2827
|
children: [
|
|
3141
2828
|
/* @__PURE__ */ jsx17("h2", {
|
|
3142
|
-
className: "text-2xl
|
|
2829
|
+
className: "font-bold text-2xl",
|
|
3143
2830
|
children: "Adapter"
|
|
3144
2831
|
}),
|
|
3145
2832
|
/* @__PURE__ */ jsx17("p", {
|
|
@@ -3195,11 +2882,11 @@ function LibrariesProgressiveDeliveryPage() {
|
|
|
3195
2882
|
className: "space-y-4",
|
|
3196
2883
|
children: [
|
|
3197
2884
|
/* @__PURE__ */ jsx18("h1", {
|
|
3198
|
-
className: "text-4xl
|
|
2885
|
+
className: "font-bold text-4xl",
|
|
3199
2886
|
children: "Progressive Delivery Library"
|
|
3200
2887
|
}),
|
|
3201
2888
|
/* @__PURE__ */ jsxs18("p", {
|
|
3202
|
-
className: "text-muted-foreground
|
|
2889
|
+
className: "text-lg text-muted-foreground",
|
|
3203
2890
|
children: [
|
|
3204
2891
|
"The ",
|
|
3205
2892
|
/* @__PURE__ */ jsx18("code", {
|
|
@@ -3214,7 +2901,7 @@ function LibrariesProgressiveDeliveryPage() {
|
|
|
3214
2901
|
className: "space-y-4",
|
|
3215
2902
|
children: [
|
|
3216
2903
|
/* @__PURE__ */ jsx18("h2", {
|
|
3217
|
-
className: "text-2xl
|
|
2904
|
+
className: "font-bold text-2xl",
|
|
3218
2905
|
children: "Installation"
|
|
3219
2906
|
}),
|
|
3220
2907
|
/* @__PURE__ */ jsx18(InstallCommand16, {
|
|
@@ -3226,7 +2913,7 @@ function LibrariesProgressiveDeliveryPage() {
|
|
|
3226
2913
|
className: "space-y-4",
|
|
3227
2914
|
children: [
|
|
3228
2915
|
/* @__PURE__ */ jsx18("h2", {
|
|
3229
|
-
className: "text-2xl
|
|
2916
|
+
className: "font-bold text-2xl",
|
|
3230
2917
|
children: "Define a Strategy"
|
|
3231
2918
|
}),
|
|
3232
2919
|
/* @__PURE__ */ jsx18(CodeBlock17, {
|
|
@@ -3249,7 +2936,7 @@ const strategy = {
|
|
|
3249
2936
|
className: "space-y-4",
|
|
3250
2937
|
children: [
|
|
3251
2938
|
/* @__PURE__ */ jsx18("h2", {
|
|
3252
|
-
className: "text-2xl
|
|
2939
|
+
className: "font-bold text-2xl",
|
|
3253
2940
|
children: "Run the Coordinator"
|
|
3254
2941
|
}),
|
|
3255
2942
|
/* @__PURE__ */ jsx18(CodeBlock17, {
|
|
@@ -3292,7 +2979,7 @@ const result = await coordinator.run();`
|
|
|
3292
2979
|
className: "space-y-4",
|
|
3293
2980
|
children: [
|
|
3294
2981
|
/* @__PURE__ */ jsx18("h2", {
|
|
3295
|
-
className: "text-2xl
|
|
2982
|
+
className: "font-bold text-2xl",
|
|
3296
2983
|
children: "Blue-Green Swap"
|
|
3297
2984
|
}),
|
|
3298
2985
|
/* @__PURE__ */ jsxs18("p", {
|
|
@@ -3344,11 +3031,11 @@ function LibrariesResiliencePage() {
|
|
|
3344
3031
|
className: "space-y-4",
|
|
3345
3032
|
children: [
|
|
3346
3033
|
/* @__PURE__ */ jsx19("h1", {
|
|
3347
|
-
className: "text-4xl
|
|
3034
|
+
className: "font-bold text-4xl",
|
|
3348
3035
|
children: "Resilience Library"
|
|
3349
3036
|
}),
|
|
3350
3037
|
/* @__PURE__ */ jsxs19("p", {
|
|
3351
|
-
className: "text-muted-foreground
|
|
3038
|
+
className: "text-lg text-muted-foreground",
|
|
3352
3039
|
children: [
|
|
3353
3040
|
"The ",
|
|
3354
3041
|
/* @__PURE__ */ jsx19("code", {
|
|
@@ -3363,7 +3050,7 @@ function LibrariesResiliencePage() {
|
|
|
3363
3050
|
className: "space-y-4",
|
|
3364
3051
|
children: [
|
|
3365
3052
|
/* @__PURE__ */ jsx19("h2", {
|
|
3366
|
-
className: "text-2xl
|
|
3053
|
+
className: "font-bold text-2xl",
|
|
3367
3054
|
children: "Installation"
|
|
3368
3055
|
}),
|
|
3369
3056
|
/* @__PURE__ */ jsx19(InstallCommand17, {
|
|
@@ -3375,7 +3062,7 @@ function LibrariesResiliencePage() {
|
|
|
3375
3062
|
className: "space-y-4",
|
|
3376
3063
|
children: [
|
|
3377
3064
|
/* @__PURE__ */ jsx19("h2", {
|
|
3378
|
-
className: "text-2xl
|
|
3065
|
+
className: "font-bold text-2xl",
|
|
3379
3066
|
children: "Circuit Breaker"
|
|
3380
3067
|
}),
|
|
3381
3068
|
/* @__PURE__ */ jsx19("p", {
|
|
@@ -3401,7 +3088,7 @@ const result = await breaker.execute(async () => {
|
|
|
3401
3088
|
className: "space-y-4",
|
|
3402
3089
|
children: [
|
|
3403
3090
|
/* @__PURE__ */ jsx19("h2", {
|
|
3404
|
-
className: "text-2xl
|
|
3091
|
+
className: "font-bold text-2xl",
|
|
3405
3092
|
children: "Retry"
|
|
3406
3093
|
}),
|
|
3407
3094
|
/* @__PURE__ */ jsx19("p", {
|
|
@@ -3425,7 +3112,7 @@ const result = await retry(
|
|
|
3425
3112
|
className: "space-y-4",
|
|
3426
3113
|
children: [
|
|
3427
3114
|
/* @__PURE__ */ jsx19("h2", {
|
|
3428
|
-
className: "text-2xl
|
|
3115
|
+
className: "font-bold text-2xl",
|
|
3429
3116
|
children: "Timeout & Fallback"
|
|
3430
3117
|
}),
|
|
3431
3118
|
/* @__PURE__ */ jsx19("p", {
|
|
@@ -3468,9 +3155,9 @@ const result = await fallback(
|
|
|
3468
3155
|
}
|
|
3469
3156
|
|
|
3470
3157
|
// src/components/docs/libraries/LibrariesRuntimePage.tsx
|
|
3158
|
+
import { CodeBlock as CodeBlock19, InstallCommand as InstallCommand18 } from "@contractspec/lib.design-system";
|
|
3471
3159
|
import Link19 from "@contractspec/lib.ui-link";
|
|
3472
3160
|
import { ChevronRight as ChevronRight19 } from "lucide-react";
|
|
3473
|
-
import { CodeBlock as CodeBlock19, InstallCommand as InstallCommand18 } from "@contractspec/lib.design-system";
|
|
3474
3161
|
import { jsx as jsx20, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3475
3162
|
function LibrariesRuntimePage() {
|
|
3476
3163
|
return /* @__PURE__ */ jsxs20("div", {
|
|
@@ -3480,7 +3167,7 @@ function LibrariesRuntimePage() {
|
|
|
3480
3167
|
className: "space-y-4",
|
|
3481
3168
|
children: [
|
|
3482
3169
|
/* @__PURE__ */ jsx20("h1", {
|
|
3483
|
-
className: "text-4xl
|
|
3170
|
+
className: "font-bold text-4xl",
|
|
3484
3171
|
children: "Runtime Libraries"
|
|
3485
3172
|
}),
|
|
3486
3173
|
/* @__PURE__ */ jsx20("p", {
|
|
@@ -3493,7 +3180,7 @@ function LibrariesRuntimePage() {
|
|
|
3493
3180
|
className: "space-y-4",
|
|
3494
3181
|
children: [
|
|
3495
3182
|
/* @__PURE__ */ jsx20("h2", {
|
|
3496
|
-
className: "text-2xl
|
|
3183
|
+
className: "font-bold text-2xl",
|
|
3497
3184
|
children: "Installation"
|
|
3498
3185
|
}),
|
|
3499
3186
|
/* @__PURE__ */ jsx20(InstallCommand18, {
|
|
@@ -3505,7 +3192,7 @@ function LibrariesRuntimePage() {
|
|
|
3505
3192
|
className: "space-y-4",
|
|
3506
3193
|
children: [
|
|
3507
3194
|
/* @__PURE__ */ jsx20("h2", {
|
|
3508
|
-
className: "text-2xl
|
|
3195
|
+
className: "font-bold text-2xl",
|
|
3509
3196
|
children: "Libraries"
|
|
3510
3197
|
}),
|
|
3511
3198
|
/* @__PURE__ */ jsxs20("div", {
|
|
@@ -3515,11 +3202,11 @@ function LibrariesRuntimePage() {
|
|
|
3515
3202
|
className: "card-subtle p-6",
|
|
3516
3203
|
children: [
|
|
3517
3204
|
/* @__PURE__ */ jsx20("h3", {
|
|
3518
|
-
className: "text-lg
|
|
3205
|
+
className: "font-bold text-lg",
|
|
3519
3206
|
children: "@contractspec/lib.presentation-runtime-core"
|
|
3520
3207
|
}),
|
|
3521
3208
|
/* @__PURE__ */ jsxs20("p", {
|
|
3522
|
-
className: "text-muted-foreground
|
|
3209
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
3523
3210
|
children: [
|
|
3524
3211
|
/* @__PURE__ */ jsx20("strong", {
|
|
3525
3212
|
children: "Framework-Agnostic Core"
|
|
@@ -3533,11 +3220,11 @@ function LibrariesRuntimePage() {
|
|
|
3533
3220
|
className: "card-subtle p-6",
|
|
3534
3221
|
children: [
|
|
3535
3222
|
/* @__PURE__ */ jsx20("h3", {
|
|
3536
|
-
className: "text-lg
|
|
3223
|
+
className: "font-bold text-lg",
|
|
3537
3224
|
children: "@contractspec/lib.presentation-runtime-react"
|
|
3538
3225
|
}),
|
|
3539
3226
|
/* @__PURE__ */ jsxs20("p", {
|
|
3540
|
-
className: "text-muted-foreground
|
|
3227
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
3541
3228
|
children: [
|
|
3542
3229
|
/* @__PURE__ */ jsx20("strong", {
|
|
3543
3230
|
children: "React Bindings"
|
|
@@ -3551,11 +3238,11 @@ function LibrariesRuntimePage() {
|
|
|
3551
3238
|
className: "card-subtle p-6",
|
|
3552
3239
|
children: [
|
|
3553
3240
|
/* @__PURE__ */ jsx20("h3", {
|
|
3554
|
-
className: "text-lg
|
|
3241
|
+
className: "font-bold text-lg",
|
|
3555
3242
|
children: "@contractspec/lib.presentation-runtime-react-native"
|
|
3556
3243
|
}),
|
|
3557
3244
|
/* @__PURE__ */ jsxs20("p", {
|
|
3558
|
-
className: "text-muted-foreground
|
|
3245
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
3559
3246
|
children: [
|
|
3560
3247
|
/* @__PURE__ */ jsx20("strong", {
|
|
3561
3248
|
children: "React Native Bindings"
|
|
@@ -3573,7 +3260,7 @@ function LibrariesRuntimePage() {
|
|
|
3573
3260
|
className: "space-y-4",
|
|
3574
3261
|
children: [
|
|
3575
3262
|
/* @__PURE__ */ jsx20("h2", {
|
|
3576
|
-
className: "text-2xl
|
|
3263
|
+
className: "font-bold text-2xl",
|
|
3577
3264
|
children: "Example: React Workflow"
|
|
3578
3265
|
}),
|
|
3579
3266
|
/* @__PURE__ */ jsx20(CodeBlock19, {
|
|
@@ -3626,7 +3313,7 @@ export function OnboardingPage() {
|
|
|
3626
3313
|
className: "space-y-4",
|
|
3627
3314
|
children: [
|
|
3628
3315
|
/* @__PURE__ */ jsx20("h2", {
|
|
3629
|
-
className: "text-2xl
|
|
3316
|
+
className: "font-bold text-2xl",
|
|
3630
3317
|
children: "Architecture"
|
|
3631
3318
|
}),
|
|
3632
3319
|
/* @__PURE__ */ jsx20("p", {
|
|
@@ -3634,7 +3321,7 @@ export function OnboardingPage() {
|
|
|
3634
3321
|
children: 'The runtime follows a "render-loop" pattern:'
|
|
3635
3322
|
}),
|
|
3636
3323
|
/* @__PURE__ */ jsxs20("ol", {
|
|
3637
|
-
className: "
|
|
3324
|
+
className: "list-inside list-decimal space-y-2 text-muted-foreground",
|
|
3638
3325
|
children: [
|
|
3639
3326
|
/* @__PURE__ */ jsxs20("li", {
|
|
3640
3327
|
children: [
|
|
@@ -3705,9 +3392,9 @@ export function OnboardingPage() {
|
|
|
3705
3392
|
}
|
|
3706
3393
|
|
|
3707
3394
|
// src/components/docs/libraries/LibrariesSchemaPage.tsx
|
|
3395
|
+
import { CodeBlock as CodeBlock20, InstallCommand as InstallCommand19 } from "@contractspec/lib.design-system";
|
|
3708
3396
|
import Link20 from "@contractspec/lib.ui-link";
|
|
3709
3397
|
import { ChevronRight as ChevronRight20 } from "lucide-react";
|
|
3710
|
-
import { CodeBlock as CodeBlock20, InstallCommand as InstallCommand19 } from "@contractspec/lib.design-system";
|
|
3711
3398
|
import { jsx as jsx21, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3712
3399
|
function LibrariesSchemaPage() {
|
|
3713
3400
|
return /* @__PURE__ */ jsxs21("div", {
|
|
@@ -3717,7 +3404,7 @@ function LibrariesSchemaPage() {
|
|
|
3717
3404
|
className: "space-y-4",
|
|
3718
3405
|
children: [
|
|
3719
3406
|
/* @__PURE__ */ jsx21("h1", {
|
|
3720
|
-
className: "text-4xl
|
|
3407
|
+
className: "font-bold text-4xl",
|
|
3721
3408
|
children: "@contractspec/lib.schema"
|
|
3722
3409
|
}),
|
|
3723
3410
|
/* @__PURE__ */ jsx21("p", {
|
|
@@ -3730,7 +3417,7 @@ function LibrariesSchemaPage() {
|
|
|
3730
3417
|
className: "space-y-4",
|
|
3731
3418
|
children: [
|
|
3732
3419
|
/* @__PURE__ */ jsx21("h2", {
|
|
3733
|
-
className: "text-2xl
|
|
3420
|
+
className: "font-bold text-2xl",
|
|
3734
3421
|
children: "Installation"
|
|
3735
3422
|
}),
|
|
3736
3423
|
/* @__PURE__ */ jsx21(InstallCommand19, {
|
|
@@ -3742,16 +3429,16 @@ function LibrariesSchemaPage() {
|
|
|
3742
3429
|
className: "space-y-4",
|
|
3743
3430
|
children: [
|
|
3744
3431
|
/* @__PURE__ */ jsx21("h2", {
|
|
3745
|
-
className: "text-2xl
|
|
3432
|
+
className: "font-bold text-2xl",
|
|
3746
3433
|
children: "Core Exports"
|
|
3747
3434
|
}),
|
|
3748
3435
|
/* @__PURE__ */ jsxs21("ul", {
|
|
3749
|
-
className: "text-muted-foreground
|
|
3436
|
+
className: "space-y-2 text-muted-foreground",
|
|
3750
3437
|
children: [
|
|
3751
3438
|
/* @__PURE__ */ jsxs21("li", {
|
|
3752
3439
|
children: [
|
|
3753
3440
|
/* @__PURE__ */ jsx21("code", {
|
|
3754
|
-
className: "bg-background/50
|
|
3441
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3755
3442
|
children: "SchemaModel"
|
|
3756
3443
|
}),
|
|
3757
3444
|
": Compose fields into typed object models"
|
|
@@ -3760,7 +3447,7 @@ function LibrariesSchemaPage() {
|
|
|
3760
3447
|
/* @__PURE__ */ jsxs21("li", {
|
|
3761
3448
|
children: [
|
|
3762
3449
|
/* @__PURE__ */ jsx21("code", {
|
|
3763
|
-
className: "bg-background/50
|
|
3450
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3764
3451
|
children: "ScalarTypeEnum"
|
|
3765
3452
|
}),
|
|
3766
3453
|
": Common scalar types (NonEmptyString, Email, DateTime, etc.)"
|
|
@@ -3769,7 +3456,7 @@ function LibrariesSchemaPage() {
|
|
|
3769
3456
|
/* @__PURE__ */ jsxs21("li", {
|
|
3770
3457
|
children: [
|
|
3771
3458
|
/* @__PURE__ */ jsx21("code", {
|
|
3772
|
-
className: "bg-background/50
|
|
3459
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3773
3460
|
children: "defineEnum"
|
|
3774
3461
|
}),
|
|
3775
3462
|
": Create type-safe enums"
|
|
@@ -3778,7 +3465,7 @@ function LibrariesSchemaPage() {
|
|
|
3778
3465
|
/* @__PURE__ */ jsxs21("li", {
|
|
3779
3466
|
children: [
|
|
3780
3467
|
/* @__PURE__ */ jsx21("code", {
|
|
3781
|
-
className: "bg-background/50
|
|
3468
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3782
3469
|
children: "FieldType"
|
|
3783
3470
|
}),
|
|
3784
3471
|
": Wrap scalars with Zod/GraphQL/JSON Schema"
|
|
@@ -3792,7 +3479,7 @@ function LibrariesSchemaPage() {
|
|
|
3792
3479
|
className: "space-y-4",
|
|
3793
3480
|
children: [
|
|
3794
3481
|
/* @__PURE__ */ jsx21("h2", {
|
|
3795
|
-
className: "text-2xl
|
|
3482
|
+
className: "font-bold text-2xl",
|
|
3796
3483
|
children: "Example: Basic Schema"
|
|
3797
3484
|
}),
|
|
3798
3485
|
/* @__PURE__ */ jsx21(CodeBlock20, {
|
|
@@ -3823,7 +3510,7 @@ const jsonSchema = CreateSpotInput.getJsonSchema();`
|
|
|
3823
3510
|
className: "space-y-4",
|
|
3824
3511
|
children: [
|
|
3825
3512
|
/* @__PURE__ */ jsx21("h2", {
|
|
3826
|
-
className: "text-2xl
|
|
3513
|
+
className: "font-bold text-2xl",
|
|
3827
3514
|
children: "Example: Enums"
|
|
3828
3515
|
}),
|
|
3829
3516
|
/* @__PURE__ */ jsx21(CodeBlock20, {
|
|
@@ -3851,7 +3538,7 @@ const RecurrenceRule = new SchemaModel({
|
|
|
3851
3538
|
className: "space-y-4",
|
|
3852
3539
|
children: [
|
|
3853
3540
|
/* @__PURE__ */ jsx21("h2", {
|
|
3854
|
-
className: "text-2xl
|
|
3541
|
+
className: "font-bold text-2xl",
|
|
3855
3542
|
children: "Available Scalars"
|
|
3856
3543
|
}),
|
|
3857
3544
|
/* @__PURE__ */ jsxs21("div", {
|
|
@@ -3865,7 +3552,7 @@ const RecurrenceRule = new SchemaModel({
|
|
|
3865
3552
|
children: "Strings"
|
|
3866
3553
|
}),
|
|
3867
3554
|
/* @__PURE__ */ jsxs21("ul", {
|
|
3868
|
-
className: "
|
|
3555
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
3869
3556
|
children: [
|
|
3870
3557
|
/* @__PURE__ */ jsx21("li", {
|
|
3871
3558
|
children: /* @__PURE__ */ jsx21("code", {
|
|
@@ -3909,7 +3596,7 @@ const RecurrenceRule = new SchemaModel({
|
|
|
3909
3596
|
children: "Numbers"
|
|
3910
3597
|
}),
|
|
3911
3598
|
/* @__PURE__ */ jsxs21("ul", {
|
|
3912
|
-
className: "
|
|
3599
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
3913
3600
|
children: [
|
|
3914
3601
|
/* @__PURE__ */ jsx21("li", {
|
|
3915
3602
|
children: /* @__PURE__ */ jsx21("code", {
|
|
@@ -3938,7 +3625,7 @@ const RecurrenceRule = new SchemaModel({
|
|
|
3938
3625
|
children: "Dates & Times"
|
|
3939
3626
|
}),
|
|
3940
3627
|
/* @__PURE__ */ jsxs21("ul", {
|
|
3941
|
-
className: "
|
|
3628
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
3942
3629
|
children: [
|
|
3943
3630
|
/* @__PURE__ */ jsx21("li", {
|
|
3944
3631
|
children: /* @__PURE__ */ jsx21("code", {
|
|
@@ -3962,7 +3649,7 @@ const RecurrenceRule = new SchemaModel({
|
|
|
3962
3649
|
children: "Generic"
|
|
3963
3650
|
}),
|
|
3964
3651
|
/* @__PURE__ */ jsxs21("ul", {
|
|
3965
|
-
className: "
|
|
3652
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
3966
3653
|
children: [
|
|
3967
3654
|
/* @__PURE__ */ jsx21("li", {
|
|
3968
3655
|
children: /* @__PURE__ */ jsx21("code", {
|
|
@@ -4019,11 +3706,11 @@ function LibrariesSLOPage() {
|
|
|
4019
3706
|
className: "space-y-4",
|
|
4020
3707
|
children: [
|
|
4021
3708
|
/* @__PURE__ */ jsx22("h1", {
|
|
4022
|
-
className: "text-4xl
|
|
3709
|
+
className: "font-bold text-4xl",
|
|
4023
3710
|
children: "SLO Library"
|
|
4024
3711
|
}),
|
|
4025
3712
|
/* @__PURE__ */ jsxs22("p", {
|
|
4026
|
-
className: "text-muted-foreground
|
|
3713
|
+
className: "text-lg text-muted-foreground",
|
|
4027
3714
|
children: [
|
|
4028
3715
|
/* @__PURE__ */ jsx22("code", {
|
|
4029
3716
|
children: "@contractspec/lib.slo"
|
|
@@ -4037,7 +3724,7 @@ function LibrariesSLOPage() {
|
|
|
4037
3724
|
className: "space-y-4",
|
|
4038
3725
|
children: [
|
|
4039
3726
|
/* @__PURE__ */ jsx22("h2", {
|
|
4040
|
-
className: "text-2xl
|
|
3727
|
+
className: "font-bold text-2xl",
|
|
4041
3728
|
children: "Installation"
|
|
4042
3729
|
}),
|
|
4043
3730
|
/* @__PURE__ */ jsx22(InstallCommand20, {
|
|
@@ -4049,7 +3736,7 @@ function LibrariesSLOPage() {
|
|
|
4049
3736
|
className: "space-y-4",
|
|
4050
3737
|
children: [
|
|
4051
3738
|
/* @__PURE__ */ jsx22("h2", {
|
|
4052
|
-
className: "text-2xl
|
|
3739
|
+
className: "font-bold text-2xl",
|
|
4053
3740
|
children: "Define Targets"
|
|
4054
3741
|
}),
|
|
4055
3742
|
/* @__PURE__ */ jsx22(CodeBlock21, {
|
|
@@ -4068,7 +3755,7 @@ function LibrariesSLOPage() {
|
|
|
4068
3755
|
className: "space-y-4",
|
|
4069
3756
|
children: [
|
|
4070
3757
|
/* @__PURE__ */ jsx22("h2", {
|
|
4071
|
-
className: "text-2xl
|
|
3758
|
+
className: "font-bold text-2xl",
|
|
4072
3759
|
children: "Monitor Burn Rate"
|
|
4073
3760
|
}),
|
|
4074
3761
|
/* @__PURE__ */ jsx22(CodeBlock21, {
|
|
@@ -4097,7 +3784,7 @@ const { snapshot, burnRate } = monitor.recordWindow({
|
|
|
4097
3784
|
className: "space-y-4",
|
|
4098
3785
|
children: [
|
|
4099
3786
|
/* @__PURE__ */ jsx22("h2", {
|
|
4100
|
-
className: "text-2xl
|
|
3787
|
+
className: "font-bold text-2xl",
|
|
4101
3788
|
children: "History & Reporting"
|
|
4102
3789
|
}),
|
|
4103
3790
|
/* @__PURE__ */ jsx22("p", {
|
|
@@ -4143,11 +3830,11 @@ function LibrariesSupportBotPage() {
|
|
|
4143
3830
|
className: "space-y-4",
|
|
4144
3831
|
children: [
|
|
4145
3832
|
/* @__PURE__ */ jsx23("h1", {
|
|
4146
|
-
className: "text-4xl
|
|
3833
|
+
className: "font-bold text-4xl",
|
|
4147
3834
|
children: "@contractspec/lib.support-bot"
|
|
4148
3835
|
}),
|
|
4149
3836
|
/* @__PURE__ */ jsx23("p", {
|
|
4150
|
-
className: "text-muted-foreground
|
|
3837
|
+
className: "text-lg text-muted-foreground",
|
|
4151
3838
|
children: "Build AI-first support flows using drop-in classifiers, knowledge-grounded resolvers, and tone-aware responders\u2014all wired into the agent runner."
|
|
4152
3839
|
})
|
|
4153
3840
|
]
|
|
@@ -4156,7 +3843,7 @@ function LibrariesSupportBotPage() {
|
|
|
4156
3843
|
className: "space-y-4",
|
|
4157
3844
|
children: [
|
|
4158
3845
|
/* @__PURE__ */ jsx23("h2", {
|
|
4159
|
-
className: "text-2xl
|
|
3846
|
+
className: "font-bold text-2xl",
|
|
4160
3847
|
children: "Installation"
|
|
4161
3848
|
}),
|
|
4162
3849
|
/* @__PURE__ */ jsx23(InstallCommand21, {
|
|
@@ -4168,7 +3855,7 @@ function LibrariesSupportBotPage() {
|
|
|
4168
3855
|
className: "space-y-3",
|
|
4169
3856
|
children: [
|
|
4170
3857
|
/* @__PURE__ */ jsx23("h2", {
|
|
4171
|
-
className: "text-2xl
|
|
3858
|
+
className: "font-bold text-2xl",
|
|
4172
3859
|
children: "Wire the primitives"
|
|
4173
3860
|
}),
|
|
4174
3861
|
/* @__PURE__ */ jsx23(CodeBlock22, {
|
|
@@ -4189,7 +3876,7 @@ const draft = await responder.draft(ticket, resolution, classification);`
|
|
|
4189
3876
|
className: "space-y-3",
|
|
4190
3877
|
children: [
|
|
4191
3878
|
/* @__PURE__ */ jsx23("h2", {
|
|
4192
|
-
className: "text-2xl
|
|
3879
|
+
className: "font-bold text-2xl",
|
|
4193
3880
|
children: "Expose as agent tools"
|
|
4194
3881
|
}),
|
|
4195
3882
|
/* @__PURE__ */ jsx23(CodeBlock22, {
|
|
@@ -4206,11 +3893,11 @@ const executor = new ToolExecutor({ tools });`
|
|
|
4206
3893
|
className: "space-y-3",
|
|
4207
3894
|
children: [
|
|
4208
3895
|
/* @__PURE__ */ jsx23("h2", {
|
|
4209
|
-
className: "text-2xl
|
|
3896
|
+
className: "font-bold text-2xl",
|
|
4210
3897
|
children: "Included modules"
|
|
4211
3898
|
}),
|
|
4212
3899
|
/* @__PURE__ */ jsxs23("ul", {
|
|
4213
|
-
className: "
|
|
3900
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
4214
3901
|
children: [
|
|
4215
3902
|
/* @__PURE__ */ jsxs23("li", {
|
|
4216
3903
|
children: [
|
|
@@ -4285,11 +3972,11 @@ function LibrariesTestingPage() {
|
|
|
4285
3972
|
className: "space-y-4",
|
|
4286
3973
|
children: [
|
|
4287
3974
|
/* @__PURE__ */ jsx24("h1", {
|
|
4288
|
-
className: "text-4xl
|
|
3975
|
+
className: "font-bold text-4xl",
|
|
4289
3976
|
children: "@contractspec/lib.testing"
|
|
4290
3977
|
}),
|
|
4291
3978
|
/* @__PURE__ */ jsx24("p", {
|
|
4292
|
-
className: "text-muted-foreground
|
|
3979
|
+
className: "text-lg text-muted-foreground",
|
|
4293
3980
|
children: "Golden tests ensure new rollouts behave exactly like the traffic that inspired them. Record requests in production, replay them locally, and ship with confidence."
|
|
4294
3981
|
})
|
|
4295
3982
|
]
|
|
@@ -4298,7 +3985,7 @@ function LibrariesTestingPage() {
|
|
|
4298
3985
|
className: "space-y-4",
|
|
4299
3986
|
children: [
|
|
4300
3987
|
/* @__PURE__ */ jsx24("h2", {
|
|
4301
|
-
className: "text-2xl
|
|
3988
|
+
className: "font-bold text-2xl",
|
|
4302
3989
|
children: "Installation"
|
|
4303
3990
|
}),
|
|
4304
3991
|
/* @__PURE__ */ jsx24(InstallCommand22, {
|
|
@@ -4310,7 +3997,7 @@ function LibrariesTestingPage() {
|
|
|
4310
3997
|
className: "space-y-3",
|
|
4311
3998
|
children: [
|
|
4312
3999
|
/* @__PURE__ */ jsx24("h2", {
|
|
4313
|
-
className: "text-2xl
|
|
4000
|
+
className: "font-bold text-2xl",
|
|
4314
4001
|
children: "Record traffic"
|
|
4315
4002
|
}),
|
|
4316
4003
|
/* @__PURE__ */ jsx24(CodeBlock23, {
|
|
@@ -4343,7 +4030,7 @@ await recorder.record({
|
|
|
4343
4030
|
className: "space-y-3",
|
|
4344
4031
|
children: [
|
|
4345
4032
|
/* @__PURE__ */ jsx24("h2", {
|
|
4346
|
-
className: "text-2xl
|
|
4033
|
+
className: "font-bold text-2xl",
|
|
4347
4034
|
children: "Generate suites"
|
|
4348
4035
|
}),
|
|
4349
4036
|
/* @__PURE__ */ jsx24(CodeBlock23, {
|
|
@@ -4364,7 +4051,7 @@ const code = generator.generate(snapshots, {
|
|
|
4364
4051
|
className: "space-y-3",
|
|
4365
4052
|
children: [
|
|
4366
4053
|
/* @__PURE__ */ jsx24("h2", {
|
|
4367
|
-
className: "text-2xl
|
|
4054
|
+
className: "font-bold text-2xl",
|
|
4368
4055
|
children: "CLI workflow"
|
|
4369
4056
|
}),
|
|
4370
4057
|
/* @__PURE__ */ jsx24(CodeBlock23, {
|
|
@@ -4395,7 +4082,7 @@ const code = generator.generate(snapshots, {
|
|
|
4395
4082
|
className: "card-subtle space-y-2 p-4",
|
|
4396
4083
|
children: [
|
|
4397
4084
|
/* @__PURE__ */ jsx24("h3", {
|
|
4398
|
-
className: "text-lg
|
|
4085
|
+
className: "font-semibold text-lg",
|
|
4399
4086
|
children: card.title
|
|
4400
4087
|
}),
|
|
4401
4088
|
/* @__PURE__ */ jsx24("p", {
|
|
@@ -4430,9 +4117,9 @@ const code = generator.generate(snapshots, {
|
|
|
4430
4117
|
}
|
|
4431
4118
|
|
|
4432
4119
|
// src/components/docs/libraries/LibrariesUIKitPage.tsx
|
|
4120
|
+
import { CodeBlock as CodeBlock24, InstallCommand as InstallCommand23 } from "@contractspec/lib.design-system";
|
|
4433
4121
|
import Link24 from "@contractspec/lib.ui-link";
|
|
4434
4122
|
import { ChevronRight as ChevronRight24 } from "lucide-react";
|
|
4435
|
-
import { CodeBlock as CodeBlock24, InstallCommand as InstallCommand23 } from "@contractspec/lib.design-system";
|
|
4436
4123
|
import { jsx as jsx25, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
4437
4124
|
function LibrariesUIKitPage() {
|
|
4438
4125
|
return /* @__PURE__ */ jsxs25("div", {
|
|
@@ -4442,7 +4129,7 @@ function LibrariesUIKitPage() {
|
|
|
4442
4129
|
className: "space-y-4",
|
|
4443
4130
|
children: [
|
|
4444
4131
|
/* @__PURE__ */ jsx25("h1", {
|
|
4445
|
-
className: "text-4xl
|
|
4132
|
+
className: "font-bold text-4xl",
|
|
4446
4133
|
children: "@contractspec/lib.ui-kit"
|
|
4447
4134
|
}),
|
|
4448
4135
|
/* @__PURE__ */ jsxs25("p", {
|
|
@@ -4465,7 +4152,7 @@ function LibrariesUIKitPage() {
|
|
|
4465
4152
|
className: "space-y-4",
|
|
4466
4153
|
children: [
|
|
4467
4154
|
/* @__PURE__ */ jsx25("h2", {
|
|
4468
|
-
className: "text-2xl
|
|
4155
|
+
className: "font-bold text-2xl",
|
|
4469
4156
|
children: "Installation"
|
|
4470
4157
|
}),
|
|
4471
4158
|
/* @__PURE__ */ jsx25(InstallCommand23, {
|
|
@@ -4477,11 +4164,11 @@ function LibrariesUIKitPage() {
|
|
|
4477
4164
|
className: "space-y-4",
|
|
4478
4165
|
children: [
|
|
4479
4166
|
/* @__PURE__ */ jsx25("h2", {
|
|
4480
|
-
className: "text-2xl
|
|
4167
|
+
className: "font-bold text-2xl",
|
|
4481
4168
|
children: "Key Features"
|
|
4482
4169
|
}),
|
|
4483
4170
|
/* @__PURE__ */ jsxs25("ul", {
|
|
4484
|
-
className: "
|
|
4171
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
4485
4172
|
children: [
|
|
4486
4173
|
/* @__PURE__ */ jsxs25("li", {
|
|
4487
4174
|
children: [
|
|
@@ -4528,7 +4215,7 @@ function LibrariesUIKitPage() {
|
|
|
4528
4215
|
className: "space-y-4",
|
|
4529
4216
|
children: [
|
|
4530
4217
|
/* @__PURE__ */ jsx25("h2", {
|
|
4531
|
-
className: "text-2xl
|
|
4218
|
+
className: "font-bold text-2xl",
|
|
4532
4219
|
children: "Example Usage"
|
|
4533
4220
|
}),
|
|
4534
4221
|
/* @__PURE__ */ jsx25(CodeBlock24, {
|
|
@@ -4559,7 +4246,7 @@ export function MyComponent() {
|
|
|
4559
4246
|
className: "space-y-4",
|
|
4560
4247
|
children: [
|
|
4561
4248
|
/* @__PURE__ */ jsx25("h2", {
|
|
4562
|
-
className: "text-2xl
|
|
4249
|
+
className: "font-bold text-2xl",
|
|
4563
4250
|
children: "Core Components"
|
|
4564
4251
|
}),
|
|
4565
4252
|
/* @__PURE__ */ jsxs25("div", {
|
|
@@ -4573,7 +4260,7 @@ export function MyComponent() {
|
|
|
4573
4260
|
children: "Form Controls"
|
|
4574
4261
|
}),
|
|
4575
4262
|
/* @__PURE__ */ jsxs25("ul", {
|
|
4576
|
-
className: "
|
|
4263
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
4577
4264
|
children: [
|
|
4578
4265
|
/* @__PURE__ */ jsx25("li", {
|
|
4579
4266
|
children: "Button"
|
|
@@ -4602,7 +4289,7 @@ export function MyComponent() {
|
|
|
4602
4289
|
children: "Layout"
|
|
4603
4290
|
}),
|
|
4604
4291
|
/* @__PURE__ */ jsxs25("ul", {
|
|
4605
|
-
className: "
|
|
4292
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
4606
4293
|
children: [
|
|
4607
4294
|
/* @__PURE__ */ jsx25("li", {
|
|
4608
4295
|
children: "Card"
|
|
@@ -4628,7 +4315,7 @@ export function MyComponent() {
|
|
|
4628
4315
|
children: "Feedback"
|
|
4629
4316
|
}),
|
|
4630
4317
|
/* @__PURE__ */ jsxs25("ul", {
|
|
4631
|
-
className: "
|
|
4318
|
+
className: "space-y-1 text-muted-foreground text-sm",
|
|
4632
4319
|
children: [
|
|
4633
4320
|
/* @__PURE__ */ jsx25("li", {
|
|
4634
4321
|
children: "Alert"
|
|
@@ -4674,12 +4361,12 @@ export function MyComponent() {
|
|
|
4674
4361
|
});
|
|
4675
4362
|
}
|
|
4676
4363
|
|
|
4677
|
-
// src/components/docs/libraries/
|
|
4364
|
+
// src/components/docs/libraries/LibrariesWorkflowComposerPage.tsx
|
|
4678
4365
|
import { CodeBlock as CodeBlock25, InstallCommand as InstallCommand24 } from "@contractspec/lib.design-system";
|
|
4679
4366
|
import Link25 from "@contractspec/lib.ui-link";
|
|
4680
4367
|
import { ChevronRight as ChevronRight25 } from "lucide-react";
|
|
4681
4368
|
import { jsx as jsx26, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
4682
|
-
function
|
|
4369
|
+
function LibrariesWorkflowComposerPage() {
|
|
4683
4370
|
return /* @__PURE__ */ jsxs26("div", {
|
|
4684
4371
|
className: "space-y-8",
|
|
4685
4372
|
children: [
|
|
@@ -4687,18 +4374,124 @@ function LibrariesWorkflowsPage() {
|
|
|
4687
4374
|
className: "space-y-4",
|
|
4688
4375
|
children: [
|
|
4689
4376
|
/* @__PURE__ */ jsx26("h1", {
|
|
4690
|
-
className: "text-4xl
|
|
4377
|
+
className: "font-bold text-4xl",
|
|
4378
|
+
children: "Workflow Composer"
|
|
4379
|
+
}),
|
|
4380
|
+
/* @__PURE__ */ jsx26("p", {
|
|
4381
|
+
className: "text-lg text-muted-foreground",
|
|
4382
|
+
children: "`@contractspec/lib.workflow-composer` injects tenant-/role-/device-specific steps into base WorkflowSpecs and keeps transitions valid."
|
|
4383
|
+
})
|
|
4384
|
+
]
|
|
4385
|
+
}),
|
|
4386
|
+
/* @__PURE__ */ jsxs26("div", {
|
|
4387
|
+
className: "space-y-4",
|
|
4388
|
+
children: [
|
|
4389
|
+
/* @__PURE__ */ jsx26("h2", {
|
|
4390
|
+
className: "font-bold text-2xl",
|
|
4391
|
+
children: "Installation"
|
|
4392
|
+
}),
|
|
4393
|
+
/* @__PURE__ */ jsx26(InstallCommand24, {
|
|
4394
|
+
package: "@contractspec/lib.workflow-composer"
|
|
4395
|
+
})
|
|
4396
|
+
]
|
|
4397
|
+
}),
|
|
4398
|
+
/* @__PURE__ */ jsxs26("div", {
|
|
4399
|
+
className: "space-y-4",
|
|
4400
|
+
children: [
|
|
4401
|
+
/* @__PURE__ */ jsx26("h2", {
|
|
4402
|
+
className: "font-bold text-2xl",
|
|
4403
|
+
children: "Register extensions"
|
|
4404
|
+
}),
|
|
4405
|
+
/* @__PURE__ */ jsx26(CodeBlock25, {
|
|
4406
|
+
language: "typescript",
|
|
4407
|
+
code: `const composer = new WorkflowComposer();
|
|
4408
|
+
|
|
4409
|
+
composer.register({
|
|
4410
|
+
workflow: 'billing.invoiceApproval',
|
|
4411
|
+
tenantId: 'acme',
|
|
4412
|
+
customSteps: [
|
|
4413
|
+
{
|
|
4414
|
+
after: 'validate-invoice',
|
|
4415
|
+
inject: {
|
|
4416
|
+
id: 'acme-legal',
|
|
4417
|
+
type: 'human',
|
|
4418
|
+
label: 'ACME Legal Review',
|
|
4419
|
+
},
|
|
4420
|
+
transitionTo: 'final-approval',
|
|
4421
|
+
},
|
|
4422
|
+
],
|
|
4423
|
+
hiddenSteps: ['internal-audit'],
|
|
4424
|
+
});`
|
|
4425
|
+
})
|
|
4426
|
+
]
|
|
4427
|
+
}),
|
|
4428
|
+
/* @__PURE__ */ jsxs26("div", {
|
|
4429
|
+
className: "space-y-4",
|
|
4430
|
+
children: [
|
|
4431
|
+
/* @__PURE__ */ jsx26("h2", {
|
|
4432
|
+
className: "font-bold text-2xl",
|
|
4433
|
+
children: "Compose at runtime"
|
|
4434
|
+
}),
|
|
4435
|
+
/* @__PURE__ */ jsx26(CodeBlock25, {
|
|
4436
|
+
language: "typescript",
|
|
4437
|
+
code: `const tenantWorkflow = composer.compose({
|
|
4438
|
+
base: BaseInvoiceWorkflow,
|
|
4439
|
+
tenantId: 'acme',
|
|
4440
|
+
});
|
|
4441
|
+
|
|
4442
|
+
workflowRunner.execute(tenantWorkflow, ctx);`
|
|
4443
|
+
})
|
|
4444
|
+
]
|
|
4445
|
+
}),
|
|
4446
|
+
/* @__PURE__ */ jsxs26("div", {
|
|
4447
|
+
className: "flex items-center gap-4 pt-4",
|
|
4448
|
+
children: [
|
|
4449
|
+
/* @__PURE__ */ jsx26(Link25, {
|
|
4450
|
+
href: "/docs/libraries",
|
|
4451
|
+
className: "btn-ghost",
|
|
4452
|
+
children: "Back to Libraries"
|
|
4453
|
+
}),
|
|
4454
|
+
/* @__PURE__ */ jsxs26(Link25, {
|
|
4455
|
+
href: "/docs/libraries/workflows",
|
|
4456
|
+
className: "btn-primary",
|
|
4457
|
+
children: [
|
|
4458
|
+
"Next: Workflow Runtime ",
|
|
4459
|
+
/* @__PURE__ */ jsx26(ChevronRight25, {
|
|
4460
|
+
size: 16
|
|
4461
|
+
})
|
|
4462
|
+
]
|
|
4463
|
+
})
|
|
4464
|
+
]
|
|
4465
|
+
})
|
|
4466
|
+
]
|
|
4467
|
+
});
|
|
4468
|
+
}
|
|
4469
|
+
|
|
4470
|
+
// src/components/docs/libraries/LibrariesWorkflowsPage.tsx
|
|
4471
|
+
import { CodeBlock as CodeBlock26, InstallCommand as InstallCommand25 } from "@contractspec/lib.design-system";
|
|
4472
|
+
import Link26 from "@contractspec/lib.ui-link";
|
|
4473
|
+
import { ChevronRight as ChevronRight26 } from "lucide-react";
|
|
4474
|
+
import { jsx as jsx27, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
4475
|
+
function LibrariesWorkflowsPage() {
|
|
4476
|
+
return /* @__PURE__ */ jsxs27("div", {
|
|
4477
|
+
className: "space-y-8",
|
|
4478
|
+
children: [
|
|
4479
|
+
/* @__PURE__ */ jsxs27("div", {
|
|
4480
|
+
className: "space-y-4",
|
|
4481
|
+
children: [
|
|
4482
|
+
/* @__PURE__ */ jsx27("h1", {
|
|
4483
|
+
className: "font-bold text-4xl",
|
|
4691
4484
|
children: "Workflow Runtime Library"
|
|
4692
4485
|
}),
|
|
4693
|
-
/* @__PURE__ */
|
|
4694
|
-
className: "text-muted-foreground
|
|
4486
|
+
/* @__PURE__ */ jsxs27("p", {
|
|
4487
|
+
className: "text-lg text-muted-foreground",
|
|
4695
4488
|
children: [
|
|
4696
4489
|
"The ",
|
|
4697
|
-
/* @__PURE__ */
|
|
4490
|
+
/* @__PURE__ */ jsx27("code", {
|
|
4698
4491
|
children: "@contractspec/lib.contracts-spec/workflow"
|
|
4699
4492
|
}),
|
|
4700
4493
|
" library provides the core ",
|
|
4701
|
-
/* @__PURE__ */
|
|
4494
|
+
/* @__PURE__ */ jsx27("code", {
|
|
4702
4495
|
children: "WorkflowRunner"
|
|
4703
4496
|
}),
|
|
4704
4497
|
" for executing stateful, durable workflows."
|
|
@@ -4706,30 +4499,30 @@ function LibrariesWorkflowsPage() {
|
|
|
4706
4499
|
})
|
|
4707
4500
|
]
|
|
4708
4501
|
}),
|
|
4709
|
-
/* @__PURE__ */
|
|
4502
|
+
/* @__PURE__ */ jsxs27("div", {
|
|
4710
4503
|
className: "space-y-4",
|
|
4711
4504
|
children: [
|
|
4712
|
-
/* @__PURE__ */
|
|
4713
|
-
className: "text-2xl
|
|
4505
|
+
/* @__PURE__ */ jsx27("h2", {
|
|
4506
|
+
className: "font-bold text-2xl",
|
|
4714
4507
|
children: "Installation"
|
|
4715
4508
|
}),
|
|
4716
|
-
/* @__PURE__ */
|
|
4509
|
+
/* @__PURE__ */ jsx27(InstallCommand25, {
|
|
4717
4510
|
package: "@contractspec/lib.contracts-spec"
|
|
4718
4511
|
})
|
|
4719
4512
|
]
|
|
4720
4513
|
}),
|
|
4721
|
-
/* @__PURE__ */
|
|
4514
|
+
/* @__PURE__ */ jsxs27("div", {
|
|
4722
4515
|
className: "space-y-4",
|
|
4723
4516
|
children: [
|
|
4724
|
-
/* @__PURE__ */
|
|
4725
|
-
className: "text-2xl
|
|
4517
|
+
/* @__PURE__ */ jsx27("h2", {
|
|
4518
|
+
className: "font-bold text-2xl",
|
|
4726
4519
|
children: "WorkflowRunner"
|
|
4727
4520
|
}),
|
|
4728
|
-
/* @__PURE__ */
|
|
4521
|
+
/* @__PURE__ */ jsx27("p", {
|
|
4729
4522
|
className: "text-muted-foreground",
|
|
4730
4523
|
children: "The runner manages execution state, step transitions, retries, and compensation."
|
|
4731
4524
|
}),
|
|
4732
|
-
/* @__PURE__ */
|
|
4525
|
+
/* @__PURE__ */ jsx27(CodeBlock26, {
|
|
4733
4526
|
language: "typescript",
|
|
4734
4527
|
code: `import { WorkflowRunner } from '@contractspec/lib.contracts-spec/workflow/runner';
|
|
4735
4528
|
import { InMemoryStateStore } from '@contractspec/lib.contracts-spec/workflow/adapters/memory-store';
|
|
@@ -4755,37 +4548,37 @@ await runner.executeStep(workflowId);`
|
|
|
4755
4548
|
})
|
|
4756
4549
|
]
|
|
4757
4550
|
}),
|
|
4758
|
-
/* @__PURE__ */
|
|
4551
|
+
/* @__PURE__ */ jsxs27("div", {
|
|
4759
4552
|
className: "space-y-4",
|
|
4760
4553
|
children: [
|
|
4761
|
-
/* @__PURE__ */
|
|
4762
|
-
className: "text-2xl
|
|
4554
|
+
/* @__PURE__ */ jsx27("h2", {
|
|
4555
|
+
className: "font-bold text-2xl",
|
|
4763
4556
|
children: "State Persistence"
|
|
4764
4557
|
}),
|
|
4765
|
-
/* @__PURE__ */
|
|
4558
|
+
/* @__PURE__ */ jsxs27("p", {
|
|
4766
4559
|
className: "text-muted-foreground",
|
|
4767
4560
|
children: [
|
|
4768
4561
|
"The runner relies on a ",
|
|
4769
|
-
/* @__PURE__ */
|
|
4562
|
+
/* @__PURE__ */ jsx27("code", {
|
|
4770
4563
|
children: "StateStore"
|
|
4771
4564
|
}),
|
|
4772
4565
|
" to persist workflow execution history. ContractSpec ships with:"
|
|
4773
4566
|
]
|
|
4774
4567
|
}),
|
|
4775
|
-
/* @__PURE__ */
|
|
4776
|
-
className: "
|
|
4568
|
+
/* @__PURE__ */ jsxs27("ul", {
|
|
4569
|
+
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
4777
4570
|
children: [
|
|
4778
|
-
/* @__PURE__ */
|
|
4571
|
+
/* @__PURE__ */ jsxs27("li", {
|
|
4779
4572
|
children: [
|
|
4780
|
-
/* @__PURE__ */
|
|
4573
|
+
/* @__PURE__ */ jsx27("code", {
|
|
4781
4574
|
children: "InMemoryStateStore"
|
|
4782
4575
|
}),
|
|
4783
4576
|
" - for testing and development."
|
|
4784
4577
|
]
|
|
4785
4578
|
}),
|
|
4786
|
-
/* @__PURE__ */
|
|
4579
|
+
/* @__PURE__ */ jsxs27("li", {
|
|
4787
4580
|
children: [
|
|
4788
|
-
/* @__PURE__ */
|
|
4581
|
+
/* @__PURE__ */ jsx27("code", {
|
|
4789
4582
|
children: "PrismaStateStore"
|
|
4790
4583
|
}),
|
|
4791
4584
|
" - for production using Prisma ORM."
|
|
@@ -4795,52 +4588,52 @@ await runner.executeStep(workflowId);`
|
|
|
4795
4588
|
})
|
|
4796
4589
|
]
|
|
4797
4590
|
}),
|
|
4798
|
-
/* @__PURE__ */
|
|
4591
|
+
/* @__PURE__ */ jsxs27("div", {
|
|
4799
4592
|
className: "space-y-4",
|
|
4800
4593
|
children: [
|
|
4801
|
-
/* @__PURE__ */
|
|
4802
|
-
className: "text-2xl
|
|
4594
|
+
/* @__PURE__ */ jsx27("h2", {
|
|
4595
|
+
className: "font-bold text-2xl",
|
|
4803
4596
|
children: "Events"
|
|
4804
4597
|
}),
|
|
4805
|
-
/* @__PURE__ */
|
|
4598
|
+
/* @__PURE__ */ jsx27("p", {
|
|
4806
4599
|
className: "text-muted-foreground",
|
|
4807
4600
|
children: "The runner emits events that you can subscribe to for monitoring:"
|
|
4808
4601
|
}),
|
|
4809
|
-
/* @__PURE__ */
|
|
4810
|
-
className: "
|
|
4602
|
+
/* @__PURE__ */ jsxs27("ul", {
|
|
4603
|
+
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
4811
4604
|
children: [
|
|
4812
|
-
/* @__PURE__ */
|
|
4813
|
-
children: /* @__PURE__ */
|
|
4605
|
+
/* @__PURE__ */ jsx27("li", {
|
|
4606
|
+
children: /* @__PURE__ */ jsx27("code", {
|
|
4814
4607
|
children: "workflow.started"
|
|
4815
4608
|
})
|
|
4816
4609
|
}),
|
|
4817
|
-
/* @__PURE__ */
|
|
4818
|
-
children: /* @__PURE__ */
|
|
4610
|
+
/* @__PURE__ */ jsx27("li", {
|
|
4611
|
+
children: /* @__PURE__ */ jsx27("code", {
|
|
4819
4612
|
children: "workflow.step_completed"
|
|
4820
4613
|
})
|
|
4821
4614
|
}),
|
|
4822
|
-
/* @__PURE__ */
|
|
4823
|
-
children: /* @__PURE__ */
|
|
4615
|
+
/* @__PURE__ */ jsx27("li", {
|
|
4616
|
+
children: /* @__PURE__ */ jsx27("code", {
|
|
4824
4617
|
children: "workflow.step_failed"
|
|
4825
4618
|
})
|
|
4826
4619
|
}),
|
|
4827
|
-
/* @__PURE__ */
|
|
4828
|
-
children: /* @__PURE__ */
|
|
4620
|
+
/* @__PURE__ */ jsx27("li", {
|
|
4621
|
+
children: /* @__PURE__ */ jsx27("code", {
|
|
4829
4622
|
children: "workflow.step_retrying"
|
|
4830
4623
|
})
|
|
4831
4624
|
}),
|
|
4832
|
-
/* @__PURE__ */
|
|
4833
|
-
children: /* @__PURE__ */
|
|
4625
|
+
/* @__PURE__ */ jsx27("li", {
|
|
4626
|
+
children: /* @__PURE__ */ jsx27("code", {
|
|
4834
4627
|
children: "workflow.completed"
|
|
4835
4628
|
})
|
|
4836
4629
|
}),
|
|
4837
|
-
/* @__PURE__ */
|
|
4838
|
-
children: /* @__PURE__ */
|
|
4630
|
+
/* @__PURE__ */ jsx27("li", {
|
|
4631
|
+
children: /* @__PURE__ */ jsx27("code", {
|
|
4839
4632
|
children: "workflow.cancelled"
|
|
4840
4633
|
})
|
|
4841
4634
|
}),
|
|
4842
|
-
/* @__PURE__ */
|
|
4843
|
-
children: /* @__PURE__ */
|
|
4635
|
+
/* @__PURE__ */ jsx27("li", {
|
|
4636
|
+
children: /* @__PURE__ */ jsx27("code", {
|
|
4844
4637
|
children: "workflow.compensation_step_completed"
|
|
4845
4638
|
})
|
|
4846
4639
|
})
|
|
@@ -4848,112 +4641,6 @@ await runner.executeStep(workflowId);`
|
|
|
4848
4641
|
})
|
|
4849
4642
|
]
|
|
4850
4643
|
}),
|
|
4851
|
-
/* @__PURE__ */ jsxs26("div", {
|
|
4852
|
-
className: "flex items-center gap-4 pt-4",
|
|
4853
|
-
children: [
|
|
4854
|
-
/* @__PURE__ */ jsx26(Link25, {
|
|
4855
|
-
href: "/docs/libraries",
|
|
4856
|
-
className: "btn-ghost",
|
|
4857
|
-
children: "Back to Libraries"
|
|
4858
|
-
}),
|
|
4859
|
-
/* @__PURE__ */ jsxs26(Link25, {
|
|
4860
|
-
href: "/docs/libraries/data-views",
|
|
4861
|
-
className: "btn-primary",
|
|
4862
|
-
children: [
|
|
4863
|
-
"Next: Data Views ",
|
|
4864
|
-
/* @__PURE__ */ jsx26(ChevronRight25, {
|
|
4865
|
-
size: 16
|
|
4866
|
-
})
|
|
4867
|
-
]
|
|
4868
|
-
})
|
|
4869
|
-
]
|
|
4870
|
-
})
|
|
4871
|
-
]
|
|
4872
|
-
});
|
|
4873
|
-
}
|
|
4874
|
-
|
|
4875
|
-
// src/components/docs/libraries/LibrariesWorkflowComposerPage.tsx
|
|
4876
|
-
import { CodeBlock as CodeBlock26, InstallCommand as InstallCommand25 } from "@contractspec/lib.design-system";
|
|
4877
|
-
import Link26 from "@contractspec/lib.ui-link";
|
|
4878
|
-
import { ChevronRight as ChevronRight26 } from "lucide-react";
|
|
4879
|
-
import { jsx as jsx27, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
4880
|
-
function LibrariesWorkflowComposerPage() {
|
|
4881
|
-
return /* @__PURE__ */ jsxs27("div", {
|
|
4882
|
-
className: "space-y-8",
|
|
4883
|
-
children: [
|
|
4884
|
-
/* @__PURE__ */ jsxs27("div", {
|
|
4885
|
-
className: "space-y-4",
|
|
4886
|
-
children: [
|
|
4887
|
-
/* @__PURE__ */ jsx27("h1", {
|
|
4888
|
-
className: "text-4xl font-bold",
|
|
4889
|
-
children: "Workflow Composer"
|
|
4890
|
-
}),
|
|
4891
|
-
/* @__PURE__ */ jsx27("p", {
|
|
4892
|
-
className: "text-muted-foreground text-lg",
|
|
4893
|
-
children: "`@contractspec/lib.workflow-composer` injects tenant-/role-/device-specific steps into base WorkflowSpecs and keeps transitions valid."
|
|
4894
|
-
})
|
|
4895
|
-
]
|
|
4896
|
-
}),
|
|
4897
|
-
/* @__PURE__ */ jsxs27("div", {
|
|
4898
|
-
className: "space-y-4",
|
|
4899
|
-
children: [
|
|
4900
|
-
/* @__PURE__ */ jsx27("h2", {
|
|
4901
|
-
className: "text-2xl font-bold",
|
|
4902
|
-
children: "Installation"
|
|
4903
|
-
}),
|
|
4904
|
-
/* @__PURE__ */ jsx27(InstallCommand25, {
|
|
4905
|
-
package: "@contractspec/lib.workflow-composer"
|
|
4906
|
-
})
|
|
4907
|
-
]
|
|
4908
|
-
}),
|
|
4909
|
-
/* @__PURE__ */ jsxs27("div", {
|
|
4910
|
-
className: "space-y-4",
|
|
4911
|
-
children: [
|
|
4912
|
-
/* @__PURE__ */ jsx27("h2", {
|
|
4913
|
-
className: "text-2xl font-bold",
|
|
4914
|
-
children: "Register extensions"
|
|
4915
|
-
}),
|
|
4916
|
-
/* @__PURE__ */ jsx27(CodeBlock26, {
|
|
4917
|
-
language: "typescript",
|
|
4918
|
-
code: `const composer = new WorkflowComposer();
|
|
4919
|
-
|
|
4920
|
-
composer.register({
|
|
4921
|
-
workflow: 'billing.invoiceApproval',
|
|
4922
|
-
tenantId: 'acme',
|
|
4923
|
-
customSteps: [
|
|
4924
|
-
{
|
|
4925
|
-
after: 'validate-invoice',
|
|
4926
|
-
inject: {
|
|
4927
|
-
id: 'acme-legal',
|
|
4928
|
-
type: 'human',
|
|
4929
|
-
label: 'ACME Legal Review',
|
|
4930
|
-
},
|
|
4931
|
-
transitionTo: 'final-approval',
|
|
4932
|
-
},
|
|
4933
|
-
],
|
|
4934
|
-
hiddenSteps: ['internal-audit'],
|
|
4935
|
-
});`
|
|
4936
|
-
})
|
|
4937
|
-
]
|
|
4938
|
-
}),
|
|
4939
|
-
/* @__PURE__ */ jsxs27("div", {
|
|
4940
|
-
className: "space-y-4",
|
|
4941
|
-
children: [
|
|
4942
|
-
/* @__PURE__ */ jsx27("h2", {
|
|
4943
|
-
className: "text-2xl font-bold",
|
|
4944
|
-
children: "Compose at runtime"
|
|
4945
|
-
}),
|
|
4946
|
-
/* @__PURE__ */ jsx27(CodeBlock26, {
|
|
4947
|
-
language: "typescript",
|
|
4948
|
-
code: `const tenantWorkflow = composer.compose({
|
|
4949
|
-
base: BaseInvoiceWorkflow,
|
|
4950
|
-
tenantId: 'acme',
|
|
4951
|
-
});
|
|
4952
|
-
|
|
4953
|
-
workflowRunner.execute(tenantWorkflow, ctx);`
|
|
4954
|
-
})
|
|
4955
|
-
]
|
|
4956
|
-
}),
|
|
4957
4644
|
/* @__PURE__ */ jsxs27("div", {
|
|
4958
4645
|
className: "flex items-center gap-4 pt-4",
|
|
4959
4646
|
children: [
|
|
@@ -4963,10 +4650,10 @@ workflowRunner.execute(tenantWorkflow, ctx);`
|
|
|
4963
4650
|
children: "Back to Libraries"
|
|
4964
4651
|
}),
|
|
4965
4652
|
/* @__PURE__ */ jsxs27(Link26, {
|
|
4966
|
-
href: "/docs/libraries/
|
|
4653
|
+
href: "/docs/libraries/data-views",
|
|
4967
4654
|
className: "btn-primary",
|
|
4968
4655
|
children: [
|
|
4969
|
-
"Next:
|
|
4656
|
+
"Next: Data Views ",
|
|
4970
4657
|
/* @__PURE__ */ jsx27(ChevronRight26, {
|
|
4971
4658
|
size: 16
|
|
4972
4659
|
})
|