tecitheme 0.8.0 → 0.8.1
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/package.json +1 -1
- package/dist/assets/TECi_logo.svelte +0 -177
- package/dist/assets/TECi_logo.svelte.d.ts +0 -23
- package/dist/assets/js/store.d.ts +0 -3
- package/dist/assets/js/store.js +0 -4
- package/dist/components/Accordion.svelte +0 -74
- package/dist/components/Accordion.svelte.d.ts +0 -27
- package/dist/components/Banner.svelte +0 -91
- package/dist/components/Banner.svelte.d.ts +0 -33
- package/dist/components/Button.svelte +0 -21
- package/dist/components/Button.svelte.d.ts +0 -37
- package/dist/components/CTA.svelte +0 -51
- package/dist/components/CTA.svelte.d.ts +0 -23
- package/dist/components/CTASplitImage.svelte +0 -34
- package/dist/components/CTASplitImage.svelte.d.ts +0 -23
- package/dist/components/Card.svelte +0 -91
- package/dist/components/Card.svelte.d.ts +0 -25
- package/dist/components/CognitoForm.svelte +0 -24
- package/dist/components/CognitoForm.svelte.d.ts +0 -27
- package/dist/components/ContentTwoColumns.svelte +0 -54
- package/dist/components/ContentTwoColumns.svelte.d.ts +0 -23
- package/dist/components/CountrySelector.svelte +0 -167
- package/dist/components/CountrySelector.svelte.d.ts +0 -27
- package/dist/components/FeatureGrid.svelte +0 -44
- package/dist/components/FeatureGrid.svelte.d.ts +0 -23
- package/dist/components/Figure.svelte +0 -40
- package/dist/components/Figure.svelte.d.ts +0 -29
- package/dist/components/Footer.svelte +0 -243
- package/dist/components/Footer.svelte.d.ts +0 -23
- package/dist/components/Header.svelte +0 -888
- package/dist/components/Header.svelte.d.ts +0 -30
- package/dist/components/HeadingCentered.svelte +0 -38
- package/dist/components/HeadingCentered.svelte.d.ts +0 -23
- package/dist/components/Hero.svelte +0 -82
- package/dist/components/Hero.svelte.d.ts +0 -23
- package/dist/components/Icon.svelte +0 -162
- package/dist/components/Icon.svelte.d.ts +0 -25
- package/dist/components/LogoCloud.svelte +0 -25
- package/dist/components/LogoCloud.svelte.d.ts +0 -23
- package/dist/components/Math.svelte +0 -24
- package/dist/components/Math.svelte.d.ts +0 -25
- package/dist/components/MediaFeature.svelte +0 -76
- package/dist/components/MediaFeature.svelte.d.ts +0 -23
- package/dist/components/Modal.svelte +0 -69
- package/dist/components/Modal.svelte.d.ts +0 -29
- package/dist/components/NewsGrid.svelte +0 -196
- package/dist/components/NewsGrid.svelte.d.ts +0 -23
- package/dist/components/PricingTable.svelte +0 -100
- package/dist/components/PricingTable.svelte.d.ts +0 -23
- package/dist/components/SidebarContent.svelte +0 -124
- package/dist/components/SidebarContent.svelte.d.ts +0 -33
- package/dist/components/Stats.svelte +0 -40
- package/dist/components/Stats.svelte.d.ts +0 -23
- package/dist/components/Testimonial.svelte +0 -168
- package/dist/components/Testimonial.svelte.d.ts +0 -23
- package/dist/components/ThreeColumn.svelte +0 -20
- package/dist/components/ThreeColumn.svelte.d.ts +0 -23
- package/dist/components/TrialForm.svelte +0 -296
- package/dist/components/TrialForm.svelte.d.ts +0 -14
- package/dist/components/Video.svelte +0 -125
- package/dist/components/Video.svelte.d.ts +0 -27
- package/dist/components/Wrap.svelte +0 -12
- package/dist/components/Wrap.svelte.d.ts +0 -31
- package/dist/get-content.d.ts +0 -9
- package/dist/get-content.js +0 -98
- package/dist/index.d.ts +0 -31
- package/dist/index.js +0 -31
- package/dist/layouts/blocks.svelte +0 -95
- package/dist/layouts/blocks.svelte.d.ts +0 -47
- package/dist/req_utils.d.ts +0 -3
- package/dist/req_utils.js +0 -63
- package/dist/site_config.json +0 -13
- package/dist/utils.d.ts +0 -5
- package/dist/utils.js +0 -162
- package/dist/variables.d.ts +0 -1
- package/dist/variables.js +0 -2
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} ModalProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} ModalEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} ModalSlots */
|
|
4
|
-
export default class Modal extends SvelteComponent<{
|
|
5
|
-
data?: {};
|
|
6
|
-
show?: () => void;
|
|
7
|
-
hide?: () => void;
|
|
8
|
-
}, {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
}, {}> {
|
|
11
|
-
get show(): () => void;
|
|
12
|
-
get hide(): () => void;
|
|
13
|
-
}
|
|
14
|
-
export type ModalProps = typeof __propDef.props;
|
|
15
|
-
export type ModalEvents = typeof __propDef.events;
|
|
16
|
-
export type ModalSlots = typeof __propDef.slots;
|
|
17
|
-
import { SvelteComponent } from "svelte";
|
|
18
|
-
declare const __propDef: {
|
|
19
|
-
props: {
|
|
20
|
-
data?: {};
|
|
21
|
-
show?: () => void;
|
|
22
|
-
hide?: () => void;
|
|
23
|
-
};
|
|
24
|
-
events: {
|
|
25
|
-
[evt: string]: CustomEvent<any>;
|
|
26
|
-
};
|
|
27
|
-
slots: {};
|
|
28
|
-
};
|
|
29
|
-
export {};
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import Button from './Button.svelte'
|
|
3
|
-
|
|
4
|
-
import { page } from '$app/stores';
|
|
5
|
-
import { paginate, PaginationNav } from "svelte-paginate";
|
|
6
|
-
import Icon from "./Icon.svelte";
|
|
7
|
-
|
|
8
|
-
export let data = {};
|
|
9
|
-
|
|
10
|
-
let posts = $page.data.newsPosts;
|
|
11
|
-
let filteredPosts = [];
|
|
12
|
-
let items = [];
|
|
13
|
-
let currentPage = 1;
|
|
14
|
-
let pageSize = (data.pageSize?data.pageSize:6);
|
|
15
|
-
let postLimit = data.limit;
|
|
16
|
-
let showArrows = (data.showArrows?data.showArrows:false);
|
|
17
|
-
let rangeLimit = (data.rangeLimit?data.rangeLimit:1)
|
|
18
|
-
let showPagination = (data.showPagination?data.showPagination:false);
|
|
19
|
-
let id
|
|
20
|
-
|
|
21
|
-
if (data.name) {
|
|
22
|
-
id = encodeURIComponent(data.name).toLowerCase()
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (postLimit > 0) {
|
|
26
|
-
posts = posts.slice(0, postLimit);
|
|
27
|
-
postLimit <= pageSize ? (showPagination = false) : (showPagination = true);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function termExists(arr, terms) {
|
|
31
|
-
if (arr) {
|
|
32
|
-
return terms.some((term) => {
|
|
33
|
-
return arr.includes(term);
|
|
34
|
-
});
|
|
35
|
-
} else {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function filterPosts(arr, terms) {
|
|
41
|
-
for (let i = 0; i < arr.length; ) {
|
|
42
|
-
if (termExists(arr[i].categories, terms)) {
|
|
43
|
-
i++;
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
arr.splice(i, 1);
|
|
47
|
-
}
|
|
48
|
-
return arr;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (data.filter) {
|
|
52
|
-
items = filterPosts(posts, data.filter);
|
|
53
|
-
} else {
|
|
54
|
-
items = posts;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
$: paginatedItems = paginate({ items, pageSize, currentPage });
|
|
58
|
-
</script>
|
|
59
|
-
|
|
60
|
-
<section {id} class="relative mx-auto w-full">
|
|
61
|
-
<div
|
|
62
|
-
class="flex flex-col justify-between space-y-4 border-b-2 border-gray-200 pb-4 sm:flex-row sm:items-end sm:space-y-0"
|
|
63
|
-
>
|
|
64
|
-
<div>
|
|
65
|
-
<h1 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">
|
|
66
|
-
{data.title}
|
|
67
|
-
</h1>
|
|
68
|
-
<p class="text-xl text-gray-500">{data.subtitle}</p>
|
|
69
|
-
</div>
|
|
70
|
-
<div class="w-32">
|
|
71
|
-
<Button
|
|
72
|
-
url="https://www.thunderheadeng.com/subscribe"
|
|
73
|
-
text="Subscribe"
|
|
74
|
-
color="teci"
|
|
75
|
-
justify="right"
|
|
76
|
-
/>
|
|
77
|
-
</div>
|
|
78
|
-
</div>
|
|
79
|
-
{#if items.length > 0}
|
|
80
|
-
{#if showPagination}
|
|
81
|
-
<div class="paginator mx-auto flex justify-center pt-4">
|
|
82
|
-
<PaginationNav
|
|
83
|
-
totalItems={items.length}
|
|
84
|
-
{pageSize}
|
|
85
|
-
{currentPage}
|
|
86
|
-
limit={rangeLimit}
|
|
87
|
-
showStepOptions={showArrows}
|
|
88
|
-
on:setPage={(e) => (currentPage = e.detail.page)}
|
|
89
|
-
/>
|
|
90
|
-
</div>
|
|
91
|
-
{/if}
|
|
92
|
-
<div
|
|
93
|
-
class="grid gap-8 pt-8 md:grid-cols-2 md:gap-16 lg:grid-cols-3 lg:gap-x-5 lg:gap-y-12"
|
|
94
|
-
>
|
|
95
|
-
{#each paginatedItems as post}
|
|
96
|
-
<div class="h-full">
|
|
97
|
-
<div class="flex h-full flex-col items-stretch ">
|
|
98
|
-
<time class="mb-1 block text-sm text-gray-500" datetime={post.date}
|
|
99
|
-
>{new Date(post.date).toLocaleDateString("en-us", {
|
|
100
|
-
weekday: "short",
|
|
101
|
-
year: "numeric",
|
|
102
|
-
month: "short",
|
|
103
|
-
day: "numeric",
|
|
104
|
-
timeZone: "UTC",
|
|
105
|
-
timeZoneName: "short",
|
|
106
|
-
})}</time
|
|
107
|
-
>
|
|
108
|
-
<h2 class="mb-2 text-xl font-semibold text-gray-900">
|
|
109
|
-
<a href={post.slug}>
|
|
110
|
-
{post.title}
|
|
111
|
-
</a>
|
|
112
|
-
</h2>
|
|
113
|
-
{#if post.summary}
|
|
114
|
-
<p class="mb-2 flex-1 text-base text-gray-500">
|
|
115
|
-
<a href={post.slug}>
|
|
116
|
-
{post.summary.length > 190
|
|
117
|
-
? post.summary.substring(0, 190) + " ..."
|
|
118
|
-
: post.summary}
|
|
119
|
-
</a>
|
|
120
|
-
</p>
|
|
121
|
-
{:else}
|
|
122
|
-
<p class="mb-2 flex-1 text-base text-red-500">
|
|
123
|
-
Missing Summary Text
|
|
124
|
-
</p>
|
|
125
|
-
{/if}
|
|
126
|
-
{#if post.categories}
|
|
127
|
-
<div class="flex w-full flex-wrap text-sm">
|
|
128
|
-
{#each post.categories.sort() as term}
|
|
129
|
-
<a
|
|
130
|
-
class="mr-2 mb-2 inline-block"
|
|
131
|
-
href="/news/filter/{term}"
|
|
132
|
-
target="_self"
|
|
133
|
-
>
|
|
134
|
-
<span
|
|
135
|
-
class="inline-flex items-center rounded-full bg-teci-blue-dark px-2.5 py-0.5 text-xs text-white hover:bg-teci-blue-light"
|
|
136
|
-
>{term}</span
|
|
137
|
-
>
|
|
138
|
-
</a>
|
|
139
|
-
{/each}
|
|
140
|
-
</div>
|
|
141
|
-
{/if}
|
|
142
|
-
<p
|
|
143
|
-
class="text-sm font-semibold text-teci-blue-light hover:text-teci-blue-dark"
|
|
144
|
-
>
|
|
145
|
-
<a href={post.slug}>
|
|
146
|
-
Read full article<span aria-hidden="true"> →</span>
|
|
147
|
-
</a>
|
|
148
|
-
</p>
|
|
149
|
-
</div>
|
|
150
|
-
</div>
|
|
151
|
-
{/each}
|
|
152
|
-
</div>
|
|
153
|
-
{#if showPagination}
|
|
154
|
-
<div class="paginator mx-auto flex justify-center pt-8">
|
|
155
|
-
<PaginationNav
|
|
156
|
-
totalItems={items.length}
|
|
157
|
-
{pageSize}
|
|
158
|
-
{currentPage}
|
|
159
|
-
limit={rangeLimit}
|
|
160
|
-
showStepOptions={showArrows}
|
|
161
|
-
on:setPage={(e) => (currentPage = e.detail.page)}
|
|
162
|
-
/>
|
|
163
|
-
</div>
|
|
164
|
-
{/if}
|
|
165
|
-
{#if !showPagination}
|
|
166
|
-
<div class="mt-8 w-full">
|
|
167
|
-
<Button
|
|
168
|
-
url="/news"
|
|
169
|
-
text="All News Posts"
|
|
170
|
-
color="teci"
|
|
171
|
-
justify="right"
|
|
172
|
-
/>
|
|
173
|
-
</div>
|
|
174
|
-
{/if}
|
|
175
|
-
{#if !postLimit}
|
|
176
|
-
<div class="sr-only">
|
|
177
|
-
<p>List of all News links for screen readers and bots.</p>
|
|
178
|
-
<ul>
|
|
179
|
-
{#each posts as post}
|
|
180
|
-
<li>
|
|
181
|
-
<a href={post.slug}>{post.title}</a>
|
|
182
|
-
</li>
|
|
183
|
-
{/each}
|
|
184
|
-
</ul>
|
|
185
|
-
</div>
|
|
186
|
-
{/if}
|
|
187
|
-
{:else}
|
|
188
|
-
<div class="prose">
|
|
189
|
-
<p class="pt-8">
|
|
190
|
-
Sorry, there isn't any news for you to see here.<br />
|
|
191
|
-
Please visit the <a rel="external" href="/news">All News</a> page for an
|
|
192
|
-
updated list.
|
|
193
|
-
</p>
|
|
194
|
-
</div>
|
|
195
|
-
{/if}
|
|
196
|
-
</section>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} NewsGridProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} NewsGridEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} NewsGridSlots */
|
|
4
|
-
export default class NewsGrid extends SvelteComponent<{
|
|
5
|
-
data?: {};
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
}
|
|
10
|
-
export type NewsGridProps = typeof __propDef.props;
|
|
11
|
-
export type NewsGridEvents = typeof __propDef.events;
|
|
12
|
-
export type NewsGridSlots = typeof __propDef.slots;
|
|
13
|
-
import { SvelteComponent } from "svelte";
|
|
14
|
-
declare const __propDef: {
|
|
15
|
-
props: {
|
|
16
|
-
data?: {};
|
|
17
|
-
};
|
|
18
|
-
events: {
|
|
19
|
-
[evt: string]: CustomEvent<any>;
|
|
20
|
-
};
|
|
21
|
-
slots: {};
|
|
22
|
-
};
|
|
23
|
-
export {};
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { getColorStyles } from '../utils'
|
|
3
|
-
export let data = {};
|
|
4
|
-
let toggleID = data.groups[0].id
|
|
5
|
-
let id
|
|
6
|
-
|
|
7
|
-
if (data.name) {
|
|
8
|
-
id = encodeURIComponent(data.name).toLowerCase()
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
function toggleSelection(group_id) {
|
|
12
|
-
toggleID = group_id
|
|
13
|
-
}
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<section {id} class="overflow-hidden">
|
|
17
|
-
<div class="sm:align-center sm:flex sm:flex-col">
|
|
18
|
-
<h1 class="text-5xl font-bold tracking-tight text-gray-900 sm:text-center">{data.heading}</h1>
|
|
19
|
-
<p class="mt-5 text-xl text-gray-500 sm:text-center">{data.subheading}</p>
|
|
20
|
-
{#if data.groups.length > 1 }
|
|
21
|
-
<div class="relative mt-6 max-w-xs w-full flex flex-row space-x-4 self-center justify-evenly rounded-lg bg-gray-100 p-0.5 sm:mt-8">
|
|
22
|
-
{#each data.groups as group}
|
|
23
|
-
<button type="button"
|
|
24
|
-
on:click={toggleSelection(group.id)}
|
|
25
|
-
id={group.id}
|
|
26
|
-
class="relative w-full whitespace-nowrap rounded-md py-2 text-sm font-medium border focus:z-10 focus:outline-none focus:ring-2 focus:ring-teci-blue-light
|
|
27
|
-
{toggleID == group.id ? "border-gray-200 bg-white text-gray-900 shadow-sm" : "border-transparent text-gray-700"}
|
|
28
|
-
">
|
|
29
|
-
{group.label}
|
|
30
|
-
</button>
|
|
31
|
-
{/each}
|
|
32
|
-
</div>
|
|
33
|
-
{/if}
|
|
34
|
-
<p class="mt-4 text-md max-w-xl mx-auto text-gray-500 sm:text-center">{data.groups.find(x => x.id === toggleID).description}</p>
|
|
35
|
-
</div>
|
|
36
|
-
<div class="mt-8 space-y-4 sm:grid sm:grid-cols-2 sm:gap-6 sm:space-y-0 lg:mx-auto lg:max-w-4xl xl:mx-0 xl:max-w-none xl:grid-cols-4">
|
|
37
|
-
{#each data.groups as group}
|
|
38
|
-
{#if (group.id == toggleID)}
|
|
39
|
-
{#each group.options as option}
|
|
40
|
-
<div class="max-w-xs mx-auto sm:odd:mr-0 sm:even:ml-0 divide-y divide-gray-200 border border-gray-200 {option.highlight ? "shadow-[inset_0_0_6px_0_rgb(0,43,127,1.0)]":"shadow-md"}">
|
|
41
|
-
<div class="p-6">
|
|
42
|
-
<h2 class="text-lg font-medium leading-6 text-gray-900">{option.label}</h2>
|
|
43
|
-
<p class="mt-4 text-sm text-gray-500">{option.text}</p>
|
|
44
|
-
<p class="mt-8">
|
|
45
|
-
{#if option.unit}
|
|
46
|
-
<span class="text-2xl align-super font-medium text-gray-500">{option.unit}</span>
|
|
47
|
-
{/if}
|
|
48
|
-
<span class="text-4xl font-bold tracking-tight text-gray-900">{option.price}</span>
|
|
49
|
-
{#if option.divisor}
|
|
50
|
-
<span class="text-base font-medium text-gray-500">{option.divisor}</span>
|
|
51
|
-
{/if}
|
|
52
|
-
</p>
|
|
53
|
-
{#if option.cta_url}
|
|
54
|
-
<a href={option.cta_url} class="btn mt-8 block w-full border py-2 text-center text-sm font-semibold {getColorStyles('button', data.color)}">{option.cta_label}</a>
|
|
55
|
-
{/if}
|
|
56
|
-
</div>
|
|
57
|
-
<div class="px-6 pt-6 pb-8">
|
|
58
|
-
<h3 class="text-sm font-medium text-gray-900">{option.features_text}</h3>
|
|
59
|
-
<ul class="mt-6 space-y-4">
|
|
60
|
-
{#each option.features as feature}
|
|
61
|
-
<li class="flex space-x-3">
|
|
62
|
-
<!-- Heroicon name: mini/check -->
|
|
63
|
-
<svg class="h-5 w-5 flex-shrink-0 text-green-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
64
|
-
<path fill-rule="evenodd" d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z" clip-rule="evenodd" />
|
|
65
|
-
</svg>
|
|
66
|
-
<span class="text-sm {getColorStyles('text', data.color)}">{feature.text}</span>
|
|
67
|
-
</li>
|
|
68
|
-
{/each}
|
|
69
|
-
</ul>
|
|
70
|
-
</div>
|
|
71
|
-
</div>
|
|
72
|
-
{/each}
|
|
73
|
-
{/if}
|
|
74
|
-
{/each}
|
|
75
|
-
</div>
|
|
76
|
-
{#if data.footer}
|
|
77
|
-
<div class="mt-8">
|
|
78
|
-
{#if data.footer.heading}
|
|
79
|
-
<div class="text-xl mb-4 text-gray-500 sm:text-center">
|
|
80
|
-
<p>{data.footer.heading}</p>
|
|
81
|
-
</div>
|
|
82
|
-
{/if}
|
|
83
|
-
{#if data.footer.text}
|
|
84
|
-
<div class="text-md mb-4 max-w-4xl mx-auto text-gray-500 sm:text-center">
|
|
85
|
-
<p>{@html data.footer.text}</p>
|
|
86
|
-
</div>
|
|
87
|
-
{/if}
|
|
88
|
-
{#if data.footer.ctas}
|
|
89
|
-
<div class="flex gap-x-8 py-2 sm:justify-center">
|
|
90
|
-
{#each data.footer.ctas as cta}
|
|
91
|
-
<a href={cta.url} class="btn {getColorStyles('button', cta.color)}">
|
|
92
|
-
{cta.text}
|
|
93
|
-
<span class="hidden sm:inline" aria-hidden="true">→</span>
|
|
94
|
-
</a>
|
|
95
|
-
{/each}
|
|
96
|
-
</div>
|
|
97
|
-
{/if}
|
|
98
|
-
</div>
|
|
99
|
-
{/if}
|
|
100
|
-
</section>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} PricingTableProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} PricingTableEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} PricingTableSlots */
|
|
4
|
-
export default class PricingTable extends SvelteComponent<{
|
|
5
|
-
data?: {};
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
}
|
|
10
|
-
export type PricingTableProps = typeof __propDef.props;
|
|
11
|
-
export type PricingTableEvents = typeof __propDef.events;
|
|
12
|
-
export type PricingTableSlots = typeof __propDef.slots;
|
|
13
|
-
import { SvelteComponent } from "svelte";
|
|
14
|
-
declare const __propDef: {
|
|
15
|
-
props: {
|
|
16
|
-
data?: {};
|
|
17
|
-
};
|
|
18
|
-
events: {
|
|
19
|
-
[evt: string]: CustomEvent<any>;
|
|
20
|
-
};
|
|
21
|
-
slots: {};
|
|
22
|
-
};
|
|
23
|
-
export {};
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { onMount } from "svelte";
|
|
3
|
-
import { buildToC } from "../utils.js";
|
|
4
|
-
|
|
5
|
-
export let data = {};
|
|
6
|
-
export let title = undefined;
|
|
7
|
-
export let date = undefined;
|
|
8
|
-
export let lastmod = undefined;
|
|
9
|
-
let id
|
|
10
|
-
|
|
11
|
-
if (data.name) {
|
|
12
|
-
id = encodeURIComponent(data.name).toLowerCase()
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
let formattedDate =
|
|
16
|
-
date != undefined
|
|
17
|
-
? new Date(date).toLocaleDateString("en-us", {
|
|
18
|
-
weekday: "short",
|
|
19
|
-
year: "numeric",
|
|
20
|
-
month: "short",
|
|
21
|
-
day: "numeric",
|
|
22
|
-
timeZone: "UTC",
|
|
23
|
-
timeZoneName: "short",
|
|
24
|
-
})
|
|
25
|
-
: undefined;
|
|
26
|
-
let formattedLastModDate =
|
|
27
|
-
lastmod != undefined
|
|
28
|
-
? new Date(lastmod).toLocaleDateString("en-us", {
|
|
29
|
-
weekday: "short",
|
|
30
|
-
year: "numeric",
|
|
31
|
-
month: "short",
|
|
32
|
-
day: "numeric",
|
|
33
|
-
timeZone: "UTC",
|
|
34
|
-
timeZoneName: "short",
|
|
35
|
-
})
|
|
36
|
-
: undefined;
|
|
37
|
-
let tocOpen = false;
|
|
38
|
-
let tocBuilt = false;
|
|
39
|
-
let w;
|
|
40
|
-
|
|
41
|
-
$: if (w > 702 && tocOpen == false) {
|
|
42
|
-
tocOpen = true;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
onMount(async () => {
|
|
46
|
-
if (data.toc) {
|
|
47
|
-
tocBuilt = buildToC();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
</script>
|
|
51
|
-
|
|
52
|
-
<section {id}
|
|
53
|
-
bind:clientWidth={w}
|
|
54
|
-
class="relative flex flex-row
|
|
55
|
-
{data.fullWidth?'mx-0':'mx-auto'}
|
|
56
|
-
{(data.toc || data.rightRail)?'md:space-x-8':'space-x-0'}
|
|
57
|
-
"
|
|
58
|
-
>
|
|
59
|
-
<div
|
|
60
|
-
id="content"
|
|
61
|
-
class="prose w-full {data.fullWidth?'max-w-none':'max-w-prose'}"
|
|
62
|
-
>
|
|
63
|
-
{#if !data.hideTitle}
|
|
64
|
-
<h1>{title}</h1>
|
|
65
|
-
{/if}
|
|
66
|
-
<slot />
|
|
67
|
-
{#if formattedDate && data.showDate}
|
|
68
|
-
<p class="text-sm">
|
|
69
|
-
Published: {formattedDate}{#if formattedLastModDate != formattedDate && formattedLastModDate} | Last
|
|
70
|
-
Updated: {formattedLastModDate}{/if}
|
|
71
|
-
</p>
|
|
72
|
-
{/if}
|
|
73
|
-
</div>
|
|
74
|
-
{#if (data.toc || data.rightRail)}
|
|
75
|
-
<aside class="relative w-0 md:w-60">
|
|
76
|
-
{#if data.toc}
|
|
77
|
-
<div class="sticky top-8 flex shrink-0 flex-col">
|
|
78
|
-
<button
|
|
79
|
-
on:click={() => {
|
|
80
|
-
tocOpen = !tocOpen;
|
|
81
|
-
}}
|
|
82
|
-
class="absolute -left-10 flex h-10 w-10 items-center justify-center border border-teci-blue-light bg-white text-teci-blue-light md:hidden
|
|
83
|
-
{tocOpen
|
|
84
|
-
? 'border-opacity-100 bg-opacity-100 text-opacity-100'
|
|
85
|
-
: 'border-opacity-60 bg-opacity-20 text-opacity-60 hover:border-opacity-100 hover:bg-opacity-100 hover:text-opacity-100'}"
|
|
86
|
-
title="Table of Contents Toggle"
|
|
87
|
-
alt="Table of Contents Toggle"
|
|
88
|
-
>
|
|
89
|
-
<span class="material-icons-outlined">menu_open</span>
|
|
90
|
-
</button>
|
|
91
|
-
{#if tocBuilt == false}
|
|
92
|
-
<svg
|
|
93
|
-
role="status"
|
|
94
|
-
class="m-2 inline-block h-6 w-6 animate-spin fill-blue-600 text-gray-200 dark:text-gray-600"
|
|
95
|
-
viewBox="0 0 100 101"
|
|
96
|
-
fill="none"
|
|
97
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
98
|
-
>
|
|
99
|
-
<path
|
|
100
|
-
d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z"
|
|
101
|
-
fill="currentColor"
|
|
102
|
-
/>
|
|
103
|
-
<path
|
|
104
|
-
d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z"
|
|
105
|
-
fill="currentFill"
|
|
106
|
-
/>
|
|
107
|
-
</svg>
|
|
108
|
-
{/if}
|
|
109
|
-
<div
|
|
110
|
-
id="ToC"
|
|
111
|
-
class="absolute -left-[282px] border bg-white p-2 text-right font-medium shadow-md md:relative md:left-0 md:text-left {tocOpen
|
|
112
|
-
? 'mb-4 block w-60'
|
|
113
|
-
: 'hidden'}"
|
|
114
|
-
/>
|
|
115
|
-
</div>
|
|
116
|
-
{/if}
|
|
117
|
-
{#if data.rightRail}
|
|
118
|
-
<div class="hidden bg-gray-200 p-2 md:block md:w-60">
|
|
119
|
-
Dynamic Stuff
|
|
120
|
-
</div>
|
|
121
|
-
{/if}
|
|
122
|
-
</aside>
|
|
123
|
-
{/if}
|
|
124
|
-
</section>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} SidebarContentProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} SidebarContentEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} SidebarContentSlots */
|
|
4
|
-
export default class SidebarContent extends SvelteComponent<{
|
|
5
|
-
data?: {};
|
|
6
|
-
title?: any;
|
|
7
|
-
date?: any;
|
|
8
|
-
lastmod?: any;
|
|
9
|
-
}, {
|
|
10
|
-
[evt: string]: CustomEvent<any>;
|
|
11
|
-
}, {
|
|
12
|
-
default: {};
|
|
13
|
-
}> {
|
|
14
|
-
}
|
|
15
|
-
export type SidebarContentProps = typeof __propDef.props;
|
|
16
|
-
export type SidebarContentEvents = typeof __propDef.events;
|
|
17
|
-
export type SidebarContentSlots = typeof __propDef.slots;
|
|
18
|
-
import { SvelteComponent } from "svelte";
|
|
19
|
-
declare const __propDef: {
|
|
20
|
-
props: {
|
|
21
|
-
data?: {};
|
|
22
|
-
title?: any;
|
|
23
|
-
date?: any;
|
|
24
|
-
lastmod?: any;
|
|
25
|
-
};
|
|
26
|
-
events: {
|
|
27
|
-
[evt: string]: CustomEvent<any>;
|
|
28
|
-
};
|
|
29
|
-
slots: {
|
|
30
|
-
default: {};
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
export {};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { getColorStyles } from '../utils'
|
|
3
|
-
export let data = {};
|
|
4
|
-
let id
|
|
5
|
-
|
|
6
|
-
if (data.name) {
|
|
7
|
-
id = encodeURIComponent(data.name).toLowerCase()
|
|
8
|
-
}
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<section {id} class="bg-gray-50">
|
|
12
|
-
<div class="mx-auto max-w-7xl p-6 lg:p-8">
|
|
13
|
-
<div class="mx-auto max-w-4xl text-center">
|
|
14
|
-
<h2 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">{@html data.heading}</h2>
|
|
15
|
-
{#if data.subheading}
|
|
16
|
-
<p class="mt-3 text-xl text-gray-500 sm:mt-4">{@html data.subheading}</p>
|
|
17
|
-
{/if}
|
|
18
|
-
</div>
|
|
19
|
-
</div>
|
|
20
|
-
<div class="bg-white">
|
|
21
|
-
<div class="relative">
|
|
22
|
-
<div class="absolute inset-0 bg-gray-50"></div>
|
|
23
|
-
<div class="relative mx-auto max-w-7xl px-6 lg:px-8">
|
|
24
|
-
<div class="mx-auto max-w-4xl">
|
|
25
|
-
<dl class="bg-white shadow-lg sm:grid sm:grid-cols-3">
|
|
26
|
-
{#each data.stats as stat, i}
|
|
27
|
-
<div id="stat-{i}" class="flex flex-col border-b border-gray-100 p-6 text-center sm:border-0 sm:border-r sm:border-l">
|
|
28
|
-
<dt class="order-2 mt-2 text-lg font-medium leading-6 text-gray-500">{stat.label}</dt>
|
|
29
|
-
<dd class="order-1 text-5xl font-bold tracking-tight {getColorStyles('text', data.color)}">{stat.value}</dd>
|
|
30
|
-
</div>
|
|
31
|
-
{/each}
|
|
32
|
-
</dl>
|
|
33
|
-
</div>
|
|
34
|
-
<figure>
|
|
35
|
-
<img class="w-full" alt="{(data.imageAltText?data.imageAltText:data.heading)}" src="https://teci.imgix.net/www/images/{data.image}?w=1152&fit=crop&auto=compress&auto=format">
|
|
36
|
-
</figure>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
</section>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} StatsProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} StatsEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} StatsSlots */
|
|
4
|
-
export default class Stats extends SvelteComponent<{
|
|
5
|
-
data?: {};
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
}
|
|
10
|
-
export type StatsProps = typeof __propDef.props;
|
|
11
|
-
export type StatsEvents = typeof __propDef.events;
|
|
12
|
-
export type StatsSlots = typeof __propDef.slots;
|
|
13
|
-
import { SvelteComponent } from "svelte";
|
|
14
|
-
declare const __propDef: {
|
|
15
|
-
props: {
|
|
16
|
-
data?: {};
|
|
17
|
-
};
|
|
18
|
-
events: {
|
|
19
|
-
[evt: string]: CustomEvent<any>;
|
|
20
|
-
};
|
|
21
|
-
slots: {};
|
|
22
|
-
};
|
|
23
|
-
export {};
|