+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/.vitepress/theme/KitsuLayout.vue b/docs/.vitepress/theme/KitsuLayout.vue
index e5a79ec..06f4485 100644
--- a/docs/.vitepress/theme/KitsuLayout.vue
+++ b/docs/.vitepress/theme/KitsuLayout.vue
@@ -2,6 +2,7 @@
import DefaultTheme from 'vitepress/theme'
import NavbarSignupButton from "./NavbarSignupButton.vue"
+import ExitIntentPopup from "./ExitIntentPopup.vue"
const { Layout } = DefaultTheme
@@ -11,5 +12,9 @@ const { Layout } = DefaultTheme
+
+
+
+
\ No newline at end of file
diff --git a/docs/.vitepress/theme/composables/useABTests.js b/docs/.vitepress/theme/composables/useABTests.js
new file mode 100644
index 0000000..1872bda
--- /dev/null
+++ b/docs/.vitepress/theme/composables/useABTests.js
@@ -0,0 +1,56 @@
+// .vitepress/theme/composables/useABTests.js
+import { ref, onMounted } from "vue";
+
+function pickWeightedVariant(variants) {
+ const total = variants.reduce((sum, v) => sum + v.weight, 0);
+ let r = Math.random() * total;
+ for (const v of variants) {
+ if (r < v.weight) return v.name;
+ r -= v.weight;
+ }
+ return variants[variants.length - 1].name;
+}
+
+function readCookie(name) {
+ const match = document.cookie.match(
+ new RegExp(`(?:^|; )${name}=([^;]*)`)
+ );
+ return match ? decodeURIComponent(match[1]) : null;
+}
+
+function writeCookie(name, value, maxAgeSeconds) {
+ document.cookie = `${name}=${encodeURIComponent(
+ value
+ )}; path=/; max-age=${maxAgeSeconds}; SameSite=Lax`;
+}
+
+/**
+ * VitePress has no per-request server (pages are prerendered once at
+ * build time), so there's no SSR-aware cookie API like Nuxt's useCookie.
+ * All cookie reads/writes and Matomo tracking are deferred to onMounted
+ * so nothing touches `document`/`window` during the static build.
+ * `variant` is `null` until then, which is fine since the popup itself
+ * is already wrapped in .
+ */
+export function useABTest(testId, variants) {
+ const cookieName = `ab_${testId}`;
+ const variant = ref(null);
+
+ onMounted(() => {
+ let value = readCookie(cookieName);
+
+ if (!value) {
+ value = pickWeightedVariant(variants);
+ writeCookie(cookieName, value, 60 * 60 * 24 * 90); // 90 days
+ }
+
+ variant.value = value;
+
+ if (window._paq) {
+ window._paq.push(["setCustomDimension", 1, value]);
+ window._paq.push(["trackEvent", "AB Test", "1", value]);
+ }
+ });
+
+ return variant;
+}
\ No newline at end of file
diff --git a/docs/public/logo-kitsu.svg b/docs/public/logo-kitsu.svg
new file mode 100644
index 0000000..b3a951b
--- /dev/null
+++ b/docs/public/logo-kitsu.svg
@@ -0,0 +1 @@
+
diff --git a/docs/self-hosting/vs-cloud-hosting.md b/docs/self-hosting/vs-cloud-hosting.md
index f7b8139..22ea7d9 100644
--- a/docs/self-hosting/vs-cloud-hosting.md
+++ b/docs/self-hosting/vs-cloud-hosting.md
@@ -1,3 +1,7 @@
+
+
# Self-hosting vs Cloud Hosting
Choosing how to host Kitsu has a direct impact on setup time, operational overhead, scalability, and long-term flexibility. This page outlines the key differences between cloud-hosted Kitsu and self-hosted Kitsu to help animation studios decide which approach best fits their needs.
@@ -9,6 +13,8 @@ Both options provide the same core features, but differ significantly in how muc
Alternatively, you can also [consider on-premise cloud hosting](https://www.cg-wire.com/pricing) to get the best of both worlds.
+
+
## Deployment & Setup
### Cloud Hosting
@@ -240,4 +246,6 @@ Provides maximum portability.
| **Portability** | Simple migration within supported paths | Maximum portability across environments |
| **Support** | Priority support included | No official support if conflicts occur |
-### Choose [On-Premise Cloud Hosting](https://www.cg-wire.com/pricing) if you want the best of both
+### Choose [On-Premise Cloud Hosting](https://www.cg-wire.com/pricing) if you want the best of both worlds.
+
+
\ No newline at end of file
diff --git a/docs/start-here/cloud-hosting.md b/docs/start-here/cloud-hosting.md
index 406a965..38c77af 100644
--- a/docs/start-here/cloud-hosting.md
+++ b/docs/start-here/cloud-hosting.md
@@ -1,3 +1,7 @@
+
+
# Cloud Hosting
Kitsu is a web application that requires a server to run. You can either host
@@ -33,6 +37,8 @@ gazu.log_in("me@studio.com", "password")
projects = gazu.project.all_open_projects()
```
+
+
## What's included
- **Automatic updates** -- always on the latest Kitsu version
diff --git a/docs/start-here/dev-quickstart.md b/docs/start-here/dev-quickstart.md
index 43fc070..34dd8c4 100644
--- a/docs/start-here/dev-quickstart.md
+++ b/docs/start-here/dev-quickstart.md
@@ -1,3 +1,7 @@
+
+
# Developer Quickstart
## 1. Kitsu API Server Installation
@@ -8,6 +12,8 @@ There are three options to install a Kitsu API server:
1. [Self-hosting](/self-hosting/vs-cloud-hosting) - if you have a sysops team to manage your servers.
1. [Docker](/start-here/docker) - to set up a local dev environment for testing.
+
+
## 2. Setting up the API client
If you're using a SDK, install it first:
diff --git a/docs/start-here/migrate-to-kitsu.md b/docs/start-here/migrate-to-kitsu.md
index 152433d..62bc874 100644
--- a/docs/start-here/migrate-to-kitsu.md
+++ b/docs/start-here/migrate-to-kitsu.md
@@ -1,3 +1,7 @@
+
+
# Migrate To Kitsu
This guide provides a high-level overview for developers migrating an existing production tracking system to **Kitsu**, CGWire's open-source production management platform for animation, VFX, and games.
@@ -85,3 +89,5 @@ Every studio pipeline is unique. CGWire provides professional services to assist
* Minimizing production downtime during transition
[Contact the CGWire team for setup and migration assistance!](https://www.cg-wire.com/contact)
+
+
\ No newline at end of file
diff --git a/docs/start-here/why-kitsu.md b/docs/start-here/why-kitsu.md
index d8eb442..4c70f6a 100644
--- a/docs/start-here/why-kitsu.md
+++ b/docs/start-here/why-kitsu.md
@@ -1,3 +1,7 @@
+
+
# Why Kitsu
Production pipelines need tools that are reliable, flexible, and built for the specific demands of animation, VFX, and game production. Generic project management software lacks the structure studios depend on: shot and asset tracking, review workflows, DCC integrations, and API-driven automation. Kitsu was created to fill that gap as an open-source platform that studios can own, extend, and rely on for the long term.
@@ -34,3 +38,5 @@ Kitsu is developed by [CGWire](https://www.cg-wire.com/) and shaped by feedback
* Learn about [Cloud Hosting](/start-here/cloud-hosting)
* Learn about [Self-Hosting](/self-hosting/vs-cloud-hosting)
+
+
\ No newline at end of file