site:
url: http://localhost:5252
- title: Preview Site
-title: Home
+ title: Brand Docs
+ domains:
+ - name: abc
+ title: Project ABC
+ versions:
+ - url: '#'
+ string: '1.1'
+ latest: true
+ - url: '#'
+ string: '1.0'
+ - name: xyz
+ title: Project XYZ
+ selected: true
+ versions: &domain_versions
+ - url: '#'
+ string: '6.0'
+ latest: true
+ selected: true
+ - url: '#'
+ string: '5.2'
+ - url: '#'
+ string: '5.1'
+ - url: '#'
+ string: '5.0'
+ - name: 123
+ title: Project 123
+ versions:
+ - url: '#'
+ string: '2.2'
+ latest: true
+ - url: '#'
+ string: '2.1'
+ - url: '#'
+ string: '2.0'
+title: Hardware and Software Requirements
+home: false
+siteRootUrl: /
+editUrl: http://example.com/project-xyz/blob/master/index.adoc
+domain:
+ name: xyz
+ title: Project XYZ
+ type: component
+ version:
+ string: '6.0'
+ versioned: true
+ versions: *domain_versions
+breadcrumbs:
+- title: Quickstart
+ url: '#'
+ currentPath: true
+- title: Hardware and Software Requirements
+ url: '#'
+ currentPage: true
+versions:
+- string: '6.0'
+ url: '#'
+- string: '5.2'
+ url: '#'
+- string: '5.1'
+ url: '#'
+navigation:
+- title: Project XYZ
+ url: '#'
+ currentPath: true
+ items:
+ - title: Quickstart
+ url: '#'
+ currentPath: true
+ items:
+ - title: Hardware and Software Requirements
+ url: '#'
+ currentPage: true
+ items: []
+ - title: IDE Integration
+ url: '#'
+ items: []
+ - title: Application Tutorial
+ url: '#'
+ items: []
+ - title: Reference
+ url: '#'
+ items:
+ - title: Keyboard Shortcuts
+ url: '#'
+ items: []
+ - title: Importing and Exporting
+ url: '#'
+ items: []
--- /dev/null
+'use strict'
+
+module.exports = (a, b) => a && b
--- /dev/null
+'use strict'
+
+module.exports = (a, b) => a === b
--- /dev/null
+'use strict'
+
+module.exports = (domain) => domain.versioned && domain.versions.length > 1
--- /dev/null
+'use strict'
+
+module.exports = (value) => (value || 0) + 1
--- /dev/null
+'use strict'
+
+module.exports = (a, b) => a || b
--- /dev/null
+'use strict'
+
+// FIXME the UI model should be prepopulated with this collection
+module.exports = (domains, domainName, otherPageVersions) => {
+ const domain = domains.find((candidate) => candidate.name === domainName)
+ const pageVersions = []
+ domain.versions.forEach((domainVersion) => {
+ const pageVersion = otherPageVersions.find((candidate) => candidate.string === domainVersion.string)
+ if (pageVersion) {
+ pageVersions.push(pageVersion)
+ } else {
+ pageVersions.push(Object.assign({ missing: true }, domainVersion))
+ }
+ })
+
+ return pageVersions
+}
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>{{title}}{{#if site.title}} :: {{site.title}}{{/if}}</title>
+ <link rel="stylesheet" href="{{or uiRootPath themeRootPath}}/css/site.css">
+{{> head}}
+ </head>
+ <body class="status-404">
+{{> header}}
+ <div class="main-wrapper">
+ <main class="main" role="main">
+ <article class="doc">
+ <h1>Page Not Found</h1>
+ </article>
+ </main>
+ </div>
+{{> footer}}
+ </body>
+</html>
<!DOCTYPE html>
<html lang="en">
-<head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <link rel="stylesheet" href="{{uiRootPath}}/css/site.css">
- <title>{{title}}{{#if site.title}} // {{site.title}}{{/if}}</title>
-</head>
-<body class="article">
-{{{contents}}}
-{{> footer-scripts}}
-</body>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>{{title}}{{#if site.title}} :: {{site.title}}{{/if}}</title>
+ {{#if canonicalUrl}}
+ <link rel="canonical" href="{{canonicalUrl}}">
+ {{/if}}
+ {{#if description}}
+ <meta name="description" content="{{description}}">
+ {{/if}}
+ {{#if keywords}}
+ <meta name="keywords" content="{{keywords}}">
+ {{/if}}
+ <link rel="stylesheet" href="{{or uiRootPath themeRootPath}}/css/site.css">
+{{> head}}
+ </head>
+ <body class="article">
+{{> header}}
+{{> main}}
+{{> footer}}
+ </body>
</html>
--- /dev/null
+<article class="doc">
+<h1>{{title}}</h1>
+{{{contents}}}
+</article>
--- /dev/null
+<nav class="crumbs" role="navigation" aria-label="breadcrumbs">
+ <ul>
+ {{#if domain.title}}
+ {{#unless (or domain.root (eq domain.title breadcrumbs.0.title))}}
+ <li class="crumb"><a href="{{{domain.url}}}">{{{domain.title}}}</a></li>
+ {{/unless}}
+ {{/if}}
+ {{#each breadcrumbs}}
+ {{#if ./url}}
+ <li class="crumb"><a href="{{{./url}}}">{{{./title}}}</a></li>
+ {{else}}
+ <li class="crumb">{{{./title}}}</li>
+ {{/if}}
+ {{/each}}
+ </ul>
+</nav>
--- /dev/null
+<footer class="footer">
+ <p>This page was built using the Antora default UI.</p>
+ <p>The source code for this UI is licensed under the MPL-2.0 license.</p>
+</footer>
-<script src="{{uiRootPath}}/js/vendor/highlight.js"></script>
+<script src="{{or uiRootPath themeRootPath}}/js/vendor/highlight.js"></script>
<script>hljs.initHighlighting()</script>
--- /dev/null
+{{> footer-content}}
+{{> footer-scripts}}
--- /dev/null
+{{! Add additional tags to head here}}
--- /dev/null
+<header class="header" role="banner">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <a class="navbar-item" href="{{or site.url siteRootUrl}}">{{site.title}}</a>
+ <button class="navbar-burger" data-target="topbar-nav">
+ <span></span>
+ <span></span>
+ <span></span>
+ </button>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="#">Home</a>
+ <div class="navbar-item has-dropdown is-hoverable">
+ <a class="navbar-link" href="#">Products</a>
+ <div class="navbar-dropdown">
+ <a class="navbar-item" href="#">Product A</a>
+ <a class="navbar-item" href="#">Product B</a>
+ <a class="navbar-item" href="#">Product C</a>
+ </div>
+ </div>
+ <div class="navbar-item has-dropdown is-hoverable">
+ <a class="navbar-link" href="#">Services</a>
+ <div class="navbar-dropdown">
+ <a class="navbar-item" href="#">Service A</a>
+ <a class="navbar-item" href="#">Service B</a>
+ <a class="navbar-item" href="#">Service C</a>
+ </div>
+ </div>
+ <div class="navbar-item has-dropdown is-hoverable">
+ <a class="navbar-link" href="#">Resources</a>
+ <div class="navbar-dropdown">
+ <a class="navbar-item" href="#">Resource A</a>
+ <a class="navbar-item" href="#">Resource B</a>
+ <a class="navbar-item" href="#">Resource C</a>
+ </div>
+ </div>
+ <div class="navbar-item">
+ <span class="control">
+ <a class="button is-primary" href="#">Download</a>
+ </span>
+ </div>
+ </div>
+ </div>
+ </nav>
+</header>
--- /dev/null
+{{> header-content}}
--- /dev/null
+<div class="main-wrapper">
+{{> navigation}}
+ <main class="main" role="main">
+{{> toolbar}}
+{{> article}}
+ </main>
+</div>
--- /dev/null
+<div class="navigation-domain is-active" data-panel="domain">
+ <nav class="nav-menu">
+{{> navigation-tree}}
+ </nav>
+</div>
--- /dev/null
+<div class="navigation-explore" data-panel="explore">
+ <div class="current">
+ <span class="title">{{domain.title}}</span>
+ <span class="version">{{domain.version.string}}</span>
+ </div>
+ <ul class="domains">
+ {{#each site.domains}}
+ <li class="domain{{#if ./selected}} is-current{{/if}}">
+ <span class="title">{{{./title}}}</span>
+ <ul class="versions">
+ {{#each ./versions}}
+ <li class="version{{#if ./selected}} is-current{{/if}}{{#if ./latest}} is-latest{{/if}}">
+ <a href="{{{./url}}}">{{./string}}</a>
+ </li>
+ {{/each}}
+ </ul>
+ </li>
+ {{/each}}
+ </ul>
+</div>
--- /dev/null
+{{#if navigation.length}}
+<ul class="nav-list">
+ {{#each navigation}}
+ <li class="nav-item{{#if ./currentPath}} is-active is-current-path{{/if}}{{#if ./currentPage}} is-current-page{{/if}}" data-depth="{{#if ../level}}{{../level}}{{else}}0{{/if}}">
+ {{#if (and ../level ./items.length)}}
+ <button class="nav-toggle"></button>
+ {{/if}}
+ {{#if ./url}}
+ <a class="nav-link" href="{{{./url}}}">{{{./title}}}</a>
+ {{else}}
+ <span class="nav-text">{{{./title}}}</span>
+ {{/if}}
+{{> navigation-tree navigation=./items level=(inc ../level)}}
+ </li>
+ {{/each}}
+</ul>
+{{/if}}
--- /dev/null
+<div class="navigation-container">
+ <aside class="navigation" role="navigation">
+ <button class="navigation-close"></button>
+ <div class="panels">
+{{> navigation-domain}}
+{{> navigation-explore}}
+ </div>
+ </aside>
+</div>
--- /dev/null
+{{#if (has-versions domain)}}
+<div class="page-versions">
+ <button class="versions-menu-toggle" title="Other versions of page">{{domain.version.string}}</button>
+ <div class="versions-menu">
+ {{#each (page-versions site.domains domain.name versions)}}
+ <a class="version{{#if (eq ./string ../domain.version.string)}} is-current{{/if}}{{#if ./missing}} is-missing{{/if}}" href="{{{./url}}}">{{./string}}</a>
+ {{/each}}
+ </div>
+</div>
+{{/if}}
--- /dev/null
+<div class="toolbar" role="navigation">
+ <button class="navigation-open"></button>
+ {{#if siteRootUrl}}
+ <a href="{{siteRootUrl}}" class="home-link{{#if home}} is-current{{/if}}"></a>
+ {{/if}}
+{{> breadcrumbs}}
+{{> page-versions}}
+ <div class="edit-this-page"><a href="{{editUrl}}">Edit this Page</a></div>
+</div>
.src('**/*.html', { base: siteSrc, cwd: siteSrc })
.pipe(
map((file, next) => {
- const compiledLayout = layouts['default.hbs']
+ const compiledLayout = layouts[file.stem === '404' ? '404.hbs' : 'default.hbs']
const siteRootPath = path.relative(path.dirname(file.path), path.resolve(siteSrc))
mockUIModel['siteRootPath'] = siteRootPath
mockUIModel['siteRootUrl'] = path.join(siteRootPath, 'index.html')