@networkpro/web 1.12.9 → 1.13.1
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/CHANGELOG.md +65 -1
- package/README.md +26 -18
- package/cspell.json +1 -0
- package/eslint.config.mjs +48 -48
- package/netlify/edge-functions/csp-report.js +31 -31
- package/package.json +3 -3
- package/playwright.config.js +14 -14
- package/postcss.config.mjs +1 -1
- package/scripts/auditScripts.js +16 -16
- package/scripts/bundleCss.js +5 -5
- package/scripts/checkEnv.js +6 -6
- package/scripts/checkNode.js +10 -10
- package/scripts/checkVersions.js +6 -6
- package/scripts/flattenHeaders.js +13 -13
- package/scripts/generateTest.js +5 -5
- package/scripts/openReport.js +3 -3
- package/scripts/validateHeaders.js +13 -13
- package/src/app.html +0 -9
- package/src/hooks.client.ts +1 -1
- package/src/hooks.server.js +31 -32
- package/src/lib/components/Badges.svelte +10 -10
- package/src/lib/components/CodeBlock.svelte +1 -1
- package/src/lib/components/ContainerSection.svelte +1 -1
- package/src/lib/components/FullWidthSection.svelte +3 -3
- package/src/lib/components/LegalNav.svelte +7 -7
- package/src/lib/components/Logo.svelte +9 -9
- package/src/lib/components/MetaTags.svelte +4 -4
- package/src/lib/components/PWAInstallButton.svelte +4 -4
- package/src/lib/components/RedirectPage.svelte +4 -4
- package/src/lib/components/SocialMedia.svelte +16 -16
- package/src/lib/components/foss/FossItemContent.svelte +27 -58
- package/src/lib/components/foss/ObtainiumBlock.svelte +64 -0
- package/src/lib/components/layout/Footer.svelte +18 -18
- package/src/lib/components/layout/HeaderDefault.svelte +16 -16
- package/src/lib/components/layout/HeaderHome.svelte +14 -14
- package/src/lib/data/fossData.js +22 -10
- package/src/lib/images.js +34 -34
- package/src/lib/img/obtainium.png +0 -0
- package/src/lib/img/obtainium.webp +0 -0
- package/src/lib/index.js +15 -15
- package/src/lib/meta.js +29 -29
- package/src/lib/pages/AboutContent.svelte +24 -24
- package/src/lib/pages/FossContent.svelte +13 -13
- package/src/lib/pages/HomeContent.svelte +7 -7
- package/src/lib/pages/LicenseContent.svelte +39 -39
- package/src/lib/pages/PGPContent.svelte +23 -23
- package/src/lib/pages/PrivacyContent.svelte +39 -39
- package/src/lib/pages/PrivacyDashboard.svelte +12 -12
- package/src/lib/pages/TermsConditionsContent.svelte +29 -29
- package/src/lib/pages/TermsUseContent.svelte +26 -26
- package/src/lib/registerServiceWorker.js +25 -25
- package/src/lib/stores/posthog.js +13 -13
- package/src/lib/stores/trackingPreferences.js +19 -19
- package/src/lib/styles/css/default.css +30 -0
- package/src/lib/styles/global.min.css +1 -1
- package/src/lib/types/fossTypes.js +9 -2
- package/src/lib/unregisterServiceWorker.js +1 -1
- package/src/lib/utils/purify.js +4 -4
- package/src/lib/utils/utm.js +2 -2
- package/src/routes/+error.svelte +4 -4
- package/src/routes/+layout.js +6 -6
- package/src/routes/+layout.svelte +29 -29
- package/src/routes/+page.server.js +2 -2
- package/src/routes/+page.svelte +9 -9
- package/src/routes/about/+page.server.js +2 -2
- package/src/routes/about/+page.svelte +7 -7
- package/src/routes/api/mock-csp/+server.js +3 -3
- package/src/routes/consultation/+page.svelte +5 -5
- package/src/routes/contact/+page.svelte +5 -5
- package/src/routes/foss-spotlight/+page.server.js +2 -2
- package/src/routes/foss-spotlight/+page.svelte +7 -7
- package/src/routes/license/+page.server.js +2 -2
- package/src/routes/license/+page.svelte +7 -7
- package/src/routes/pgp/+page.server.js +2 -2
- package/src/routes/pgp/+page.svelte +7 -7
- package/src/routes/pgp/[key]/+server.js +9 -9
- package/src/routes/privacy/+page.server.js +2 -2
- package/src/routes/privacy/+page.svelte +7 -7
- package/src/routes/privacy-dashboard/+page.server.js +2 -2
- package/src/routes/privacy-dashboard/+page.svelte +8 -8
- package/src/routes/privacy-rights/+page.svelte +5 -5
- package/src/routes/status/+page.server.js +2 -2
- package/src/routes/terms-conditions/+page.server.js +2 -2
- package/src/routes/terms-conditions/+page.svelte +7 -7
- package/src/routes/terms-of-use/+page.server.js +2 -2
- package/src/routes/terms-of-use/+page.svelte +7 -7
- package/src/service-worker.js +86 -86
- package/static/bin/heliboard.json +8 -0
- package/static/disableSw.js +2 -2
- package/static/offline.html +7 -7
- package/stylelint.config.js +56 -56
- package/svelte.config.js +6 -6
- package/tests/e2e/app.spec.js +27 -27
- package/tests/e2e/mobile.spec.js +18 -18
- package/tests/e2e/shared/helpers.js +4 -4
- package/tests/internal/auditCoverage.test.js +24 -24
- package/tests/unit/checkEnv.test.js +10 -10
- package/tests/unit/checkVersions.test.js +4 -4
- package/tests/unit/csp-report.test.js +24 -24
- package/tests/unit/demo.test.js +3 -3
- package/tests/unit/lib/utils/purify.test.js +12 -12
- package/tests/unit/routes/page.svelte.test.js +10 -10
- package/tests/unit/unregisterServiceWorker.test.js +5 -5
- package/tests/unit/utm.test.js +13 -13
- package/vite.config.js +5 -5
- package/vitest-setup-client.js +4 -4
- package/vitest.config.client.js +15 -15
- package/vitest.config.server.js +13 -13
|
@@ -9,14 +9,14 @@ This file is part of Network Pro.
|
|
|
9
9
|
<!-- cspell:ignore lmaterial lterms dlnotes -->
|
|
10
10
|
|
|
11
11
|
<script>
|
|
12
|
-
import { base } from
|
|
13
|
-
import { ccSvg, bySvg } from
|
|
14
|
-
import { CONSTANTS } from
|
|
12
|
+
import { base } from '$app/paths';
|
|
13
|
+
import { ccSvg, bySvg } from '$lib';
|
|
14
|
+
import { CONSTANTS } from '$lib';
|
|
15
15
|
|
|
16
16
|
// Log the base path to verify its value
|
|
17
17
|
//console.log("Base path:", base);
|
|
18
18
|
|
|
19
|
-
console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
|
|
19
|
+
//console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
|
|
20
20
|
|
|
21
21
|
const { COMPANY_INFO, CONTACT, PAGE, LINKS, NAV } = CONSTANTS;
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ This file is part of Network Pro.
|
|
|
24
24
|
* URLs using the base path
|
|
25
25
|
* @type {string}
|
|
26
26
|
*/
|
|
27
|
-
const homeLink = base ||
|
|
27
|
+
const homeLink = base || '/';
|
|
28
28
|
const contactLink = `${base}/contact`;
|
|
29
29
|
|
|
30
30
|
/**
|
|
@@ -38,28 +38,28 @@ This file is part of Network Pro.
|
|
|
38
38
|
* URL to the internal MkDocs documentation
|
|
39
39
|
* @type {string}
|
|
40
40
|
*/
|
|
41
|
-
const legalLink =
|
|
41
|
+
const legalLink = 'https://docs.netwk.pro/legal';
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* Table of Contents Links
|
|
45
45
|
* @type {{ id: string, text: string }[]}
|
|
46
46
|
*/
|
|
47
47
|
const tocLinks = [
|
|
48
|
-
{ id:
|
|
49
|
-
{ id:
|
|
50
|
-
{ id:
|
|
51
|
-
{ id:
|
|
52
|
-
{ id:
|
|
53
|
-
{ id:
|
|
54
|
-
{ id:
|
|
55
|
-
{ id:
|
|
56
|
-
{ id:
|
|
57
|
-
{ id:
|
|
58
|
-
{ id:
|
|
59
|
-
{ id:
|
|
60
|
-
{ id:
|
|
61
|
-
{ id:
|
|
62
|
-
{ id:
|
|
48
|
+
{ id: 'copyright', text: 'Copyright' },
|
|
49
|
+
{ id: 'trademark', text: 'Trademark Ownership' },
|
|
50
|
+
{ id: 'branding', text: 'Restrictions on Branding and Graphics' },
|
|
51
|
+
{ id: 'lmaterial', text: 'Licensed Material Definition' },
|
|
52
|
+
{ id: 'lterms', text: 'License Terms' },
|
|
53
|
+
{ id: 'dlnotes', text: 'Dual Licensing Notes' },
|
|
54
|
+
{ id: 'cc-by', text: 'Creative Commons License (CC BY 4.0)' },
|
|
55
|
+
{ id: 'gnu-gpl', text: 'GNU General Public License (GPL)' },
|
|
56
|
+
{ id: 'third-party', text: 'Third-Party Code and Licenses' },
|
|
57
|
+
{ id: 'prohibited-uses', text: 'Prohibited Uses' },
|
|
58
|
+
{ id: 'disclaimer', text: 'Modifications and Liability Disclaimer' },
|
|
59
|
+
{ id: 'support', text: 'Support Disclaimer' },
|
|
60
|
+
{ id: 'authoritative', text: 'Authoritative Version Clause' },
|
|
61
|
+
{ id: 'revisions', text: 'Revisions' },
|
|
62
|
+
{ id: 'contact', text: 'Contact' },
|
|
63
63
|
];
|
|
64
64
|
|
|
65
65
|
/**
|
|
@@ -67,8 +67,8 @@ This file is part of Network Pro.
|
|
|
67
67
|
* @type {{ effectiveDate: string, classSmall: string }}
|
|
68
68
|
*/
|
|
69
69
|
const constants = {
|
|
70
|
-
effectiveDate:
|
|
71
|
-
classSmall:
|
|
70
|
+
effectiveDate: 'June 4, 2025',
|
|
71
|
+
classSmall: 'small-text',
|
|
72
72
|
};
|
|
73
73
|
</script>
|
|
74
74
|
|
|
@@ -101,7 +101,7 @@ This file is part of Network Pro.
|
|
|
101
101
|
<h3>Table of Contents</h3>
|
|
102
102
|
<ol>
|
|
103
103
|
{#each tocLinks as link}
|
|
104
|
-
<li><a href={
|
|
104
|
+
<li><a href={'#' + link.id}>{link.text}</a></li>
|
|
105
105
|
{/each}
|
|
106
106
|
</ol>
|
|
107
107
|
</nav>
|
|
@@ -124,7 +124,7 @@ This file is part of Network Pro.
|
|
|
124
124
|
<section id={link.id}>
|
|
125
125
|
<h2>{i + 1}. {link.text}</h2>
|
|
126
126
|
|
|
127
|
-
{#if link.id ===
|
|
127
|
+
{#if link.id === 'copyright'}
|
|
128
128
|
<p>
|
|
129
129
|
All content—including text, software, logos, graphics, documentation,
|
|
130
130
|
and other materials—provided by
|
|
@@ -139,7 +139,7 @@ This file is part of Network Pro.
|
|
|
139
139
|
</strong>
|
|
140
140
|
({COMPANY_INFO.APP_NAME}™)
|
|
141
141
|
</p>
|
|
142
|
-
{:else if link.id ===
|
|
142
|
+
{:else if link.id === 'trademark'}
|
|
143
143
|
<p>The following trademarks are the exclusive property of the Company:</p>
|
|
144
144
|
<ul>
|
|
145
145
|
<li><strong>Brand Name:</strong> {COMPANY_INFO.APP_NAME}™</li>
|
|
@@ -152,7 +152,7 @@ This file is part of Network Pro.
|
|
|
152
152
|
<p
|
|
153
153
|
>Unauthorized use—including use likely to cause confusion,
|
|
154
154
|
misrepresentation, or disparagement—is strictly prohibited.</p>
|
|
155
|
-
{:else if link.id ===
|
|
155
|
+
{:else if link.id === 'branding'}
|
|
156
156
|
<p>
|
|
157
157
|
Licensing under CC BY 4.0 or the GNU GPL <strong
|
|
158
158
|
>expressly excludes</strong> any rights to use the Company's trademarks,
|
|
@@ -166,7 +166,7 @@ This file is part of Network Pro.
|
|
|
166
166
|
content—requires the Company's
|
|
167
167
|
<strong>prior written consent</strong>.
|
|
168
168
|
</p>
|
|
169
|
-
{:else if link.id ===
|
|
169
|
+
{:else if link.id === 'lmaterial'}
|
|
170
170
|
<p>
|
|
171
171
|
"Licensed Material" refers solely to the publicly available code and
|
|
172
172
|
documentation distributed through the Company's open repositories and
|
|
@@ -179,7 +179,7 @@ This file is part of Network Pro.
|
|
|
179
179
|
the terms of the open-source or content licenses described in this
|
|
180
180
|
document.
|
|
181
181
|
</p>
|
|
182
|
-
{:else if link.id ===
|
|
182
|
+
{:else if link.id === 'lterms'}
|
|
183
183
|
<p>This work is dual-licensed under:</p>
|
|
184
184
|
<ul>
|
|
185
185
|
<li>
|
|
@@ -191,7 +191,7 @@ This file is part of Network Pro.
|
|
|
191
191
|
>GNU General Public License v3.0 or later (GNU GPL)</a>
|
|
192
192
|
</li>
|
|
193
193
|
</ul>
|
|
194
|
-
{:else if link.id ===
|
|
194
|
+
{:else if link.id === 'dlnotes'}
|
|
195
195
|
<ul>
|
|
196
196
|
<li>
|
|
197
197
|
You may choose to use the work under either license, or both where
|
|
@@ -216,7 +216,7 @@ This file is part of Network Pro.
|
|
|
216
216
|
</a>
|
|
217
217
|
</li>
|
|
218
218
|
</ul>
|
|
219
|
-
{:else if link.id ===
|
|
219
|
+
{:else if link.id === 'cc-by'}
|
|
220
220
|
<p class={constants.classSmall}>
|
|
221
221
|
View / Download:
|
|
222
222
|
<a href="/bin/license/CC-BY-4.0.html" target={PAGE.BLANK}>HTML</a>
|
|
@@ -309,7 +309,7 @@ This file is part of Network Pro.
|
|
|
309
309
|
</a>
|
|
310
310
|
</p>
|
|
311
311
|
</code>
|
|
312
|
-
{:else if link.id ===
|
|
312
|
+
{:else if link.id === 'gnu-gpl'}
|
|
313
313
|
<p class={constants.classSmall}>
|
|
314
314
|
View / Download:
|
|
315
315
|
<a href="/bin/license/COPYING.html" target={PAGE.BLANK}>HTML</a>
|
|
@@ -366,7 +366,7 @@ This file is part of Network Pro.
|
|
|
366
366
|
</a>
|
|
367
367
|
</p>
|
|
368
368
|
</code>
|
|
369
|
-
{:else if link.id ===
|
|
369
|
+
{:else if link.id === 'third-party'}
|
|
370
370
|
<p>
|
|
371
371
|
Some components of the Licensed Material may include or interface with
|
|
372
372
|
third-party libraries, frameworks, or assets.
|
|
@@ -389,7 +389,7 @@ This file is part of Network Pro.
|
|
|
389
389
|
comply with all applicable third-party licenses before use, modification,
|
|
390
390
|
or distribution.
|
|
391
391
|
</p>
|
|
392
|
-
{:else if link.id ===
|
|
392
|
+
{:else if link.id === 'prohibited-uses'}
|
|
393
393
|
<p>
|
|
394
394
|
<strong>
|
|
395
395
|
The following activities are strictly prohibited and may constitute
|
|
@@ -416,7 +416,7 @@ This file is part of Network Pro.
|
|
|
416
416
|
derivative works or redistributed content
|
|
417
417
|
</li>
|
|
418
418
|
</ul>
|
|
419
|
-
{:else if link.id ===
|
|
419
|
+
{:else if link.id === 'disclaimer'}
|
|
420
420
|
<p>
|
|
421
421
|
Modifications, redistribution, or any use of the Licensed Material are
|
|
422
422
|
performed entirely at your own risk.
|
|
@@ -442,7 +442,7 @@ This file is part of Network Pro.
|
|
|
442
442
|
—including, without limitation, any claims or disputes brought by third parties,
|
|
443
443
|
whether in contract, tort, or otherwise.
|
|
444
444
|
</p>
|
|
445
|
-
{:else if link.id ===
|
|
445
|
+
{:else if link.id === 'support'}
|
|
446
446
|
<p>
|
|
447
447
|
All support provided—whether through email, GitHub, community forums, or
|
|
448
448
|
other channels—is offered “as-is” and <strong
|
|
@@ -460,7 +460,7 @@ This file is part of Network Pro.
|
|
|
460
460
|
Company and may be modified, reduced, or discontinued at any time
|
|
461
461
|
without notice.
|
|
462
462
|
</p>
|
|
463
|
-
{:else if link.id ===
|
|
463
|
+
{:else if link.id === 'authoritative'}
|
|
464
464
|
<p>
|
|
465
465
|
In the event of any discrepancy between different versions, formats, or
|
|
466
466
|
distributions of any legal document issued by the Company—including but
|
|
@@ -478,13 +478,13 @@ This file is part of Network Pro.
|
|
|
478
478
|
of the Company's materials, services, or Licensed Material constitutes
|
|
479
479
|
acceptance of the most current version then in effect.
|
|
480
480
|
</p>
|
|
481
|
-
{:else if link.id ===
|
|
481
|
+
{:else if link.id === 'revisions'}
|
|
482
482
|
<p>
|
|
483
483
|
This legal page may be updated to comply with legal or operational
|
|
484
484
|
changes. The current effective date is listed at the top of this
|
|
485
485
|
document.
|
|
486
486
|
</p>
|
|
487
|
-
{:else if link.id ===
|
|
487
|
+
{:else if link.id === 'contact'}
|
|
488
488
|
<p>
|
|
489
489
|
The Company can be contacted via our
|
|
490
490
|
<a rel={PAGE.REL} href={contactLink} target={PAGE.BLANK}
|
|
@@ -7,9 +7,9 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================== -->
|
|
8
8
|
|
|
9
9
|
<script>
|
|
10
|
-
import CodeBlock from
|
|
11
|
-
import { base } from
|
|
12
|
-
import { CONSTANTS } from
|
|
10
|
+
import CodeBlock from '$lib/components/CodeBlock.svelte';
|
|
11
|
+
import { base } from '$app/paths';
|
|
12
|
+
import { CONSTANTS } from '$lib';
|
|
13
13
|
|
|
14
14
|
// Log the base path to verify its value
|
|
15
15
|
//console.log("Base path:", base);
|
|
@@ -20,28 +20,28 @@ This file is part of Network Pro.
|
|
|
20
20
|
|
|
21
21
|
const keys = [
|
|
22
22
|
{
|
|
23
|
-
name:
|
|
24
|
-
email:
|
|
25
|
-
fingerprint:
|
|
26
|
-
opgp:
|
|
27
|
-
file:
|
|
28
|
-
img:
|
|
23
|
+
name: 'General Contact & Support',
|
|
24
|
+
email: 'support (at) neteng.pro',
|
|
25
|
+
fingerprint: '6590 B992 E2E3 EFF1 2738 7BCE 2AF0 93E9 DEC6 1BA0',
|
|
26
|
+
opgp: 'https://keys.openpgp.org/search?q=support%40neteng.pro',
|
|
27
|
+
file: '/pgp/support@neteng.pro.asc',
|
|
28
|
+
img: 'pgp-support',
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
name:
|
|
32
|
-
email:
|
|
33
|
-
fingerprint:
|
|
34
|
-
opgp:
|
|
35
|
-
file:
|
|
36
|
-
img:
|
|
31
|
+
name: 'Secure Email',
|
|
32
|
+
email: 'contact (at) s.neteng.pro',
|
|
33
|
+
fingerprint: 'DF11 8BAA 6C2D 9DCD EBDC 2DDC F993 7349 9495 F957',
|
|
34
|
+
opgp: 'https://keys.openpgp.org/search?q=contact%40s.neteng.pro',
|
|
35
|
+
file: '/pgp/contact@s.neteng.pro.asc',
|
|
36
|
+
img: 'pgp-contact',
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
|
-
name:
|
|
40
|
-
email:
|
|
41
|
-
fingerprint:
|
|
42
|
-
opgp:
|
|
43
|
-
file:
|
|
44
|
-
img:
|
|
39
|
+
name: 'Security Contact',
|
|
40
|
+
email: 'security (at) s.neteng.pro',
|
|
41
|
+
fingerprint: 'B7FE 1D4E 6CAB 3E71 4A9F DF6E 48CB 7290 C00D 0DA5',
|
|
42
|
+
opgp: 'https://keys.openpgp.org/search?q=security%40s.neteng.pro',
|
|
43
|
+
file: '/pgp/security@s.neteng.pro.asc',
|
|
44
|
+
img: 'pgp-security',
|
|
45
45
|
},
|
|
46
46
|
];
|
|
47
47
|
|
|
@@ -69,7 +69,7 @@ This file is part of Network Pro.
|
|
|
69
69
|
*/
|
|
70
70
|
function copy(text) {
|
|
71
71
|
navigator.clipboard.writeText(text).catch((err) => {
|
|
72
|
-
console.error(
|
|
72
|
+
console.error('Clipboard copy failed:', err);
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
75
|
</script>
|
|
@@ -112,7 +112,7 @@ This file is part of Network Pro.
|
|
|
112
112
|
on:click={() => handleCopy(key)}
|
|
113
113
|
aria-label={`Copy PGP fingerprint for ${key.name}`}
|
|
114
114
|
title="Copy fingerprint to clipboard">
|
|
115
|
-
{copiedKey === key.email ?
|
|
115
|
+
{copiedKey === key.email ? 'Copied!' : 'Copy fingerprint'}
|
|
116
116
|
</button>
|
|
117
117
|
</p>
|
|
118
118
|
<p>
|
|
@@ -7,15 +7,15 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================== -->
|
|
8
8
|
|
|
9
9
|
<script>
|
|
10
|
-
import { base } from
|
|
11
|
-
import { onMount } from
|
|
10
|
+
import { base } from '$app/paths';
|
|
11
|
+
import { onMount } from 'svelte';
|
|
12
12
|
import {
|
|
13
13
|
trackingPreferences,
|
|
14
14
|
setOptIn,
|
|
15
15
|
setOptOut,
|
|
16
16
|
clearPrefs,
|
|
17
|
-
} from
|
|
18
|
-
import { CONSTANTS } from
|
|
17
|
+
} from '$lib/stores/trackingPreferences.js';
|
|
18
|
+
import { CONSTANTS } from '$lib';
|
|
19
19
|
|
|
20
20
|
const { COMPANY_INFO, CONTACT, PAGE, NAV } = CONSTANTS;
|
|
21
21
|
|
|
@@ -29,35 +29,35 @@ This file is part of Network Pro.
|
|
|
29
29
|
const pdashLink = `${base}/privacy-dashboard`;
|
|
30
30
|
|
|
31
31
|
/** @type {string} */
|
|
32
|
-
const privacyLink =
|
|
32
|
+
const privacyLink = 'https://docs.netwk.pro/privacy';
|
|
33
33
|
|
|
34
34
|
/** @type {string} */
|
|
35
|
-
const gpcLink =
|
|
35
|
+
const gpcLink = 'https://globalprivacycontrol.org/';
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* Table of Contents sections and their headings.
|
|
39
39
|
* @type {{ id: string, text: string }[]}
|
|
40
40
|
*/
|
|
41
41
|
const tocLinks = [
|
|
42
|
-
{ id:
|
|
43
|
-
{ id:
|
|
44
|
-
{ id:
|
|
45
|
-
{ id:
|
|
46
|
-
{ id:
|
|
47
|
-
{ id:
|
|
48
|
-
{ id:
|
|
49
|
-
{ id:
|
|
50
|
-
{ id:
|
|
51
|
-
{ id:
|
|
52
|
-
{ id:
|
|
53
|
-
{ id:
|
|
42
|
+
{ id: 'intro', text: 'Introduction' },
|
|
43
|
+
{ id: 'collect', text: 'Information We Collect' },
|
|
44
|
+
{ id: 'tracking', text: 'Web Analytics and Tracking' },
|
|
45
|
+
{ id: 'payment', text: 'Payment Information' },
|
|
46
|
+
{ id: 'use', text: 'Use of Information' },
|
|
47
|
+
{ id: 'sharing', text: 'Data Sharing' },
|
|
48
|
+
{ id: 'security', text: 'Data Security' },
|
|
49
|
+
{ id: 'rights', text: 'User Rights' },
|
|
50
|
+
{ id: 'third-party', text: 'Third-Party Links' },
|
|
51
|
+
{ id: 'disclaimers', text: 'Disclaimers and Limitations' },
|
|
52
|
+
{ id: 'changes', text: 'Policy Changes' },
|
|
53
|
+
{ id: 'contact', text: 'Contact' },
|
|
54
54
|
];
|
|
55
55
|
|
|
56
56
|
/** @type {string} */
|
|
57
|
-
const effectiveDate =
|
|
57
|
+
const effectiveDate = 'June 2, 2025';
|
|
58
58
|
|
|
59
59
|
/** @type {string} */
|
|
60
|
-
const classSmall =
|
|
60
|
+
const classSmall = 'small-text';
|
|
61
61
|
|
|
62
62
|
/** @type {boolean} */
|
|
63
63
|
let optedOut;
|
|
@@ -77,10 +77,10 @@ This file is part of Network Pro.
|
|
|
77
77
|
*/
|
|
78
78
|
function toggleTracking(value) {
|
|
79
79
|
if (value) {
|
|
80
|
-
console.log(
|
|
80
|
+
console.log('[Tracking] User opted out');
|
|
81
81
|
setOptOut();
|
|
82
82
|
} else {
|
|
83
|
-
console.log(
|
|
83
|
+
console.log('[Tracking] User cleared opt-out');
|
|
84
84
|
clearPrefs();
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -91,16 +91,16 @@ This file is part of Network Pro.
|
|
|
91
91
|
*/
|
|
92
92
|
function toggleOptIn(value) {
|
|
93
93
|
if (value) {
|
|
94
|
-
console.log(
|
|
94
|
+
console.log('[Tracking] User opted in');
|
|
95
95
|
setOptIn();
|
|
96
96
|
} else {
|
|
97
|
-
console.log(
|
|
97
|
+
console.log('[Tracking] User cleared opt-in');
|
|
98
98
|
clearPrefs();
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
onMount(() => {
|
|
103
|
-
console.log(
|
|
103
|
+
console.log('[Tracking] Store initialized:', $trackingPreferences.status);
|
|
104
104
|
});
|
|
105
105
|
</script>
|
|
106
106
|
|
|
@@ -133,7 +133,7 @@ This file is part of Network Pro.
|
|
|
133
133
|
<nav id="toc">
|
|
134
134
|
<ol>
|
|
135
135
|
{#each tocLinks as link}
|
|
136
|
-
<li><a href={
|
|
136
|
+
<li><a href={'#' + link.id}>{link.text}</a></li>
|
|
137
137
|
{/each}
|
|
138
138
|
</ol>
|
|
139
139
|
</nav>
|
|
@@ -157,7 +157,7 @@ This file is part of Network Pro.
|
|
|
157
157
|
<h2>{i + 1}. {link.text}</h2>
|
|
158
158
|
|
|
159
159
|
<!-- Dynamic Content for Each Section -->
|
|
160
|
-
{#if link.id ===
|
|
160
|
+
{#if link.id === 'intro'}
|
|
161
161
|
<p>
|
|
162
162
|
Network Pro Strategies ("Company," "we," "us," or "our") is committed to
|
|
163
163
|
protecting the privacy of clients and website visitors. This Privacy
|
|
@@ -174,7 +174,7 @@ This file is part of Network Pro.
|
|
|
174
174
|
</a>
|
|
175
175
|
</strong> (A.R.S. §§ 18-551, 18-552).
|
|
176
176
|
</p>
|
|
177
|
-
{:else if link.id ===
|
|
177
|
+
{:else if link.id === 'collect'}
|
|
178
178
|
<ul>
|
|
179
179
|
<li>
|
|
180
180
|
<strong>Personal Identifiers</strong> (e.g., name, email, phone number)
|
|
@@ -190,7 +190,7 @@ This file is part of Network Pro.
|
|
|
190
190
|
<strong>Client-Submitted Content</strong> related to our services
|
|
191
191
|
</li>
|
|
192
192
|
</ul>
|
|
193
|
-
{:else if link.id ===
|
|
193
|
+
{:else if link.id === 'tracking'}
|
|
194
194
|
<p>
|
|
195
195
|
To better understand visitor behavior and optimize website
|
|
196
196
|
functionality, we use <strong>PostHog Cloud</strong>, a hosted version
|
|
@@ -236,7 +236,7 @@ This file is part of Network Pro.
|
|
|
236
236
|
|
|
237
237
|
<h3>Tracking Preferences</h3>
|
|
238
238
|
|
|
239
|
-
{#if trackingStatus && trackingStatus !==
|
|
239
|
+
{#if trackingStatus && trackingStatus !== '⏳ Checking tracking preferences...'}
|
|
240
240
|
<p id="tracking-status" aria-live="polite">
|
|
241
241
|
<strong>Tracking Status:</strong>
|
|
242
242
|
{trackingStatus}
|
|
@@ -292,13 +292,13 @@ This file is part of Network Pro.
|
|
|
292
292
|
target={PAGE.BLANK}>PostHog's Privacy Policy</a
|
|
293
293
|
>.
|
|
294
294
|
</p>
|
|
295
|
-
{:else if link.id ===
|
|
295
|
+
{:else if link.id === 'payment'}
|
|
296
296
|
<p>
|
|
297
297
|
When processing payments, we may collect credit card details and billing
|
|
298
298
|
contact information. All credit card data is encrypted via TLS and
|
|
299
299
|
shared only with PCI-compliant processors.
|
|
300
300
|
</p>
|
|
301
|
-
{:else if link.id ===
|
|
301
|
+
{:else if link.id === 'use'}
|
|
302
302
|
<p>Information is used to:</p>
|
|
303
303
|
<ul>
|
|
304
304
|
<li><strong>Provide and improve services</strong></li>
|
|
@@ -306,7 +306,7 @@ This file is part of Network Pro.
|
|
|
306
306
|
<li><strong>Conduct analytics and enhance user experience</strong></li>
|
|
307
307
|
<li><strong>Ensure legal and regulatory compliance</strong></li>
|
|
308
308
|
</ul>
|
|
309
|
-
{:else if link.id ===
|
|
309
|
+
{:else if link.id === 'sharing'}
|
|
310
310
|
<p>
|
|
311
311
|
We do not sell personal information. However, we may share personal and
|
|
312
312
|
business information under the following circumstances:
|
|
@@ -333,7 +333,7 @@ This file is part of Network Pro.
|
|
|
333
333
|
continued confidentiality and compliance with applicable privacy laws.
|
|
334
334
|
</li>
|
|
335
335
|
</ul>
|
|
336
|
-
{:else if link.id ===
|
|
336
|
+
{:else if link.id === 'security'}
|
|
337
337
|
<p>
|
|
338
338
|
We implement industry-standard security measures to protect your data.
|
|
339
339
|
However, no method of transmission over the Internet or electronic
|
|
@@ -342,7 +342,7 @@ This file is part of Network Pro.
|
|
|
342
342
|
affected individuals in the event of a data breach involving personal
|
|
343
343
|
information.
|
|
344
344
|
</p>
|
|
345
|
-
{:else if link.id ===
|
|
345
|
+
{:else if link.id === 'rights'}
|
|
346
346
|
<h3>Your Rights and Choices</h3>
|
|
347
347
|
|
|
348
348
|
<p
|
|
@@ -390,24 +390,24 @@ This file is part of Network Pro.
|
|
|
390
390
|
<strong>{CONTACT.PRIVACY}</strong>
|
|
391
391
|
with the subject line: "<strong>Privacy Rights Preferences</strong>".
|
|
392
392
|
</p>
|
|
393
|
-
{:else if link.id ===
|
|
393
|
+
{:else if link.id === 'third-party'}
|
|
394
394
|
<p>
|
|
395
395
|
Our site may contain links to third-party sites. We are not responsible
|
|
396
396
|
for their privacy practices.
|
|
397
397
|
</p>
|
|
398
|
-
{:else if link.id ===
|
|
398
|
+
{:else if link.id === 'disclaimers'}
|
|
399
399
|
<p>
|
|
400
400
|
Network Pro Strategies offers informational content as a public service.
|
|
401
401
|
No warranties are made regarding the accuracy or completeness of such
|
|
402
402
|
content. Consulting services are governed by separate contracts. We
|
|
403
403
|
disclaim liability for third-party services integrated or referenced.
|
|
404
404
|
</p>
|
|
405
|
-
{:else if link.id ===
|
|
405
|
+
{:else if link.id === 'changes'}
|
|
406
406
|
<p>
|
|
407
407
|
We may update this policy periodically. Changes are effective upon
|
|
408
408
|
posting.
|
|
409
409
|
</p>
|
|
410
|
-
{:else if link.id ===
|
|
410
|
+
{:else if link.id === 'contact'}
|
|
411
411
|
<p>
|
|
412
412
|
For questions, please utilize our <a
|
|
413
413
|
rel={PAGE.REL}
|
|
@@ -7,17 +7,17 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================== -->
|
|
8
8
|
|
|
9
9
|
<script>
|
|
10
|
-
import { base } from
|
|
11
|
-
import { onMount } from
|
|
10
|
+
import { base } from '$app/paths';
|
|
11
|
+
import { onMount } from 'svelte';
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
14
|
trackingPreferences,
|
|
15
15
|
setOptIn,
|
|
16
16
|
setOptOut,
|
|
17
17
|
clearPrefs,
|
|
18
|
-
} from
|
|
18
|
+
} from '$lib/stores/trackingPreferences.js';
|
|
19
19
|
|
|
20
|
-
import { CONSTANTS } from
|
|
20
|
+
import { CONSTANTS } from '$lib';
|
|
21
21
|
|
|
22
22
|
const { CONTACT, PAGE, NAV } = CONSTANTS;
|
|
23
23
|
|
|
@@ -28,10 +28,10 @@ This file is part of Network Pro.
|
|
|
28
28
|
const prightsLink = `${base}/privacy-rights`;
|
|
29
29
|
|
|
30
30
|
/** @type {string} */
|
|
31
|
-
const classSmall =
|
|
31
|
+
const classSmall = 'small-text';
|
|
32
32
|
|
|
33
33
|
/** @type {string} */
|
|
34
|
-
const spaceStyle =
|
|
34
|
+
const spaceStyle = 'spacer';
|
|
35
35
|
|
|
36
36
|
/** @type {boolean} */
|
|
37
37
|
let optedOut;
|
|
@@ -51,10 +51,10 @@ This file is part of Network Pro.
|
|
|
51
51
|
*/
|
|
52
52
|
function toggleTracking(value) {
|
|
53
53
|
if (value) {
|
|
54
|
-
console.log(
|
|
54
|
+
console.log('[Tracking] User opted out');
|
|
55
55
|
setOptOut();
|
|
56
56
|
} else {
|
|
57
|
-
console.log(
|
|
57
|
+
console.log('[Tracking] User cleared opt-out');
|
|
58
58
|
clearPrefs();
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -65,17 +65,17 @@ This file is part of Network Pro.
|
|
|
65
65
|
*/
|
|
66
66
|
function toggleOptIn(value) {
|
|
67
67
|
if (value) {
|
|
68
|
-
console.log(
|
|
68
|
+
console.log('[Tracking] User opted in');
|
|
69
69
|
setOptIn();
|
|
70
70
|
} else {
|
|
71
|
-
console.log(
|
|
71
|
+
console.log('[Tracking] User cleared opt-in');
|
|
72
72
|
clearPrefs();
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
onMount(() => {
|
|
77
77
|
console.log(
|
|
78
|
-
|
|
78
|
+
'[PrivacyDashboard] Tracking status:',
|
|
79
79
|
$trackingPreferences.status,
|
|
80
80
|
);
|
|
81
81
|
});
|
|
@@ -141,7 +141,7 @@ This file is part of Network Pro.
|
|
|
141
141
|
|
|
142
142
|
|
|
143
143
|
|
|
144
|
-
{#if trackingStatus && trackingStatus !==
|
|
144
|
+
{#if trackingStatus && trackingStatus !== '⏳ Checking tracking preferences...'}
|
|
145
145
|
<p id="tracking-status" aria-live="polite">
|
|
146
146
|
<strong>Tracking Status:</strong>
|
|
147
147
|
{trackingStatus}
|