tecitheme 0.3.3 → 0.3.4

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 (156) hide show
  1. package/.eslintrc.cjs +24 -0
  2. package/.frontmatter/content/mediaDb.json +1 -0
  3. package/.frontmatter/templates/article.md +11 -0
  4. package/.gitpod.yml +19 -0
  5. package/.vscode/ltex.dictionary.en-US.txt +3 -0
  6. package/.vscode/settings.json +7 -0
  7. package/dist/assets/js/store.d.ts +2 -0
  8. package/dist/assets/js/store.js +4 -0
  9. package/{components → dist/components}/CountrySelector.svelte +2 -2
  10. package/{components → dist/components}/Footer.svelte +24 -60
  11. package/{components → dist/components}/Footer.svelte.d.ts +2 -5
  12. package/{components → dist/components}/NewsGrid.svelte +3 -3
  13. package/{components → dist/components}/Video.svelte +1 -1
  14. package/{get-content.d.ts → dist/get-content.d.ts} +2 -1
  15. package/{get-content.js → dist/get-content.js} +5 -2
  16. package/{layouts → dist/layouts}/blocks.svelte +15 -15
  17. package/{site_config.json → dist/site_config.json} +1 -1
  18. package/frontmatter.json +17 -0
  19. package/mdsvex.config.js +19 -0
  20. package/netlify.toml +7 -0
  21. package/package.json +22 -46
  22. package/postcss.config.cjs +13 -0
  23. package/src/app.css +49 -0
  24. package/src/app.html +22 -0
  25. package/src/global.d.ts +5 -0
  26. package/src/lib/assets/TECi_logo.svelte +177 -0
  27. package/src/lib/assets/js/store.js +4 -0
  28. package/src/lib/components/Banner.svelte +91 -0
  29. package/src/lib/components/Button.svelte +12 -0
  30. package/src/lib/components/CTA.svelte +36 -0
  31. package/src/lib/components/CTABranded.svelte +15 -0
  32. package/src/lib/components/CTASplitImage.svelte +27 -0
  33. package/src/lib/components/Card.svelte +93 -0
  34. package/src/lib/components/ContentTwoColumns.svelte +47 -0
  35. package/src/lib/components/CountrySelector.svelte +167 -0
  36. package/src/lib/components/FeatureGrid.svelte +40 -0
  37. package/src/lib/components/Figure.svelte +37 -0
  38. package/src/lib/components/Footer.svelte +270 -0
  39. package/src/lib/components/Header.svelte +1230 -0
  40. package/src/lib/components/HeadingCentered.svelte +33 -0
  41. package/src/lib/components/Hero.svelte +72 -0
  42. package/src/lib/components/Icon.svelte +138 -0
  43. package/src/lib/components/LogoCloud.svelte +25 -0
  44. package/src/lib/components/Math.svelte +24 -0
  45. package/src/lib/components/MediaFeature.svelte +66 -0
  46. package/src/lib/components/Modal.svelte +68 -0
  47. package/src/lib/components/NewsGrid.svelte +182 -0
  48. package/src/lib/components/PricingTable.svelte +92 -0
  49. package/src/lib/components/SidebarContent.svelte +122 -0
  50. package/src/lib/components/Stats.svelte +34 -0
  51. package/src/lib/components/Subscribe.svelte +24 -0
  52. package/src/lib/components/Testimonial.svelte +169 -0
  53. package/src/lib/components/ThreeColumn.svelte +19 -0
  54. package/src/lib/components/TrialForm.svelte +302 -0
  55. package/src/lib/components/Video.svelte +118 -0
  56. package/src/lib/components/Wrap.svelte +12 -0
  57. package/src/lib/get-content.js +98 -0
  58. package/src/lib/layouts/blocks.svelte +93 -0
  59. package/src/lib/req_utils.js +63 -0
  60. package/src/lib/site_config.json +11 -0
  61. package/src/lib/utils.js +92 -0
  62. package/src/lib/variables.ts +3 -0
  63. package/src/routes/+layout.server.js +20 -0
  64. package/src/routes/+layout.svelte +24 -0
  65. package/src/routes/+page.md +61 -0
  66. package/src/routes/features/+page.md +78 -0
  67. package/src/routes/news/+page.md +21 -0
  68. package/src/routes/news/[slug]/+page.svelte +33 -0
  69. package/src/routes/news/[slug]/+page.ts +16 -0
  70. package/src/routes/news/filter/[tag]/+page.svelte +36 -0
  71. package/src/routes/news/filter/[tag]/+page.ts +14 -0
  72. package/src/routes/news/post1.md +45 -0
  73. package/src/routes/news/post2.md +46 -0
  74. package/src/routes/pathfinder/+page.md +240 -0
  75. package/src/routes/pathfinder/news/+page.md +20 -0
  76. package/src/routes/posts.json/+server.js +9 -0
  77. package/src/routes/product/+page.md +240 -0
  78. package/src/routes/product/news/+page.md +20 -0
  79. package/src/routes/product/trial/+page.svelte +7 -0
  80. package/src/routes/sidebar/+page.md +357 -0
  81. package/static/favicon.ico +0 -0
  82. package/static/uploads/company_pathfinder.png +0 -0
  83. package/static/uploads/company_petrasim.png +0 -0
  84. package/static/uploads/company_pyrosim.jpg +0 -0
  85. package/static/uploads/fire.jpg +0 -0
  86. package/static/uploads/pyrosim_libraries_386x395.png +0 -0
  87. package/static/uploads/rocks.jpg +0 -0
  88. package/static/uploads/water.jpg +0 -0
  89. package/svelte.config.js +32 -0
  90. package/tailwind.config.cjs +26 -0
  91. package/tsconfig.json +32 -0
  92. package/vite.config.js +20 -0
  93. package/components/MetaSocial.svelte +0 -15
  94. package/components/MetaSocial.svelte.d.ts +0 -29
  95. package/{assets → dist/assets}/TECi_logo.svelte +0 -0
  96. package/{assets → dist/assets}/TECi_logo.svelte.d.ts +0 -0
  97. package/{components → dist/components}/Banner.svelte +0 -0
  98. package/{components → dist/components}/Banner.svelte.d.ts +0 -0
  99. package/{components → dist/components}/Button.svelte +0 -0
  100. package/{components → dist/components}/Button.svelte.d.ts +0 -0
  101. package/{components → dist/components}/CTA.svelte +0 -0
  102. package/{components → dist/components}/CTA.svelte.d.ts +0 -0
  103. package/{components → dist/components}/CTABranded.svelte +0 -0
  104. package/{components → dist/components}/CTABranded.svelte.d.ts +0 -0
  105. package/{components → dist/components}/CTASplitImage.svelte +0 -0
  106. package/{components → dist/components}/CTASplitImage.svelte.d.ts +0 -0
  107. package/{components → dist/components}/Card.svelte +0 -0
  108. package/{components → dist/components}/Card.svelte.d.ts +0 -0
  109. package/{components → dist/components}/ContentTwoColumns.svelte +0 -0
  110. package/{components → dist/components}/ContentTwoColumns.svelte.d.ts +0 -0
  111. package/{components → dist/components}/CountrySelector.svelte.d.ts +0 -0
  112. package/{components → dist/components}/FeatureGrid.svelte +0 -0
  113. package/{components → dist/components}/FeatureGrid.svelte.d.ts +0 -0
  114. package/{components → dist/components}/Figure.svelte +0 -0
  115. package/{components → dist/components}/Figure.svelte.d.ts +0 -0
  116. package/{components → dist/components}/Header.svelte +0 -0
  117. package/{components → dist/components}/Header.svelte.d.ts +0 -0
  118. package/{components → dist/components}/HeadingCentered.svelte +0 -0
  119. package/{components → dist/components}/HeadingCentered.svelte.d.ts +0 -0
  120. package/{components → dist/components}/Hero.svelte +0 -0
  121. package/{components → dist/components}/Hero.svelte.d.ts +0 -0
  122. package/{components → dist/components}/Icon.svelte +0 -0
  123. package/{components → dist/components}/Icon.svelte.d.ts +0 -0
  124. package/{components → dist/components}/LogoCloud.svelte +0 -0
  125. package/{components → dist/components}/LogoCloud.svelte.d.ts +0 -0
  126. package/{components → dist/components}/Math.svelte +0 -0
  127. package/{components → dist/components}/Math.svelte.d.ts +0 -0
  128. package/{components → dist/components}/MediaFeature.svelte +0 -0
  129. package/{components → dist/components}/MediaFeature.svelte.d.ts +0 -0
  130. package/{components → dist/components}/Modal.svelte +0 -0
  131. package/{components → dist/components}/Modal.svelte.d.ts +0 -0
  132. package/{components → dist/components}/NewsGrid.svelte.d.ts +0 -0
  133. package/{components → dist/components}/PricingTable.svelte +0 -0
  134. package/{components → dist/components}/PricingTable.svelte.d.ts +0 -0
  135. package/{components → dist/components}/SidebarContent.svelte +0 -0
  136. package/{components → dist/components}/SidebarContent.svelte.d.ts +0 -0
  137. package/{components → dist/components}/Stats.svelte +0 -0
  138. package/{components → dist/components}/Stats.svelte.d.ts +0 -0
  139. package/{components → dist/components}/Subscribe.svelte +0 -0
  140. package/{components → dist/components}/Subscribe.svelte.d.ts +0 -0
  141. package/{components → dist/components}/Testimonial.svelte +0 -0
  142. package/{components → dist/components}/Testimonial.svelte.d.ts +0 -0
  143. package/{components → dist/components}/ThreeColumn.svelte +0 -0
  144. package/{components → dist/components}/ThreeColumn.svelte.d.ts +0 -0
  145. package/{components → dist/components}/TrialForm.svelte +0 -0
  146. package/{components → dist/components}/TrialForm.svelte.d.ts +0 -0
  147. package/{components → dist/components}/Video.svelte.d.ts +0 -0
  148. package/{components → dist/components}/Wrap.svelte +0 -0
  149. package/{components → dist/components}/Wrap.svelte.d.ts +0 -0
  150. package/{layouts → dist/layouts}/blocks.svelte.d.ts +2 -2
  151. /package/{req_utils.d.ts → dist/req_utils.d.ts} +0 -0
  152. /package/{req_utils.js → dist/req_utils.js} +0 -0
  153. /package/{utils.d.ts → dist/utils.d.ts} +0 -0
  154. /package/{utils.js → dist/utils.js} +0 -0
  155. /package/{variables.d.ts → dist/variables.d.ts} +0 -0
  156. /package/{variables.js → dist/variables.js} +0 -0
@@ -0,0 +1,167 @@
1
+ <script>
2
+ import Modal from '$lib/components/Modal.svelte';
3
+
4
+ export let resellerModal = true;
5
+ export let selection = 'sel';
6
+ export let allowContinue = false;
7
+
8
+ let modal;
9
+ let modalData;
10
+ let resellerIndex = -1;
11
+
12
+ let resellerArray = [
13
+ ['BE', 'NL', 'LU'],
14
+ ['CN', 'HK'],
15
+ ['CZ', 'SK'],
16
+ ['EG', 'JO', 'LB', 'OM', 'QA', 'SA', 'AE'],
17
+ ['FR'],
18
+ ['DE', 'CH', 'AT', 'LI'],
19
+ ['GR','CY'],
20
+ ['IN', 'BD', 'LK', 'CM', 'BT', 'MM'],
21
+ ['IT', 'HU'],
22
+ ['JP'],
23
+ ['KR'],
24
+ ['PL', 'UA'],
25
+ ['RU', 'AM', 'AZ', 'BY', 'GE', 'KZ', 'KG', 'MD', 'TJ', 'TM', 'UZ'],
26
+ ['RO'],
27
+ ['SG', 'MY', 'ID', 'VN'],
28
+ ['ES'],
29
+ ];
30
+
31
+ let resellerLinks = [
32
+ 'belgium-netherlands-and-luxembourg',
33
+ 'china-and-hong-kong',
34
+ 'czech-republic-and-slovak-republic',
35
+ 'egypt-jordan-lebanon-oman-qatar-saudi-arabia-united-arab-emirates',
36
+ 'france-and-french-language-customers-in-other-regions',
37
+ 'germany-switzerland-austria-and-liechtenstein',
38
+ 'greece-cyprus',
39
+ 'india-bangladesh-sri-lanka-nepal-bhutan-myanmar',
40
+ 'italy-hungary',
41
+ 'japan',
42
+ 'korea',
43
+ 'poland-ukraine',
44
+ 'russia-and-cis',
45
+ 'romania',
46
+ 'singapore-malaysia-indonesia-and-vietnam',
47
+ 'spain',
48
+ ];
49
+
50
+ function isReseller() {
51
+ resellerIndex = resellerArray.findIndex((arr) => arr.includes(selection));
52
+ return resellerIndex > -1;
53
+ }
54
+
55
+ function handleSelection() {
56
+ if (resellerModal) {
57
+ if (selection != 'sel' && !isReseller()) {
58
+ allowContinue = true;
59
+ } else if (selection != 'sel' && isReseller()) {
60
+ modal.show();
61
+ allowContinue = false;
62
+ } else {
63
+ allowContinue = false;
64
+ }
65
+ }
66
+ }
67
+
68
+ $:modalData = {
69
+ modalContent: `<h2 class="text-lg leading-6 font-medium text-gray-900">Reseller Required</h2><div class="mt-2 px-7 py-3"><p class="text-sm text-gray-500">Thunderhead cannot sell to you directly, you must use the authorized reseller for your region.</p></div><div class="items-center px-4 py-3"><a href="https://www.thunderheadeng.com/partners#${resellerLinks[resellerIndex]}" id="ok-btn" class="px-4 py-2 bg-teci-blue-light text-white text-base font-medium w-full shadow-sm hover:bg-teci-blue-dark focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">Reseller Contact Information</a></div>`,
70
+ };
71
+ </script>
72
+
73
+ <select
74
+ name="card_country"
75
+ bind:value="{selection}"
76
+ on:change="{handleSelection}"
77
+ >
78
+ <option value="sel">Select Your Country</option>
79
+ <option value="AI">Anguilla</option>
80
+ <option value="AR">Argentina</option>
81
+ <option value="AM">Armenia</option>
82
+ <option value="AU">Australia</option>
83
+ <option value="AT">Austria</option>
84
+ <option value="AZ">Azerbaijan</option>
85
+ <option value="BD">Bangladesh</option>
86
+ <option value="BY">Belarus</option>
87
+ <option value="BE">Belgium</option>
88
+ <option value="BR">Brazil</option>
89
+ <option value="CA">Canada</option>
90
+ <option value="CL">Chile</option>
91
+ <option value="HR">Croatia</option>
92
+ <option value="CN">China</option>
93
+ <option value="CR">Costa Rica</option>
94
+ <option value="CY">Cyprus</option>
95
+ <option value="CZ">Czech Republic</option>
96
+ <option value="DK">Denmark</option>
97
+ <option value="DO">Dominican Republic</option>
98
+ <option value="EC">Ecuador</option>
99
+ <option value="EG">Egypt</option>
100
+ <option value="EE">Estonia</option>
101
+ <option value="FO">Faroe Islands</option>
102
+ <option value="FI">Finland</option>
103
+ <option value="FR">France</option>
104
+ <option value="GE">Georgia</option>
105
+ <option value="DE">Germany</option>
106
+ <option value="GR">Greece</option>
107
+ <option value="HK">Hong Kong</option>
108
+ <option value="HU">Hungary</option>
109
+ <option value="IS">Iceland</option>
110
+ <option value="IN">India</option>
111
+ <option value="ID">Indonesia</option>
112
+ <option value="IE">Ireland</option>
113
+ <option value="IL">Israel</option>
114
+ <option value="IT">Italy</option>
115
+ <option value="JM">Jamaica</option>
116
+ <option value="JP">Japan</option>
117
+ <option value="JO">Jordan</option>
118
+ <option value="KZ">Kazakhstan</option>
119
+ <option value="KW">Kuwait</option>
120
+ <option value="KG">Kyrgyzstan</option>
121
+ <option value="LV">Latvia</option>
122
+ <option value="LB">Lebanon</option>
123
+ <option value="LT">Lithuania</option>
124
+ <option value="LU">Luxembourg</option>
125
+ <option value="MY">Malaysia</option>
126
+ <option value="MT">Malta</option>
127
+ <option value="MX">Mexico</option>
128
+ <option value="MD">Moldova</option>
129
+ <option value="MM">Myanmar</option>
130
+ <option value="CM">Nepal</option>
131
+ <option value="NL">Netherlands</option>
132
+ <option value="NZ">New Zealand</option>
133
+ <option value="NO">Norway</option>
134
+ <option value="OM">Oman</option>
135
+ <option value="PE">Peru</option>
136
+ <option value="PH">Philippines</option>
137
+ <option value="PL">Poland</option>
138
+ <option value="PT">Portugal</option>
139
+ <option value="QA">Qatar</option>
140
+ <option value="RO">Romania</option>
141
+ <option value="RU">Russia</option>
142
+ <option value="SA">Saudi Arabia</option>
143
+ <option value="SG">Singapore</option>
144
+ <option value="SK">Slovakia</option>
145
+ <option value="SI">Slovenia</option>
146
+ <option value="ZA">South Africa</option>
147
+ <option value="KR">South Korea</option>
148
+ <option value="ES">Spain</option>
149
+ <option value="LK">Sri Lanka</option>
150
+ <option value="SE">Sweden</option>
151
+ <option value="CH">Switzerland</option>
152
+ <option value="TW">Taiwan</option>
153
+ <option value="TJ">Tajikistan</option>
154
+ <option value="TH">Thailand</option>
155
+ <option value="TR">Turkey</option>
156
+ <option value="TM">Turkmenistan</option>
157
+ <option value="UA">Ukraine</option>
158
+ <option value="AE">United Arab Emirates</option>
159
+ <option value="GB">United Kingdom</option>
160
+ <option value="US">United States</option>
161
+ <option value="UY">Uruguay</option>
162
+ <option value="UZ">Uzbekistan</option>
163
+ <option value="VE">Venezuela</option>
164
+ <option value="VN">Viet Nam</option>
165
+ </select>
166
+
167
+ <Modal bind:this="{modal}" bind:data="{modalData}" />
@@ -0,0 +1,40 @@
1
+ <script>
2
+ export let data
3
+ </script>
4
+
5
+ <section>
6
+ <div class="sm:text-center">
7
+ {#if data.preheading}
8
+ <p class="mb-2 text-lg font-semibold leading-8
9
+ {(data.color == "pyrosim" ? "text-pyrosim" : (data.color == "pathfinder" ? "text-pathfinder" : "text-teci-blue-dark"))}
10
+ ">
11
+ {data.preheading}
12
+ </p>
13
+ {/if}
14
+ <h2 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">
15
+ {data.heading}
16
+ </h2>
17
+ {#if data.subheading}
18
+ <p class="mx-auto mt-6 max-w-2xl text-lg leading-8 text-gray-600">
19
+ {data.subheading}
20
+ </p>
21
+ {/if}
22
+ </div>
23
+ <div class="mt-12 max-w-lg sm:mx-auto md:max-w-none">
24
+ <div class="grid grid-cols-1 gap-y-8 md:grid-cols-2 md:gap-x-12">
25
+ {#each data.blocks as block}
26
+ <div class="relative flex flex-row gap-6">
27
+ <div class="hidden sm:flex h-12 w-12 items-center justify-center text-white sm:shrink-0 flex-shrink-0
28
+ {(data.color == "pyrosim" ? "bg-pyrosim" : (data.color == "pathfinder" ? "bg-pathfinder" : "bg-teci-blue-dark"))}
29
+ ">
30
+ <Icon classes="w-auto" icon={block.icon} />
31
+ </div>
32
+ <div class="sm:min-w-0 sm:flex-1">
33
+ <p class="text-lg font-semibold leading-8 text-gray-900">{block.heading}</p>
34
+ <p class="mt-2 text-base leading-7 text-gray-600">{block.body}</p>
35
+ </div>
36
+ </div>
37
+ {/each}
38
+ </div>
39
+ </div>
40
+ </section>
@@ -0,0 +1,37 @@
1
+ <script>
2
+ export let image;
3
+ export let title;
4
+ export let caption;
5
+ export let link;
6
+
7
+ let figureImage;
8
+ let figureLink;
9
+
10
+ if (image.startsWith("http")) {
11
+ figureImage = image;
12
+ figureLink = link ? link : image;
13
+ } else if (image.includes("gif")) {
14
+ figureImage = "https://teci-files.imgix.net/www/images/" + image;
15
+ figureLink = link ? link : "https://teci-files.imgix.net/www/images/" + image;
16
+ } else {
17
+ figureImage = "https://teci-files.imgix.net/www/images/" +
18
+ image +
19
+ "?auto=compress&auto=format";
20
+ figureLink = link ? link : "https://teci-files.imgix.net/www/images/" + image;
21
+ }
22
+ </script>
23
+
24
+ {#if image}
25
+ <section class="not-prose mb-8 flex justify-center">
26
+ <figure
27
+ class="mx-auto w-auto border border-slate-100 bg-white p-2 shadow-lg"
28
+ >
29
+ <a class="inline-block w-full bg-slate-200 p-1" href={figureLink}>
30
+ <img class="mx-auto w-auto" src={figureImage} alt={title} {title} />
31
+ </a>
32
+ {#if caption}
33
+ <figcaption class="p-2 text-center">{@html caption}</figcaption>
34
+ {/if}
35
+ </figure>
36
+ </section>
37
+ {/if}
@@ -0,0 +1,270 @@
1
+ <script>
2
+ let d = new Date();
3
+ </script>
4
+
5
+ <footer id="bottom" class="bg-gray-800" aria-labelledby="footerHeading">
6
+ <h2 id="footerHeading" class="sr-only">Footer</h2>
7
+ <div class="mx-auto max-w-7xl py-12 px-4 sm:px-6 lg:py-16 lg:px-8">
8
+ <div class="xl:grid xl:grid-cols-3 xl:gap-8">
9
+ <div class="grid grid-cols-2 gap-8 xl:col-span-2">
10
+ <div class="md:grid md:grid-cols-2 md:gap-8">
11
+ <div>
12
+ <h3
13
+ class="text-sm font-bold uppercase tracking-wider text-gray-300"
14
+ >
15
+ Products
16
+ </h3>
17
+ <ul class="mt-4 space-y-4">
18
+ <li>
19
+ <a
20
+ href="https://www.thunderheadeng.com/pyrosim/"
21
+ class="text-base text-gray-100 hover:text-white"
22
+ >
23
+ PyroSim
24
+ </a>
25
+ </li>
26
+ <li>
27
+ <a
28
+ href="https://www.thunderheadeng.com/pathfinder/"
29
+ class="text-base text-gray-100 hover:text-white"
30
+ >
31
+ Pathfinder
32
+ </a>
33
+ </li>
34
+ <li>
35
+ <a
36
+ href="https://www.thunderheadeng.com/petrasim/"
37
+ class="text-base text-gray-100 hover:text-white"
38
+ >
39
+ PetraSim
40
+ </a>
41
+ </li>
42
+ <li>
43
+ <a
44
+ href="https://www.thunderheadeng.com/other"
45
+ class="text-base text-gray-100 hover:text-white"
46
+ >
47
+ Other Tools
48
+ </a>
49
+ </li>
50
+ </ul>
51
+ </div>
52
+ <div class="mt-12 md:mt-0">
53
+ <h3
54
+ class="text-sm font-bold uppercase tracking-wider text-gray-300"
55
+ >
56
+ Support
57
+ </h3>
58
+ <ul class="mt-4 space-y-4">
59
+ <li>
60
+ <a
61
+ href="https://support.thunderheadeng.com/docs/"
62
+ class="text-base text-gray-100 hover:text-white"
63
+ >
64
+ Documentation
65
+ </a>
66
+ </li>
67
+ <li>
68
+ <a
69
+ href="https://support.thunderheadeng.com/tutorials/"
70
+ class="text-base text-gray-100 hover:text-white"
71
+ >
72
+ Tutorials
73
+ </a>
74
+ </li>
75
+ <li>
76
+ <a
77
+ href="https://support.thunderheadeng.com/release-notes/"
78
+ class="text-base text-gray-100 hover:text-white"
79
+ >
80
+ Release Notes
81
+ </a>
82
+ </li>
83
+ <li>
84
+ <a
85
+ href="https://support.thunderheadeng.com/answers/"
86
+ class="text-base text-gray-100 hover:text-white"
87
+ >
88
+ FAQs
89
+ </a>
90
+ </li>
91
+ </ul>
92
+ </div>
93
+ </div>
94
+ <div class="md:grid md:grid-cols-2 md:gap-8">
95
+ <div>
96
+ <h3
97
+ class="text-sm font-bold uppercase tracking-wider text-gray-300"
98
+ >
99
+ Events
100
+ </h3>
101
+ <ul class="mt-4 space-y-4">
102
+ <li>
103
+ <a
104
+ href="https://www.thunderheadeng.com/training/"
105
+ class="text-base text-gray-100 hover:text-white"
106
+ >
107
+ Calendar
108
+ </a>
109
+ </li>
110
+ <li>
111
+ <a
112
+ href="https://www.femtc.com/"
113
+ class="text-base text-gray-100 hover:text-white"
114
+ >
115
+ FEMTC
116
+ </a>
117
+ </li>
118
+ <li>
119
+ <a
120
+ href="https://www.thunderheadeng.com/training/"
121
+ class="text-base text-gray-100 hover:text-white"
122
+ >
123
+ Training
124
+ </a>
125
+ </li>
126
+ </ul>
127
+ </div>
128
+ <div class="mt-12 md:mt-0">
129
+ <h3
130
+ class="text-sm font-bold uppercase tracking-wider text-gray-300"
131
+ >
132
+ Company
133
+ </h3>
134
+ <ul class="mt-4 space-y-4">
135
+ <li>
136
+ <a
137
+ href="https://www.thunderheadeng.com/about/"
138
+ class="text-base text-gray-100 hover:text-white"
139
+ >
140
+ About
141
+ </a>
142
+ </li>
143
+ <li>
144
+ <a
145
+ href="https://www.thunderheadeng.com/news/"
146
+ class="text-base text-gray-100 hover:text-white"
147
+ >
148
+ News
149
+ </a>
150
+ </li>
151
+ <li>
152
+ <a
153
+ href="https://www.thunderheadeng.com/job-openings/"
154
+ class="text-base text-gray-100 hover:text-white"
155
+ >
156
+ Jobs
157
+ </a>
158
+ </li>
159
+ <li>
160
+ <a
161
+ href="https://www.thunderheadeng.com/partners"
162
+ class="text-base text-gray-100 hover:text-white"
163
+ >
164
+ Partners
165
+ </a>
166
+ </li>
167
+ </ul>
168
+ </div>
169
+ </div>
170
+ </div>
171
+ <div class="mt-8 flex flex-col justify-between md:items-end xl:mt-0">
172
+ <h3
173
+ class="text-right text-sm font-bold uppercase tracking-wider text-gray-300"
174
+ >
175
+ Subscribe to Updates
176
+ </h3>
177
+ <p
178
+ class="xxl:text-lg mt-4 text-right text-base leading-6 text-gray-300"
179
+ >
180
+ Receive information about new software releases, tutorials and major
181
+ announcements.
182
+ </p>
183
+ <data
184
+ id="mj-w-res-data"
185
+ data-token="c59142d82197a4f86bc30e8fa80e1ea8"
186
+ class="mj-w-data"
187
+ data-apikey="3aOX"
188
+ data-w-id="Fbu"
189
+ data-lang="en_US"
190
+ data-base="https://app.mailjet.com"
191
+ data-width="640"
192
+ data-height="480"
193
+ data-statics="statics"
194
+ />
195
+ <div
196
+ class="mj-w-button mj-w-btn mt-4 w-full md:max-w-xs"
197
+ data-token="c59142d82197a4f86bc30e8fa80e1ea8"
198
+ >
199
+ <div
200
+ class="mj-w-button-content flex w-full items-center justify-center border border-transparent bg-teci-blue-light px-4 py-2 text-base font-medium leading-6 text-white transition duration-150 ease-in-out hover:bg-teci-blue-dark focus:border-teci-blue-dark focus:outline-none"
201
+ >
202
+ Sign Up
203
+ </div>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ <div
208
+ class="mt-8 border-t border-gray-700 pt-8 md:flex md:items-center md:justify-between"
209
+ >
210
+ <div class="flex space-x-6 md:order-3">
211
+ <a
212
+ href="https://www.linkedin.com/company/thunderheadeng"
213
+ class="text-gray-300 hover:text-gray-300"
214
+ >
215
+ <span class="sr-only">LinkedIn</span>
216
+ <svg
217
+ class="h-6 w-6"
218
+ fill="currentColor"
219
+ viewBox="0 0 24 24"
220
+ aria-hidden="true"
221
+ >
222
+ <path
223
+ fill-rule="evenodd"
224
+ d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"
225
+ />
226
+ </svg>
227
+ </a>
228
+
229
+ <a
230
+ href="https://www.facebook.com/thunderheadeng"
231
+ class="text-gray-300 hover:text-gray-300"
232
+ >
233
+ <span class="sr-only">Facebook</span>
234
+ <svg
235
+ class="h-6 w-6"
236
+ fill="currentColor"
237
+ viewBox="0 0 24 24"
238
+ aria-hidden="true"
239
+ >
240
+ <path
241
+ fill-rule="evenodd"
242
+ d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"
243
+ clip-rule="evenodd"
244
+ />
245
+ </svg>
246
+ </a>
247
+
248
+ <a
249
+ href="https://twitter.com/thunderheadeng"
250
+ class="text-gray-300 hover:text-gray-300"
251
+ >
252
+ <span class="sr-only">Twitter</span>
253
+ <svg
254
+ class="h-6 w-6"
255
+ fill="currentColor"
256
+ viewBox="0 0 24 24"
257
+ aria-hidden="true"
258
+ >
259
+ <path
260
+ d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"
261
+ />
262
+ </svg>
263
+ </a>
264
+ </div>
265
+ <p class="mt-8 text-sm text-gray-300 md:order-1 md:mt-0">
266
+ &copy; 1998 - {d.getFullYear()} Thunderhead Engineering, All rights reserved.
267
+ </p>
268
+ </div>
269
+ </div>
270
+ </footer>