tecitheme 0.0.2 → 0.0.6
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/README.md +1 -1
- package/{Logos → assets}/TECi_logo.svelte +0 -0
- package/{Logos → assets}/TECi_logo.svelte.d.ts +0 -0
- package/components/CountrySelector.svelte +4 -4
- package/components/Figure.svelte +12 -0
- package/components/Figure.svelte.d.ts +27 -0
- package/components/Header.svelte +6 -6
- package/components/Icon.svelte +45 -0
- package/components/Icon.svelte.d.ts +25 -0
- package/components/Math.svelte +19 -0
- package/components/Math.svelte.d.ts +25 -0
- package/components/NewsGrid.svelte +67 -0
- package/components/NewsGrid.svelte.d.ts +25 -0
- package/components/SectionHeaderCentered.svelte +24 -0
- package/components/SectionHeaderCentered.svelte.d.ts +31 -0
- package/components/ThreeColumn.svelte +67 -0
- package/components/ThreeColumn.svelte.d.ts +41 -0
- package/components/TrialForm.svelte +232 -211
- package/components/TrialForm.svelte.d.ts +5 -10
- package/components/YT.svelte +12 -0
- package/components/YT.svelte.d.ts +23 -0
- package/demodata.d.ts +0 -1
- package/demodata.js +0 -1
- package/layouts/blocks.svelte +25 -0
- package/layouts/blocks.svelte.d.ts +31 -0
- package/layouts/news.svelte +14 -0
- package/layouts/news.svelte.d.ts +29 -0
- package/package.json +30 -19
- package/utils.d.ts +1 -0
- package/utils.js +3 -1
- package/variables.d.ts +3 -0
- package/variables.js +3 -0
- package/Logos/TECi_icon_250.svelte +0 -21
- package/Logos/TECi_icon_250.svelte.d.ts +0 -23
package/README.md
CHANGED
|
@@ -4,4 +4,4 @@ SvelteKit Design System for Thunderhead web properties.
|
|
|
4
4
|
|
|
5
5
|
NPM package available at: https://www.npmjs.com/package/tecitheme
|
|
6
6
|
|
|
7
|
-
See
|
|
7
|
+
See https://tecitheme.netlify.app/ for demo, documentation and component details.
|
|
File without changes
|
|
File without changes
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { createEventDispatcher } from 'svelte';
|
|
3
|
-
import Modal from "
|
|
3
|
+
import Modal from "./Modal.svelte";
|
|
4
4
|
|
|
5
5
|
export let resellerModal = true;
|
|
6
|
-
let modal;
|
|
7
6
|
export let selection = 'sel';
|
|
7
|
+
export let allowContinue = false;
|
|
8
|
+
|
|
9
|
+
let modal;
|
|
8
10
|
let resellerIndex = -1;
|
|
9
11
|
let resellerArray = [
|
|
10
12
|
["BE", "NL", "LU"],
|
|
@@ -24,8 +26,6 @@
|
|
|
24
26
|
["ES"]
|
|
25
27
|
]
|
|
26
28
|
|
|
27
|
-
export let allowContinue = false;
|
|
28
|
-
|
|
29
29
|
function isReseller() {
|
|
30
30
|
resellerIndex = resellerArray.findIndex(arr => arr.includes(selection))
|
|
31
31
|
return resellerIndex > -1
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
export let image;
|
|
3
|
+
export let title;
|
|
4
|
+
export let caption;
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<figure class="not-prose shadow-lg border border-slate-100 p-2">
|
|
8
|
+
<img src={image} alt={title} title={title}>
|
|
9
|
+
{#if caption}
|
|
10
|
+
<figcaption class="text-center p-2">{@html caption}</figcaption>
|
|
11
|
+
{/if}
|
|
12
|
+
</figure>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} FigureProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} FigureEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} FigureSlots */
|
|
4
|
+
export default class Figure extends SvelteComponentTyped<{
|
|
5
|
+
image: any;
|
|
6
|
+
title: any;
|
|
7
|
+
caption: any;
|
|
8
|
+
}, {
|
|
9
|
+
[evt: string]: CustomEvent<any>;
|
|
10
|
+
}, {}> {
|
|
11
|
+
}
|
|
12
|
+
export type FigureProps = typeof __propDef.props;
|
|
13
|
+
export type FigureEvents = typeof __propDef.events;
|
|
14
|
+
export type FigureSlots = typeof __propDef.slots;
|
|
15
|
+
import { SvelteComponentTyped } from "svelte";
|
|
16
|
+
declare const __propDef: {
|
|
17
|
+
props: {
|
|
18
|
+
image: any;
|
|
19
|
+
title: any;
|
|
20
|
+
caption: any;
|
|
21
|
+
};
|
|
22
|
+
events: {
|
|
23
|
+
[evt: string]: CustomEvent<any>;
|
|
24
|
+
};
|
|
25
|
+
slots: {};
|
|
26
|
+
};
|
|
27
|
+
export {};
|
package/components/Header.svelte
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import
|
|
2
|
+
import Icon from "./Icon.svelte";
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<header>
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
<div class="absolute inset-0 shadow z-30 pointer-events-none" aria-hidden="true"></div>
|
|
8
8
|
<div class="relative">
|
|
9
9
|
<div class="max-w-7xl mx-auto flex justify-between items-center px-4 py-5 md:space-x-6 sm:px-6 sm:py-4 lg:px-8 md:justify-start lg:space-x-10">
|
|
10
|
-
<!-- Nav
|
|
10
|
+
<!-- Nav Icon Linked to WWW Homepage -->
|
|
11
11
|
<div class="flex-shrink-0">
|
|
12
12
|
<a href="https://www.thunderheadeng.com" class="flex">
|
|
13
13
|
<span class="sr-only">Thunderhead Engineering</span>
|
|
14
|
-
<
|
|
14
|
+
<Icon classes="h-10 w-auto" />
|
|
15
15
|
</a>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
<a href="https://www.thunderheadeng.com/pyrosim/" class="-m-3 p-3 flex flex-col justify-between rounded-lg hover:bg-gray-50">
|
|
51
51
|
<div class="flex md:h-full lg:flex-col">
|
|
52
52
|
<div class="flex-shrink-0">
|
|
53
|
-
<
|
|
53
|
+
<Icon classes="h-12 w-auto" icon="pyrosim" />
|
|
54
54
|
</div>
|
|
55
55
|
<div class="ml-4 md:flex-1 md:flex md:flex-col md:justify-between lg:ml-0 lg:mt-4">
|
|
56
56
|
<div>
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
<a href="https://www.thunderheadeng.com/pathfinder/" class="-m-3 p-3 flex flex-col justify-between rounded-lg hover:bg-gray-50">
|
|
72
72
|
<div class="flex md:h-full lg:flex-col">
|
|
73
73
|
<div class="flex-shrink-0">
|
|
74
|
-
<
|
|
74
|
+
<Icon classes="h-12 w-auto" icon="pathfinder" />
|
|
75
75
|
</div>
|
|
76
76
|
<div class="ml-4 md:flex-1 md:flex md:flex-col md:justify-between lg:ml-0 lg:mt-4">
|
|
77
77
|
<div>
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
<a href="https://www.thunderheadeng.com/petrasim/" class="-m-3 p-3 flex flex-col justify-between rounded-lg hover:bg-gray-50">
|
|
93
93
|
<div class="flex md:h-full lg:flex-col">
|
|
94
94
|
<div class="flex-shrink-0">
|
|
95
|
-
<
|
|
95
|
+
<Icon classes="h-12 w-auto" icon='petrasim' />
|
|
96
96
|
</div>
|
|
97
97
|
<div class="ml-4 md:flex-1 md:flex md:flex-col md:justify-between lg:ml-0 lg:mt-4">
|
|
98
98
|
<div>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
export let icon;
|
|
3
|
+
export let classes;
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
{#if icon == 'pyrosim'}
|
|
7
|
+
<img
|
|
8
|
+
class={classes}
|
|
9
|
+
src="https://files.thunderheadeng.com/www/images/pyrosim_icon.svg"
|
|
10
|
+
alt="PyroSim"
|
|
11
|
+
title="PyroSim Icon"
|
|
12
|
+
/>
|
|
13
|
+
{:else if icon == 'pathfinder'}
|
|
14
|
+
<img
|
|
15
|
+
class={classes}
|
|
16
|
+
src="https://files.thunderheadeng.com/www/images/pathfinder_icon.svg"
|
|
17
|
+
alt="Pathfinder"
|
|
18
|
+
title="Pathfinder Icon"
|
|
19
|
+
/>
|
|
20
|
+
{:else if icon == 'petrasim'}
|
|
21
|
+
<img
|
|
22
|
+
class={classes}
|
|
23
|
+
src="https://files.thunderheadeng.com/www/images/petrasim_icon.svg"
|
|
24
|
+
alt="PetraSim"
|
|
25
|
+
title="PetraSim Icon"
|
|
26
|
+
/>
|
|
27
|
+
{:else}
|
|
28
|
+
<svg class={classes} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 250 250">
|
|
29
|
+
<path
|
|
30
|
+
style="fill:#0c3879;fill-rule:evenodd;stroke:none"
|
|
31
|
+
d="M88.113 220.536h97.672v97.672H88.113z"
|
|
32
|
+
transform="matrix(2.5596 0 0 2.5596 -225.533 -564.483)"
|
|
33
|
+
/>
|
|
34
|
+
<path
|
|
35
|
+
style="fill:#fff;fill-rule:evenodd;stroke:none"
|
|
36
|
+
d="M145.864 260.176h22.042c2.792 0 4.883.835 6.559 2.651 1.532 1.673 2.232 3.764 2.232 6.278 0 2.37-.7 4.464-2.232 6.277-1.676 1.675-3.767 2.651-6.559 2.651h-22.042v-17.857m0 23.159h22.042c2.792 0 4.883.838 6.559 2.65 1.532 1.674 2.232 3.768 2.232 6.278 0 2.373-.7 4.464-2.232 6.278-1.676 1.675-3.767 2.65-6.559 2.65h-22.042v-17.856"
|
|
37
|
+
transform="matrix(2.5596 0 0 2.5596 -225.533 -564.483)"
|
|
38
|
+
/>
|
|
39
|
+
<path
|
|
40
|
+
style="fill:#fff;fill-rule:evenodd;stroke:none"
|
|
41
|
+
d="M132.471 301.192c-5.861 0-8.79-3.07-8.79-8.929l-.138-37.389-20.648-.14c-7.116-1.254-10.185-9.626-5.165-15.206 1.535-1.535 3.63-2.373 6.14-2.651h26.926l1.675.14h35.435c2.792 0 4.883.836 6.559 2.649 1.532 1.675 2.232 3.767 2.232 6.28 0 2.37-.7 4.464-2.232 6.277-1.676 1.673-3.767 2.651-6.559 2.651H141.26V301.192h-8.788"
|
|
42
|
+
transform="matrix(2.5596 0 0 2.5596 -225.533 -564.483)"
|
|
43
|
+
/>
|
|
44
|
+
</svg>
|
|
45
|
+
{/if}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} IconProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} IconEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} IconSlots */
|
|
4
|
+
export default class Icon extends SvelteComponentTyped<{
|
|
5
|
+
icon: any;
|
|
6
|
+
classes: any;
|
|
7
|
+
}, {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
}, {}> {
|
|
10
|
+
}
|
|
11
|
+
export type IconProps = typeof __propDef.props;
|
|
12
|
+
export type IconEvents = typeof __propDef.events;
|
|
13
|
+
export type IconSlots = typeof __propDef.slots;
|
|
14
|
+
import { SvelteComponentTyped } from "svelte";
|
|
15
|
+
declare const __propDef: {
|
|
16
|
+
props: {
|
|
17
|
+
icon: any;
|
|
18
|
+
classes: any;
|
|
19
|
+
};
|
|
20
|
+
events: {
|
|
21
|
+
[evt: string]: CustomEvent<any>;
|
|
22
|
+
};
|
|
23
|
+
slots: {};
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
// Based on: https://svelte.dev/repl/49ff6c089825418888cf804d9dde77bc?version=3.46.4
|
|
3
|
+
import katex from "katex";
|
|
4
|
+
export let math;
|
|
5
|
+
export let displayMode = false;
|
|
6
|
+
|
|
7
|
+
const options = {
|
|
8
|
+
displayMode: displayMode,
|
|
9
|
+
throwOnError: false
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
$: katexString = katex.renderToString(math, options);
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<svelte:head>
|
|
16
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css" integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
|
|
17
|
+
</svelte:head>
|
|
18
|
+
|
|
19
|
+
{@html katexString}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} MathProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} MathEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} MathSlots */
|
|
4
|
+
export default class Math extends SvelteComponentTyped<{
|
|
5
|
+
math: any;
|
|
6
|
+
displayMode?: boolean;
|
|
7
|
+
}, {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
}, {}> {
|
|
10
|
+
}
|
|
11
|
+
export type MathProps = typeof __propDef.props;
|
|
12
|
+
export type MathEvents = typeof __propDef.events;
|
|
13
|
+
export type MathSlots = typeof __propDef.slots;
|
|
14
|
+
import { SvelteComponentTyped } from "svelte";
|
|
15
|
+
declare const __propDef: {
|
|
16
|
+
props: {
|
|
17
|
+
math: any;
|
|
18
|
+
displayMode?: boolean;
|
|
19
|
+
};
|
|
20
|
+
events: {
|
|
21
|
+
[evt: string]: CustomEvent<any>;
|
|
22
|
+
};
|
|
23
|
+
slots: {};
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
export let data;
|
|
3
|
+
export let posts;
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<div class="relative pb-12 w-full mx-auto divide-y-2 divide-gray-200">
|
|
7
|
+
<div>
|
|
8
|
+
<h2 class="text-3xl tracking-tight font-extrabold text-gray-900 sm:text-4xl">
|
|
9
|
+
{data.title}
|
|
10
|
+
</h2>
|
|
11
|
+
<div
|
|
12
|
+
class="mt-3 sm:mt-4 lg:grid lg:grid-cols-2 lg:gap-5 lg:items-center"
|
|
13
|
+
>
|
|
14
|
+
<p class="text-xl text-gray-500">{data.subtitle}</p>
|
|
15
|
+
<form class="mt-6 flex flex-col sm:flex-row lg:mt-0 lg:justify-end">
|
|
16
|
+
<div>
|
|
17
|
+
<label for="email-address" class="sr-only"
|
|
18
|
+
>Email address</label
|
|
19
|
+
>
|
|
20
|
+
<input
|
|
21
|
+
id="email-address"
|
|
22
|
+
name="email-address"
|
|
23
|
+
type="email"
|
|
24
|
+
autocomplete="email"
|
|
25
|
+
required
|
|
26
|
+
class="appearance-none w-full px-4 py-2 border border-gray-300 text-base rounded-md text-gray-900 bg-white placeholder-gray-500 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 lg:max-w-xs"
|
|
27
|
+
placeholder="Enter your email"
|
|
28
|
+
/>
|
|
29
|
+
</div>
|
|
30
|
+
<div
|
|
31
|
+
class="mt-2 flex-shrink-0 w-full flex rounded-md shadow-sm sm:mt-0 sm:ml-3 sm:w-auto sm:inline-flex"
|
|
32
|
+
>
|
|
33
|
+
<button
|
|
34
|
+
type="button"
|
|
35
|
+
class="w-full bg-indigo-600 px-4 py-2 border border-transparent rounded-md flex items-center justify-center text-base font-medium text-white hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:w-auto sm:inline-flex"
|
|
36
|
+
>Notify me</button
|
|
37
|
+
>
|
|
38
|
+
</div>
|
|
39
|
+
</form>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="mt-6 pt-10 grid gap-16 lg:grid-cols-2 lg:gap-x-5 lg:gap-y-12">
|
|
43
|
+
{#each posts as post}
|
|
44
|
+
<div>
|
|
45
|
+
<p class="text-sm text-gray-500">
|
|
46
|
+
<time datetime="{post.meta.date}">{post.meta.date}</time>
|
|
47
|
+
</p>
|
|
48
|
+
<a href={post.path} class="mt-2 block">
|
|
49
|
+
<p class="text-xl font-semibold text-gray-900">
|
|
50
|
+
{post.meta.title}
|
|
51
|
+
</p>
|
|
52
|
+
<p class="mt-3 text-base text-gray-500">
|
|
53
|
+
{post.meta.summary}
|
|
54
|
+
</p>
|
|
55
|
+
</a>
|
|
56
|
+
<div class="mt-3">
|
|
57
|
+
<a
|
|
58
|
+
href="{post.path}"
|
|
59
|
+
class="text-base font-semibold text-indigo-600 hover:text-indigo-500"
|
|
60
|
+
>
|
|
61
|
+
Read full story
|
|
62
|
+
</a>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
{/each}
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} NewsGridProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} NewsGridEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} NewsGridSlots */
|
|
4
|
+
export default class NewsGrid extends SvelteComponentTyped<{
|
|
5
|
+
data: any;
|
|
6
|
+
posts: any;
|
|
7
|
+
}, {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
}, {}> {
|
|
10
|
+
}
|
|
11
|
+
export type NewsGridProps = typeof __propDef.props;
|
|
12
|
+
export type NewsGridEvents = typeof __propDef.events;
|
|
13
|
+
export type NewsGridSlots = typeof __propDef.slots;
|
|
14
|
+
import { SvelteComponentTyped } from "svelte";
|
|
15
|
+
declare const __propDef: {
|
|
16
|
+
props: {
|
|
17
|
+
data: any;
|
|
18
|
+
posts: any;
|
|
19
|
+
};
|
|
20
|
+
events: {
|
|
21
|
+
[evt: string]: CustomEvent<any>;
|
|
22
|
+
};
|
|
23
|
+
slots: {};
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
//Based on: https://tailwindui.com/components/marketing/sections/header#component-2c3b25e7b9e4490edd7b6950692c0a11
|
|
3
|
+
|
|
4
|
+
export let data = {
|
|
5
|
+
toptext: 'Small Top Text ',
|
|
6
|
+
title: 'Big Title Text',
|
|
7
|
+
subtitle: 'Subtitle Text'
|
|
8
|
+
};
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<!-- This example requires Tailwind CSS v2.0+ -->
|
|
12
|
+
<div class="text-center pb-12">
|
|
13
|
+
{#if data.toptext}
|
|
14
|
+
<h2 class="text-base font-semibold text-indigo-600 tracking-wide uppercase">
|
|
15
|
+
{data.toptext}
|
|
16
|
+
</h2>
|
|
17
|
+
{/if}
|
|
18
|
+
<p class="mt-1 text-4xl font-extrabold text-gray-900 sm:text-5xl sm:tracking-tight lg:text-6xl">
|
|
19
|
+
{data.title}
|
|
20
|
+
</p>
|
|
21
|
+
<p class="max-w-xl mt-5 mx-auto text-xl text-gray-500">
|
|
22
|
+
{data.subtitle}
|
|
23
|
+
</p>
|
|
24
|
+
</div>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} SectionHeaderCenteredProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} SectionHeaderCenteredEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} SectionHeaderCenteredSlots */
|
|
4
|
+
export default class SectionHeaderCentered extends SvelteComponentTyped<{
|
|
5
|
+
data?: {
|
|
6
|
+
toptext: string;
|
|
7
|
+
title: string;
|
|
8
|
+
subtitle: string;
|
|
9
|
+
};
|
|
10
|
+
}, {
|
|
11
|
+
[evt: string]: CustomEvent<any>;
|
|
12
|
+
}, {}> {
|
|
13
|
+
}
|
|
14
|
+
export type SectionHeaderCenteredProps = typeof __propDef.props;
|
|
15
|
+
export type SectionHeaderCenteredEvents = typeof __propDef.events;
|
|
16
|
+
export type SectionHeaderCenteredSlots = typeof __propDef.slots;
|
|
17
|
+
import { SvelteComponentTyped } from "svelte";
|
|
18
|
+
declare const __propDef: {
|
|
19
|
+
props: {
|
|
20
|
+
data?: {
|
|
21
|
+
toptext: string;
|
|
22
|
+
title: string;
|
|
23
|
+
subtitle: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
events: {
|
|
27
|
+
[evt: string]: CustomEvent<any>;
|
|
28
|
+
};
|
|
29
|
+
slots: {};
|
|
30
|
+
};
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
//Based on:
|
|
3
|
+
//https://tailwindui.com/components/marketing/sections/feature-sections#component-c683653471044e6ffc32739e199dfbf2
|
|
4
|
+
//https://tailwindui.com/components/marketing/sections/team-sections#component-0efa5ebc92e2aa72bc2332fcf5578869
|
|
5
|
+
|
|
6
|
+
import Icon from './Icon.svelte';
|
|
7
|
+
|
|
8
|
+
export let title = 'A better way to send money.';
|
|
9
|
+
|
|
10
|
+
export let data = [
|
|
11
|
+
{
|
|
12
|
+
icon: 'pyrosim',
|
|
13
|
+
image: 'https://www.thunderheadeng.com/wp-content/uploads/2013/09/company_pyrosim.jpg',
|
|
14
|
+
heading: 'PyroSim',
|
|
15
|
+
subheading: 'Fire & Smoke',
|
|
16
|
+
text: 'Analyze fire control and smoke dissipation in various structures for fire protection and safety or investigation.',
|
|
17
|
+
linkText: 'Learn More »',
|
|
18
|
+
linkURL: '/pyrosim'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
icon: 'pathfinder',
|
|
22
|
+
image: 'https://www.thunderheadeng.com/wp-content/uploads/2013/08/company_pathfinder.png',
|
|
23
|
+
heading: 'Pathfinder',
|
|
24
|
+
subheading: 'Evacuation',
|
|
25
|
+
text: 'Understand pedestrian egress and congestion hazards for fire protection and safety or urban planning.',
|
|
26
|
+
linkText: 'Learn More »',
|
|
27
|
+
linkURL: '/pathfinder'
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
icon: 'petrasim',
|
|
31
|
+
image: 'https://www.thunderheadeng.com/wp-content/uploads/2013/08/company_petrasim.png',
|
|
32
|
+
heading: 'PetraSim',
|
|
33
|
+
subheading: 'Subsurface Flow',
|
|
34
|
+
text: 'Model nonisothermal multiphase flow and transport in fractured and porous media for environmental engineering.',
|
|
35
|
+
linkText: 'Learn More »',
|
|
36
|
+
linkURL: '/petrasim'
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<!-- This example requires Tailwind CSS v2.0+ -->
|
|
42
|
+
<div class="pb-12 bg-white mx-auto">
|
|
43
|
+
<h2 class="sr-only">{title}</h2>
|
|
44
|
+
<dl class="space-y-10 sm:grid sm:grid-cols-2 sm:gap-8 sm:space-y-0 lg:grid-cols-3">
|
|
45
|
+
{#each data as col}
|
|
46
|
+
<div>
|
|
47
|
+
<a href={col.linkURL}>
|
|
48
|
+
<div class="space-y-4">
|
|
49
|
+
<div class="aspect-w-3 aspect-h-2">
|
|
50
|
+
<img class="object-cover shadow-lg rounded-lg" src={col.image} alt="" />
|
|
51
|
+
</div>
|
|
52
|
+
<div class="flex flex-row items-center space-x-4">
|
|
53
|
+
<Icon classes="h-12 w-auto" icon={col.icon} />
|
|
54
|
+
<div class="leading-6 font-medium">
|
|
55
|
+
<h3 class="text-2xl">{col.heading}</h3>
|
|
56
|
+
<p class="text-teci-blue-dark">{col.subheading}</p>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="text-lg">
|
|
60
|
+
<p class="text-gray-500">{col.text}</p>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</a>
|
|
64
|
+
</div>
|
|
65
|
+
{/each}
|
|
66
|
+
</dl>
|
|
67
|
+
</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} ThreeColumnProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} ThreeColumnEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} ThreeColumnSlots */
|
|
4
|
+
export default class ThreeColumn extends SvelteComponentTyped<{
|
|
5
|
+
data?: {
|
|
6
|
+
icon: string;
|
|
7
|
+
image: string;
|
|
8
|
+
heading: string;
|
|
9
|
+
subheading: string;
|
|
10
|
+
text: string;
|
|
11
|
+
linkText: string;
|
|
12
|
+
linkURL: string;
|
|
13
|
+
}[];
|
|
14
|
+
title?: string;
|
|
15
|
+
}, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}> {
|
|
18
|
+
}
|
|
19
|
+
export type ThreeColumnProps = typeof __propDef.props;
|
|
20
|
+
export type ThreeColumnEvents = typeof __propDef.events;
|
|
21
|
+
export type ThreeColumnSlots = typeof __propDef.slots;
|
|
22
|
+
import { SvelteComponentTyped } from "svelte";
|
|
23
|
+
declare const __propDef: {
|
|
24
|
+
props: {
|
|
25
|
+
data?: {
|
|
26
|
+
icon: string;
|
|
27
|
+
image: string;
|
|
28
|
+
heading: string;
|
|
29
|
+
subheading: string;
|
|
30
|
+
text: string;
|
|
31
|
+
linkText: string;
|
|
32
|
+
linkURL: string;
|
|
33
|
+
}[];
|
|
34
|
+
title?: string;
|
|
35
|
+
};
|
|
36
|
+
events: {
|
|
37
|
+
[evt: string]: CustomEvent<any>;
|
|
38
|
+
};
|
|
39
|
+
slots: {};
|
|
40
|
+
};
|
|
41
|
+
export {};
|