@networkpro/web 1.18.5 → 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.
- package/.github/workflows/build-and-publish.yml +5 -4
- package/.github/workflows/lighthouse.yml +1 -1
- package/.github/workflows/meta-check.yml +1 -1
- package/.github/workflows/playwright.yml +1 -1
- package/.github/workflows/publish-test.yml +5 -4
- package/.github/workflows/templates/publish.template.yml +5 -4
- package/CHANGELOG.md +116 -1
- package/cspell.json +3 -0
- package/package.json +16 -16
- package/scripts/auditScripts.js +1 -1
- package/scripts/bundleCss.js +1 -1
- package/scripts/checkEnv.js +1 -1
- package/scripts/checkNode.js +1 -1
- package/scripts/checkVersions.js +1 -1
- package/scripts/generateTest.js +1 -1
- package/scripts/openReport.js +1 -1
- package/src/app.html +3 -6
- package/src/hooks.server.js +10 -7
- package/src/lib/README.md +160 -0
- package/src/lib/components/FullWidthSection.svelte +0 -9
- package/src/lib/components/ServiceSummaryTable.svelte +113 -0
- package/src/lib/components/foss/index.js +21 -0
- package/src/lib/components/index.js +31 -0
- package/src/lib/components/layout/HeaderDefault.svelte +3 -1
- package/src/lib/components/layout/HeaderHome.svelte +6 -5
- package/src/lib/components/layout/index.js +21 -0
- package/src/lib/images.js +1 -1
- package/src/lib/index.js +15 -5
- package/src/lib/meta.js +14 -9
- package/src/lib/pages/AboutContent.svelte +51 -15
- package/src/lib/pages/HomeContent.svelte +11 -1
- package/src/lib/pages/LicenseContent.svelte +3 -3
- package/src/lib/pages/PrivacyContent.svelte +31 -1
- package/src/lib/pages/ServicesContent.svelte +545 -0
- package/src/lib/pages/index.js +28 -0
- package/src/lib/stores/posthog.js +2 -1
- package/src/lib/styles/css/default.css +95 -0
- package/src/lib/styles/global.min.css +1 -1
- package/src/lib/styles/index.js +0 -1
- package/src/lib/types/README.md +50 -0
- package/src/lib/types/appConstants.js +1 -1
- package/src/lib/types/fossTypes.js +1 -1
- package/src/lib/utils/getUTMParams.js +1 -1
- package/src/lib/utils/purify.js +1 -1
- package/src/lib/utils/redirect.js +1 -1
- package/src/lib/utils/utm.js +2 -2
- package/src/routes/+layout.svelte +3 -11
- package/src/routes/+page.svelte +9 -7
- package/src/routes/consultation/+page.svelte +1 -1
- package/src/routes/links/+page.svelte +3 -2
- package/src/routes/services/+page.server.js +18 -0
- package/src/routes/services/+page.svelte +65 -0
- package/src/routes/status/+page.server.js +1 -1
- package/src/service-worker.js +2 -2
- package/static/bin/contact.vcf +1 -2
- package/static/disableSw.js +1 -1
- package/static/sitemap.xml +17 -5
- package/tests/e2e/app.spec.js +1 -1
- package/tests/e2e/mobile.spec.js +1 -1
- package/tests/e2e/shared/helpers.js +1 -1
- package/tests/meta/meta.test.js +1 -1
- package/tests/unit/client/lib/PWAInstallButton.test.js +80 -0
- package/tests/unit/client/lib/utils/redirect.test.js +1 -1
- package/tests/unit/server/internal/auditCoverage.test.js +1 -1
- package/tests/unit/server/lib/utils/purify.test.js +1 -1
- package/tests/unit/server/meta.test.js +1 -1
- package/vercel.json +12 -0
- package/vitest-setup-client.js +9 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<!-- =====================================================================
|
|
2
|
+
src/lib/README.md
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
====================================================================== -->
|
|
8
|
+
|
|
9
|
+
# `/src/lib` Overview
|
|
10
|
+
|
|
11
|
+
This directory contains all reusable **modules**, **assets**, and **constants** used across the app.
|
|
12
|
+
It acts as the project’s _internal library_.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 📦 Importing from `$lib`
|
|
17
|
+
|
|
18
|
+
SvelteKit automatically aliases `$lib` → `src/lib/`, allowing you to import from this directory anywhere in the project:
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
import { something } from '$lib';
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
> 💡 You don’t need to use relative paths like `../../../lib/...`; the `$lib` alias handles that automatically.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 📁 Directory Structure
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
src/lib/
|
|
32
|
+
├── components/ # Svelte UI components
|
|
33
|
+
├── img/ # Static image assets
|
|
34
|
+
├── images.js # Imports and re-exports images from /img/
|
|
35
|
+
├── index.js # Main export hub (images, constants, etc.)
|
|
36
|
+
└── README.md # You are here
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🖼️ Image Imports
|
|
42
|
+
|
|
43
|
+
All image assets are re-exported via `images.js` and then made available in `$lib/index.js`.
|
|
44
|
+
|
|
45
|
+
This allows images to be imported directly from `$lib`:
|
|
46
|
+
|
|
47
|
+
```js
|
|
48
|
+
import { logoPng, faviconSvg } from '$lib';
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Example (Svelte component):**
|
|
52
|
+
|
|
53
|
+
```svelte
|
|
54
|
+
<script>
|
|
55
|
+
import { logoPng } from '$lib';
|
|
56
|
+
</script>
|
|
57
|
+
|
|
58
|
+
<img src={logoPng} alt="Network Pro Logo" />
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
If you prefer, you can still import by full path:
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
import logoPng from '$lib/img/logo-web.png';
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Both are valid — the re-exports simply make imports cleaner and centralized.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## ⚙️ Constants and Utilities
|
|
72
|
+
|
|
73
|
+
`index.js` defines and exports a `CONSTANTS` object for consistent app-wide values.
|
|
74
|
+
These are grouped into logical categories for easy reference.
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
import { CONSTANTS } from '$lib';
|
|
78
|
+
|
|
79
|
+
console.log(CONSTANTS.COMPANY_INFO.APP_NAME); // "Network Pro"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 🏢 COMPANY_INFO
|
|
83
|
+
|
|
84
|
+
| Key | Description | Example |
|
|
85
|
+
| ---------- | ---------------------------- | ------------------------ |
|
|
86
|
+
| `NAME` | Full company name | `Network Pro Strategies` |
|
|
87
|
+
| `APP_NAME` | Application or branding name | `Network Pro` |
|
|
88
|
+
| `YEAR` | Copyright / app year | `2025` |
|
|
89
|
+
|
|
90
|
+
### 📬 CONTACT
|
|
91
|
+
|
|
92
|
+
| Key | Description | Example |
|
|
93
|
+
| --------- | ----------------------- | --------------------------- |
|
|
94
|
+
| `EMAIL` | General support email | `support (at) neteng.pro` |
|
|
95
|
+
| `SECURE` | Secure contact address | `contact (at) s.neteng.pro` |
|
|
96
|
+
| `PRIVACY` | Privacy-related contact | `privacy (at) netwk.pro` |
|
|
97
|
+
| `PHONE` | Company phone number | `(623) 252-4350` |
|
|
98
|
+
|
|
99
|
+
### 🗂️ PAGE
|
|
100
|
+
|
|
101
|
+
| Key | Description | Example |
|
|
102
|
+
| ------- | --------------------- | --------------------- |
|
|
103
|
+
| `BLANK` | Opens a new tab | `_blank` |
|
|
104
|
+
| `REL` | Default rel attribute | `noopener noreferrer` |
|
|
105
|
+
| `SELF` | Opens in same tab | `_self` |
|
|
106
|
+
|
|
107
|
+
### 🧭 NAV
|
|
108
|
+
|
|
109
|
+
| Key | Description | Example |
|
|
110
|
+
| --------- | ----------------------- | ------------- |
|
|
111
|
+
| `BACKTOP` | Label for “back to top” | `Back to top` |
|
|
112
|
+
| `HREFTOP` | Anchor link to top | `#top` |
|
|
113
|
+
|
|
114
|
+
### 🌐 LINKS
|
|
115
|
+
|
|
116
|
+
| Key | Description | Example |
|
|
117
|
+
| ------ | ---------------- | ------------------------ |
|
|
118
|
+
| `HOME` | Company home URL | `https://netwk.pro` |
|
|
119
|
+
| `BLOG` | Company blog URL | `https://blog.netwk.pro` |
|
|
120
|
+
|
|
121
|
+
🧠 Tip: If you add new global constants (e.g., API endpoints, metadata, etc.),
|
|
122
|
+
extend `CONSTANTS` here and update this table for quick reference.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 🧩 Components (if applicable)
|
|
127
|
+
|
|
128
|
+
Reusable components can also be exported from this directory:
|
|
129
|
+
|
|
130
|
+
```js
|
|
131
|
+
import { Logo } from '$lib';
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
If you add more UI components later, re-export them from `index.js` for easy access.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 🧠 Developer Notes
|
|
139
|
+
|
|
140
|
+
`$lib` is an alias — not a relative path.
|
|
141
|
+
It points directly to `src/lib/`.
|
|
142
|
+
|
|
143
|
+
`export * from './images.js';` re-exports all image imports so you can reference them easily.
|
|
144
|
+
|
|
145
|
+
Keep asset imports centralized in `images.js` to simplify maintenance.
|
|
146
|
+
|
|
147
|
+
No need to modify imports when adding new images — just add them to `images.js`.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
<span style="font-size: 12px; text-align: center;">
|
|
152
|
+
|
|
153
|
+
Copyright © 2025
|
|
154
|
+
**[Network Pro Strategies](https://netwk.pro) (Network Pro™)**
|
|
155
|
+
|
|
156
|
+
Network Pro™, the shield logo, and the "Locking Down Networks...™" slogan are [trademarks](https://netwk.pro/license#trademark) of Network Pro Strategies.
|
|
157
|
+
|
|
158
|
+
Licensed under **[CC BY 4.0](https://netwk.pro/license#cc-by)** and the **[GNU GPL](https://netwk.pro/license#gnu-gpl)**, as published by the [Free Software Foundation](https://www.fsf.org), either version 3 of the License, or (at your option) any later version.
|
|
159
|
+
|
|
160
|
+
</span>
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<!-- ==========================================================================
|
|
2
|
+
src/lib/components/ServiceSummaryTable.svelte
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== -->
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import { onMount } from 'svelte';
|
|
11
|
+
|
|
12
|
+
let activeService = '';
|
|
13
|
+
|
|
14
|
+
// Detect which hash (anchor) is active
|
|
15
|
+
onMount(() => {
|
|
16
|
+
// Set initial hash (e.g. when user loads /services#wifi)
|
|
17
|
+
activeService = window.location.hash.replace('#', '');
|
|
18
|
+
|
|
19
|
+
// Update on hash change
|
|
20
|
+
const handleHashChange = () => {
|
|
21
|
+
activeService = window.location.hash.replace('#', '');
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
window.addEventListener('hashchange', handleHashChange);
|
|
25
|
+
return () => window.removeEventListener('hashchange', handleHashChange);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Keep only this services array (your actual data)
|
|
29
|
+
export let services = [
|
|
30
|
+
{
|
|
31
|
+
id: 'modem',
|
|
32
|
+
name: 'Home Modem Setup',
|
|
33
|
+
price: '$99.99',
|
|
34
|
+
duration: '45–60 min',
|
|
35
|
+
summary:
|
|
36
|
+
'Activate and secure your modem, verify connectivity and speeds.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'basic',
|
|
40
|
+
name: 'Basic Router Setup',
|
|
41
|
+
price: '$99.99',
|
|
42
|
+
duration: '60–75 min',
|
|
43
|
+
summary: 'Configure wired routing, DHCP, and security for LAN devices.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'wifi',
|
|
47
|
+
name: 'Wi-Fi & Wireless Network Setup',
|
|
48
|
+
price: '$149.99',
|
|
49
|
+
duration: '75–90 min',
|
|
50
|
+
summary: 'Establish reliable Wi-Fi coverage and secure wireless access.',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: 'tshoot',
|
|
54
|
+
name: 'Network Troubleshooting',
|
|
55
|
+
price: 'from $49.99',
|
|
56
|
+
duration: '30-min diagnostic + hourly',
|
|
57
|
+
summary: 'Identify and resolve connectivity or performance issues.',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 'security',
|
|
61
|
+
name: 'Network Security Review',
|
|
62
|
+
price: '$79.99',
|
|
63
|
+
duration: '60–75 min',
|
|
64
|
+
summary:
|
|
65
|
+
'Harden router and Wi-Fi configurations, eliminate vulnerabilities.',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 'device',
|
|
69
|
+
name: 'Add a Wi-Fi Device',
|
|
70
|
+
price: '$34.99',
|
|
71
|
+
duration: '15–30 min',
|
|
72
|
+
summary: 'Connect and verify new wireless devices on your home network.',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: 'print',
|
|
76
|
+
name: 'Add or Configure a Printer',
|
|
77
|
+
price: '$74.99',
|
|
78
|
+
duration: '45–60 min',
|
|
79
|
+
summary: 'Install and configure printers for network and device access.',
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
</script>
|
|
83
|
+
|
|
84
|
+
<section id="service-summary">
|
|
85
|
+
<h2>Service Summary</h2>
|
|
86
|
+
<p>
|
|
87
|
+
Quickly compare our range of on-site services designed primarily for
|
|
88
|
+
individual consumers. Each offering is crafted for convenience, reliability,
|
|
89
|
+
and top-tier support.<br />
|
|
90
|
+
Each item links to a detailed description below.
|
|
91
|
+
</p>
|
|
92
|
+
|
|
93
|
+
<table class="service-table">
|
|
94
|
+
<thead>
|
|
95
|
+
<tr>
|
|
96
|
+
<th>Service</th>
|
|
97
|
+
<th>Price</th>
|
|
98
|
+
<th>Estimated Time</th>
|
|
99
|
+
<th>Description</th>
|
|
100
|
+
</tr>
|
|
101
|
+
</thead>
|
|
102
|
+
<tbody>
|
|
103
|
+
{#each services as svc}
|
|
104
|
+
<tr class:selected={svc.id === activeService}>
|
|
105
|
+
<td><a href={'#' + svc.id}>{svc.name}</a></td>
|
|
106
|
+
<td>{svc.price}</td>
|
|
107
|
+
<td>{svc.duration}</td>
|
|
108
|
+
<td>{svc.summary}</td>
|
|
109
|
+
</tr>
|
|
110
|
+
{/each}
|
|
111
|
+
</tbody>
|
|
112
|
+
</table>
|
|
113
|
+
</section>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/lib/components/foss/index.js
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Library index file
|
|
11
|
+
*
|
|
12
|
+
* @file index.js
|
|
13
|
+
* @description Export point for FOSS library components
|
|
14
|
+
* @module src/lib/components/foss
|
|
15
|
+
* @author Scott Lopez
|
|
16
|
+
* @updated 2025-10-05
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export { default as FossFeatures } from './FossFeatures.svelte';
|
|
20
|
+
export { default as FossItemContent } from './FossItemContent.svelte';
|
|
21
|
+
export { default as ObtainiumBlock } from './ObtainiumBlock.svelte';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/lib/components/index.js
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Library index file
|
|
11
|
+
*
|
|
12
|
+
* @file index.js
|
|
13
|
+
* @description Export point for library components
|
|
14
|
+
* @module src/lib/components
|
|
15
|
+
* @author Scott Lopez
|
|
16
|
+
* @updated 2025-10-05
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export { default as Badges } from './Badges.svelte';
|
|
20
|
+
export { default as CodeBlock } from './CodeBlock.svelte';
|
|
21
|
+
export { default as ContainerSection } from './ContainerSection.svelte';
|
|
22
|
+
export * from './foss/index.js';
|
|
23
|
+
export { default as FullWidthSection } from './FullWidthSection.svelte';
|
|
24
|
+
export * from './layout/index.js';
|
|
25
|
+
export { default as LegalNav } from './LegalNav.svelte';
|
|
26
|
+
export { default as Logo } from './Logo.svelte';
|
|
27
|
+
export { default as MetaTags } from './MetaTags.svelte';
|
|
28
|
+
export { default as PWAInstallButton } from './PWAInstallButton.svelte';
|
|
29
|
+
export { default as RedirectPage } from './RedirectPage.svelte';
|
|
30
|
+
export { default as ServiceSummaryTable } from './ServiceSummaryTable.svelte';
|
|
31
|
+
export { default as SocialMedia } from './SocialMedia.svelte';
|
|
@@ -19,6 +19,7 @@ This file is part of Network Pro.
|
|
|
19
19
|
|
|
20
20
|
const homeLink = base || '/';
|
|
21
21
|
const aboutLink = `${base}/about`;
|
|
22
|
+
const servLink = `${base}/services`;
|
|
22
23
|
const lhubLink = `${base}/links`;
|
|
23
24
|
const fossLink = `${base}/foss-spotlight`;
|
|
24
25
|
const blogLink = 'https://blog.netwk.pro';
|
|
@@ -42,13 +43,14 @@ This file is part of Network Pro.
|
|
|
42
43
|
const nav = [
|
|
43
44
|
{ label: 'home', href: homeLink, target: PAGE.SELF, external: false },
|
|
44
45
|
{ label: 'about', href: aboutLink, target: PAGE.SELF, external: false },
|
|
45
|
-
{ label: '
|
|
46
|
+
{ label: 'services', href: servLink, target: PAGE.SELF, external: false },
|
|
46
47
|
{
|
|
47
48
|
label: 'blog',
|
|
48
49
|
href: blogLink,
|
|
49
50
|
target: PAGE.SELF,
|
|
50
51
|
external: false,
|
|
51
52
|
},
|
|
53
|
+
{ label: 'foss', href: fossLink, target: PAGE.SELF, external: false },
|
|
52
54
|
{
|
|
53
55
|
label: 'discussions',
|
|
54
56
|
href: discussLink,
|
|
@@ -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: '
|
|
43
|
+
{ label: 'services', href: servLink, target: PAGE.SELF, external: false },
|
|
44
44
|
{
|
|
45
45
|
label: 'blog',
|
|
46
|
-
href:
|
|
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 -->
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/lib/components/layout/index.js
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Library index file
|
|
11
|
+
*
|
|
12
|
+
* @file index.js
|
|
13
|
+
* @description Export point for layout components
|
|
14
|
+
* @module src/lib/components/layout
|
|
15
|
+
* @author Scott Lopez
|
|
16
|
+
* @updated 2025-10-05
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export { default as Footer } from './Footer.svelte';
|
|
20
|
+
export { default as HeaderDefault } from './HeaderDefault.svelte';
|
|
21
|
+
export { default as HeaderHome } from './HeaderHome.svelte';
|
package/src/lib/images.js
CHANGED
package/src/lib/index.js
CHANGED
|
@@ -10,16 +10,26 @@ This file is part of Network Pro.
|
|
|
10
10
|
* Library index file
|
|
11
11
|
*
|
|
12
12
|
* @file index.js
|
|
13
|
-
* @description
|
|
13
|
+
* @description Main export hub for $lib modules
|
|
14
|
+
*
|
|
15
|
+
* Components, images, and utilities are organized in submodules
|
|
16
|
+
* and re-exported here for flat `$lib` imports.
|
|
14
17
|
* @module src/lib
|
|
15
|
-
* @author
|
|
16
|
-
* @updated 2025-
|
|
18
|
+
* @author Scott Lopez
|
|
19
|
+
* @updated 2025-10-10
|
|
17
20
|
*/
|
|
18
21
|
|
|
19
|
-
// Re-export images
|
|
20
|
-
//
|
|
22
|
+
// Re-export all images so they can be imported directly from `$lib`
|
|
23
|
+
// Example usage:
|
|
24
|
+
// import { logoPng } from '$lib';
|
|
21
25
|
export * from './images.js';
|
|
22
26
|
|
|
27
|
+
// Re-export all components so they can be imported directly from `$lib`
|
|
28
|
+
export * from './components/index.js';
|
|
29
|
+
|
|
30
|
+
// Re-export all pages so they can be imported directly from `$lib`
|
|
31
|
+
export * from './pages/index.js';
|
|
32
|
+
|
|
23
33
|
// Export utility functions
|
|
24
34
|
// Uncomment and adjust these as needed for your project
|
|
25
35
|
// export * from './utils/formatting.js';
|
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}
|
|
@@ -138,11 +144,11 @@ This file is part of Network Pro.
|
|
|
138
144
|
<p>
|
|
139
145
|
<strong>{COMPANY_INFO.NAME} ({COMPANY_INFO.APP_NAME}™)</strong>
|
|
140
146
|
<br />
|
|
141
|
-
<em>
|
|
147
|
+
<em>Networking, Security, Privacy</em>
|
|
142
148
|
</p>
|
|
143
149
|
</section>
|
|
144
150
|
|
|
145
|
-
|
|
151
|
+
|
|
146
152
|
|
|
147
153
|
<section id="subhead">
|
|
148
154
|
<h2>Security That Respects You</h2>
|
|
@@ -162,10 +168,11 @@ This file is part of Network Pro.
|
|
|
162
168
|
|
|
163
169
|
<p>
|
|
164
170
|
At <strong>{COMPANY_INFO.NAME} ({COMPANY_INFO.APP_NAME}™)</strong>, we
|
|
165
|
-
deliver network security
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
171
|
+
deliver network security and engineering, information security (IS),
|
|
172
|
+
information technology (IT), cyber security, and digital privacy consulting
|
|
173
|
+
with clarity, credibility, and care. We believe that real security doesn't
|
|
174
|
+
have to come at the cost of user autonomy, and that privacy-minded solutions
|
|
175
|
+
can be both practical and powerful.
|
|
169
176
|
</p>
|
|
170
177
|
|
|
171
178
|
<p>
|
|
@@ -189,7 +196,7 @@ This file is part of Network Pro.
|
|
|
189
196
|
<ul>
|
|
190
197
|
<li><strong>Network Hardening & Perimeter Defense</strong></li>
|
|
191
198
|
<li><strong>Firewall Architecture & Policy Optimization</strong></li>
|
|
192
|
-
<li><strong>
|
|
199
|
+
<li><strong>Zero Trust Implementation</strong></li>
|
|
193
200
|
<li><strong>Secure Infrastructure Design & Implementation</strong></li>
|
|
194
201
|
<li><strong>Risk Reduction & Security Posture Assessment</strong></li>
|
|
195
202
|
</ul>
|
|
@@ -201,24 +208,53 @@ This file is part of Network Pro.
|
|
|
201
208
|
clear value, with zero fluff.
|
|
202
209
|
</p>
|
|
203
210
|
|
|
211
|
+
<div class="spacer"></div>
|
|
212
|
+
|
|
213
|
+
<p>
|
|
214
|
+
Additionally, {COMPANY_INFO.APP_NAME}™ provides on-site services in the
|
|
215
|
+
Greater Phoenix Metro Area (Maricopa County, AZ). Our on-site services are
|
|
216
|
+
available to both businesses and consumers. In addition to consulting, we
|
|
217
|
+
offer the following services:
|
|
218
|
+
</p>
|
|
219
|
+
|
|
220
|
+
<ul>
|
|
221
|
+
<li><strong>Home Modem Setup</strong></li>
|
|
222
|
+
<li><strong>Basic Router Setup</strong></li>
|
|
223
|
+
<li><strong>Wi-Fi and Wireless Networking Setup</strong></li>
|
|
224
|
+
<li><strong>Network Troubleshooting</strong></li>
|
|
225
|
+
<li><strong>Network Security Review</strong></li>
|
|
226
|
+
<li><strong>Add a Wi-Fi Device</strong></li>
|
|
227
|
+
<li><strong>Add or Configure a Printer</strong></li>
|
|
228
|
+
</ul>
|
|
229
|
+
|
|
204
230
|
<p>
|
|
205
231
|
We also believe education is a core pillar of real-world security. That's why
|
|
206
232
|
we invest in raising awareness—across both technical and general audiences—on
|
|
207
233
|
best practices in digital privacy, secure design, and threat mitigation.
|
|
208
234
|
</p>
|
|
209
235
|
|
|
236
|
+
<div class="spacer"></div>
|
|
237
|
+
|
|
210
238
|
<p>
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
239
|
+
At {COMPANY_INFO.APP_NAME}™, 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.
|
|
215
243
|
</p>
|
|
216
244
|
|
|
217
|
-
<
|
|
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>
|
|
218
252
|
|
|
219
253
|
<p>
|
|
220
|
-
<
|
|
221
|
-
|
|
254
|
+
<strong>{COMPANY_INFO.NAME}</strong><br />
|
|
255
|
+
📞 Phone: {CONTACT.PHONE}<br />
|
|
256
|
+
📧 General Inquiries: {CONTACT.EMAIL}<br />
|
|
257
|
+
🔐 Secure Email: {CONTACT.SECURE}
|
|
222
258
|
</p>
|
|
223
259
|
|
|
224
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
|
|
|
73
83
|
|
|
74
84
|
<h3 class="index4">Featured</h3>
|