Skip to content

Commit 23591f3

Browse files
committed
[site] Dynamic version number
1 parent 4624017 commit 23591f3

File tree

8 files changed

+49
-28
lines changed

8 files changed

+49
-28
lines changed

site/build.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {createDocs, getSorter} from 'tinydocs';
2+
import {readFileSync, writeFileSync} from 'fs';
23
import {ArticleInner} from './ui/ArticleInner.tsx';
34
import type {Docs} from 'tinydocs';
45
import {ExecutablePen} from './ui/ExecutablePen.tsx';
56
import {NavJson} from './ui/NavJson.tsx';
67
import {Page} from './ui/Page.tsx';
78
import {Readme} from './ui/Readme.tsx';
8-
import {readFileSync} from 'fs';
99

1010
const GROUPS = ['Interfaces', '*', 'Type aliases'];
1111
const CATEGORIES = [
@@ -85,6 +85,11 @@ export const build = async (
8585
const baseUrl = version.includes('beta')
8686
? 'https://beta.tinybase.org'
8787
: 'https://tinybase.org';
88+
writeFileSync(
89+
'site/js/version.ts',
90+
`export const thisVersion = 'v${version}';`,
91+
'utf-8',
92+
);
8893

8994
const docs = createDocs(baseUrl, outDir, !api && !pages)
9095
.addJsFile('site/js/home.ts')
@@ -104,6 +109,7 @@ export const build = async (
104109
)}}, {}]`,
105110
'assets/countries.json',
106111
);
112+
107113
[
108114
'',
109115
'/store',

site/js/app.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import {
22
addClass,
3+
commonLoad,
34
createElement,
45
delClass,
56
doc,
6-
preLoad,
77
query,
88
queryById,
99
queryElement,
1010
toggleClass,
1111
} from './common.ts';
1212
import type {NavNode} from '../ui/NavJson.tsx';
1313

14-
preLoad();
14+
commonLoad();
1515

1616
addEventListener('load', () => {
1717
const nav: HTMLElement = query('body > main > nav');

site/js/common.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1+
import {thisVersion} from './version.ts';
2+
13
export const doc = document;
24

5+
export const commonLoad = () => {
6+
darkMode();
7+
addEventListener('load', () => {
8+
const version: HTMLElement = query('#version');
9+
version.innerText = thisVersion;
10+
version.style.width = version.scrollWidth + 'px';
11+
});
12+
};
13+
314
export const query = (query: string): HTMLElement =>
415
doc.querySelector(query) as HTMLElement;
516
export const queryElement = (
@@ -60,8 +71,6 @@ const DARK = 'dark';
6071
const LIGHT = 'light';
6172
const AUTO = 'auto';
6273

63-
export const preLoad = () => darkMode();
64-
6574
const darkMode = () => {
6675
const pref = matchMedia('(prefers-color-scheme: dark)');
6776
const update = () => {

site/js/home.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
import {preLoad} from './common.ts';
1+
import {commonLoad} from './common.ts';
22

3-
preLoad();
3+
commonLoad();

site/js/single.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import {addClass, delClass, preLoad, query, queryById} from './common.ts';
1+
import {addClass, commonLoad, delClass, query, queryById} from './common.ts';
22

3-
preLoad();
3+
commonLoad();
44

55
addEventListener('load', () => {
66
const nav: HTMLElement = query('body > main > nav');

site/js/version.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const thisVersion = 'v5.1.2';

site/less/layout.less

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ body {
6969
&:last-child {
7070
text-align: right;
7171
}
72+
#version {
73+
width: 0;
74+
display: inline-block;
75+
transition: width 1s;
76+
overflow: clip;
77+
}
7278
}
7379
#tw,
7480
#fb {

site/ui/Footer.tsx

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
/* eslint-disable react/jsx-no-target-blank */
22
import type {NoPropComponent} from 'tinydocs';
33
import React from 'react';
4-
import {useMetadata} from './BuildContext.tsx';
54

6-
export const Footer: NoPropComponent = () => {
7-
const {version} = useMetadata();
8-
return (
9-
<footer>
10-
<nav>
11-
<a id="tw" href="https://twitter.com/tinybasejs" target="_blank">
12-
Twitter
13-
</a>
14-
<a id="fb" href="https://facebook.com/tinybasejs" target="_blank">
15-
Facebook
16-
</a>
17-
</nav>
18-
<nav>
19-
<a href="/">TinyBase {version}</a> © 2021- All Rights Reserved
20-
</nav>
21-
</footer>
22-
);
23-
};
5+
export const Footer: NoPropComponent = () => (
6+
<footer>
7+
<nav>
8+
<a id="tw" href="https://twitter.com/tinybasejs" target="_blank">
9+
Twitter
10+
</a>
11+
<a id="fb" href="https://facebook.com/tinybasejs" target="_blank">
12+
Facebook
13+
</a>
14+
</nav>
15+
<nav>
16+
<a href="/">
17+
TinyBase <span id="version" />
18+
</a>{' '}
19+
© 2021- All Rights Reserved
20+
</nav>
21+
</footer>
22+
);

0 commit comments

Comments
 (0)