-<div class="site-nav-dropdown-btn-container"><i class="site-nav-dropdown-btn-icon" onclick="handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"><span class="glyphicon glyphicon-menu-down" aria-hidden="true"></span></i></div></div><ul class="site-nav-dropdown-container site-nav-list"><li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/adaptations/adaptations.html">Adaptations</a></div></li> <li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/adaptations/configuration.html">Configuration</a></div></li> <li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/adaptations/samplePage.html">Sample Adaptation Page</a></div></li></ul></li> <li><div class="site-nav-default-list-item site-nav-list-item-0" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/components/all.html">Components</a> <div class="site-nav-dropdown-btn-container"><i class="site-nav-dropdown-btn-icon site-nav-rotate-icon" onclick="handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"><span class="glyphicon glyphicon-menu-down" aria-hidden="true"></span></i></div></div><ul class="site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"><li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/components/toggles.html">Toggles</a></div></li> <li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/components/tabs.html">Tabs</a></div></li> <li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/components/placeholders.html">Placeholders</a></div></li> <li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/components/settings.html">Settings Dialog</a></div></li> <li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/components/share.html">Focused Views</a></div></li> <li><div class="site-nav-default-list-item site-nav-list-item-1" onclick="handleSiteNavClick(this)"><a href="/devdocs/authorGuide/components/labels.html">Labels</a></div></li></ul></li><!--]--><!--v-if--></ul><!--]--></div></div><!--]--><!--v-if--></nav> <div id="content-wrapper"><div data-v-ef898034><nav aria-label="breadcrumb" class="breadcrumb-divider" data-v-ef898034><ol class="breadcrumb" data-v-ef898034><li class="notlink breadcrumb-marker" data-v-ef898034> ›› </li><!--[--><!--]--></ol></nav></div> <p><span id="title" class="d-none">Site Adaptations</span></p> <h1 id="site-adaptations">Site Adaptations<a class="fa fa-anchor" href="#site-adaptations" onclick="event.stopPropagation()"></a></h1> <p><strong>Adaptations</strong> are pre-configured site variants. It is meant for websites to use the same site page, but allow different branding, customizability for a specific audience just from a single URL parameter.</p> <p>A use case is: A documentation site shared across multiple institutions, each with their own colour scheme and default content selections.</p> <hr> <h2 id="how-it-works">How It Works<a class="fa fa-anchor" href="#how-it-works" onclick="event.stopPropagation()"></a></h2> <p>An adaptation is a JSON file hosted alongside your site content. When a user visits a URL with <code class="hljs inline no-lang">?adapt=<id></code> or a hash indicator like <code class="hljs inline no-lang">#/id</code> (for example, <code class="hljs inline no-lang">https://example.com/#/dark</code>), CustardUI fetches that file, applies the theme and state overrides, and persists the active adaptation to <code class="hljs inline no-lang">localStorage</code> — so it remains active across all pages without the parameter or hash needing to be in every URL.</p> <p><strong>Activation priority (highest wins):</strong></p> <ol><li><code class="hljs inline no-lang"><meta name="cv-adapt" content="<id>"></code> on the page — forces a specific adaptation for that page on every visit</li> <li>Explicit URL activation — <code class="hljs inline no-lang">?adapt=<id></code> parameter or hash <code class="hljs inline no-lang">#/id</code> indicator</li> <li><code class="hljs inline no-lang">localStorage</code> — persisted from a previous activation</li></ol> <hr> <h2 id="quick-start">Quick Start<a class="fa fa-anchor" href="#quick-start" onclick="event.stopPropagation()"></a></h2> <p><strong><span class="large">Step 1: Create the adaptation JSON file</span></strong></p> <p>Place the file at <code class="hljs inline no-lang">{baseUrl}/{id}/{id}.json</code>. For a site with <code class="hljs inline no-lang">data-base-url="/docs"</code> and adaptation id <code class="hljs inline no-lang">dark</code>:</p> <pre><code class="hljs"><span>/docs/dark/dark.json
0 commit comments