tecitheme 0.1.7 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/Footer.svelte +1 -1
- package/components/Header.svelte +1 -1
- package/components/NewsGrid.svelte +13 -15
- package/components/SidebarContent.svelte +3 -4
- package/get-content.d.ts +8 -0
- package/get-content.js +80 -0
- package/package.json +8 -5
package/components/Footer.svelte
CHANGED
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
</a>
|
|
127
127
|
</li>
|
|
128
128
|
<li>
|
|
129
|
-
<a href="https://www.thunderheadeng.com/
|
|
129
|
+
<a href="https://www.thunderheadeng.com/partners" class="text-base text-gray-300 hover:text-white">
|
|
130
130
|
Partners
|
|
131
131
|
</a>
|
|
132
132
|
</li>
|
package/components/Header.svelte
CHANGED
|
@@ -746,7 +746,7 @@
|
|
|
746
746
|
</a>
|
|
747
747
|
|
|
748
748
|
<a
|
|
749
|
-
href="https://www.thunderheadeng.com/
|
|
749
|
+
href="https://www.thunderheadeng.com/partners"
|
|
750
750
|
class="-m-3 flex items-start p-3 transition duration-150 ease-in-out hover:bg-gray-50"
|
|
751
751
|
>
|
|
752
752
|
<svg
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import { DateTime } from 'luxon';
|
|
3
2
|
import { getContext } from 'svelte';
|
|
4
3
|
import { paginate, PaginationNav } from 'svelte-paginate';
|
|
5
4
|
import Icon from './Icon.svelte';
|
|
@@ -7,7 +6,6 @@
|
|
|
7
6
|
export let data;
|
|
8
7
|
|
|
9
8
|
let posts = getContext('newsPosts');
|
|
10
|
-
|
|
11
9
|
let filteredPosts = [];
|
|
12
10
|
let items = [];
|
|
13
11
|
let currentPage = 1;
|
|
@@ -32,7 +30,7 @@
|
|
|
32
30
|
|
|
33
31
|
function filterPosts(arr, terms) {
|
|
34
32
|
for (let i = 0; i < arr.length; ) {
|
|
35
|
-
if (termExists(arr[i].
|
|
33
|
+
if (termExists(arr[i].categories, terms)) {
|
|
36
34
|
i++;
|
|
37
35
|
continue;
|
|
38
36
|
}
|
|
@@ -100,20 +98,20 @@
|
|
|
100
98
|
<div class="flex h-full flex-col items-stretch ">
|
|
101
99
|
<time
|
|
102
100
|
class="mb-1 block text-sm text-gray-500"
|
|
103
|
-
datetime="{post.
|
|
104
|
-
>{
|
|
101
|
+
datetime="{post.date}"
|
|
102
|
+
>{new Date(post.date).toLocaleDateString('en-us', { weekday:"short", year:"numeric", month:"short", day:"numeric", timeZone: "UTC", timeZoneName: "short"})}</time
|
|
105
103
|
>
|
|
106
104
|
<h2 class="mb-2 text-xl font-semibold text-gray-900">
|
|
107
|
-
<a href="
|
|
108
|
-
{post.
|
|
105
|
+
<a href="{post.slug}">
|
|
106
|
+
{post.title}
|
|
109
107
|
</a>
|
|
110
108
|
</h2>
|
|
111
|
-
{#if post.
|
|
109
|
+
{#if post.summary}
|
|
112
110
|
<p class="mb-2 flex-1 text-base text-gray-500">
|
|
113
|
-
<a href="
|
|
114
|
-
{post.
|
|
115
|
-
? post.
|
|
116
|
-
: post.
|
|
111
|
+
<a href="{post.slug}">
|
|
112
|
+
{post.summary.length > 190
|
|
113
|
+
? post.summary.substring(0, 190) + ' ...'
|
|
114
|
+
: post.summary}
|
|
117
115
|
</a>
|
|
118
116
|
</p>
|
|
119
117
|
{:else}
|
|
@@ -121,9 +119,9 @@
|
|
|
121
119
|
Missing Summary Text
|
|
122
120
|
</p>
|
|
123
121
|
{/if}
|
|
124
|
-
{#if post.
|
|
122
|
+
{#if post.categories}
|
|
125
123
|
<div class="flex w-full flex-wrap text-sm">
|
|
126
|
-
{#each post.
|
|
124
|
+
{#each post.categories.sort() as term}
|
|
127
125
|
<a
|
|
128
126
|
class="mr-2 mb-2 inline-block"
|
|
129
127
|
href="/news/filter/{term}"
|
|
@@ -140,7 +138,7 @@
|
|
|
140
138
|
<p
|
|
141
139
|
class="text-sm font-semibold text-teci-blue-light hover:text-teci-blue-dark"
|
|
142
140
|
>
|
|
143
|
-
<a href="
|
|
141
|
+
<a href="{post.slug}">
|
|
144
142
|
Read full article<span aria-hidden="true"> →</span>
|
|
145
143
|
</a>
|
|
146
144
|
</p>
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { onMount } from "svelte";
|
|
3
3
|
import { buildToC } from "../utils.js";
|
|
4
|
-
import { DateTime } from "luxon";
|
|
5
4
|
|
|
6
5
|
export let data;
|
|
7
6
|
export let title;
|
|
8
7
|
export let date;
|
|
9
8
|
export let lastmod;
|
|
10
9
|
|
|
11
|
-
let formattedDate = (date != undefined ?
|
|
12
|
-
let formattedLastModDate = (lastmod != undefined ?
|
|
10
|
+
let formattedDate = (date != undefined ? new Date(date).toLocaleDateString('en-us', { weekday:"short", year:"numeric", month:"short", day:"numeric", timeZone: "UTC", timeZoneName: "short"}) : undefined)
|
|
11
|
+
let formattedLastModDate = (lastmod != undefined ? new Date(lastmod).toLocaleDateString('en-us', { weekday:"short", year:"numeric", month:"short", day:"numeric", timeZone: "UTC", timeZoneName: "short"}) : undefined)
|
|
13
12
|
let tocOpen = false;
|
|
14
13
|
let tocBuilt = false;
|
|
15
14
|
let w;
|
|
@@ -31,7 +30,7 @@
|
|
|
31
30
|
{/if}
|
|
32
31
|
<slot />
|
|
33
32
|
{#if (formattedDate && data.showDate)}
|
|
34
|
-
<p class="text-sm">Published: {formattedDate}{#if (formattedLastModDate != formattedDate && formattedLastModDate)}
|
|
33
|
+
<p class="text-sm">Published: {formattedDate}{#if (formattedLastModDate != formattedDate && formattedLastModDate)} | Last Updated: {formattedLastModDate}{/if}</p>
|
|
35
34
|
{/if}
|
|
36
35
|
</div>
|
|
37
36
|
<aside class="relative w-0 {(data.toc || data.rightRail) ? 'md:w-60' : 'hidden'}">
|
package/get-content.d.ts
ADDED
package/get-content.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// get-content.js
|
|
2
|
+
// HTML parser from https://github.com/html-to-text/node-html-to-text
|
|
3
|
+
import { convert } from "html-to-text"
|
|
4
|
+
import { dev } from "$app/env";
|
|
5
|
+
|
|
6
|
+
export async function getContent (content) {
|
|
7
|
+
let indexData = []
|
|
8
|
+
let iterableContentFiles = Object.entries([])
|
|
9
|
+
let sortedIndex = []
|
|
10
|
+
|
|
11
|
+
// Use 'content' variable to determine files to import.
|
|
12
|
+
switch (content) {
|
|
13
|
+
case "news":
|
|
14
|
+
iterableContentFiles = Object.entries(import.meta.glob("/src/routes/news/*(!(*index|*news)).md"));
|
|
15
|
+
break;
|
|
16
|
+
default:
|
|
17
|
+
iterableContentFiles = Object.entries(import.meta.glob("/src/routes/**/*(!(*index|*news)).md"));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const allContent = await Promise.all(
|
|
21
|
+
iterableContentFiles.map(async ([path, resolver]) => {
|
|
22
|
+
const contentPath = path.slice(11, -3);
|
|
23
|
+
const file = await resolver();
|
|
24
|
+
const metadata = file.metadata;
|
|
25
|
+
const today = new Date();
|
|
26
|
+
|
|
27
|
+
if (metadata.notIndexed || (dev ? false : metadata.draft) || (dev ? false : new Date(metadata.date) > today)) {
|
|
28
|
+
return
|
|
29
|
+
} else {
|
|
30
|
+
var html = file.default.render().html
|
|
31
|
+
var plaintext = convert(html, {
|
|
32
|
+
baseElements: {
|
|
33
|
+
orderBy: 'occurrence'
|
|
34
|
+
},
|
|
35
|
+
wordwrap: false,
|
|
36
|
+
selectors: [
|
|
37
|
+
{selector: 'h1', format: 'skip'},
|
|
38
|
+
{selector: 'h2', options: {uppercase: false}},
|
|
39
|
+
{selector: 'a', options: { ignoreHref: true }},
|
|
40
|
+
{selector: 'a.button', format: 'skip'},
|
|
41
|
+
{selector: 'a.btn', format: 'skip'},
|
|
42
|
+
{selector: 'aside', format: 'skip'},
|
|
43
|
+
{selector: 'ul', options: {itemPrefix: '- '}},
|
|
44
|
+
{selector: 'img', format: 'skip'}
|
|
45
|
+
]
|
|
46
|
+
}).replace(/\n\n\n/gm, ' ').replace(/\n\n/g, ' ').replace(/\n/g, ' ').replace(/\"/g,'\'').trim()
|
|
47
|
+
|
|
48
|
+
if (metadata && contentPath && plaintext) {
|
|
49
|
+
return {
|
|
50
|
+
meta: metadata,
|
|
51
|
+
path: contentPath,
|
|
52
|
+
text: plaintext
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
for (let i = 0; i < allContent.length; i++) {
|
|
60
|
+
if (allContent[i]) {
|
|
61
|
+
let today = new Date();
|
|
62
|
+
let postdate = allContent[i].meta.date ? new Date(allContent[i].meta.date) : today
|
|
63
|
+
let entry = {
|
|
64
|
+
"title": allContent[i].meta.title,
|
|
65
|
+
"content": allContent[i].text,
|
|
66
|
+
"summary": allContent[i].meta.summary,
|
|
67
|
+
"date": postdate,
|
|
68
|
+
"slug": allContent[i].path,
|
|
69
|
+
"categories": allContent[i].meta.categories
|
|
70
|
+
}
|
|
71
|
+
indexData.push(entry)
|
|
72
|
+
} else {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
sortedIndex = indexData.slice().sort((a, b) => (b.date - a.date))
|
|
78
|
+
|
|
79
|
+
return sortedIndex
|
|
80
|
+
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tecitheme",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"svelte": true,
|
|
5
5
|
"devDependencies": {
|
|
6
6
|
"@jsdevtools/rehype-toc": "^3.0.2",
|
|
7
7
|
"@sveltejs/adapter-netlify": "1.0.0-next.65",
|
|
8
|
-
"@sveltejs/kit": "1.0.0-next.
|
|
8
|
+
"@sveltejs/kit": "1.0.0-next.371",
|
|
9
9
|
"@tailwindcss/forms": "^0.5.2",
|
|
10
10
|
"@tailwindcss/typography": "^0.5.2",
|
|
11
11
|
"@types/cookie": "^0.5.1",
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"eslint": "^8.17.0",
|
|
18
18
|
"eslint-config-prettier": "^8.5.0",
|
|
19
19
|
"eslint-plugin-svelte3": "^4.0.0",
|
|
20
|
-
"
|
|
20
|
+
"html-to-text": "^8.2.0",
|
|
21
|
+
"markdown-yaml-metadata-parser": "^3.0.0",
|
|
21
22
|
"mdsvex": "^0.10.6",
|
|
22
23
|
"postcss": "^8.4.14",
|
|
23
24
|
"prettier": "^2.6.2",
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"rehype-slug": "^5.0.1",
|
|
27
28
|
"rehype-stringify": "^9.0.3",
|
|
28
29
|
"stream": "^0.0.2",
|
|
29
|
-
"svelte": "^3.
|
|
30
|
+
"svelte": "^3.49.0",
|
|
30
31
|
"svelte-check": "^2.7.2",
|
|
31
32
|
"svelte-paginate": "^0.0.1",
|
|
32
33
|
"svelte-preprocess": "^4.10.7",
|
|
@@ -42,7 +43,8 @@
|
|
|
42
43
|
"dependencies": {
|
|
43
44
|
"@lukeed/uuid": "^2.0.0",
|
|
44
45
|
"cookie": "^0.5.0",
|
|
45
|
-
"katex": "^0.15.6"
|
|
46
|
+
"katex": "^0.15.6",
|
|
47
|
+
"svelte": "^3.49.0"
|
|
46
48
|
},
|
|
47
49
|
"exports": {
|
|
48
50
|
"./package.json": "./package.json",
|
|
@@ -68,6 +70,7 @@
|
|
|
68
70
|
"./components/TrialForm.svelte": "./components/TrialForm.svelte",
|
|
69
71
|
"./components/Video.svelte": "./components/Video.svelte",
|
|
70
72
|
"./components/Wrap.svelte": "./components/Wrap.svelte",
|
|
73
|
+
"./get-content": "./get-content.js",
|
|
71
74
|
"./layouts/blocks.svelte": "./layouts/blocks.svelte",
|
|
72
75
|
"./req_utils": "./req_utils.js",
|
|
73
76
|
"./utils": "./utils.js",
|