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