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