@contractspec/bundle.library 3.8.10 → 3.8.12
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 +606 -594
- package/CHANGELOG.md +59 -0
- package/dist/application/context-storage/index.js +1 -28
- package/dist/application/index.js +13 -2133
- package/dist/application/mcp/cliMcp.js +4 -452
- package/dist/application/mcp/common.js +1 -193
- package/dist/application/mcp/contractsMcp.js +2 -549
- package/dist/application/mcp/contractsMcpResources.js +2 -123
- package/dist/application/mcp/contractsMcpTools.js +1 -199
- package/dist/application/mcp/docsMcp.catalog.js +3 -381
- package/dist/application/mcp/docsMcp.data.js +1 -147
- package/dist/application/mcp/docsMcp.js +6 -1039
- package/dist/application/mcp/docsMcp.prompts.js +6 -521
- package/dist/application/mcp/docsMcp.reference.js +3 -235
- package/dist/application/mcp/docsMcp.resources.js +3 -519
- package/dist/application/mcp/docsMcp.tools.js +3 -518
- package/dist/application/mcp/index.js +13 -2106
- package/dist/application/mcp/internalMcp.js +2 -410
- package/dist/application/mcp/normalizeMcpRequest.js +1 -21
- package/dist/application/mcp/providerRankingMcp.js +1 -530
- package/dist/bundles/LibraryBundle.js +1 -138
- package/dist/bundles/index.js +1 -138
- package/dist/components/docs/DocsIndexPage.js +2 -912
- package/dist/components/docs/advanced/AdvancedMCPPage.js +4 -271
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -107
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -118
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -92
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -373
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -99
- package/dist/components/docs/advanced/index.js +10 -1055
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -243
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -160
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -259
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -374
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -166
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -143
- package/dist/components/docs/architecture/index.js +20 -1340
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -245
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -230
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -245
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -202
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -254
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -339
- package/dist/components/docs/comparison/index.js +1 -1510
- package/dist/components/docs/docsManifest.js +1 -611
- package/dist/components/docs/docsManifest.test.d.ts +1 -0
- package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -103
- package/dist/components/docs/ecosystem/PluginsPage.js +13 -179
- package/dist/components/docs/ecosystem/RegistryPage.js +7 -100
- package/dist/components/docs/ecosystem/TemplatesPage.js +3 -141
- package/dist/components/docs/ecosystem/ecosystem.docblocks.js +2 -48
- package/dist/components/docs/ecosystem/index.js +23 -569
- package/dist/components/docs/examples/DocsExamplesPage.js +4 -124
- package/dist/components/docs/examples/ExampleShowcasePage.js +4 -244
- package/dist/components/docs/examples/exampleShowcaseData.js +4 -39
- package/dist/components/docs/examples/index.js +4 -330
- package/dist/components/docs/generated/docs-index.generated.js +1 -5
- package/dist/components/docs/generated/index.js +1 -74
- package/dist/components/docs/generated/loader.js +1 -74
- package/dist/components/docs/getting-started/CLIPage.js +4 -271
- package/dist/components/docs/getting-started/CompatibilityPage.js +1 -173
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +4 -134
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -194
- package/dist/components/docs/getting-started/HelloWorldPage.js +5 -183
- package/dist/components/docs/getting-started/InstallationPage.js +3 -154
- package/dist/components/docs/getting-started/StartHerePage.js +2 -129
- package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -168
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -432
- package/dist/components/docs/getting-started/getting-started.docblocks.js +4 -41
- package/dist/components/docs/getting-started/index.js +18 -1869
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -196
- package/dist/components/docs/guides/GuideConnectInRepoPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideConnectInRepoPage.js +44 -0
- package/dist/components/docs/guides/GuideContractTypesPage.js +6 -541
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -207
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.d.ts +1 -0
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +76 -0
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -209
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +70 -0
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -754
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -268
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -196
- package/dist/components/docs/guides/GuidesIndexPage.js +2 -169
- package/dist/components/docs/guides/guides.docblocks.js +11 -75
- package/dist/components/docs/guides/index.d.ts +3 -0
- package/dist/components/docs/guides/index.js +213 -2428
- package/dist/components/docs/index.js +542 -24310
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -42
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -105
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +3 -142
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -109
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -79
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +3 -146
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +5 -150
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +5 -140
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -160
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +4 -218
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +4 -300
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -111
- package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -102
- package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -124
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +3 -144
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +7 -290
- package/dist/components/docs/integrations/IntegrationsStripePage.js +6 -327
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -128
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -146
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -156
- package/dist/components/docs/integrations/index.js +52 -3100
- package/dist/components/docs/intent/ContractFirstApiPage.js +2 -126
- package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -148
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -207
- package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -201
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -144
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -126
- package/dist/components/docs/intent/index.js +15 -1135
- package/dist/components/docs/intent/intent-pages.docblocks.js +1 -201
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +6 -750
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +4 -175
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -116
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +8 -391
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +6 -302
- package/dist/components/docs/knowledge/index.js +21 -1730
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -198
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -141
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -80
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -100
- package/dist/components/docs/libraries/LibrariesContractsPage.js +2 -284
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -112
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -166
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -186
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +4 -279
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -127
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -173
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -88
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -108
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -130
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -110
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -170
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -114
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -132
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -120
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -200
- package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -116
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -273
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -134
- package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -133
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +2 -230
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -88
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -181
- package/dist/components/docs/libraries/index.js +54 -4147
- package/dist/components/docs/manifesto/ManifestoPage.js +1 -86
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -132
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -71
- package/dist/components/docs/ops/index.js +3 -202
- package/dist/components/docs/ops/ops-lifecycle.docblocks.js +3 -38
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +3 -94
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +3 -76
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +3 -76
- package/dist/components/docs/ops/ops-top.docs.js +2 -17
- package/dist/components/docs/ops/ops.docs.js +10 -302
- package/dist/components/docs/product/product.docblocks.js +5 -72
- package/dist/components/docs/reference/DocsMarkdownContent.js +2 -196
- package/dist/components/docs/reference/DocsReferenceContent.js +3 -256
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -127
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -206
- package/dist/components/docs/reference/DocsReferencePage.js +3 -265
- package/dist/components/docs/reference/docsMarkdownParser.js +2 -92
- package/dist/components/docs/reference/index.js +4 -470
- package/dist/components/docs/safety/SafetyAuditingPage.js +2 -350
- package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -359
- package/dist/components/docs/safety/SafetyOverviewPage.js +1 -101
- package/dist/components/docs/safety/SafetyPDPPage.js +2 -301
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -206
- package/dist/components/docs/safety/SafetySigningPage.js +3 -90
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -79
- package/dist/components/docs/safety/index.js +7 -1480
- package/dist/components/docs/shared/StudioPrompt.js +1 -31
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +34 -0
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -158
- package/dist/components/docs/specs/SpecsConnectPage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsConnectPage.js +8 -0
- package/dist/components/docs/specs/SpecsDataViewsPage.js +2 -260
- package/dist/components/docs/specs/SpecsModuleBundlesPage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsModuleBundlesPage.js +67 -0
- package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -372
- package/dist/components/docs/specs/SpecsOverviewPage.js +1 -186
- package/dist/components/docs/specs/SpecsPolicyPage.js +3 -420
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -325
- package/dist/components/docs/specs/index.d.ts +3 -0
- package/dist/components/docs/specs/index.js +109 -1715
- package/dist/components/docs/studio/StudioBYOKPage.js +1 -26
- package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -26
- package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -26
- package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -26
- package/dist/components/docs/studio/StudioOverviewPage.js +1 -157
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -26
- package/dist/components/docs/studio/index.js +1 -282
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -19
- package/dist/components/integrations/index.js +2 -600
- package/dist/components/integrations/molecules/IntegrationCard.js +1 -100
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -214
- package/dist/components/integrations/organisms/IntegrationSettings.js +2 -284
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -103
- package/dist/components/legal/PrivacyTemplate.js +1 -1025
- package/dist/components/legal/TermsTemplate.js +1 -941
- package/dist/components/legal/index.js +1 -1963
- package/dist/components/shared/FeatureGateNotice.js +1 -38
- package/dist/components/shared/index.js +1 -38
- package/dist/components/shell/WorkspaceHeader.js +1 -100
- package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -222
- package/dist/components/shell/WorkspaceShellRenderer.js +1 -228
- package/dist/components/shell/WorkspaceSidebar.js +1 -68
- package/dist/components/shell/index.js +1 -287
- package/dist/components/templates/engine/index.js +1 -39
- package/dist/components/templates/index.js +11 -965
- package/dist/components/templates/messaging/ConversationList.js +2 -83
- package/dist/components/templates/messaging/MessageComposer.js +4 -150
- package/dist/components/templates/messaging/MessageThread.js +3 -83
- package/dist/components/templates/messaging/MessagingWorkspace.js +5 -265
- package/dist/components/templates/messaging/index.js +5 -269
- package/dist/components/templates/recipes/LanguageSwitcher.js +1 -16
- package/dist/components/templates/recipes/RecipeCard.js +1 -80
- package/dist/components/templates/recipes/RecipeDetail.js +1 -74
- package/dist/components/templates/recipes/RecipeList.js +3 -245
- package/dist/components/templates/recipes/index.js +3 -248
- package/dist/components/templates/todos/FilterBar.js +1 -107
- package/dist/components/templates/todos/TaskForm.js +2 -158
- package/dist/components/templates/todos/TaskItem.js +1 -77
- package/dist/components/templates/todos/TaskList.js +5 -449
- package/dist/components/templates/todos/index.js +5 -452
- package/dist/config/contractspec-blueprint.js +1 -123
- package/dist/config/contractspec-branding.js +1 -44
- package/dist/config/contractspec-routes.js +1 -24
- package/dist/config/index.js +1 -126
- package/dist/features/contracts-registry.js +1 -178
- package/dist/features/docs/docs.contracts.js +1 -17
- package/dist/features/docs/index.js +1 -17
- package/dist/features/docs.feature.js +1 -33
- package/dist/features/index.js +1 -315
- package/dist/features/mcp.feature.js +1 -30
- package/dist/features/presentations.feature.js +1 -33
- package/dist/features/registry.js +1 -116
- package/dist/index.js +556 -28593
- package/dist/infrastructure/elysia/index.js +1 -35
- package/dist/infrastructure/elysia/logger.js +1 -35
- package/dist/infrastructure/index.js +1 -35
- package/dist/libs/email/client.js +1 -114
- package/dist/libs/email/contact.js +12 -165
- package/dist/libs/email/newsletter.js +6 -167
- package/dist/libs/email/types.js +0 -2
- package/dist/libs/email/utils.js +2 -8
- package/dist/libs/email/waitlist-application.js +28 -209
- package/dist/libs/email/waitlist.js +6 -167
- package/dist/libs/email.js +46 -363
- package/dist/libs/posthog/client.js +1 -63
- package/dist/libs/posthog/native.js +1 -23
- package/dist/libs/posthog/server.js +1 -13
- package/dist/libs/pricing-examples.js +1 -18
- package/dist/node/application/context-storage/index.js +1 -28
- package/dist/node/application/index.js +13 -2133
- package/dist/node/application/mcp/cliMcp.js +4 -452
- package/dist/node/application/mcp/common.js +1 -193
- package/dist/node/application/mcp/contractsMcp.js +2 -549
- package/dist/node/application/mcp/contractsMcpResources.js +2 -123
- package/dist/node/application/mcp/contractsMcpTools.js +1 -199
- package/dist/node/application/mcp/docsMcp.catalog.js +3 -381
- package/dist/node/application/mcp/docsMcp.data.js +1 -147
- package/dist/node/application/mcp/docsMcp.js +6 -1039
- package/dist/node/application/mcp/docsMcp.prompts.js +6 -521
- package/dist/node/application/mcp/docsMcp.reference.js +3 -235
- package/dist/node/application/mcp/docsMcp.resources.js +3 -519
- package/dist/node/application/mcp/docsMcp.tools.js +3 -518
- package/dist/node/application/mcp/index.js +13 -2106
- package/dist/node/application/mcp/internalMcp.js +2 -410
- package/dist/node/application/mcp/normalizeMcpRequest.js +1 -21
- package/dist/node/application/mcp/providerRankingMcp.js +1 -530
- package/dist/node/bundles/LibraryBundle.js +1 -138
- package/dist/node/bundles/index.js +1 -138
- package/dist/node/components/docs/DocsIndexPage.js +2 -912
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +4 -271
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -107
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -118
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -92
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -373
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -99
- package/dist/node/components/docs/advanced/index.js +10 -1055
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -243
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -160
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -259
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -374
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -166
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -143
- package/dist/node/components/docs/architecture/index.js +20 -1340
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -245
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -230
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -245
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -202
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -254
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -339
- package/dist/node/components/docs/comparison/index.js +1 -1510
- package/dist/node/components/docs/docsManifest.js +1 -611
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -103
- package/dist/node/components/docs/ecosystem/PluginsPage.js +13 -179
- package/dist/node/components/docs/ecosystem/RegistryPage.js +7 -100
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -141
- package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +2 -48
- package/dist/node/components/docs/ecosystem/index.js +23 -569
- package/dist/node/components/docs/examples/DocsExamplesPage.js +4 -124
- package/dist/node/components/docs/examples/ExampleShowcasePage.js +4 -244
- package/dist/node/components/docs/examples/exampleShowcaseData.js +4 -39
- package/dist/node/components/docs/examples/index.js +4 -330
- package/dist/node/components/docs/generated/docs-index.generated.js +1 -5
- package/dist/node/components/docs/generated/index.js +1 -74
- package/dist/node/components/docs/generated/loader.js +1 -74
- package/dist/node/components/docs/getting-started/CLIPage.js +4 -271
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -173
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +4 -134
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -194
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -183
- package/dist/node/components/docs/getting-started/InstallationPage.js +3 -154
- package/dist/node/components/docs/getting-started/StartHerePage.js +2 -129
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -168
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -432
- package/dist/node/components/docs/getting-started/getting-started.docblocks.js +4 -41
- package/dist/node/components/docs/getting-started/index.js +18 -1869
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -196
- package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +43 -0
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -541
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -207
- package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +75 -0
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -209
- package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +69 -0
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -754
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -268
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -196
- package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -169
- package/dist/node/components/docs/guides/guides.docblocks.js +11 -75
- package/dist/node/components/docs/guides/index.js +213 -2428
- package/dist/node/components/docs/index.js +542 -24310
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -42
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -105
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +3 -142
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -109
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -79
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +3 -146
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +5 -150
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +5 -140
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -160
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +4 -218
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +4 -300
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -111
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -102
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -124
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +3 -144
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +7 -290
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +6 -327
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -128
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -146
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -156
- package/dist/node/components/docs/integrations/index.js +52 -3100
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -126
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -148
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -207
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -201
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -144
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -126
- package/dist/node/components/docs/intent/index.js +15 -1135
- package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -201
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +6 -750
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +4 -175
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -116
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +8 -391
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +6 -302
- package/dist/node/components/docs/knowledge/index.js +21 -1730
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -198
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -141
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -80
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -100
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +2 -284
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -112
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -166
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -186
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +4 -279
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -127
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -173
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -88
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -108
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -130
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -110
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -170
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -114
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -132
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -120
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -200
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -116
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -273
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -134
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -133
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +2 -230
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -88
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -181
- package/dist/node/components/docs/libraries/index.js +54 -4147
- package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -86
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -132
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -71
- package/dist/node/components/docs/ops/index.js +3 -202
- package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +3 -38
- package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +3 -94
- package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +3 -76
- package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +3 -76
- package/dist/node/components/docs/ops/ops-top.docs.js +2 -17
- package/dist/node/components/docs/ops/ops.docs.js +10 -302
- package/dist/node/components/docs/product/product.docblocks.js +5 -72
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -196
- package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -256
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -127
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -206
- package/dist/node/components/docs/reference/DocsReferencePage.js +3 -265
- package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -92
- package/dist/node/components/docs/reference/index.js +4 -470
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -350
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -359
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -101
- package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -301
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -206
- package/dist/node/components/docs/safety/SafetySigningPage.js +3 -90
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -79
- package/dist/node/components/docs/safety/index.js +7 -1480
- package/dist/node/components/docs/shared/StudioPrompt.js +1 -31
- package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +33 -0
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -158
- package/dist/node/components/docs/specs/SpecsConnectPage.js +7 -0
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +2 -260
- package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +66 -0
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -372
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -186
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -420
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -325
- package/dist/node/components/docs/specs/index.js +109 -1715
- package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -26
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -26
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -26
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -26
- package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -157
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -26
- package/dist/node/components/docs/studio/index.js +1 -282
- package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -19
- package/dist/node/components/integrations/index.js +2 -600
- package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -100
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -214
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -284
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -103
- package/dist/node/components/legal/PrivacyTemplate.js +1 -1025
- package/dist/node/components/legal/TermsTemplate.js +1 -941
- package/dist/node/components/legal/index.js +1 -1963
- package/dist/node/components/shared/FeatureGateNotice.js +1 -38
- package/dist/node/components/shared/index.js +1 -38
- package/dist/node/components/shell/WorkspaceHeader.js +1 -100
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -222
- package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -228
- package/dist/node/components/shell/WorkspaceSidebar.js +1 -68
- package/dist/node/components/shell/index.js +1 -287
- package/dist/node/components/templates/engine/index.js +1 -39
- package/dist/node/components/templates/index.js +11 -965
- package/dist/node/components/templates/messaging/ConversationList.js +2 -83
- package/dist/node/components/templates/messaging/MessageComposer.js +4 -150
- package/dist/node/components/templates/messaging/MessageThread.js +3 -83
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -265
- package/dist/node/components/templates/messaging/index.js +5 -269
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -16
- package/dist/node/components/templates/recipes/RecipeCard.js +1 -80
- package/dist/node/components/templates/recipes/RecipeDetail.js +1 -74
- package/dist/node/components/templates/recipes/RecipeList.js +3 -245
- package/dist/node/components/templates/recipes/index.js +3 -248
- package/dist/node/components/templates/todos/FilterBar.js +1 -107
- package/dist/node/components/templates/todos/TaskForm.js +2 -158
- package/dist/node/components/templates/todos/TaskItem.js +1 -77
- package/dist/node/components/templates/todos/TaskList.js +5 -449
- package/dist/node/components/templates/todos/index.js +5 -452
- package/dist/node/config/contractspec-blueprint.js +1 -123
- package/dist/node/config/contractspec-branding.js +1 -44
- package/dist/node/config/contractspec-routes.js +1 -24
- package/dist/node/config/index.js +1 -126
- package/dist/node/features/contracts-registry.js +1 -178
- package/dist/node/features/docs/docs.contracts.js +1 -17
- package/dist/node/features/docs/index.js +1 -17
- package/dist/node/features/docs.feature.js +1 -33
- package/dist/node/features/index.js +1 -315
- package/dist/node/features/mcp.feature.js +1 -30
- package/dist/node/features/presentations.feature.js +1 -33
- package/dist/node/features/registry.js +1 -116
- package/dist/node/index.js +556 -28593
- package/dist/node/infrastructure/elysia/index.js +1 -35
- package/dist/node/infrastructure/elysia/logger.js +1 -35
- package/dist/node/infrastructure/index.js +1 -35
- package/dist/node/libs/email/client.js +1 -114
- package/dist/node/libs/email/contact.js +12 -165
- package/dist/node/libs/email/newsletter.js +6 -167
- package/dist/node/libs/email/types.js +0 -2
- package/dist/node/libs/email/utils.js +2 -8
- package/dist/node/libs/email/waitlist-application.js +28 -209
- package/dist/node/libs/email/waitlist.js +6 -167
- package/dist/node/libs/email.js +46 -363
- package/dist/node/libs/posthog/client.js +1 -63
- package/dist/node/libs/posthog/native.js +1 -23
- package/dist/node/libs/posthog/server.js +1 -13
- package/dist/node/libs/pricing-examples.js +1 -18
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -97
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -97
- package/dist/node/presentation/features/atoms/index.js +1 -97
- package/dist/node/presentation/features/hooks/index.js +1 -397
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -289
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -75
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -147
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -28
- package/dist/node/presentation/features/index.js +1 -3063
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -366
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -366
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -50
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -50
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -92
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -92
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -176
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -176
- package/dist/node/presentation/features/molecules/index.js +1 -505
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -304
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -154
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -154
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -909
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -909
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -302
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -302
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -180
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -304
- package/dist/node/presentation/features/organisms/index.js +1 -1359
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -332
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -332
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -342
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -342
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -303
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -303
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -340
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -340
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -329
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -329
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -340
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -340
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -302
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -302
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -218
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -218
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -187
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -187
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -306
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -306
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -342
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -342
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -97
- package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -97
- package/dist/presentation/features/atoms/index.js +1 -97
- package/dist/presentation/features/hooks/index.js +1 -397
- package/dist/presentation/features/hooks/useContractsRegistry.js +1 -289
- package/dist/presentation/features/hooks/useFeatureFilters.js +1 -75
- package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -147
- package/dist/presentation/features/hooks/useRelatedDocs.js +1 -28
- package/dist/presentation/features/index.js +1 -3063
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -366
- package/dist/presentation/features/molecules/FeatureCard/index.js +1 -366
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -50
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -50
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -92
- package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -92
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -176
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -176
- package/dist/presentation/features/molecules/index.js +1 -505
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -304
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -154
- package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -154
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -909
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -909
- package/dist/presentation/features/organisms/FeatureEventsList.js +1 -302
- package/dist/presentation/features/organisms/FeatureFormsList.js +1 -302
- package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -180
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -304
- package/dist/presentation/features/organisms/index.js +1 -1359
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -332
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -332
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -342
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -342
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -303
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -303
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -340
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -340
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -329
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -329
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -340
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -340
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -302
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -302
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -218
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -218
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -187
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -187
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -306
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -306
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -342
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -342
- package/package.json +103 -31
- package/src/components/docs/DocsIndexPage.tsx +55 -0
- package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +19 -0
- package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +34 -0
- package/src/components/docs/docsManifest.test.ts +70 -0
- package/src/components/docs/docsManifest.ts +71 -1
- package/src/components/docs/ecosystem/PluginsPage.tsx +24 -10
- package/src/components/docs/ecosystem/RegistryPage.tsx +11 -6
- package/src/components/docs/generated/docs-index._common.json +206 -273
- package/src/components/docs/generated/docs-index.control-plane.json +18 -0
- package/src/components/docs/generated/docs-index.defineExample.json +10 -0
- package/src/components/docs/generated/docs-index.manifest.json +22 -12
- package/src/components/docs/generated/docs-index.platform-acp.json +64 -0
- package/src/components/docs/generated/docs-index.platform-agent.json +89 -1
- package/src/components/docs/generated/docs-index.platform-context.json +48 -0
- package/src/components/docs/generated/docs-index.platform-control-plane.json +72 -0
- package/src/components/docs/generated/docs-index.platform-database.json +40 -0
- package/src/components/docs/generated/docs-index.platform-docs.json +64 -0
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +89 -1
- package/src/components/docs/generated/docs-index.pocket-family-office.json +8 -0
- package/src/components/docs/generated/docs-index.unknown.json +8 -0
- package/src/components/docs/guides/GuideConnectInRepoPage.tsx +184 -0
- package/src/components/docs/guides/GuideFirstModuleBundlePage.tsx +182 -0
- package/src/components/docs/guides/GuideHostBuilderWorkbenchPage.tsx +230 -0
- package/src/components/docs/guides/GuidesIndexPage.tsx +21 -0
- package/src/components/docs/guides/index.ts +3 -0
- package/src/components/docs/specs/SpecsBuilderControlPlanePage.tsx +210 -0
- package/src/components/docs/specs/SpecsConnectPage.tsx +162 -0
- package/src/components/docs/specs/SpecsModuleBundlesPage.tsx +223 -0
- package/src/components/docs/specs/SpecsOverlaysPage.tsx +20 -0
- package/src/components/docs/specs/SpecsOverviewPage.tsx +44 -0
- package/src/components/docs/specs/index.ts +3 -0
- package/src/components/docs/studio/StudioOverviewPage.tsx +26 -0
- package/src/infrastructure/elysia/logger.ts +11 -3
|
@@ -1,1963 +1 @@
|
|
|
1
|
-
// src/components/legal/PrivacyTemplate.tsx
|
|
2
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
var metadata = {
|
|
4
|
-
title: "Privacy Policy | ContractSpec",
|
|
5
|
-
description: "Learn how ContractSpec collects, uses, and protects your personal data in compliance with GDPR."
|
|
6
|
-
};
|
|
7
|
-
function PrivacyTemplate() {
|
|
8
|
-
return /* @__PURE__ */ jsx("main", {
|
|
9
|
-
className: "flex grow flex-col items-center justify-center pt-24",
|
|
10
|
-
children: /* @__PURE__ */ jsx("section", {
|
|
11
|
-
className: "section-padding",
|
|
12
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
13
|
-
className: "prose prose-invert mx-auto max-w-3xl",
|
|
14
|
-
children: [
|
|
15
|
-
/* @__PURE__ */ jsx("h1", {
|
|
16
|
-
className: "mb-4 font-bold text-4xl",
|
|
17
|
-
children: "Privacy Policy"
|
|
18
|
-
}),
|
|
19
|
-
/* @__PURE__ */ jsx("p", {
|
|
20
|
-
className: "mb-8 text-muted-foreground",
|
|
21
|
-
children: "Last updated: December 18, 2025"
|
|
22
|
-
}),
|
|
23
|
-
/* @__PURE__ */ jsxs("section", {
|
|
24
|
-
className: "space-y-4",
|
|
25
|
-
children: [
|
|
26
|
-
/* @__PURE__ */ jsx("h2", {
|
|
27
|
-
className: "font-bold text-2xl text-foreground",
|
|
28
|
-
children: "1. Who We Are"
|
|
29
|
-
}),
|
|
30
|
-
/* @__PURE__ */ jsxs("p", {
|
|
31
|
-
className: "text-muted-foreground",
|
|
32
|
-
children: [
|
|
33
|
-
/* @__PURE__ */ jsx("strong", {
|
|
34
|
-
className: "text-foreground",
|
|
35
|
-
children: "ContractSpec"
|
|
36
|
-
}),
|
|
37
|
-
" is a brand of",
|
|
38
|
-
" ",
|
|
39
|
-
/* @__PURE__ */ jsx("strong", {
|
|
40
|
-
className: "text-foreground",
|
|
41
|
-
children: "CHAMAN VENTURES"
|
|
42
|
-
}),
|
|
43
|
-
", a simplified joint-stock company (SASU) registered in France."
|
|
44
|
-
]
|
|
45
|
-
}),
|
|
46
|
-
/* @__PURE__ */ jsxs("div", {
|
|
47
|
-
className: "rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",
|
|
48
|
-
children: [
|
|
49
|
-
/* @__PURE__ */ jsx("p", {
|
|
50
|
-
className: "mb-2",
|
|
51
|
-
children: /* @__PURE__ */ jsx("strong", {
|
|
52
|
-
className: "text-foreground",
|
|
53
|
-
children: "Data Controller:"
|
|
54
|
-
})
|
|
55
|
-
}),
|
|
56
|
-
/* @__PURE__ */ jsxs("ul", {
|
|
57
|
-
className: "list-none space-y-1 pl-0",
|
|
58
|
-
children: [
|
|
59
|
-
/* @__PURE__ */ jsx("li", {
|
|
60
|
-
children: "CHAMAN VENTURES, SASU"
|
|
61
|
-
}),
|
|
62
|
-
/* @__PURE__ */ jsx("li", {
|
|
63
|
-
children: "RCS Paris • SIREN 989 498 902"
|
|
64
|
-
}),
|
|
65
|
-
/* @__PURE__ */ jsx("li", {
|
|
66
|
-
children: "229 rue Saint-Honoré, 75001 Paris, France"
|
|
67
|
-
}),
|
|
68
|
-
/* @__PURE__ */ jsxs("li", {
|
|
69
|
-
children: [
|
|
70
|
-
"Contact:",
|
|
71
|
-
" ",
|
|
72
|
-
/* @__PURE__ */ jsx("a", {
|
|
73
|
-
href: "mailto:privacy@contractspec.io",
|
|
74
|
-
className: "text-primary hover:underline",
|
|
75
|
-
children: "privacy@contractspec.io"
|
|
76
|
-
})
|
|
77
|
-
]
|
|
78
|
-
})
|
|
79
|
-
]
|
|
80
|
-
})
|
|
81
|
-
]
|
|
82
|
-
}),
|
|
83
|
-
/* @__PURE__ */ jsx("p", {
|
|
84
|
-
className: "text-muted-foreground",
|
|
85
|
-
children: "We are responsible for deciding how we hold and use personal data about you. We are required under data protection legislation to notify you of the information contained in this privacy policy."
|
|
86
|
-
})
|
|
87
|
-
]
|
|
88
|
-
}),
|
|
89
|
-
/* @__PURE__ */ jsxs("section", {
|
|
90
|
-
className: "mt-10 space-y-4",
|
|
91
|
-
children: [
|
|
92
|
-
/* @__PURE__ */ jsx("h2", {
|
|
93
|
-
className: "font-bold text-2xl text-foreground",
|
|
94
|
-
children: "2. What This Policy Covers"
|
|
95
|
-
}),
|
|
96
|
-
/* @__PURE__ */ jsx("p", {
|
|
97
|
-
className: "text-muted-foreground",
|
|
98
|
-
children: "This privacy policy explains:"
|
|
99
|
-
}),
|
|
100
|
-
/* @__PURE__ */ jsxs("ul", {
|
|
101
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
102
|
-
children: [
|
|
103
|
-
/* @__PURE__ */ jsx("li", {
|
|
104
|
-
children: "What personal data we collect through the ContractSpec website and services"
|
|
105
|
-
}),
|
|
106
|
-
/* @__PURE__ */ jsx("li", {
|
|
107
|
-
children: "Why we collect and process your data"
|
|
108
|
-
}),
|
|
109
|
-
/* @__PURE__ */ jsx("li", {
|
|
110
|
-
children: "How we store and protect your data"
|
|
111
|
-
}),
|
|
112
|
-
/* @__PURE__ */ jsx("li", {
|
|
113
|
-
children: "Who we may share your data with"
|
|
114
|
-
}),
|
|
115
|
-
/* @__PURE__ */ jsx("li", {
|
|
116
|
-
children: "Your rights under the General Data Protection Regulation (GDPR)"
|
|
117
|
-
})
|
|
118
|
-
]
|
|
119
|
-
}),
|
|
120
|
-
/* @__PURE__ */ jsx("p", {
|
|
121
|
-
className: "text-muted-foreground",
|
|
122
|
-
children: "This policy applies to visitors of our website, users who sign up for our waitlist or contact us, and customers who use our services."
|
|
123
|
-
})
|
|
124
|
-
]
|
|
125
|
-
}),
|
|
126
|
-
/* @__PURE__ */ jsxs("section", {
|
|
127
|
-
className: "mt-10 space-y-4",
|
|
128
|
-
children: [
|
|
129
|
-
/* @__PURE__ */ jsx("h2", {
|
|
130
|
-
className: "font-bold text-2xl text-foreground",
|
|
131
|
-
children: "3. Data We Collect"
|
|
132
|
-
}),
|
|
133
|
-
/* @__PURE__ */ jsx("p", {
|
|
134
|
-
className: "text-muted-foreground",
|
|
135
|
-
children: "We collect different types of data depending on how you interact with ContractSpec:"
|
|
136
|
-
}),
|
|
137
|
-
/* @__PURE__ */ jsx("div", {
|
|
138
|
-
className: "overflow-x-auto",
|
|
139
|
-
children: /* @__PURE__ */ jsxs("table", {
|
|
140
|
-
className: "w-full border-collapse text-muted-foreground text-sm",
|
|
141
|
-
children: [
|
|
142
|
-
/* @__PURE__ */ jsx("thead", {
|
|
143
|
-
children: /* @__PURE__ */ jsxs("tr", {
|
|
144
|
-
className: "border-white/20 border-b",
|
|
145
|
-
children: [
|
|
146
|
-
/* @__PURE__ */ jsx("th", {
|
|
147
|
-
className: "py-3 pr-4 text-left font-semibold text-foreground",
|
|
148
|
-
children: "Category"
|
|
149
|
-
}),
|
|
150
|
-
/* @__PURE__ */ jsx("th", {
|
|
151
|
-
className: "py-3 pr-4 text-left font-semibold text-foreground",
|
|
152
|
-
children: "Data Collected"
|
|
153
|
-
}),
|
|
154
|
-
/* @__PURE__ */ jsx("th", {
|
|
155
|
-
className: "py-3 text-left font-semibold text-foreground",
|
|
156
|
-
children: "When Collected"
|
|
157
|
-
})
|
|
158
|
-
]
|
|
159
|
-
})
|
|
160
|
-
}),
|
|
161
|
-
/* @__PURE__ */ jsxs("tbody", {
|
|
162
|
-
children: [
|
|
163
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
164
|
-
className: "border-white/10 border-b",
|
|
165
|
-
children: [
|
|
166
|
-
/* @__PURE__ */ jsx("td", {
|
|
167
|
-
className: "py-3 pr-4 font-medium",
|
|
168
|
-
children: "Website Analytics"
|
|
169
|
-
}),
|
|
170
|
-
/* @__PURE__ */ jsx("td", {
|
|
171
|
-
className: "py-3 pr-4",
|
|
172
|
-
children: "Page views, click events, device type, browser, approximate location (country level), session duration, referral source"
|
|
173
|
-
}),
|
|
174
|
-
/* @__PURE__ */ jsx("td", {
|
|
175
|
-
className: "py-3",
|
|
176
|
-
children: "When browsing our website (with consent in EU/EEA)"
|
|
177
|
-
})
|
|
178
|
-
]
|
|
179
|
-
}),
|
|
180
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
181
|
-
className: "border-white/10 border-b",
|
|
182
|
-
children: [
|
|
183
|
-
/* @__PURE__ */ jsx("td", {
|
|
184
|
-
className: "py-3 pr-4 font-medium",
|
|
185
|
-
children: "Contact / Waitlist"
|
|
186
|
-
}),
|
|
187
|
-
/* @__PURE__ */ jsx("td", {
|
|
188
|
-
className: "py-3 pr-4",
|
|
189
|
-
children: "Name, email address, message content"
|
|
190
|
-
}),
|
|
191
|
-
/* @__PURE__ */ jsx("td", {
|
|
192
|
-
className: "py-3",
|
|
193
|
-
children: "When you submit a form or join our waitlist"
|
|
194
|
-
})
|
|
195
|
-
]
|
|
196
|
-
}),
|
|
197
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
198
|
-
className: "border-white/10 border-b",
|
|
199
|
-
children: [
|
|
200
|
-
/* @__PURE__ */ jsx("td", {
|
|
201
|
-
className: "py-3 pr-4 font-medium",
|
|
202
|
-
children: "Account Data"
|
|
203
|
-
}),
|
|
204
|
-
/* @__PURE__ */ jsxs("td", {
|
|
205
|
-
className: "py-3 pr-4",
|
|
206
|
-
children: [
|
|
207
|
-
/* @__PURE__ */ jsx("em", {
|
|
208
|
-
children: "Not yet applicable"
|
|
209
|
-
}),
|
|
210
|
-
" — We do not currently offer user accounts. This section will be updated when accounts are introduced."
|
|
211
|
-
]
|
|
212
|
-
}),
|
|
213
|
-
/* @__PURE__ */ jsx("td", {
|
|
214
|
-
className: "py-3",
|
|
215
|
-
children: "—"
|
|
216
|
-
})
|
|
217
|
-
]
|
|
218
|
-
}),
|
|
219
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
220
|
-
className: "border-white/10 border-b",
|
|
221
|
-
children: [
|
|
222
|
-
/* @__PURE__ */ jsx("td", {
|
|
223
|
-
className: "py-3 pr-4 font-medium",
|
|
224
|
-
children: "Billing Data"
|
|
225
|
-
}),
|
|
226
|
-
/* @__PURE__ */ jsxs("td", {
|
|
227
|
-
className: "py-3 pr-4",
|
|
228
|
-
children: [
|
|
229
|
-
/* @__PURE__ */ jsx("em", {
|
|
230
|
-
children: "Not yet applicable"
|
|
231
|
-
}),
|
|
232
|
-
" — We do not currently process payments. This section will be updated when billing is introduced."
|
|
233
|
-
]
|
|
234
|
-
}),
|
|
235
|
-
/* @__PURE__ */ jsx("td", {
|
|
236
|
-
className: "py-3",
|
|
237
|
-
children: "—"
|
|
238
|
-
})
|
|
239
|
-
]
|
|
240
|
-
})
|
|
241
|
-
]
|
|
242
|
-
})
|
|
243
|
-
]
|
|
244
|
-
})
|
|
245
|
-
})
|
|
246
|
-
]
|
|
247
|
-
}),
|
|
248
|
-
/* @__PURE__ */ jsxs("section", {
|
|
249
|
-
className: "mt-10 space-y-4",
|
|
250
|
-
children: [
|
|
251
|
-
/* @__PURE__ */ jsx("h2", {
|
|
252
|
-
className: "font-bold text-2xl text-foreground",
|
|
253
|
-
children: "4. Why We Process Data (Purposes & Legal Bases)"
|
|
254
|
-
}),
|
|
255
|
-
/* @__PURE__ */ jsx("p", {
|
|
256
|
-
className: "text-muted-foreground",
|
|
257
|
-
children: "Under GDPR, we must have a lawful basis for processing your personal data. We rely on the following:"
|
|
258
|
-
}),
|
|
259
|
-
/* @__PURE__ */ jsx("div", {
|
|
260
|
-
className: "overflow-x-auto",
|
|
261
|
-
children: /* @__PURE__ */ jsxs("table", {
|
|
262
|
-
className: "w-full border-collapse text-muted-foreground text-sm",
|
|
263
|
-
children: [
|
|
264
|
-
/* @__PURE__ */ jsx("thead", {
|
|
265
|
-
children: /* @__PURE__ */ jsxs("tr", {
|
|
266
|
-
className: "border-white/20 border-b",
|
|
267
|
-
children: [
|
|
268
|
-
/* @__PURE__ */ jsx("th", {
|
|
269
|
-
className: "py-3 pr-4 text-left font-semibold text-foreground",
|
|
270
|
-
children: "Purpose"
|
|
271
|
-
}),
|
|
272
|
-
/* @__PURE__ */ jsx("th", {
|
|
273
|
-
className: "py-3 pr-4 text-left font-semibold text-foreground",
|
|
274
|
-
children: "Legal Basis"
|
|
275
|
-
}),
|
|
276
|
-
/* @__PURE__ */ jsx("th", {
|
|
277
|
-
className: "py-3 text-left font-semibold text-foreground",
|
|
278
|
-
children: "Details"
|
|
279
|
-
})
|
|
280
|
-
]
|
|
281
|
-
})
|
|
282
|
-
}),
|
|
283
|
-
/* @__PURE__ */ jsxs("tbody", {
|
|
284
|
-
children: [
|
|
285
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
286
|
-
className: "border-white/10 border-b",
|
|
287
|
-
children: [
|
|
288
|
-
/* @__PURE__ */ jsx("td", {
|
|
289
|
-
className: "py-3 pr-4 font-medium",
|
|
290
|
-
children: "Website operation & security"
|
|
291
|
-
}),
|
|
292
|
-
/* @__PURE__ */ jsx("td", {
|
|
293
|
-
className: "py-3 pr-4",
|
|
294
|
-
children: "Legitimate interest"
|
|
295
|
-
}),
|
|
296
|
-
/* @__PURE__ */ jsx("td", {
|
|
297
|
-
className: "py-3",
|
|
298
|
-
children: "Ensuring our website functions correctly, preventing abuse, and maintaining security"
|
|
299
|
-
})
|
|
300
|
-
]
|
|
301
|
-
}),
|
|
302
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
303
|
-
className: "border-white/10 border-b",
|
|
304
|
-
children: [
|
|
305
|
-
/* @__PURE__ */ jsx("td", {
|
|
306
|
-
className: "py-3 pr-4 font-medium",
|
|
307
|
-
children: "Analytics & improvement"
|
|
308
|
-
}),
|
|
309
|
-
/* @__PURE__ */ jsx("td", {
|
|
310
|
-
className: "py-3 pr-4",
|
|
311
|
-
children: "Consent"
|
|
312
|
-
}),
|
|
313
|
-
/* @__PURE__ */ jsx("td", {
|
|
314
|
-
className: "py-3",
|
|
315
|
-
children: "Understanding how users interact with our site to improve our services (gated behind consent in EU/EEA)"
|
|
316
|
-
})
|
|
317
|
-
]
|
|
318
|
-
}),
|
|
319
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
320
|
-
className: "border-white/10 border-b",
|
|
321
|
-
children: [
|
|
322
|
-
/* @__PURE__ */ jsx("td", {
|
|
323
|
-
className: "py-3 pr-4 font-medium",
|
|
324
|
-
children: "Responding to enquiries"
|
|
325
|
-
}),
|
|
326
|
-
/* @__PURE__ */ jsx("td", {
|
|
327
|
-
className: "py-3 pr-4",
|
|
328
|
-
children: "Legitimate interest / Contract"
|
|
329
|
-
}),
|
|
330
|
-
/* @__PURE__ */ jsx("td", {
|
|
331
|
-
className: "py-3",
|
|
332
|
-
children: "Responding to your questions, processing waitlist requests, or pre-contractual discussions"
|
|
333
|
-
})
|
|
334
|
-
]
|
|
335
|
-
}),
|
|
336
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
337
|
-
className: "border-white/10 border-b",
|
|
338
|
-
children: [
|
|
339
|
-
/* @__PURE__ */ jsx("td", {
|
|
340
|
-
className: "py-3 pr-4 font-medium",
|
|
341
|
-
children: "Service delivery"
|
|
342
|
-
}),
|
|
343
|
-
/* @__PURE__ */ jsx("td", {
|
|
344
|
-
className: "py-3 pr-4",
|
|
345
|
-
children: "Contract"
|
|
346
|
-
}),
|
|
347
|
-
/* @__PURE__ */ jsx("td", {
|
|
348
|
-
className: "py-3",
|
|
349
|
-
children: "If/when you become a customer, processing your data is necessary to fulfil our contractual obligations"
|
|
350
|
-
})
|
|
351
|
-
]
|
|
352
|
-
}),
|
|
353
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
354
|
-
className: "border-white/10 border-b",
|
|
355
|
-
children: [
|
|
356
|
-
/* @__PURE__ */ jsx("td", {
|
|
357
|
-
className: "py-3 pr-4 font-medium",
|
|
358
|
-
children: "Legal compliance"
|
|
359
|
-
}),
|
|
360
|
-
/* @__PURE__ */ jsx("td", {
|
|
361
|
-
className: "py-3 pr-4",
|
|
362
|
-
children: "Legal obligation"
|
|
363
|
-
}),
|
|
364
|
-
/* @__PURE__ */ jsx("td", {
|
|
365
|
-
className: "py-3",
|
|
366
|
-
children: "Complying with applicable laws, regulations, or legal processes"
|
|
367
|
-
})
|
|
368
|
-
]
|
|
369
|
-
})
|
|
370
|
-
]
|
|
371
|
-
})
|
|
372
|
-
]
|
|
373
|
-
})
|
|
374
|
-
})
|
|
375
|
-
]
|
|
376
|
-
}),
|
|
377
|
-
/* @__PURE__ */ jsxs("section", {
|
|
378
|
-
className: "mt-10 space-y-4",
|
|
379
|
-
children: [
|
|
380
|
-
/* @__PURE__ */ jsx("h2", {
|
|
381
|
-
className: "font-bold text-2xl text-foreground",
|
|
382
|
-
children: "5. Cookies & Tracking"
|
|
383
|
-
}),
|
|
384
|
-
/* @__PURE__ */ jsxs("p", {
|
|
385
|
-
className: "text-muted-foreground",
|
|
386
|
-
children: [
|
|
387
|
-
"We use ",
|
|
388
|
-
/* @__PURE__ */ jsx("strong", {
|
|
389
|
-
className: "text-foreground",
|
|
390
|
-
children: "PostHog"
|
|
391
|
-
}),
|
|
392
|
-
" for product analytics to understand how visitors use our website. PostHog may use cookies or similar technologies to collect this information."
|
|
393
|
-
]
|
|
394
|
-
}),
|
|
395
|
-
/* @__PURE__ */ jsx("h3", {
|
|
396
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
397
|
-
children: "Consent in the EU/EEA"
|
|
398
|
-
}),
|
|
399
|
-
/* @__PURE__ */ jsx("p", {
|
|
400
|
-
className: "text-muted-foreground",
|
|
401
|
-
children: "If you are located in the European Union or European Economic Area, we gate analytics tracking behind your explicit consent. Analytics cookies will not be set until you opt-in through our cookie consent mechanism."
|
|
402
|
-
}),
|
|
403
|
-
/* @__PURE__ */ jsx("h3", {
|
|
404
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
405
|
-
children: "Withdrawing Consent / Opting Out"
|
|
406
|
-
}),
|
|
407
|
-
/* @__PURE__ */ jsx("p", {
|
|
408
|
-
className: "text-muted-foreground",
|
|
409
|
-
children: "You can withdraw consent or opt out at any time:"
|
|
410
|
-
}),
|
|
411
|
-
/* @__PURE__ */ jsxs("ul", {
|
|
412
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
413
|
-
children: [
|
|
414
|
-
/* @__PURE__ */ jsxs("li", {
|
|
415
|
-
children: [
|
|
416
|
-
/* @__PURE__ */ jsx("strong", {
|
|
417
|
-
children: "Cookie settings:"
|
|
418
|
-
}),
|
|
419
|
-
" Use the cookie preferences link in our website footer to manage your consent"
|
|
420
|
-
]
|
|
421
|
-
}),
|
|
422
|
-
/* @__PURE__ */ jsxs("li", {
|
|
423
|
-
children: [
|
|
424
|
-
/* @__PURE__ */ jsx("strong", {
|
|
425
|
-
children: "Browser settings:"
|
|
426
|
-
}),
|
|
427
|
-
" Configure your browser to reject cookies or alert you when cookies are being set"
|
|
428
|
-
]
|
|
429
|
-
}),
|
|
430
|
-
/* @__PURE__ */ jsxs("li", {
|
|
431
|
-
children: [
|
|
432
|
-
/* @__PURE__ */ jsx("strong", {
|
|
433
|
-
children: "PostHog opt-out:"
|
|
434
|
-
}),
|
|
435
|
-
' PostHog respects "Do Not Track" browser signals where applicable'
|
|
436
|
-
]
|
|
437
|
-
})
|
|
438
|
-
]
|
|
439
|
-
}),
|
|
440
|
-
/* @__PURE__ */ jsx("p", {
|
|
441
|
-
className: "text-muted-foreground",
|
|
442
|
-
children: "Note: Rejecting analytics cookies will not affect your ability to use our website."
|
|
443
|
-
})
|
|
444
|
-
]
|
|
445
|
-
}),
|
|
446
|
-
/* @__PURE__ */ jsxs("section", {
|
|
447
|
-
className: "mt-10 space-y-4",
|
|
448
|
-
children: [
|
|
449
|
-
/* @__PURE__ */ jsx("h2", {
|
|
450
|
-
className: "font-bold text-2xl text-foreground",
|
|
451
|
-
children: "6. Sub-processors & Recipients"
|
|
452
|
-
}),
|
|
453
|
-
/* @__PURE__ */ jsx("p", {
|
|
454
|
-
className: "text-muted-foreground",
|
|
455
|
-
children: "We share data with the following third-party service providers who process data on our behalf:"
|
|
456
|
-
}),
|
|
457
|
-
/* @__PURE__ */ jsx("div", {
|
|
458
|
-
className: "overflow-x-auto",
|
|
459
|
-
children: /* @__PURE__ */ jsxs("table", {
|
|
460
|
-
className: "w-full border-collapse text-muted-foreground text-sm",
|
|
461
|
-
children: [
|
|
462
|
-
/* @__PURE__ */ jsx("thead", {
|
|
463
|
-
children: /* @__PURE__ */ jsxs("tr", {
|
|
464
|
-
className: "border-white/20 border-b",
|
|
465
|
-
children: [
|
|
466
|
-
/* @__PURE__ */ jsx("th", {
|
|
467
|
-
className: "py-3 pr-4 text-left font-semibold text-foreground",
|
|
468
|
-
children: "Provider"
|
|
469
|
-
}),
|
|
470
|
-
/* @__PURE__ */ jsx("th", {
|
|
471
|
-
className: "py-3 pr-4 text-left font-semibold text-foreground",
|
|
472
|
-
children: "Purpose"
|
|
473
|
-
}),
|
|
474
|
-
/* @__PURE__ */ jsx("th", {
|
|
475
|
-
className: "py-3 text-left font-semibold text-foreground",
|
|
476
|
-
children: "Location"
|
|
477
|
-
})
|
|
478
|
-
]
|
|
479
|
-
})
|
|
480
|
-
}),
|
|
481
|
-
/* @__PURE__ */ jsxs("tbody", {
|
|
482
|
-
children: [
|
|
483
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
484
|
-
className: "border-white/10 border-b",
|
|
485
|
-
children: [
|
|
486
|
-
/* @__PURE__ */ jsx("td", {
|
|
487
|
-
className: "py-3 pr-4 font-medium",
|
|
488
|
-
children: "PostHog"
|
|
489
|
-
}),
|
|
490
|
-
/* @__PURE__ */ jsx("td", {
|
|
491
|
-
className: "py-3 pr-4",
|
|
492
|
-
children: "Product analytics"
|
|
493
|
-
}),
|
|
494
|
-
/* @__PURE__ */ jsx("td", {
|
|
495
|
-
className: "py-3",
|
|
496
|
-
children: "EU (PostHog Cloud EU) or US"
|
|
497
|
-
})
|
|
498
|
-
]
|
|
499
|
-
}),
|
|
500
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
501
|
-
className: "border-white/10 border-b",
|
|
502
|
-
children: [
|
|
503
|
-
/* @__PURE__ */ jsx("td", {
|
|
504
|
-
className: "py-3 pr-4 font-medium",
|
|
505
|
-
children: "Vercel"
|
|
506
|
-
}),
|
|
507
|
-
/* @__PURE__ */ jsx("td", {
|
|
508
|
-
className: "py-3 pr-4",
|
|
509
|
-
children: "Website hosting & CDN"
|
|
510
|
-
}),
|
|
511
|
-
/* @__PURE__ */ jsx("td", {
|
|
512
|
-
className: "py-3",
|
|
513
|
-
children: "Global (including EU regions)"
|
|
514
|
-
})
|
|
515
|
-
]
|
|
516
|
-
}),
|
|
517
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
518
|
-
className: "border-white/10 border-b",
|
|
519
|
-
children: [
|
|
520
|
-
/* @__PURE__ */ jsx("td", {
|
|
521
|
-
className: "py-3 pr-4 font-medium",
|
|
522
|
-
children: "Scaleway"
|
|
523
|
-
}),
|
|
524
|
-
/* @__PURE__ */ jsx("td", {
|
|
525
|
-
className: "py-3 pr-4",
|
|
526
|
-
children: "Cloud infrastructure"
|
|
527
|
-
}),
|
|
528
|
-
/* @__PURE__ */ jsx("td", {
|
|
529
|
-
className: "py-3",
|
|
530
|
-
children: "France / EU"
|
|
531
|
-
})
|
|
532
|
-
]
|
|
533
|
-
}),
|
|
534
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
535
|
-
className: "border-white/10 border-b",
|
|
536
|
-
children: [
|
|
537
|
-
/* @__PURE__ */ jsxs("td", {
|
|
538
|
-
className: "py-3 pr-4 font-medium",
|
|
539
|
-
children: [
|
|
540
|
-
"Email provider ",
|
|
541
|
-
/* @__PURE__ */ jsx("em", {
|
|
542
|
-
children: "(TBD)"
|
|
543
|
-
})
|
|
544
|
-
]
|
|
545
|
-
}),
|
|
546
|
-
/* @__PURE__ */ jsx("td", {
|
|
547
|
-
className: "py-3 pr-4",
|
|
548
|
-
children: "Transactional & marketing emails"
|
|
549
|
-
}),
|
|
550
|
-
/* @__PURE__ */ jsx("td", {
|
|
551
|
-
className: "py-3",
|
|
552
|
-
children: /* @__PURE__ */ jsx("em", {
|
|
553
|
-
children: "To be confirmed"
|
|
554
|
-
})
|
|
555
|
-
})
|
|
556
|
-
]
|
|
557
|
-
}),
|
|
558
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
559
|
-
className: "border-white/10 border-b",
|
|
560
|
-
children: [
|
|
561
|
-
/* @__PURE__ */ jsxs("td", {
|
|
562
|
-
className: "py-3 pr-4 font-medium",
|
|
563
|
-
children: [
|
|
564
|
-
"Error tracking ",
|
|
565
|
-
/* @__PURE__ */ jsx("em", {
|
|
566
|
-
children: "(TBD)"
|
|
567
|
-
})
|
|
568
|
-
]
|
|
569
|
-
}),
|
|
570
|
-
/* @__PURE__ */ jsx("td", {
|
|
571
|
-
className: "py-3 pr-4",
|
|
572
|
-
children: "Application error monitoring"
|
|
573
|
-
}),
|
|
574
|
-
/* @__PURE__ */ jsx("td", {
|
|
575
|
-
className: "py-3",
|
|
576
|
-
children: /* @__PURE__ */ jsx("em", {
|
|
577
|
-
children: "To be confirmed"
|
|
578
|
-
})
|
|
579
|
-
})
|
|
580
|
-
]
|
|
581
|
-
}),
|
|
582
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
583
|
-
className: "border-white/10 border-b",
|
|
584
|
-
children: [
|
|
585
|
-
/* @__PURE__ */ jsxs("td", {
|
|
586
|
-
className: "py-3 pr-4 font-medium",
|
|
587
|
-
children: [
|
|
588
|
-
"Payment processor ",
|
|
589
|
-
/* @__PURE__ */ jsx("em", {
|
|
590
|
-
children: "(TBD)"
|
|
591
|
-
})
|
|
592
|
-
]
|
|
593
|
-
}),
|
|
594
|
-
/* @__PURE__ */ jsx("td", {
|
|
595
|
-
className: "py-3 pr-4",
|
|
596
|
-
children: "Billing & subscription management"
|
|
597
|
-
}),
|
|
598
|
-
/* @__PURE__ */ jsx("td", {
|
|
599
|
-
className: "py-3",
|
|
600
|
-
children: /* @__PURE__ */ jsx("em", {
|
|
601
|
-
children: "To be confirmed"
|
|
602
|
-
})
|
|
603
|
-
})
|
|
604
|
-
]
|
|
605
|
-
})
|
|
606
|
-
]
|
|
607
|
-
})
|
|
608
|
-
]
|
|
609
|
-
})
|
|
610
|
-
}),
|
|
611
|
-
/* @__PURE__ */ jsx("p", {
|
|
612
|
-
className: "mt-4 text-muted-foreground",
|
|
613
|
-
children: "We carefully select our sub-processors and require them to maintain appropriate security measures and only process data according to our instructions."
|
|
614
|
-
})
|
|
615
|
-
]
|
|
616
|
-
}),
|
|
617
|
-
/* @__PURE__ */ jsxs("section", {
|
|
618
|
-
className: "mt-10 space-y-4",
|
|
619
|
-
children: [
|
|
620
|
-
/* @__PURE__ */ jsx("h2", {
|
|
621
|
-
className: "font-bold text-2xl text-foreground",
|
|
622
|
-
children: "7. International Data Transfers"
|
|
623
|
-
}),
|
|
624
|
-
/* @__PURE__ */ jsx("p", {
|
|
625
|
-
className: "text-muted-foreground",
|
|
626
|
-
children: "As a France-based company, we aim to keep your data within the European Union wherever possible."
|
|
627
|
-
}),
|
|
628
|
-
/* @__PURE__ */ jsx("p", {
|
|
629
|
-
className: "text-muted-foreground",
|
|
630
|
-
children: "However, some of our service providers may process data outside the EU/EEA. When this occurs, we ensure appropriate safeguards are in place, such as:"
|
|
631
|
-
}),
|
|
632
|
-
/* @__PURE__ */ jsxs("ul", {
|
|
633
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
634
|
-
children: [
|
|
635
|
-
/* @__PURE__ */ jsxs("li", {
|
|
636
|
-
children: [
|
|
637
|
-
/* @__PURE__ */ jsx("strong", {
|
|
638
|
-
children: "Standard Contractual Clauses (SCCs)"
|
|
639
|
-
}),
|
|
640
|
-
" approved by the European Commission"
|
|
641
|
-
]
|
|
642
|
-
}),
|
|
643
|
-
/* @__PURE__ */ jsxs("li", {
|
|
644
|
-
children: [
|
|
645
|
-
/* @__PURE__ */ jsx("strong", {
|
|
646
|
-
children: "Adequacy decisions"
|
|
647
|
-
}),
|
|
648
|
-
" where the recipient country has been deemed to provide adequate protection"
|
|
649
|
-
]
|
|
650
|
-
}),
|
|
651
|
-
/* @__PURE__ */ jsxs("li", {
|
|
652
|
-
children: [
|
|
653
|
-
/* @__PURE__ */ jsx("strong", {
|
|
654
|
-
children: "Binding Corporate Rules"
|
|
655
|
-
}),
|
|
656
|
-
" where applicable"
|
|
657
|
-
]
|
|
658
|
-
})
|
|
659
|
-
]
|
|
660
|
-
}),
|
|
661
|
-
/* @__PURE__ */ jsxs("p", {
|
|
662
|
-
className: "text-muted-foreground",
|
|
663
|
-
children: [
|
|
664
|
-
"You may request more information about these safeguards by contacting us at",
|
|
665
|
-
" ",
|
|
666
|
-
/* @__PURE__ */ jsx("a", {
|
|
667
|
-
href: "mailto:privacy@contractspec.io",
|
|
668
|
-
className: "text-primary hover:underline",
|
|
669
|
-
children: "privacy@contractspec.io"
|
|
670
|
-
}),
|
|
671
|
-
"."
|
|
672
|
-
]
|
|
673
|
-
})
|
|
674
|
-
]
|
|
675
|
-
}),
|
|
676
|
-
/* @__PURE__ */ jsxs("section", {
|
|
677
|
-
className: "mt-10 space-y-4",
|
|
678
|
-
children: [
|
|
679
|
-
/* @__PURE__ */ jsx("h2", {
|
|
680
|
-
className: "font-bold text-2xl text-foreground",
|
|
681
|
-
children: "8. Data Retention"
|
|
682
|
-
}),
|
|
683
|
-
/* @__PURE__ */ jsx("p", {
|
|
684
|
-
className: "text-muted-foreground",
|
|
685
|
-
children: "We retain your personal data only for as long as necessary to fulfil the purposes for which it was collected:"
|
|
686
|
-
}),
|
|
687
|
-
/* @__PURE__ */ jsx("div", {
|
|
688
|
-
className: "overflow-x-auto",
|
|
689
|
-
children: /* @__PURE__ */ jsxs("table", {
|
|
690
|
-
className: "w-full border-collapse text-muted-foreground text-sm",
|
|
691
|
-
children: [
|
|
692
|
-
/* @__PURE__ */ jsx("thead", {
|
|
693
|
-
children: /* @__PURE__ */ jsxs("tr", {
|
|
694
|
-
className: "border-white/20 border-b",
|
|
695
|
-
children: [
|
|
696
|
-
/* @__PURE__ */ jsx("th", {
|
|
697
|
-
className: "py-3 pr-4 text-left font-semibold text-foreground",
|
|
698
|
-
children: "Data Type"
|
|
699
|
-
}),
|
|
700
|
-
/* @__PURE__ */ jsx("th", {
|
|
701
|
-
className: "py-3 text-left font-semibold text-foreground",
|
|
702
|
-
children: "Retention Period"
|
|
703
|
-
})
|
|
704
|
-
]
|
|
705
|
-
})
|
|
706
|
-
}),
|
|
707
|
-
/* @__PURE__ */ jsxs("tbody", {
|
|
708
|
-
children: [
|
|
709
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
710
|
-
className: "border-white/10 border-b",
|
|
711
|
-
children: [
|
|
712
|
-
/* @__PURE__ */ jsx("td", {
|
|
713
|
-
className: "py-3 pr-4 font-medium",
|
|
714
|
-
children: "Analytics data"
|
|
715
|
-
}),
|
|
716
|
-
/* @__PURE__ */ jsx("td", {
|
|
717
|
-
className: "py-3",
|
|
718
|
-
children: "24 months from collection"
|
|
719
|
-
})
|
|
720
|
-
]
|
|
721
|
-
}),
|
|
722
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
723
|
-
className: "border-white/10 border-b",
|
|
724
|
-
children: [
|
|
725
|
-
/* @__PURE__ */ jsx("td", {
|
|
726
|
-
className: "py-3 pr-4 font-medium",
|
|
727
|
-
children: "Waitlist / contact form data"
|
|
728
|
-
}),
|
|
729
|
-
/* @__PURE__ */ jsx("td", {
|
|
730
|
-
className: "py-3",
|
|
731
|
-
children: "Until you request deletion or 24 months after last interaction"
|
|
732
|
-
})
|
|
733
|
-
]
|
|
734
|
-
}),
|
|
735
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
736
|
-
className: "border-white/10 border-b",
|
|
737
|
-
children: [
|
|
738
|
-
/* @__PURE__ */ jsx("td", {
|
|
739
|
-
className: "py-3 pr-4 font-medium",
|
|
740
|
-
children: "Account data (when applicable)"
|
|
741
|
-
}),
|
|
742
|
-
/* @__PURE__ */ jsx("td", {
|
|
743
|
-
className: "py-3",
|
|
744
|
-
children: "Duration of account plus 12 months after closure"
|
|
745
|
-
})
|
|
746
|
-
]
|
|
747
|
-
}),
|
|
748
|
-
/* @__PURE__ */ jsxs("tr", {
|
|
749
|
-
className: "border-white/10 border-b",
|
|
750
|
-
children: [
|
|
751
|
-
/* @__PURE__ */ jsx("td", {
|
|
752
|
-
className: "py-3 pr-4 font-medium",
|
|
753
|
-
children: "Billing records (when applicable)"
|
|
754
|
-
}),
|
|
755
|
-
/* @__PURE__ */ jsx("td", {
|
|
756
|
-
className: "py-3",
|
|
757
|
-
children: "10 years (French legal requirement)"
|
|
758
|
-
})
|
|
759
|
-
]
|
|
760
|
-
})
|
|
761
|
-
]
|
|
762
|
-
})
|
|
763
|
-
]
|
|
764
|
-
})
|
|
765
|
-
}),
|
|
766
|
-
/* @__PURE__ */ jsx("p", {
|
|
767
|
-
className: "mt-4 text-muted-foreground",
|
|
768
|
-
children: "We may retain certain data longer if required by law or to establish, exercise, or defend legal claims."
|
|
769
|
-
})
|
|
770
|
-
]
|
|
771
|
-
}),
|
|
772
|
-
/* @__PURE__ */ jsxs("section", {
|
|
773
|
-
className: "mt-10 space-y-4",
|
|
774
|
-
children: [
|
|
775
|
-
/* @__PURE__ */ jsx("h2", {
|
|
776
|
-
className: "font-bold text-2xl text-foreground",
|
|
777
|
-
children: "9. Your Rights Under GDPR"
|
|
778
|
-
}),
|
|
779
|
-
/* @__PURE__ */ jsx("p", {
|
|
780
|
-
className: "text-muted-foreground",
|
|
781
|
-
children: "As a data subject in the EU, you have the following rights:"
|
|
782
|
-
}),
|
|
783
|
-
/* @__PURE__ */ jsxs("ul", {
|
|
784
|
-
className: "list-disc space-y-3 pl-6 text-muted-foreground",
|
|
785
|
-
children: [
|
|
786
|
-
/* @__PURE__ */ jsxs("li", {
|
|
787
|
-
children: [
|
|
788
|
-
/* @__PURE__ */ jsx("strong", {
|
|
789
|
-
className: "text-foreground",
|
|
790
|
-
children: "Right to access"
|
|
791
|
-
}),
|
|
792
|
-
" — Request a copy of the personal data we hold about you"
|
|
793
|
-
]
|
|
794
|
-
}),
|
|
795
|
-
/* @__PURE__ */ jsxs("li", {
|
|
796
|
-
children: [
|
|
797
|
-
/* @__PURE__ */ jsx("strong", {
|
|
798
|
-
className: "text-foreground",
|
|
799
|
-
children: "Right to rectification"
|
|
800
|
-
}),
|
|
801
|
-
" ",
|
|
802
|
-
"— Request correction of inaccurate or incomplete data"
|
|
803
|
-
]
|
|
804
|
-
}),
|
|
805
|
-
/* @__PURE__ */ jsxs("li", {
|
|
806
|
-
children: [
|
|
807
|
-
/* @__PURE__ */ jsx("strong", {
|
|
808
|
-
className: "text-foreground",
|
|
809
|
-
children: 'Right to erasure ("right to be forgotten")'
|
|
810
|
-
}),
|
|
811
|
-
" ",
|
|
812
|
-
"— Request deletion of your personal data in certain circumstances"
|
|
813
|
-
]
|
|
814
|
-
}),
|
|
815
|
-
/* @__PURE__ */ jsxs("li", {
|
|
816
|
-
children: [
|
|
817
|
-
/* @__PURE__ */ jsx("strong", {
|
|
818
|
-
className: "text-foreground",
|
|
819
|
-
children: "Right to restriction"
|
|
820
|
-
}),
|
|
821
|
-
" ",
|
|
822
|
-
"— Request that we limit how we use your data"
|
|
823
|
-
]
|
|
824
|
-
}),
|
|
825
|
-
/* @__PURE__ */ jsxs("li", {
|
|
826
|
-
children: [
|
|
827
|
-
/* @__PURE__ */ jsx("strong", {
|
|
828
|
-
className: "text-foreground",
|
|
829
|
-
children: "Right to data portability"
|
|
830
|
-
}),
|
|
831
|
-
" ",
|
|
832
|
-
"— Receive your data in a structured, machine-readable format"
|
|
833
|
-
]
|
|
834
|
-
}),
|
|
835
|
-
/* @__PURE__ */ jsxs("li", {
|
|
836
|
-
children: [
|
|
837
|
-
/* @__PURE__ */ jsx("strong", {
|
|
838
|
-
className: "text-foreground",
|
|
839
|
-
children: "Right to object"
|
|
840
|
-
}),
|
|
841
|
-
" — Object to processing based on legitimate interests or direct marketing"
|
|
842
|
-
]
|
|
843
|
-
}),
|
|
844
|
-
/* @__PURE__ */ jsxs("li", {
|
|
845
|
-
children: [
|
|
846
|
-
/* @__PURE__ */ jsx("strong", {
|
|
847
|
-
className: "text-foreground",
|
|
848
|
-
children: "Right to withdraw consent"
|
|
849
|
-
}),
|
|
850
|
-
" ",
|
|
851
|
-
"— Where processing is based on consent, withdraw it at any time"
|
|
852
|
-
]
|
|
853
|
-
})
|
|
854
|
-
]
|
|
855
|
-
}),
|
|
856
|
-
/* @__PURE__ */ jsxs("p", {
|
|
857
|
-
className: "mt-4 text-muted-foreground",
|
|
858
|
-
children: [
|
|
859
|
-
"To exercise any of these rights, please contact us at",
|
|
860
|
-
" ",
|
|
861
|
-
/* @__PURE__ */ jsx("a", {
|
|
862
|
-
href: "mailto:privacy@contractspec.io",
|
|
863
|
-
className: "text-primary hover:underline",
|
|
864
|
-
children: "privacy@contractspec.io"
|
|
865
|
-
}),
|
|
866
|
-
". We will respond within one month as required by GDPR."
|
|
867
|
-
]
|
|
868
|
-
})
|
|
869
|
-
]
|
|
870
|
-
}),
|
|
871
|
-
/* @__PURE__ */ jsxs("section", {
|
|
872
|
-
className: "mt-10 space-y-4",
|
|
873
|
-
children: [
|
|
874
|
-
/* @__PURE__ */ jsx("h2", {
|
|
875
|
-
className: "font-bold text-2xl text-foreground",
|
|
876
|
-
children: "10. Security"
|
|
877
|
-
}),
|
|
878
|
-
/* @__PURE__ */ jsx("p", {
|
|
879
|
-
className: "text-muted-foreground",
|
|
880
|
-
children: "We implement appropriate technical and organisational measures to protect your personal data against unauthorised access, alteration, disclosure, or destruction. These measures include:"
|
|
881
|
-
}),
|
|
882
|
-
/* @__PURE__ */ jsxs("ul", {
|
|
883
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
884
|
-
children: [
|
|
885
|
-
/* @__PURE__ */ jsx("li", {
|
|
886
|
-
children: "Encryption of data in transit (TLS/HTTPS)"
|
|
887
|
-
}),
|
|
888
|
-
/* @__PURE__ */ jsx("li", {
|
|
889
|
-
children: "Encryption of data at rest where appropriate"
|
|
890
|
-
}),
|
|
891
|
-
/* @__PURE__ */ jsx("li", {
|
|
892
|
-
children: "Access controls and authentication"
|
|
893
|
-
}),
|
|
894
|
-
/* @__PURE__ */ jsx("li", {
|
|
895
|
-
children: "Regular security reviews and updates"
|
|
896
|
-
}),
|
|
897
|
-
/* @__PURE__ */ jsx("li", {
|
|
898
|
-
children: "Careful vetting of sub-processors"
|
|
899
|
-
})
|
|
900
|
-
]
|
|
901
|
-
}),
|
|
902
|
-
/* @__PURE__ */ jsx("p", {
|
|
903
|
-
className: "text-muted-foreground",
|
|
904
|
-
children: "While we strive to protect your data, no method of transmission over the Internet or electronic storage is 100% secure. We cannot guarantee absolute security but are committed to continuous improvement."
|
|
905
|
-
})
|
|
906
|
-
]
|
|
907
|
-
}),
|
|
908
|
-
/* @__PURE__ */ jsxs("section", {
|
|
909
|
-
className: "mt-10 space-y-4",
|
|
910
|
-
children: [
|
|
911
|
-
/* @__PURE__ */ jsx("h2", {
|
|
912
|
-
className: "font-bold text-2xl text-foreground",
|
|
913
|
-
children: "11. Contact & Complaints"
|
|
914
|
-
}),
|
|
915
|
-
/* @__PURE__ */ jsx("p", {
|
|
916
|
-
className: "text-muted-foreground",
|
|
917
|
-
children: "If you have any questions, concerns, or requests regarding this privacy policy or our data practices, please contact us:"
|
|
918
|
-
}),
|
|
919
|
-
/* @__PURE__ */ jsxs("div", {
|
|
920
|
-
className: "rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",
|
|
921
|
-
children: [
|
|
922
|
-
/* @__PURE__ */ jsxs("p", {
|
|
923
|
-
children: [
|
|
924
|
-
/* @__PURE__ */ jsx("strong", {
|
|
925
|
-
className: "text-foreground",
|
|
926
|
-
children: "Email:"
|
|
927
|
-
}),
|
|
928
|
-
" ",
|
|
929
|
-
/* @__PURE__ */ jsx("a", {
|
|
930
|
-
href: "mailto:privacy@contractspec.io",
|
|
931
|
-
className: "text-primary hover:underline",
|
|
932
|
-
children: "privacy@contractspec.io"
|
|
933
|
-
})
|
|
934
|
-
]
|
|
935
|
-
}),
|
|
936
|
-
/* @__PURE__ */ jsxs("p", {
|
|
937
|
-
className: "mt-2",
|
|
938
|
-
children: [
|
|
939
|
-
/* @__PURE__ */ jsx("strong", {
|
|
940
|
-
className: "text-foreground",
|
|
941
|
-
children: "Address:"
|
|
942
|
-
}),
|
|
943
|
-
" CHAMAN VENTURES, 229 rue Saint-Honoré, 75001 Paris, France"
|
|
944
|
-
]
|
|
945
|
-
})
|
|
946
|
-
]
|
|
947
|
-
}),
|
|
948
|
-
/* @__PURE__ */ jsx("h3", {
|
|
949
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
950
|
-
children: "Supervisory Authority"
|
|
951
|
-
}),
|
|
952
|
-
/* @__PURE__ */ jsx("p", {
|
|
953
|
-
className: "text-muted-foreground",
|
|
954
|
-
children: "If you are not satisfied with our response or believe we are processing your data unlawfully, you have the right to lodge a complaint with a supervisory authority. In France, the relevant authority is:"
|
|
955
|
-
}),
|
|
956
|
-
/* @__PURE__ */ jsxs("div", {
|
|
957
|
-
className: "rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",
|
|
958
|
-
children: [
|
|
959
|
-
/* @__PURE__ */ jsx("p", {
|
|
960
|
-
children: /* @__PURE__ */ jsx("strong", {
|
|
961
|
-
className: "text-foreground",
|
|
962
|
-
children: "Commission Nationale de l'Informatique et des Libertés (CNIL)"
|
|
963
|
-
})
|
|
964
|
-
}),
|
|
965
|
-
/* @__PURE__ */ jsx("p", {
|
|
966
|
-
children: "3 Place de Fontenoy, TSA 80715, 75334 Paris Cedex 07"
|
|
967
|
-
}),
|
|
968
|
-
/* @__PURE__ */ jsxs("p", {
|
|
969
|
-
children: [
|
|
970
|
-
"Website:",
|
|
971
|
-
" ",
|
|
972
|
-
/* @__PURE__ */ jsx("a", {
|
|
973
|
-
href: "https://www.cnil.fr",
|
|
974
|
-
target: "_blank",
|
|
975
|
-
rel: "noopener noreferrer",
|
|
976
|
-
className: "text-primary hover:underline",
|
|
977
|
-
children: "www.cnil.fr"
|
|
978
|
-
})
|
|
979
|
-
]
|
|
980
|
-
})
|
|
981
|
-
]
|
|
982
|
-
})
|
|
983
|
-
]
|
|
984
|
-
}),
|
|
985
|
-
/* @__PURE__ */ jsxs("section", {
|
|
986
|
-
className: "mt-10 space-y-4",
|
|
987
|
-
children: [
|
|
988
|
-
/* @__PURE__ */ jsx("h2", {
|
|
989
|
-
className: "font-bold text-2xl text-foreground",
|
|
990
|
-
children: "12. Changes to This Policy"
|
|
991
|
-
}),
|
|
992
|
-
/* @__PURE__ */ jsx("p", {
|
|
993
|
-
className: "text-muted-foreground",
|
|
994
|
-
children: 'We may update this privacy policy from time to time to reflect changes in our practices, technology, legal requirements, or for other operational reasons. We will notify you of any material changes by updating the "Last updated" date at the top of this page.'
|
|
995
|
-
}),
|
|
996
|
-
/* @__PURE__ */ jsx("p", {
|
|
997
|
-
className: "text-muted-foreground",
|
|
998
|
-
children: "We encourage you to review this policy periodically to stay informed about how we protect your data."
|
|
999
|
-
})
|
|
1000
|
-
]
|
|
1001
|
-
}),
|
|
1002
|
-
/* @__PURE__ */ jsx("div", {
|
|
1003
|
-
className: "mt-12 border-white/10 border-t pt-8",
|
|
1004
|
-
children: /* @__PURE__ */ jsxs("p", {
|
|
1005
|
-
className: "text-muted-foreground text-sm",
|
|
1006
|
-
children: [
|
|
1007
|
-
"For questions about this privacy policy, please contact us at",
|
|
1008
|
-
" ",
|
|
1009
|
-
/* @__PURE__ */ jsx("a", {
|
|
1010
|
-
href: "mailto:privacy@contractspec.io",
|
|
1011
|
-
className: "text-primary hover:underline",
|
|
1012
|
-
children: "privacy@contractspec.io"
|
|
1013
|
-
})
|
|
1014
|
-
]
|
|
1015
|
-
})
|
|
1016
|
-
})
|
|
1017
|
-
]
|
|
1018
|
-
})
|
|
1019
|
-
})
|
|
1020
|
-
});
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
|
-
// src/components/legal/TermsTemplate.tsx
|
|
1024
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
1025
|
-
var metadata2 = {
|
|
1026
|
-
title: "Terms of Service | ContractSpec",
|
|
1027
|
-
description: "Terms of Service for ContractSpec. Read our terms governing use of the ContractSpec website and services."
|
|
1028
|
-
};
|
|
1029
|
-
function TermsTemplate() {
|
|
1030
|
-
return /* @__PURE__ */ jsx2("main", {
|
|
1031
|
-
className: "flex grow flex-col items-center justify-center pt-24",
|
|
1032
|
-
children: /* @__PURE__ */ jsx2("section", {
|
|
1033
|
-
className: "section-padding",
|
|
1034
|
-
children: /* @__PURE__ */ jsxs2("div", {
|
|
1035
|
-
className: "prose prose-invert mx-auto max-w-3xl",
|
|
1036
|
-
children: [
|
|
1037
|
-
/* @__PURE__ */ jsx2("h1", {
|
|
1038
|
-
className: "mb-4 font-bold text-4xl",
|
|
1039
|
-
children: "Terms of Service"
|
|
1040
|
-
}),
|
|
1041
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1042
|
-
className: "mb-8 text-muted-foreground",
|
|
1043
|
-
children: "Last updated: December 18, 2025"
|
|
1044
|
-
}),
|
|
1045
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1046
|
-
className: "space-y-4",
|
|
1047
|
-
children: [
|
|
1048
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1049
|
-
className: "font-bold text-2xl text-foreground",
|
|
1050
|
-
children: "1. Definitions"
|
|
1051
|
-
}),
|
|
1052
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1053
|
-
className: "text-muted-foreground",
|
|
1054
|
-
children: 'In these Terms of Service ("Terms"), the following definitions apply:'
|
|
1055
|
-
}),
|
|
1056
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1057
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1058
|
-
children: [
|
|
1059
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1060
|
-
children: [
|
|
1061
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1062
|
-
className: "text-foreground",
|
|
1063
|
-
children: '"ContractSpec"'
|
|
1064
|
-
}),
|
|
1065
|
-
",",
|
|
1066
|
-
" ",
|
|
1067
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1068
|
-
className: "text-foreground",
|
|
1069
|
-
children: '"we"'
|
|
1070
|
-
}),
|
|
1071
|
-
",",
|
|
1072
|
-
" ",
|
|
1073
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1074
|
-
className: "text-foreground",
|
|
1075
|
-
children: '"us"'
|
|
1076
|
-
}),
|
|
1077
|
-
", or",
|
|
1078
|
-
" ",
|
|
1079
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1080
|
-
className: "text-foreground",
|
|
1081
|
-
children: '"our"'
|
|
1082
|
-
}),
|
|
1083
|
-
" refers to CHAMAN VENTURES, SASU, operating under the ContractSpec brand."
|
|
1084
|
-
]
|
|
1085
|
-
}),
|
|
1086
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1087
|
-
children: [
|
|
1088
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1089
|
-
className: "text-foreground",
|
|
1090
|
-
children: '"Service"'
|
|
1091
|
-
}),
|
|
1092
|
-
" or",
|
|
1093
|
-
" ",
|
|
1094
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1095
|
-
className: "text-foreground",
|
|
1096
|
-
children: '"Services"'
|
|
1097
|
-
}),
|
|
1098
|
-
" refers to the ContractSpec website, ContractSpec Studio, APIs, documentation, and any related products or features we provide."
|
|
1099
|
-
]
|
|
1100
|
-
}),
|
|
1101
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1102
|
-
children: [
|
|
1103
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1104
|
-
className: "text-foreground",
|
|
1105
|
-
children: '"User"'
|
|
1106
|
-
}),
|
|
1107
|
-
",",
|
|
1108
|
-
" ",
|
|
1109
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1110
|
-
className: "text-foreground",
|
|
1111
|
-
children: '"you"'
|
|
1112
|
-
}),
|
|
1113
|
-
", or",
|
|
1114
|
-
" ",
|
|
1115
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1116
|
-
className: "text-foreground",
|
|
1117
|
-
children: '"your"'
|
|
1118
|
-
}),
|
|
1119
|
-
" refers to any individual or entity accessing or using the Services."
|
|
1120
|
-
]
|
|
1121
|
-
}),
|
|
1122
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1123
|
-
children: [
|
|
1124
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1125
|
-
className: "text-foreground",
|
|
1126
|
-
children: '"User Content"'
|
|
1127
|
-
}),
|
|
1128
|
-
" ",
|
|
1129
|
-
"refers to any data, specifications, configurations, or other materials you create, upload, or submit through the Services."
|
|
1130
|
-
]
|
|
1131
|
-
}),
|
|
1132
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1133
|
-
children: [
|
|
1134
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1135
|
-
className: "text-foreground",
|
|
1136
|
-
children: '"ContractSpec Core"'
|
|
1137
|
-
}),
|
|
1138
|
-
" ",
|
|
1139
|
-
"refers to the open-source components of ContractSpec available under their respective open-source licenses."
|
|
1140
|
-
]
|
|
1141
|
-
}),
|
|
1142
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1143
|
-
children: [
|
|
1144
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1145
|
-
className: "text-foreground",
|
|
1146
|
-
children: '"Design Partner"'
|
|
1147
|
-
}),
|
|
1148
|
-
" ",
|
|
1149
|
-
"refers to early users who have entered into a separate design partnership arrangement with us."
|
|
1150
|
-
]
|
|
1151
|
-
})
|
|
1152
|
-
]
|
|
1153
|
-
})
|
|
1154
|
-
]
|
|
1155
|
-
}),
|
|
1156
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1157
|
-
className: "mt-10 space-y-4",
|
|
1158
|
-
children: [
|
|
1159
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1160
|
-
className: "font-bold text-2xl text-foreground",
|
|
1161
|
-
children: "2. Who We Are"
|
|
1162
|
-
}),
|
|
1163
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
1164
|
-
className: "text-muted-foreground",
|
|
1165
|
-
children: [
|
|
1166
|
-
"ContractSpec is a brand of",
|
|
1167
|
-
" ",
|
|
1168
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1169
|
-
className: "text-foreground",
|
|
1170
|
-
children: "CHAMAN VENTURES"
|
|
1171
|
-
}),
|
|
1172
|
-
", a simplified joint-stock company (SASU) registered in France."
|
|
1173
|
-
]
|
|
1174
|
-
}),
|
|
1175
|
-
/* @__PURE__ */ jsx2("div", {
|
|
1176
|
-
className: "rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",
|
|
1177
|
-
children: /* @__PURE__ */ jsxs2("ul", {
|
|
1178
|
-
className: "list-none space-y-1 pl-0",
|
|
1179
|
-
children: [
|
|
1180
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1181
|
-
children: "CHAMAN VENTURES, SASU"
|
|
1182
|
-
}),
|
|
1183
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1184
|
-
children: "RCS Paris • SIREN 989 498 902"
|
|
1185
|
-
}),
|
|
1186
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1187
|
-
children: "229 rue Saint-Honoré, 75001 Paris, France"
|
|
1188
|
-
}),
|
|
1189
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1190
|
-
children: [
|
|
1191
|
-
"Contact:",
|
|
1192
|
-
" ",
|
|
1193
|
-
/* @__PURE__ */ jsx2("a", {
|
|
1194
|
-
href: "mailto:legal@contractspec.io",
|
|
1195
|
-
className: "text-primary hover:underline",
|
|
1196
|
-
children: "legal@contractspec.io"
|
|
1197
|
-
})
|
|
1198
|
-
]
|
|
1199
|
-
})
|
|
1200
|
-
]
|
|
1201
|
-
})
|
|
1202
|
-
})
|
|
1203
|
-
]
|
|
1204
|
-
}),
|
|
1205
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1206
|
-
className: "mt-10 space-y-4",
|
|
1207
|
-
children: [
|
|
1208
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1209
|
-
className: "font-bold text-2xl text-foreground",
|
|
1210
|
-
children: "3. Acceptance of Terms"
|
|
1211
|
-
}),
|
|
1212
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
1213
|
-
className: "text-muted-foreground",
|
|
1214
|
-
children: [
|
|
1215
|
-
"By accessing or using ContractSpec, you agree to be bound by these Terms and our",
|
|
1216
|
-
" ",
|
|
1217
|
-
/* @__PURE__ */ jsx2("a", {
|
|
1218
|
-
href: "/legal/privacy",
|
|
1219
|
-
className: "text-primary hover:underline",
|
|
1220
|
-
children: "Privacy Policy"
|
|
1221
|
-
}),
|
|
1222
|
-
". If you do not agree to these Terms, you must not use the Services."
|
|
1223
|
-
]
|
|
1224
|
-
}),
|
|
1225
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1226
|
-
className: "text-muted-foreground",
|
|
1227
|
-
children: 'We may update these Terms from time to time. We will notify you of material changes by updating the "Last updated" date. Continued use of the Services after changes constitutes acceptance of the updated Terms.'
|
|
1228
|
-
})
|
|
1229
|
-
]
|
|
1230
|
-
}),
|
|
1231
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1232
|
-
className: "mt-10 space-y-4",
|
|
1233
|
-
children: [
|
|
1234
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1235
|
-
className: "font-bold text-2xl text-foreground",
|
|
1236
|
-
children: "4. Eligibility"
|
|
1237
|
-
}),
|
|
1238
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1239
|
-
className: "text-muted-foreground",
|
|
1240
|
-
children: "To use the Services, you must:"
|
|
1241
|
-
}),
|
|
1242
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1243
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1244
|
-
children: [
|
|
1245
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1246
|
-
children: "Be at least 18 years old or the age of majority in your jurisdiction"
|
|
1247
|
-
}),
|
|
1248
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1249
|
-
children: "Have the legal capacity to enter into binding contracts"
|
|
1250
|
-
}),
|
|
1251
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1252
|
-
children: "Not be prohibited from using the Services under applicable laws"
|
|
1253
|
-
}),
|
|
1254
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1255
|
-
children: "If acting on behalf of an organisation, have the authority to bind that organisation to these Terms"
|
|
1256
|
-
})
|
|
1257
|
-
]
|
|
1258
|
-
})
|
|
1259
|
-
]
|
|
1260
|
-
}),
|
|
1261
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1262
|
-
className: "mt-10 space-y-4",
|
|
1263
|
-
children: [
|
|
1264
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1265
|
-
className: "font-bold text-2xl text-foreground",
|
|
1266
|
-
children: "5. Accounts"
|
|
1267
|
-
}),
|
|
1268
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
1269
|
-
className: "rounded-lg border border-yellow-500/20 bg-yellow-500/5 p-4 text-muted-foreground",
|
|
1270
|
-
children: [
|
|
1271
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1272
|
-
className: "mb-2 font-medium text-yellow-500",
|
|
1273
|
-
children: "Note"
|
|
1274
|
-
}),
|
|
1275
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1276
|
-
children: "User accounts are not yet available. When accounts are introduced, the following terms will apply:"
|
|
1277
|
-
})
|
|
1278
|
-
]
|
|
1279
|
-
}),
|
|
1280
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1281
|
-
className: "mt-4 list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1282
|
-
children: [
|
|
1283
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1284
|
-
children: "You are responsible for maintaining the confidentiality of your account credentials"
|
|
1285
|
-
}),
|
|
1286
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1287
|
-
children: "You are responsible for all activities that occur under your account"
|
|
1288
|
-
}),
|
|
1289
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1290
|
-
children: "You must notify us immediately of any unauthorised use of your account"
|
|
1291
|
-
}),
|
|
1292
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1293
|
-
children: "We reserve the right to suspend or terminate accounts that violate these Terms"
|
|
1294
|
-
})
|
|
1295
|
-
]
|
|
1296
|
-
})
|
|
1297
|
-
]
|
|
1298
|
-
}),
|
|
1299
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1300
|
-
className: "mt-10 space-y-4",
|
|
1301
|
-
children: [
|
|
1302
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1303
|
-
className: "font-bold text-2xl text-foreground",
|
|
1304
|
-
children: "6. License & Intellectual Property"
|
|
1305
|
-
}),
|
|
1306
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1307
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1308
|
-
children: "6.1 Our Intellectual Property"
|
|
1309
|
-
}),
|
|
1310
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1311
|
-
className: "text-muted-foreground",
|
|
1312
|
-
children: "The ContractSpec name, logo, website design, proprietary software, documentation, and all associated intellectual property rights are owned by CHAMAN VENTURES. Subject to these Terms, we grant you a limited, non-exclusive, non-transferable, revocable license to access and use the Services for their intended purpose."
|
|
1313
|
-
}),
|
|
1314
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1315
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1316
|
-
children: "6.2 Open-Source Components"
|
|
1317
|
-
}),
|
|
1318
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1319
|
-
className: "text-muted-foreground",
|
|
1320
|
-
children: 'Certain components of ContractSpec ("ContractSpec Core") are made available as open-source software under their respective licenses (e.g., MIT, Apache 2.0). Your use of open-source components is governed by those licenses, which may grant you additional rights not covered by these Terms. In case of conflict between these Terms and an open-source license, the open-source license prevails for the applicable component.'
|
|
1321
|
-
}),
|
|
1322
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1323
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1324
|
-
children: "6.3 Your Content"
|
|
1325
|
-
}),
|
|
1326
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
1327
|
-
className: "text-muted-foreground",
|
|
1328
|
-
children: [
|
|
1329
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1330
|
-
className: "text-foreground",
|
|
1331
|
-
children: "You retain ownership"
|
|
1332
|
-
}),
|
|
1333
|
-
" ",
|
|
1334
|
-
"of all User Content you create, upload, or submit through the Services. This includes your specifications, configurations, and any other materials you generate."
|
|
1335
|
-
]
|
|
1336
|
-
}),
|
|
1337
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1338
|
-
className: "text-muted-foreground",
|
|
1339
|
-
children: "By using the Services, you grant us a limited, non-exclusive, worldwide, royalty-free license to host, store, process, and display your User Content solely to the extent necessary to provide and improve the Services. This license terminates when you delete your User Content or close your account, except where retention is required by law or for legitimate business purposes (e.g., backups, legal compliance)."
|
|
1340
|
-
}),
|
|
1341
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1342
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1343
|
-
children: "6.4 Feedback"
|
|
1344
|
-
}),
|
|
1345
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1346
|
-
className: "text-muted-foreground",
|
|
1347
|
-
children: "If you provide feedback, suggestions, or ideas about the Services, you grant us a perpetual, irrevocable, royalty-free license to use, modify, and incorporate such feedback without obligation to you."
|
|
1348
|
-
})
|
|
1349
|
-
]
|
|
1350
|
-
}),
|
|
1351
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1352
|
-
className: "mt-10 space-y-4",
|
|
1353
|
-
children: [
|
|
1354
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1355
|
-
className: "font-bold text-2xl text-foreground",
|
|
1356
|
-
children: "7. Acceptable Use"
|
|
1357
|
-
}),
|
|
1358
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1359
|
-
className: "text-muted-foreground",
|
|
1360
|
-
children: "When using the Services, you agree not to:"
|
|
1361
|
-
}),
|
|
1362
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1363
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1364
|
-
children: [
|
|
1365
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1366
|
-
children: [
|
|
1367
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1368
|
-
className: "text-foreground",
|
|
1369
|
-
children: "Abuse the Services:"
|
|
1370
|
-
}),
|
|
1371
|
-
" ",
|
|
1372
|
-
"Use the Services in a manner that disrupts, damages, or impairs our infrastructure or other users' experience"
|
|
1373
|
-
]
|
|
1374
|
-
}),
|
|
1375
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1376
|
-
children: [
|
|
1377
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1378
|
-
className: "text-foreground",
|
|
1379
|
-
children: "Probe security:"
|
|
1380
|
-
}),
|
|
1381
|
-
" ",
|
|
1382
|
-
"Attempt to gain unauthorised access to our systems, networks, or data; perform security testing without prior written permission"
|
|
1383
|
-
]
|
|
1384
|
-
}),
|
|
1385
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1386
|
-
children: [
|
|
1387
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1388
|
-
className: "text-foreground",
|
|
1389
|
-
children: "Distribute harmful content:"
|
|
1390
|
-
}),
|
|
1391
|
-
" ",
|
|
1392
|
-
"Upload, share, or distribute malware, viruses, or other malicious code"
|
|
1393
|
-
]
|
|
1394
|
-
}),
|
|
1395
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1396
|
-
children: [
|
|
1397
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1398
|
-
className: "text-foreground",
|
|
1399
|
-
children: "Engage in illegal activity:"
|
|
1400
|
-
}),
|
|
1401
|
-
" ",
|
|
1402
|
-
"Use the Services for any purpose that is unlawful, fraudulent, or harmful"
|
|
1403
|
-
]
|
|
1404
|
-
}),
|
|
1405
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1406
|
-
children: [
|
|
1407
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1408
|
-
className: "text-foreground",
|
|
1409
|
-
children: "Interfere with operations:"
|
|
1410
|
-
}),
|
|
1411
|
-
" ",
|
|
1412
|
-
"Attempt to interfere with, disrupt, or circumvent any security or access controls"
|
|
1413
|
-
]
|
|
1414
|
-
}),
|
|
1415
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1416
|
-
children: [
|
|
1417
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1418
|
-
className: "text-foreground",
|
|
1419
|
-
children: "Violate rights:"
|
|
1420
|
-
}),
|
|
1421
|
-
" ",
|
|
1422
|
-
"Infringe upon the intellectual property, privacy, or other rights of third parties"
|
|
1423
|
-
]
|
|
1424
|
-
}),
|
|
1425
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1426
|
-
children: [
|
|
1427
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1428
|
-
className: "text-foreground",
|
|
1429
|
-
children: "Misrepresent identity:"
|
|
1430
|
-
}),
|
|
1431
|
-
" ",
|
|
1432
|
-
"Impersonate any person or entity, or falsely claim affiliation with ContractSpec"
|
|
1433
|
-
]
|
|
1434
|
-
}),
|
|
1435
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1436
|
-
children: [
|
|
1437
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1438
|
-
className: "text-foreground",
|
|
1439
|
-
children: "Circumvent limits:"
|
|
1440
|
-
}),
|
|
1441
|
-
" ",
|
|
1442
|
-
"Attempt to bypass any usage limits, rate limits, or access restrictions"
|
|
1443
|
-
]
|
|
1444
|
-
})
|
|
1445
|
-
]
|
|
1446
|
-
}),
|
|
1447
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1448
|
-
className: "mt-4 text-muted-foreground",
|
|
1449
|
-
children: "We reserve the right to investigate violations and take appropriate action, including suspension or termination of access."
|
|
1450
|
-
})
|
|
1451
|
-
]
|
|
1452
|
-
}),
|
|
1453
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1454
|
-
className: "mt-10 space-y-4",
|
|
1455
|
-
children: [
|
|
1456
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1457
|
-
className: "font-bold text-2xl text-foreground",
|
|
1458
|
-
children: "8. Beta & Preview Services"
|
|
1459
|
-
}),
|
|
1460
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
1461
|
-
className: "rounded-lg border border-orange-500/20 bg-orange-500/5 p-4 text-muted-foreground",
|
|
1462
|
-
children: [
|
|
1463
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1464
|
-
className: "mb-2 font-medium text-orange-400",
|
|
1465
|
-
children: "⚠️ Important"
|
|
1466
|
-
}),
|
|
1467
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1468
|
-
children: 'ContractSpec is currently in active development. Some features may be labelled as "Beta", "Preview", "Alpha", or similar designations.'
|
|
1469
|
-
})
|
|
1470
|
-
]
|
|
1471
|
-
}),
|
|
1472
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1473
|
-
className: "mt-4 text-muted-foreground",
|
|
1474
|
-
children: "By using beta or preview features, you acknowledge:"
|
|
1475
|
-
}),
|
|
1476
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1477
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1478
|
-
children: [
|
|
1479
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1480
|
-
children: [
|
|
1481
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1482
|
-
className: "text-foreground",
|
|
1483
|
-
children: "Things may break:"
|
|
1484
|
-
}),
|
|
1485
|
-
" ",
|
|
1486
|
-
"Beta features may contain bugs, errors, or unexpected behaviour"
|
|
1487
|
-
]
|
|
1488
|
-
}),
|
|
1489
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1490
|
-
children: [
|
|
1491
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1492
|
-
className: "text-foreground",
|
|
1493
|
-
children: "No availability guarantee:"
|
|
1494
|
-
}),
|
|
1495
|
-
" ",
|
|
1496
|
-
"We do not guarantee uptime, availability, or continuity of beta features"
|
|
1497
|
-
]
|
|
1498
|
-
}),
|
|
1499
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1500
|
-
children: [
|
|
1501
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1502
|
-
className: "text-foreground",
|
|
1503
|
-
children: "Features may change or disappear:"
|
|
1504
|
-
}),
|
|
1505
|
-
" ",
|
|
1506
|
-
"We may modify, suspend, or discontinue beta features at any time without notice"
|
|
1507
|
-
]
|
|
1508
|
-
}),
|
|
1509
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1510
|
-
children: [
|
|
1511
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1512
|
-
className: "text-foreground",
|
|
1513
|
-
children: "Not for production:"
|
|
1514
|
-
}),
|
|
1515
|
-
" ",
|
|
1516
|
-
"Beta features should not be relied upon for mission-critical or production workloads unless you accept these risks"
|
|
1517
|
-
]
|
|
1518
|
-
}),
|
|
1519
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1520
|
-
children: [
|
|
1521
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1522
|
-
className: "text-foreground",
|
|
1523
|
-
children: "Data may be lost:"
|
|
1524
|
-
}),
|
|
1525
|
-
" ",
|
|
1526
|
-
"We cannot guarantee the preservation of data created using beta features"
|
|
1527
|
-
]
|
|
1528
|
-
})
|
|
1529
|
-
]
|
|
1530
|
-
})
|
|
1531
|
-
]
|
|
1532
|
-
}),
|
|
1533
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1534
|
-
className: "mt-10 space-y-4",
|
|
1535
|
-
children: [
|
|
1536
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1537
|
-
className: "font-bold text-2xl text-foreground",
|
|
1538
|
-
children: "9. Design Partner Program"
|
|
1539
|
-
}),
|
|
1540
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1541
|
-
className: "text-muted-foreground",
|
|
1542
|
-
children: "We offer a Design Partner program for early users who wish to collaborate closely with us to shape the product. If you participate as a Design Partner:"
|
|
1543
|
-
}),
|
|
1544
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1545
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1546
|
-
children: "9.1 Scope"
|
|
1547
|
-
}),
|
|
1548
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1549
|
-
className: "text-muted-foreground",
|
|
1550
|
-
children: "Design Partners receive early access to features, provide feedback, and help validate product direction. The specific scope of your participation will be outlined in a separate agreement or communication."
|
|
1551
|
-
}),
|
|
1552
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1553
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1554
|
-
children: "9.2 Feedback"
|
|
1555
|
-
}),
|
|
1556
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1557
|
-
className: "text-muted-foreground",
|
|
1558
|
-
children: "We value your input. Feedback you provide may be used to improve the Services. See Section 6.4 for licensing terms regarding feedback."
|
|
1559
|
-
}),
|
|
1560
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1561
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1562
|
-
children: "9.3 Confidentiality"
|
|
1563
|
-
}),
|
|
1564
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1565
|
-
className: "text-muted-foreground",
|
|
1566
|
-
children: "Design Partners may receive access to confidential or pre-release information. Unless otherwise specified in a separate agreement, you agree to keep such information confidential and not share it publicly without our prior written consent."
|
|
1567
|
-
}),
|
|
1568
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1569
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1570
|
-
children: "9.4 Mutual Expectations"
|
|
1571
|
-
}),
|
|
1572
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1573
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1574
|
-
children: [
|
|
1575
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1576
|
-
children: [
|
|
1577
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1578
|
-
className: "text-foreground",
|
|
1579
|
-
children: "From us:"
|
|
1580
|
-
}),
|
|
1581
|
-
" Regular communications, responsiveness to feedback, and transparency about product direction"
|
|
1582
|
-
]
|
|
1583
|
-
}),
|
|
1584
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1585
|
-
children: [
|
|
1586
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1587
|
-
className: "text-foreground",
|
|
1588
|
-
children: "From you:"
|
|
1589
|
-
}),
|
|
1590
|
-
" Timely and honest feedback, reasonable engagement, and adherence to these Terms"
|
|
1591
|
-
]
|
|
1592
|
-
})
|
|
1593
|
-
]
|
|
1594
|
-
})
|
|
1595
|
-
]
|
|
1596
|
-
}),
|
|
1597
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1598
|
-
className: "mt-10 space-y-4",
|
|
1599
|
-
children: [
|
|
1600
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1601
|
-
className: "font-bold text-2xl text-foreground",
|
|
1602
|
-
children: "10. Fees & Billing"
|
|
1603
|
-
}),
|
|
1604
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
1605
|
-
className: "rounded-lg border border-yellow-500/20 bg-yellow-500/5 p-4 text-muted-foreground",
|
|
1606
|
-
children: [
|
|
1607
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1608
|
-
className: "mb-2 font-medium text-yellow-500",
|
|
1609
|
-
children: "Note"
|
|
1610
|
-
}),
|
|
1611
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1612
|
-
children: "Paid plans are not yet available. When paid plans are introduced, the following terms will apply:"
|
|
1613
|
-
})
|
|
1614
|
-
]
|
|
1615
|
-
}),
|
|
1616
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1617
|
-
className: "mt-4 list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1618
|
-
children: [
|
|
1619
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1620
|
-
children: "Fees will be clearly communicated before you commit to a paid plan"
|
|
1621
|
-
}),
|
|
1622
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1623
|
-
children: "Payment terms, billing cycles, and refund policies will be specified at that time"
|
|
1624
|
-
}),
|
|
1625
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1626
|
-
children: "We reserve the right to change pricing with reasonable notice"
|
|
1627
|
-
}),
|
|
1628
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1629
|
-
children: "Failure to pay may result in suspension or termination of paid features"
|
|
1630
|
-
})
|
|
1631
|
-
]
|
|
1632
|
-
})
|
|
1633
|
-
]
|
|
1634
|
-
}),
|
|
1635
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1636
|
-
className: "mt-10 space-y-4",
|
|
1637
|
-
children: [
|
|
1638
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1639
|
-
className: "font-bold text-2xl text-foreground",
|
|
1640
|
-
children: "11. Third-Party Services"
|
|
1641
|
-
}),
|
|
1642
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1643
|
-
className: "text-muted-foreground",
|
|
1644
|
-
children: "The Services may integrate with or contain links to third-party services, websites, or content. We do not control and are not responsible for third-party services."
|
|
1645
|
-
}),
|
|
1646
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1647
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1648
|
-
children: [
|
|
1649
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1650
|
-
children: "Your use of third-party services is governed by their respective terms and policies"
|
|
1651
|
-
}),
|
|
1652
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1653
|
-
children: "We make no warranties or representations about third-party services"
|
|
1654
|
-
}),
|
|
1655
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1656
|
-
children: "Links to third-party sites do not imply endorsement"
|
|
1657
|
-
}),
|
|
1658
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1659
|
-
children: "You are responsible for reviewing the terms of any third-party services you use"
|
|
1660
|
-
})
|
|
1661
|
-
]
|
|
1662
|
-
})
|
|
1663
|
-
]
|
|
1664
|
-
}),
|
|
1665
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1666
|
-
className: "mt-10 space-y-4",
|
|
1667
|
-
children: [
|
|
1668
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1669
|
-
className: "font-bold text-2xl text-foreground",
|
|
1670
|
-
children: "12. Disclaimer of Warranties"
|
|
1671
|
-
}),
|
|
1672
|
-
/* @__PURE__ */ jsx2("div", {
|
|
1673
|
-
className: "rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",
|
|
1674
|
-
children: /* @__PURE__ */ jsx2("p", {
|
|
1675
|
-
className: "font-medium uppercase",
|
|
1676
|
-
children: 'THE SERVICES ARE PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED.'
|
|
1677
|
-
})
|
|
1678
|
-
}),
|
|
1679
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1680
|
-
className: "mt-4 text-muted-foreground",
|
|
1681
|
-
children: "To the fullest extent permitted by law, we disclaim:"
|
|
1682
|
-
}),
|
|
1683
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1684
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1685
|
-
children: [
|
|
1686
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1687
|
-
children: "Warranties of merchantability, fitness for a particular purpose, and non-infringement"
|
|
1688
|
-
}),
|
|
1689
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1690
|
-
children: "Any warranty that the Services will be uninterrupted, secure, or error-free"
|
|
1691
|
-
}),
|
|
1692
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1693
|
-
children: "Any warranty regarding the accuracy, reliability, or completeness of content"
|
|
1694
|
-
}),
|
|
1695
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1696
|
-
children: "Any warranty that defects will be corrected or that the Services are free of viruses or harmful components"
|
|
1697
|
-
})
|
|
1698
|
-
]
|
|
1699
|
-
}),
|
|
1700
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1701
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1702
|
-
children: "No Professional Advice"
|
|
1703
|
-
}),
|
|
1704
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1705
|
-
className: "text-muted-foreground",
|
|
1706
|
-
children: "The Services are tools for software development. Nothing in the Services constitutes legal, financial, technical, or other professional advice. You are solely responsible for evaluating the suitability of the Services for your needs and for any decisions you make based on the output."
|
|
1707
|
-
})
|
|
1708
|
-
]
|
|
1709
|
-
}),
|
|
1710
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1711
|
-
className: "mt-10 space-y-4",
|
|
1712
|
-
children: [
|
|
1713
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1714
|
-
className: "font-bold text-2xl text-foreground",
|
|
1715
|
-
children: "13. Limitation of Liability"
|
|
1716
|
-
}),
|
|
1717
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1718
|
-
className: "text-muted-foreground",
|
|
1719
|
-
children: "To the maximum extent permitted by applicable law:"
|
|
1720
|
-
}),
|
|
1721
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1722
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1723
|
-
children: [
|
|
1724
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1725
|
-
children: [
|
|
1726
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1727
|
-
className: "text-foreground",
|
|
1728
|
-
children: "No indirect damages:"
|
|
1729
|
-
}),
|
|
1730
|
-
" ",
|
|
1731
|
-
"We shall not be liable for any indirect, incidental, special, consequential, or punitive damages, including loss of profits, data, goodwill, or other intangible losses"
|
|
1732
|
-
]
|
|
1733
|
-
}),
|
|
1734
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1735
|
-
children: [
|
|
1736
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1737
|
-
className: "text-foreground",
|
|
1738
|
-
children: "Limited direct liability:"
|
|
1739
|
-
}),
|
|
1740
|
-
" ",
|
|
1741
|
-
"Our total aggregate liability for any claims arising from or related to the Services shall not exceed the greater of: (a) the amount you paid us in the 12 months preceding the claim, or (b) €100"
|
|
1742
|
-
]
|
|
1743
|
-
}),
|
|
1744
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1745
|
-
children: [
|
|
1746
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1747
|
-
className: "text-foreground",
|
|
1748
|
-
children: "Exceptions:"
|
|
1749
|
-
}),
|
|
1750
|
-
" These limitations do not apply to liability that cannot be excluded under applicable law, including liability for fraud or wilful misconduct"
|
|
1751
|
-
]
|
|
1752
|
-
})
|
|
1753
|
-
]
|
|
1754
|
-
}),
|
|
1755
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1756
|
-
className: "mt-4 text-muted-foreground",
|
|
1757
|
-
children: "You acknowledge that these limitations reflect a reasonable allocation of risk and are a fundamental basis of the agreement between us."
|
|
1758
|
-
})
|
|
1759
|
-
]
|
|
1760
|
-
}),
|
|
1761
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1762
|
-
className: "mt-10 space-y-4",
|
|
1763
|
-
children: [
|
|
1764
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1765
|
-
className: "font-bold text-2xl text-foreground",
|
|
1766
|
-
children: "14. Termination"
|
|
1767
|
-
}),
|
|
1768
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1769
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1770
|
-
children: "14.1 By You"
|
|
1771
|
-
}),
|
|
1772
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1773
|
-
className: "text-muted-foreground",
|
|
1774
|
-
children: "You may stop using the Services at any time. When accounts are available, you may close your account through the account settings or by contacting us."
|
|
1775
|
-
}),
|
|
1776
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1777
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1778
|
-
children: "14.2 By Us"
|
|
1779
|
-
}),
|
|
1780
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1781
|
-
className: "text-muted-foreground",
|
|
1782
|
-
children: "We may suspend or terminate your access to the Services at any time, with or without cause, with or without notice. Reasons for termination may include:"
|
|
1783
|
-
}),
|
|
1784
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1785
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1786
|
-
children: [
|
|
1787
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1788
|
-
children: "Violation of these Terms"
|
|
1789
|
-
}),
|
|
1790
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1791
|
-
children: "Conduct that we believe is harmful to other users or our business"
|
|
1792
|
-
}),
|
|
1793
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1794
|
-
children: "Extended inactivity"
|
|
1795
|
-
}),
|
|
1796
|
-
/* @__PURE__ */ jsx2("li", {
|
|
1797
|
-
children: "Discontinuation of the Services"
|
|
1798
|
-
})
|
|
1799
|
-
]
|
|
1800
|
-
}),
|
|
1801
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
1802
|
-
className: "mt-6 font-semibold text-foreground text-xl",
|
|
1803
|
-
children: "14.3 Effect of Termination"
|
|
1804
|
-
}),
|
|
1805
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1806
|
-
className: "text-muted-foreground",
|
|
1807
|
-
children: "Upon termination, your right to use the Services ceases immediately. Provisions that by their nature should survive termination will survive, including intellectual property rights, disclaimers, limitations of liability, and dispute resolution."
|
|
1808
|
-
})
|
|
1809
|
-
]
|
|
1810
|
-
}),
|
|
1811
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1812
|
-
className: "mt-10 space-y-4",
|
|
1813
|
-
children: [
|
|
1814
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1815
|
-
className: "font-bold text-2xl text-foreground",
|
|
1816
|
-
children: "15. Governing Law & Jurisdiction"
|
|
1817
|
-
}),
|
|
1818
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
1819
|
-
className: "text-muted-foreground",
|
|
1820
|
-
children: [
|
|
1821
|
-
"These Terms are governed by and construed in accordance with the laws of ",
|
|
1822
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1823
|
-
className: "text-foreground",
|
|
1824
|
-
children: "France"
|
|
1825
|
-
}),
|
|
1826
|
-
", without regard to conflict of law principles."
|
|
1827
|
-
]
|
|
1828
|
-
}),
|
|
1829
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
1830
|
-
className: "text-muted-foreground",
|
|
1831
|
-
children: [
|
|
1832
|
-
"Any disputes arising from or related to these Terms or the Services shall be subject to the exclusive jurisdiction of the courts of",
|
|
1833
|
-
" ",
|
|
1834
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1835
|
-
className: "text-foreground",
|
|
1836
|
-
children: "Paris, France"
|
|
1837
|
-
}),
|
|
1838
|
-
"."
|
|
1839
|
-
]
|
|
1840
|
-
}),
|
|
1841
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1842
|
-
className: "text-muted-foreground",
|
|
1843
|
-
children: "If you are a consumer in the European Union, nothing in these Terms affects your rights under mandatory consumer protection laws of your country of residence."
|
|
1844
|
-
})
|
|
1845
|
-
]
|
|
1846
|
-
}),
|
|
1847
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1848
|
-
className: "mt-10 space-y-4",
|
|
1849
|
-
children: [
|
|
1850
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1851
|
-
className: "font-bold text-2xl text-foreground",
|
|
1852
|
-
children: "16. Contact"
|
|
1853
|
-
}),
|
|
1854
|
-
/* @__PURE__ */ jsx2("p", {
|
|
1855
|
-
className: "text-muted-foreground",
|
|
1856
|
-
children: "If you have any questions about these Terms, please contact us:"
|
|
1857
|
-
}),
|
|
1858
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
1859
|
-
className: "rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",
|
|
1860
|
-
children: [
|
|
1861
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
1862
|
-
children: [
|
|
1863
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1864
|
-
className: "text-foreground",
|
|
1865
|
-
children: "Email:"
|
|
1866
|
-
}),
|
|
1867
|
-
" ",
|
|
1868
|
-
/* @__PURE__ */ jsx2("a", {
|
|
1869
|
-
href: "mailto:legal@contractspec.io",
|
|
1870
|
-
className: "text-primary hover:underline",
|
|
1871
|
-
children: "legal@contractspec.io"
|
|
1872
|
-
})
|
|
1873
|
-
]
|
|
1874
|
-
}),
|
|
1875
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
1876
|
-
className: "mt-2",
|
|
1877
|
-
children: [
|
|
1878
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1879
|
-
className: "text-foreground",
|
|
1880
|
-
children: "Address:"
|
|
1881
|
-
}),
|
|
1882
|
-
" CHAMAN VENTURES, 229 rue Saint-Honoré, 75001 Paris, France"
|
|
1883
|
-
]
|
|
1884
|
-
})
|
|
1885
|
-
]
|
|
1886
|
-
})
|
|
1887
|
-
]
|
|
1888
|
-
}),
|
|
1889
|
-
/* @__PURE__ */ jsxs2("section", {
|
|
1890
|
-
className: "mt-10 space-y-4",
|
|
1891
|
-
children: [
|
|
1892
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
1893
|
-
className: "font-bold text-2xl text-foreground",
|
|
1894
|
-
children: "17. Miscellaneous"
|
|
1895
|
-
}),
|
|
1896
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
1897
|
-
className: "list-disc space-y-2 pl-6 text-muted-foreground",
|
|
1898
|
-
children: [
|
|
1899
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1900
|
-
children: [
|
|
1901
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1902
|
-
className: "text-foreground",
|
|
1903
|
-
children: "Entire Agreement:"
|
|
1904
|
-
}),
|
|
1905
|
-
" ",
|
|
1906
|
-
"These Terms, together with our Privacy Policy and any additional agreements, constitute the entire agreement between you and ContractSpec regarding the Services"
|
|
1907
|
-
]
|
|
1908
|
-
}),
|
|
1909
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1910
|
-
children: [
|
|
1911
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1912
|
-
className: "text-foreground",
|
|
1913
|
-
children: "Severability:"
|
|
1914
|
-
}),
|
|
1915
|
-
" If any provision of these Terms is found unenforceable, the remaining provisions will continue in effect"
|
|
1916
|
-
]
|
|
1917
|
-
}),
|
|
1918
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1919
|
-
children: [
|
|
1920
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1921
|
-
className: "text-foreground",
|
|
1922
|
-
children: "Waiver:"
|
|
1923
|
-
}),
|
|
1924
|
-
" Our failure to enforce any right or provision does not constitute a waiver of that right or provision"
|
|
1925
|
-
]
|
|
1926
|
-
}),
|
|
1927
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
1928
|
-
children: [
|
|
1929
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
1930
|
-
className: "text-foreground",
|
|
1931
|
-
children: "Assignment:"
|
|
1932
|
-
}),
|
|
1933
|
-
" You may not assign or transfer your rights under these Terms without our consent. We may assign our rights freely"
|
|
1934
|
-
]
|
|
1935
|
-
})
|
|
1936
|
-
]
|
|
1937
|
-
})
|
|
1938
|
-
]
|
|
1939
|
-
}),
|
|
1940
|
-
/* @__PURE__ */ jsx2("div", {
|
|
1941
|
-
className: "mt-12 border-white/10 border-t pt-8",
|
|
1942
|
-
children: /* @__PURE__ */ jsxs2("p", {
|
|
1943
|
-
className: "text-muted-foreground text-sm",
|
|
1944
|
-
children: [
|
|
1945
|
-
"For questions about these terms, please contact us at",
|
|
1946
|
-
" ",
|
|
1947
|
-
/* @__PURE__ */ jsx2("a", {
|
|
1948
|
-
href: "mailto:legal@contractspec.io",
|
|
1949
|
-
className: "text-primary hover:underline",
|
|
1950
|
-
children: "legal@contractspec.io"
|
|
1951
|
-
})
|
|
1952
|
-
]
|
|
1953
|
-
})
|
|
1954
|
-
})
|
|
1955
|
-
]
|
|
1956
|
-
})
|
|
1957
|
-
})
|
|
1958
|
-
});
|
|
1959
|
-
}
|
|
1960
|
-
export {
|
|
1961
|
-
TermsTemplate,
|
|
1962
|
-
PrivacyTemplate
|
|
1963
|
-
};
|
|
1
|
+
import{jsx as p,jsxs as T}from"react/jsx-runtime";var k={title:"Privacy Policy | ContractSpec",description:"Learn how ContractSpec collects, uses, and protects your personal data in compliance with GDPR."};function P(){return p("main",{className:"flex grow flex-col items-center justify-center pt-24",children:p("section",{className:"section-padding",children:T("div",{className:"prose prose-invert mx-auto max-w-3xl",children:[p("h1",{className:"mb-4 font-bold text-4xl",children:"Privacy Policy"}),p("p",{className:"mb-8 text-muted-foreground",children:"Last updated: December 18, 2025"}),T("section",{className:"space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"1. Who We Are"}),T("p",{className:"text-muted-foreground",children:[p("strong",{className:"text-foreground",children:"ContractSpec"})," is a brand of"," ",p("strong",{className:"text-foreground",children:"CHAMAN VENTURES"}),", a simplified joint-stock company (SASU) registered in France."]}),T("div",{className:"rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",children:[p("p",{className:"mb-2",children:p("strong",{className:"text-foreground",children:"Data Controller:"})}),T("ul",{className:"list-none space-y-1 pl-0",children:[p("li",{children:"CHAMAN VENTURES, SASU"}),p("li",{children:"RCS Paris • SIREN 989 498 902"}),p("li",{children:"229 rue Saint-Honoré, 75001 Paris, France"}),T("li",{children:["Contact:"," ",p("a",{href:"mailto:privacy@contractspec.io",className:"text-primary hover:underline",children:"privacy@contractspec.io"})]})]})]}),p("p",{className:"text-muted-foreground",children:"We are responsible for deciding how we hold and use personal data about you. We are required under data protection legislation to notify you of the information contained in this privacy policy."})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"2. What This Policy Covers"}),p("p",{className:"text-muted-foreground",children:"This privacy policy explains:"}),T("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[p("li",{children:"What personal data we collect through the ContractSpec website and services"}),p("li",{children:"Why we collect and process your data"}),p("li",{children:"How we store and protect your data"}),p("li",{children:"Who we may share your data with"}),p("li",{children:"Your rights under the General Data Protection Regulation (GDPR)"})]}),p("p",{className:"text-muted-foreground",children:"This policy applies to visitors of our website, users who sign up for our waitlist or contact us, and customers who use our services."})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"3. Data We Collect"}),p("p",{className:"text-muted-foreground",children:"We collect different types of data depending on how you interact with ContractSpec:"}),p("div",{className:"overflow-x-auto",children:T("table",{className:"w-full border-collapse text-muted-foreground text-sm",children:[p("thead",{children:T("tr",{className:"border-white/20 border-b",children:[p("th",{className:"py-3 pr-4 text-left font-semibold text-foreground",children:"Category"}),p("th",{className:"py-3 pr-4 text-left font-semibold text-foreground",children:"Data Collected"}),p("th",{className:"py-3 text-left font-semibold text-foreground",children:"When Collected"})]})}),T("tbody",{children:[T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Website Analytics"}),p("td",{className:"py-3 pr-4",children:"Page views, click events, device type, browser, approximate location (country level), session duration, referral source"}),p("td",{className:"py-3",children:"When browsing our website (with consent in EU/EEA)"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Contact / Waitlist"}),p("td",{className:"py-3 pr-4",children:"Name, email address, message content"}),p("td",{className:"py-3",children:"When you submit a form or join our waitlist"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Account Data"}),T("td",{className:"py-3 pr-4",children:[p("em",{children:"Not yet applicable"})," — We do not currently offer user accounts. This section will be updated when accounts are introduced."]}),p("td",{className:"py-3",children:"—"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Billing Data"}),T("td",{className:"py-3 pr-4",children:[p("em",{children:"Not yet applicable"})," — We do not currently process payments. This section will be updated when billing is introduced."]}),p("td",{className:"py-3",children:"—"})]})]})]})})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"4. Why We Process Data (Purposes & Legal Bases)"}),p("p",{className:"text-muted-foreground",children:"Under GDPR, we must have a lawful basis for processing your personal data. We rely on the following:"}),p("div",{className:"overflow-x-auto",children:T("table",{className:"w-full border-collapse text-muted-foreground text-sm",children:[p("thead",{children:T("tr",{className:"border-white/20 border-b",children:[p("th",{className:"py-3 pr-4 text-left font-semibold text-foreground",children:"Purpose"}),p("th",{className:"py-3 pr-4 text-left font-semibold text-foreground",children:"Legal Basis"}),p("th",{className:"py-3 text-left font-semibold text-foreground",children:"Details"})]})}),T("tbody",{children:[T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Website operation & security"}),p("td",{className:"py-3 pr-4",children:"Legitimate interest"}),p("td",{className:"py-3",children:"Ensuring our website functions correctly, preventing abuse, and maintaining security"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Analytics & improvement"}),p("td",{className:"py-3 pr-4",children:"Consent"}),p("td",{className:"py-3",children:"Understanding how users interact with our site to improve our services (gated behind consent in EU/EEA)"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Responding to enquiries"}),p("td",{className:"py-3 pr-4",children:"Legitimate interest / Contract"}),p("td",{className:"py-3",children:"Responding to your questions, processing waitlist requests, or pre-contractual discussions"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Service delivery"}),p("td",{className:"py-3 pr-4",children:"Contract"}),p("td",{className:"py-3",children:"If/when you become a customer, processing your data is necessary to fulfil our contractual obligations"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Legal compliance"}),p("td",{className:"py-3 pr-4",children:"Legal obligation"}),p("td",{className:"py-3",children:"Complying with applicable laws, regulations, or legal processes"})]})]})]})})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"5. Cookies & Tracking"}),T("p",{className:"text-muted-foreground",children:["We use ",p("strong",{className:"text-foreground",children:"PostHog"})," for product analytics to understand how visitors use our website. PostHog may use cookies or similar technologies to collect this information."]}),p("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"Consent in the EU/EEA"}),p("p",{className:"text-muted-foreground",children:"If you are located in the European Union or European Economic Area, we gate analytics tracking behind your explicit consent. Analytics cookies will not be set until you opt-in through our cookie consent mechanism."}),p("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"Withdrawing Consent / Opting Out"}),p("p",{className:"text-muted-foreground",children:"You can withdraw consent or opt out at any time:"}),T("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[T("li",{children:[p("strong",{children:"Cookie settings:"})," Use the cookie preferences link in our website footer to manage your consent"]}),T("li",{children:[p("strong",{children:"Browser settings:"})," Configure your browser to reject cookies or alert you when cookies are being set"]}),T("li",{children:[p("strong",{children:"PostHog opt-out:"}),' PostHog respects "Do Not Track" browser signals where applicable']})]}),p("p",{className:"text-muted-foreground",children:"Note: Rejecting analytics cookies will not affect your ability to use our website."})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"6. Sub-processors & Recipients"}),p("p",{className:"text-muted-foreground",children:"We share data with the following third-party service providers who process data on our behalf:"}),p("div",{className:"overflow-x-auto",children:T("table",{className:"w-full border-collapse text-muted-foreground text-sm",children:[p("thead",{children:T("tr",{className:"border-white/20 border-b",children:[p("th",{className:"py-3 pr-4 text-left font-semibold text-foreground",children:"Provider"}),p("th",{className:"py-3 pr-4 text-left font-semibold text-foreground",children:"Purpose"}),p("th",{className:"py-3 text-left font-semibold text-foreground",children:"Location"})]})}),T("tbody",{children:[T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"PostHog"}),p("td",{className:"py-3 pr-4",children:"Product analytics"}),p("td",{className:"py-3",children:"EU (PostHog Cloud EU) or US"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Vercel"}),p("td",{className:"py-3 pr-4",children:"Website hosting & CDN"}),p("td",{className:"py-3",children:"Global (including EU regions)"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Scaleway"}),p("td",{className:"py-3 pr-4",children:"Cloud infrastructure"}),p("td",{className:"py-3",children:"France / EU"})]}),T("tr",{className:"border-white/10 border-b",children:[T("td",{className:"py-3 pr-4 font-medium",children:["Email provider ",p("em",{children:"(TBD)"})]}),p("td",{className:"py-3 pr-4",children:"Transactional & marketing emails"}),p("td",{className:"py-3",children:p("em",{children:"To be confirmed"})})]}),T("tr",{className:"border-white/10 border-b",children:[T("td",{className:"py-3 pr-4 font-medium",children:["Error tracking ",p("em",{children:"(TBD)"})]}),p("td",{className:"py-3 pr-4",children:"Application error monitoring"}),p("td",{className:"py-3",children:p("em",{children:"To be confirmed"})})]}),T("tr",{className:"border-white/10 border-b",children:[T("td",{className:"py-3 pr-4 font-medium",children:["Payment processor ",p("em",{children:"(TBD)"})]}),p("td",{className:"py-3 pr-4",children:"Billing & subscription management"}),p("td",{className:"py-3",children:p("em",{children:"To be confirmed"})})]})]})]})}),p("p",{className:"mt-4 text-muted-foreground",children:"We carefully select our sub-processors and require them to maintain appropriate security measures and only process data according to our instructions."})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"7. International Data Transfers"}),p("p",{className:"text-muted-foreground",children:"As a France-based company, we aim to keep your data within the European Union wherever possible."}),p("p",{className:"text-muted-foreground",children:"However, some of our service providers may process data outside the EU/EEA. When this occurs, we ensure appropriate safeguards are in place, such as:"}),T("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[T("li",{children:[p("strong",{children:"Standard Contractual Clauses (SCCs)"})," approved by the European Commission"]}),T("li",{children:[p("strong",{children:"Adequacy decisions"})," where the recipient country has been deemed to provide adequate protection"]}),T("li",{children:[p("strong",{children:"Binding Corporate Rules"})," where applicable"]})]}),T("p",{className:"text-muted-foreground",children:["You may request more information about these safeguards by contacting us at"," ",p("a",{href:"mailto:privacy@contractspec.io",className:"text-primary hover:underline",children:"privacy@contractspec.io"}),"."]})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"8. Data Retention"}),p("p",{className:"text-muted-foreground",children:"We retain your personal data only for as long as necessary to fulfil the purposes for which it was collected:"}),p("div",{className:"overflow-x-auto",children:T("table",{className:"w-full border-collapse text-muted-foreground text-sm",children:[p("thead",{children:T("tr",{className:"border-white/20 border-b",children:[p("th",{className:"py-3 pr-4 text-left font-semibold text-foreground",children:"Data Type"}),p("th",{className:"py-3 text-left font-semibold text-foreground",children:"Retention Period"})]})}),T("tbody",{children:[T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Analytics data"}),p("td",{className:"py-3",children:"24 months from collection"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Waitlist / contact form data"}),p("td",{className:"py-3",children:"Until you request deletion or 24 months after last interaction"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Account data (when applicable)"}),p("td",{className:"py-3",children:"Duration of account plus 12 months after closure"})]}),T("tr",{className:"border-white/10 border-b",children:[p("td",{className:"py-3 pr-4 font-medium",children:"Billing records (when applicable)"}),p("td",{className:"py-3",children:"10 years (French legal requirement)"})]})]})]})}),p("p",{className:"mt-4 text-muted-foreground",children:"We may retain certain data longer if required by law or to establish, exercise, or defend legal claims."})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"9. Your Rights Under GDPR"}),p("p",{className:"text-muted-foreground",children:"As a data subject in the EU, you have the following rights:"}),T("ul",{className:"list-disc space-y-3 pl-6 text-muted-foreground",children:[T("li",{children:[p("strong",{className:"text-foreground",children:"Right to access"})," — Request a copy of the personal data we hold about you"]}),T("li",{children:[p("strong",{className:"text-foreground",children:"Right to rectification"})," ","— Request correction of inaccurate or incomplete data"]}),T("li",{children:[p("strong",{className:"text-foreground",children:'Right to erasure ("right to be forgotten")'})," ","— Request deletion of your personal data in certain circumstances"]}),T("li",{children:[p("strong",{className:"text-foreground",children:"Right to restriction"})," ","— Request that we limit how we use your data"]}),T("li",{children:[p("strong",{className:"text-foreground",children:"Right to data portability"})," ","— Receive your data in a structured, machine-readable format"]}),T("li",{children:[p("strong",{className:"text-foreground",children:"Right to object"})," — Object to processing based on legitimate interests or direct marketing"]}),T("li",{children:[p("strong",{className:"text-foreground",children:"Right to withdraw consent"})," ","— Where processing is based on consent, withdraw it at any time"]})]}),T("p",{className:"mt-4 text-muted-foreground",children:["To exercise any of these rights, please contact us at"," ",p("a",{href:"mailto:privacy@contractspec.io",className:"text-primary hover:underline",children:"privacy@contractspec.io"}),". We will respond within one month as required by GDPR."]})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"10. Security"}),p("p",{className:"text-muted-foreground",children:"We implement appropriate technical and organisational measures to protect your personal data against unauthorised access, alteration, disclosure, or destruction. These measures include:"}),T("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[p("li",{children:"Encryption of data in transit (TLS/HTTPS)"}),p("li",{children:"Encryption of data at rest where appropriate"}),p("li",{children:"Access controls and authentication"}),p("li",{children:"Regular security reviews and updates"}),p("li",{children:"Careful vetting of sub-processors"})]}),p("p",{className:"text-muted-foreground",children:"While we strive to protect your data, no method of transmission over the Internet or electronic storage is 100% secure. We cannot guarantee absolute security but are committed to continuous improvement."})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"11. Contact & Complaints"}),p("p",{className:"text-muted-foreground",children:"If you have any questions, concerns, or requests regarding this privacy policy or our data practices, please contact us:"}),T("div",{className:"rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",children:[T("p",{children:[p("strong",{className:"text-foreground",children:"Email:"})," ",p("a",{href:"mailto:privacy@contractspec.io",className:"text-primary hover:underline",children:"privacy@contractspec.io"})]}),T("p",{className:"mt-2",children:[p("strong",{className:"text-foreground",children:"Address:"})," CHAMAN VENTURES, 229 rue Saint-Honoré, 75001 Paris, France"]})]}),p("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"Supervisory Authority"}),p("p",{className:"text-muted-foreground",children:"If you are not satisfied with our response or believe we are processing your data unlawfully, you have the right to lodge a complaint with a supervisory authority. In France, the relevant authority is:"}),T("div",{className:"rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",children:[p("p",{children:p("strong",{className:"text-foreground",children:"Commission Nationale de l'Informatique et des Libertés (CNIL)"})}),p("p",{children:"3 Place de Fontenoy, TSA 80715, 75334 Paris Cedex 07"}),T("p",{children:["Website:"," ",p("a",{href:"https://www.cnil.fr",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"www.cnil.fr"})]})]})]}),T("section",{className:"mt-10 space-y-4",children:[p("h2",{className:"font-bold text-2xl text-foreground",children:"12. Changes to This Policy"}),p("p",{className:"text-muted-foreground",children:'We may update this privacy policy from time to time to reflect changes in our practices, technology, legal requirements, or for other operational reasons. We will notify you of any material changes by updating the "Last updated" date at the top of this page.'}),p("p",{className:"text-muted-foreground",children:"We encourage you to review this policy periodically to stay informed about how we protect your data."})]}),p("div",{className:"mt-12 border-white/10 border-t pt-8",children:T("p",{className:"text-muted-foreground text-sm",children:["For questions about this privacy policy, please contact us at"," ",p("a",{href:"mailto:privacy@contractspec.io",className:"text-primary hover:underline",children:"privacy@contractspec.io"})]})})]})})})}import{jsx as m,jsxs as f}from"react/jsx-runtime";var y={title:"Terms of Service | ContractSpec",description:"Terms of Service for ContractSpec. Read our terms governing use of the ContractSpec website and services."};function b(){return m("main",{className:"flex grow flex-col items-center justify-center pt-24",children:m("section",{className:"section-padding",children:f("div",{className:"prose prose-invert mx-auto max-w-3xl",children:[m("h1",{className:"mb-4 font-bold text-4xl",children:"Terms of Service"}),m("p",{className:"mb-8 text-muted-foreground",children:"Last updated: December 18, 2025"}),f("section",{className:"space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"1. Definitions"}),m("p",{className:"text-muted-foreground",children:'In these Terms of Service ("Terms"), the following definitions apply:'}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[f("li",{children:[m("strong",{className:"text-foreground",children:'"ContractSpec"'}),","," ",m("strong",{className:"text-foreground",children:'"we"'}),","," ",m("strong",{className:"text-foreground",children:'"us"'}),", or"," ",m("strong",{className:"text-foreground",children:'"our"'})," refers to CHAMAN VENTURES, SASU, operating under the ContractSpec brand."]}),f("li",{children:[m("strong",{className:"text-foreground",children:'"Service"'})," or"," ",m("strong",{className:"text-foreground",children:'"Services"'})," refers to the ContractSpec website, ContractSpec Studio, APIs, documentation, and any related products or features we provide."]}),f("li",{children:[m("strong",{className:"text-foreground",children:'"User"'}),","," ",m("strong",{className:"text-foreground",children:'"you"'}),", or"," ",m("strong",{className:"text-foreground",children:'"your"'})," refers to any individual or entity accessing or using the Services."]}),f("li",{children:[m("strong",{className:"text-foreground",children:'"User Content"'})," ","refers to any data, specifications, configurations, or other materials you create, upload, or submit through the Services."]}),f("li",{children:[m("strong",{className:"text-foreground",children:'"ContractSpec Core"'})," ","refers to the open-source components of ContractSpec available under their respective open-source licenses."]}),f("li",{children:[m("strong",{className:"text-foreground",children:'"Design Partner"'})," ","refers to early users who have entered into a separate design partnership arrangement with us."]})]})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"2. Who We Are"}),f("p",{className:"text-muted-foreground",children:["ContractSpec is a brand of"," ",m("strong",{className:"text-foreground",children:"CHAMAN VENTURES"}),", a simplified joint-stock company (SASU) registered in France."]}),m("div",{className:"rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",children:f("ul",{className:"list-none space-y-1 pl-0",children:[m("li",{children:"CHAMAN VENTURES, SASU"}),m("li",{children:"RCS Paris • SIREN 989 498 902"}),m("li",{children:"229 rue Saint-Honoré, 75001 Paris, France"}),f("li",{children:["Contact:"," ",m("a",{href:"mailto:legal@contractspec.io",className:"text-primary hover:underline",children:"legal@contractspec.io"})]})]})})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"3. Acceptance of Terms"}),f("p",{className:"text-muted-foreground",children:["By accessing or using ContractSpec, you agree to be bound by these Terms and our"," ",m("a",{href:"/legal/privacy",className:"text-primary hover:underline",children:"Privacy Policy"}),". If you do not agree to these Terms, you must not use the Services."]}),m("p",{className:"text-muted-foreground",children:'We may update these Terms from time to time. We will notify you of material changes by updating the "Last updated" date. Continued use of the Services after changes constitutes acceptance of the updated Terms.'})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"4. Eligibility"}),m("p",{className:"text-muted-foreground",children:"To use the Services, you must:"}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[m("li",{children:"Be at least 18 years old or the age of majority in your jurisdiction"}),m("li",{children:"Have the legal capacity to enter into binding contracts"}),m("li",{children:"Not be prohibited from using the Services under applicable laws"}),m("li",{children:"If acting on behalf of an organisation, have the authority to bind that organisation to these Terms"})]})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"5. Accounts"}),f("div",{className:"rounded-lg border border-yellow-500/20 bg-yellow-500/5 p-4 text-muted-foreground",children:[m("p",{className:"mb-2 font-medium text-yellow-500",children:"Note"}),m("p",{children:"User accounts are not yet available. When accounts are introduced, the following terms will apply:"})]}),f("ul",{className:"mt-4 list-disc space-y-2 pl-6 text-muted-foreground",children:[m("li",{children:"You are responsible for maintaining the confidentiality of your account credentials"}),m("li",{children:"You are responsible for all activities that occur under your account"}),m("li",{children:"You must notify us immediately of any unauthorised use of your account"}),m("li",{children:"We reserve the right to suspend or terminate accounts that violate these Terms"})]})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"6. License & Intellectual Property"}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"6.1 Our Intellectual Property"}),m("p",{className:"text-muted-foreground",children:"The ContractSpec name, logo, website design, proprietary software, documentation, and all associated intellectual property rights are owned by CHAMAN VENTURES. Subject to these Terms, we grant you a limited, non-exclusive, non-transferable, revocable license to access and use the Services for their intended purpose."}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"6.2 Open-Source Components"}),m("p",{className:"text-muted-foreground",children:'Certain components of ContractSpec ("ContractSpec Core") are made available as open-source software under their respective licenses (e.g., MIT, Apache 2.0). Your use of open-source components is governed by those licenses, which may grant you additional rights not covered by these Terms. In case of conflict between these Terms and an open-source license, the open-source license prevails for the applicable component.'}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"6.3 Your Content"}),f("p",{className:"text-muted-foreground",children:[m("strong",{className:"text-foreground",children:"You retain ownership"})," ","of all User Content you create, upload, or submit through the Services. This includes your specifications, configurations, and any other materials you generate."]}),m("p",{className:"text-muted-foreground",children:"By using the Services, you grant us a limited, non-exclusive, worldwide, royalty-free license to host, store, process, and display your User Content solely to the extent necessary to provide and improve the Services. This license terminates when you delete your User Content or close your account, except where retention is required by law or for legitimate business purposes (e.g., backups, legal compliance)."}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"6.4 Feedback"}),m("p",{className:"text-muted-foreground",children:"If you provide feedback, suggestions, or ideas about the Services, you grant us a perpetual, irrevocable, royalty-free license to use, modify, and incorporate such feedback without obligation to you."})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"7. Acceptable Use"}),m("p",{className:"text-muted-foreground",children:"When using the Services, you agree not to:"}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[f("li",{children:[m("strong",{className:"text-foreground",children:"Abuse the Services:"})," ","Use the Services in a manner that disrupts, damages, or impairs our infrastructure or other users' experience"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Probe security:"})," ","Attempt to gain unauthorised access to our systems, networks, or data; perform security testing without prior written permission"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Distribute harmful content:"})," ","Upload, share, or distribute malware, viruses, or other malicious code"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Engage in illegal activity:"})," ","Use the Services for any purpose that is unlawful, fraudulent, or harmful"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Interfere with operations:"})," ","Attempt to interfere with, disrupt, or circumvent any security or access controls"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Violate rights:"})," ","Infringe upon the intellectual property, privacy, or other rights of third parties"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Misrepresent identity:"})," ","Impersonate any person or entity, or falsely claim affiliation with ContractSpec"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Circumvent limits:"})," ","Attempt to bypass any usage limits, rate limits, or access restrictions"]})]}),m("p",{className:"mt-4 text-muted-foreground",children:"We reserve the right to investigate violations and take appropriate action, including suspension or termination of access."})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"8. Beta & Preview Services"}),f("div",{className:"rounded-lg border border-orange-500/20 bg-orange-500/5 p-4 text-muted-foreground",children:[m("p",{className:"mb-2 font-medium text-orange-400",children:"⚠️ Important"}),m("p",{children:'ContractSpec is currently in active development. Some features may be labelled as "Beta", "Preview", "Alpha", or similar designations.'})]}),m("p",{className:"mt-4 text-muted-foreground",children:"By using beta or preview features, you acknowledge:"}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[f("li",{children:[m("strong",{className:"text-foreground",children:"Things may break:"})," ","Beta features may contain bugs, errors, or unexpected behaviour"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"No availability guarantee:"})," ","We do not guarantee uptime, availability, or continuity of beta features"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Features may change or disappear:"})," ","We may modify, suspend, or discontinue beta features at any time without notice"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Not for production:"})," ","Beta features should not be relied upon for mission-critical or production workloads unless you accept these risks"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Data may be lost:"})," ","We cannot guarantee the preservation of data created using beta features"]})]})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"9. Design Partner Program"}),m("p",{className:"text-muted-foreground",children:"We offer a Design Partner program for early users who wish to collaborate closely with us to shape the product. If you participate as a Design Partner:"}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"9.1 Scope"}),m("p",{className:"text-muted-foreground",children:"Design Partners receive early access to features, provide feedback, and help validate product direction. The specific scope of your participation will be outlined in a separate agreement or communication."}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"9.2 Feedback"}),m("p",{className:"text-muted-foreground",children:"We value your input. Feedback you provide may be used to improve the Services. See Section 6.4 for licensing terms regarding feedback."}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"9.3 Confidentiality"}),m("p",{className:"text-muted-foreground",children:"Design Partners may receive access to confidential or pre-release information. Unless otherwise specified in a separate agreement, you agree to keep such information confidential and not share it publicly without our prior written consent."}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"9.4 Mutual Expectations"}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[f("li",{children:[m("strong",{className:"text-foreground",children:"From us:"})," Regular communications, responsiveness to feedback, and transparency about product direction"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"From you:"})," Timely and honest feedback, reasonable engagement, and adherence to these Terms"]})]})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"10. Fees & Billing"}),f("div",{className:"rounded-lg border border-yellow-500/20 bg-yellow-500/5 p-4 text-muted-foreground",children:[m("p",{className:"mb-2 font-medium text-yellow-500",children:"Note"}),m("p",{children:"Paid plans are not yet available. When paid plans are introduced, the following terms will apply:"})]}),f("ul",{className:"mt-4 list-disc space-y-2 pl-6 text-muted-foreground",children:[m("li",{children:"Fees will be clearly communicated before you commit to a paid plan"}),m("li",{children:"Payment terms, billing cycles, and refund policies will be specified at that time"}),m("li",{children:"We reserve the right to change pricing with reasonable notice"}),m("li",{children:"Failure to pay may result in suspension or termination of paid features"})]})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"11. Third-Party Services"}),m("p",{className:"text-muted-foreground",children:"The Services may integrate with or contain links to third-party services, websites, or content. We do not control and are not responsible for third-party services."}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[m("li",{children:"Your use of third-party services is governed by their respective terms and policies"}),m("li",{children:"We make no warranties or representations about third-party services"}),m("li",{children:"Links to third-party sites do not imply endorsement"}),m("li",{children:"You are responsible for reviewing the terms of any third-party services you use"})]})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"12. Disclaimer of Warranties"}),m("div",{className:"rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",children:m("p",{className:"font-medium uppercase",children:'THE SERVICES ARE PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED.'})}),m("p",{className:"mt-4 text-muted-foreground",children:"To the fullest extent permitted by law, we disclaim:"}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[m("li",{children:"Warranties of merchantability, fitness for a particular purpose, and non-infringement"}),m("li",{children:"Any warranty that the Services will be uninterrupted, secure, or error-free"}),m("li",{children:"Any warranty regarding the accuracy, reliability, or completeness of content"}),m("li",{children:"Any warranty that defects will be corrected or that the Services are free of viruses or harmful components"})]}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"No Professional Advice"}),m("p",{className:"text-muted-foreground",children:"The Services are tools for software development. Nothing in the Services constitutes legal, financial, technical, or other professional advice. You are solely responsible for evaluating the suitability of the Services for your needs and for any decisions you make based on the output."})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"13. Limitation of Liability"}),m("p",{className:"text-muted-foreground",children:"To the maximum extent permitted by applicable law:"}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[f("li",{children:[m("strong",{className:"text-foreground",children:"No indirect damages:"})," ","We shall not be liable for any indirect, incidental, special, consequential, or punitive damages, including loss of profits, data, goodwill, or other intangible losses"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Limited direct liability:"})," ","Our total aggregate liability for any claims arising from or related to the Services shall not exceed the greater of: (a) the amount you paid us in the 12 months preceding the claim, or (b) €100"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Exceptions:"})," These limitations do not apply to liability that cannot be excluded under applicable law, including liability for fraud or wilful misconduct"]})]}),m("p",{className:"mt-4 text-muted-foreground",children:"You acknowledge that these limitations reflect a reasonable allocation of risk and are a fundamental basis of the agreement between us."})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"14. Termination"}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"14.1 By You"}),m("p",{className:"text-muted-foreground",children:"You may stop using the Services at any time. When accounts are available, you may close your account through the account settings or by contacting us."}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"14.2 By Us"}),m("p",{className:"text-muted-foreground",children:"We may suspend or terminate your access to the Services at any time, with or without cause, with or without notice. Reasons for termination may include:"}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[m("li",{children:"Violation of these Terms"}),m("li",{children:"Conduct that we believe is harmful to other users or our business"}),m("li",{children:"Extended inactivity"}),m("li",{children:"Discontinuation of the Services"})]}),m("h3",{className:"mt-6 font-semibold text-foreground text-xl",children:"14.3 Effect of Termination"}),m("p",{className:"text-muted-foreground",children:"Upon termination, your right to use the Services ceases immediately. Provisions that by their nature should survive termination will survive, including intellectual property rights, disclaimers, limitations of liability, and dispute resolution."})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"15. Governing Law & Jurisdiction"}),f("p",{className:"text-muted-foreground",children:["These Terms are governed by and construed in accordance with the laws of ",m("strong",{className:"text-foreground",children:"France"}),", without regard to conflict of law principles."]}),f("p",{className:"text-muted-foreground",children:["Any disputes arising from or related to these Terms or the Services shall be subject to the exclusive jurisdiction of the courts of"," ",m("strong",{className:"text-foreground",children:"Paris, France"}),"."]}),m("p",{className:"text-muted-foreground",children:"If you are a consumer in the European Union, nothing in these Terms affects your rights under mandatory consumer protection laws of your country of residence."})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"16. Contact"}),m("p",{className:"text-muted-foreground",children:"If you have any questions about these Terms, please contact us:"}),f("div",{className:"rounded-lg border border-white/10 bg-white/5 p-4 text-muted-foreground",children:[f("p",{children:[m("strong",{className:"text-foreground",children:"Email:"})," ",m("a",{href:"mailto:legal@contractspec.io",className:"text-primary hover:underline",children:"legal@contractspec.io"})]}),f("p",{className:"mt-2",children:[m("strong",{className:"text-foreground",children:"Address:"})," CHAMAN VENTURES, 229 rue Saint-Honoré, 75001 Paris, France"]})]})]}),f("section",{className:"mt-10 space-y-4",children:[m("h2",{className:"font-bold text-2xl text-foreground",children:"17. Miscellaneous"}),f("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[f("li",{children:[m("strong",{className:"text-foreground",children:"Entire Agreement:"})," ","These Terms, together with our Privacy Policy and any additional agreements, constitute the entire agreement between you and ContractSpec regarding the Services"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Severability:"})," If any provision of these Terms is found unenforceable, the remaining provisions will continue in effect"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Waiver:"})," Our failure to enforce any right or provision does not constitute a waiver of that right or provision"]}),f("li",{children:[m("strong",{className:"text-foreground",children:"Assignment:"})," You may not assign or transfer your rights under these Terms without our consent. We may assign our rights freely"]})]})]}),m("div",{className:"mt-12 border-white/10 border-t pt-8",children:f("p",{className:"text-muted-foreground text-sm",children:["For questions about these terms, please contact us at"," ",m("a",{href:"mailto:legal@contractspec.io",className:"text-primary hover:underline",children:"legal@contractspec.io"})]})})]})})})}export{b as TermsTemplate,P as PrivacyTemplate};
|