diff --git a/lib/docs-viewer.js b/lib/docs-viewer.js index a50bda8..287b953 100644 --- a/lib/docs-viewer.js +++ b/lib/docs-viewer.js @@ -43,7 +43,11 @@ customElements.define('docs-viewer', class extends HTMLElement { this.panel = this.root.querySelector('#panel') - this.page = 'readme.md' + this.home = document.querySelector('#home') + + this.page = '/readme.md' + + this.home.style.display = 'none' const observer = new MutationObserver(() => { if (document.documentElement.classList.contains('light')) this.panel.classList.add('light') @@ -61,6 +65,11 @@ customElements.define('docs-viewer', class extends HTMLElement { this.load(evt.target.pathname) }) + window.addEventListener('hashchange', () => { + if (location.hash === '#documentation' && this.page === '/readme.md') this.home.style.display = 'none' + else this.home.style.display = '' + }) + window.addEventListener('popstate', (evt) => { if (location.hash.startsWith('#documentation')) { const home = location.hash.endsWith('-home') @@ -99,5 +108,7 @@ customElements.define('docs-viewer', class extends HTMLElement { async #load () { this.panel.querySelector('slot').innerHTML = marked.parse(await (await fetch(this.page)).text(), {headerIds: false, mangle: false}) + if (location.hash === '#documentation' && this.page === '/readme.md') this.home.style.display = 'none' + else this.home.style.display = '' } }) diff --git a/lib/system-status.js b/lib/system-status.js new file mode 100644 index 0000000..7449aba --- /dev/null +++ b/lib/system-status.js @@ -0,0 +1,72 @@ +import fs from 'fs' +import path from 'path' +import { config } from 'pear' + +const pearBin = path.join(config.pearDir, 'bin') + +const paths = process.env.PATH.split(path.delimiter) + +customElements.define('system-status', class extends HTMLElement { + constructor () { + super() + this.vianode = false + this.installed = paths.some((p) => { + if (p.includes('node') && p.includes('bin')) this.vianode = fs.existsSync(path.join(p, 'pear')) + return p === pearBin + }) + this.template = document.createElement('template') + this.template.innerHTML = ` +
+ +

System Status

+ ${ + this.installed ? ` +
+

Pear is installed.

+
+

✔ Pear is in the system PATH and ready to go.

+ ` : ` +
+

Pear setup is nearly complete.

+
+

+

Click the button to add ${pearBin} to the system PATH

+ ` + } +
+ ` + this.root = this.attachShadow({ mode: 'open' }) + + this.root.appendChild(this.template.content.cloneNode(true)) + + this.button = this.root.querySelector('button') + + if (this.button) { + const listener = () => { + this.button.removeEventListener('click', listener) + + } + this.button.addEventListener('click', listener) + } + + } + +}) diff --git a/package.json b/package.json index 58219af..6acdad2 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,14 @@ "main": "pulse.html", "type": "module", "pear": { - "gui": { - "backgroundColor": "#151517", - "height": 780, - "width": 1120 - } + "gui": { + "backgroundColor": "#151517", + "height": 780, + "width": 1120 + } }, "dependencies": { - "overpass": "github:RedHatOfficial/Overpass#71f18db" + "bare-path": "^2.1.0", + "overpass": "github:RedHatOfficial/Overpass#71f18db" } - } +} diff --git a/pulse.html b/pulse.html index 526623f..69671a9 100644 --- a/pulse.html +++ b/pulse.html @@ -32,7 +32,6 @@ } a:visited, a:active, a { color: #B0D944; outline: none; text-decoration: none; } - a:hover { color: #d944c8; } #logo { float: left; @@ -86,6 +85,7 @@ transform: scale(0.92); width: 72rem; margin: 0 auto; + user-select: none; } h1 { padding: .5rem; border-right: 1px solid #B0D944; border-bottom: 1px solid #B0D944; display: inline-block; padding-right: 0.75em; padding-left: 0.5em; font-weight: bold; font-size: 1.6rem; margin-block-start: 0.67em; margin-block-end: 0.67em; } @@ -119,17 +119,24 @@ font-size: 2.4rem; user-select: none; } + #home { transform: scale(2.2, 2); position: absolute; right: .75rem; bottom: -3.5rem; cursor: pointer; + display: none; } + html.light #home { color: #7c9735; font-weight: bold; } + + header:has(~ #documentation:target) > #headin > #home { + display: inline; + }
@@ -172,13 +179,10 @@
-

Pear by Holepunch

-
-

Pear is installed.

-
-

Pear is ready to go.

+
+