@networkpro/web 1.19.0 → 1.20.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 (59) hide show
  1. package/.github/workflows/build-and-publish.yml +5 -4
  2. package/.github/workflows/lighthouse.yml +1 -1
  3. package/.github/workflows/meta-check.yml +1 -1
  4. package/.github/workflows/playwright.yml +1 -1
  5. package/.github/workflows/publish-test.yml +5 -4
  6. package/.github/workflows/templates/publish.template.yml +5 -4
  7. package/CHANGELOG.md +82 -1
  8. package/cspell.json +3 -0
  9. package/package.json +16 -16
  10. package/scripts/auditScripts.js +1 -1
  11. package/scripts/bundleCss.js +1 -1
  12. package/scripts/checkEnv.js +1 -1
  13. package/scripts/checkNode.js +1 -1
  14. package/scripts/checkVersions.js +1 -1
  15. package/scripts/generateTest.js +1 -1
  16. package/scripts/openReport.js +1 -1
  17. package/src/app.html +3 -6
  18. package/src/hooks.server.js +10 -7
  19. package/src/lib/components/ServiceSummaryTable.svelte +113 -0
  20. package/src/lib/components/index.js +2 -1
  21. package/src/lib/components/layout/HeaderDefault.svelte +3 -1
  22. package/src/lib/components/layout/HeaderHome.svelte +6 -5
  23. package/src/lib/images.js +1 -1
  24. package/src/lib/index.js +2 -2
  25. package/src/lib/meta.js +14 -9
  26. package/src/lib/pages/AboutContent.svelte +26 -10
  27. package/src/lib/pages/HomeContent.svelte +11 -1
  28. package/src/lib/pages/LicenseContent.svelte +3 -3
  29. package/src/lib/pages/PrivacyContent.svelte +31 -1
  30. package/src/lib/pages/ServicesContent.svelte +545 -0
  31. package/src/lib/pages/index.js +2 -1
  32. package/src/lib/stores/posthog.js +2 -1
  33. package/src/lib/styles/css/default.css +88 -0
  34. package/src/lib/styles/global.min.css +1 -3
  35. package/src/lib/types/appConstants.js +1 -1
  36. package/src/lib/types/fossTypes.js +1 -1
  37. package/src/lib/utils/getUTMParams.js +1 -1
  38. package/src/lib/utils/purify.js +1 -1
  39. package/src/lib/utils/redirect.js +1 -1
  40. package/src/lib/utils/utm.js +2 -2
  41. package/src/routes/+layout.svelte +0 -2
  42. package/src/routes/consultation/+page.svelte +1 -1
  43. package/src/routes/services/+page.server.js +18 -0
  44. package/src/routes/services/+page.svelte +65 -0
  45. package/src/routes/status/+page.server.js +1 -1
  46. package/src/service-worker.js +2 -2
  47. package/static/bin/contact.vcf +1 -2
  48. package/static/disableSw.js +1 -1
  49. package/static/sitemap.xml +17 -5
  50. package/tests/e2e/app.spec.js +1 -1
  51. package/tests/e2e/mobile.spec.js +1 -1
  52. package/tests/e2e/shared/helpers.js +1 -1
  53. package/tests/meta/meta.test.js +1 -1
  54. package/tests/unit/client/lib/PWAInstallButton.test.js +1 -1
  55. package/tests/unit/client/lib/utils/redirect.test.js +1 -1
  56. package/tests/unit/server/internal/auditCoverage.test.js +1 -1
  57. package/tests/unit/server/lib/utils/purify.test.js +1 -1
  58. package/tests/unit/server/meta.test.js +1 -1
  59. package/vercel.json +12 -0
@@ -15,12 +15,12 @@ This file is part of Network Pro.
15
15
 
16
16
  //console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
17
17
 
18
- const { PAGE } = CONSTANTS;
18
+ const { PAGE, LINKS } = CONSTANTS;
19
19
 
20
20
  const aboutLink = `${base}/about`;
21
21
  const fossLink = `${base}/foss-spotlight`;
22
+ const servLink = `${base}/services`;
22
23
  const lhubLink = `${base}/links`;
23
- const blogLink = 'https://blog.netwk.pro';
24
24
  const discussLink =
25
25
  'https://github.com/netwk-pro/netwk-pro.github.io/discussions';
26
26
 
@@ -40,13 +40,14 @@ This file is part of Network Pro.
40
40
  */
41
41
  const nav = [
42
42
  { label: 'about', href: aboutLink, target: PAGE.SELF, external: false },
43
- { label: 'foss', href: fossLink, target: PAGE.SELF, external: false },
43
+ { label: 'services', href: servLink, target: PAGE.SELF, external: false },
44
44
  {
45
45
  label: 'blog',
46
- href: blogLink,
46
+ href: LINKS.BLOG,
47
47
  target: PAGE.SELF,
48
48
  external: false,
49
49
  },
50
+ { label: 'foss', href: fossLink, target: PAGE.SELF, external: false },
50
51
  {
51
52
  label: 'discussions',
52
53
  href: discussLink,
@@ -95,4 +96,4 @@ This file is part of Network Pro.
95
96
  </nav>
96
97
  <!-- END HOME HEADER -->
97
98
 
98
- <!-- cspell:ignore lhub -->
99
+ <!-- cspell:ignore lhub servLink -->
package/src/lib/images.js CHANGED
@@ -12,7 +12,7 @@ This file is part of Network Pro.
12
12
  * @file images.js
13
13
  * @description Provides convenient access to images in the src/lib/img directory
14
14
  * @module src/lib
15
- * @author SunDevil311
15
+ * @author Scott Lopez
16
16
  * @updated 2025-06-16
17
17
  */
18
18
 
package/src/lib/index.js CHANGED
@@ -15,8 +15,8 @@ This file is part of Network Pro.
15
15
  * Components, images, and utilities are organized in submodules
16
16
  * and re-exported here for flat `$lib` imports.
17
17
  * @module src/lib
18
- * @author SunDevil311
19
- * @updated 2025-10-05
18
+ * @author Scott Lopez
19
+ * @updated 2025-10-10
20
20
  */
21
21
 
22
22
  // Re-export all images so they can be imported directly from `$lib`
package/src/lib/meta.js CHANGED
@@ -20,46 +20,51 @@ const meta = {
20
20
  title:
21
21
  'Security, Networking, Privacy — Network Pro Strategies',
22
22
  description:
23
- 'Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro',
23
+ 'Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro Strategies',
24
24
  },
25
25
  '/about': {
26
26
  title: 'About Us — Network Pro™',
27
- description: 'About Us | Security, Networking, Privacy — Network Pro',
27
+ description: 'About Us | Security, Networking, Privacy — Network Pro Strategies',
28
28
  },
29
29
  '/privacy': {
30
30
  title: 'Privacy Policy — Network Pro™',
31
31
  description:
32
- 'Privacy Policy | Security, Networking, Privacy — Network Pro',
32
+ 'Privacy Policy | Security, Networking, Privacy — Network Pro Strategies',
33
33
  },
34
34
  '/terms-of-use': {
35
35
  title: 'Website Terms of Use — Network Pro™',
36
36
  description:
37
- 'Website Terms of Use | Security, Networking, Privacy — Network Pro',
37
+ 'Website Terms of Use | Security, Networking, Privacy — Network Pro Strategies',
38
38
  },
39
39
  '/license': {
40
40
  title: 'Legal, Copyright, and Licensing — Network Pro™',
41
41
  description:
42
- 'Legal, Copyright, and Licensing | Security, Networking, Privacy — Network Pro',
42
+ 'Legal, Copyright, and Licensing | Security, Networking, Privacy — Network Pro Strategies',
43
43
  },
44
44
  '/terms-conditions': {
45
45
  title: 'Consulting Terms and Conditions — Network Pro™',
46
46
  description:
47
- 'Terms and Conditions | Security, Networking, Privacy — Network Pro',
47
+ 'Terms and Conditions | Security, Networking, Privacy — Network Pro Strategies',
48
48
  },
49
49
  '/foss-spotlight': {
50
50
  title: 'FOSS Spotlight — Network Pro™',
51
51
  description:
52
- 'FOSS Spotlight | Security, Networking, Privacy — Network Pro',
52
+ 'FOSS Spotlight | Security, Networking, Privacy — Network Pro Strategies',
53
53
  },
54
54
  '/privacy-dashboard': {
55
55
  title: 'Privacy Dashboard — Network Pro™',
56
56
  description:
57
- 'Privacy Dashboard | Security, Networking, Privacy — Network Pro',
57
+ 'Privacy Dashboard | Security, Networking, Privacy — Network Pro Strategies',
58
58
  },
59
59
  '/pgp': {
60
60
  title: 'Public PGP Keys — Network Pro™',
61
61
  description:
62
- 'Public encryption keys for secure communication | Security, Networking, Privacy — Network Pro',
62
+ 'Public encryption keys for secure communication | Security, Networking, Privacy — Network Pro Strategies',
63
+ },
64
+ '/services': {
65
+ title: "On-Site Services - Network Pro™",
66
+ description:
67
+ 'On-Site Services | Security, Networking, Privacy — Network Pro Strategies'
63
68
  },
64
69
  // Excludes redirect-only routes like /contact, /consultation, /privacy-rights
65
70
  };
@@ -23,7 +23,7 @@ This file is part of Network Pro.
23
23
 
24
24
  //console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
25
25
 
26
- const { COMPANY_INFO, PAGE } = CONSTANTS;
26
+ const { COMPANY_INFO, CONTACT, PAGE } = CONSTANTS;
27
27
 
28
28
  /**
29
29
  * URL to the Contact Form route, using the base path
@@ -31,6 +31,12 @@ This file is part of Network Pro.
31
31
  */
32
32
  const contactLink = `${base}/contact`;
33
33
 
34
+ /**
35
+ * URL to the Consultation route, using the base path
36
+ * @type {string}
37
+ */
38
+ const consultLink = `${base}/consultation`;
39
+
34
40
  /**
35
41
  * URL to the PGP route, using the base path
36
42
  * @type {string}
@@ -142,7 +148,7 @@ This file is part of Network Pro.
142
148
  </p>
143
149
  </section>
144
150
 
145
- <div class="spacer"></div>
151
+ &nbsp;
146
152
 
147
153
  <section id="subhead">
148
154
  <h2>Security That Respects You</h2>
@@ -218,6 +224,7 @@ This file is part of Network Pro.
218
224
  <li><strong>Network Troubleshooting</strong></li>
219
225
  <li><strong>Network Security Review</strong></li>
220
226
  <li><strong>Add a Wi-Fi Device</strong></li>
227
+ <li><strong>Add or Configure a Printer</strong></li>
221
228
  </ul>
222
229
 
223
230
  <p>
@@ -226,19 +233,28 @@ This file is part of Network Pro.
226
233
  best practices in digital privacy, secure design, and threat mitigation.
227
234
  </p>
228
235
 
236
+ <div class="spacer"></div>
237
+
229
238
  <p>
230
- <strong
231
- >{COMPANY_INFO.APP_NAME}&trade; exists to bring strong, thoughtful security
232
- to organizations and individuals that value integrity—without sacrificing
233
- agility or trust.</strong>
234
- We don't just secure infrastructure. We secure confidence.
239
+ At {COMPANY_INFO.APP_NAME}&trade;, we deliver robust, intentional solutions
240
+ for individuals and organizations that prioritize integrity — without
241
+ compromising agility or trust. We don't just protect infrastructure. We
242
+ protect peace of mind.
235
243
  </p>
236
244
 
237
- <div class="spacer"></div>
245
+ <p>
246
+ Ready to take the next step? <a href={contactLink} target={PAGE.BLANK}
247
+ >Let's connect</a>
248
+ to explore how we can help fortify your home or business.
249
+ <a href={consultLink} target={PAGE.BLANK}>Schedule a consultation</a> today and
250
+ discover what's possible.
251
+ </p>
238
252
 
239
253
  <p>
240
- <a href={contactLink} target={PAGE.BLANK}>Let's connect</a>
241
- to discuss how we can help secure and strengthen your business or home today.
254
+ <strong>{COMPANY_INFO.NAME}</strong><br />
255
+ 📞 Phone: {CONTACT.PHONE}<br />
256
+ 📧 General Inquiries: {CONTACT.EMAIL}<br />
257
+ 🔐 Secure Email: {CONTACT.SECURE}
242
258
  </p>
243
259
 
244
260
  <div class="spacer"></div>
@@ -15,7 +15,7 @@ This file is part of Network Pro.
15
15
 
16
16
  //console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
17
17
 
18
- const { COMPANY_INFO, LINKS, PAGE, NAV } = CONSTANTS;
18
+ const { COMPANY_INFO, CONTACT, LINKS, PAGE, NAV } = CONSTANTS;
19
19
 
20
20
  /**
21
21
  * URL to the FOSS Spotlight page, using the base path
@@ -69,6 +69,16 @@ This file is part of Network Pro.
69
69
  </em>
70
70
  </p>
71
71
 
72
+ <p class={classCenter}>
73
+ <strong>{COMPANY_INFO.NAME}</strong><br />
74
+ 📞 <strong>Phone:</strong>
75
+ {CONTACT.PHONE}<br />
76
+ 📧 <strong>General Inquiries:</strong>
77
+ {CONTACT.EMAIL}<br />
78
+ 🔐 <strong>Secure Email:</strong>
79
+ {CONTACT.SECURE}
80
+ </p>
81
+
72
82
  &nbsp;
73
83
 
74
84
  <h3 class="index4">Featured</h3>
@@ -6,8 +6,6 @@ SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
6
6
  This file is part of Network Pro.
7
7
  ========================================================================== -->
8
8
 
9
- <!-- cspell:ignore lmaterial lterms dlnotes -->
10
-
11
9
  <script>
12
10
  import { base } from '$app/paths';
13
11
  import { ccSvg, bySvg } from '$lib';
@@ -128,7 +126,7 @@ This file is part of Network Pro.
128
126
  <p>
129
127
  All content—including text, software, logos, graphics, documentation,
130
128
  and other materials—provided by
131
- <strong>{COMPANY_INFO.NAME}</strong> ("{COMPANY_INFO.APP_NAME}",
129
+ <strong>{COMPANY_INFO.NAME}</strong> ("{COMPANY_INFO.APP_NAME}&trade;",
132
130
  "Company", "Licensor") is protected by U.S. and international copyright
133
131
  laws.
134
132
  </p>
@@ -490,3 +488,5 @@ This file is part of Network Pro.
490
488
  {/each}
491
489
  <!-- END POLICY SECTIONS -->
492
490
  <!-- END LEGAL, LICENSING, AND COPYRIGHT -->
491
+
492
+ <!-- cspell:ignore lmaterial lterms dlnotes -->
@@ -42,6 +42,7 @@ This file is part of Network Pro.
42
42
  { id: 'intro', text: 'Introduction' },
43
43
  { id: 'collect', text: 'Information We Collect' },
44
44
  { id: 'tracking', text: 'Web Analytics and Tracking' },
45
+ { id: 'hcaptcha', text: 'Security & Anti-Abuse Measures (hCaptcha)' },
45
46
  { id: 'payment', text: 'Payment Information' },
46
47
  { id: 'use', text: 'Use of Information' },
47
48
  { id: 'legal', text: 'Legal Requests and Data Disclosure' },
@@ -54,7 +55,7 @@ This file is part of Network Pro.
54
55
  ];
55
56
 
56
57
  /** @type {string} */
57
- const effectiveDate = 'June 30, 2025';
58
+ const effectiveDate = 'October 10, 2025';
58
59
 
59
60
  /** @type {string} */
60
61
  const classSmall = 'small-text';
@@ -291,6 +292,35 @@ This file is part of Network Pro.
291
292
  target={PAGE.BLANK}>PostHog's Privacy Policy</a
292
293
  >.
293
294
  </p>
295
+ <p>
296
+ In addition to analytics tools, we also use security measures to protect
297
+ our site from spam and abuse.
298
+ </p>
299
+ {:else if link.id === 'hcaptcha'}
300
+ <p>
301
+ We use the hCaptcha security service on certain forms and interactive
302
+ features to protect our website from spam and automated abuse. When
303
+ hCaptcha is active, it may collect information such as your IP address,
304
+ browser characteristics, and user interaction data (for example, mouse
305
+ movements or keystrokes) to distinguish human visitors from bots.
306
+ </p>
307
+ <p>
308
+ This information is sent to Intuition Machines, Inc., the provider of
309
+ hCaptcha, and is processed in accordance with their <a
310
+ rel={PAGE.REL}
311
+ href="https://www.hcaptcha.com/privacy"
312
+ target={PAGE.BLANK}>Privacy Policy</a>
313
+ and
314
+ <a
315
+ rel={PAGE.REL}
316
+ href="https://www.hcaptcha.com/terms"
317
+ target={PAGE.BLANK}>Terms of Service</a
318
+ >.
319
+ </p>
320
+ <p>
321
+ The use of hCaptcha is necessary to maintain the security, integrity,
322
+ and availability of our services.
323
+ </p>
294
324
  {:else if link.id === 'payment'}
295
325
  <p>
296
326
  When processing payments, we may collect credit card details and billing