aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/main/resources/dokka
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/base/src/main/resources/dokka')
-rw-r--r--plugins/base/src/main/resources/dokka/format/gfm.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/html-as-java.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/html.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/java-layout-html.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/jekyll.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/kotlin-website-html.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/format/markdown.properties2
-rwxr-xr-xplugins/base/src/main/resources/dokka/images/arrow_down.svg3
-rw-r--r--plugins/base/src/main/resources/dokka/images/docs_logo.svg7
-rwxr-xr-xplugins/base/src/main/resources/dokka/images/logo-icon.svg3
-rwxr-xr-xplugins/base/src/main/resources/dokka/images/logo-text.svg6
-rw-r--r--plugins/base/src/main/resources/dokka/inbound-link-resolver/dokka-default.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/inbound-link-resolver/java-layout-html.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/inbound-link-resolver/javadoc.properties2
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/clipboard.js52
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/navigationLoader.js54
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js226
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/scripts.js11
-rw-r--r--plugins/base/src/main/resources/dokka/scripts/search.js7
-rw-r--r--plugins/base/src/main/resources/dokka/styles/jetbrains-mono.css13
-rw-r--r--plugins/base/src/main/resources/dokka/styles/style.css1048
21 files changed, 1450 insertions, 0 deletions
diff --git a/plugins/base/src/main/resources/dokka/format/gfm.properties b/plugins/base/src/main/resources/dokka/format/gfm.properties
new file mode 100644
index 00000000..5e8f7aa8
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/format/gfm.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.Formats.GFMFormatDescriptor
+description=Produces documentation in GitHub-flavored markdown format
diff --git a/plugins/base/src/main/resources/dokka/format/html-as-java.properties b/plugins/base/src/main/resources/dokka/format/html-as-java.properties
new file mode 100644
index 00000000..f598f377
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/format/html-as-java.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.Formats.HtmlAsJavaFormatDescriptor
+description=Produces output in HTML format using Java syntax \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/format/html.properties b/plugins/base/src/main/resources/dokka/format/html.properties
new file mode 100644
index 00000000..7881dfae
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/format/html.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.Formats.HtmlFormatDescriptor
+description=Produces output in HTML format \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/format/java-layout-html.properties b/plugins/base/src/main/resources/dokka/format/java-layout-html.properties
new file mode 100644
index 00000000..fbb2bbed
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/format/java-layout-html.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.Formats.JavaLayoutHtmlFormatDescriptor
+description=Produces Kotlin Style Docs with Javadoc like layout \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/format/jekyll.properties b/plugins/base/src/main/resources/dokka/format/jekyll.properties
new file mode 100644
index 00000000..b11401a4
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/format/jekyll.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.Formats.JekyllFormatDescriptor
+description=Produces documentation in Jekyll format \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/format/kotlin-website-html.properties b/plugins/base/src/main/resources/dokka/format/kotlin-website-html.properties
new file mode 100644
index 00000000..f4c320b9
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/format/kotlin-website-html.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.Formats.KotlinWebsiteHtmlFormatDescriptor
+description=Generates Kotlin website documentation \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/format/markdown.properties b/plugins/base/src/main/resources/dokka/format/markdown.properties
new file mode 100644
index 00000000..6217a6df
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/format/markdown.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.Formats.MarkdownFormatDescriptor
+description=Produces documentation in markdown format \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/images/arrow_down.svg b/plugins/base/src/main/resources/dokka/images/arrow_down.svg
new file mode 100755
index 00000000..89e7df47
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/images/arrow_down.svg
@@ -0,0 +1,3 @@
+<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.71824 1.66658L9.01113 0.959473L5.00497 4.96447L1.00008 0.959473L0.292969 1.66658L5.01113 6.38474L9.71824 1.66658Z" fill="#A1AAB4"/>
+</svg>
diff --git a/plugins/base/src/main/resources/dokka/images/docs_logo.svg b/plugins/base/src/main/resources/dokka/images/docs_logo.svg
new file mode 100644
index 00000000..7c1e3ae8
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/images/docs_logo.svg
@@ -0,0 +1,7 @@
+<svg width="125" height="27" viewBox="0 0 125 27" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M89.1611 7.6297V25.6345V25.6867H103.843V21.8039H93.3589V10.3852H103.843V6.50244H89.1611V7.6297Z" fill="#27282C"/>
+<path d="M124.989 21.8039L114.778 10.3852H124.905V6.50244H109.059V10.3852L119.459 21.8039H109.059V25.6867H125V21.8039H124.989Z" fill="#27282C"/>
+<path d="M58.2978 7.76556C56.5872 6.46086 54.4463 5.67804 52.1271 5.67804C46.5336 5.67804 42 10.1871 42 15.7503C42 21.3135 46.5336 25.8226 52.1271 25.8226C54.4463 25.8226 56.5872 25.0502 58.2978 23.735V25.7182H62.4955V0H58.2978V7.76556ZM52.1271 21.8041C48.7584 21.8041 46.0298 19.0903 46.0298 15.7399C46.0298 12.3894 48.7584 9.67563 52.1271 9.67563C55.4958 9.67563 58.2243 12.3894 58.2243 15.7399C58.2138 19.0903 55.4853 21.8041 52.1271 21.8041Z" fill="#27282C"/>
+<path d="M75.9698 5.8656C70.3763 5.8656 65.8428 10.3746 65.8428 15.9379C65.8428 21.5011 70.3763 26.0101 75.9698 26.0101C81.5633 26.0101 86.0969 21.5011 86.0969 15.9379C86.0969 10.3746 81.5633 5.8656 75.9698 5.8656ZM75.9698 21.9916C72.6012 21.9916 69.8726 19.2779 69.8726 15.9274C69.8726 12.577 72.6012 9.86319 75.9698 9.86319C79.3385 9.86319 82.0671 12.577 82.0671 15.9274C82.0671 19.2779 79.3385 21.9916 75.9698 21.9916Z" fill="#27282C"/>
+<path d="M26 26H0V0H26L12.9243 12.9747L26 26Z" fill="#F8873C"/>
+</svg>
diff --git a/plugins/base/src/main/resources/dokka/images/logo-icon.svg b/plugins/base/src/main/resources/dokka/images/logo-icon.svg
new file mode 100755
index 00000000..1b3b3670
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/images/logo-icon.svg
@@ -0,0 +1,3 @@
+<svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M26 26H0V0H26L12.9243 12.9747L26 26Z" fill="#F8873C"/>
+</svg>
diff --git a/plugins/base/src/main/resources/dokka/images/logo-text.svg b/plugins/base/src/main/resources/dokka/images/logo-text.svg
new file mode 100755
index 00000000..7bf3e6c5
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/images/logo-text.svg
@@ -0,0 +1,6 @@
+<svg width="83" height="27" viewBox="0 0 83 27" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M47.1611 7.6297V25.6345V25.6867H61.8428V21.8039H51.3589V10.3852H61.8428V6.50244H47.1611V7.6297Z" fill="#27282C"/>
+<path d="M82.9891 21.8039L72.778 10.3852H82.9051V6.50244H67.0586V10.3852L77.4585 21.8039H67.0586V25.6867H82.9996V21.8039H82.9891Z" fill="#27282C"/>
+<path d="M16.2978 7.76556C14.5872 6.46086 12.4463 5.67804 10.1271 5.67804C4.53357 5.67804 0 10.1871 0 15.7503C0 21.3135 4.53357 25.8226 10.1271 25.8226C12.4463 25.8226 14.5872 25.0502 16.2978 23.735V25.7182H20.4955V0H16.2978V7.76556ZM10.1271 21.8041C6.75838 21.8041 4.02984 19.0903 4.02984 15.7399C4.02984 12.3894 6.75838 9.67563 10.1271 9.67563C13.4958 9.67563 16.2243 12.3894 16.2243 15.7399C16.2138 19.0903 13.4853 21.8041 10.1271 21.8041Z" fill="#27282C"/>
+<path d="M33.9703 5.86566C28.3768 5.86566 23.8433 10.3747 23.8433 15.9379C23.8433 21.5011 28.3768 26.0102 33.9703 26.0102C39.5638 26.0102 44.0974 21.5011 44.0974 15.9379C44.0974 10.3747 39.5638 5.86566 33.9703 5.86566ZM33.9703 21.9917C30.6016 21.9917 27.8731 19.2779 27.8731 15.9275C27.8731 12.577 30.6016 9.86325 33.9703 9.86325C37.339 9.86325 40.0676 12.577 40.0676 15.9275C40.0676 19.2779 37.339 21.9917 33.9703 21.9917Z" fill="#27282C"/>
+</svg>
diff --git a/plugins/base/src/main/resources/dokka/inbound-link-resolver/dokka-default.properties b/plugins/base/src/main/resources/dokka/inbound-link-resolver/dokka-default.properties
new file mode 100644
index 00000000..c484a920
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/inbound-link-resolver/dokka-default.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.InboundExternalLinkResolutionService$Dokka
+description=Uses Dokka Default resolver \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/inbound-link-resolver/java-layout-html.properties b/plugins/base/src/main/resources/dokka/inbound-link-resolver/java-layout-html.properties
new file mode 100644
index 00000000..3b61eabe
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/inbound-link-resolver/java-layout-html.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.Formats.JavaLayoutHtmlInboundLinkResolutionService
+description=Resolver for JavaLayoutHtml \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/inbound-link-resolver/javadoc.properties b/plugins/base/src/main/resources/dokka/inbound-link-resolver/javadoc.properties
new file mode 100644
index 00000000..0d5d7d17
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/inbound-link-resolver/javadoc.properties
@@ -0,0 +1,2 @@
+class=org.jetbrains.dokka.InboundExternalLinkResolutionService$Javadoc
+description=Uses Javadoc Default resolver \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/scripts/clipboard.js b/plugins/base/src/main/resources/dokka/scripts/clipboard.js
new file mode 100644
index 00000000..b00ce246
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/clipboard.js
@@ -0,0 +1,52 @@
+window.addEventListener('load', () => {
+ document.querySelectorAll('span.copy-icon').forEach(element => {
+ element.addEventListener('click', (el) => copyElementsContentToClipboard(element));
+ })
+
+ document.querySelectorAll('span.anchor-icon').forEach(element => {
+ element.addEventListener('click', (el) => {
+ if(element.hasAttribute('pointing-to')){
+ const location = hrefWithoutCurrentlyUsedAnchor() + '#' + element.getAttribute('pointing-to')
+ copyTextToClipboard(element, location)
+ }
+ });
+ })
+})
+
+const copyElementsContentToClipboard = (element) => {
+ const selection = window.getSelection();
+ const range = document.createRange();
+ range.selectNodeContents(element.parentNode.parentNode);
+ selection.removeAllRanges();
+ selection.addRange(range);
+
+ copyAndShowPopup(element, () => selection.removeAllRanges())
+}
+
+const copyTextToClipboard = (element, text) => {
+ var textarea = document.createElement("textarea");
+ textarea.textContent = text;
+ textarea.style.position = "fixed";
+ document.body.appendChild(textarea);
+ textarea.select();
+
+ copyAndShowPopup(element, () => document.body.removeChild(textarea))
+}
+
+const copyAndShowPopup = (element, after) => {
+ try {
+ document.execCommand('copy');
+ element.nextElementSibling.classList.add('active-popup');
+ setTimeout(() => {
+ element.nextElementSibling.classList.remove('active-popup');
+ }, 1200);
+ } catch (e) {
+ console.error('Failed to write to clipboard:', e)
+ }
+ finally {
+ if(after) after()
+ }
+}
+
+const hrefWithoutCurrentlyUsedAnchor = () => window.location.href.split('#')[0]
+
diff --git a/plugins/base/src/main/resources/dokka/scripts/navigationLoader.js b/plugins/base/src/main/resources/dokka/scripts/navigationLoader.js
new file mode 100644
index 00000000..c2f60ec5
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/navigationLoader.js
@@ -0,0 +1,54 @@
+window.addEventListener('load', () => {
+ fetch(pathToRoot + "navigation.html")
+ .then(response => response.text())
+ .then(data => {
+ document.getElementById("sideMenu").innerHTML = data;
+ }).then(() => {
+ document.querySelectorAll(".overview > a").forEach(link => {
+ link.setAttribute("href", pathToRoot + link.getAttribute("href"));
+ })
+ }).then(() => {
+ document.querySelectorAll(".sideMenuPart").forEach(nav => {
+ if (!nav.classList.contains("hidden")) nav.classList.add("hidden")
+ })
+ }).then(() => {
+ revealNavigationForCurrentPage()
+ })
+
+ /* Smooth scrolling support for going to the top of the page */
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
+ anchor.addEventListener('click', function (e) {
+ e.preventDefault();
+
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
+ behavior: 'smooth'
+ });
+ });
+ });
+})
+
+revealNavigationForCurrentPage = () => {
+ let pageId = document.getElementById("content").attributes["pageIds"].value.toString();
+ let parts = document.querySelectorAll(".sideMenuPart");
+ let found = 0;
+ do {
+ parts.forEach(part => {
+ if (part.attributes['pageId'].value.indexOf(pageId) !== -1 && found === 0) {
+ found = 1;
+ if (part.classList.contains("hidden")){
+ part.classList.remove("hidden");
+ part.setAttribute('data-active',"");
+ }
+ revealParents(part)
+ }
+ });
+ pageId = pageId.substring(0, pageId.lastIndexOf("/"))
+ } while (pageId.indexOf("/") !== -1 && found === 0)
+};
+
+revealParents = (part) => {
+ if (part.classList.contains("sideMenuPart")) {
+ if (part.classList.contains("hidden")) part.classList.remove("hidden");
+ revealParents(part.parentNode)
+ }
+}; \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js b/plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js
new file mode 100644
index 00000000..6f10b08a
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/platformContentHandler.js
@@ -0,0 +1,226 @@
+filteringContext = {
+ dependencies: {},
+ restrictedDependencies: [],
+ activeFilters: []
+}
+window.addEventListener('load', () => {
+ document.querySelectorAll("div[data-platform-hinted]")
+ .forEach(elem => elem.addEventListener('click', (event) => togglePlatformDependent(event,elem)))
+ document.querySelectorAll("div[tabs-section]")
+ .forEach(elem => elem.addEventListener('click', (event) => toggleSectionsEventHandler(event)))
+ const filterSection = document.getElementById('filter-section')
+ if (filterSection) {
+ filterSection.addEventListener('click', (event) => filterButtonHandler(event))
+ initializeFiltering()
+ }
+ initTabs()
+ handleAnchor()
+})
+
+function handleAnchor() {
+ let searchForTab = function(element) {
+ if(element && element.hasAttribute) {
+ if(element.hasAttribute("data-togglable")) return element;
+ else return searchForTab(element.parentNode)
+ } else return null
+ }
+ let anchor = window.location.hash
+ if (anchor != "") {
+ anchor = anchor.substring(1)
+ let element = document.querySelector('a[data-name="' + anchor+'"]')
+ if (element) {
+ let tab = searchForTab(element)
+ if (tab) {
+ let found = document.querySelector('.tabs-section > .section-tab[data-togglable="' + tab.getAttribute("data-togglable") + '"]')
+ toggleSections(tab)
+ element.scrollIntoView({behavior: "smooth"})
+ }
+ }
+ }
+}
+
+function initTabs(){
+ document.querySelectorAll("div[tabs-section]")
+ .forEach(element => {
+ showCorrespondingTabBody(element)
+ element.addEventListener('click', (event) => toggleSectionsEventHandler(event))
+ })
+ let cached = localStorage.getItem("active-tab")
+ if (cached) {
+ let parsed = JSON.parse(cached)
+ let tab = document.querySelector('div[tabs-section] > button[data-togglable="' + parsed + '"]')
+ if(tab) {
+ toggleSections(tab)
+ }
+ }
+}
+
+function showCorrespondingTabBody(element){
+ const key = element.querySelector("button[data-active]").getAttribute("data-togglable")
+ document.querySelector(".tabs-section-body")
+ .querySelector("div[data-togglable='" + key + "']")
+ .setAttribute("data-active", "")
+}
+
+function filterButtonHandler(event) {
+ if(event.target.tagName == "BUTTON" && event.target.hasAttribute("data-filter")) {
+ let sourceset = event.target.getAttribute("data-filter")
+ if(filteringContext.activeFilters.indexOf(sourceset) != -1) {
+ filterSourceset(sourceset)
+ } else {
+ unfilterSourceset(sourceset)
+ }
+ }
+}
+
+function initializeFiltering() {
+ filteringContext.dependencies = JSON.parse(sourceset_dependencies)
+ document.querySelectorAll("#filter-section > button")
+ .forEach(p => filteringContext.restrictedDependencies.push(p.getAttribute("data-filter")))
+ Object.keys(filteringContext.dependencies).forEach(p => {
+ filteringContext.dependencies[p] = filteringContext.dependencies[p]
+ .filter(q => -1 !== filteringContext.restrictedDependencies.indexOf(q))
+ })
+ let cached = window.localStorage.getItem('inactive-filters')
+ if (cached) {
+ let parsed = JSON.parse(cached)
+ filteringContext.activeFilters = filteringContext.restrictedDependencies
+ .filter(q => parsed.indexOf(q) == -1 )
+ } else {
+ filteringContext.activeFilters = filteringContext.restrictedDependencies
+ }
+ refreshFiltering()
+}
+
+function filterSourceset(sourceset) {
+ filteringContext.activeFilters = filteringContext.activeFilters.filter(p => p != sourceset)
+ refreshFiltering()
+ addSourcesetFilterToCache(sourceset)
+}
+
+function unfilterSourceset(sourceset) {
+ if(filteringContext.activeFilters.length == 0) {
+ filteringContext.activeFilters = filteringContext.dependencies[sourceset].concat([sourceset])
+ refreshFiltering()
+ filteringContext.dependencies[sourceset].concat([sourceset]).forEach(p => removeSourcesetFilterFromCache(p))
+ } else {
+ filteringContext.activeFilters.push(sourceset)
+ refreshFiltering()
+ removeSourcesetFilterFromCache(sourceset)
+ }
+
+}
+
+function addSourcesetFilterToCache(sourceset) {
+ let cached = localStorage.getItem('inactive-filters')
+ if (cached) {
+ let parsed = JSON.parse(cached)
+ localStorage.setItem('inactive-filters', JSON.stringify(parsed.concat([sourceset])))
+ } else {
+ localStorage.setItem('inactive-filters', JSON.stringify([sourceset]))
+ }
+}
+
+function removeSourcesetFilterFromCache(sourceset) {
+ let cached = localStorage.getItem('inactive-filters')
+ if (cached) {
+ let parsed = JSON.parse(cached)
+ localStorage.setItem('inactive-filters', JSON.stringify(parsed.filter(p => p != sourceset)))
+ }
+}
+
+function toggleSections(target) {
+ localStorage.setItem('active-tab', JSON.stringify(target.getAttribute("data-togglable")))
+ const activateTabs = (containerClass) => {
+ for(const element of document.getElementsByClassName(containerClass)){
+ for(const child of element.children){
+ if(child.getAttribute("data-togglable") === target.getAttribute("data-togglable")){
+ child.setAttribute("data-active", "")
+ } else {
+ child.removeAttribute("data-active")
+ }
+ }
+ }
+ }
+
+ activateTabs("tabs-section")
+ activateTabs("tabs-section-body")
+}
+
+function toggleSectionsEventHandler(evt){
+ if(!evt.target.getAttribute("data-togglable")) return
+ toggleSections(evt.target)
+}
+
+function togglePlatformDependent(e, container) {
+ let target = e.target
+ if (target.tagName != 'BUTTON') return;
+ let index = target.getAttribute('data-toggle')
+
+ for(let child of container.children){
+ if(child.hasAttribute('data-toggle-list')){
+ for(let bm of child.children){
+ if(bm == target){
+ bm.setAttribute('data-active',"")
+ } else if(bm != target) {
+ bm.removeAttribute('data-active')
+ }
+ }
+ }
+ else if(child.getAttribute('data-togglable') == index) {
+ child.setAttribute('data-active',"")
+ }
+ else {
+ child.removeAttribute('data-active')
+ }
+ }
+}
+
+function refreshFiltering() {
+ let sourcesetList = filteringContext.activeFilters
+ document.querySelectorAll("[data-filterable-set]")
+ .forEach(
+ elem => {
+ let platformList = elem.getAttribute("data-filterable-set").split(' ').filter(v => -1 !== sourcesetList.indexOf(v))
+ elem.setAttribute("data-filterable-current", platformList.join(' '))
+ }
+ )
+ refreshFilterButtons()
+ refreshPlatformTabs()
+}
+
+function refreshPlatformTabs() {
+ document.querySelectorAll(".platform-hinted > .platform-bookmarks-row").forEach(
+ p => {
+ let active = false;
+ let firstAvailable = null
+ p.childNodes.forEach(
+ element => {
+ if(element.getAttribute("data-filterable-current") != ''){
+ if( firstAvailable == null) {
+ firstAvailable = element
+ }
+ if(element.hasAttribute("data-active")) {
+ active = true;
+ }
+ }
+ }
+ )
+ if( active == false && firstAvailable) {
+ firstAvailable.click()
+ }
+ }
+ )
+}
+
+function refreshFilterButtons() {
+ document.querySelectorAll("#filter-section > button")
+ .forEach(f => {
+ if(filteringContext.activeFilters.indexOf(f.getAttribute("data-filter")) != -1){
+ f.setAttribute("data-active","")
+ } else {
+ f.removeAttribute("data-active")
+ }
+ })
+}
+
diff --git a/plugins/base/src/main/resources/dokka/scripts/scripts.js b/plugins/base/src/main/resources/dokka/scripts/scripts.js
new file mode 100644
index 00000000..c2e29b9f
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/scripts.js
@@ -0,0 +1,11 @@
+document.getElementById("navigationFilter").oninput = function (e) {
+ var input = e.target.value;
+ var menuParts = document.getElementsByClassName("sideMenuPart")
+ for (let part of menuParts) {
+ if(part.querySelector("a").textContent.startsWith(input)) {
+ part.classList.remove("filtered");
+ } else {
+ part.classList.add("filtered");
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/scripts/search.js b/plugins/base/src/main/resources/dokka/scripts/search.js
new file mode 100644
index 00000000..04d88ab5
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/scripts/search.js
@@ -0,0 +1,7 @@
+let query = new URLSearchParams(window.location.search).get("query");
+document.getElementById("searchTitle").innerHTML += '"' + query + '":';
+document.getElementById("searchTable").innerHTML = pages
+ .filter(el => el.name.toLowerCase().startsWith(query.toLowerCase()))
+ .reduce((acc, element) => {
+ return acc + '<tr><td><a href="' + element.location + '">' + element.name + '</a></td></tr>'
+ }, ""); \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/styles/jetbrains-mono.css b/plugins/base/src/main/resources/dokka/styles/jetbrains-mono.css
new file mode 100644
index 00000000..2af32a92
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/styles/jetbrains-mono.css
@@ -0,0 +1,13 @@
+@font-face{
+ font-family: 'JetBrains Mono';
+ src: url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/web/woff2/JetBrainsMono-Regular.woff2') format('woff2');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face{
+ font-family: 'JetBrains Mono';
+ src: url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/web/woff2/JetBrainsMono-Bold.woff2') format('woff2');
+ font-weight: bold;
+ font-style: normal;
+} \ No newline at end of file
diff --git a/plugins/base/src/main/resources/dokka/styles/style.css b/plugins/base/src/main/resources/dokka/styles/style.css
new file mode 100644
index 00000000..57ffb8a5
--- /dev/null
+++ b/plugins/base/src/main/resources/dokka/styles/style.css
@@ -0,0 +1,1048 @@
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:300i,400,700);
+@import url('https://rsms.me/inter/inter.css');
+@import url('jetbrains-mono.css');
+
+:root {
+ --breadcrumb-font-color: #A6AFBA;
+ --hover-link-color: #5B5DEF;
+ --footer-height: 64px;
+ --footer-padding-top: 48px;
+ --horizontal-spacing-for-content: 42px;
+}
+
+#content {
+ padding: 0 var(--horizontal-spacing-for-content);
+ height: calc(100% - var(--footer-height) - var(--footer-padding-top));
+}
+
+.breadcrumbs {
+ padding: 24px 0;
+ color: var(--breadcrumb-font-color);
+}
+
+.breadcrumbs a {
+ color: var(--breadcrumb-font-color)
+}
+
+.breadcrumbs a:hover {
+ color: var(--hover-link-color)
+}
+
+.tabs-section > .section-tab:first-child {
+ margin-left: 0;
+}
+
+.section-tab {
+ border: 0;
+ cursor: pointer;
+ background-color: transparent;
+ border-bottom: 1px solid #DADFE6;
+ padding: 11px 3px;
+ font-size: 14px;
+ color: #637282;
+ outline: none;
+ margin: 0 8px;
+}
+
+.section-tab:hover {
+ color: #282E34;
+ border-bottom: 2px solid var(--hover-link-color);
+}
+
+.section-tab[data-active=''] {
+ color: #282E34;
+ border-bottom: 2px solid var(--hover-link-color);
+}
+
+.tabs-section-body {
+ margin: 12px 0;
+ background-color: white;
+}
+
+.tabs-section-body > .table {
+ margin: 12px 0;
+}
+
+.tabs-section-body .with-platform-tabs > div {
+ margin: 0 12px;
+}
+
+.tabs-section-body .table .with-platform-tabs > div {
+ margin: 0;
+}
+
+.tabs-section-body .with-platform-tabs {
+ padding-top: 12px;
+ padding-bottom: 12px;
+}
+
+.tabs-section-body .with-platform-tabs .sourceset-depenent-content .table-row {
+ background-color: #f4f4f4;
+ border-bottom: 2px solid white;
+}
+
+.cover > .platform-hinted {
+ padding-top: 24px;
+ margin-top: 24px;
+ padding-bottom: 16px;
+}
+
+.cover {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ padding-bottom: 48px;
+}
+
+.tabbedcontent {
+ padding: 14px 0;
+}
+
+.cover .platform-hinted .sourceset-depenent-content > .symbol,
+.cover > .symbol {
+ background-color: white;
+}
+
+.cover .platform-hinted.with-platform-tabs .sourceset-depenent-content > .symbol {
+ background-color: #f4f4f4;
+}
+
+.cover .platform-hinted.with-platform-tabs .sourceset-depenent-content > .block ~ .symbol {
+ padding-top: 16px;
+ padding-left: 0;
+}
+
+.cover .sourceset-depenent-content > .block {
+ padding: 16px 0;
+ font-size: 18px;
+ line-height: 28px;
+}
+
+.cover .platform-hinted.with-platform-tabs .sourceset-depenent-content > .block {
+ padding: 0;
+ font-size: 14px;
+}
+
+.cover ~ .divergent-group {
+ margin-top: 24px;
+ padding: 24px 8px 8px 8px;
+}
+
+.cover ~ .divergent-group .main-subrow .symbol {
+ width: 100%;
+}
+
+.divergent-group {
+ background-color: white;
+ padding: 16px 8px;
+ margin-bottom: 2px;
+}
+
+.divergent-group .table-row {
+ background-color: #F4F4F4;
+ border-bottom: 2px solid white;
+}
+
+.title > .divergent-group:first-of-type {
+ padding-top: 0;
+}
+
+#container {
+ display: flex;
+ flex-direction: row;
+ min-height: 100%;
+}
+
+#main {
+ width: 100%;
+ max-width: calc(100% - 280px);
+}
+
+#leftColumn {
+ width: 280px;
+ min-height: 100%;
+ border-right: 1px solid #DADFE6;
+ flex: 0 0 auto;
+}
+
+@media screen and (max-width: 600px) {
+ #container {
+ flex-direction: column;
+ }
+
+ #leftColumn {
+ border-right: none;
+ }
+}
+
+#sideMenu {
+ max-height: calc(100% - 90px);
+ padding-top: 16px;
+ position: relative;
+}
+
+#sideMenu img {
+ margin: 1em 0.25em;
+}
+
+#sideMenu hr {
+ background: #DADFE6;
+}
+
+#searchBar {
+ float: right;
+}
+
+#logo {
+ background-size: 125px 26px;
+ border-bottom: 1px solid #DADFE6;
+ background-repeat: no-repeat;
+ background-image: url(../images/docs_logo.svg);
+ background-origin: content-box;
+ padding-left: 24px;
+ padding-top: 24px;
+ height: 48px;
+}
+
+.monospace,
+.code {
+ font-family: monospace;
+}
+
+.sample-container, .code-area {
+ display: flex;
+ flex-direction: column;
+}
+
+code.paragraph {
+ display: block;
+}
+
+.overview > .navButton {
+ height: 100%;
+ align-items: center;
+ display: flex;
+ justify-content: flex-end;
+ padding-right: 24px;
+}
+
+.strikethrough {
+ text-decoration: line-through;
+}
+
+.symbol:empty {
+ padding: 0;
+}
+
+.symbol {
+ background-color: #F4F4F4;
+ align-items: center;
+ display: block;
+ padding: 8px 8px 8px 16px;
+ box-sizing: border-box;
+ white-space: pre-wrap;
+ font-weight: bold;
+ position: relative;
+ line-height: 24px;
+}
+
+.symbol span.copy-icon path {
+ fill: #637282;
+}
+
+.symbol span.copy-icon:hover path {
+ fill: black;
+}
+
+.copy-popup-wrapper {
+ display: none;
+ align-items: center;
+ position: absolute;
+ z-index: 1000;
+ background: white;
+ font-weight: normal;
+ font-family: 'Inter', "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ width: max-content;
+ font-size: 14px;
+ cursor: default;
+ border: 1px solid #D8DCE1;
+ box-sizing: border-box;
+ box-shadow: 0px 5px 10px var(--ring-popup-shadow-color);
+ border-radius: 3px;
+}
+
+.copy-popup-wrapper.popup-to-left {
+ /* since it is in position absolute we can just move it to the left to make it always appear on the left side of the icon */
+ left: -15em;
+}
+
+.copy-popup-wrapper.active-popup {
+ display: flex !important;
+}
+
+.copy-popup-wrapper:hover {
+ font-weight: normal;
+}
+
+.copy-popup-wrapper svg {
+ padding: 8px;
+}
+
+.copy-popup-wrapper > span:last-child {
+ padding-right: 14px;
+}
+
+.symbol .top-right-position {
+ /* it is important for a parent to have a position: relative */
+ position: absolute;
+ top: 8px;
+ right: 8px;
+}
+
+.sideMenuPart > .overview {
+ height: 40px;
+ display: flex;
+ align-items: center;
+ position: relative;
+ user-select: none; /* there's a weird bug with text selection */
+}
+
+.sideMenuPart a {
+ display: flex;
+ align-items: center;
+ flex: 1;
+ height: 100%;
+ color: #637282;
+ overflow: hidden;
+}
+
+.sideMenuPart > .overview:before {
+ box-sizing: border-box;
+ content: '';
+ top: 0;
+ width: 280px;
+ right: 0;
+ bottom: 0;
+ position: absolute;
+ z-index: -1;
+}
+
+.overview:hover:before {
+ background-color: #DADFE5;
+}
+
+#nav-submenu {
+ padding-left: 24px;
+}
+
+.sideMenuPart {
+ padding-left: 12px;
+ box-sizing: border-box;
+}
+
+.sideMenuPart .hidden > .overview .navButtonContent::before {
+ transform: rotate(0deg);
+}
+
+.sideMenuPart > .overview .navButtonContent::before {
+ content: url("../images/arrow_down.svg");
+ height: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ transform: rotate(180deg);
+}
+
+.sideMenuPart.hidden > .navButton .navButtonContent::after {
+ content: '\02192';
+}
+
+.sideMenuPart.hidden > .sideMenuPart {
+ height: 0;
+ visibility: hidden;
+}
+
+.filtered > a, .filtered > .navButton {
+ display: none;
+}
+
+body, table {
+ font-family: 'Inter', "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ background: #F4F4F4;
+ font-style: normal;
+ font-weight: normal;
+ font-size: 14px;
+ line-height: 24px;
+ margin: 0;
+ height: 100%;
+ /*max-width: 1440px; TODO: This results in worse experience on ultrawide, but on 16:9/16:10 looks better.*/
+}
+
+table {
+ width: 100%;
+ border-collapse: collapse;
+ background-color: #ffffff;
+ padding: 5px;
+}
+
+tbody > tr {
+ border-bottom: 2px solid #F4F4F4;
+ min-height: 56px;
+}
+
+td:first-child {
+ width: 20vw;
+}
+
+.keyword {
+ color: black;
+ font-family: JetBrains Mono, Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal;
+ font-size: 12px;
+}
+
+.symbol {
+ font-family: JetBrains Mono, Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal;
+ font-size: 12px;
+ min-height: 43px;
+}
+
+.symbol > a {
+ color: var(--hover-link-color);
+}
+
+.identifier {
+ color: darkblue;
+ font-size: 12px;
+ font-family: JetBrains Mono, Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal;
+}
+
+.brief {
+ white-space: pre-wrap;
+ overflow: hidden;
+ padding-top: 8px;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #222;
+ font-weight: bold;
+}
+
+p, ul, ol, table, pre, dl {
+ margin: 0 0 20px;
+}
+
+h1 {
+ font-weight: bold;
+ font-size: 40px;
+ line-height: 48px;
+ letter-spacing: -1px;
+}
+
+
+h1.cover {
+ font-size: 60px;
+ line-height: 64px;
+ letter-spacing: -1.5px;
+
+ margin-left: calc(-1 * var(--horizontal-spacing-for-content));
+ margin-right: calc(-1 * var(--horizontal-spacing-for-content));
+ padding-left: var(--horizontal-spacing-for-content);
+ padding-right: var(--horizontal-spacing-for-content);
+ border-bottom: 1px solid #DADFE6;
+
+ margin-bottom: 0;
+ padding-bottom: 32px;
+}
+
+h2 {
+ color: #393939;
+ font-size: 31px;
+ line-height: 40px;
+ letter-spacing: -0.5px;
+}
+
+h3 {
+ font-size: 20px;
+ line-height: 28px;
+ letter-spacing: -0.2px;
+}
+
+h4 {
+ margin: 0;
+}
+
+h3, h4, h5, h6 {
+ color: #494949;
+}
+
+.UnderCoverText {
+ font-size: 18px;
+ line-height: 28px;
+}
+
+a {
+ color: #5B5DEF;
+ font-weight: 400;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #5B5DEF;
+ text-decoration: underline;
+}
+
+a small {
+ font-size: 11px;
+ color: #555;
+ margin-top: -0.6em;
+ display: block;
+}
+
+.wrapper {
+ width: 860px;
+ margin: 0 auto;
+}
+
+blockquote {
+ border-left: 1px solid #e5e5e5;
+ margin: 0;
+ padding: 0 0 0 20px;
+ font-style: italic;
+}
+
+code, pre {
+ font-family: Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal;
+ color: #333;
+ font-size: 12px;
+}
+
+pre {
+ display: block;
+ overflow-x: auto;
+}
+
+th, td {
+ text-align: left;
+ vertical-align: top;
+ padding: 5px 10px;
+}
+
+dt {
+ color: #444;
+ font-weight: 700;
+}
+
+th {
+ color: #444;
+}
+
+img {
+ max-width: 100%;
+}
+
+header {
+ width: 270px;
+ float: left;
+ position: fixed;
+}
+
+header ul {
+ list-style: none;
+ height: 40px;
+
+ padding: 0;
+
+ background: #eee;
+ background: -moz-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f8f8f8), color-stop(100%, #dddddd));
+ background: -webkit-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+ background: -o-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+ background: -ms-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+ background: linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+
+ border-radius: 5px;
+ border: 1px solid #d2d2d2;
+ box-shadow: inset #fff 0 1px 0, inset rgba(0, 0, 0, 0.03) 0 -1px 0;
+ width: 270px;
+}
+
+header li {
+ width: 89px;
+ float: left;
+ border-right: 1px solid #d2d2d2;
+ height: 40px;
+}
+
+header ul a {
+ line-height: 1;
+ font-size: 11px;
+ color: #999;
+ display: block;
+ text-align: center;
+ padding-top: 6px;
+ height: 40px;
+}
+
+strong {
+ color: #222;
+ font-weight: 700;
+}
+
+header ul li + li {
+ width: 88px;
+ border-left: 1px solid #fff;
+}
+
+header ul li + li + li {
+ border-right: none;
+ width: 89px;
+}
+
+header ul a strong {
+ font-size: 14px;
+ display: block;
+ color: #222;
+}
+
+section {
+ width: 500px;
+ float: right;
+ padding-bottom: 50px;
+}
+
+small {
+ font-size: 11px;
+}
+
+hr {
+ border: 0;
+ background: #e5e5e5;
+ height: 1px;
+ margin: 0 0 20px;
+}
+
+footer {
+ width: 270px;
+ float: left;
+ position: fixed;
+ bottom: 50px;
+}
+
+.platform-tag {
+ display: flex;
+ flex-direction: row;
+ padding: 4px 8px;
+ height: 24px;
+ border-radius: 100px;
+ box-sizing: border-box;
+ border: 1px solid transparent;
+ margin: 2px;
+ font-family: Inter, Arial, sans-serif;
+ font-size: 12px;
+ font-weight: 400;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ letter-spacing: normal;
+ text-align: center;
+ outline: none;
+
+ color: #fff
+
+}
+
+.platform-tags {
+ flex: 0 0 auto;
+ display: flex;
+}
+
+.platform-tags > .platform-tag {
+ align-self: center;
+}
+
+.platform-tag.jvm-like {
+ background-color: #4DBB5F;
+ color: white;
+}
+
+.platform-tag.js-like {
+ background-color: #FED236;
+ color: white;
+}
+
+.platform-tag.native-like {
+ background-color: #CD74F6;
+ color: white;
+}
+
+.platform-tag.common-like {
+ background-color: #A6AFBA;
+ color: white;
+}
+
+.filter-section {
+ display: flex;
+ flex-direction: row;
+ align-self: flex-end;
+ min-height: 30px;
+ position: absolute;
+ top: 20px;
+ right: 88px;
+ z-index: 0;
+}
+
+.platform-selector:hover {
+ border: 1px solid #A6AFBA !important;
+}
+
+[data-filterable-current=''] {
+ display: none !important;
+}
+
+.platform-selector:not([data-active]) {
+ border: 1px solid #DADFE6;
+ background-color: transparent;
+ color: #637282;
+}
+
+td.content {
+ padding-left: 24px;
+ padding-top: 16px;
+ display: flex;
+ flex-direction: column;
+}
+
+.main-subrow {
+ display: flex;
+ flex-direction: row;
+ padding: 0;
+ justify-content: space-between;
+}
+
+.main-subrow > span {
+ display: flex;
+ position: relative;
+}
+
+.main-subrow > span > a {
+ text-decoration: none;
+ font-style: normal;
+ font-weight: 600;
+ font-size: 14px;
+ color: #282E34;
+}
+
+.main-subrow > span > a:hover {
+ color: var(--hover-link-color);
+}
+
+.main-subrow:hover .anchor-icon {
+ opacity: 1;
+ transition: 0.2s;
+}
+
+.main-subrow .anchor-icon {
+ padding: 0 8px;
+ opacity: 0;
+ transition: 0.2s 0.5s;
+}
+
+.main-subrow .anchor-icon > svg path {
+ fill: #637282;
+}
+
+.main-subrow .anchor-icon:hover {
+ cursor: pointer;
+}
+
+.main-subrow .anchor-icon:hover > svg path {
+ fill: var(--hover-link-color);
+}
+
+.main-subrow .anchor-wrapper {
+ position: relative;
+}
+
+.platform-hinted {
+ flex: auto;
+ display: block;
+ margin-bottom: 5px;
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark {
+ min-width: 64px;
+ height: 36px;
+ border: 2px solid white;
+ background: white;
+ outline: none;
+ flex: none;
+ order: 5;
+ align-self: flex-start;
+ margin: 0;
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark.jvm-like:hover {
+ border-top: 2px solid rgba(77, 187, 95, 0.3);
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark.js-like:hover {
+ border-top: 2px solid rgba(254, 175, 54, 0.3);
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark.native-like:hover {
+ border-top: 2px solid rgba(105, 118, 249, 0.3);
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark.common-like:hover {
+ border-top: 2px solid rgba(161, 170, 180, 0.3);
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark.jvm-like[data-active=''] {
+ border: 2px solid #F4F4F4;
+ border-top: 2px solid #4DBB5F;
+
+ background: #F4F4F4;
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark.js-like[data-active=''] {
+ border: 2px solid #F4F4F4;
+ border-top: 2px solid #FED236;
+
+ background: #F4F4F4;
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark.native-like[data-active=''] {
+ border: 2px solid #F4F4F4;
+ border-top: 2px solid #CD74F6;
+
+ background: #F4F4F4;
+}
+
+.platform-hinted > .platform-bookmarks-row > .platform-bookmark.common-like[data-active=''] {
+ border: 2px solid #F4F4F4;
+ border-top: 2px solid #A6AFBA;
+
+ background: #F4F4F4;
+}
+
+.platform-hinted > .content:not([data-active]),
+.tabs-section-body > *:not([data-active]) {
+ visibility: hidden;
+ height: 0;
+ position: fixed;
+ top: 0;
+}
+
+.inner-brief-with-platform-tags {
+ display: block;
+ width: 100%
+}
+
+.brief-with-platform-tags {
+ display: flex;
+}
+
+.brief-with-platform-tags ~ .main-subrow {
+ padding-top: 16px;
+}
+
+.cover .with-platform-tabs {
+ background-color: white;
+}
+
+.cover > .with-platform-tabs .platform-bookmarks-row {
+ margin: 0 16px;
+}
+
+.cover > .with-platform-tabs > .content {
+ margin: 0 16px;
+ background-color: #f4f4f4;
+ padding: 8px 16px;
+}
+
+.cover > .block {
+ padding-top: 48px;
+ padding-bottom: 24px;
+ font-size: 18px;
+ line-height: 28px;
+}
+
+.cover > .block:empty {
+ padding-bottom: 0;
+}
+
+.table-row .with-platform-tabs .sourceset-depenent-content .brief {
+ padding: 16px;
+ background-color: #f4f4f4;
+}
+
+.sideMenuPart[data-active] > .overview:before {
+ border-left: 4px solid var(--hover-link-color);
+ background: rgba(91, 93, 239, 0.15);
+}
+
+.table {
+ display: flex;
+ flex-direction: column;
+}
+
+.table-row {
+ display: flex;
+ flex-direction: column;
+ background: white;
+ border-bottom: 2px solid #f4f4f4;
+ padding: 16px 24px 16px 24px;
+}
+
+.platform-dependent-row {
+ display: grid;
+ padding-top: 8px;
+}
+
+.title-row {
+ display: grid;
+ grid-template-columns: auto auto 7em;
+ width: 100%;
+}
+
+.keyValue {
+ display: grid;
+}
+
+@media print, screen and (min-width: 960px) {
+ .keyValue {
+ grid-template-columns: 20% 80%;
+ }
+
+ .title-row {
+ grid-template-columns: 20% auto 7em;
+ }
+}
+
+@media print, screen and (max-width: 960px) {
+
+ div.wrapper {
+ width: auto;
+ margin: 0;
+ }
+
+ header, section, footer {
+ float: none;
+ position: static;
+ width: auto;
+ }
+
+ header {
+ padding-right: 320px;
+ }
+
+ section {
+ border: 1px solid #e5e5e5;
+ border-width: 1px 0;
+ padding: 20px 0;
+ margin: 0 0 20px;
+ }
+
+ header a small {
+ display: inline;
+ }
+
+ header ul {
+ position: absolute;
+ right: 50px;
+ top: 52px;
+ }
+}
+
+@media print, screen and (max-width: 720px) {
+ body {
+ word-wrap: break-word;
+ }
+
+ header {
+ padding: 0;
+ }
+
+ header ul, header p.view {
+ position: static;
+ }
+
+ pre, code {
+ word-wrap: normal;
+ }
+}
+
+@media print, screen and (max-width: 480px) {
+ body {
+ padding-right: 15px;
+ }
+
+ header ul {
+ display: none;
+ }
+}
+
+@media print {
+ body {
+ padding: 0.4in;
+ font-size: 12pt;
+ color: #444;
+ }
+}
+
+.footer {
+ clear: both;
+ display: flex;
+ align-items: center;
+ position: relative;
+ height: var(--footer-height);
+ border-top: 1px solid #DADFE6;
+ font-size: 12px;
+ line-height: 16px;
+ letter-spacing: 0.2px;
+ color: var(--breadcrumb-font-color);
+ margin-top: var(--footer-padding-top);
+}
+
+.footer span.go-to-top-icon {
+ border-radius: 2em;
+ padding: 11px 10px !important;
+ background-color: white;
+}
+
+.footer span.go-to-top-icon path {
+ fill: #637282;
+}
+
+.footer > span:first-child {
+ margin-left: var(--horizontal-spacing-for-content);
+ padding-left: 0;
+}
+
+.footer > span:last-child {
+ margin-right: var(--horizontal-spacing-for-content);
+ padding-right: 0;
+}
+
+.footer > span {
+ padding: 0 16px;
+}
+
+.footer .padded-icon {
+ padding-left: 0.5em;
+}
+
+/*For svg*/
+.footer path {
+ fill: var(--breadcrumb-font-color);
+}
+
+.pull-right {
+ float: right;
+ margin-left: auto
+}
+
+div.runnablesample {
+ height: fit-content;
+} \ No newline at end of file