@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,46 +1,46 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
// src/features/docs/docs.contracts.ts
|
|
3
3
|
import {
|
|
4
|
+
ContractReferenceQuery,
|
|
4
5
|
DocSummaryModel,
|
|
5
6
|
DocsIndexInput,
|
|
6
7
|
DocsIndexOutput,
|
|
7
8
|
DocsIndexQuery,
|
|
8
|
-
DocsIndexQuery as DocsIndexQuery2
|
|
9
|
-
ContractReferenceQuery
|
|
9
|
+
DocsIndexQuery as DocsIndexQuery2
|
|
10
10
|
} from "@contractspec/lib.contracts-spec/docs";
|
|
11
11
|
// src/features/contracts-registry.ts
|
|
12
12
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
EventRegistry,
|
|
14
|
+
OperationSpecRegistry
|
|
15
15
|
} from "@contractspec/lib.contracts-spec";
|
|
16
|
-
import {
|
|
17
|
-
PresentationRegistry
|
|
18
|
-
} from "@contractspec/lib.contracts-spec/presentations";
|
|
19
16
|
import {
|
|
20
17
|
DataViewRegistry
|
|
21
18
|
} from "@contractspec/lib.contracts-spec/data-views";
|
|
22
|
-
import { FormRegistry } from "@contractspec/lib.contracts-spec/forms";
|
|
23
|
-
import {
|
|
24
|
-
serializeOperationSpec,
|
|
25
|
-
serializeEventSpec,
|
|
26
|
-
serializePresentationSpec,
|
|
27
|
-
serializeDataViewSpec,
|
|
28
|
-
serializeFormSpec
|
|
29
|
-
} from "@contractspec/lib.contracts-spec/serialization";
|
|
30
19
|
import {
|
|
31
20
|
ContractReferenceDataView,
|
|
32
21
|
ContractReferenceQuery as ContractReferenceQuery2,
|
|
33
|
-
DocsGeneratedEvent,
|
|
34
22
|
DocsGenerateCommand,
|
|
23
|
+
DocsGeneratedEvent,
|
|
35
24
|
DocsIndexDataView,
|
|
36
25
|
DocsIndexQuery as DocsIndexQuery3,
|
|
37
26
|
DocsLayoutPresentation,
|
|
38
|
-
DocsPublishedEvent,
|
|
39
27
|
DocsPublishCommand,
|
|
28
|
+
DocsPublishedEvent,
|
|
40
29
|
DocsReferencePagePresentation,
|
|
41
30
|
DocsSearchForm,
|
|
42
31
|
ExampleCatalogDataView
|
|
43
32
|
} from "@contractspec/lib.contracts-spec/docs";
|
|
33
|
+
import { FormRegistry } from "@contractspec/lib.contracts-spec/forms";
|
|
34
|
+
import {
|
|
35
|
+
PresentationRegistry
|
|
36
|
+
} from "@contractspec/lib.contracts-spec/presentations";
|
|
37
|
+
import {
|
|
38
|
+
serializeDataViewSpec,
|
|
39
|
+
serializeEventSpec,
|
|
40
|
+
serializeFormSpec,
|
|
41
|
+
serializeOperationSpec,
|
|
42
|
+
serializePresentationSpec
|
|
43
|
+
} from "@contractspec/lib.contracts-spec/serialization";
|
|
44
44
|
var operationRegistry = null;
|
|
45
45
|
function createContractSpecOperationRegistry() {
|
|
46
46
|
const registry = new OperationSpecRegistry;
|
|
@@ -250,8 +250,8 @@ var PresentationsFeature = {
|
|
|
250
250
|
};
|
|
251
251
|
|
|
252
252
|
// src/features/registry.ts
|
|
253
|
-
import { FeatureRegistry } from "@contractspec/lib.contracts-spec/features";
|
|
254
253
|
import { AppConfigFeature } from "@contractspec/lib.contracts-spec/app-config";
|
|
254
|
+
import { FeatureRegistry } from "@contractspec/lib.contracts-spec/features";
|
|
255
255
|
function createContractSpecFeatureRegistry() {
|
|
256
256
|
const features = new FeatureRegistry;
|
|
257
257
|
features.register(DocsFeature);
|
|
@@ -275,19 +275,19 @@ function resetContractSpecFeatureRegistry() {
|
|
|
275
275
|
import { FeatureRegistry as FeatureRegistry2 } from "@contractspec/lib.contracts-spec/features";
|
|
276
276
|
|
|
277
277
|
// src/presentation/features/atoms/FeatureIcon/FeatureIcon.tsx
|
|
278
|
-
import
|
|
278
|
+
import { cn } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
279
279
|
import {
|
|
280
|
-
FileText,
|
|
281
280
|
Boxes,
|
|
282
|
-
Settings,
|
|
283
|
-
Globe,
|
|
284
|
-
Shield,
|
|
285
281
|
Database,
|
|
286
|
-
|
|
282
|
+
FileText,
|
|
283
|
+
Globe,
|
|
287
284
|
Layout,
|
|
285
|
+
MessageSquare,
|
|
286
|
+
Settings,
|
|
287
|
+
Shield,
|
|
288
288
|
Workflow
|
|
289
289
|
} from "lucide-react";
|
|
290
|
-
import
|
|
290
|
+
import * as React from "react";
|
|
291
291
|
import { jsx } from "react/jsx-runtime";
|
|
292
292
|
"use client";
|
|
293
293
|
var domainIconMap = {
|
|
@@ -367,41 +367,20 @@ function getFeatureIconTone(stability) {
|
|
|
367
367
|
return "primary";
|
|
368
368
|
return stabilityToneMap[stability] || "primary";
|
|
369
369
|
}
|
|
370
|
-
// src/presentation/features/hooks/
|
|
370
|
+
// src/presentation/features/hooks/useContractsRegistry.ts
|
|
371
371
|
import { useMemo as useMemo2 } from "react";
|
|
372
372
|
"use client";
|
|
373
|
-
function
|
|
374
|
-
const registry = useMemo2(() =>
|
|
375
|
-
return useMemo2(() => {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
getByTag: (tag) => registry.listByTag(tag),
|
|
381
|
-
getByOwner: (owner) => registry.listByOwner(owner),
|
|
382
|
-
getUniqueTags: () => registry.getUniqueTags(),
|
|
383
|
-
getUniqueDomains: () => {
|
|
384
|
-
const domains = new Set;
|
|
385
|
-
for (const f of features) {
|
|
386
|
-
if (f.meta.domain)
|
|
387
|
-
domains.add(f.meta.domain);
|
|
388
|
-
}
|
|
389
|
-
return [...domains].sort();
|
|
390
|
-
},
|
|
391
|
-
getUniqueStabilities: () => {
|
|
392
|
-
const stabilities = new Set;
|
|
393
|
-
for (const f of features) {
|
|
394
|
-
if (f.meta.stability)
|
|
395
|
-
stabilities.add(f.meta.stability);
|
|
396
|
-
}
|
|
397
|
-
return [...stabilities].sort();
|
|
398
|
-
}
|
|
399
|
-
};
|
|
400
|
-
}, [registry]);
|
|
373
|
+
function useContractsRegistry() {
|
|
374
|
+
const registry = useMemo2(() => getContractSpecOperationRegistry(), []);
|
|
375
|
+
return useMemo2(() => ({
|
|
376
|
+
resolveOperation: (ref) => resolveOperationSpec(ref.key, ref.version),
|
|
377
|
+
getOperationSpec: (key, version) => resolveOperationSpec(key, version),
|
|
378
|
+
listOperations: () => registry.list()
|
|
379
|
+
}), [registry]);
|
|
401
380
|
}
|
|
402
381
|
|
|
403
382
|
// src/presentation/features/hooks/useFeatureFilters.ts
|
|
404
|
-
import {
|
|
383
|
+
import { useCallback, useMemo as useMemo3, useState } from "react";
|
|
405
384
|
"use client";
|
|
406
385
|
var defaultFilters = {
|
|
407
386
|
search: "",
|
|
@@ -473,20 +452,41 @@ function useFeatureFilters(features) {
|
|
|
473
452
|
};
|
|
474
453
|
}
|
|
475
454
|
|
|
476
|
-
// src/presentation/features/hooks/
|
|
455
|
+
// src/presentation/features/hooks/useFeatureRegistry.ts
|
|
477
456
|
import { useMemo as useMemo4 } from "react";
|
|
478
457
|
"use client";
|
|
479
|
-
function
|
|
480
|
-
const registry = useMemo4(() =>
|
|
481
|
-
return useMemo4(() =>
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
458
|
+
function useFeatureRegistry() {
|
|
459
|
+
const registry = useMemo4(() => getContractSpecFeatureRegistry(), []);
|
|
460
|
+
return useMemo4(() => {
|
|
461
|
+
const features = registry.list();
|
|
462
|
+
return {
|
|
463
|
+
features,
|
|
464
|
+
getFeature: (key) => registry.get(key),
|
|
465
|
+
getByTag: (tag) => registry.listByTag(tag),
|
|
466
|
+
getByOwner: (owner) => registry.listByOwner(owner),
|
|
467
|
+
getUniqueTags: () => registry.getUniqueTags(),
|
|
468
|
+
getUniqueDomains: () => {
|
|
469
|
+
const domains = new Set;
|
|
470
|
+
for (const f of features) {
|
|
471
|
+
if (f.meta.domain)
|
|
472
|
+
domains.add(f.meta.domain);
|
|
473
|
+
}
|
|
474
|
+
return [...domains].sort();
|
|
475
|
+
},
|
|
476
|
+
getUniqueStabilities: () => {
|
|
477
|
+
const stabilities = new Set;
|
|
478
|
+
for (const f of features) {
|
|
479
|
+
if (f.meta.stability)
|
|
480
|
+
stabilities.add(f.meta.stability);
|
|
481
|
+
}
|
|
482
|
+
return [...stabilities].sort();
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
}, [registry]);
|
|
486
486
|
}
|
|
487
487
|
// src/presentation/features/hooks/useRelatedDocs.ts
|
|
488
|
-
import { useMemo as useMemo5 } from "react";
|
|
489
488
|
import { defaultDocRegistry } from "@contractspec/lib.contracts-spec/docs";
|
|
489
|
+
import { useMemo as useMemo5 } from "react";
|
|
490
490
|
"use client";
|
|
491
491
|
function useRelatedDocs(key, tags) {
|
|
492
492
|
const docs2 = useMemo5(() => {
|
|
@@ -588,7 +588,7 @@ function FeatureHoverPreview({ feature }) {
|
|
|
588
588
|
]
|
|
589
589
|
}),
|
|
590
590
|
hasCapabilities && /* @__PURE__ */ jsxs("div", {
|
|
591
|
-
className: "
|
|
591
|
+
className: "space-y-1.5 border-border/50 border-t pt-1",
|
|
592
592
|
children: [
|
|
593
593
|
capabilities?.provides?.length ? /* @__PURE__ */ jsxs(HStack, {
|
|
594
594
|
gap: "xs",
|
|
@@ -647,13 +647,13 @@ function FeatureHoverPreview({ feature }) {
|
|
|
647
647
|
meta.tags?.length ? /* @__PURE__ */ jsxs(HStack, {
|
|
648
648
|
gap: "xs",
|
|
649
649
|
wrap: "wrap",
|
|
650
|
-
className: "border-border/50
|
|
650
|
+
className: "items-center border-border/50 border-t pt-1",
|
|
651
651
|
children: [
|
|
652
652
|
/* @__PURE__ */ jsx2(Tag, {
|
|
653
|
-
className: "
|
|
653
|
+
className: "h-3.5 w-3.5 text-muted-foreground"
|
|
654
654
|
}),
|
|
655
655
|
meta.tags.slice(0, 4).map((tag) => /* @__PURE__ */ jsxs("span", {
|
|
656
|
-
className: "bg-muted
|
|
656
|
+
className: "rounded bg-muted px-1.5 py-0.5 text-muted-foreground text-xs",
|
|
657
657
|
children: [
|
|
658
658
|
"#",
|
|
659
659
|
tag
|
|
@@ -670,7 +670,7 @@ function FeatureHoverPreview({ feature }) {
|
|
|
670
670
|
}) : null,
|
|
671
671
|
meta.owners?.length ? /* @__PURE__ */ jsxs(HStack, {
|
|
672
672
|
gap: "xs",
|
|
673
|
-
className: "text-muted-foreground
|
|
673
|
+
className: "items-center text-muted-foreground text-xs",
|
|
674
674
|
children: [
|
|
675
675
|
/* @__PURE__ */ jsx2(Users, {
|
|
676
676
|
className: "h-3.5 w-3.5"
|
|
@@ -686,7 +686,7 @@ function FeatureHoverPreview({ feature }) {
|
|
|
686
686
|
// src/presentation/features/molecules/FeatureCard/FeatureCard.tsx
|
|
687
687
|
import { EntityCard, StatusChip as StatusChip2 } from "@contractspec/lib.design-system";
|
|
688
688
|
import { HStack as HStack2 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
689
|
-
import {
|
|
689
|
+
import { Layout as Layout3, Radio as Radio2, Shield as Shield3, Zap as Zap2 } from "lucide-react";
|
|
690
690
|
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
691
691
|
"use client";
|
|
692
692
|
var stabilityTone = {
|
|
@@ -725,7 +725,7 @@ function FeatureCard({
|
|
|
725
725
|
size: "sm"
|
|
726
726
|
}),
|
|
727
727
|
meta: meta.description ? /* @__PURE__ */ jsx3("span", {
|
|
728
|
-
className: "
|
|
728
|
+
className: "line-clamp-2 text-muted-foreground text-sm",
|
|
729
729
|
children: meta.description
|
|
730
730
|
}) : undefined,
|
|
731
731
|
preview: /* @__PURE__ */ jsx3(FeatureHoverPreview, {
|
|
@@ -733,7 +733,7 @@ function FeatureCard({
|
|
|
733
733
|
}),
|
|
734
734
|
footer: /* @__PURE__ */ jsxs2(HStack2, {
|
|
735
735
|
gap: "md",
|
|
736
|
-
className: "
|
|
736
|
+
className: "w-full justify-between text-muted-foreground text-xs",
|
|
737
737
|
children: [
|
|
738
738
|
/* @__PURE__ */ jsxs2(HStack2, {
|
|
739
739
|
gap: "sm",
|
|
@@ -780,12 +780,59 @@ function FeatureCard({
|
|
|
780
780
|
})
|
|
781
781
|
});
|
|
782
782
|
}
|
|
783
|
-
// src/presentation/features/molecules/
|
|
784
|
-
import {
|
|
785
|
-
import {
|
|
783
|
+
// src/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.tsx
|
|
784
|
+
import { StatusChip as StatusChip3 } from "@contractspec/lib.design-system";
|
|
785
|
+
import { HStack as HStack3 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
786
786
|
import { cn as cn2 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
787
|
+
import { Boxes as Boxes2, ChevronDown } from "lucide-react";
|
|
787
788
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
788
789
|
"use client";
|
|
790
|
+
function FeatureCategoryHeader({
|
|
791
|
+
title,
|
|
792
|
+
count,
|
|
793
|
+
icon,
|
|
794
|
+
isCollapsed = false,
|
|
795
|
+
onToggle,
|
|
796
|
+
className
|
|
797
|
+
}) {
|
|
798
|
+
return /* @__PURE__ */ jsxs3("button", {
|
|
799
|
+
type: "button",
|
|
800
|
+
onClick: onToggle,
|
|
801
|
+
className: cn2("flex w-full items-center justify-between rounded-lg px-4 py-3", "bg-muted/30 transition-colors hover:bg-muted/50", "group cursor-pointer", className),
|
|
802
|
+
children: [
|
|
803
|
+
/* @__PURE__ */ jsxs3(HStack3, {
|
|
804
|
+
gap: "sm",
|
|
805
|
+
className: "items-center",
|
|
806
|
+
children: [
|
|
807
|
+
/* @__PURE__ */ jsx4("div", {
|
|
808
|
+
className: "text-muted-foreground transition-colors group-hover:text-foreground",
|
|
809
|
+
children: icon || /* @__PURE__ */ jsx4(Boxes2, {
|
|
810
|
+
className: "h-5 w-5"
|
|
811
|
+
})
|
|
812
|
+
}),
|
|
813
|
+
/* @__PURE__ */ jsx4("span", {
|
|
814
|
+
className: "font-semibold text-lg capitalize transition-colors group-hover:text-primary",
|
|
815
|
+
children: title
|
|
816
|
+
}),
|
|
817
|
+
/* @__PURE__ */ jsx4(StatusChip3, {
|
|
818
|
+
tone: "neutral",
|
|
819
|
+
label: `${count} ${count === 1 ? "feature" : "features"}`,
|
|
820
|
+
size: "sm"
|
|
821
|
+
})
|
|
822
|
+
]
|
|
823
|
+
}),
|
|
824
|
+
/* @__PURE__ */ jsx4(ChevronDown, {
|
|
825
|
+
className: cn2("h-5 w-5 text-muted-foreground transition-transform duration-200", isCollapsed && "-rotate-90")
|
|
826
|
+
})
|
|
827
|
+
]
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
// src/presentation/features/molecules/FeatureFilters/FeatureFilters.tsx
|
|
831
|
+
import { Button, Input } from "@contractspec/lib.design-system";
|
|
832
|
+
import { HStack as HStack4, VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
833
|
+
import { cn as cn3 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
834
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
835
|
+
"use client";
|
|
789
836
|
function FeatureFiltersBar({
|
|
790
837
|
uniqueTags,
|
|
791
838
|
uniqueStabilities,
|
|
@@ -797,23 +844,23 @@ function FeatureFiltersBar({
|
|
|
797
844
|
hasActiveFilters,
|
|
798
845
|
className
|
|
799
846
|
}) {
|
|
800
|
-
return /* @__PURE__ */
|
|
847
|
+
return /* @__PURE__ */ jsxs4(VStack, {
|
|
801
848
|
gap: "md",
|
|
802
|
-
className:
|
|
849
|
+
className: cn3("w-full", className),
|
|
803
850
|
children: [
|
|
804
|
-
/* @__PURE__ */
|
|
851
|
+
/* @__PURE__ */ jsxs4(HStack4, {
|
|
805
852
|
gap: "md",
|
|
806
853
|
justify: "between",
|
|
807
854
|
className: "w-full",
|
|
808
855
|
children: [
|
|
809
|
-
/* @__PURE__ */
|
|
856
|
+
/* @__PURE__ */ jsx5(Input, {
|
|
810
857
|
placeholder: "Search features...",
|
|
811
858
|
value: filters.search,
|
|
812
859
|
onChange: (e) => setSearch(e.target.value),
|
|
813
860
|
className: "max-w-md",
|
|
814
861
|
"aria-label": "Search features"
|
|
815
862
|
}),
|
|
816
|
-
hasActiveFilters && /* @__PURE__ */
|
|
863
|
+
hasActiveFilters && /* @__PURE__ */ jsx5(Button, {
|
|
817
864
|
variant: "ghost",
|
|
818
865
|
size: "sm",
|
|
819
866
|
onClick: clearFilters,
|
|
@@ -821,15 +868,15 @@ function FeatureFiltersBar({
|
|
|
821
868
|
})
|
|
822
869
|
]
|
|
823
870
|
}),
|
|
824
|
-
uniqueStabilities.length > 0 && /* @__PURE__ */
|
|
871
|
+
uniqueStabilities.length > 0 && /* @__PURE__ */ jsxs4(HStack4, {
|
|
825
872
|
gap: "xs",
|
|
826
873
|
wrap: "wrap",
|
|
827
874
|
children: [
|
|
828
|
-
/* @__PURE__ */
|
|
875
|
+
/* @__PURE__ */ jsx5("span", {
|
|
829
876
|
className: "text-muted-foreground text-sm",
|
|
830
877
|
children: "Stability:"
|
|
831
878
|
}),
|
|
832
|
-
uniqueStabilities.map((stability) => /* @__PURE__ */
|
|
879
|
+
uniqueStabilities.map((stability) => /* @__PURE__ */ jsx5(Button, {
|
|
833
880
|
variant: filters.stability.includes(stability) ? "default" : "outline",
|
|
834
881
|
size: "sm",
|
|
835
882
|
onClick: () => toggleStability(stability),
|
|
@@ -838,15 +885,15 @@ function FeatureFiltersBar({
|
|
|
838
885
|
}, stability))
|
|
839
886
|
]
|
|
840
887
|
}),
|
|
841
|
-
uniqueTags.length > 0 && /* @__PURE__ */
|
|
888
|
+
uniqueTags.length > 0 && /* @__PURE__ */ jsxs4(HStack4, {
|
|
842
889
|
gap: "xs",
|
|
843
890
|
wrap: "wrap",
|
|
844
891
|
children: [
|
|
845
|
-
/* @__PURE__ */
|
|
892
|
+
/* @__PURE__ */ jsx5("span", {
|
|
846
893
|
className: "text-muted-foreground text-sm",
|
|
847
894
|
children: "Tags:"
|
|
848
895
|
}),
|
|
849
|
-
uniqueTags.slice(0, 10).map((tag) => /* @__PURE__ */
|
|
896
|
+
uniqueTags.slice(0, 10).map((tag) => /* @__PURE__ */ jsxs4(Button, {
|
|
850
897
|
variant: filters.tags.includes(tag) ? "default" : "outline",
|
|
851
898
|
size: "sm",
|
|
852
899
|
onClick: () => toggleTag(tag),
|
|
@@ -856,7 +903,7 @@ function FeatureFiltersBar({
|
|
|
856
903
|
tag
|
|
857
904
|
]
|
|
858
905
|
}, tag)),
|
|
859
|
-
uniqueTags.length > 10 && /* @__PURE__ */
|
|
906
|
+
uniqueTags.length > 10 && /* @__PURE__ */ jsxs4("span", {
|
|
860
907
|
className: "text-muted-foreground text-sm",
|
|
861
908
|
children: [
|
|
862
909
|
"+",
|
|
@@ -869,88 +916,219 @@ function FeatureFiltersBar({
|
|
|
869
916
|
]
|
|
870
917
|
});
|
|
871
918
|
}
|
|
872
|
-
// src/presentation/features/
|
|
873
|
-
import {
|
|
874
|
-
import {
|
|
875
|
-
import {
|
|
876
|
-
import { StatusChip as StatusChip3 } from "@contractspec/lib.design-system";
|
|
877
|
-
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
919
|
+
// src/presentation/features/organisms/FeatureDataViewsList.tsx
|
|
920
|
+
import { EntityCard as EntityCard2 } from "@contractspec/lib.design-system";
|
|
921
|
+
import { Table } from "lucide-react";
|
|
922
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
878
923
|
"use client";
|
|
879
|
-
function
|
|
880
|
-
|
|
881
|
-
count,
|
|
882
|
-
icon,
|
|
883
|
-
isCollapsed = false,
|
|
884
|
-
onToggle,
|
|
885
|
-
className
|
|
924
|
+
function FeatureDataViewsList({
|
|
925
|
+
feature
|
|
886
926
|
}) {
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
className:
|
|
927
|
+
if (!feature.dataViews?.length)
|
|
928
|
+
return null;
|
|
929
|
+
return /* @__PURE__ */ jsx6("div", {
|
|
930
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
931
|
+
children: feature.dataViews.map((view) => {
|
|
932
|
+
const spec = resolveSerializedDataViewSpec(view.key, view.version);
|
|
933
|
+
return /* @__PURE__ */ jsx6(EntityCard2, {
|
|
934
|
+
cardTitle: view.key,
|
|
935
|
+
cardSubtitle: `v${view.version}`,
|
|
936
|
+
footer: spec?.meta.description,
|
|
937
|
+
icon: /* @__PURE__ */ jsx6(Table, {
|
|
938
|
+
className: "h-4 w-4"
|
|
939
|
+
}),
|
|
940
|
+
href: `/features/${feature.meta.key}/dataviews/${view.key}`
|
|
941
|
+
}, view.key);
|
|
942
|
+
})
|
|
943
|
+
});
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
// src/presentation/features/organisms/FeatureDetail/FeatureDetail.tsx
|
|
947
|
+
import {
|
|
948
|
+
StatCard,
|
|
949
|
+
StatCardGroup,
|
|
950
|
+
StatusChip as StatusChip4
|
|
951
|
+
} from "@contractspec/lib.design-system";
|
|
952
|
+
import { Box, HStack as HStack5, VStack as VStack2 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
953
|
+
import { cn as cn4 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
954
|
+
import Link from "next/link";
|
|
955
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
956
|
+
"use client";
|
|
957
|
+
var stabilityTone2 = {
|
|
958
|
+
stable: "success",
|
|
959
|
+
beta: "warning",
|
|
960
|
+
experimental: "info",
|
|
961
|
+
deprecated: "danger"
|
|
962
|
+
};
|
|
963
|
+
function FeatureDetail({ feature, className }) {
|
|
964
|
+
const { meta, operations, events, presentations, capabilities } = feature;
|
|
965
|
+
const tone = stabilityTone2[meta.stability] ?? "neutral";
|
|
966
|
+
return /* @__PURE__ */ jsxs5(VStack2, {
|
|
967
|
+
gap: "lg",
|
|
968
|
+
className: cn4("w-full", className),
|
|
891
969
|
children: [
|
|
892
|
-
/* @__PURE__ */
|
|
970
|
+
/* @__PURE__ */ jsxs5(HStack5, {
|
|
893
971
|
gap: "sm",
|
|
894
|
-
className: "items-center",
|
|
895
972
|
children: [
|
|
896
|
-
/* @__PURE__ */
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
className: "h-5 w-5"
|
|
900
|
-
})
|
|
973
|
+
/* @__PURE__ */ jsx7(StatusChip4, {
|
|
974
|
+
tone,
|
|
975
|
+
label: meta.stability ?? "unknown"
|
|
901
976
|
}),
|
|
902
|
-
/* @__PURE__ */
|
|
903
|
-
|
|
904
|
-
|
|
977
|
+
/* @__PURE__ */ jsx7(StatusChip4, {
|
|
978
|
+
tone: "neutral",
|
|
979
|
+
label: meta.key,
|
|
980
|
+
size: "sm"
|
|
905
981
|
}),
|
|
906
|
-
/* @__PURE__ */
|
|
982
|
+
/* @__PURE__ */ jsx7(StatusChip4, {
|
|
907
983
|
tone: "neutral",
|
|
908
|
-
label:
|
|
984
|
+
label: `v${meta.version}`,
|
|
909
985
|
size: "sm"
|
|
910
986
|
})
|
|
911
987
|
]
|
|
912
988
|
}),
|
|
913
|
-
/* @__PURE__ */
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
989
|
+
/* @__PURE__ */ jsxs5(StatCardGroup, {
|
|
990
|
+
children: [
|
|
991
|
+
/* @__PURE__ */ jsx7(Link, {
|
|
992
|
+
href: `./${feature.meta.key}/operations`,
|
|
993
|
+
children: /* @__PURE__ */ jsx7(StatCard, {
|
|
994
|
+
label: "Operations",
|
|
995
|
+
value: operations?.length ?? 0
|
|
996
|
+
})
|
|
997
|
+
}),
|
|
998
|
+
/* @__PURE__ */ jsx7(Link, {
|
|
999
|
+
href: `./${feature.meta.key}/events`,
|
|
1000
|
+
children: /* @__PURE__ */ jsx7(StatCard, {
|
|
1001
|
+
label: "Events",
|
|
1002
|
+
value: events?.length ?? 0
|
|
1003
|
+
})
|
|
1004
|
+
}),
|
|
1005
|
+
/* @__PURE__ */ jsx7(Link, {
|
|
1006
|
+
href: `./${feature.meta.key}/presentations`,
|
|
1007
|
+
children: /* @__PURE__ */ jsx7(StatCard, {
|
|
1008
|
+
label: "Presentations",
|
|
1009
|
+
value: presentations?.length ?? 0
|
|
1010
|
+
})
|
|
1011
|
+
})
|
|
1012
|
+
]
|
|
1013
|
+
}),
|
|
1014
|
+
capabilities?.provides?.length ? /* @__PURE__ */ jsxs5(Box, {
|
|
1015
|
+
className: "flex-col rounded-lg border p-4",
|
|
1016
|
+
gap: "sm",
|
|
1017
|
+
align: "start",
|
|
1018
|
+
children: [
|
|
1019
|
+
/* @__PURE__ */ jsx7("span", {
|
|
1020
|
+
className: "font-semibold",
|
|
1021
|
+
children: "Provides Capabilities"
|
|
1022
|
+
}),
|
|
1023
|
+
/* @__PURE__ */ jsx7(HStack5, {
|
|
1024
|
+
gap: "xs",
|
|
1025
|
+
wrap: "wrap",
|
|
1026
|
+
children: capabilities.provides.map((cap) => /* @__PURE__ */ jsx7(StatusChip4, {
|
|
1027
|
+
tone: "success",
|
|
1028
|
+
label: `${cap.key} v${cap.version}`,
|
|
1029
|
+
size: "sm"
|
|
1030
|
+
}, `${cap.key}-${cap.version}`))
|
|
1031
|
+
})
|
|
1032
|
+
]
|
|
1033
|
+
}) : null,
|
|
1034
|
+
capabilities?.requires?.length ? /* @__PURE__ */ jsxs5(Box, {
|
|
1035
|
+
className: "flex-col rounded-lg border p-4",
|
|
1036
|
+
gap: "sm",
|
|
1037
|
+
align: "start",
|
|
1038
|
+
children: [
|
|
1039
|
+
/* @__PURE__ */ jsx7("span", {
|
|
1040
|
+
className: "font-semibold",
|
|
1041
|
+
children: "Requires Capabilities"
|
|
1042
|
+
}),
|
|
1043
|
+
/* @__PURE__ */ jsx7(HStack5, {
|
|
1044
|
+
gap: "xs",
|
|
1045
|
+
wrap: "wrap",
|
|
1046
|
+
children: capabilities.requires.map((req) => /* @__PURE__ */ jsx7(StatusChip4, {
|
|
1047
|
+
tone: "info",
|
|
1048
|
+
label: `${req.key}${req.version ? ` v${req.version}` : ""}${req.optional ? " (optional)" : ""}`,
|
|
1049
|
+
size: "sm"
|
|
1050
|
+
}, req.key))
|
|
1051
|
+
})
|
|
1052
|
+
]
|
|
1053
|
+
}) : null,
|
|
1054
|
+
meta.tags?.length ? /* @__PURE__ */ jsxs5(Box, {
|
|
1055
|
+
className: "flex-col rounded-lg border p-4",
|
|
1056
|
+
gap: "sm",
|
|
1057
|
+
align: "start",
|
|
1058
|
+
children: [
|
|
1059
|
+
/* @__PURE__ */ jsx7("span", {
|
|
1060
|
+
className: "font-semibold",
|
|
1061
|
+
children: "Tags"
|
|
1062
|
+
}),
|
|
1063
|
+
/* @__PURE__ */ jsx7(HStack5, {
|
|
1064
|
+
gap: "xs",
|
|
1065
|
+
wrap: "wrap",
|
|
1066
|
+
children: meta.tags.map((tag) => /* @__PURE__ */ jsx7(StatusChip4, {
|
|
1067
|
+
tone: "neutral",
|
|
1068
|
+
label: `#${tag}`,
|
|
1069
|
+
size: "sm"
|
|
1070
|
+
}, tag))
|
|
1071
|
+
})
|
|
1072
|
+
]
|
|
1073
|
+
}) : null,
|
|
1074
|
+
meta.owners?.length ? /* @__PURE__ */ jsxs5(Box, {
|
|
1075
|
+
className: "flex-col rounded-lg border p-4",
|
|
1076
|
+
gap: "sm",
|
|
1077
|
+
align: "start",
|
|
1078
|
+
children: [
|
|
1079
|
+
/* @__PURE__ */ jsx7("span", {
|
|
1080
|
+
className: "font-semibold",
|
|
1081
|
+
children: "Owners"
|
|
1082
|
+
}),
|
|
1083
|
+
/* @__PURE__ */ jsx7(HStack5, {
|
|
1084
|
+
gap: "xs",
|
|
1085
|
+
wrap: "wrap",
|
|
1086
|
+
children: meta.owners.map((owner) => /* @__PURE__ */ jsx7(StatusChip4, {
|
|
1087
|
+
tone: "neutral",
|
|
1088
|
+
label: owner,
|
|
1089
|
+
size: "sm"
|
|
1090
|
+
}, owner))
|
|
1091
|
+
})
|
|
1092
|
+
]
|
|
1093
|
+
}) : null
|
|
1094
|
+
]
|
|
1095
|
+
});
|
|
1096
|
+
}
|
|
1097
|
+
// src/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.tsx
|
|
1098
|
+
import {
|
|
1099
|
+
Button as Button2,
|
|
1100
|
+
EmptyState,
|
|
1101
|
+
PageHeaderResponsive,
|
|
1102
|
+
StatusChip as StatusChip5
|
|
1103
|
+
} from "@contractspec/lib.design-system";
|
|
1104
|
+
import { HStack as HStack6, VStack as VStack3 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
1105
|
+
import { cn as cn5 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1106
|
+
import { LayoutGrid, List, Star } from "lucide-react";
|
|
1107
|
+
import * as React2 from "react";
|
|
1108
|
+
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1109
|
+
"use client";
|
|
1110
|
+
function groupFeaturesByDomain(features) {
|
|
1111
|
+
const groups = {};
|
|
1112
|
+
for (const feature of features) {
|
|
1113
|
+
const domain = feature.meta.domain || "Other";
|
|
1114
|
+
if (!groups[domain])
|
|
1115
|
+
groups[domain] = [];
|
|
1116
|
+
groups[domain].push(feature);
|
|
1117
|
+
}
|
|
1118
|
+
return groups;
|
|
1119
|
+
}
|
|
1120
|
+
function groupFeaturesByStability(features) {
|
|
1121
|
+
const order = ["stable", "beta", "experimental", "deprecated", "unknown"];
|
|
1122
|
+
const groups = {};
|
|
1123
|
+
for (const feature of features) {
|
|
1124
|
+
const stability = feature.meta.stability || "unknown";
|
|
1125
|
+
if (!groups[stability])
|
|
1126
|
+
groups[stability] = [];
|
|
1127
|
+
groups[stability].push(feature);
|
|
1128
|
+
}
|
|
1129
|
+
const sorted = {};
|
|
1130
|
+
for (const key of order) {
|
|
1131
|
+
if (groups[key])
|
|
954
1132
|
sorted[key] = groups[key];
|
|
955
1133
|
}
|
|
956
1134
|
return sorted;
|
|
@@ -997,42 +1175,42 @@ function FeatureDiscovery({
|
|
|
997
1175
|
});
|
|
998
1176
|
};
|
|
999
1177
|
const gridClasses = viewMode === "grid" ? "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3" : "flex flex-col gap-3";
|
|
1000
|
-
const renderFeatureCards = (featureList) => /* @__PURE__ */
|
|
1178
|
+
const renderFeatureCards = (featureList) => /* @__PURE__ */ jsx8("div", {
|
|
1001
1179
|
className: gridClasses,
|
|
1002
|
-
children: featureList.map((feature) => /* @__PURE__ */
|
|
1180
|
+
children: featureList.map((feature) => /* @__PURE__ */ jsx8(FeatureCard, {
|
|
1003
1181
|
feature,
|
|
1004
1182
|
onSelect: onSelectFeature
|
|
1005
1183
|
}, feature.meta.key))
|
|
1006
1184
|
});
|
|
1007
|
-
return /* @__PURE__ */
|
|
1185
|
+
return /* @__PURE__ */ jsxs6(VStack3, {
|
|
1008
1186
|
gap: "lg",
|
|
1009
|
-
className:
|
|
1187
|
+
className: cn5("w-full p-6", className),
|
|
1010
1188
|
children: [
|
|
1011
|
-
/* @__PURE__ */
|
|
1189
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1012
1190
|
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
1013
1191
|
children: [
|
|
1014
|
-
/* @__PURE__ */
|
|
1192
|
+
/* @__PURE__ */ jsx8(PageHeaderResponsive, {
|
|
1015
1193
|
title: "Feature Discovery",
|
|
1016
1194
|
subtitle: `Browse ${features.length} available ContractSpec features`
|
|
1017
1195
|
}),
|
|
1018
|
-
/* @__PURE__ */
|
|
1196
|
+
/* @__PURE__ */ jsxs6(HStack6, {
|
|
1019
1197
|
gap: "xs",
|
|
1020
1198
|
children: [
|
|
1021
|
-
/* @__PURE__ */
|
|
1199
|
+
/* @__PURE__ */ jsx8("button", {
|
|
1022
1200
|
type: "button",
|
|
1023
1201
|
onClick: () => setViewMode("grid"),
|
|
1024
|
-
className:
|
|
1202
|
+
className: cn5("rounded-md p-2 transition-colors", viewMode === "grid" ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground hover:bg-muted/80"),
|
|
1025
1203
|
"aria-label": "Grid view",
|
|
1026
|
-
children: /* @__PURE__ */
|
|
1204
|
+
children: /* @__PURE__ */ jsx8(LayoutGrid, {
|
|
1027
1205
|
className: "h-4 w-4"
|
|
1028
1206
|
})
|
|
1029
1207
|
}),
|
|
1030
|
-
/* @__PURE__ */
|
|
1208
|
+
/* @__PURE__ */ jsx8("button", {
|
|
1031
1209
|
type: "button",
|
|
1032
1210
|
onClick: () => setViewMode("list"),
|
|
1033
|
-
className:
|
|
1211
|
+
className: cn5("rounded-md p-2 transition-colors", viewMode === "list" ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground hover:bg-muted/80"),
|
|
1034
1212
|
"aria-label": "List view",
|
|
1035
|
-
children: /* @__PURE__ */
|
|
1213
|
+
children: /* @__PURE__ */ jsx8(List, {
|
|
1036
1214
|
className: "h-4 w-4"
|
|
1037
1215
|
})
|
|
1038
1216
|
})
|
|
@@ -1040,7 +1218,7 @@ function FeatureDiscovery({
|
|
|
1040
1218
|
})
|
|
1041
1219
|
]
|
|
1042
1220
|
}),
|
|
1043
|
-
/* @__PURE__ */
|
|
1221
|
+
/* @__PURE__ */ jsx8(FeatureFiltersBar, {
|
|
1044
1222
|
uniqueTags,
|
|
1045
1223
|
uniqueStabilities,
|
|
1046
1224
|
filters,
|
|
@@ -1050,32 +1228,32 @@ function FeatureDiscovery({
|
|
|
1050
1228
|
clearFilters,
|
|
1051
1229
|
hasActiveFilters
|
|
1052
1230
|
}),
|
|
1053
|
-
filteredFeatures.length === 0 ? /* @__PURE__ */
|
|
1231
|
+
filteredFeatures.length === 0 ? /* @__PURE__ */ jsx8(EmptyState, {
|
|
1054
1232
|
title: "No features found",
|
|
1055
1233
|
description: hasActiveFilters ? "Try adjusting your search or filters" : "No features are registered yet",
|
|
1056
|
-
primaryAction: hasActiveFilters ? /* @__PURE__ */
|
|
1234
|
+
primaryAction: hasActiveFilters ? /* @__PURE__ */ jsx8(Button2, {
|
|
1057
1235
|
variant: "outline",
|
|
1058
1236
|
onClick: clearFilters,
|
|
1059
1237
|
children: "Clear filters"
|
|
1060
1238
|
}) : undefined
|
|
1061
|
-
}) : /* @__PURE__ */
|
|
1239
|
+
}) : /* @__PURE__ */ jsxs6(VStack3, {
|
|
1062
1240
|
gap: "lg",
|
|
1063
1241
|
children: [
|
|
1064
|
-
showFeatured && featuredFeatures.length > 0 && /* @__PURE__ */
|
|
1242
|
+
showFeatured && featuredFeatures.length > 0 && /* @__PURE__ */ jsxs6(VStack3, {
|
|
1065
1243
|
gap: "sm",
|
|
1066
1244
|
children: [
|
|
1067
|
-
/* @__PURE__ */
|
|
1245
|
+
/* @__PURE__ */ jsxs6(HStack6, {
|
|
1068
1246
|
gap: "sm",
|
|
1069
1247
|
className: "items-center",
|
|
1070
1248
|
children: [
|
|
1071
|
-
/* @__PURE__ */
|
|
1249
|
+
/* @__PURE__ */ jsx8(Star, {
|
|
1072
1250
|
className: "h-5 w-5 fill-amber-500 text-amber-500"
|
|
1073
1251
|
}),
|
|
1074
|
-
/* @__PURE__ */
|
|
1075
|
-
className: "text-lg
|
|
1252
|
+
/* @__PURE__ */ jsx8("span", {
|
|
1253
|
+
className: "font-semibold text-lg",
|
|
1076
1254
|
children: "Featured"
|
|
1077
1255
|
}),
|
|
1078
|
-
/* @__PURE__ */
|
|
1256
|
+
/* @__PURE__ */ jsx8(StatusChip5, {
|
|
1079
1257
|
tone: "success",
|
|
1080
1258
|
label: `${featuredFeatures.length} stable`,
|
|
1081
1259
|
size: "sm"
|
|
@@ -1085,12 +1263,12 @@ function FeatureDiscovery({
|
|
|
1085
1263
|
renderFeatureCards(featuredFeatures)
|
|
1086
1264
|
]
|
|
1087
1265
|
}),
|
|
1088
|
-
groupedFeatures ? /* @__PURE__ */
|
|
1266
|
+
groupedFeatures ? /* @__PURE__ */ jsx8(VStack3, {
|
|
1089
1267
|
gap: "md",
|
|
1090
|
-
children: Object.entries(groupedFeatures).map(([group, groupFeatures]) => /* @__PURE__ */
|
|
1268
|
+
children: Object.entries(groupedFeatures).map(([group, groupFeatures]) => /* @__PURE__ */ jsxs6(VStack3, {
|
|
1091
1269
|
gap: "sm",
|
|
1092
1270
|
children: [
|
|
1093
|
-
/* @__PURE__ */
|
|
1271
|
+
/* @__PURE__ */ jsx8(FeatureCategoryHeader, {
|
|
1094
1272
|
title: group,
|
|
1095
1273
|
count: groupFeatures.length,
|
|
1096
1274
|
isCollapsed: collapsedGroups.has(group),
|
|
@@ -1105,322 +1283,414 @@ function FeatureDiscovery({
|
|
|
1105
1283
|
]
|
|
1106
1284
|
});
|
|
1107
1285
|
}
|
|
1108
|
-
// src/presentation/features/organisms/
|
|
1286
|
+
// src/presentation/features/organisms/FeatureEventsList.tsx
|
|
1287
|
+
import { EntityCard as EntityCard3 } from "@contractspec/lib.design-system";
|
|
1288
|
+
import { Radio as Radio3 } from "lucide-react";
|
|
1289
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
1290
|
+
"use client";
|
|
1291
|
+
function FeatureEventsList({ feature }) {
|
|
1292
|
+
if (!feature.events?.length)
|
|
1293
|
+
return null;
|
|
1294
|
+
return /* @__PURE__ */ jsx9("div", {
|
|
1295
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1296
|
+
children: feature.events.map((ev) => {
|
|
1297
|
+
const spec = resolveSerializedEventSpec(ev.key, ev.version);
|
|
1298
|
+
return /* @__PURE__ */ jsx9(EntityCard3, {
|
|
1299
|
+
cardTitle: ev.key,
|
|
1300
|
+
cardSubtitle: `v${ev.version}`,
|
|
1301
|
+
footer: spec?.meta.description,
|
|
1302
|
+
icon: /* @__PURE__ */ jsx9(Radio3, {
|
|
1303
|
+
className: "h-4 w-4"
|
|
1304
|
+
}),
|
|
1305
|
+
href: `/features/${feature.meta.key}/events/${ev.key}`
|
|
1306
|
+
}, ev.key);
|
|
1307
|
+
})
|
|
1308
|
+
});
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
// src/presentation/features/organisms/FeatureFormsList.tsx
|
|
1312
|
+
import { EntityCard as EntityCard4 } from "@contractspec/lib.design-system";
|
|
1313
|
+
import { FormInput } from "lucide-react";
|
|
1314
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1315
|
+
"use client";
|
|
1316
|
+
function FeatureFormsList({ feature }) {
|
|
1317
|
+
if (!feature.forms?.length)
|
|
1318
|
+
return null;
|
|
1319
|
+
return /* @__PURE__ */ jsx10("div", {
|
|
1320
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1321
|
+
children: feature.forms.map((form) => {
|
|
1322
|
+
const spec = resolveSerializedFormSpec(form.key, form.version);
|
|
1323
|
+
return /* @__PURE__ */ jsx10(EntityCard4, {
|
|
1324
|
+
cardTitle: form.key,
|
|
1325
|
+
cardSubtitle: form.version ? `v${form.version}` : undefined,
|
|
1326
|
+
footer: spec?.meta.description,
|
|
1327
|
+
icon: /* @__PURE__ */ jsx10(FormInput, {
|
|
1328
|
+
className: "h-4 w-4"
|
|
1329
|
+
}),
|
|
1330
|
+
href: `/features/${feature.meta.key}/forms/${form.key}`
|
|
1331
|
+
}, form.key);
|
|
1332
|
+
})
|
|
1333
|
+
});
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
// src/presentation/features/organisms/FeatureOperationsList.tsx
|
|
1337
|
+
import { EntityCard as EntityCard5 } from "@contractspec/lib.design-system";
|
|
1338
|
+
import { Zap as Zap3 } from "lucide-react";
|
|
1339
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
1340
|
+
"use client";
|
|
1341
|
+
function FeatureOperationsList({
|
|
1342
|
+
feature
|
|
1343
|
+
}) {
|
|
1344
|
+
if (!feature.operations?.length)
|
|
1345
|
+
return null;
|
|
1346
|
+
return /* @__PURE__ */ jsx11("div", {
|
|
1347
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1348
|
+
children: feature.operations.map((op) => {
|
|
1349
|
+
const spec = resolveSerializedOperationSpec(op.key, op.version);
|
|
1350
|
+
return /* @__PURE__ */ jsx11(EntityCard5, {
|
|
1351
|
+
cardTitle: op.key,
|
|
1352
|
+
cardSubtitle: `v${op.version}`,
|
|
1353
|
+
footer: spec?.meta.description,
|
|
1354
|
+
icon: /* @__PURE__ */ jsx11(Zap3, {
|
|
1355
|
+
className: "h-4 w-4"
|
|
1356
|
+
}),
|
|
1357
|
+
href: `/features/${feature.meta.key}/operations/${op.key}`
|
|
1358
|
+
}, op.key);
|
|
1359
|
+
})
|
|
1360
|
+
});
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
// src/presentation/features/organisms/FeaturePresentationsList.tsx
|
|
1364
|
+
import { EntityCard as EntityCard6 } from "@contractspec/lib.design-system";
|
|
1365
|
+
import { Layout as Layout4 } from "lucide-react";
|
|
1366
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1367
|
+
"use client";
|
|
1368
|
+
function FeaturePresentationsList({
|
|
1369
|
+
feature
|
|
1370
|
+
}) {
|
|
1371
|
+
if (!feature.presentations?.length)
|
|
1372
|
+
return null;
|
|
1373
|
+
return /* @__PURE__ */ jsx12("div", {
|
|
1374
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1375
|
+
children: feature.presentations.map((pres) => {
|
|
1376
|
+
const spec = resolveSerializedPresentationSpec(pres.key, pres.version);
|
|
1377
|
+
return /* @__PURE__ */ jsx12(EntityCard6, {
|
|
1378
|
+
cardTitle: pres.key,
|
|
1379
|
+
cardSubtitle: `v${pres.version}`,
|
|
1380
|
+
footer: spec?.meta.description,
|
|
1381
|
+
icon: /* @__PURE__ */ jsx12(Layout4, {
|
|
1382
|
+
className: "h-4 w-4"
|
|
1383
|
+
}),
|
|
1384
|
+
href: `/features/${feature.meta.key}/presentations/${pres.key}`
|
|
1385
|
+
}, pres.key);
|
|
1386
|
+
})
|
|
1387
|
+
});
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1390
|
+
// src/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.tsx
|
|
1109
1391
|
import {
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1392
|
+
Breadcrumbs,
|
|
1393
|
+
CodeBlock,
|
|
1394
|
+
EmptyState as EmptyState2,
|
|
1395
|
+
PageHeaderResponsive as PageHeaderResponsive2,
|
|
1396
|
+
StatusChip as StatusChip6
|
|
1113
1397
|
} from "@contractspec/lib.design-system";
|
|
1114
|
-
import {
|
|
1115
|
-
import {
|
|
1116
|
-
import
|
|
1117
|
-
import {
|
|
1398
|
+
import { Card } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
1399
|
+
import { Box as Box2, HStack as HStack7, VStack as VStack4 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
1400
|
+
import { cn as cn6 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1401
|
+
import { BookOpen, Code, Database as Database2, Table as Table2 } from "lucide-react";
|
|
1402
|
+
import Link2 from "next/link";
|
|
1403
|
+
import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1118
1404
|
"use client";
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
const
|
|
1127
|
-
const
|
|
1128
|
-
|
|
1405
|
+
function FeatureDataViewDetailTemplate({
|
|
1406
|
+
feature,
|
|
1407
|
+
viewKey,
|
|
1408
|
+
view,
|
|
1409
|
+
spec,
|
|
1410
|
+
className
|
|
1411
|
+
}) {
|
|
1412
|
+
const viewRef = view ?? feature.dataViews?.find((v) => v.key === viewKey);
|
|
1413
|
+
const relatedDocs = useRelatedDocs(viewRef?.key || "", spec?.meta?.tags);
|
|
1414
|
+
if (!viewRef) {
|
|
1415
|
+
return /* @__PURE__ */ jsxs7(VStack4, {
|
|
1416
|
+
gap: "lg",
|
|
1417
|
+
className: cn6("mx-auto w-full max-w-5xl p-6", className),
|
|
1418
|
+
children: [
|
|
1419
|
+
/* @__PURE__ */ jsx13(PageHeaderResponsive2, {
|
|
1420
|
+
title: "Data View Not Found",
|
|
1421
|
+
subtitle: `Data View ${viewKey} not found in feature ${feature.meta.key}`,
|
|
1422
|
+
breadcrumb: /* @__PURE__ */ jsx13(Breadcrumbs, {
|
|
1423
|
+
items: [
|
|
1424
|
+
{ label: "Features", href: "/features" },
|
|
1425
|
+
{
|
|
1426
|
+
label: feature.meta.title || feature.meta.key,
|
|
1427
|
+
href: `/features/${feature.meta.key}`
|
|
1428
|
+
},
|
|
1429
|
+
{ label: "Data Views" }
|
|
1430
|
+
]
|
|
1431
|
+
})
|
|
1432
|
+
}),
|
|
1433
|
+
/* @__PURE__ */ jsx13(EmptyState2, {
|
|
1434
|
+
title: "Data View not found",
|
|
1435
|
+
description: `The data view '${viewKey}' could not be found in this feature.`,
|
|
1436
|
+
icon: /* @__PURE__ */ jsx13(Table2, {
|
|
1437
|
+
className: "h-12 w-12 text-muted-foreground"
|
|
1438
|
+
})
|
|
1439
|
+
})
|
|
1440
|
+
]
|
|
1441
|
+
});
|
|
1442
|
+
}
|
|
1443
|
+
return /* @__PURE__ */ jsxs7(VStack4, {
|
|
1129
1444
|
gap: "lg",
|
|
1130
|
-
className:
|
|
1445
|
+
className: cn6("mx-auto w-full max-w-5xl p-6", className),
|
|
1131
1446
|
children: [
|
|
1132
|
-
/* @__PURE__ */
|
|
1447
|
+
/* @__PURE__ */ jsx13(PageHeaderResponsive2, {
|
|
1448
|
+
title: viewRef.key,
|
|
1449
|
+
subtitle: `Data View defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
1450
|
+
breadcrumb: /* @__PURE__ */ jsx13(Breadcrumbs, {
|
|
1451
|
+
items: [
|
|
1452
|
+
{ label: "Features", href: "/features" },
|
|
1453
|
+
{
|
|
1454
|
+
label: feature.meta.title || feature.meta.key,
|
|
1455
|
+
href: `/features/${feature.meta.key}`
|
|
1456
|
+
},
|
|
1457
|
+
{
|
|
1458
|
+
label: "Data Views",
|
|
1459
|
+
href: `/features/${feature.meta.key}#dataviews`
|
|
1460
|
+
},
|
|
1461
|
+
{ label: viewRef.key }
|
|
1462
|
+
]
|
|
1463
|
+
})
|
|
1464
|
+
}),
|
|
1465
|
+
/* @__PURE__ */ jsxs7(HStack7, {
|
|
1133
1466
|
gap: "sm",
|
|
1134
1467
|
children: [
|
|
1135
|
-
/* @__PURE__ */
|
|
1136
|
-
tone,
|
|
1137
|
-
label:
|
|
1468
|
+
/* @__PURE__ */ jsx13(StatusChip6, {
|
|
1469
|
+
tone: "neutral",
|
|
1470
|
+
label: viewRef.key,
|
|
1471
|
+
size: "sm",
|
|
1472
|
+
icon: /* @__PURE__ */ jsx13(Table2, {
|
|
1473
|
+
className: "h-3 w-3"
|
|
1474
|
+
})
|
|
1138
1475
|
}),
|
|
1139
|
-
/* @__PURE__ */
|
|
1476
|
+
/* @__PURE__ */ jsx13(StatusChip6, {
|
|
1140
1477
|
tone: "neutral",
|
|
1141
|
-
label:
|
|
1478
|
+
label: `v${viewRef.version}`,
|
|
1142
1479
|
size: "sm"
|
|
1143
1480
|
}),
|
|
1144
|
-
/* @__PURE__ */
|
|
1145
|
-
tone: "
|
|
1146
|
-
label:
|
|
1481
|
+
spec?.meta?.stability ? /* @__PURE__ */ jsx13(StatusChip6, {
|
|
1482
|
+
tone: spec.meta.stability === "stable" ? "success" : "warning",
|
|
1483
|
+
label: spec.meta.stability,
|
|
1147
1484
|
size: "sm"
|
|
1148
|
-
})
|
|
1485
|
+
}) : null
|
|
1149
1486
|
]
|
|
1150
1487
|
}),
|
|
1151
|
-
/* @__PURE__ */
|
|
1488
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1489
|
+
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
1152
1490
|
children: [
|
|
1153
|
-
/* @__PURE__ */
|
|
1154
|
-
|
|
1155
|
-
children: /* @__PURE__ */
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1491
|
+
/* @__PURE__ */ jsx13("div", {
|
|
1492
|
+
className: "space-y-6 lg:col-span-2",
|
|
1493
|
+
children: /* @__PURE__ */ jsx13(Card, {
|
|
1494
|
+
className: "p-6",
|
|
1495
|
+
children: /* @__PURE__ */ jsxs7(VStack4, {
|
|
1496
|
+
gap: "md",
|
|
1497
|
+
children: [
|
|
1498
|
+
/* @__PURE__ */ jsxs7(HStack7, {
|
|
1499
|
+
className: "items-center gap-2 border-b pb-2",
|
|
1500
|
+
children: [
|
|
1501
|
+
/* @__PURE__ */ jsx13(Code, {
|
|
1502
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
1503
|
+
}),
|
|
1504
|
+
/* @__PURE__ */ jsx13("h3", {
|
|
1505
|
+
className: "font-semibold text-lg",
|
|
1506
|
+
children: "View Definition"
|
|
1507
|
+
})
|
|
1508
|
+
]
|
|
1509
|
+
}),
|
|
1510
|
+
spec ? /* @__PURE__ */ jsxs7(VStack4, {
|
|
1511
|
+
gap: "lg",
|
|
1512
|
+
children: [
|
|
1513
|
+
spec.meta.description && /* @__PURE__ */ jsx13("p", {
|
|
1514
|
+
className: "text-muted-foreground",
|
|
1515
|
+
children: spec.meta.description
|
|
1516
|
+
}),
|
|
1517
|
+
/* @__PURE__ */ jsxs7(Box2, {
|
|
1518
|
+
className: "flex-col gap-2",
|
|
1519
|
+
children: [
|
|
1520
|
+
/* @__PURE__ */ jsx13("span", {
|
|
1521
|
+
className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
|
|
1522
|
+
children: "Source Query"
|
|
1523
|
+
}),
|
|
1524
|
+
/* @__PURE__ */ jsx13(CodeBlock, {
|
|
1525
|
+
code: JSON.stringify(spec.source, null, 2),
|
|
1526
|
+
language: "json"
|
|
1527
|
+
})
|
|
1528
|
+
]
|
|
1529
|
+
}),
|
|
1530
|
+
/* @__PURE__ */ jsxs7(Box2, {
|
|
1531
|
+
className: "flex-col gap-2",
|
|
1532
|
+
children: [
|
|
1533
|
+
/* @__PURE__ */ jsx13("span", {
|
|
1534
|
+
className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
|
|
1535
|
+
children: "View Configuration"
|
|
1536
|
+
}),
|
|
1537
|
+
/* @__PURE__ */ jsx13(CodeBlock, {
|
|
1538
|
+
code: JSON.stringify(spec.view, null, 2),
|
|
1539
|
+
language: "json"
|
|
1540
|
+
})
|
|
1541
|
+
]
|
|
1542
|
+
})
|
|
1543
|
+
]
|
|
1544
|
+
}) : /* @__PURE__ */ jsxs7(VStack4, {
|
|
1545
|
+
gap: "md",
|
|
1546
|
+
children: [
|
|
1547
|
+
/* @__PURE__ */ jsx13("p", {
|
|
1548
|
+
className: "text-muted-foreground",
|
|
1549
|
+
children: "Full definition details are not available for this data view reference."
|
|
1550
|
+
}),
|
|
1551
|
+
/* @__PURE__ */ jsx13(CodeBlock, {
|
|
1552
|
+
code: JSON.stringify(viewRef, null, 2),
|
|
1553
|
+
language: "json"
|
|
1554
|
+
})
|
|
1555
|
+
]
|
|
1556
|
+
})
|
|
1557
|
+
]
|
|
1558
|
+
})
|
|
1165
1559
|
})
|
|
1166
1560
|
}),
|
|
1167
|
-
/* @__PURE__ */
|
|
1168
|
-
|
|
1169
|
-
children: /* @__PURE__ */
|
|
1170
|
-
|
|
1171
|
-
|
|
1561
|
+
/* @__PURE__ */ jsx13("div", {
|
|
1562
|
+
className: "space-y-6",
|
|
1563
|
+
children: /* @__PURE__ */ jsx13(Card, {
|
|
1564
|
+
className: "p-6",
|
|
1565
|
+
children: /* @__PURE__ */ jsxs7(VStack4, {
|
|
1566
|
+
gap: "md",
|
|
1567
|
+
children: [
|
|
1568
|
+
/* @__PURE__ */ jsxs7(HStack7, {
|
|
1569
|
+
className: "items-center gap-2 border-b pb-2",
|
|
1570
|
+
children: [
|
|
1571
|
+
/* @__PURE__ */ jsx13(Database2, {
|
|
1572
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
1573
|
+
}),
|
|
1574
|
+
/* @__PURE__ */ jsx13("h3", {
|
|
1575
|
+
className: "font-semibold text-lg",
|
|
1576
|
+
children: "Metadata"
|
|
1577
|
+
})
|
|
1578
|
+
]
|
|
1579
|
+
}),
|
|
1580
|
+
/* @__PURE__ */ jsxs7("dl", {
|
|
1581
|
+
className: "grid grid-cols-1 gap-4 text-sm",
|
|
1582
|
+
children: [
|
|
1583
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1584
|
+
children: [
|
|
1585
|
+
/* @__PURE__ */ jsx13("dt", {
|
|
1586
|
+
className: "text-muted-foreground",
|
|
1587
|
+
children: "Key"
|
|
1588
|
+
}),
|
|
1589
|
+
/* @__PURE__ */ jsx13("dd", {
|
|
1590
|
+
className: "truncate font-medium",
|
|
1591
|
+
children: viewRef.key
|
|
1592
|
+
})
|
|
1593
|
+
]
|
|
1594
|
+
}),
|
|
1595
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1596
|
+
children: [
|
|
1597
|
+
/* @__PURE__ */ jsx13("dt", {
|
|
1598
|
+
className: "text-muted-foreground",
|
|
1599
|
+
children: "Version"
|
|
1600
|
+
}),
|
|
1601
|
+
/* @__PURE__ */ jsx13("dd", {
|
|
1602
|
+
className: "font-medium",
|
|
1603
|
+
children: viewRef.version
|
|
1604
|
+
})
|
|
1605
|
+
]
|
|
1606
|
+
}),
|
|
1607
|
+
spec?.meta?.owners && /* @__PURE__ */ jsxs7("div", {
|
|
1608
|
+
children: [
|
|
1609
|
+
/* @__PURE__ */ jsx13("dt", {
|
|
1610
|
+
className: "text-muted-foreground",
|
|
1611
|
+
children: "Owners"
|
|
1612
|
+
}),
|
|
1613
|
+
/* @__PURE__ */ jsx13("dd", {
|
|
1614
|
+
className: "flex flex-wrap gap-1 font-medium",
|
|
1615
|
+
children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx13(StatusChip6, {
|
|
1616
|
+
label: o,
|
|
1617
|
+
size: "sm",
|
|
1618
|
+
tone: "neutral"
|
|
1619
|
+
}, o))
|
|
1620
|
+
})
|
|
1621
|
+
]
|
|
1622
|
+
}),
|
|
1623
|
+
spec?.meta?.tags && /* @__PURE__ */ jsxs7("div", {
|
|
1624
|
+
children: [
|
|
1625
|
+
/* @__PURE__ */ jsx13("dt", {
|
|
1626
|
+
className: "text-muted-foreground",
|
|
1627
|
+
children: "Tags"
|
|
1628
|
+
}),
|
|
1629
|
+
/* @__PURE__ */ jsx13("dd", {
|
|
1630
|
+
className: "flex flex-wrap gap-1 font-medium",
|
|
1631
|
+
children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx13(StatusChip6, {
|
|
1632
|
+
label: `#${t}`,
|
|
1633
|
+
size: "sm",
|
|
1634
|
+
tone: "neutral"
|
|
1635
|
+
}, t))
|
|
1636
|
+
})
|
|
1637
|
+
]
|
|
1638
|
+
})
|
|
1639
|
+
]
|
|
1640
|
+
})
|
|
1641
|
+
]
|
|
1642
|
+
})
|
|
1172
1643
|
})
|
|
1173
|
-
})
|
|
1174
|
-
]
|
|
1175
|
-
}),
|
|
1176
|
-
capabilities?.provides?.length ? /* @__PURE__ */ jsxs6(Box, {
|
|
1177
|
-
className: "flex-col rounded-lg border p-4",
|
|
1178
|
-
gap: "sm",
|
|
1179
|
-
align: "start",
|
|
1180
|
-
children: [
|
|
1181
|
-
/* @__PURE__ */ jsx7("span", {
|
|
1182
|
-
className: "font-semibold",
|
|
1183
|
-
children: "Provides Capabilities"
|
|
1184
1644
|
}),
|
|
1185
|
-
/* @__PURE__ */
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
tone: "neutral",
|
|
1230
|
-
label: `#${tag}`,
|
|
1231
|
-
size: "sm"
|
|
1232
|
-
}, tag))
|
|
1233
|
-
})
|
|
1234
|
-
]
|
|
1235
|
-
}) : null,
|
|
1236
|
-
meta.owners?.length ? /* @__PURE__ */ jsxs6(Box, {
|
|
1237
|
-
className: "flex-col rounded-lg border p-4",
|
|
1238
|
-
gap: "sm",
|
|
1239
|
-
align: "start",
|
|
1240
|
-
children: [
|
|
1241
|
-
/* @__PURE__ */ jsx7("span", {
|
|
1242
|
-
className: "font-semibold",
|
|
1243
|
-
children: "Owners"
|
|
1244
|
-
}),
|
|
1245
|
-
/* @__PURE__ */ jsx7(HStack6, {
|
|
1246
|
-
gap: "xs",
|
|
1247
|
-
wrap: "wrap",
|
|
1248
|
-
children: meta.owners.map((owner) => /* @__PURE__ */ jsx7(StatusChip5, {
|
|
1249
|
-
tone: "neutral",
|
|
1250
|
-
label: owner,
|
|
1251
|
-
size: "sm"
|
|
1252
|
-
}, owner))
|
|
1253
|
-
})
|
|
1254
|
-
]
|
|
1255
|
-
}) : null
|
|
1256
|
-
]
|
|
1257
|
-
});
|
|
1258
|
-
}
|
|
1259
|
-
// src/presentation/features/organisms/FeatureOperationsList.tsx
|
|
1260
|
-
import { EntityCard as EntityCard2 } from "@contractspec/lib.design-system";
|
|
1261
|
-
import { Zap as Zap3 } from "lucide-react";
|
|
1262
|
-
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
1263
|
-
"use client";
|
|
1264
|
-
function FeatureOperationsList({
|
|
1265
|
-
feature
|
|
1266
|
-
}) {
|
|
1267
|
-
if (!feature.operations?.length)
|
|
1268
|
-
return null;
|
|
1269
|
-
return /* @__PURE__ */ jsx8("div", {
|
|
1270
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1271
|
-
children: feature.operations.map((op) => {
|
|
1272
|
-
const spec = resolveSerializedOperationSpec(op.key, op.version);
|
|
1273
|
-
return /* @__PURE__ */ jsx8(EntityCard2, {
|
|
1274
|
-
cardTitle: op.key,
|
|
1275
|
-
cardSubtitle: `v${op.version}`,
|
|
1276
|
-
footer: spec?.meta.description,
|
|
1277
|
-
icon: /* @__PURE__ */ jsx8(Zap3, {
|
|
1278
|
-
className: "h-4 w-4"
|
|
1279
|
-
}),
|
|
1280
|
-
href: `/features/${feature.meta.key}/operations/${op.key}`
|
|
1281
|
-
}, op.key);
|
|
1282
|
-
})
|
|
1283
|
-
});
|
|
1284
|
-
}
|
|
1285
|
-
|
|
1286
|
-
// src/presentation/features/organisms/FeatureEventsList.tsx
|
|
1287
|
-
import { EntityCard as EntityCard3 } from "@contractspec/lib.design-system";
|
|
1288
|
-
import { Radio as Radio3 } from "lucide-react";
|
|
1289
|
-
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
1290
|
-
"use client";
|
|
1291
|
-
function FeatureEventsList({ feature }) {
|
|
1292
|
-
if (!feature.events?.length)
|
|
1293
|
-
return null;
|
|
1294
|
-
return /* @__PURE__ */ jsx9("div", {
|
|
1295
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1296
|
-
children: feature.events.map((ev) => {
|
|
1297
|
-
const spec = resolveSerializedEventSpec(ev.key, ev.version);
|
|
1298
|
-
return /* @__PURE__ */ jsx9(EntityCard3, {
|
|
1299
|
-
cardTitle: ev.key,
|
|
1300
|
-
cardSubtitle: `v${ev.version}`,
|
|
1301
|
-
footer: spec?.meta.description,
|
|
1302
|
-
icon: /* @__PURE__ */ jsx9(Radio3, {
|
|
1303
|
-
className: "h-4 w-4"
|
|
1304
|
-
}),
|
|
1305
|
-
href: `/features/${feature.meta.key}/events/${ev.key}`
|
|
1306
|
-
}, ev.key);
|
|
1307
|
-
})
|
|
1308
|
-
});
|
|
1309
|
-
}
|
|
1310
|
-
|
|
1311
|
-
// src/presentation/features/organisms/FeaturePresentationsList.tsx
|
|
1312
|
-
import { EntityCard as EntityCard4 } from "@contractspec/lib.design-system";
|
|
1313
|
-
import { Layout as Layout4 } from "lucide-react";
|
|
1314
|
-
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1315
|
-
"use client";
|
|
1316
|
-
function FeaturePresentationsList({
|
|
1317
|
-
feature
|
|
1318
|
-
}) {
|
|
1319
|
-
if (!feature.presentations?.length)
|
|
1320
|
-
return null;
|
|
1321
|
-
return /* @__PURE__ */ jsx10("div", {
|
|
1322
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1323
|
-
children: feature.presentations.map((pres) => {
|
|
1324
|
-
const spec = resolveSerializedPresentationSpec(pres.key, pres.version);
|
|
1325
|
-
return /* @__PURE__ */ jsx10(EntityCard4, {
|
|
1326
|
-
cardTitle: pres.key,
|
|
1327
|
-
cardSubtitle: `v${pres.version}`,
|
|
1328
|
-
footer: spec?.meta.description,
|
|
1329
|
-
icon: /* @__PURE__ */ jsx10(Layout4, {
|
|
1330
|
-
className: "h-4 w-4"
|
|
1331
|
-
}),
|
|
1332
|
-
href: `/features/${feature.meta.key}/presentations/${pres.key}`
|
|
1333
|
-
}, pres.key);
|
|
1334
|
-
})
|
|
1335
|
-
});
|
|
1336
|
-
}
|
|
1337
|
-
|
|
1338
|
-
// src/presentation/features/organisms/FeatureDataViewsList.tsx
|
|
1339
|
-
import { EntityCard as EntityCard5 } from "@contractspec/lib.design-system";
|
|
1340
|
-
import { Table } from "lucide-react";
|
|
1341
|
-
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
1342
|
-
"use client";
|
|
1343
|
-
function FeatureDataViewsList({
|
|
1344
|
-
feature
|
|
1345
|
-
}) {
|
|
1346
|
-
if (!feature.dataViews?.length)
|
|
1347
|
-
return null;
|
|
1348
|
-
return /* @__PURE__ */ jsx11("div", {
|
|
1349
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1350
|
-
children: feature.dataViews.map((view) => {
|
|
1351
|
-
const spec = resolveSerializedDataViewSpec(view.key, view.version);
|
|
1352
|
-
return /* @__PURE__ */ jsx11(EntityCard5, {
|
|
1353
|
-
cardTitle: view.key,
|
|
1354
|
-
cardSubtitle: `v${view.version}`,
|
|
1355
|
-
footer: spec?.meta.description,
|
|
1356
|
-
icon: /* @__PURE__ */ jsx11(Table, {
|
|
1357
|
-
className: "h-4 w-4"
|
|
1358
|
-
}),
|
|
1359
|
-
href: `/features/${feature.meta.key}/dataviews/${view.key}`
|
|
1360
|
-
}, view.key);
|
|
1361
|
-
})
|
|
1362
|
-
});
|
|
1363
|
-
}
|
|
1364
|
-
|
|
1365
|
-
// src/presentation/features/organisms/FeatureFormsList.tsx
|
|
1366
|
-
import { EntityCard as EntityCard6 } from "@contractspec/lib.design-system";
|
|
1367
|
-
import { FormInput } from "lucide-react";
|
|
1368
|
-
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1369
|
-
"use client";
|
|
1370
|
-
function FeatureFormsList({ feature }) {
|
|
1371
|
-
if (!feature.forms?.length)
|
|
1372
|
-
return null;
|
|
1373
|
-
return /* @__PURE__ */ jsx12("div", {
|
|
1374
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1375
|
-
children: feature.forms.map((form) => {
|
|
1376
|
-
const spec = resolveSerializedFormSpec(form.key, form.version);
|
|
1377
|
-
return /* @__PURE__ */ jsx12(EntityCard6, {
|
|
1378
|
-
cardTitle: form.key,
|
|
1379
|
-
cardSubtitle: form.version ? `v${form.version}` : undefined,
|
|
1380
|
-
footer: spec?.meta.description,
|
|
1381
|
-
icon: /* @__PURE__ */ jsx12(FormInput, {
|
|
1382
|
-
className: "h-4 w-4"
|
|
1383
|
-
}),
|
|
1384
|
-
href: `/features/${feature.meta.key}/forms/${form.key}`
|
|
1385
|
-
}, form.key);
|
|
1386
|
-
})
|
|
1387
|
-
});
|
|
1388
|
-
}
|
|
1389
|
-
|
|
1390
|
-
// src/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.tsx
|
|
1391
|
-
import {
|
|
1392
|
-
PageHeaderResponsive as PageHeaderResponsive2,
|
|
1393
|
-
Breadcrumbs
|
|
1394
|
-
} from "@contractspec/lib.design-system";
|
|
1395
|
-
import { VStack as VStack4 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
1396
|
-
import { cn as cn6 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1397
|
-
import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1398
|
-
"use client";
|
|
1399
|
-
function FeatureOverviewTemplate({
|
|
1400
|
-
feature,
|
|
1401
|
-
className
|
|
1402
|
-
}) {
|
|
1403
|
-
return /* @__PURE__ */ jsxs7(VStack4, {
|
|
1404
|
-
gap: "lg",
|
|
1405
|
-
className: cn6("mx-auto w-full max-w-5xl p-6", className),
|
|
1406
|
-
children: [
|
|
1407
|
-
/* @__PURE__ */ jsx13(PageHeaderResponsive2, {
|
|
1408
|
-
title: feature.meta.title || feature.meta.key,
|
|
1409
|
-
subtitle: feature.meta.description || "Feature overview",
|
|
1410
|
-
breadcrumb: /* @__PURE__ */ jsx13(Breadcrumbs, {
|
|
1411
|
-
items: [
|
|
1412
|
-
{ label: "Features", href: "/features" },
|
|
1413
|
-
{ label: feature.meta.title || feature.meta.key }
|
|
1414
|
-
]
|
|
1415
|
-
})
|
|
1416
|
-
}),
|
|
1417
|
-
/* @__PURE__ */ jsx13(FeatureDetail, {
|
|
1418
|
-
feature
|
|
1645
|
+
relatedDocs?.length ? /* @__PURE__ */ jsx13("div", {
|
|
1646
|
+
className: "lg:col-span-3",
|
|
1647
|
+
children: /* @__PURE__ */ jsx13(Card, {
|
|
1648
|
+
className: "p-6",
|
|
1649
|
+
children: /* @__PURE__ */ jsxs7(VStack4, {
|
|
1650
|
+
gap: "md",
|
|
1651
|
+
children: [
|
|
1652
|
+
/* @__PURE__ */ jsxs7(HStack7, {
|
|
1653
|
+
className: "items-center gap-2 border-b pb-2",
|
|
1654
|
+
children: [
|
|
1655
|
+
/* @__PURE__ */ jsx13(BookOpen, {
|
|
1656
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
1657
|
+
}),
|
|
1658
|
+
/* @__PURE__ */ jsx13("h3", {
|
|
1659
|
+
className: "font-semibold text-lg",
|
|
1660
|
+
children: "Related Documentation"
|
|
1661
|
+
})
|
|
1662
|
+
]
|
|
1663
|
+
}),
|
|
1664
|
+
/* @__PURE__ */ jsx13("div", {
|
|
1665
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1666
|
+
children: relatedDocs.map((doc) => /* @__PURE__ */ jsx13(Link2, {
|
|
1667
|
+
href: doc.route || `/docs/${doc.id}`,
|
|
1668
|
+
className: "group block",
|
|
1669
|
+
children: /* @__PURE__ */ jsxs7("div", {
|
|
1670
|
+
className: "h-full rounded-lg border p-4 transition-colors hover:border-primary",
|
|
1671
|
+
children: [
|
|
1672
|
+
/* @__PURE__ */ jsx13("h4", {
|
|
1673
|
+
className: "mb-1 font-semibold group-hover:text-primary",
|
|
1674
|
+
children: doc.title
|
|
1675
|
+
}),
|
|
1676
|
+
doc.summary && /* @__PURE__ */ jsx13("p", {
|
|
1677
|
+
className: "line-clamp-2 text-muted-foreground text-sm",
|
|
1678
|
+
children: doc.summary
|
|
1679
|
+
})
|
|
1680
|
+
]
|
|
1681
|
+
})
|
|
1682
|
+
}, doc.id))
|
|
1683
|
+
})
|
|
1684
|
+
]
|
|
1685
|
+
})
|
|
1686
|
+
})
|
|
1687
|
+
}) : null
|
|
1688
|
+
]
|
|
1419
1689
|
})
|
|
1420
1690
|
]
|
|
1421
1691
|
});
|
|
1422
1692
|
}
|
|
1423
|
-
// src/presentation/features/templates/
|
|
1693
|
+
// src/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.tsx
|
|
1424
1694
|
import {
|
|
1425
1695
|
Breadcrumbs as Breadcrumbs2,
|
|
1426
1696
|
PageHeaderResponsive as PageHeaderResponsive3
|
|
@@ -1429,7 +1699,7 @@ import { VStack as VStack5 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
|
1429
1699
|
import { cn as cn7 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1430
1700
|
import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1431
1701
|
"use client";
|
|
1432
|
-
function
|
|
1702
|
+
function FeatureDataViewsTemplate({
|
|
1433
1703
|
feature,
|
|
1434
1704
|
className
|
|
1435
1705
|
}) {
|
|
@@ -1438,8 +1708,8 @@ function FeatureOperationsTemplate({
|
|
|
1438
1708
|
className: cn7("mx-auto w-full max-w-5xl p-6", className),
|
|
1439
1709
|
children: [
|
|
1440
1710
|
/* @__PURE__ */ jsx14(PageHeaderResponsive3, {
|
|
1441
|
-
title: "
|
|
1442
|
-
subtitle: `
|
|
1711
|
+
title: "Data Views",
|
|
1712
|
+
subtitle: `Data views defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
1443
1713
|
breadcrumb: /* @__PURE__ */ jsx14(Breadcrumbs2, {
|
|
1444
1714
|
items: [
|
|
1445
1715
|
{ label: "Features", href: "/features" },
|
|
@@ -1447,328 +1717,166 @@ function FeatureOperationsTemplate({
|
|
|
1447
1717
|
label: feature.meta.title || feature.meta.key,
|
|
1448
1718
|
href: `/features/${feature.meta.key}`
|
|
1449
1719
|
},
|
|
1450
|
-
{ label: "
|
|
1720
|
+
{ label: "Data Views" }
|
|
1451
1721
|
]
|
|
1452
1722
|
})
|
|
1453
1723
|
}),
|
|
1454
|
-
/* @__PURE__ */ jsx14(
|
|
1724
|
+
/* @__PURE__ */ jsx14(FeatureDataViewsList, {
|
|
1455
1725
|
feature
|
|
1456
1726
|
})
|
|
1457
1727
|
]
|
|
1458
1728
|
});
|
|
1459
1729
|
}
|
|
1460
|
-
// src/presentation/features/templates/
|
|
1730
|
+
// src/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.tsx
|
|
1461
1731
|
import {
|
|
1462
1732
|
Breadcrumbs as Breadcrumbs3,
|
|
1463
|
-
|
|
1733
|
+
CodeBlock as CodeBlock2,
|
|
1734
|
+
EmptyState as EmptyState3,
|
|
1735
|
+
PageHeaderResponsive as PageHeaderResponsive4,
|
|
1736
|
+
StatusChip as StatusChip7
|
|
1464
1737
|
} from "@contractspec/lib.design-system";
|
|
1465
|
-
import {
|
|
1738
|
+
import { Card as Card2 } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
1739
|
+
import { Box as Box3, HStack as HStack8, VStack as VStack6 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
1466
1740
|
import { cn as cn8 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1741
|
+
import { BookOpen as BookOpen2, Code as Code2, Database as Database3, Radio as Radio4 } from "lucide-react";
|
|
1742
|
+
import Link3 from "next/link";
|
|
1467
1743
|
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1468
1744
|
"use client";
|
|
1469
|
-
function
|
|
1470
|
-
feature,
|
|
1471
|
-
className
|
|
1472
|
-
}) {
|
|
1473
|
-
return /* @__PURE__ */ jsxs9(VStack6, {
|
|
1474
|
-
gap: "lg",
|
|
1475
|
-
className: cn8("mx-auto w-full max-w-5xl p-6", className),
|
|
1476
|
-
children: [
|
|
1477
|
-
/* @__PURE__ */ jsx15(PageHeaderResponsive4, {
|
|
1478
|
-
title: "Events",
|
|
1479
|
-
subtitle: `Events defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
1480
|
-
breadcrumb: /* @__PURE__ */ jsx15(Breadcrumbs3, {
|
|
1481
|
-
items: [
|
|
1482
|
-
{ label: "Features", href: "/features" },
|
|
1483
|
-
{
|
|
1484
|
-
label: feature.meta.title || feature.meta.key,
|
|
1485
|
-
href: `/features/${feature.meta.key}`
|
|
1486
|
-
},
|
|
1487
|
-
{ label: "Events" }
|
|
1488
|
-
]
|
|
1489
|
-
})
|
|
1490
|
-
}),
|
|
1491
|
-
/* @__PURE__ */ jsx15(FeatureEventsList, {
|
|
1492
|
-
feature
|
|
1493
|
-
})
|
|
1494
|
-
]
|
|
1495
|
-
});
|
|
1496
|
-
}
|
|
1497
|
-
// src/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.tsx
|
|
1498
|
-
import {
|
|
1499
|
-
Breadcrumbs as Breadcrumbs4,
|
|
1500
|
-
PageHeaderResponsive as PageHeaderResponsive5
|
|
1501
|
-
} from "@contractspec/lib.design-system";
|
|
1502
|
-
import { VStack as VStack7 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
1503
|
-
import { cn as cn9 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1504
|
-
import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1505
|
-
"use client";
|
|
1506
|
-
function FeaturePresentationsTemplate({
|
|
1507
|
-
feature,
|
|
1508
|
-
className
|
|
1509
|
-
}) {
|
|
1510
|
-
return /* @__PURE__ */ jsxs10(VStack7, {
|
|
1511
|
-
gap: "lg",
|
|
1512
|
-
className: cn9("mx-auto w-full max-w-5xl p-6", className),
|
|
1513
|
-
children: [
|
|
1514
|
-
/* @__PURE__ */ jsx16(PageHeaderResponsive5, {
|
|
1515
|
-
title: "Presentations",
|
|
1516
|
-
subtitle: `Presentations defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
1517
|
-
breadcrumb: /* @__PURE__ */ jsx16(Breadcrumbs4, {
|
|
1518
|
-
items: [
|
|
1519
|
-
{ label: "Features", href: "/features" },
|
|
1520
|
-
{
|
|
1521
|
-
label: feature.meta.title || feature.meta.key,
|
|
1522
|
-
href: `/features/${feature.meta.key}`
|
|
1523
|
-
},
|
|
1524
|
-
{ label: "Presentations" }
|
|
1525
|
-
]
|
|
1526
|
-
})
|
|
1527
|
-
}),
|
|
1528
|
-
/* @__PURE__ */ jsx16(FeaturePresentationsList, {
|
|
1529
|
-
feature
|
|
1530
|
-
})
|
|
1531
|
-
]
|
|
1532
|
-
});
|
|
1533
|
-
}
|
|
1534
|
-
// src/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.tsx
|
|
1535
|
-
import {
|
|
1536
|
-
PageHeaderResponsive as PageHeaderResponsive6,
|
|
1537
|
-
Breadcrumbs as Breadcrumbs5
|
|
1538
|
-
} from "@contractspec/lib.design-system";
|
|
1539
|
-
import { VStack as VStack8 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
1540
|
-
import { cn as cn10 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1541
|
-
import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1542
|
-
"use client";
|
|
1543
|
-
function FeatureDataViewsTemplate({
|
|
1544
|
-
feature,
|
|
1545
|
-
className
|
|
1546
|
-
}) {
|
|
1547
|
-
return /* @__PURE__ */ jsxs11(VStack8, {
|
|
1548
|
-
gap: "lg",
|
|
1549
|
-
className: cn10("mx-auto w-full max-w-5xl p-6", className),
|
|
1550
|
-
children: [
|
|
1551
|
-
/* @__PURE__ */ jsx17(PageHeaderResponsive6, {
|
|
1552
|
-
title: "Data Views",
|
|
1553
|
-
subtitle: `Data views defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
1554
|
-
breadcrumb: /* @__PURE__ */ jsx17(Breadcrumbs5, {
|
|
1555
|
-
items: [
|
|
1556
|
-
{ label: "Features", href: "/features" },
|
|
1557
|
-
{
|
|
1558
|
-
label: feature.meta.title || feature.meta.key,
|
|
1559
|
-
href: `/features/${feature.meta.key}`
|
|
1560
|
-
},
|
|
1561
|
-
{ label: "Data Views" }
|
|
1562
|
-
]
|
|
1563
|
-
})
|
|
1564
|
-
}),
|
|
1565
|
-
/* @__PURE__ */ jsx17(FeatureDataViewsList, {
|
|
1566
|
-
feature
|
|
1567
|
-
})
|
|
1568
|
-
]
|
|
1569
|
-
});
|
|
1570
|
-
}
|
|
1571
|
-
// src/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.tsx
|
|
1572
|
-
import {
|
|
1573
|
-
PageHeaderResponsive as PageHeaderResponsive7,
|
|
1574
|
-
Breadcrumbs as Breadcrumbs6
|
|
1575
|
-
} from "@contractspec/lib.design-system";
|
|
1576
|
-
import { VStack as VStack9 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
1577
|
-
import { cn as cn11 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1578
|
-
import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1579
|
-
"use client";
|
|
1580
|
-
function FeatureFormsTemplate({
|
|
1581
|
-
feature,
|
|
1582
|
-
className
|
|
1583
|
-
}) {
|
|
1584
|
-
return /* @__PURE__ */ jsxs12(VStack9, {
|
|
1585
|
-
gap: "lg",
|
|
1586
|
-
className: cn11("mx-auto w-full max-w-5xl p-6", className),
|
|
1587
|
-
children: [
|
|
1588
|
-
/* @__PURE__ */ jsx18(PageHeaderResponsive7, {
|
|
1589
|
-
title: "Forms",
|
|
1590
|
-
subtitle: `Forms defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
1591
|
-
breadcrumb: /* @__PURE__ */ jsx18(Breadcrumbs6, {
|
|
1592
|
-
items: [
|
|
1593
|
-
{ label: "Features", href: "/features" },
|
|
1594
|
-
{
|
|
1595
|
-
label: feature.meta.title || feature.meta.key,
|
|
1596
|
-
href: `/features/${feature.meta.key}`
|
|
1597
|
-
},
|
|
1598
|
-
{ label: "Forms" }
|
|
1599
|
-
]
|
|
1600
|
-
})
|
|
1601
|
-
}),
|
|
1602
|
-
/* @__PURE__ */ jsx18(FeatureFormsList, {
|
|
1603
|
-
feature
|
|
1604
|
-
})
|
|
1605
|
-
]
|
|
1606
|
-
});
|
|
1607
|
-
}
|
|
1608
|
-
// src/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.tsx
|
|
1609
|
-
import {
|
|
1610
|
-
Breadcrumbs as Breadcrumbs7,
|
|
1611
|
-
CodeBlock,
|
|
1612
|
-
EmptyState as EmptyState2,
|
|
1613
|
-
PageHeaderResponsive as PageHeaderResponsive8,
|
|
1614
|
-
StatusChip as StatusChip6
|
|
1615
|
-
} from "@contractspec/lib.design-system";
|
|
1616
|
-
import { Card } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
1617
|
-
import { Box as Box2, HStack as HStack7, VStack as VStack10 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
1618
|
-
import { cn as cn12 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
1619
|
-
import { Code, Database as Database2, Zap as Zap4 } from "lucide-react";
|
|
1620
|
-
import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1621
|
-
"use client";
|
|
1622
|
-
function FeatureOperationDetailTemplate({
|
|
1745
|
+
function FeatureEventDetailTemplate({
|
|
1623
1746
|
feature,
|
|
1624
|
-
|
|
1625
|
-
|
|
1747
|
+
eventKey,
|
|
1748
|
+
event,
|
|
1626
1749
|
spec,
|
|
1627
1750
|
className
|
|
1628
1751
|
}) {
|
|
1629
|
-
const
|
|
1630
|
-
const
|
|
1631
|
-
if (!
|
|
1632
|
-
return /* @__PURE__ */
|
|
1752
|
+
const eventRef = event ?? feature.events?.find((ev) => ev.key === eventKey);
|
|
1753
|
+
const relatedDocs = useRelatedDocs(eventRef?.key || "", spec?.meta?.tags);
|
|
1754
|
+
if (!eventRef) {
|
|
1755
|
+
return /* @__PURE__ */ jsxs9(VStack6, {
|
|
1633
1756
|
gap: "lg",
|
|
1634
|
-
className:
|
|
1757
|
+
className: cn8("mx-auto w-full max-w-5xl p-6", className),
|
|
1635
1758
|
children: [
|
|
1636
|
-
/* @__PURE__ */
|
|
1637
|
-
title: "
|
|
1638
|
-
subtitle: `
|
|
1639
|
-
breadcrumb: /* @__PURE__ */
|
|
1759
|
+
/* @__PURE__ */ jsx15(PageHeaderResponsive4, {
|
|
1760
|
+
title: "Event Not Found",
|
|
1761
|
+
subtitle: `Event ${eventKey} not found in feature ${feature.meta.key}`,
|
|
1762
|
+
breadcrumb: /* @__PURE__ */ jsx15(Breadcrumbs3, {
|
|
1640
1763
|
items: [
|
|
1641
1764
|
{ label: "Features", href: "/features" },
|
|
1642
1765
|
{
|
|
1643
1766
|
label: feature.meta.title || feature.meta.key,
|
|
1644
1767
|
href: `/features/${feature.meta.key}`
|
|
1645
1768
|
},
|
|
1646
|
-
{
|
|
1769
|
+
{
|
|
1770
|
+
label: "Events",
|
|
1771
|
+
href: `/features/${feature.meta.key}/events`
|
|
1772
|
+
}
|
|
1647
1773
|
]
|
|
1648
1774
|
})
|
|
1649
1775
|
}),
|
|
1650
|
-
/* @__PURE__ */
|
|
1651
|
-
title: "
|
|
1652
|
-
description: `The
|
|
1653
|
-
icon: /* @__PURE__ */
|
|
1654
|
-
className: "
|
|
1776
|
+
/* @__PURE__ */ jsx15(EmptyState3, {
|
|
1777
|
+
title: "Event not found",
|
|
1778
|
+
description: `The event '${eventKey}' could not be found in this feature.`,
|
|
1779
|
+
icon: /* @__PURE__ */ jsx15(Radio4, {
|
|
1780
|
+
className: "h-12 w-12 text-muted-foreground"
|
|
1655
1781
|
})
|
|
1656
1782
|
})
|
|
1657
1783
|
]
|
|
1658
1784
|
});
|
|
1659
1785
|
}
|
|
1660
|
-
return /* @__PURE__ */
|
|
1786
|
+
return /* @__PURE__ */ jsxs9(VStack6, {
|
|
1661
1787
|
gap: "lg",
|
|
1662
|
-
className:
|
|
1788
|
+
className: cn8("mx-auto w-full max-w-5xl p-6", className),
|
|
1663
1789
|
children: [
|
|
1664
|
-
/* @__PURE__ */
|
|
1665
|
-
title:
|
|
1666
|
-
subtitle: `
|
|
1667
|
-
breadcrumb: /* @__PURE__ */
|
|
1790
|
+
/* @__PURE__ */ jsx15(PageHeaderResponsive4, {
|
|
1791
|
+
title: eventRef.key,
|
|
1792
|
+
subtitle: `Event defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
1793
|
+
breadcrumb: /* @__PURE__ */ jsx15(Breadcrumbs3, {
|
|
1668
1794
|
items: [
|
|
1669
1795
|
{ label: "Features", href: "/features" },
|
|
1670
1796
|
{
|
|
1671
1797
|
label: feature.meta.title || feature.meta.key,
|
|
1672
1798
|
href: `/features/${feature.meta.key}`
|
|
1673
1799
|
},
|
|
1674
|
-
{
|
|
1675
|
-
|
|
1676
|
-
href: `/features/${feature.meta.key}/operations`
|
|
1677
|
-
},
|
|
1678
|
-
{ label: opRef.key }
|
|
1800
|
+
{ label: "Events", href: `/features/${feature.meta.key}#events` },
|
|
1801
|
+
{ label: eventRef.key }
|
|
1679
1802
|
]
|
|
1680
1803
|
})
|
|
1681
1804
|
}),
|
|
1682
|
-
/* @__PURE__ */
|
|
1805
|
+
/* @__PURE__ */ jsxs9(HStack8, {
|
|
1683
1806
|
gap: "sm",
|
|
1684
1807
|
children: [
|
|
1685
|
-
/* @__PURE__ */
|
|
1808
|
+
/* @__PURE__ */ jsx15(StatusChip7, {
|
|
1686
1809
|
tone: "neutral",
|
|
1687
|
-
label:
|
|
1810
|
+
label: eventRef.key,
|
|
1688
1811
|
size: "sm",
|
|
1689
|
-
icon: /* @__PURE__ */
|
|
1812
|
+
icon: /* @__PURE__ */ jsx15(Radio4, {
|
|
1690
1813
|
className: "h-3 w-3"
|
|
1691
1814
|
})
|
|
1692
1815
|
}),
|
|
1693
|
-
/* @__PURE__ */
|
|
1816
|
+
/* @__PURE__ */ jsx15(StatusChip7, {
|
|
1694
1817
|
tone: "neutral",
|
|
1695
|
-
label: `v${
|
|
1818
|
+
label: `v${eventRef.version}`,
|
|
1696
1819
|
size: "sm"
|
|
1697
1820
|
}),
|
|
1698
|
-
spec?.meta?.stability ? /* @__PURE__ */
|
|
1821
|
+
spec?.meta?.stability ? /* @__PURE__ */ jsx15(StatusChip7, {
|
|
1699
1822
|
tone: spec.meta.stability === "stable" ? "success" : "warning",
|
|
1700
1823
|
label: spec.meta.stability,
|
|
1701
1824
|
size: "sm"
|
|
1702
1825
|
}) : null
|
|
1703
1826
|
]
|
|
1704
1827
|
}),
|
|
1705
|
-
/* @__PURE__ */
|
|
1828
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1706
1829
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
1707
1830
|
children: [
|
|
1708
|
-
/* @__PURE__ */
|
|
1831
|
+
/* @__PURE__ */ jsx15("div", {
|
|
1709
1832
|
className: "space-y-6 lg:col-span-2",
|
|
1710
|
-
children: /* @__PURE__ */
|
|
1833
|
+
children: /* @__PURE__ */ jsx15(Card2, {
|
|
1711
1834
|
className: "p-6",
|
|
1712
|
-
children: /* @__PURE__ */
|
|
1835
|
+
children: /* @__PURE__ */ jsxs9(VStack6, {
|
|
1713
1836
|
gap: "md",
|
|
1714
1837
|
children: [
|
|
1715
|
-
/* @__PURE__ */
|
|
1838
|
+
/* @__PURE__ */ jsxs9(HStack8, {
|
|
1716
1839
|
className: "items-center gap-2 border-b pb-2",
|
|
1717
1840
|
children: [
|
|
1718
|
-
/* @__PURE__ */
|
|
1719
|
-
className: "
|
|
1841
|
+
/* @__PURE__ */ jsx15(Code2, {
|
|
1842
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
1720
1843
|
}),
|
|
1721
|
-
/* @__PURE__ */
|
|
1722
|
-
className: "text-lg
|
|
1723
|
-
children: "
|
|
1844
|
+
/* @__PURE__ */ jsx15("h3", {
|
|
1845
|
+
className: "font-semibold text-lg",
|
|
1846
|
+
children: "Payload Definition"
|
|
1724
1847
|
})
|
|
1725
1848
|
]
|
|
1726
1849
|
}),
|
|
1727
|
-
spec ? /* @__PURE__ */
|
|
1850
|
+
spec ? /* @__PURE__ */ jsxs9(VStack6, {
|
|
1728
1851
|
gap: "lg",
|
|
1729
1852
|
children: [
|
|
1730
|
-
spec.meta.description && /* @__PURE__ */
|
|
1853
|
+
spec.meta.description && /* @__PURE__ */ jsx15("p", {
|
|
1731
1854
|
className: "text-muted-foreground",
|
|
1732
1855
|
children: spec.meta.description
|
|
1733
1856
|
}),
|
|
1734
|
-
/* @__PURE__ */
|
|
1735
|
-
className: "flex-col gap-2",
|
|
1736
|
-
children: [
|
|
1737
|
-
/* @__PURE__ */ jsx19("span", {
|
|
1738
|
-
className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
|
|
1739
|
-
children: "Input Schema"
|
|
1740
|
-
}),
|
|
1741
|
-
/* @__PURE__ */ jsx19(CodeBlock, {
|
|
1742
|
-
className: "w-full",
|
|
1743
|
-
code: JSON.stringify(spec.io.input, null, 2),
|
|
1744
|
-
language: "json"
|
|
1745
|
-
})
|
|
1746
|
-
]
|
|
1747
|
-
}),
|
|
1748
|
-
/* @__PURE__ */ jsxs13(Box2, {
|
|
1857
|
+
/* @__PURE__ */ jsxs9(Box3, {
|
|
1749
1858
|
className: "flex-col gap-2",
|
|
1750
1859
|
children: [
|
|
1751
|
-
/* @__PURE__ */
|
|
1752
|
-
className: "text-muted-foreground text-sm
|
|
1753
|
-
children: "
|
|
1860
|
+
/* @__PURE__ */ jsx15("span", {
|
|
1861
|
+
className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
|
|
1862
|
+
children: "Payload Schema"
|
|
1754
1863
|
}),
|
|
1755
|
-
/* @__PURE__ */
|
|
1756
|
-
|
|
1757
|
-
code: JSON.stringify(spec.io.output, null, 2),
|
|
1864
|
+
/* @__PURE__ */ jsx15(CodeBlock2, {
|
|
1865
|
+
code: JSON.stringify(spec.payload, null, 2),
|
|
1758
1866
|
language: "json"
|
|
1759
1867
|
})
|
|
1760
1868
|
]
|
|
1761
1869
|
})
|
|
1762
1870
|
]
|
|
1763
|
-
}) : /* @__PURE__ */
|
|
1871
|
+
}) : /* @__PURE__ */ jsxs9(VStack6, {
|
|
1764
1872
|
gap: "md",
|
|
1765
1873
|
children: [
|
|
1766
|
-
/* @__PURE__ */
|
|
1874
|
+
/* @__PURE__ */ jsx15("p", {
|
|
1767
1875
|
className: "text-muted-foreground",
|
|
1768
|
-
children: "Full
|
|
1876
|
+
children: "Full payload details are not available for this event reference."
|
|
1769
1877
|
}),
|
|
1770
|
-
/* @__PURE__ */
|
|
1771
|
-
code: JSON.stringify(
|
|
1878
|
+
/* @__PURE__ */ jsx15(CodeBlock2, {
|
|
1879
|
+
code: JSON.stringify(eventRef, null, 2),
|
|
1772
1880
|
language: "json"
|
|
1773
1881
|
})
|
|
1774
1882
|
]
|
|
@@ -1777,257 +1885,319 @@ function FeatureOperationDetailTemplate({
|
|
|
1777
1885
|
})
|
|
1778
1886
|
})
|
|
1779
1887
|
}),
|
|
1780
|
-
/* @__PURE__ */
|
|
1888
|
+
/* @__PURE__ */ jsx15("div", {
|
|
1781
1889
|
className: "space-y-6",
|
|
1782
|
-
children: /* @__PURE__ */
|
|
1890
|
+
children: /* @__PURE__ */ jsx15(Card2, {
|
|
1783
1891
|
className: "p-6",
|
|
1784
|
-
children: /* @__PURE__ */
|
|
1892
|
+
children: /* @__PURE__ */ jsxs9(VStack6, {
|
|
1785
1893
|
gap: "md",
|
|
1786
1894
|
children: [
|
|
1787
|
-
/* @__PURE__ */
|
|
1895
|
+
/* @__PURE__ */ jsxs9(HStack8, {
|
|
1788
1896
|
className: "items-center gap-2 border-b pb-2",
|
|
1789
1897
|
children: [
|
|
1790
|
-
/* @__PURE__ */
|
|
1791
|
-
className: "
|
|
1898
|
+
/* @__PURE__ */ jsx15(Database3, {
|
|
1899
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
1792
1900
|
}),
|
|
1793
|
-
/* @__PURE__ */
|
|
1794
|
-
className: "text-lg
|
|
1901
|
+
/* @__PURE__ */ jsx15("h3", {
|
|
1902
|
+
className: "font-semibold text-lg",
|
|
1795
1903
|
children: "Metadata"
|
|
1796
1904
|
})
|
|
1797
1905
|
]
|
|
1798
1906
|
}),
|
|
1799
|
-
/* @__PURE__ */
|
|
1907
|
+
/* @__PURE__ */ jsxs9("dl", {
|
|
1800
1908
|
className: "grid grid-cols-1 gap-4 text-sm",
|
|
1801
1909
|
children: [
|
|
1802
|
-
/* @__PURE__ */
|
|
1910
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1803
1911
|
children: [
|
|
1804
|
-
/* @__PURE__ */
|
|
1912
|
+
/* @__PURE__ */ jsx15("dt", {
|
|
1805
1913
|
className: "text-muted-foreground",
|
|
1806
1914
|
children: "Key"
|
|
1807
1915
|
}),
|
|
1808
|
-
/* @__PURE__ */
|
|
1916
|
+
/* @__PURE__ */ jsx15("dd", {
|
|
1809
1917
|
className: "truncate font-medium",
|
|
1810
|
-
children:
|
|
1918
|
+
children: eventRef.key
|
|
1811
1919
|
})
|
|
1812
1920
|
]
|
|
1813
1921
|
}),
|
|
1814
|
-
/* @__PURE__ */
|
|
1922
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1815
1923
|
children: [
|
|
1816
|
-
/* @__PURE__ */
|
|
1924
|
+
/* @__PURE__ */ jsx15("dt", {
|
|
1817
1925
|
className: "text-muted-foreground",
|
|
1818
1926
|
children: "Version"
|
|
1819
1927
|
}),
|
|
1820
|
-
/* @__PURE__ */
|
|
1821
|
-
className: "font-medium",
|
|
1822
|
-
children: opRef.version
|
|
1823
|
-
})
|
|
1824
|
-
]
|
|
1825
|
-
}),
|
|
1826
|
-
spec?.meta?.context && /* @__PURE__ */ jsxs13("div", {
|
|
1827
|
-
children: [
|
|
1828
|
-
/* @__PURE__ */ jsx19("dt", {
|
|
1829
|
-
className: "text-muted-foreground",
|
|
1830
|
-
children: "Context"
|
|
1831
|
-
}),
|
|
1832
|
-
/* @__PURE__ */ jsx19("dd", {
|
|
1928
|
+
/* @__PURE__ */ jsx15("dd", {
|
|
1833
1929
|
className: "font-medium",
|
|
1834
|
-
children:
|
|
1930
|
+
children: eventRef.version
|
|
1835
1931
|
})
|
|
1836
1932
|
]
|
|
1837
1933
|
}),
|
|
1838
|
-
spec?.meta?.owners && /* @__PURE__ */
|
|
1934
|
+
spec?.meta?.owners && /* @__PURE__ */ jsxs9("div", {
|
|
1839
1935
|
children: [
|
|
1840
|
-
/* @__PURE__ */
|
|
1936
|
+
/* @__PURE__ */ jsx15("dt", {
|
|
1841
1937
|
className: "text-muted-foreground",
|
|
1842
1938
|
children: "Owners"
|
|
1843
1939
|
}),
|
|
1844
|
-
/* @__PURE__ */
|
|
1940
|
+
/* @__PURE__ */ jsx15("dd", {
|
|
1845
1941
|
className: "flex flex-wrap gap-1 font-medium",
|
|
1846
|
-
children: spec.meta.owners.map((o) => /* @__PURE__ */
|
|
1942
|
+
children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx15(StatusChip7, {
|
|
1847
1943
|
label: o,
|
|
1848
1944
|
size: "sm",
|
|
1849
1945
|
tone: "neutral"
|
|
1850
1946
|
}, o))
|
|
1851
1947
|
})
|
|
1852
1948
|
]
|
|
1949
|
+
})
|
|
1950
|
+
]
|
|
1951
|
+
})
|
|
1952
|
+
]
|
|
1953
|
+
})
|
|
1954
|
+
})
|
|
1955
|
+
}),
|
|
1956
|
+
relatedDocs?.length ? /* @__PURE__ */ jsx15("div", {
|
|
1957
|
+
className: "lg:col-span-3",
|
|
1958
|
+
children: /* @__PURE__ */ jsx15(Card2, {
|
|
1959
|
+
className: "p-6",
|
|
1960
|
+
children: /* @__PURE__ */ jsxs9(VStack6, {
|
|
1961
|
+
gap: "md",
|
|
1962
|
+
children: [
|
|
1963
|
+
/* @__PURE__ */ jsxs9(HStack8, {
|
|
1964
|
+
className: "items-center gap-2 border-b pb-2",
|
|
1965
|
+
children: [
|
|
1966
|
+
/* @__PURE__ */ jsx15(BookOpen2, {
|
|
1967
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
1853
1968
|
}),
|
|
1854
|
-
|
|
1969
|
+
/* @__PURE__ */ jsx15("h3", {
|
|
1970
|
+
className: "font-semibold text-lg",
|
|
1971
|
+
children: "Related Documentation"
|
|
1972
|
+
})
|
|
1973
|
+
]
|
|
1974
|
+
}),
|
|
1975
|
+
/* @__PURE__ */ jsx15("div", {
|
|
1976
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
1977
|
+
children: relatedDocs.map((doc) => /* @__PURE__ */ jsx15(Link3, {
|
|
1978
|
+
href: doc.route || `/docs/${doc.id}`,
|
|
1979
|
+
className: "group block",
|
|
1980
|
+
children: /* @__PURE__ */ jsxs9("div", {
|
|
1981
|
+
className: "h-full rounded-lg border p-4 transition-colors hover:border-primary",
|
|
1855
1982
|
children: [
|
|
1856
|
-
/* @__PURE__ */
|
|
1857
|
-
className: "text-
|
|
1858
|
-
children:
|
|
1983
|
+
/* @__PURE__ */ jsx15("h4", {
|
|
1984
|
+
className: "mb-1 font-semibold group-hover:text-primary",
|
|
1985
|
+
children: doc.title
|
|
1859
1986
|
}),
|
|
1860
|
-
/* @__PURE__ */
|
|
1861
|
-
className: "
|
|
1862
|
-
children:
|
|
1863
|
-
label: `#${t}`,
|
|
1864
|
-
size: "sm",
|
|
1865
|
-
tone: "neutral"
|
|
1866
|
-
}, t))
|
|
1987
|
+
doc.summary && /* @__PURE__ */ jsx15("p", {
|
|
1988
|
+
className: "line-clamp-2 text-muted-foreground text-sm",
|
|
1989
|
+
children: doc.summary
|
|
1867
1990
|
})
|
|
1868
1991
|
]
|
|
1869
1992
|
})
|
|
1870
|
-
|
|
1993
|
+
}, doc.id))
|
|
1871
1994
|
})
|
|
1872
1995
|
]
|
|
1873
1996
|
})
|
|
1874
1997
|
})
|
|
1875
|
-
})
|
|
1998
|
+
}) : null
|
|
1876
1999
|
]
|
|
1877
2000
|
})
|
|
1878
2001
|
]
|
|
1879
2002
|
});
|
|
1880
2003
|
}
|
|
1881
|
-
// src/presentation/features/templates/
|
|
2004
|
+
// src/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.tsx
|
|
1882
2005
|
import {
|
|
1883
|
-
Breadcrumbs as
|
|
1884
|
-
|
|
1885
|
-
EmptyState as EmptyState3,
|
|
1886
|
-
PageHeaderResponsive as PageHeaderResponsive9,
|
|
1887
|
-
StatusChip as StatusChip7
|
|
2006
|
+
Breadcrumbs as Breadcrumbs4,
|
|
2007
|
+
PageHeaderResponsive as PageHeaderResponsive5
|
|
1888
2008
|
} from "@contractspec/lib.design-system";
|
|
1889
|
-
import {
|
|
1890
|
-
import {
|
|
1891
|
-
import {
|
|
1892
|
-
import { BookOpen, Code as Code2, Database as Database3, Radio as Radio4 } from "lucide-react";
|
|
1893
|
-
import Link2 from "next/link";
|
|
1894
|
-
import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2009
|
+
import { VStack as VStack7 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
2010
|
+
import { cn as cn9 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
2011
|
+
import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1895
2012
|
"use client";
|
|
1896
|
-
function
|
|
2013
|
+
function FeatureEventsTemplate({
|
|
1897
2014
|
feature,
|
|
1898
|
-
|
|
1899
|
-
|
|
2015
|
+
className
|
|
2016
|
+
}) {
|
|
2017
|
+
return /* @__PURE__ */ jsxs10(VStack7, {
|
|
2018
|
+
gap: "lg",
|
|
2019
|
+
className: cn9("mx-auto w-full max-w-5xl p-6", className),
|
|
2020
|
+
children: [
|
|
2021
|
+
/* @__PURE__ */ jsx16(PageHeaderResponsive5, {
|
|
2022
|
+
title: "Events",
|
|
2023
|
+
subtitle: `Events defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
2024
|
+
breadcrumb: /* @__PURE__ */ jsx16(Breadcrumbs4, {
|
|
2025
|
+
items: [
|
|
2026
|
+
{ label: "Features", href: "/features" },
|
|
2027
|
+
{
|
|
2028
|
+
label: feature.meta.title || feature.meta.key,
|
|
2029
|
+
href: `/features/${feature.meta.key}`
|
|
2030
|
+
},
|
|
2031
|
+
{ label: "Events" }
|
|
2032
|
+
]
|
|
2033
|
+
})
|
|
2034
|
+
}),
|
|
2035
|
+
/* @__PURE__ */ jsx16(FeatureEventsList, {
|
|
2036
|
+
feature
|
|
2037
|
+
})
|
|
2038
|
+
]
|
|
2039
|
+
});
|
|
2040
|
+
}
|
|
2041
|
+
// src/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.tsx
|
|
2042
|
+
import {
|
|
2043
|
+
Breadcrumbs as Breadcrumbs5,
|
|
2044
|
+
CodeBlock as CodeBlock3,
|
|
2045
|
+
EmptyState as EmptyState4,
|
|
2046
|
+
PageHeaderResponsive as PageHeaderResponsive6,
|
|
2047
|
+
StatusChip as StatusChip8
|
|
2048
|
+
} from "@contractspec/lib.design-system";
|
|
2049
|
+
import { Card as Card3 } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
2050
|
+
import { Box as Box4, HStack as HStack9, VStack as VStack8 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
2051
|
+
import { cn as cn10 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
2052
|
+
import { BookOpen as BookOpen3, Code as Code3, Database as Database4, PenTool } from "lucide-react";
|
|
2053
|
+
import Link4 from "next/link";
|
|
2054
|
+
import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2055
|
+
"use client";
|
|
2056
|
+
function FeatureFormDetailTemplate({
|
|
2057
|
+
feature,
|
|
2058
|
+
formKey,
|
|
2059
|
+
form,
|
|
1900
2060
|
spec,
|
|
1901
2061
|
className
|
|
1902
2062
|
}) {
|
|
1903
|
-
const
|
|
1904
|
-
const relatedDocs = useRelatedDocs(
|
|
1905
|
-
if (!
|
|
1906
|
-
return /* @__PURE__ */
|
|
2063
|
+
const formRef = form ?? feature.forms?.find((f) => f.key === formKey);
|
|
2064
|
+
const relatedDocs = useRelatedDocs(formRef?.key || "", spec?.meta?.tags);
|
|
2065
|
+
if (!formRef) {
|
|
2066
|
+
return /* @__PURE__ */ jsxs11(VStack8, {
|
|
1907
2067
|
gap: "lg",
|
|
1908
|
-
className:
|
|
2068
|
+
className: cn10("mx-auto w-full max-w-5xl p-6", className),
|
|
1909
2069
|
children: [
|
|
1910
|
-
/* @__PURE__ */
|
|
1911
|
-
title: "
|
|
1912
|
-
subtitle: `
|
|
1913
|
-
breadcrumb: /* @__PURE__ */
|
|
2070
|
+
/* @__PURE__ */ jsx17(PageHeaderResponsive6, {
|
|
2071
|
+
title: "Form Not Found",
|
|
2072
|
+
subtitle: `Form ${formKey} not found in feature ${feature.meta.key}`,
|
|
2073
|
+
breadcrumb: /* @__PURE__ */ jsx17(Breadcrumbs5, {
|
|
1914
2074
|
items: [
|
|
1915
2075
|
{ label: "Features", href: "/features" },
|
|
1916
2076
|
{
|
|
1917
2077
|
label: feature.meta.title || feature.meta.key,
|
|
1918
2078
|
href: `/features/${feature.meta.key}`
|
|
1919
2079
|
},
|
|
1920
|
-
{
|
|
1921
|
-
label: "Events",
|
|
1922
|
-
href: `/features/${feature.meta.key}/events`
|
|
1923
|
-
}
|
|
2080
|
+
{ label: "Forms" }
|
|
1924
2081
|
]
|
|
1925
2082
|
})
|
|
1926
2083
|
}),
|
|
1927
|
-
/* @__PURE__ */
|
|
1928
|
-
title: "
|
|
1929
|
-
description: `The
|
|
1930
|
-
icon: /* @__PURE__ */
|
|
1931
|
-
className: "
|
|
2084
|
+
/* @__PURE__ */ jsx17(EmptyState4, {
|
|
2085
|
+
title: "Form not found",
|
|
2086
|
+
description: `The form '${formKey}' could not be found in this feature.`,
|
|
2087
|
+
icon: /* @__PURE__ */ jsx17(PenTool, {
|
|
2088
|
+
className: "h-12 w-12 text-muted-foreground"
|
|
1932
2089
|
})
|
|
1933
2090
|
})
|
|
1934
2091
|
]
|
|
1935
2092
|
});
|
|
1936
2093
|
}
|
|
1937
|
-
return /* @__PURE__ */
|
|
2094
|
+
return /* @__PURE__ */ jsxs11(VStack8, {
|
|
1938
2095
|
gap: "lg",
|
|
1939
|
-
className:
|
|
2096
|
+
className: cn10("mx-auto w-full max-w-5xl p-6", className),
|
|
1940
2097
|
children: [
|
|
1941
|
-
/* @__PURE__ */
|
|
1942
|
-
title:
|
|
1943
|
-
subtitle: `
|
|
1944
|
-
breadcrumb: /* @__PURE__ */
|
|
2098
|
+
/* @__PURE__ */ jsx17(PageHeaderResponsive6, {
|
|
2099
|
+
title: formRef.key,
|
|
2100
|
+
subtitle: `Form defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
2101
|
+
breadcrumb: /* @__PURE__ */ jsx17(Breadcrumbs5, {
|
|
1945
2102
|
items: [
|
|
1946
2103
|
{ label: "Features", href: "/features" },
|
|
1947
2104
|
{
|
|
1948
2105
|
label: feature.meta.title || feature.meta.key,
|
|
1949
2106
|
href: `/features/${feature.meta.key}`
|
|
1950
2107
|
},
|
|
1951
|
-
{ label: "
|
|
1952
|
-
{ label:
|
|
2108
|
+
{ label: "Forms", href: `/features/${feature.meta.key}#forms` },
|
|
2109
|
+
{ label: formRef.key }
|
|
1953
2110
|
]
|
|
1954
2111
|
})
|
|
1955
2112
|
}),
|
|
1956
|
-
/* @__PURE__ */
|
|
2113
|
+
/* @__PURE__ */ jsxs11(HStack9, {
|
|
1957
2114
|
gap: "sm",
|
|
1958
2115
|
children: [
|
|
1959
|
-
/* @__PURE__ */
|
|
2116
|
+
/* @__PURE__ */ jsx17(StatusChip8, {
|
|
1960
2117
|
tone: "neutral",
|
|
1961
|
-
label:
|
|
2118
|
+
label: formRef.key,
|
|
1962
2119
|
size: "sm",
|
|
1963
|
-
icon: /* @__PURE__ */
|
|
2120
|
+
icon: /* @__PURE__ */ jsx17(PenTool, {
|
|
1964
2121
|
className: "h-3 w-3"
|
|
1965
2122
|
})
|
|
1966
2123
|
}),
|
|
1967
|
-
/* @__PURE__ */
|
|
2124
|
+
/* @__PURE__ */ jsx17(StatusChip8, {
|
|
1968
2125
|
tone: "neutral",
|
|
1969
|
-
label: `v${
|
|
2126
|
+
label: `v${formRef.version}`,
|
|
1970
2127
|
size: "sm"
|
|
1971
2128
|
}),
|
|
1972
|
-
spec?.meta?.stability ? /* @__PURE__ */
|
|
2129
|
+
spec?.meta?.stability ? /* @__PURE__ */ jsx17(StatusChip8, {
|
|
1973
2130
|
tone: spec.meta.stability === "stable" ? "success" : "warning",
|
|
1974
2131
|
label: spec.meta.stability,
|
|
1975
2132
|
size: "sm"
|
|
1976
2133
|
}) : null
|
|
1977
2134
|
]
|
|
1978
2135
|
}),
|
|
1979
|
-
/* @__PURE__ */
|
|
2136
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
1980
2137
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
1981
2138
|
children: [
|
|
1982
|
-
/* @__PURE__ */
|
|
2139
|
+
/* @__PURE__ */ jsx17("div", {
|
|
1983
2140
|
className: "space-y-6 lg:col-span-2",
|
|
1984
|
-
children: /* @__PURE__ */
|
|
2141
|
+
children: /* @__PURE__ */ jsx17(Card3, {
|
|
1985
2142
|
className: "p-6",
|
|
1986
|
-
children: /* @__PURE__ */
|
|
2143
|
+
children: /* @__PURE__ */ jsxs11(VStack8, {
|
|
1987
2144
|
gap: "md",
|
|
1988
2145
|
children: [
|
|
1989
|
-
/* @__PURE__ */
|
|
2146
|
+
/* @__PURE__ */ jsxs11(HStack9, {
|
|
1990
2147
|
className: "items-center gap-2 border-b pb-2",
|
|
1991
2148
|
children: [
|
|
1992
|
-
/* @__PURE__ */
|
|
1993
|
-
className: "
|
|
2149
|
+
/* @__PURE__ */ jsx17(Code3, {
|
|
2150
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
1994
2151
|
}),
|
|
1995
|
-
/* @__PURE__ */
|
|
1996
|
-
className: "text-lg
|
|
1997
|
-
children: "
|
|
2152
|
+
/* @__PURE__ */ jsx17("h3", {
|
|
2153
|
+
className: "font-semibold text-lg",
|
|
2154
|
+
children: "Form Definition"
|
|
1998
2155
|
})
|
|
1999
2156
|
]
|
|
2000
2157
|
}),
|
|
2001
|
-
spec ? /* @__PURE__ */
|
|
2158
|
+
spec ? /* @__PURE__ */ jsxs11(VStack8, {
|
|
2002
2159
|
gap: "lg",
|
|
2003
2160
|
children: [
|
|
2004
|
-
spec.meta.description && /* @__PURE__ */
|
|
2161
|
+
spec.meta.description && /* @__PURE__ */ jsx17("p", {
|
|
2005
2162
|
className: "text-muted-foreground",
|
|
2006
2163
|
children: spec.meta.description
|
|
2007
2164
|
}),
|
|
2008
|
-
/* @__PURE__ */
|
|
2165
|
+
/* @__PURE__ */ jsxs11(Box4, {
|
|
2009
2166
|
className: "flex-col gap-2",
|
|
2010
2167
|
children: [
|
|
2011
|
-
/* @__PURE__ */
|
|
2012
|
-
className: "text-muted-foreground text-sm
|
|
2013
|
-
children: "
|
|
2168
|
+
/* @__PURE__ */ jsx17("span", {
|
|
2169
|
+
className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
|
|
2170
|
+
children: "Fields"
|
|
2014
2171
|
}),
|
|
2015
|
-
/* @__PURE__ */
|
|
2016
|
-
code: JSON.stringify(spec.
|
|
2172
|
+
/* @__PURE__ */ jsx17(CodeBlock3, {
|
|
2173
|
+
code: JSON.stringify(spec.fields, null, 2),
|
|
2174
|
+
language: "json"
|
|
2175
|
+
})
|
|
2176
|
+
]
|
|
2177
|
+
}),
|
|
2178
|
+
/* @__PURE__ */ jsxs11(Box4, {
|
|
2179
|
+
className: "flex-col gap-2",
|
|
2180
|
+
children: [
|
|
2181
|
+
/* @__PURE__ */ jsx17("span", {
|
|
2182
|
+
className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
|
|
2183
|
+
children: "Actions"
|
|
2184
|
+
}),
|
|
2185
|
+
/* @__PURE__ */ jsx17(CodeBlock3, {
|
|
2186
|
+
code: JSON.stringify(spec.actions, null, 2),
|
|
2017
2187
|
language: "json"
|
|
2018
2188
|
})
|
|
2019
2189
|
]
|
|
2020
2190
|
})
|
|
2021
2191
|
]
|
|
2022
|
-
}) : /* @__PURE__ */
|
|
2192
|
+
}) : /* @__PURE__ */ jsxs11(VStack8, {
|
|
2023
2193
|
gap: "md",
|
|
2024
2194
|
children: [
|
|
2025
|
-
/* @__PURE__ */
|
|
2195
|
+
/* @__PURE__ */ jsx17("p", {
|
|
2026
2196
|
className: "text-muted-foreground",
|
|
2027
|
-
children: "Full
|
|
2197
|
+
children: "Full form definition details are not available for this form reference."
|
|
2028
2198
|
}),
|
|
2029
|
-
/* @__PURE__ */
|
|
2030
|
-
code: JSON.stringify(
|
|
2199
|
+
/* @__PURE__ */ jsx17(CodeBlock3, {
|
|
2200
|
+
code: JSON.stringify(formRef, null, 2),
|
|
2031
2201
|
language: "json"
|
|
2032
2202
|
})
|
|
2033
2203
|
]
|
|
@@ -2036,67 +2206,83 @@ function FeatureEventDetailTemplate({
|
|
|
2036
2206
|
})
|
|
2037
2207
|
})
|
|
2038
2208
|
}),
|
|
2039
|
-
/* @__PURE__ */
|
|
2209
|
+
/* @__PURE__ */ jsx17("div", {
|
|
2040
2210
|
className: "space-y-6",
|
|
2041
|
-
children: /* @__PURE__ */
|
|
2211
|
+
children: /* @__PURE__ */ jsx17(Card3, {
|
|
2042
2212
|
className: "p-6",
|
|
2043
|
-
children: /* @__PURE__ */
|
|
2213
|
+
children: /* @__PURE__ */ jsxs11(VStack8, {
|
|
2044
2214
|
gap: "md",
|
|
2045
2215
|
children: [
|
|
2046
|
-
/* @__PURE__ */
|
|
2216
|
+
/* @__PURE__ */ jsxs11(HStack9, {
|
|
2047
2217
|
className: "items-center gap-2 border-b pb-2",
|
|
2048
2218
|
children: [
|
|
2049
|
-
/* @__PURE__ */
|
|
2050
|
-
className: "
|
|
2219
|
+
/* @__PURE__ */ jsx17(Database4, {
|
|
2220
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
2051
2221
|
}),
|
|
2052
|
-
/* @__PURE__ */
|
|
2053
|
-
className: "text-lg
|
|
2222
|
+
/* @__PURE__ */ jsx17("h3", {
|
|
2223
|
+
className: "font-semibold text-lg",
|
|
2054
2224
|
children: "Metadata"
|
|
2055
2225
|
})
|
|
2056
2226
|
]
|
|
2057
2227
|
}),
|
|
2058
|
-
/* @__PURE__ */
|
|
2228
|
+
/* @__PURE__ */ jsxs11("dl", {
|
|
2059
2229
|
className: "grid grid-cols-1 gap-4 text-sm",
|
|
2060
2230
|
children: [
|
|
2061
|
-
/* @__PURE__ */
|
|
2231
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2062
2232
|
children: [
|
|
2063
|
-
/* @__PURE__ */
|
|
2233
|
+
/* @__PURE__ */ jsx17("dt", {
|
|
2064
2234
|
className: "text-muted-foreground",
|
|
2065
2235
|
children: "Key"
|
|
2066
2236
|
}),
|
|
2067
|
-
/* @__PURE__ */
|
|
2237
|
+
/* @__PURE__ */ jsx17("dd", {
|
|
2068
2238
|
className: "truncate font-medium",
|
|
2069
|
-
children:
|
|
2239
|
+
children: formRef.key
|
|
2070
2240
|
})
|
|
2071
2241
|
]
|
|
2072
2242
|
}),
|
|
2073
|
-
/* @__PURE__ */
|
|
2243
|
+
/* @__PURE__ */ jsxs11("div", {
|
|
2074
2244
|
children: [
|
|
2075
|
-
/* @__PURE__ */
|
|
2245
|
+
/* @__PURE__ */ jsx17("dt", {
|
|
2076
2246
|
className: "text-muted-foreground",
|
|
2077
2247
|
children: "Version"
|
|
2078
2248
|
}),
|
|
2079
|
-
/* @__PURE__ */
|
|
2249
|
+
/* @__PURE__ */ jsx17("dd", {
|
|
2080
2250
|
className: "font-medium",
|
|
2081
|
-
children:
|
|
2251
|
+
children: formRef.version
|
|
2082
2252
|
})
|
|
2083
2253
|
]
|
|
2084
2254
|
}),
|
|
2085
|
-
spec?.meta?.owners && /* @__PURE__ */
|
|
2255
|
+
spec?.meta?.owners && /* @__PURE__ */ jsxs11("div", {
|
|
2086
2256
|
children: [
|
|
2087
|
-
/* @__PURE__ */
|
|
2257
|
+
/* @__PURE__ */ jsx17("dt", {
|
|
2088
2258
|
className: "text-muted-foreground",
|
|
2089
2259
|
children: "Owners"
|
|
2090
2260
|
}),
|
|
2091
|
-
/* @__PURE__ */
|
|
2261
|
+
/* @__PURE__ */ jsx17("dd", {
|
|
2092
2262
|
className: "flex flex-wrap gap-1 font-medium",
|
|
2093
|
-
children: spec.meta.owners.map((o) => /* @__PURE__ */
|
|
2263
|
+
children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx17(StatusChip8, {
|
|
2094
2264
|
label: o,
|
|
2095
2265
|
size: "sm",
|
|
2096
2266
|
tone: "neutral"
|
|
2097
2267
|
}, o))
|
|
2098
2268
|
})
|
|
2099
2269
|
]
|
|
2270
|
+
}),
|
|
2271
|
+
spec?.meta?.tags && /* @__PURE__ */ jsxs11("div", {
|
|
2272
|
+
children: [
|
|
2273
|
+
/* @__PURE__ */ jsx17("dt", {
|
|
2274
|
+
className: "text-muted-foreground",
|
|
2275
|
+
children: "Tags"
|
|
2276
|
+
}),
|
|
2277
|
+
/* @__PURE__ */ jsx17("dd", {
|
|
2278
|
+
className: "flex flex-wrap gap-1 font-medium",
|
|
2279
|
+
children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx17(StatusChip8, {
|
|
2280
|
+
label: `#${t}`,
|
|
2281
|
+
size: "sm",
|
|
2282
|
+
tone: "neutral"
|
|
2283
|
+
}, t))
|
|
2284
|
+
})
|
|
2285
|
+
]
|
|
2100
2286
|
})
|
|
2101
2287
|
]
|
|
2102
2288
|
})
|
|
@@ -2104,39 +2290,39 @@ function FeatureEventDetailTemplate({
|
|
|
2104
2290
|
})
|
|
2105
2291
|
})
|
|
2106
2292
|
}),
|
|
2107
|
-
relatedDocs?.length ? /* @__PURE__ */
|
|
2293
|
+
relatedDocs?.length ? /* @__PURE__ */ jsx17("div", {
|
|
2108
2294
|
className: "lg:col-span-3",
|
|
2109
|
-
children: /* @__PURE__ */
|
|
2295
|
+
children: /* @__PURE__ */ jsx17(Card3, {
|
|
2110
2296
|
className: "p-6",
|
|
2111
|
-
children: /* @__PURE__ */
|
|
2297
|
+
children: /* @__PURE__ */ jsxs11(VStack8, {
|
|
2112
2298
|
gap: "md",
|
|
2113
2299
|
children: [
|
|
2114
|
-
/* @__PURE__ */
|
|
2300
|
+
/* @__PURE__ */ jsxs11(HStack9, {
|
|
2115
2301
|
className: "items-center gap-2 border-b pb-2",
|
|
2116
2302
|
children: [
|
|
2117
|
-
/* @__PURE__ */
|
|
2118
|
-
className: "
|
|
2303
|
+
/* @__PURE__ */ jsx17(BookOpen3, {
|
|
2304
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
2119
2305
|
}),
|
|
2120
|
-
/* @__PURE__ */
|
|
2121
|
-
className: "text-lg
|
|
2306
|
+
/* @__PURE__ */ jsx17("h3", {
|
|
2307
|
+
className: "font-semibold text-lg",
|
|
2122
2308
|
children: "Related Documentation"
|
|
2123
2309
|
})
|
|
2124
2310
|
]
|
|
2125
2311
|
}),
|
|
2126
|
-
/* @__PURE__ */
|
|
2312
|
+
/* @__PURE__ */ jsx17("div", {
|
|
2127
2313
|
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
2128
|
-
children: relatedDocs.map((doc) => /* @__PURE__ */
|
|
2314
|
+
children: relatedDocs.map((doc) => /* @__PURE__ */ jsx17(Link4, {
|
|
2129
2315
|
href: doc.route || `/docs/${doc.id}`,
|
|
2130
2316
|
className: "group block",
|
|
2131
|
-
children: /* @__PURE__ */
|
|
2132
|
-
className: "
|
|
2317
|
+
children: /* @__PURE__ */ jsxs11("div", {
|
|
2318
|
+
className: "h-full rounded-lg border p-4 transition-colors hover:border-primary",
|
|
2133
2319
|
children: [
|
|
2134
|
-
/* @__PURE__ */
|
|
2135
|
-
className: "group-hover:text-primary
|
|
2320
|
+
/* @__PURE__ */ jsx17("h4", {
|
|
2321
|
+
className: "mb-1 font-semibold group-hover:text-primary",
|
|
2136
2322
|
children: doc.title
|
|
2137
2323
|
}),
|
|
2138
|
-
doc.summary && /* @__PURE__ */
|
|
2139
|
-
className: "
|
|
2324
|
+
doc.summary && /* @__PURE__ */ jsx17("p", {
|
|
2325
|
+
className: "line-clamp-2 text-muted-foreground text-sm",
|
|
2140
2326
|
children: doc.summary
|
|
2141
2327
|
})
|
|
2142
2328
|
]
|
|
@@ -2152,70 +2338,103 @@ function FeatureEventDetailTemplate({
|
|
|
2152
2338
|
]
|
|
2153
2339
|
});
|
|
2154
2340
|
}
|
|
2155
|
-
// src/presentation/features/templates/
|
|
2341
|
+
// src/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.tsx
|
|
2156
2342
|
import {
|
|
2157
|
-
Breadcrumbs as
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2343
|
+
Breadcrumbs as Breadcrumbs6,
|
|
2344
|
+
PageHeaderResponsive as PageHeaderResponsive7
|
|
2345
|
+
} from "@contractspec/lib.design-system";
|
|
2346
|
+
import { VStack as VStack9 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
2347
|
+
import { cn as cn11 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
2348
|
+
import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2349
|
+
"use client";
|
|
2350
|
+
function FeatureFormsTemplate({
|
|
2351
|
+
feature,
|
|
2352
|
+
className
|
|
2353
|
+
}) {
|
|
2354
|
+
return /* @__PURE__ */ jsxs12(VStack9, {
|
|
2355
|
+
gap: "lg",
|
|
2356
|
+
className: cn11("mx-auto w-full max-w-5xl p-6", className),
|
|
2357
|
+
children: [
|
|
2358
|
+
/* @__PURE__ */ jsx18(PageHeaderResponsive7, {
|
|
2359
|
+
title: "Forms",
|
|
2360
|
+
subtitle: `Forms defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
2361
|
+
breadcrumb: /* @__PURE__ */ jsx18(Breadcrumbs6, {
|
|
2362
|
+
items: [
|
|
2363
|
+
{ label: "Features", href: "/features" },
|
|
2364
|
+
{
|
|
2365
|
+
label: feature.meta.title || feature.meta.key,
|
|
2366
|
+
href: `/features/${feature.meta.key}`
|
|
2367
|
+
},
|
|
2368
|
+
{ label: "Forms" }
|
|
2369
|
+
]
|
|
2370
|
+
})
|
|
2371
|
+
}),
|
|
2372
|
+
/* @__PURE__ */ jsx18(FeatureFormsList, {
|
|
2373
|
+
feature
|
|
2374
|
+
})
|
|
2375
|
+
]
|
|
2376
|
+
});
|
|
2377
|
+
}
|
|
2378
|
+
// src/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.tsx
|
|
2379
|
+
import {
|
|
2380
|
+
Breadcrumbs as Breadcrumbs7,
|
|
2381
|
+
CodeBlock as CodeBlock4,
|
|
2382
|
+
EmptyState as EmptyState5,
|
|
2383
|
+
PageHeaderResponsive as PageHeaderResponsive8,
|
|
2384
|
+
StatusChip as StatusChip9
|
|
2162
2385
|
} from "@contractspec/lib.design-system";
|
|
2163
|
-
import { Card as
|
|
2164
|
-
import { Box as
|
|
2165
|
-
import { cn as
|
|
2166
|
-
import {
|
|
2167
|
-
import
|
|
2168
|
-
import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2386
|
+
import { Card as Card4 } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
2387
|
+
import { Box as Box5, HStack as HStack10, VStack as VStack10 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
2388
|
+
import { cn as cn12 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
2389
|
+
import { Code as Code4, Database as Database5, Zap as Zap4 } from "lucide-react";
|
|
2390
|
+
import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2169
2391
|
"use client";
|
|
2170
|
-
function
|
|
2392
|
+
function FeatureOperationDetailTemplate({
|
|
2171
2393
|
feature,
|
|
2172
|
-
|
|
2173
|
-
|
|
2394
|
+
operationKey,
|
|
2395
|
+
operation,
|
|
2174
2396
|
spec,
|
|
2175
2397
|
className
|
|
2176
2398
|
}) {
|
|
2177
|
-
const
|
|
2178
|
-
const
|
|
2179
|
-
if (!
|
|
2180
|
-
return /* @__PURE__ */
|
|
2399
|
+
const opRef = operation ?? feature.operations?.find((op) => op.key === operationKey);
|
|
2400
|
+
const _relatedDocs = useRelatedDocs(opRef?.key || "", spec?.meta?.tags);
|
|
2401
|
+
if (!opRef) {
|
|
2402
|
+
return /* @__PURE__ */ jsxs13(VStack10, {
|
|
2181
2403
|
gap: "lg",
|
|
2182
|
-
className:
|
|
2404
|
+
className: cn12("mx-auto w-full max-w-5xl p-6", className),
|
|
2183
2405
|
children: [
|
|
2184
|
-
/* @__PURE__ */
|
|
2185
|
-
title: "
|
|
2186
|
-
subtitle: `
|
|
2187
|
-
breadcrumb: /* @__PURE__ */
|
|
2406
|
+
/* @__PURE__ */ jsx19(PageHeaderResponsive8, {
|
|
2407
|
+
title: "Operation Not Found",
|
|
2408
|
+
subtitle: `Operation ${operationKey} not found in feature ${feature.meta.key}`,
|
|
2409
|
+
breadcrumb: /* @__PURE__ */ jsx19(Breadcrumbs7, {
|
|
2188
2410
|
items: [
|
|
2189
2411
|
{ label: "Features", href: "/features" },
|
|
2190
2412
|
{
|
|
2191
2413
|
label: feature.meta.title || feature.meta.key,
|
|
2192
2414
|
href: `/features/${feature.meta.key}`
|
|
2193
2415
|
},
|
|
2194
|
-
{
|
|
2195
|
-
label: "Presentations",
|
|
2196
|
-
href: `/features/${feature.meta.key}/presentation`
|
|
2197
|
-
}
|
|
2416
|
+
{ label: "Operations" }
|
|
2198
2417
|
]
|
|
2199
2418
|
})
|
|
2200
2419
|
}),
|
|
2201
|
-
/* @__PURE__ */
|
|
2202
|
-
title: "
|
|
2203
|
-
description: `The
|
|
2204
|
-
icon: /* @__PURE__ */
|
|
2205
|
-
className: "
|
|
2420
|
+
/* @__PURE__ */ jsx19(EmptyState5, {
|
|
2421
|
+
title: "Operation not found",
|
|
2422
|
+
description: `The operation '${operationKey}' could not be found in this feature.`,
|
|
2423
|
+
icon: /* @__PURE__ */ jsx19(Zap4, {
|
|
2424
|
+
className: "h-12 w-12 text-muted-foreground"
|
|
2206
2425
|
})
|
|
2207
2426
|
})
|
|
2208
2427
|
]
|
|
2209
2428
|
});
|
|
2210
2429
|
}
|
|
2211
|
-
return /* @__PURE__ */
|
|
2430
|
+
return /* @__PURE__ */ jsxs13(VStack10, {
|
|
2212
2431
|
gap: "lg",
|
|
2213
|
-
className:
|
|
2432
|
+
className: cn12("mx-auto w-full max-w-5xl p-6", className),
|
|
2214
2433
|
children: [
|
|
2215
|
-
/* @__PURE__ */
|
|
2216
|
-
title:
|
|
2217
|
-
subtitle: `
|
|
2218
|
-
breadcrumb: /* @__PURE__ */
|
|
2434
|
+
/* @__PURE__ */ jsx19(PageHeaderResponsive8, {
|
|
2435
|
+
title: opRef.key,
|
|
2436
|
+
subtitle: `Operation defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
2437
|
+
breadcrumb: /* @__PURE__ */ jsx19(Breadcrumbs7, {
|
|
2219
2438
|
items: [
|
|
2220
2439
|
{ label: "Features", href: "/features" },
|
|
2221
2440
|
{
|
|
@@ -2223,88 +2442,103 @@ function FeaturePresentationDetailTemplate({
|
|
|
2223
2442
|
href: `/features/${feature.meta.key}`
|
|
2224
2443
|
},
|
|
2225
2444
|
{
|
|
2226
|
-
label: "
|
|
2227
|
-
href: `/features/${feature.meta.key}
|
|
2445
|
+
label: "Operations",
|
|
2446
|
+
href: `/features/${feature.meta.key}/operations`
|
|
2228
2447
|
},
|
|
2229
|
-
{ label:
|
|
2448
|
+
{ label: opRef.key }
|
|
2230
2449
|
]
|
|
2231
2450
|
})
|
|
2232
2451
|
}),
|
|
2233
|
-
/* @__PURE__ */
|
|
2452
|
+
/* @__PURE__ */ jsxs13(HStack10, {
|
|
2234
2453
|
gap: "sm",
|
|
2235
2454
|
children: [
|
|
2236
|
-
/* @__PURE__ */
|
|
2455
|
+
/* @__PURE__ */ jsx19(StatusChip9, {
|
|
2237
2456
|
tone: "neutral",
|
|
2238
|
-
label:
|
|
2457
|
+
label: opRef.key,
|
|
2239
2458
|
size: "sm",
|
|
2240
|
-
icon: /* @__PURE__ */
|
|
2459
|
+
icon: /* @__PURE__ */ jsx19(Zap4, {
|
|
2241
2460
|
className: "h-3 w-3"
|
|
2242
2461
|
})
|
|
2243
2462
|
}),
|
|
2244
|
-
/* @__PURE__ */
|
|
2463
|
+
/* @__PURE__ */ jsx19(StatusChip9, {
|
|
2245
2464
|
tone: "neutral",
|
|
2246
|
-
label: `v${
|
|
2465
|
+
label: `v${opRef.version}`,
|
|
2247
2466
|
size: "sm"
|
|
2248
2467
|
}),
|
|
2249
|
-
spec?.meta?.stability ? /* @__PURE__ */
|
|
2468
|
+
spec?.meta?.stability ? /* @__PURE__ */ jsx19(StatusChip9, {
|
|
2250
2469
|
tone: spec.meta.stability === "stable" ? "success" : "warning",
|
|
2251
2470
|
label: spec.meta.stability,
|
|
2252
2471
|
size: "sm"
|
|
2253
2472
|
}) : null
|
|
2254
2473
|
]
|
|
2255
2474
|
}),
|
|
2256
|
-
/* @__PURE__ */
|
|
2475
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
2257
2476
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
2258
2477
|
children: [
|
|
2259
|
-
/* @__PURE__ */
|
|
2478
|
+
/* @__PURE__ */ jsx19("div", {
|
|
2260
2479
|
className: "space-y-6 lg:col-span-2",
|
|
2261
|
-
children: /* @__PURE__ */
|
|
2480
|
+
children: /* @__PURE__ */ jsx19(Card4, {
|
|
2262
2481
|
className: "p-6",
|
|
2263
|
-
children: /* @__PURE__ */
|
|
2482
|
+
children: /* @__PURE__ */ jsxs13(VStack10, {
|
|
2264
2483
|
gap: "md",
|
|
2265
2484
|
children: [
|
|
2266
|
-
/* @__PURE__ */
|
|
2485
|
+
/* @__PURE__ */ jsxs13(HStack10, {
|
|
2267
2486
|
className: "items-center gap-2 border-b pb-2",
|
|
2268
2487
|
children: [
|
|
2269
|
-
/* @__PURE__ */
|
|
2270
|
-
className: "
|
|
2488
|
+
/* @__PURE__ */ jsx19(Code4, {
|
|
2489
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
2271
2490
|
}),
|
|
2272
|
-
/* @__PURE__ */
|
|
2273
|
-
className: "text-lg
|
|
2274
|
-
children: "
|
|
2491
|
+
/* @__PURE__ */ jsx19("h3", {
|
|
2492
|
+
className: "font-semibold text-lg",
|
|
2493
|
+
children: "Schema Definition"
|
|
2275
2494
|
})
|
|
2276
2495
|
]
|
|
2277
2496
|
}),
|
|
2278
|
-
spec ? /* @__PURE__ */
|
|
2497
|
+
spec ? /* @__PURE__ */ jsxs13(VStack10, {
|
|
2279
2498
|
gap: "lg",
|
|
2280
2499
|
children: [
|
|
2281
|
-
spec.meta.description && /* @__PURE__ */
|
|
2500
|
+
spec.meta.description && /* @__PURE__ */ jsx19("p", {
|
|
2282
2501
|
className: "text-muted-foreground",
|
|
2283
2502
|
children: spec.meta.description
|
|
2284
2503
|
}),
|
|
2285
|
-
/* @__PURE__ */
|
|
2504
|
+
/* @__PURE__ */ jsxs13(Box5, {
|
|
2286
2505
|
className: "flex-col gap-2",
|
|
2287
2506
|
children: [
|
|
2288
|
-
/* @__PURE__ */
|
|
2289
|
-
className: "text-muted-foreground text-sm
|
|
2290
|
-
children: "
|
|
2507
|
+
/* @__PURE__ */ jsx19("span", {
|
|
2508
|
+
className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
|
|
2509
|
+
children: "Input Schema"
|
|
2291
2510
|
}),
|
|
2292
|
-
/* @__PURE__ */
|
|
2293
|
-
|
|
2511
|
+
/* @__PURE__ */ jsx19(CodeBlock4, {
|
|
2512
|
+
className: "w-full",
|
|
2513
|
+
code: JSON.stringify(spec.io.input, null, 2),
|
|
2514
|
+
language: "json"
|
|
2515
|
+
})
|
|
2516
|
+
]
|
|
2517
|
+
}),
|
|
2518
|
+
/* @__PURE__ */ jsxs13(Box5, {
|
|
2519
|
+
className: "flex-col gap-2",
|
|
2520
|
+
children: [
|
|
2521
|
+
/* @__PURE__ */ jsx19("span", {
|
|
2522
|
+
className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
|
|
2523
|
+
children: "Output Schema"
|
|
2524
|
+
}),
|
|
2525
|
+
/* @__PURE__ */ jsx19(CodeBlock4, {
|
|
2526
|
+
className: "w-full",
|
|
2527
|
+
code: JSON.stringify(spec.io.output, null, 2),
|
|
2294
2528
|
language: "json"
|
|
2295
2529
|
})
|
|
2296
2530
|
]
|
|
2297
2531
|
})
|
|
2298
2532
|
]
|
|
2299
|
-
}) : /* @__PURE__ */
|
|
2533
|
+
}) : /* @__PURE__ */ jsxs13(VStack10, {
|
|
2300
2534
|
gap: "md",
|
|
2301
2535
|
children: [
|
|
2302
|
-
/* @__PURE__ */
|
|
2536
|
+
/* @__PURE__ */ jsx19("p", {
|
|
2303
2537
|
className: "text-muted-foreground",
|
|
2304
|
-
children: "Full
|
|
2538
|
+
children: "Full schema details are not available for this operation reference."
|
|
2305
2539
|
}),
|
|
2306
|
-
/* @__PURE__ */
|
|
2307
|
-
code: JSON.stringify(
|
|
2540
|
+
/* @__PURE__ */ jsx19(CodeBlock4, {
|
|
2541
|
+
code: JSON.stringify(opRef, null, 2),
|
|
2308
2542
|
language: "json"
|
|
2309
2543
|
})
|
|
2310
2544
|
]
|
|
@@ -2313,154 +2547,209 @@ function FeaturePresentationDetailTemplate({
|
|
|
2313
2547
|
})
|
|
2314
2548
|
})
|
|
2315
2549
|
}),
|
|
2316
|
-
/* @__PURE__ */
|
|
2550
|
+
/* @__PURE__ */ jsx19("div", {
|
|
2317
2551
|
className: "space-y-6",
|
|
2318
|
-
children: /* @__PURE__ */
|
|
2552
|
+
children: /* @__PURE__ */ jsx19(Card4, {
|
|
2319
2553
|
className: "p-6",
|
|
2320
|
-
children: /* @__PURE__ */
|
|
2554
|
+
children: /* @__PURE__ */ jsxs13(VStack10, {
|
|
2321
2555
|
gap: "md",
|
|
2322
2556
|
children: [
|
|
2323
|
-
/* @__PURE__ */
|
|
2557
|
+
/* @__PURE__ */ jsxs13(HStack10, {
|
|
2324
2558
|
className: "items-center gap-2 border-b pb-2",
|
|
2325
2559
|
children: [
|
|
2326
|
-
/* @__PURE__ */
|
|
2327
|
-
className: "
|
|
2560
|
+
/* @__PURE__ */ jsx19(Database5, {
|
|
2561
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
2328
2562
|
}),
|
|
2329
|
-
/* @__PURE__ */
|
|
2330
|
-
className: "text-lg
|
|
2563
|
+
/* @__PURE__ */ jsx19("h3", {
|
|
2564
|
+
className: "font-semibold text-lg",
|
|
2331
2565
|
children: "Metadata"
|
|
2332
2566
|
})
|
|
2333
2567
|
]
|
|
2334
2568
|
}),
|
|
2335
|
-
/* @__PURE__ */
|
|
2569
|
+
/* @__PURE__ */ jsxs13("dl", {
|
|
2336
2570
|
className: "grid grid-cols-1 gap-4 text-sm",
|
|
2337
2571
|
children: [
|
|
2338
|
-
/* @__PURE__ */
|
|
2572
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
2339
2573
|
children: [
|
|
2340
|
-
/* @__PURE__ */
|
|
2574
|
+
/* @__PURE__ */ jsx19("dt", {
|
|
2341
2575
|
className: "text-muted-foreground",
|
|
2342
2576
|
children: "Key"
|
|
2343
2577
|
}),
|
|
2344
|
-
/* @__PURE__ */
|
|
2578
|
+
/* @__PURE__ */ jsx19("dd", {
|
|
2345
2579
|
className: "truncate font-medium",
|
|
2346
|
-
children:
|
|
2580
|
+
children: opRef.key
|
|
2347
2581
|
})
|
|
2348
2582
|
]
|
|
2349
2583
|
}),
|
|
2350
|
-
/* @__PURE__ */
|
|
2584
|
+
/* @__PURE__ */ jsxs13("div", {
|
|
2351
2585
|
children: [
|
|
2352
|
-
/* @__PURE__ */
|
|
2586
|
+
/* @__PURE__ */ jsx19("dt", {
|
|
2353
2587
|
className: "text-muted-foreground",
|
|
2354
2588
|
children: "Version"
|
|
2355
2589
|
}),
|
|
2356
|
-
/* @__PURE__ */
|
|
2590
|
+
/* @__PURE__ */ jsx19("dd", {
|
|
2357
2591
|
className: "font-medium",
|
|
2358
|
-
children:
|
|
2592
|
+
children: opRef.version
|
|
2593
|
+
})
|
|
2594
|
+
]
|
|
2595
|
+
}),
|
|
2596
|
+
spec?.meta?.context && /* @__PURE__ */ jsxs13("div", {
|
|
2597
|
+
children: [
|
|
2598
|
+
/* @__PURE__ */ jsx19("dt", {
|
|
2599
|
+
className: "text-muted-foreground",
|
|
2600
|
+
children: "Context"
|
|
2601
|
+
}),
|
|
2602
|
+
/* @__PURE__ */ jsx19("dd", {
|
|
2603
|
+
className: "font-medium",
|
|
2604
|
+
children: spec.meta.context
|
|
2359
2605
|
})
|
|
2360
2606
|
]
|
|
2361
2607
|
}),
|
|
2362
|
-
spec?.meta?.owners && /* @__PURE__ */
|
|
2608
|
+
spec?.meta?.owners && /* @__PURE__ */ jsxs13("div", {
|
|
2363
2609
|
children: [
|
|
2364
|
-
/* @__PURE__ */
|
|
2610
|
+
/* @__PURE__ */ jsx19("dt", {
|
|
2365
2611
|
className: "text-muted-foreground",
|
|
2366
2612
|
children: "Owners"
|
|
2367
2613
|
}),
|
|
2368
|
-
/* @__PURE__ */
|
|
2614
|
+
/* @__PURE__ */ jsx19("dd", {
|
|
2369
2615
|
className: "flex flex-wrap gap-1 font-medium",
|
|
2370
|
-
children: spec.meta.owners.map((o) => /* @__PURE__ */
|
|
2616
|
+
children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx19(StatusChip9, {
|
|
2371
2617
|
label: o,
|
|
2372
2618
|
size: "sm",
|
|
2373
2619
|
tone: "neutral"
|
|
2374
2620
|
}, o))
|
|
2375
2621
|
})
|
|
2376
2622
|
]
|
|
2377
|
-
})
|
|
2378
|
-
]
|
|
2379
|
-
})
|
|
2380
|
-
]
|
|
2381
|
-
})
|
|
2382
|
-
})
|
|
2383
|
-
}),
|
|
2384
|
-
relatedDocs?.length ? /* @__PURE__ */ jsx21("div", {
|
|
2385
|
-
className: "lg:col-span-3",
|
|
2386
|
-
children: /* @__PURE__ */ jsx21(Card3, {
|
|
2387
|
-
className: "p-6",
|
|
2388
|
-
children: /* @__PURE__ */ jsxs15(VStack12, {
|
|
2389
|
-
gap: "md",
|
|
2390
|
-
children: [
|
|
2391
|
-
/* @__PURE__ */ jsxs15(HStack9, {
|
|
2392
|
-
className: "items-center gap-2 border-b pb-2",
|
|
2393
|
-
children: [
|
|
2394
|
-
/* @__PURE__ */ jsx21(BookOpen2, {
|
|
2395
|
-
className: "text-muted-foreground h-5 w-5"
|
|
2396
2623
|
}),
|
|
2397
|
-
/* @__PURE__ */
|
|
2398
|
-
className: "text-lg font-semibold",
|
|
2399
|
-
children: "Related Documentation"
|
|
2400
|
-
})
|
|
2401
|
-
]
|
|
2402
|
-
}),
|
|
2403
|
-
/* @__PURE__ */ jsx21("div", {
|
|
2404
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
2405
|
-
children: relatedDocs.map((doc) => /* @__PURE__ */ jsx21(Link3, {
|
|
2406
|
-
href: doc.route || `/docs/${doc.id}`,
|
|
2407
|
-
className: "group block",
|
|
2408
|
-
children: /* @__PURE__ */ jsxs15("div", {
|
|
2409
|
-
className: "hover:border-primary h-full rounded-lg border p-4 transition-colors",
|
|
2624
|
+
spec?.meta?.tags && /* @__PURE__ */ jsxs13("div", {
|
|
2410
2625
|
children: [
|
|
2411
|
-
/* @__PURE__ */
|
|
2412
|
-
className: "
|
|
2413
|
-
children:
|
|
2626
|
+
/* @__PURE__ */ jsx19("dt", {
|
|
2627
|
+
className: "text-muted-foreground",
|
|
2628
|
+
children: "Tags"
|
|
2414
2629
|
}),
|
|
2415
|
-
|
|
2416
|
-
className: "
|
|
2417
|
-
children:
|
|
2630
|
+
/* @__PURE__ */ jsx19("dd", {
|
|
2631
|
+
className: "flex flex-wrap gap-1 font-medium",
|
|
2632
|
+
children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx19(StatusChip9, {
|
|
2633
|
+
label: `#${t}`,
|
|
2634
|
+
size: "sm",
|
|
2635
|
+
tone: "neutral"
|
|
2636
|
+
}, t))
|
|
2418
2637
|
})
|
|
2419
2638
|
]
|
|
2420
2639
|
})
|
|
2421
|
-
|
|
2640
|
+
]
|
|
2422
2641
|
})
|
|
2423
2642
|
]
|
|
2424
2643
|
})
|
|
2425
2644
|
})
|
|
2426
|
-
})
|
|
2645
|
+
})
|
|
2427
2646
|
]
|
|
2428
2647
|
})
|
|
2429
2648
|
]
|
|
2430
2649
|
});
|
|
2431
2650
|
}
|
|
2432
|
-
// src/presentation/features/templates/
|
|
2651
|
+
// src/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.tsx
|
|
2652
|
+
import {
|
|
2653
|
+
Breadcrumbs as Breadcrumbs8,
|
|
2654
|
+
PageHeaderResponsive as PageHeaderResponsive9
|
|
2655
|
+
} from "@contractspec/lib.design-system";
|
|
2656
|
+
import { VStack as VStack11 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
2657
|
+
import { cn as cn13 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
2658
|
+
import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2659
|
+
"use client";
|
|
2660
|
+
function FeatureOperationsTemplate({
|
|
2661
|
+
feature,
|
|
2662
|
+
className
|
|
2663
|
+
}) {
|
|
2664
|
+
return /* @__PURE__ */ jsxs14(VStack11, {
|
|
2665
|
+
gap: "lg",
|
|
2666
|
+
className: cn13("mx-auto w-full max-w-5xl p-6", className),
|
|
2667
|
+
children: [
|
|
2668
|
+
/* @__PURE__ */ jsx20(PageHeaderResponsive9, {
|
|
2669
|
+
title: "Operations",
|
|
2670
|
+
subtitle: `Operations defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
2671
|
+
breadcrumb: /* @__PURE__ */ jsx20(Breadcrumbs8, {
|
|
2672
|
+
items: [
|
|
2673
|
+
{ label: "Features", href: "/features" },
|
|
2674
|
+
{
|
|
2675
|
+
label: feature.meta.title || feature.meta.key,
|
|
2676
|
+
href: `/features/${feature.meta.key}`
|
|
2677
|
+
},
|
|
2678
|
+
{ label: "Operations" }
|
|
2679
|
+
]
|
|
2680
|
+
})
|
|
2681
|
+
}),
|
|
2682
|
+
/* @__PURE__ */ jsx20(FeatureOperationsList, {
|
|
2683
|
+
feature
|
|
2684
|
+
})
|
|
2685
|
+
]
|
|
2686
|
+
});
|
|
2687
|
+
}
|
|
2688
|
+
// src/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.tsx
|
|
2689
|
+
import {
|
|
2690
|
+
Breadcrumbs as Breadcrumbs9,
|
|
2691
|
+
PageHeaderResponsive as PageHeaderResponsive10
|
|
2692
|
+
} from "@contractspec/lib.design-system";
|
|
2693
|
+
import { VStack as VStack12 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
2694
|
+
import { cn as cn14 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
2695
|
+
import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2696
|
+
"use client";
|
|
2697
|
+
function FeatureOverviewTemplate({
|
|
2698
|
+
feature,
|
|
2699
|
+
className
|
|
2700
|
+
}) {
|
|
2701
|
+
return /* @__PURE__ */ jsxs15(VStack12, {
|
|
2702
|
+
gap: "lg",
|
|
2703
|
+
className: cn14("mx-auto w-full max-w-5xl p-6", className),
|
|
2704
|
+
children: [
|
|
2705
|
+
/* @__PURE__ */ jsx21(PageHeaderResponsive10, {
|
|
2706
|
+
title: feature.meta.title || feature.meta.key,
|
|
2707
|
+
subtitle: feature.meta.description || "Feature overview",
|
|
2708
|
+
breadcrumb: /* @__PURE__ */ jsx21(Breadcrumbs9, {
|
|
2709
|
+
items: [
|
|
2710
|
+
{ label: "Features", href: "/features" },
|
|
2711
|
+
{ label: feature.meta.title || feature.meta.key }
|
|
2712
|
+
]
|
|
2713
|
+
})
|
|
2714
|
+
}),
|
|
2715
|
+
/* @__PURE__ */ jsx21(FeatureDetail, {
|
|
2716
|
+
feature
|
|
2717
|
+
})
|
|
2718
|
+
]
|
|
2719
|
+
});
|
|
2720
|
+
}
|
|
2721
|
+
// src/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.tsx
|
|
2433
2722
|
import {
|
|
2434
2723
|
Breadcrumbs as Breadcrumbs10,
|
|
2435
|
-
CodeBlock as
|
|
2436
|
-
EmptyState as
|
|
2724
|
+
CodeBlock as CodeBlock5,
|
|
2725
|
+
EmptyState as EmptyState6,
|
|
2437
2726
|
PageHeaderResponsive as PageHeaderResponsive11,
|
|
2438
|
-
StatusChip as
|
|
2727
|
+
StatusChip as StatusChip10
|
|
2439
2728
|
} from "@contractspec/lib.design-system";
|
|
2440
|
-
import { Card as
|
|
2441
|
-
import { Box as
|
|
2729
|
+
import { Card as Card5 } from "@contractspec/lib.ui-kit-web/ui/card";
|
|
2730
|
+
import { Box as Box6, HStack as HStack11, VStack as VStack13 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
2442
2731
|
import { cn as cn15 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
2443
|
-
import { BookOpen as
|
|
2444
|
-
import
|
|
2732
|
+
import { BookOpen as BookOpen4, Code as Code5, Database as Database6, Layout as Layout5 } from "lucide-react";
|
|
2733
|
+
import Link5 from "next/link";
|
|
2445
2734
|
import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2446
2735
|
"use client";
|
|
2447
|
-
function
|
|
2736
|
+
function FeaturePresentationDetailTemplate({
|
|
2448
2737
|
feature,
|
|
2449
|
-
|
|
2450
|
-
|
|
2738
|
+
presentationKey,
|
|
2739
|
+
presentation,
|
|
2451
2740
|
spec,
|
|
2452
2741
|
className
|
|
2453
2742
|
}) {
|
|
2454
|
-
const
|
|
2455
|
-
const relatedDocs = useRelatedDocs(
|
|
2456
|
-
if (!
|
|
2743
|
+
const presRef = presentation ?? feature.presentations?.find((p) => p.key === presentationKey);
|
|
2744
|
+
const relatedDocs = useRelatedDocs(presRef?.key || "", spec?.meta?.tags);
|
|
2745
|
+
if (!presRef) {
|
|
2457
2746
|
return /* @__PURE__ */ jsxs16(VStack13, {
|
|
2458
2747
|
gap: "lg",
|
|
2459
2748
|
className: cn15("mx-auto w-full max-w-5xl p-6", className),
|
|
2460
2749
|
children: [
|
|
2461
2750
|
/* @__PURE__ */ jsx22(PageHeaderResponsive11, {
|
|
2462
|
-
title: "
|
|
2463
|
-
subtitle: `
|
|
2751
|
+
title: "Presentation Not Found",
|
|
2752
|
+
subtitle: `Presentation ${presentationKey} not found in feature ${feature.meta.key}`,
|
|
2464
2753
|
breadcrumb: /* @__PURE__ */ jsx22(Breadcrumbs10, {
|
|
2465
2754
|
items: [
|
|
2466
2755
|
{ label: "Features", href: "/features" },
|
|
@@ -2468,15 +2757,18 @@ function FeatureDataViewDetailTemplate({
|
|
|
2468
2757
|
label: feature.meta.title || feature.meta.key,
|
|
2469
2758
|
href: `/features/${feature.meta.key}`
|
|
2470
2759
|
},
|
|
2471
|
-
{
|
|
2760
|
+
{
|
|
2761
|
+
label: "Presentations",
|
|
2762
|
+
href: `/features/${feature.meta.key}/presentation`
|
|
2763
|
+
}
|
|
2472
2764
|
]
|
|
2473
2765
|
})
|
|
2474
2766
|
}),
|
|
2475
|
-
/* @__PURE__ */ jsx22(
|
|
2476
|
-
title: "
|
|
2477
|
-
description: `The
|
|
2478
|
-
icon: /* @__PURE__ */ jsx22(
|
|
2479
|
-
className: "
|
|
2767
|
+
/* @__PURE__ */ jsx22(EmptyState6, {
|
|
2768
|
+
title: "Presentation not found",
|
|
2769
|
+
description: `The presentation '${presentationKey}' could not be found in this feature.`,
|
|
2770
|
+
icon: /* @__PURE__ */ jsx22(Layout5, {
|
|
2771
|
+
className: "h-12 w-12 text-muted-foreground"
|
|
2480
2772
|
})
|
|
2481
2773
|
})
|
|
2482
2774
|
]
|
|
@@ -2487,8 +2779,8 @@ function FeatureDataViewDetailTemplate({
|
|
|
2487
2779
|
className: cn15("mx-auto w-full max-w-5xl p-6", className),
|
|
2488
2780
|
children: [
|
|
2489
2781
|
/* @__PURE__ */ jsx22(PageHeaderResponsive11, {
|
|
2490
|
-
title:
|
|
2491
|
-
subtitle: `
|
|
2782
|
+
title: presRef.key,
|
|
2783
|
+
subtitle: `Presentation defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
2492
2784
|
breadcrumb: /* @__PURE__ */ jsx22(Breadcrumbs10, {
|
|
2493
2785
|
items: [
|
|
2494
2786
|
{ label: "Features", href: "/features" },
|
|
@@ -2497,30 +2789,30 @@ function FeatureDataViewDetailTemplate({
|
|
|
2497
2789
|
href: `/features/${feature.meta.key}`
|
|
2498
2790
|
},
|
|
2499
2791
|
{
|
|
2500
|
-
label: "
|
|
2501
|
-
href: `/features/${feature.meta.key}#
|
|
2792
|
+
label: "Presentations",
|
|
2793
|
+
href: `/features/${feature.meta.key}#presentations`
|
|
2502
2794
|
},
|
|
2503
|
-
{ label:
|
|
2795
|
+
{ label: presRef.key }
|
|
2504
2796
|
]
|
|
2505
2797
|
})
|
|
2506
2798
|
}),
|
|
2507
|
-
/* @__PURE__ */ jsxs16(
|
|
2799
|
+
/* @__PURE__ */ jsxs16(HStack11, {
|
|
2508
2800
|
gap: "sm",
|
|
2509
2801
|
children: [
|
|
2510
|
-
/* @__PURE__ */ jsx22(
|
|
2802
|
+
/* @__PURE__ */ jsx22(StatusChip10, {
|
|
2511
2803
|
tone: "neutral",
|
|
2512
|
-
label:
|
|
2804
|
+
label: presRef.key,
|
|
2513
2805
|
size: "sm",
|
|
2514
|
-
icon: /* @__PURE__ */ jsx22(
|
|
2806
|
+
icon: /* @__PURE__ */ jsx22(Layout5, {
|
|
2515
2807
|
className: "h-3 w-3"
|
|
2516
2808
|
})
|
|
2517
2809
|
}),
|
|
2518
|
-
/* @__PURE__ */ jsx22(
|
|
2810
|
+
/* @__PURE__ */ jsx22(StatusChip10, {
|
|
2519
2811
|
tone: "neutral",
|
|
2520
|
-
label: `v${
|
|
2812
|
+
label: `v${presRef.version}`,
|
|
2521
2813
|
size: "sm"
|
|
2522
2814
|
}),
|
|
2523
|
-
spec?.meta?.stability ? /* @__PURE__ */ jsx22(
|
|
2815
|
+
spec?.meta?.stability ? /* @__PURE__ */ jsx22(StatusChip10, {
|
|
2524
2816
|
tone: spec.meta.stability === "stable" ? "success" : "warning",
|
|
2525
2817
|
label: spec.meta.stability,
|
|
2526
2818
|
size: "sm"
|
|
@@ -2532,20 +2824,20 @@ function FeatureDataViewDetailTemplate({
|
|
|
2532
2824
|
children: [
|
|
2533
2825
|
/* @__PURE__ */ jsx22("div", {
|
|
2534
2826
|
className: "space-y-6 lg:col-span-2",
|
|
2535
|
-
children: /* @__PURE__ */ jsx22(
|
|
2827
|
+
children: /* @__PURE__ */ jsx22(Card5, {
|
|
2536
2828
|
className: "p-6",
|
|
2537
2829
|
children: /* @__PURE__ */ jsxs16(VStack13, {
|
|
2538
2830
|
gap: "md",
|
|
2539
2831
|
children: [
|
|
2540
|
-
/* @__PURE__ */ jsxs16(
|
|
2832
|
+
/* @__PURE__ */ jsxs16(HStack11, {
|
|
2541
2833
|
className: "items-center gap-2 border-b pb-2",
|
|
2542
2834
|
children: [
|
|
2543
|
-
/* @__PURE__ */ jsx22(
|
|
2544
|
-
className: "
|
|
2835
|
+
/* @__PURE__ */ jsx22(Code5, {
|
|
2836
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
2545
2837
|
}),
|
|
2546
2838
|
/* @__PURE__ */ jsx22("h3", {
|
|
2547
|
-
className: "text-lg
|
|
2548
|
-
children: "
|
|
2839
|
+
className: "font-semibold text-lg",
|
|
2840
|
+
children: "Component Definition"
|
|
2549
2841
|
})
|
|
2550
2842
|
]
|
|
2551
2843
|
}),
|
|
@@ -2556,28 +2848,15 @@ function FeatureDataViewDetailTemplate({
|
|
|
2556
2848
|
className: "text-muted-foreground",
|
|
2557
2849
|
children: spec.meta.description
|
|
2558
2850
|
}),
|
|
2559
|
-
/* @__PURE__ */ jsxs16(
|
|
2560
|
-
className: "flex-col gap-2",
|
|
2561
|
-
children: [
|
|
2562
|
-
/* @__PURE__ */ jsx22("span", {
|
|
2563
|
-
className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
|
|
2564
|
-
children: "Source Query"
|
|
2565
|
-
}),
|
|
2566
|
-
/* @__PURE__ */ jsx22(CodeBlock4, {
|
|
2567
|
-
code: JSON.stringify(spec.source, null, 2),
|
|
2568
|
-
language: "json"
|
|
2569
|
-
})
|
|
2570
|
-
]
|
|
2571
|
-
}),
|
|
2572
|
-
/* @__PURE__ */ jsxs16(Box5, {
|
|
2851
|
+
/* @__PURE__ */ jsxs16(Box6, {
|
|
2573
2852
|
className: "flex-col gap-2",
|
|
2574
2853
|
children: [
|
|
2575
2854
|
/* @__PURE__ */ jsx22("span", {
|
|
2576
|
-
className: "text-muted-foreground text-sm
|
|
2577
|
-
children: "
|
|
2855
|
+
className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
|
|
2856
|
+
children: "Spec Details"
|
|
2578
2857
|
}),
|
|
2579
|
-
/* @__PURE__ */ jsx22(
|
|
2580
|
-
code: JSON.stringify(spec
|
|
2858
|
+
/* @__PURE__ */ jsx22(CodeBlock5, {
|
|
2859
|
+
code: JSON.stringify(spec, null, 2),
|
|
2581
2860
|
language: "json"
|
|
2582
2861
|
})
|
|
2583
2862
|
]
|
|
@@ -2588,10 +2867,10 @@ function FeatureDataViewDetailTemplate({
|
|
|
2588
2867
|
children: [
|
|
2589
2868
|
/* @__PURE__ */ jsx22("p", {
|
|
2590
2869
|
className: "text-muted-foreground",
|
|
2591
|
-
children: "Full
|
|
2870
|
+
children: "Full component details are not available for this presentation reference."
|
|
2592
2871
|
}),
|
|
2593
|
-
/* @__PURE__ */ jsx22(
|
|
2594
|
-
code: JSON.stringify(
|
|
2872
|
+
/* @__PURE__ */ jsx22(CodeBlock5, {
|
|
2873
|
+
code: JSON.stringify(presRef, null, 2),
|
|
2595
2874
|
language: "json"
|
|
2596
2875
|
})
|
|
2597
2876
|
]
|
|
@@ -2602,19 +2881,19 @@ function FeatureDataViewDetailTemplate({
|
|
|
2602
2881
|
}),
|
|
2603
2882
|
/* @__PURE__ */ jsx22("div", {
|
|
2604
2883
|
className: "space-y-6",
|
|
2605
|
-
children: /* @__PURE__ */ jsx22(
|
|
2884
|
+
children: /* @__PURE__ */ jsx22(Card5, {
|
|
2606
2885
|
className: "p-6",
|
|
2607
2886
|
children: /* @__PURE__ */ jsxs16(VStack13, {
|
|
2608
2887
|
gap: "md",
|
|
2609
2888
|
children: [
|
|
2610
|
-
/* @__PURE__ */ jsxs16(
|
|
2889
|
+
/* @__PURE__ */ jsxs16(HStack11, {
|
|
2611
2890
|
className: "items-center gap-2 border-b pb-2",
|
|
2612
2891
|
children: [
|
|
2613
|
-
/* @__PURE__ */ jsx22(
|
|
2614
|
-
className: "
|
|
2892
|
+
/* @__PURE__ */ jsx22(Database6, {
|
|
2893
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
2615
2894
|
}),
|
|
2616
2895
|
/* @__PURE__ */ jsx22("h3", {
|
|
2617
|
-
className: "text-lg
|
|
2896
|
+
className: "font-semibold text-lg",
|
|
2618
2897
|
children: "Metadata"
|
|
2619
2898
|
})
|
|
2620
2899
|
]
|
|
@@ -2630,7 +2909,7 @@ function FeatureDataViewDetailTemplate({
|
|
|
2630
2909
|
}),
|
|
2631
2910
|
/* @__PURE__ */ jsx22("dd", {
|
|
2632
2911
|
className: "truncate font-medium",
|
|
2633
|
-
children:
|
|
2912
|
+
children: presRef.key
|
|
2634
2913
|
})
|
|
2635
2914
|
]
|
|
2636
2915
|
}),
|
|
@@ -2642,7 +2921,7 @@ function FeatureDataViewDetailTemplate({
|
|
|
2642
2921
|
}),
|
|
2643
2922
|
/* @__PURE__ */ jsx22("dd", {
|
|
2644
2923
|
className: "font-medium",
|
|
2645
|
-
children:
|
|
2924
|
+
children: presRef.version
|
|
2646
2925
|
})
|
|
2647
2926
|
]
|
|
2648
2927
|
}),
|
|
@@ -2654,29 +2933,13 @@ function FeatureDataViewDetailTemplate({
|
|
|
2654
2933
|
}),
|
|
2655
2934
|
/* @__PURE__ */ jsx22("dd", {
|
|
2656
2935
|
className: "flex flex-wrap gap-1 font-medium",
|
|
2657
|
-
children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx22(
|
|
2936
|
+
children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx22(StatusChip10, {
|
|
2658
2937
|
label: o,
|
|
2659
2938
|
size: "sm",
|
|
2660
2939
|
tone: "neutral"
|
|
2661
2940
|
}, o))
|
|
2662
2941
|
})
|
|
2663
2942
|
]
|
|
2664
|
-
}),
|
|
2665
|
-
spec?.meta?.tags && /* @__PURE__ */ jsxs16("div", {
|
|
2666
|
-
children: [
|
|
2667
|
-
/* @__PURE__ */ jsx22("dt", {
|
|
2668
|
-
className: "text-muted-foreground",
|
|
2669
|
-
children: "Tags"
|
|
2670
|
-
}),
|
|
2671
|
-
/* @__PURE__ */ jsx22("dd", {
|
|
2672
|
-
className: "flex flex-wrap gap-1 font-medium",
|
|
2673
|
-
children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx22(StatusChip9, {
|
|
2674
|
-
label: `#${t}`,
|
|
2675
|
-
size: "sm",
|
|
2676
|
-
tone: "neutral"
|
|
2677
|
-
}, t))
|
|
2678
|
-
})
|
|
2679
|
-
]
|
|
2680
2943
|
})
|
|
2681
2944
|
]
|
|
2682
2945
|
})
|
|
@@ -2686,37 +2949,37 @@ function FeatureDataViewDetailTemplate({
|
|
|
2686
2949
|
}),
|
|
2687
2950
|
relatedDocs?.length ? /* @__PURE__ */ jsx22("div", {
|
|
2688
2951
|
className: "lg:col-span-3",
|
|
2689
|
-
children: /* @__PURE__ */ jsx22(
|
|
2952
|
+
children: /* @__PURE__ */ jsx22(Card5, {
|
|
2690
2953
|
className: "p-6",
|
|
2691
2954
|
children: /* @__PURE__ */ jsxs16(VStack13, {
|
|
2692
2955
|
gap: "md",
|
|
2693
2956
|
children: [
|
|
2694
|
-
/* @__PURE__ */ jsxs16(
|
|
2957
|
+
/* @__PURE__ */ jsxs16(HStack11, {
|
|
2695
2958
|
className: "items-center gap-2 border-b pb-2",
|
|
2696
2959
|
children: [
|
|
2697
|
-
/* @__PURE__ */ jsx22(
|
|
2698
|
-
className: "
|
|
2960
|
+
/* @__PURE__ */ jsx22(BookOpen4, {
|
|
2961
|
+
className: "h-5 w-5 text-muted-foreground"
|
|
2699
2962
|
}),
|
|
2700
2963
|
/* @__PURE__ */ jsx22("h3", {
|
|
2701
|
-
className: "text-lg
|
|
2964
|
+
className: "font-semibold text-lg",
|
|
2702
2965
|
children: "Related Documentation"
|
|
2703
2966
|
})
|
|
2704
2967
|
]
|
|
2705
2968
|
}),
|
|
2706
2969
|
/* @__PURE__ */ jsx22("div", {
|
|
2707
2970
|
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
2708
|
-
children: relatedDocs.map((doc) => /* @__PURE__ */ jsx22(
|
|
2971
|
+
children: relatedDocs.map((doc) => /* @__PURE__ */ jsx22(Link5, {
|
|
2709
2972
|
href: doc.route || `/docs/${doc.id}`,
|
|
2710
2973
|
className: "group block",
|
|
2711
2974
|
children: /* @__PURE__ */ jsxs16("div", {
|
|
2712
|
-
className: "
|
|
2975
|
+
className: "h-full rounded-lg border p-4 transition-colors hover:border-primary",
|
|
2713
2976
|
children: [
|
|
2714
2977
|
/* @__PURE__ */ jsx22("h4", {
|
|
2715
|
-
className: "group-hover:text-primary
|
|
2978
|
+
className: "mb-1 font-semibold group-hover:text-primary",
|
|
2716
2979
|
children: doc.title
|
|
2717
2980
|
}),
|
|
2718
2981
|
doc.summary && /* @__PURE__ */ jsx22("p", {
|
|
2719
|
-
className: "
|
|
2982
|
+
className: "line-clamp-2 text-muted-foreground text-sm",
|
|
2720
2983
|
children: doc.summary
|
|
2721
2984
|
})
|
|
2722
2985
|
]
|
|
@@ -2732,66 +2995,26 @@ function FeatureDataViewDetailTemplate({
|
|
|
2732
2995
|
]
|
|
2733
2996
|
});
|
|
2734
2997
|
}
|
|
2735
|
-
// src/presentation/features/templates/
|
|
2998
|
+
// src/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.tsx
|
|
2736
2999
|
import {
|
|
2737
3000
|
Breadcrumbs as Breadcrumbs11,
|
|
2738
|
-
|
|
2739
|
-
EmptyState as EmptyState6,
|
|
2740
|
-
PageHeaderResponsive as PageHeaderResponsive12,
|
|
2741
|
-
StatusChip as StatusChip10
|
|
3001
|
+
PageHeaderResponsive as PageHeaderResponsive12
|
|
2742
3002
|
} from "@contractspec/lib.design-system";
|
|
2743
|
-
import {
|
|
2744
|
-
import { Box as Box6, HStack as HStack11, VStack as VStack14 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
3003
|
+
import { VStack as VStack14 } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
2745
3004
|
import { cn as cn16 } from "@contractspec/lib.ui-kit-web/ui/utils";
|
|
2746
|
-
import { BookOpen as BookOpen4, Code as Code5, Database as Database6, PenTool } from "lucide-react";
|
|
2747
|
-
import Link5 from "next/link";
|
|
2748
3005
|
import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2749
3006
|
"use client";
|
|
2750
|
-
function
|
|
3007
|
+
function FeaturePresentationsTemplate({
|
|
2751
3008
|
feature,
|
|
2752
|
-
formKey,
|
|
2753
|
-
form,
|
|
2754
|
-
spec,
|
|
2755
3009
|
className
|
|
2756
3010
|
}) {
|
|
2757
|
-
const formRef = form ?? feature.forms?.find((f) => f.key === formKey);
|
|
2758
|
-
const relatedDocs = useRelatedDocs(formRef?.key || "", spec?.meta?.tags);
|
|
2759
|
-
if (!formRef) {
|
|
2760
|
-
return /* @__PURE__ */ jsxs17(VStack14, {
|
|
2761
|
-
gap: "lg",
|
|
2762
|
-
className: cn16("mx-auto w-full max-w-5xl p-6", className),
|
|
2763
|
-
children: [
|
|
2764
|
-
/* @__PURE__ */ jsx23(PageHeaderResponsive12, {
|
|
2765
|
-
title: "Form Not Found",
|
|
2766
|
-
subtitle: `Form ${formKey} not found in feature ${feature.meta.key}`,
|
|
2767
|
-
breadcrumb: /* @__PURE__ */ jsx23(Breadcrumbs11, {
|
|
2768
|
-
items: [
|
|
2769
|
-
{ label: "Features", href: "/features" },
|
|
2770
|
-
{
|
|
2771
|
-
label: feature.meta.title || feature.meta.key,
|
|
2772
|
-
href: `/features/${feature.meta.key}`
|
|
2773
|
-
},
|
|
2774
|
-
{ label: "Forms" }
|
|
2775
|
-
]
|
|
2776
|
-
})
|
|
2777
|
-
}),
|
|
2778
|
-
/* @__PURE__ */ jsx23(EmptyState6, {
|
|
2779
|
-
title: "Form not found",
|
|
2780
|
-
description: `The form '${formKey}' could not be found in this feature.`,
|
|
2781
|
-
icon: /* @__PURE__ */ jsx23(PenTool, {
|
|
2782
|
-
className: "text-muted-foreground h-12 w-12"
|
|
2783
|
-
})
|
|
2784
|
-
})
|
|
2785
|
-
]
|
|
2786
|
-
});
|
|
2787
|
-
}
|
|
2788
3011
|
return /* @__PURE__ */ jsxs17(VStack14, {
|
|
2789
3012
|
gap: "lg",
|
|
2790
3013
|
className: cn16("mx-auto w-full max-w-5xl p-6", className),
|
|
2791
3014
|
children: [
|
|
2792
3015
|
/* @__PURE__ */ jsx23(PageHeaderResponsive12, {
|
|
2793
|
-
title:
|
|
2794
|
-
subtitle: `
|
|
3016
|
+
title: "Presentations",
|
|
3017
|
+
subtitle: `Presentations defined in ${feature.meta.title ?? feature.meta.key}`,
|
|
2795
3018
|
breadcrumb: /* @__PURE__ */ jsx23(Breadcrumbs11, {
|
|
2796
3019
|
items: [
|
|
2797
3020
|
{ label: "Features", href: "/features" },
|
|
@@ -2799,235 +3022,12 @@ function FeatureFormDetailTemplate({
|
|
|
2799
3022
|
label: feature.meta.title || feature.meta.key,
|
|
2800
3023
|
href: `/features/${feature.meta.key}`
|
|
2801
3024
|
},
|
|
2802
|
-
{ label: "
|
|
2803
|
-
{ label: formRef.key }
|
|
3025
|
+
{ label: "Presentations" }
|
|
2804
3026
|
]
|
|
2805
3027
|
})
|
|
2806
3028
|
}),
|
|
2807
|
-
/* @__PURE__ */
|
|
2808
|
-
|
|
2809
|
-
children: [
|
|
2810
|
-
/* @__PURE__ */ jsx23(StatusChip10, {
|
|
2811
|
-
tone: "neutral",
|
|
2812
|
-
label: formRef.key,
|
|
2813
|
-
size: "sm",
|
|
2814
|
-
icon: /* @__PURE__ */ jsx23(PenTool, {
|
|
2815
|
-
className: "h-3 w-3"
|
|
2816
|
-
})
|
|
2817
|
-
}),
|
|
2818
|
-
/* @__PURE__ */ jsx23(StatusChip10, {
|
|
2819
|
-
tone: "neutral",
|
|
2820
|
-
label: `v${formRef.version}`,
|
|
2821
|
-
size: "sm"
|
|
2822
|
-
}),
|
|
2823
|
-
spec?.meta?.stability ? /* @__PURE__ */ jsx23(StatusChip10, {
|
|
2824
|
-
tone: spec.meta.stability === "stable" ? "success" : "warning",
|
|
2825
|
-
label: spec.meta.stability,
|
|
2826
|
-
size: "sm"
|
|
2827
|
-
}) : null
|
|
2828
|
-
]
|
|
2829
|
-
}),
|
|
2830
|
-
/* @__PURE__ */ jsxs17("div", {
|
|
2831
|
-
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
2832
|
-
children: [
|
|
2833
|
-
/* @__PURE__ */ jsx23("div", {
|
|
2834
|
-
className: "space-y-6 lg:col-span-2",
|
|
2835
|
-
children: /* @__PURE__ */ jsx23(Card5, {
|
|
2836
|
-
className: "p-6",
|
|
2837
|
-
children: /* @__PURE__ */ jsxs17(VStack14, {
|
|
2838
|
-
gap: "md",
|
|
2839
|
-
children: [
|
|
2840
|
-
/* @__PURE__ */ jsxs17(HStack11, {
|
|
2841
|
-
className: "items-center gap-2 border-b pb-2",
|
|
2842
|
-
children: [
|
|
2843
|
-
/* @__PURE__ */ jsx23(Code5, {
|
|
2844
|
-
className: "text-muted-foreground h-5 w-5"
|
|
2845
|
-
}),
|
|
2846
|
-
/* @__PURE__ */ jsx23("h3", {
|
|
2847
|
-
className: "text-lg font-semibold",
|
|
2848
|
-
children: "Form Definition"
|
|
2849
|
-
})
|
|
2850
|
-
]
|
|
2851
|
-
}),
|
|
2852
|
-
spec ? /* @__PURE__ */ jsxs17(VStack14, {
|
|
2853
|
-
gap: "lg",
|
|
2854
|
-
children: [
|
|
2855
|
-
spec.meta.description && /* @__PURE__ */ jsx23("p", {
|
|
2856
|
-
className: "text-muted-foreground",
|
|
2857
|
-
children: spec.meta.description
|
|
2858
|
-
}),
|
|
2859
|
-
/* @__PURE__ */ jsxs17(Box6, {
|
|
2860
|
-
className: "flex-col gap-2",
|
|
2861
|
-
children: [
|
|
2862
|
-
/* @__PURE__ */ jsx23("span", {
|
|
2863
|
-
className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
|
|
2864
|
-
children: "Fields"
|
|
2865
|
-
}),
|
|
2866
|
-
/* @__PURE__ */ jsx23(CodeBlock5, {
|
|
2867
|
-
code: JSON.stringify(spec.fields, null, 2),
|
|
2868
|
-
language: "json"
|
|
2869
|
-
})
|
|
2870
|
-
]
|
|
2871
|
-
}),
|
|
2872
|
-
/* @__PURE__ */ jsxs17(Box6, {
|
|
2873
|
-
className: "flex-col gap-2",
|
|
2874
|
-
children: [
|
|
2875
|
-
/* @__PURE__ */ jsx23("span", {
|
|
2876
|
-
className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
|
|
2877
|
-
children: "Actions"
|
|
2878
|
-
}),
|
|
2879
|
-
/* @__PURE__ */ jsx23(CodeBlock5, {
|
|
2880
|
-
code: JSON.stringify(spec.actions, null, 2),
|
|
2881
|
-
language: "json"
|
|
2882
|
-
})
|
|
2883
|
-
]
|
|
2884
|
-
})
|
|
2885
|
-
]
|
|
2886
|
-
}) : /* @__PURE__ */ jsxs17(VStack14, {
|
|
2887
|
-
gap: "md",
|
|
2888
|
-
children: [
|
|
2889
|
-
/* @__PURE__ */ jsx23("p", {
|
|
2890
|
-
className: "text-muted-foreground",
|
|
2891
|
-
children: "Full form definition details are not available for this form reference."
|
|
2892
|
-
}),
|
|
2893
|
-
/* @__PURE__ */ jsx23(CodeBlock5, {
|
|
2894
|
-
code: JSON.stringify(formRef, null, 2),
|
|
2895
|
-
language: "json"
|
|
2896
|
-
})
|
|
2897
|
-
]
|
|
2898
|
-
})
|
|
2899
|
-
]
|
|
2900
|
-
})
|
|
2901
|
-
})
|
|
2902
|
-
}),
|
|
2903
|
-
/* @__PURE__ */ jsx23("div", {
|
|
2904
|
-
className: "space-y-6",
|
|
2905
|
-
children: /* @__PURE__ */ jsx23(Card5, {
|
|
2906
|
-
className: "p-6",
|
|
2907
|
-
children: /* @__PURE__ */ jsxs17(VStack14, {
|
|
2908
|
-
gap: "md",
|
|
2909
|
-
children: [
|
|
2910
|
-
/* @__PURE__ */ jsxs17(HStack11, {
|
|
2911
|
-
className: "items-center gap-2 border-b pb-2",
|
|
2912
|
-
children: [
|
|
2913
|
-
/* @__PURE__ */ jsx23(Database6, {
|
|
2914
|
-
className: "text-muted-foreground h-5 w-5"
|
|
2915
|
-
}),
|
|
2916
|
-
/* @__PURE__ */ jsx23("h3", {
|
|
2917
|
-
className: "text-lg font-semibold",
|
|
2918
|
-
children: "Metadata"
|
|
2919
|
-
})
|
|
2920
|
-
]
|
|
2921
|
-
}),
|
|
2922
|
-
/* @__PURE__ */ jsxs17("dl", {
|
|
2923
|
-
className: "grid grid-cols-1 gap-4 text-sm",
|
|
2924
|
-
children: [
|
|
2925
|
-
/* @__PURE__ */ jsxs17("div", {
|
|
2926
|
-
children: [
|
|
2927
|
-
/* @__PURE__ */ jsx23("dt", {
|
|
2928
|
-
className: "text-muted-foreground",
|
|
2929
|
-
children: "Key"
|
|
2930
|
-
}),
|
|
2931
|
-
/* @__PURE__ */ jsx23("dd", {
|
|
2932
|
-
className: "truncate font-medium",
|
|
2933
|
-
children: formRef.key
|
|
2934
|
-
})
|
|
2935
|
-
]
|
|
2936
|
-
}),
|
|
2937
|
-
/* @__PURE__ */ jsxs17("div", {
|
|
2938
|
-
children: [
|
|
2939
|
-
/* @__PURE__ */ jsx23("dt", {
|
|
2940
|
-
className: "text-muted-foreground",
|
|
2941
|
-
children: "Version"
|
|
2942
|
-
}),
|
|
2943
|
-
/* @__PURE__ */ jsx23("dd", {
|
|
2944
|
-
className: "font-medium",
|
|
2945
|
-
children: formRef.version
|
|
2946
|
-
})
|
|
2947
|
-
]
|
|
2948
|
-
}),
|
|
2949
|
-
spec?.meta?.owners && /* @__PURE__ */ jsxs17("div", {
|
|
2950
|
-
children: [
|
|
2951
|
-
/* @__PURE__ */ jsx23("dt", {
|
|
2952
|
-
className: "text-muted-foreground",
|
|
2953
|
-
children: "Owners"
|
|
2954
|
-
}),
|
|
2955
|
-
/* @__PURE__ */ jsx23("dd", {
|
|
2956
|
-
className: "flex flex-wrap gap-1 font-medium",
|
|
2957
|
-
children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx23(StatusChip10, {
|
|
2958
|
-
label: o,
|
|
2959
|
-
size: "sm",
|
|
2960
|
-
tone: "neutral"
|
|
2961
|
-
}, o))
|
|
2962
|
-
})
|
|
2963
|
-
]
|
|
2964
|
-
}),
|
|
2965
|
-
spec?.meta?.tags && /* @__PURE__ */ jsxs17("div", {
|
|
2966
|
-
children: [
|
|
2967
|
-
/* @__PURE__ */ jsx23("dt", {
|
|
2968
|
-
className: "text-muted-foreground",
|
|
2969
|
-
children: "Tags"
|
|
2970
|
-
}),
|
|
2971
|
-
/* @__PURE__ */ jsx23("dd", {
|
|
2972
|
-
className: "flex flex-wrap gap-1 font-medium",
|
|
2973
|
-
children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx23(StatusChip10, {
|
|
2974
|
-
label: `#${t}`,
|
|
2975
|
-
size: "sm",
|
|
2976
|
-
tone: "neutral"
|
|
2977
|
-
}, t))
|
|
2978
|
-
})
|
|
2979
|
-
]
|
|
2980
|
-
})
|
|
2981
|
-
]
|
|
2982
|
-
})
|
|
2983
|
-
]
|
|
2984
|
-
})
|
|
2985
|
-
})
|
|
2986
|
-
}),
|
|
2987
|
-
relatedDocs?.length ? /* @__PURE__ */ jsx23("div", {
|
|
2988
|
-
className: "lg:col-span-3",
|
|
2989
|
-
children: /* @__PURE__ */ jsx23(Card5, {
|
|
2990
|
-
className: "p-6",
|
|
2991
|
-
children: /* @__PURE__ */ jsxs17(VStack14, {
|
|
2992
|
-
gap: "md",
|
|
2993
|
-
children: [
|
|
2994
|
-
/* @__PURE__ */ jsxs17(HStack11, {
|
|
2995
|
-
className: "items-center gap-2 border-b pb-2",
|
|
2996
|
-
children: [
|
|
2997
|
-
/* @__PURE__ */ jsx23(BookOpen4, {
|
|
2998
|
-
className: "text-muted-foreground h-5 w-5"
|
|
2999
|
-
}),
|
|
3000
|
-
/* @__PURE__ */ jsx23("h3", {
|
|
3001
|
-
className: "text-lg font-semibold",
|
|
3002
|
-
children: "Related Documentation"
|
|
3003
|
-
})
|
|
3004
|
-
]
|
|
3005
|
-
}),
|
|
3006
|
-
/* @__PURE__ */ jsx23("div", {
|
|
3007
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
3008
|
-
children: relatedDocs.map((doc) => /* @__PURE__ */ jsx23(Link5, {
|
|
3009
|
-
href: doc.route || `/docs/${doc.id}`,
|
|
3010
|
-
className: "group block",
|
|
3011
|
-
children: /* @__PURE__ */ jsxs17("div", {
|
|
3012
|
-
className: "hover:border-primary h-full rounded-lg border p-4 transition-colors",
|
|
3013
|
-
children: [
|
|
3014
|
-
/* @__PURE__ */ jsx23("h4", {
|
|
3015
|
-
className: "group-hover:text-primary mb-1 font-semibold",
|
|
3016
|
-
children: doc.title
|
|
3017
|
-
}),
|
|
3018
|
-
doc.summary && /* @__PURE__ */ jsx23("p", {
|
|
3019
|
-
className: "text-muted-foreground line-clamp-2 text-sm",
|
|
3020
|
-
children: doc.summary
|
|
3021
|
-
})
|
|
3022
|
-
]
|
|
3023
|
-
})
|
|
3024
|
-
}, doc.id))
|
|
3025
|
-
})
|
|
3026
|
-
]
|
|
3027
|
-
})
|
|
3028
|
-
})
|
|
3029
|
-
}) : null
|
|
3030
|
-
]
|
|
3029
|
+
/* @__PURE__ */ jsx23(FeaturePresentationsList, {
|
|
3030
|
+
feature
|
|
3031
3031
|
})
|
|
3032
3032
|
]
|
|
3033
3033
|
});
|