tecitheme 0.8.1 → 0.9.0

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.
Files changed (78) hide show
  1. package/dist/assets/TECi_logo.svelte +177 -0
  2. package/dist/assets/TECi_logo.svelte.d.ts +23 -0
  3. package/dist/assets/js/store.d.ts +3 -0
  4. package/dist/assets/js/store.js +4 -0
  5. package/dist/components/Accordion.svelte +74 -0
  6. package/dist/components/Accordion.svelte.d.ts +27 -0
  7. package/dist/components/Banner.svelte +91 -0
  8. package/dist/components/Banner.svelte.d.ts +33 -0
  9. package/dist/components/Button.svelte +21 -0
  10. package/dist/components/Button.svelte.d.ts +37 -0
  11. package/dist/components/CTA.svelte +51 -0
  12. package/dist/components/CTA.svelte.d.ts +23 -0
  13. package/dist/components/CTASplitImage.svelte +34 -0
  14. package/dist/components/CTASplitImage.svelte.d.ts +23 -0
  15. package/dist/components/Card.svelte +91 -0
  16. package/dist/components/Card.svelte.d.ts +25 -0
  17. package/dist/components/CognitoForm.svelte +24 -0
  18. package/dist/components/CognitoForm.svelte.d.ts +27 -0
  19. package/dist/components/ContentTwoColumns.svelte +54 -0
  20. package/dist/components/ContentTwoColumns.svelte.d.ts +23 -0
  21. package/dist/components/CountrySelector.svelte +167 -0
  22. package/dist/components/CountrySelector.svelte.d.ts +27 -0
  23. package/dist/components/FeatureGrid.svelte +44 -0
  24. package/dist/components/FeatureGrid.svelte.d.ts +23 -0
  25. package/dist/components/Figure.svelte +40 -0
  26. package/dist/components/Figure.svelte.d.ts +29 -0
  27. package/dist/components/Footer.svelte +243 -0
  28. package/dist/components/Footer.svelte.d.ts +23 -0
  29. package/dist/components/Header.svelte +888 -0
  30. package/dist/components/Header.svelte.d.ts +30 -0
  31. package/dist/components/HeadingCentered.svelte +38 -0
  32. package/dist/components/HeadingCentered.svelte.d.ts +23 -0
  33. package/dist/components/Hero.svelte +82 -0
  34. package/dist/components/Hero.svelte.d.ts +23 -0
  35. package/dist/components/Icon.svelte +162 -0
  36. package/dist/components/Icon.svelte.d.ts +25 -0
  37. package/dist/components/LogoCloud.svelte +25 -0
  38. package/dist/components/LogoCloud.svelte.d.ts +23 -0
  39. package/dist/components/Math.svelte +24 -0
  40. package/dist/components/Math.svelte.d.ts +25 -0
  41. package/dist/components/MediaFeature.svelte +76 -0
  42. package/dist/components/MediaFeature.svelte.d.ts +23 -0
  43. package/dist/components/Modal.svelte +69 -0
  44. package/dist/components/Modal.svelte.d.ts +29 -0
  45. package/dist/components/NewsGrid.svelte +196 -0
  46. package/dist/components/NewsGrid.svelte.d.ts +23 -0
  47. package/dist/components/PageNav.svelte +243 -0
  48. package/dist/components/PageNav.svelte.d.ts +32 -0
  49. package/dist/components/PricingTable.svelte +100 -0
  50. package/dist/components/PricingTable.svelte.d.ts +23 -0
  51. package/dist/components/SidebarContent.svelte +124 -0
  52. package/dist/components/SidebarContent.svelte.d.ts +33 -0
  53. package/dist/components/Stats.svelte +40 -0
  54. package/dist/components/Stats.svelte.d.ts +23 -0
  55. package/dist/components/Testimonial.svelte +168 -0
  56. package/dist/components/Testimonial.svelte.d.ts +23 -0
  57. package/dist/components/ThreeColumn.svelte +20 -0
  58. package/dist/components/ThreeColumn.svelte.d.ts +23 -0
  59. package/dist/components/TrialForm.svelte +296 -0
  60. package/dist/components/TrialForm.svelte.d.ts +14 -0
  61. package/dist/components/Video.svelte +125 -0
  62. package/dist/components/Video.svelte.d.ts +27 -0
  63. package/dist/components/Wrap.svelte +12 -0
  64. package/dist/components/Wrap.svelte.d.ts +31 -0
  65. package/dist/get-content.d.ts +9 -0
  66. package/dist/get-content.js +98 -0
  67. package/dist/index.d.ts +31 -0
  68. package/dist/index.js +31 -0
  69. package/dist/layouts/blocks.svelte +108 -0
  70. package/dist/layouts/blocks.svelte.d.ts +47 -0
  71. package/dist/req_utils.d.ts +3 -0
  72. package/dist/req_utils.js +63 -0
  73. package/dist/site_config.json +13 -0
  74. package/dist/utils.d.ts +5 -0
  75. package/dist/utils.js +162 -0
  76. package/dist/variables.d.ts +1 -0
  77. package/dist/variables.js +2 -0
  78. package/package.json +1 -1
@@ -0,0 +1,108 @@
1
+ <script>
2
+ import Accordion from "../components/Accordion.svelte";
3
+ import CTA from "../components/CTA.svelte";
4
+ import HeadingCentered from "../components/HeadingCentered.svelte";
5
+ import MediaFeature from "../components/MediaFeature.svelte";
6
+ import Modal from "../components/Modal.svelte";
7
+ import NewsGrid from "../components/NewsGrid.svelte";
8
+ import SidebarContent from "../components/SidebarContent.svelte";
9
+ import ThreeColumn from "../components/ThreeColumn.svelte";
10
+ import TrialForm from "../components/TrialForm.svelte";
11
+ import Video from "../components/Video.svelte";
12
+ import Hero from "../components/Hero.svelte";
13
+ import FeatureGrid from "../components/FeatureGrid.svelte";
14
+ import LogoCloud from "../components/LogoCloud.svelte";
15
+ import CTASplitImage from "../components/CTASplitImage.svelte";
16
+ import ContentTwoColumns from "../components/ContentTwoColumns.svelte";
17
+ import PricingTable from "../components/PricingTable.svelte";
18
+ import Stats from "../components/Stats.svelte";
19
+ import PageNav from "../components/PageNav.svelte";
20
+ import Testimonial from "../components/Testimonial.svelte";
21
+
22
+ let blocks = [
23
+ { ref: "accordion", component: Accordion},
24
+ { ref: "cta", component: CTA },
25
+ { ref: "heading-centered", component: HeadingCentered },
26
+ { ref: "media-feature", component: MediaFeature },
27
+ { ref: "modal", component: Modal },
28
+ { ref: "news-grid", component: NewsGrid },
29
+ { ref: "sidebar-content", component: SidebarContent },
30
+ { ref: "three-column", component: ThreeColumn },
31
+ { ref: "trial-form", component: TrialForm },
32
+ { ref: "video", component: Video },
33
+ { ref: "hero", component: Hero },
34
+ { ref: "feature-grid", component: FeatureGrid },
35
+ { ref: "logo-cloud", component: LogoCloud },
36
+ { ref: "cta-split-image", component: CTASplitImage },
37
+ { ref: "content-two-columns", component: ContentTwoColumns },
38
+ { ref: "pricing-table", component: PricingTable },
39
+ { ref: "stats", component: Stats },
40
+ { ref: "pageNav", component: PageNav },
41
+ { ref: "testimonial", component: Testimonial },
42
+ ];
43
+
44
+ export let data = {};
45
+ export let form;
46
+ export let notIndexed = undefined;
47
+ export let type = undefined;
48
+ export let title = undefined;
49
+ export let date = undefined;
50
+ export let summary = undefined;
51
+ export let image = undefined;
52
+ export let lastmod = undefined;
53
+ export let layout = undefined;
54
+ export let page_sections = undefined;
55
+
56
+ let featuredImage;
57
+
58
+ if (image) {
59
+ featuredImage = "https://teci.imgix.net/www/images/" + image + "?w=1200&h=627&fit=crop&auto=compress&auto=format";
60
+ } else {
61
+ featuredImage = "https://teci.imgix.net/www/images/teci_icon_250.png";
62
+ }
63
+
64
+ let pageNav = page_sections ? page_sections.filter(sect => sect.fieldGroup === "pageNav")[0] : undefined;
65
+ </script>
66
+
67
+ <svelte:head>
68
+ <title>{title} | Thunderhead Engineering</title>
69
+ <meta data-key="description" name="description" content={summary}>
70
+ <meta property="og:type" content="article" />
71
+ <meta property="og:title" content={title} />
72
+ <meta name="twitter:title" content={title} />
73
+ <meta property="og:description" content={summary} />
74
+ <meta name="twitter:description" content={summary} />
75
+ <meta name="twitter:card" content="summary_large_image" />
76
+ <meta name="twitter:site" content="@thunderheadeng" />
77
+ <meta name="twitter:creator" content="@thunderheadeng" />
78
+ <meta property="og:image" content={featuredImage} />
79
+ <meta name="twitter:card" content={featuredImage} />
80
+ </svelte:head>
81
+
82
+ {#if pageNav}
83
+ <svelte:component
84
+ this={blocks.find((obj) => obj.ref === pageNav.fieldGroup).component}
85
+ data={pageNav}
86
+ />
87
+ {/if}
88
+
89
+ <main class="relative my-0 mx-auto box-border flex w-full max-w-7xl flex-grow flex-col py-12 px-4 sm:px-6 lg:px-8">
90
+ <article class="flex flex-col space-y-16 {layout}">
91
+ {#each page_sections as section}
92
+ {#if section && section.fieldGroup === "sidebar-content"}
93
+ <svelte:component
94
+ this={blocks.find((obj) => obj.ref === section.fieldGroup).component}
95
+ data={section}
96
+ {title}
97
+ {date}
98
+ {lastmod}><slot /></svelte:component
99
+ >
100
+ {:else if section && section.fieldGroup != "sidebar-content" && section.fieldGroup != "pageNav"}
101
+ <svelte:component
102
+ this={blocks.find((obj) => obj.ref === section.fieldGroup).component}
103
+ data={section}
104
+ />
105
+ {/if}
106
+ {/each}
107
+ </article>
108
+ </main>
@@ -0,0 +1,47 @@
1
+ /** @typedef {typeof __propDef.props} BlocksProps */
2
+ /** @typedef {typeof __propDef.events} BlocksEvents */
3
+ /** @typedef {typeof __propDef.slots} BlocksSlots */
4
+ export default class Blocks extends SvelteComponent<{
5
+ form: any;
6
+ data?: {};
7
+ summary?: any;
8
+ title?: any;
9
+ image?: any;
10
+ date?: any;
11
+ lastmod?: any;
12
+ notIndexed?: any;
13
+ type?: any;
14
+ layout?: any;
15
+ page_sections?: any;
16
+ }, {
17
+ [evt: string]: CustomEvent<any>;
18
+ }, {
19
+ default: {};
20
+ }> {
21
+ }
22
+ export type BlocksProps = typeof __propDef.props;
23
+ export type BlocksEvents = typeof __propDef.events;
24
+ export type BlocksSlots = typeof __propDef.slots;
25
+ import { SvelteComponent } from "svelte";
26
+ declare const __propDef: {
27
+ props: {
28
+ form: any;
29
+ data?: {};
30
+ summary?: any;
31
+ title?: any;
32
+ image?: any;
33
+ date?: any;
34
+ lastmod?: any;
35
+ notIndexed?: any;
36
+ type?: any;
37
+ layout?: any;
38
+ page_sections?: any;
39
+ };
40
+ events: {
41
+ [evt: string]: CustomEvent<any>;
42
+ };
43
+ slots: {
44
+ default: {};
45
+ };
46
+ };
47
+ export {};
@@ -0,0 +1,3 @@
1
+ export function browserGet(key: any): any;
2
+ export function browserSet(key: any, value: any): any;
3
+ export function post(fetch: any, url: any, body: any): Promise<any>;
@@ -0,0 +1,63 @@
1
+ import { browser } from "$app/environment";
2
+
3
+ export function browserGet(key) {
4
+ if (browser) {
5
+ const item = localStorage.getItem(key);
6
+ if (item) {
7
+ return JSON.parse(item);
8
+ }
9
+ }
10
+ return null;
11
+ }
12
+
13
+ export function browserSet(key, value) {
14
+ if (browser) {
15
+ localStorage.setItem(key, value);
16
+ }
17
+ return null;
18
+ }
19
+
20
+ export async function post(fetch, url, body) {
21
+ let customError = false;
22
+ try {
23
+ let headers = {};
24
+ if (!(body instanceof FormData)) {
25
+ headers["Content-Type"] = "application/json";
26
+ body = JSON.stringify(body);
27
+ }
28
+ const token = browserGet("token");
29
+ if (token) {
30
+ headers["X-UltraCart-Api-Version"] = "2017-03-01";
31
+ headers[Accept] = "application/json";
32
+ headers["x-ultracart-simple-key"] = token;
33
+ }
34
+ const res = await fetch(url, {
35
+ method: "POST",
36
+ body,
37
+ headers,
38
+ });
39
+ if (!res.ok) {
40
+ try {
41
+ const data = await res.json();
42
+ const error = data.message[0].messages[0];
43
+ customError = true;
44
+ throw { id: error.id, message: error.message };
45
+ } catch (err) {
46
+ console.log(err);
47
+ throw err;
48
+ }
49
+ }
50
+ try {
51
+ const json = await res.json();
52
+ return json;
53
+ } catch (err) {
54
+ console.log(err);
55
+ throw { id: "", message: "An unknown error has occured." };
56
+ }
57
+ } catch (err) {
58
+ console.log(err);
59
+ throw customError
60
+ ? err
61
+ : { id: "", message: "An unknown error has occured" };
62
+ }
63
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "Thunderhead Engineering Design System",
3
+ "url": "https://tecitheme.netlify.app",
4
+ "showBanner": false,
5
+ "bannerData": {
6
+ "showCTA": true,
7
+ "shortText": "Short text in a few words to show how it works.",
8
+ "longText": "Long test text that goes on and on for a while with some information about something that people should know about.",
9
+ "ctaText": "Take Action",
10
+ "ctaLink": "https://www.thunderheadeng.com",
11
+ "allowClose": false
12
+ }
13
+ }
@@ -0,0 +1,5 @@
1
+ export function scrollTo(anchor: any): void;
2
+ export function getColorStyles(type: any, color: any): string;
3
+ export function validateEmail(email: any): boolean;
4
+ export function slugFromPath(path: any): void;
5
+ export function buildToC(): boolean;
package/dist/utils.js ADDED
@@ -0,0 +1,162 @@
1
+ export function scrollTo(anchor) {
2
+ document.querySelector("#" + anchor).scrollIntoView({
3
+ behavior: "smooth",
4
+ });
5
+ }
6
+
7
+ export function getColorStyles(type, color){
8
+ let classes = ""
9
+ switch (type) {
10
+ case 'text':
11
+ switch (color) {
12
+ case 'pyrosim':
13
+ classes = "text-pyrosim"
14
+ break;
15
+ case 'pathfinder':
16
+ classes = "text-pathfinder"
17
+ break;
18
+ case 'ventus':
19
+ classes = "text-ventus"
20
+ break;
21
+ case 'gray':
22
+ classes = "text-gray-300"
23
+ break;
24
+ case 'white':
25
+ classes = "text-white"
26
+ break;
27
+ default:
28
+ classes = "text-teci-blue-dark"
29
+ break;
30
+ }
31
+ break;
32
+ case 'button':
33
+ switch (color) {
34
+ case 'pyrosim':
35
+ classes = "bg-pyrosim hover:bg-pyrosim-dark text-white focus:ring-teci-blue-light border-pyrosim-dark"
36
+ break;
37
+ case 'pathfinder':
38
+ classes = "bg-pathfinder hover:bg-pathfinder-dark text-white focus:ring-teci-blue-light border-pathfinder-dark"
39
+ break;
40
+ case 'ventus':
41
+ classes = "bg-ventus hover:bg-ventus-dark text-white focus:ring-teci-blue-light border-ventus-dark"
42
+ break;
43
+ case 'white':
44
+ classes = "bg-white text-gray-600 hover:bg-gray-200 focus:ring-teci-blue-light border-gray-200"
45
+ break;
46
+ default:
47
+ classes = "bg-teci-blue-light hover:bg-teci-blue-dark text-white focus:ring-teci-blue-light border-teci-blue-dark"
48
+ break;
49
+ }
50
+ break;
51
+ case 'background':
52
+ switch (color) {
53
+ case 'pyrosim':
54
+ classes = "bg-pyrosim text-white"
55
+ break;
56
+ case 'pathfinder':
57
+ classes = "bg-pathfinder text-white"
58
+ break;
59
+ case 'ventus':
60
+ classes = "bg-ventus text-white"
61
+ break;
62
+ case 'teci':
63
+ classes = "bg-teci-blue-light text-white"
64
+ break;
65
+ default:
66
+ classes = "bg-white"
67
+ break;
68
+ }
69
+ break;
70
+ default:
71
+ break;
72
+ }
73
+ return classes;
74
+ }
75
+
76
+ export function validateEmail(email) {
77
+ const re =
78
+ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
79
+ return re.test(String(email).toLowerCase());
80
+ }
81
+
82
+ export function slugFromPath(path) {
83
+ path.match(/([\w-]+)\.(svelte\.md|md|svx)/i)?.[1] ?? null;
84
+ }
85
+
86
+ export function buildToC() {
87
+ // Based on https://projectcodeed.blogspot.com/2020/04/an-automatic-table-of-contents.html
88
+
89
+ // Get ToC div
90
+ let toc = document.getElementById("ToC");
91
+
92
+ //Add a header
93
+ var tocHeader = document.createElement("a");
94
+ tocHeader.classList.add(
95
+ "mb-2",
96
+ "inline-block",
97
+ "w-auto",
98
+ "text-center",
99
+ "bg-gray-50",
100
+ "hover:bg-gray-100",
101
+ "py-1",
102
+ "px-2",
103
+ "border"
104
+ );
105
+ tocHeader.innerHTML =
106
+ "<span class='material-icons-outlined text-sm font-bold text-gray-500 align-text-bottom'>vertical_align_top</span>";
107
+ tocHeader.setAttribute("href", "#top");
108
+ tocHeader.setAttribute("title", "To Top of Page");
109
+ toc.appendChild(tocHeader);
110
+
111
+ // Create a list for the ToC entries
112
+ let tocList = document.createElement("ul");
113
+
114
+ // Find the primary content section
115
+ let content = document.getElementById("content");
116
+
117
+ // Get the h2 tags - ToC entries
118
+ let headers = content.getElementsByTagName("h2");
119
+
120
+ if (headers.length == 0) {
121
+ console.log("There are not any H2 elements in the document.");
122
+ } else {
123
+ // For each h2
124
+ for (let i = 0; i < headers.length; i++) {
125
+ // Get Heading ID
126
+ let name = headers[i].id;
127
+
128
+ // list item for the entry
129
+ let tocListItem = document.createElement("li");
130
+ tocListItem.classList.add(
131
+ "text-teci-blue-light",
132
+ "hover:text-teci-blue-dark",
133
+ "text-sm",
134
+ "truncate"
135
+ );
136
+
137
+ // link for the h2
138
+ let tocEntry = document.createElement("a");
139
+ tocEntry.setAttribute("href", "#" + name);
140
+ tocEntry.innerText = headers[i].innerText;
141
+
142
+ // add link to list item list
143
+ tocListItem.appendChild(tocEntry);
144
+
145
+ // add list item to list
146
+ tocList.appendChild(tocListItem);
147
+ }
148
+
149
+ // add list to toc element
150
+ toc.appendChild(tocList);
151
+
152
+ //Add a footer
153
+ //var tocFooter = document.createElement("a");
154
+ //tocFooter.classList.add("mt-2", "inline-block", "w-auto", "text-center", "bg-gray-50", "hover:bg-gray-100", "py-1", "px-2", "border")
155
+ //tocFooter.innerHTML="<span class='material-icons-outlined text-sm font-bold text-gray-500 align-text-bottom'>vertical_align_bottom</span>";
156
+ //tocFooter.setAttribute("href","#bottom");
157
+ //tocFooter.setAttribute("title","To Bottom of Page");
158
+ //toc.appendChild(tocFooter);
159
+
160
+ return true;
161
+ }
162
+ }
@@ -0,0 +1 @@
1
+ export const variables: {};
@@ -0,0 +1,2 @@
1
+
2
+ export const variables = {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tecitheme",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "license": "MIT",
5
5
  "scripts": {
6
6
  "dev": "vite dev",