@networkpro/web 0.13.2 → 1.0.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/CODE_OF_CONDUCT.md +172 -0
- package/LICENSE.md +4 -4
- package/README.md +11 -10
- package/assets/bin/contact.vcf +13 -0
- package/assets/bin/contact@s.neteng.pro.aexpk +17 -0
- package/assets/bin/contact@s.neteng.pro.asc +17 -0
- package/assets/bin/github@sl.neteng.cc.aexpk +29 -0
- package/assets/bin/github@sl.neteng.cc.asc +29 -0
- package/assets/bin/linksheet.json +8 -0
- package/assets/bin/support@neteng.pro.aexpk +47 -0
- package/assets/bin/support@neteng.pro.asc +47 -0
- package/assets/consulting-terms.pdf +0 -0
- package/eslint.config.mjs +112 -0
- package/jsconfig.json +28 -0
- package/netlify.toml +13 -0
- package/package.json +64 -61
- package/playwright.config.js +79 -0
- package/postcss.config.mjs +14 -0
- package/scripts/bundleCss.js +40 -0
- package/src/app.d.ts +15 -0
- package/src/app.html +81 -0
- package/src/demo.spec.js +14 -0
- package/src/lib/components/Badges.svelte +74 -0
- package/src/lib/components/ContainerSection.svelte +19 -0
- package/src/lib/components/FullWidthSection.svelte +13 -0
- package/src/lib/components/LegalNav.svelte +75 -0
- package/src/lib/components/Logo.svelte +110 -0
- package/src/lib/components/SocialMedia.svelte +70 -0
- package/src/lib/components/foss/FossFeatures.svelte +24 -0
- package/src/lib/components/foss/FossItemContent.svelte +153 -0
- package/src/lib/components/layout/Footer.svelte +188 -0
- package/src/lib/components/layout/HeaderDefault.svelte +86 -0
- package/src/lib/components/layout/HeaderHome.svelte +84 -0
- package/src/lib/data/fossData.js +233 -0
- package/src/lib/images.js +77 -0
- package/src/lib/img/badges/cc-by-badge.png +0 -0
- package/src/lib/img/badges/gpl-badge.svg +1 -0
- package/src/lib/img/by.svg +1 -0
- package/src/lib/img/cc.svg +1 -0
- package/src/lib/img/logo-web.png +0 -0
- package/src/lib/img/logo-web.webp +0 -0
- package/src/lib/img/obtainium.webp +0 -0
- package/src/lib/img/posts/acode.png +0 -0
- package/src/lib/img/posts/acode.webp +0 -0
- package/src/lib/img/posts/linksheet.png +0 -0
- package/src/lib/img/posts/linksheet.webp +0 -0
- package/src/lib/img/posts/pmx.png +0 -0
- package/src/lib/img/posts/pmx.webp +0 -0
- package/src/lib/img/posts/tosdr.png +0 -0
- package/src/lib/img/posts/tosdr.webp +0 -0
- package/src/lib/img/posts/urlcheck.png +0 -0
- package/src/lib/img/posts/urlcheck.webp +0 -0
- package/src/lib/index.js +43 -0
- package/src/lib/pages/AboutContent.svelte +294 -0
- package/src/lib/pages/FossContent.svelte +109 -0
- package/src/lib/pages/HomeContent.svelte +120 -0
- package/src/lib/pages/LicenseContent.svelte +486 -0
- package/src/lib/pages/PrivacyContent.svelte +249 -0
- package/src/lib/pages/TermsConditionsContent.svelte +240 -0
- package/src/lib/pages/TermsUseContent.svelte +236 -0
- package/src/lib/registerServiceWorker.js +65 -0
- package/src/lib/styles/css/brands.css +76 -0
- package/src/lib/styles/css/brands.min.css +6 -0
- package/src/lib/styles/css/default.css +454 -0
- package/src/lib/styles/css/fontawesome.min.css +9 -0
- package/src/lib/styles/css/global.css +10 -0
- package/src/lib/styles/css/normalize.css +349 -0
- package/src/lib/styles/css/offline.css +120 -0
- package/src/lib/styles/css/solid.min.css +6 -0
- package/src/lib/styles/css/style.css +310 -0
- package/src/lib/styles/fa-global.css +10 -0
- package/src/lib/styles/global.min.css +9 -0
- package/src/lib/styles/index.js +11 -0
- package/src/lib/styles/webfonts/fa-brands-400.ttf +0 -0
- package/src/lib/styles/webfonts/fa-brands-400.woff2 +0 -0
- package/src/lib/styles/webfonts/fa-solid-900.ttf +0 -0
- package/src/lib/styles/webfonts/fa-solid-900.woff2 +0 -0
- package/src/routes/+error.svelte +43 -0
- package/src/routes/+layout.js +94 -0
- package/src/routes/+layout.svelte +110 -0
- package/src/routes/+page.svelte +77 -0
- package/src/routes/about/+page.svelte +61 -0
- package/src/routes/contact/+page.server.js +24 -0
- package/src/routes/example.svx +9 -0
- package/src/routes/foss-spotlight/+page.svelte +63 -0
- package/src/routes/license/+page.svelte +63 -0
- package/src/routes/page.svelte.test.js +18 -0
- package/src/routes/privacy-policy/+page.svelte +63 -0
- package/src/routes/privacy-rights/+page.server.js +24 -0
- package/src/routes/terms-conditions/+page.svelte +63 -0
- package/src/routes/terms-of-use/+page.svelte +63 -0
- package/src/service-worker.d.ts +4 -0
- package/src/service-worker.js +90 -0
- package/static/icon-512x512-maskable.png +0 -0
- package/static/icon-contact.png +0 -0
- package/static/icon-services.png +0 -0
- package/static/img/svelte.png +0 -0
- package/static/manifest.json +64 -0
- package/static/offline.html +79 -0
- package/static/offline.min.css +7 -0
- package/{robots.txt → static/robots.txt} +0 -2
- package/static/sitemap.xml +102 -0
- package/stylelint.config.js +118 -0
- package/svelte.config.js +56 -0
- package/tests/app.spec.js +67 -0
- package/tests/mobile.spec.js +58 -0
- package/tests-examples/demo-todo-app.spec.js +504 -0
- package/tsconfig.custom.json +39 -0
- package/vite.config.js +19 -0
- package/vitest-setup-client.js +33 -0
- package/vitest.config.client.js +34 -0
- package/vitest.config.server.js +30 -0
- package/404.html +0 -84
- package/about.html +0 -334
- package/about.html.br +0 -0
- package/about.html.gz +0 -0
- package/css/default.css +0 -1
- package/css/normalize.css +0 -1
- package/css/style.css +0 -1
- package/docs/404.html +0 -1187
- package/docs/assets/external/avatars.githubusercontent.com/u/170266279.png +0 -0
- package/docs/assets/external/img.shields.io/badge/GitHub_Package_Registry-white.ed8def48.svg +0 -1
- package/docs/assets/external/img.shields.io/badge/npmjs-white.681714c1.svg +0 -1
- package/docs/assets/external/mirrors.creativecommons.org/presskit/icons/by.svg +0 -20
- package/docs/assets/external/mirrors.creativecommons.org/presskit/icons/cc.svg +0 -27
- package/docs/assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js +0 -2607
- package/docs/assets/images/favicon.png +0 -0
- package/docs/assets/javascripts/bundle.c8b220af.min.js +0 -16
- package/docs/assets/javascripts/bundle.c8b220af.min.js.map +0 -7
- package/docs/assets/javascripts/lunr/min/lunr.ar.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.da.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.de.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.du.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.el.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.es.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.fi.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.fr.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.he.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.hi.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.hu.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.hy.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.it.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.ja.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.jp.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.kn.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.ko.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.multi.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.nl.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.no.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.pt.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.ro.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.ru.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.sa.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.sv.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.ta.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.te.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.th.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.tr.min.js +0 -18
- package/docs/assets/javascripts/lunr/min/lunr.vi.min.js +0 -1
- package/docs/assets/javascripts/lunr/min/lunr.zh.min.js +0 -1
- package/docs/assets/javascripts/lunr/tinyseg.js +0 -206
- package/docs/assets/javascripts/lunr/wordcut.js +0 -6708
- package/docs/assets/javascripts/workers/search.f8cc74c7.min.js +0 -42
- package/docs/assets/javascripts/workers/search.f8cc74c7.min.js.map +0 -7
- package/docs/assets/stylesheets/main.2afb09e1.min.css +0 -1
- package/docs/assets/stylesheets/main.2afb09e1.min.css.map +0 -1
- package/docs/assets/stylesheets/palette.06af60db.min.css +0 -1
- package/docs/assets/stylesheets/palette.06af60db.min.css.map +0 -1
- package/docs/blog/2015/01/04/secure-secure-shell/index.html +0 -1771
- package/docs/blog/2025/04/30/our-blog-is-live/index.html +0 -1436
- package/docs/blog/archive/2015/index.html +0 -1303
- package/docs/blog/archive/2025/index.html +0 -1291
- package/docs/blog/category/security/index.html +0 -1303
- package/docs/blog/index.html +0 -1350
- package/docs/conduct/index.html +0 -1509
- package/docs/feed_json_created.json +0 -1
- package/docs/feed_json_updated.json +0 -1
- package/docs/feed_rss_created.xml +0 -1
- package/docs/feed_rss_updated.xml +0 -1
- package/docs/fontawesome/LICENSE.txt +0 -165
- package/docs/fontawesome/brands/facebook.svg +0 -1
- package/docs/fontawesome/brands/instagram.svg +0 -1
- package/docs/fontawesome/brands/linkedin.svg +0 -1
- package/docs/fontawesome/brands/mastodon.svg +0 -1
- package/docs/fontawesome/solid/at.svg +0 -1
- package/docs/index.html +0 -1395
- package/docs/legal/index.html +0 -1740
- package/docs/privacy/index.html +0 -1615
- package/docs/search/search_index.json +0 -1
- package/docs/sitemap.xml +0 -55
- package/docs/sitemap.xml.gz +0 -0
- package/docs/tags/index.html +0 -2084
- package/docs/terms-conditions/index.html +0 -1655
- package/docs/terms-use/index.html +0 -1584
- package/favicon-192.png +0 -0
- package/favicon-512.png +0 -0
- package/favicon.svg.br +0 -0
- package/favicon.svg.gz +0 -0
- package/html/spotlight.html +0 -516
- package/html/spotlight.html.br +0 -0
- package/html/spotlight.html.gz +0 -0
- package/img/banner-1280x640.png +0 -0
- package/img/banner-1440.png +0 -0
- package/img/banner-og-1200x630.png +0 -0
- package/img/favicon-template.png +0 -0
- package/img/fb-cover.png +0 -0
- package/img/fb-cover2.png +0 -0
- package/img/fsf-member.png +0 -0
- package/img/gh-logo.png +0 -0
- package/img/gpl3-small.png +0 -0
- package/img/gpl3.png +0 -0
- package/img/linkedin-banner-new.png +0 -0
- package/img/linkedin-banner.png +0 -0
- package/img/linkedin-banner2.png +0 -0
- package/img/logo-1024x1024.png +0 -0
- package/img/logo-alt.png +0 -0
- package/img/logo-elevated.png +0 -0
- package/img/logo-light-elevated.png +0 -0
- package/img/logo-light-slogan.png +0 -0
- package/img/logo-light.png +0 -0
- package/img/logo-slogan.png +0 -0
- package/img/logo-transparent-black-small.png +0 -0
- package/img/logo-transparent-black.png +0 -0
- package/img/logo-transparent-elevated.png +0 -0
- package/img/logo-transparent-slogan.png +0 -0
- package/img/mastodon-banner.png +0 -0
- package/img/netpro-logo-transparent.png +0 -0
- package/img/posts/acode.png +0 -0
- package/img/posts/linksheet.png +0 -0
- package/img/posts/pmx.png +0 -0
- package/img/posts/tosdr.png +0 -0
- package/img/posts/urlcheck.png +0 -0
- package/img/qr/pgp-contact.png +0 -0
- package/img/qr/pgp-support.png +0 -0
- package/img/qr/vcard.png +0 -0
- package/img/sd311.png +0 -0
- package/img/shield.png +0 -0
- package/img/shield.svg +0 -1
- package/img/shield.svg.br +0 -0
- package/img/shield.svg.gz +0 -0
- package/img/shield2.png +0 -0
- package/img/shield3-2000x2000.png +0 -0
- package/img/shield3-black-1024x1024.png +0 -0
- package/img/shield3-black.png +0 -0
- package/img/shield3-white.png +0 -0
- package/img/trademark.jpg +0 -0
- package/index.html +0 -268
- package/index.html.br +0 -0
- package/index.html.gz +0 -0
- package/js/app.d544156ea2ba85a7d486.mjs +0 -1
- package/js/runtime.52b1ac291305b90de3df.mjs +0 -1
- package/js/vendor/.gitkeep +0 -0
- package/legal.html +0 -535
- package/legal.html.br +0 -0
- package/legal.html.gz +0 -0
- package/privacy.html +0 -404
- package/privacy.html.br +0 -0
- package/privacy.html.gz +0 -0
- package/site.webmanifest +0 -25
- package/sitemap.xml +0 -177
- package/terms-and-conditions.html +0 -409
- package/terms-and-conditions.html.br +0 -0
- package/terms-and-conditions.html.gz +0 -0
- package/terms-of-use.html +0 -380
- package/terms-of-use.html.br +0 -0
- package/terms-of-use.html.gz +0 -0
- /package/{docs/assets/external/raw.githubusercontent.com/netwk-pro/netwk-pro.github.io/refs/heads/master/assets → assets}/nsa-happy-dance.png +0 -0
- /package/{favicon.svg → src/lib/img/favicon.svg} +0 -0
- /package/{favicon-180.png → src/lib/img/icon-180x180.png} +0 -0
- /package/{img/badge_obtainium.png → src/lib/img/obtainium.png} +0 -0
- /package/{docs/assets/external/raw.githubusercontent.com/netwk-pro/netwk-pro.github.io/refs/heads/master → src/lib}/img/qr/pgp-contact.png +0 -0
- /package/{img → src/lib/img}/qr/pgp-github.png +0 -0
- /package/{docs/assets/external/raw.githubusercontent.com/netwk-pro/netwk-pro.github.io/refs/heads/master → src/lib}/img/qr/pgp-support.png +0 -0
- /package/{docs/assets/external/raw.githubusercontent.com/netwk-pro/netwk-pro.github.io/refs/heads/master → src/lib}/img/qr/vcard.png +0 -0
- /package/{CNAME → static/CNAME} +0 -0
- /package/{favicon.ico → static/favicon.ico} +0 -0
- /package/{docs/img/favicon.png → static/icon-192x192.png} +0 -0
- /package/{docs/img/logo.png → static/icon-512x512.png} +0 -0
- /package/{favicon-splash.png → static/icon-splash.png} +0 -0
- /package/{img → static/img}/logo-transparent.png +0 -0
- /package/{img → static/img}/logo.png +0 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/*! ==========================================================================
|
|
2
|
+
src/lib/styles/style.css
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
This file is part of Network Pro.
|
|
6
|
+
=========================================================================== */
|
|
7
|
+
|
|
8
|
+
/*! Modified from HTML5 Boilerplate v9.0.1 | MIT License | https://html5boilerplate.com/ */
|
|
9
|
+
|
|
10
|
+
/* https://github.com/h5bp/main.css#readme */
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* What follows is the result of much research on cross-browser styling.
|
|
14
|
+
* Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
|
|
15
|
+
* Kroc Camen, and the H5BP dev community and team.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/* ==========================================================================
|
|
19
|
+
Base styles: opinionated defaults
|
|
20
|
+
========================================================================== */
|
|
21
|
+
|
|
22
|
+
html {
|
|
23
|
+
font-size: 1em;
|
|
24
|
+
line-height: 1.4;
|
|
25
|
+
color: #222;
|
|
26
|
+
scroll-behavior: smooth;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/*
|
|
30
|
+
* Remove text-shadow in selection highlight:
|
|
31
|
+
* https://twitter.com/miketaylr/status/12228805301
|
|
32
|
+
*
|
|
33
|
+
* Customize the background color to match your design.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
::-moz-selection {
|
|
37
|
+
background: #191919;
|
|
38
|
+
text-shadow: none;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
::selection {
|
|
42
|
+
background: #191919;
|
|
43
|
+
text-shadow: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* A better looking default horizontal rule
|
|
48
|
+
* 1. Show the overflow in Edge and IE.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
hr {
|
|
52
|
+
display: block;
|
|
53
|
+
height: 1px;
|
|
54
|
+
padding: 0;
|
|
55
|
+
margin: 1em 0;
|
|
56
|
+
border: 0;
|
|
57
|
+
border-top: 1px solid #ccc;
|
|
58
|
+
overflow: visible; /* 1 */
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/*
|
|
62
|
+
* Remove the gap between audio, canvas, iframes,
|
|
63
|
+
* images, videos and the bottom of their containers:
|
|
64
|
+
* https://github.com/h5bp/html5-boilerplate/issues/440
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
audio,
|
|
68
|
+
canvas,
|
|
69
|
+
iframe,
|
|
70
|
+
img,
|
|
71
|
+
svg,
|
|
72
|
+
video {
|
|
73
|
+
vertical-align: middle;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* Remove default fieldset styles.
|
|
78
|
+
*/
|
|
79
|
+
|
|
80
|
+
fieldset {
|
|
81
|
+
padding: 0;
|
|
82
|
+
margin: 0;
|
|
83
|
+
border: 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/*
|
|
87
|
+
* Allow only vertical resizing of textareas.
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
textarea {
|
|
91
|
+
resize: vertical;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* ==========================================================================
|
|
95
|
+
Author's custom styles
|
|
96
|
+
========================================================================== */
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
* Additional line added to hr{} under 'Base Styles'
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
body {
|
|
103
|
+
margin: 10px;
|
|
104
|
+
color: #fafafa;
|
|
105
|
+
background-color: #191919;
|
|
106
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* parent link element */
|
|
110
|
+
a {
|
|
111
|
+
text-decoration: none;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* unvisited link */
|
|
115
|
+
a:link {
|
|
116
|
+
color: #ffc627;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* mouse over link */
|
|
120
|
+
a:hover {
|
|
121
|
+
color: #ffc627;
|
|
122
|
+
text-decoration: underline;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* selected link */
|
|
126
|
+
a:active {
|
|
127
|
+
color: #ffc627;
|
|
128
|
+
text-decoration: underline;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* focused link */
|
|
132
|
+
a:focus {
|
|
133
|
+
color: #191919; /* Black text when focused */
|
|
134
|
+
background-color: #ffc627; /* Gold background when focused */
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* visited link */
|
|
138
|
+
a:visited {
|
|
139
|
+
color: #7f6227;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* visited and mouse over */
|
|
143
|
+
a:visited:hover {
|
|
144
|
+
color: #7f6227;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* ==========================================================================
|
|
148
|
+
Helper classes
|
|
149
|
+
========================================================================== */
|
|
150
|
+
|
|
151
|
+
/*
|
|
152
|
+
* Hide visually and from screen readers
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
.hidden,
|
|
156
|
+
[hidden] {
|
|
157
|
+
display: none !important;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/*
|
|
161
|
+
* Hide only visually, but have it available for screen readers:
|
|
162
|
+
* https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
|
|
163
|
+
*
|
|
164
|
+
* 1. For long content, line feeds are not interpreted as spaces and small width
|
|
165
|
+
* causes content to wrap 1 word per line:
|
|
166
|
+
* https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
.visually-hidden {
|
|
170
|
+
position: absolute;
|
|
171
|
+
width: 1px;
|
|
172
|
+
height: 1px;
|
|
173
|
+
padding: 0;
|
|
174
|
+
margin: -1px;
|
|
175
|
+
border: 0;
|
|
176
|
+
clip: rect(0, 0, 0, 0);
|
|
177
|
+
overflow: hidden;
|
|
178
|
+
white-space: nowrap;
|
|
179
|
+
|
|
180
|
+
/* 1 */
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/*
|
|
184
|
+
* Extends the .visually-hidden class to allow the element
|
|
185
|
+
* to be focusable when navigated to via the keyboard:
|
|
186
|
+
* https://www.drupal.org/node/897638
|
|
187
|
+
*/
|
|
188
|
+
|
|
189
|
+
.visually-hidden.focusable:active,
|
|
190
|
+
.visually-hidden.focusable:focus {
|
|
191
|
+
position: static;
|
|
192
|
+
width: auto;
|
|
193
|
+
height: auto;
|
|
194
|
+
margin: 0;
|
|
195
|
+
clip: auto;
|
|
196
|
+
overflow: visible;
|
|
197
|
+
white-space: inherit;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/*
|
|
201
|
+
* Hide visually and from screen readers, but maintain layout
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
.invisible {
|
|
205
|
+
visibility: hidden;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/*
|
|
209
|
+
* Clearfix: contain floats
|
|
210
|
+
*
|
|
211
|
+
* The use of `table` rather than `block` is only necessary if using
|
|
212
|
+
* `::before` to contain the top-margins of child elements.
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
.clearfix::before,
|
|
216
|
+
.clearfix::after {
|
|
217
|
+
display: table;
|
|
218
|
+
content: "";
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.clearfix::after {
|
|
222
|
+
clear: both;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* ==========================================================================
|
|
226
|
+
EXAMPLE Media Queries for Responsive Design.
|
|
227
|
+
These examples override the primary ('mobile first') styles.
|
|
228
|
+
Modify as content requires.
|
|
229
|
+
========================================================================== */
|
|
230
|
+
|
|
231
|
+
@media only screen and (width >= 35em) {
|
|
232
|
+
/* Style adjustments for viewports that meet the condition */
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@media print,
|
|
236
|
+
(-webkit-min-device-pixel-ratio: 1.25),
|
|
237
|
+
(resolution >= 1.25dppx),
|
|
238
|
+
(resolution >= 120dpi) {
|
|
239
|
+
/* Style adjustments for high resolution devices */
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/* ==========================================================================
|
|
243
|
+
Print styles.
|
|
244
|
+
Inlined to avoid the additional HTTP request:
|
|
245
|
+
https://www.phpied.com/delay-loading-your-print-css/
|
|
246
|
+
========================================================================== */
|
|
247
|
+
|
|
248
|
+
/* stylelint-disable order/properties-order -- Maintain spreadsheet consistency */
|
|
249
|
+
@media print {
|
|
250
|
+
*,
|
|
251
|
+
*::before,
|
|
252
|
+
*::after {
|
|
253
|
+
background: #fff !important;
|
|
254
|
+
color: #000 !important;
|
|
255
|
+
|
|
256
|
+
/* Black prints faster */
|
|
257
|
+
box-shadow: none !important;
|
|
258
|
+
text-shadow: none !important;
|
|
259
|
+
}
|
|
260
|
+
/* stylelint-enable order/properties-order */
|
|
261
|
+
|
|
262
|
+
a,
|
|
263
|
+
a:visited {
|
|
264
|
+
text-decoration: underline;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
a[href]::after {
|
|
268
|
+
content: " (" attr(href) ")";
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
abbr[title]::after {
|
|
272
|
+
content: " (" attr(title) ")";
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/*
|
|
276
|
+
* Don't show links that are fragment identifiers,
|
|
277
|
+
* or use the `javascript:` pseudo protocol
|
|
278
|
+
*/
|
|
279
|
+
a[href^="#"]::after,
|
|
280
|
+
a[href^="javascript:"]::after {
|
|
281
|
+
content: "";
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
pre {
|
|
285
|
+
white-space: pre-wrap !important;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
pre,
|
|
289
|
+
blockquote {
|
|
290
|
+
border: 1px solid #999;
|
|
291
|
+
page-break-inside: avoid;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
tr,
|
|
295
|
+
img {
|
|
296
|
+
page-break-inside: avoid;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
p,
|
|
300
|
+
h2,
|
|
301
|
+
h3 {
|
|
302
|
+
orphans: 3;
|
|
303
|
+
widows: 3;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
h2,
|
|
307
|
+
h3 {
|
|
308
|
+
page-break-after: avoid;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*! ==========================================================================
|
|
2
|
+
src/lib/styles/fa-global.css
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
This file is part of Network Pro.
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
@import "./css/fontawesome.min.css";
|
|
9
|
+
@import "./css/brands.min.css";
|
|
10
|
+
@import "./css/solid.min.css";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*! ==========================================================================
|
|
2
|
+
src/lib/styles/global.min.css
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
This file is part of Network Pro.
|
|
6
|
+
=========================================================================== */
|
|
7
|
+
/*! Modified from normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css
|
|
8
|
+
/*! Modified from HTML5 Boilerplate v9.0.1 | MIT License | https://html5boilerplate.com/ */
|
|
9
|
+
html{-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{color:inherit;box-sizing:border-box;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}details{display:block}summary{display:list-item}template{display:none}html{color:#222;scroll-behavior:smooth;font-size:1em;line-height:1.4}::-moz-selection{text-shadow:none;background:#191919}::selection{text-shadow:none;background:#191919}hr{border:0;border-top:1px solid #ccc;height:1px;margin:1em 0;padding:0;display:block;overflow:visible}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}body{color:#fafafa;background-color:#191919;margin:10px;font-family:Arial,Helvetica,sans-serif}a{text-decoration:none}a:link{color:#ffc627}a:hover,a:active{color:#ffc627;text-decoration:underline}a:focus{color:#191919;background-color:#ffc627}a:visited,a:visited:hover{color:#7f6227}.hidden,[hidden]{display:none!important}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visually-hidden.focusable:active,.visually-hidden.focusable:focus{clip:auto;width:auto;height:auto;white-space:inherit;margin:0;position:static;overflow:visible}.invisible{visibility:hidden}.clearfix:before,.clearfix:after{content:"";display:table}.clearfix:after{clear:both}@media print{*,:before,:after{color:#000!important;box-shadow:none!important;text-shadow:none!important;background:#fff!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^=\#]:after,a[href^=javascript\:]:after{content:""}pre{white-space:pre-wrap!important}pre,blockquote{page-break-inside:avoid;border:1px solid #999}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.full-width-section{background-position:50%;background-size:cover;width:100%;max-width:1920px;margin:0 auto}.container{max-width:1200px;margin:0 auto;padding:0 12px}header,footer{width:100%}header .container,footer .container{max-width:1200px;margin:0 auto;padding:20px 12px}.gh{border-collapse:collapse;border-spacing:0;margin:0 auto}.gh td,.gh th{border-collapse:collapse;word-break:normal;padding:10px 5px;overflow:hidden}.gh .gh-tcell{text-align:center;vertical-align:middle}@media screen and (width<=767px){.gh,.gh col{width:auto!important}.gh-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.soc{border-collapse:collapse;border-spacing:0;margin:0 auto}.soc td,.soc th{border-collapse:collapse;word-break:normal;padding:8px;overflow:hidden}.soc .soc-fa{text-align:center;vertical-align:middle}@media screen and (width<=767px){.soc,.soc col{width:auto!important}.soc-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.foss{border-collapse:collapse;border-spacing:0}.foss td,.foss th{border-collapse:collapse;word-break:normal;padding:10px 5px;overflow:hidden}.foss .foss-cell{text-align:center;vertical-align:middle}@media screen and (width<=767px){.foss,.foss col{width:auto!important}.foss-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}}.bnav{border-collapse:collapse;border-spacing:0;margin:0 auto}.bnav td{word-break:normal;border-style:none;padding:10px;font-size:.875rem;font-weight:700;line-height:1.125rem;overflow:hidden}.bnav th{word-break:normal;border-style:none;padding:10px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.bnav .bnav-cell{text-align:center;vertical-align:middle;align-content:center}@media screen and (width<=767px){.bnav,.bnav col{width:auto!important}.bnav-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.bnav2{border-collapse:collapse;border-spacing:0;margin:0 auto}.bnav2 td{word-break:normal;border-style:none;padding:10px;font-size:.875rem;font-weight:700;line-height:1.125rem;overflow:hidden}.bnav2 th{word-break:normal;border-style:none;padding:12px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.bnav2 .bnav2-cell{text-align:center;vertical-align:middle;align-content:center}@media screen and (width<=767px){.bnav2,.bnav2 col{width:auto!important}.bnav2-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.pgp{border-collapse:collapse;border-spacing:0;margin:0 auto}.pgp td{word-break:normal;border-style:none;padding:10px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.pgp th{word-break:normal;border:1px solid #000;padding:10px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.pgp .pgp-col1{text-align:right;vertical-align:middle;padding-right:1rem}.pgp .pgp-col2{text-align:left;vertical-align:middle;padding-left:1rem}@media screen and (width<=767px){.pgp,.pgp col{width:auto!important}.pgp-wrap{-webkit-overflow-scrolling:touch;margin:2rem 0 auto;overflow-x:auto}}.logo{margin-left:auto;margin-right:auto;display:block}.index-title1{text-align:center;font-style:italic;font-weight:700}.index-title2{letter-spacing:-.015em;text-align:center;font-variant:small-caps;font-size:1.25rem;line-height:1.625rem}.index1{letter-spacing:-.035em;text-align:center;font-style:italic;font-weight:700;line-height:2.125rem}.index2{letter-spacing:-.035em;text-align:center;font-variant:small-caps;font-size:1.5rem;line-height:1.75rem}.index3{letter-spacing:-.035em;text-align:center;font-size:1.5rem;line-height:1.75rem}.subhead{letter-spacing:-.035em;font-variant:small-caps;font-size:1.5rem;line-height:1.75rem}.bolditalic{font-style:italic;font-weight:700}.bquote{border-left:3px solid #9e9e9e;margin-left:30px;padding-left:10px;font-style:italic}.small-text{font-size:.75rem;line-height:1.125rem}.large-text-center{text-align:center;font-size:1.25rem;line-height:1.75rem}.prewrap{white-space:pre-wrap;display:block}.hr-styled{width:75%;margin:auto}.center-text{text-align:center}.copyright{text-align:center;font-size:.75rem;line-height:1.125rem}.visited{color:#7f6227}.center-nav{text-align:center;padding:5px;font-size:.875rem;line-height:1.125rem}.block{resize:none;background:0 0;border:none;border-radius:0;outline:none;width:100%;font-size:.75rem;line-height:1.125rem}.fingerprint{white-space:pre-line;font-weight:700;display:block}.pgp-image{width:125px;height:125px}.spacer{margin:2rem 0}.separator{margin:0 .5rem}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/lib/styles/index.js
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
This file is part of Network Pro.
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
// Import transformed and minified stylsheets
|
|
9
|
+
import "./global.min.css";
|
|
10
|
+
import "./fa-global.css";
|
|
11
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- ==========================================================================
|
|
2
|
+
src/routes/+error.svelte
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
This file is part of Network Pro.
|
|
6
|
+
========================================================================== -->
|
|
7
|
+
|
|
8
|
+
<script>
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {Object} Error
|
|
11
|
+
* @property {string} [message] - The message explaining the error.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The HTTP status code of the error (e.g., 404, 500).
|
|
16
|
+
* @type {number}
|
|
17
|
+
*/
|
|
18
|
+
export let status;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The error object, containing details about what went wrong.
|
|
22
|
+
* @type {Error}
|
|
23
|
+
*/
|
|
24
|
+
export let error;
|
|
25
|
+
|
|
26
|
+
const centerText = "center-text";
|
|
27
|
+
|
|
28
|
+
// Get the pathname from the URL if available
|
|
29
|
+
const pathname =
|
|
30
|
+
typeof window !== "undefined" ? window.location.pathname : "/";
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<main>
|
|
34
|
+
<h1 class={centerText}
|
|
35
|
+
>{status} - {status === 404 ? "Page Not Found" : "Error"}</h1>
|
|
36
|
+
<p class={centerText}>
|
|
37
|
+
{#if status === 404}
|
|
38
|
+
The page "{pathname}" does not exist.
|
|
39
|
+
{:else}
|
|
40
|
+
{error?.message || "An error occurred"}
|
|
41
|
+
{/if}
|
|
42
|
+
</p>
|
|
43
|
+
</main>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/routes/+layout.js
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
This file is part of Network Pro.
|
|
6
|
+
========================================================================== */
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {object} MetaData
|
|
10
|
+
* @property {string} title - The title of the page
|
|
11
|
+
* @property {string} description - The description of the page
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @type {Record<string, MetaData>}
|
|
16
|
+
* Defines metadata for specific routes. The key is the pathname (string),
|
|
17
|
+
* and the value is an object containing the title and description for the route.
|
|
18
|
+
*/
|
|
19
|
+
const meta = {
|
|
20
|
+
"/": {
|
|
21
|
+
title:
|
|
22
|
+
"Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™",
|
|
23
|
+
description:
|
|
24
|
+
"Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™",
|
|
25
|
+
},
|
|
26
|
+
"/about": {
|
|
27
|
+
title: "About Us — Network Pro™",
|
|
28
|
+
description: "About Us | Security, Networking, Privacy — Network Pro™",
|
|
29
|
+
},
|
|
30
|
+
"/privacy-policy": {
|
|
31
|
+
title: "Privacy Policy — Network Pro™",
|
|
32
|
+
description:
|
|
33
|
+
"Privacy Policy | Security, Networking, Privacy — Network Pro™",
|
|
34
|
+
},
|
|
35
|
+
"/terms-of-use": {
|
|
36
|
+
title: "Website Terms of Use — Network Pro™",
|
|
37
|
+
description:
|
|
38
|
+
"Website Terms of Use | Security, Networking, Privacy — Network Pro™",
|
|
39
|
+
},
|
|
40
|
+
"/license": {
|
|
41
|
+
title: "Legal, Copyright, and Licensing — Network Pro™",
|
|
42
|
+
description:
|
|
43
|
+
"Legal, Copyright, and Licensing | Security, Networking, Privacy — Network Pro™",
|
|
44
|
+
},
|
|
45
|
+
"/terms-conditions": {
|
|
46
|
+
title: "Consulting Terms and Conditions — Network Pro™",
|
|
47
|
+
description:
|
|
48
|
+
"Terms and Conditions | Security, Networking, Privacy — Network Pro™",
|
|
49
|
+
},
|
|
50
|
+
"/foss-spotlight": {
|
|
51
|
+
title: "FOSS Spotlight — Network Pro™",
|
|
52
|
+
description:
|
|
53
|
+
"FOSS Spotlight | Security, Networking, Privacy — Network Pro™",
|
|
54
|
+
},
|
|
55
|
+
"/contact": {
|
|
56
|
+
title: "Contact Form — Network Pro™",
|
|
57
|
+
description: "Contact Form | Security, Networking, Privacy — Network Pro™",
|
|
58
|
+
},
|
|
59
|
+
"/privacy-rights": {
|
|
60
|
+
title: "Privacy Rights Request Form — Network Pro™",
|
|
61
|
+
description:
|
|
62
|
+
"Privacy Rights Request Form | Security, Networking, Privacy — Network Pro™",
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Fallback metadata for all routes
|
|
67
|
+
const defaultMeta = {
|
|
68
|
+
title: "Loading... | Network Pro™",
|
|
69
|
+
description:
|
|
70
|
+
"Please wait while the content loads... | Security, Networking, Privacy — Network Pro™",
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const prerender = "auto";
|
|
74
|
+
export const trailingSlash = "never";
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @param {{ url: URL }} param0
|
|
78
|
+
* @returns {{ pathname: string, meta: MetaData }}
|
|
79
|
+
* The load function returns the current pathname and the appropriate metadata
|
|
80
|
+
* for the route, ensuring that default metadata is used if no specific route is defined.
|
|
81
|
+
*/
|
|
82
|
+
export function load({ url }) {
|
|
83
|
+
// Normalize the pathname to remove trailing slashes
|
|
84
|
+
const normalizedPathname = url.pathname.replace(/\/+$/, "") || "/";
|
|
85
|
+
|
|
86
|
+
// Determine metadata based on static routes, fallback to defaultMeta
|
|
87
|
+
const currentMeta = meta[normalizedPathname] || defaultMeta;
|
|
88
|
+
|
|
89
|
+
// Return the metadata and pathname to the layout
|
|
90
|
+
return {
|
|
91
|
+
pathname: normalizedPathname,
|
|
92
|
+
meta: currentMeta,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
<!-- ==========================================================================
|
|
2
|
+
src/routes/+layout.svelte
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
This file is part of Network Pro.
|
|
6
|
+
========================================================================== -->
|
|
7
|
+
|
|
8
|
+
<script>
|
|
9
|
+
import ContainerSection from "$lib/components/ContainerSection.svelte";
|
|
10
|
+
import Footer from "$lib/components/layout/Footer.svelte";
|
|
11
|
+
import HeaderDefault from "$lib/components/layout/HeaderDefault.svelte";
|
|
12
|
+
import HeaderHome from "$lib/components/layout/HeaderHome.svelte";
|
|
13
|
+
import { browser } from "$app/environment";
|
|
14
|
+
// TODO: Testing in progress
|
|
15
|
+
import { registerServiceWorker } from "$lib/registerServiceWorker.js";
|
|
16
|
+
|
|
17
|
+
// Import logo images and favicons and format for preloading
|
|
18
|
+
import logoPng from "$lib/img/logo-web.png";
|
|
19
|
+
import logoWbp from "$lib/img/logo-web.webp";
|
|
20
|
+
import faviconSvg from "$lib/img/favicon.svg";
|
|
21
|
+
import appleTouchIcon from "$lib/img/icon-180x180.png";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @type {string}
|
|
25
|
+
* Style class for the mobile-web-app-capable meta tag.
|
|
26
|
+
*/
|
|
27
|
+
const webApp = "mobile-web-app-capable";
|
|
28
|
+
|
|
29
|
+
if (browser) {
|
|
30
|
+
// Preload logo images
|
|
31
|
+
[logoPng, logoWbp].forEach((src) => {
|
|
32
|
+
const img = new Image();
|
|
33
|
+
img.src = src;
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Preload favicon SVG
|
|
37
|
+
fetch(faviconSvg).then((response) => response.text());
|
|
38
|
+
|
|
39
|
+
// Preload Apple Touch icon
|
|
40
|
+
const touchImg = new Image();
|
|
41
|
+
touchImg.src = appleTouchIcon;
|
|
42
|
+
|
|
43
|
+
// TODO: Testing in progress
|
|
44
|
+
// Register the service worker
|
|
45
|
+
registerServiceWorker();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Import global and FontAwesome styles and web fonts
|
|
49
|
+
import "$lib/styles";
|
|
50
|
+
|
|
51
|
+
export let data;
|
|
52
|
+
|
|
53
|
+
// Pathname normalization takes place in +layout.js
|
|
54
|
+
</script>
|
|
55
|
+
|
|
56
|
+
<!-- Update the document's metadata dynamically -->
|
|
57
|
+
<svelte:head>
|
|
58
|
+
<title>{data?.meta?.title || "Network Pro Strategies (Network Pro™)"}</title>
|
|
59
|
+
<meta
|
|
60
|
+
name="description"
|
|
61
|
+
content={data?.meta?.description ||
|
|
62
|
+
"Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™"} />
|
|
63
|
+
|
|
64
|
+
<!-- Standard favicon and Apple Touch icon references -->
|
|
65
|
+
<link rel="icon" href={faviconSvg} type="image/svg+xml" />
|
|
66
|
+
<link rel="apple-touch-icon" href={appleTouchIcon} />
|
|
67
|
+
|
|
68
|
+
<!-- Preload links for all four critical assets -->
|
|
69
|
+
{#if browser}
|
|
70
|
+
<link rel="preload" href={logoWbp} as="image" type="image/webp" />
|
|
71
|
+
<link rel="preload" href={logoPng} as="image" type="image/png" />
|
|
72
|
+
<link rel="preload" href={faviconSvg} as="image" type="image/svg+xml" />
|
|
73
|
+
<link rel="preload" href={appleTouchIcon} as="image" type="image/png" />
|
|
74
|
+
{/if}
|
|
75
|
+
|
|
76
|
+
<!-- PWA-specific meta tags -->
|
|
77
|
+
<link rel="manifest" href="/manifest.json" />
|
|
78
|
+
<meta name={webApp} content="yes" />
|
|
79
|
+
<meta name={"apple-" + webApp} content="yes" />
|
|
80
|
+
<meta
|
|
81
|
+
name="apple-mobile-web-app-status-bar-style"
|
|
82
|
+
content="black-translucent" />
|
|
83
|
+
<meta name="theme-color" content="#ffc627" />
|
|
84
|
+
</svelte:head>
|
|
85
|
+
|
|
86
|
+
<!-- BEGIN HEADER -->
|
|
87
|
+
<header id="header-nav">
|
|
88
|
+
<ContainerSection>
|
|
89
|
+
{#if data.pathname === "/"}
|
|
90
|
+
<!-- Render the Home Header for the root route -->
|
|
91
|
+
<HeaderHome />
|
|
92
|
+
{:else}
|
|
93
|
+
<!-- Render the Default Header for all other routes -->
|
|
94
|
+
<HeaderDefault />
|
|
95
|
+
{/if}
|
|
96
|
+
</ContainerSection>
|
|
97
|
+
</header>
|
|
98
|
+
<!-- END HEADER -->
|
|
99
|
+
|
|
100
|
+
<main>
|
|
101
|
+
<slot />
|
|
102
|
+
</main>
|
|
103
|
+
|
|
104
|
+
<!-- BEGIN FOOTER -->
|
|
105
|
+
<footer id="licensing">
|
|
106
|
+
<ContainerSection>
|
|
107
|
+
<Footer />
|
|
108
|
+
</ContainerSection>
|
|
109
|
+
</footer>
|
|
110
|
+
<!-- END FOOTER -->
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!-- ==========================================================================
|
|
2
|
+
src/routes/+page.svelte
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
5
|
+
This file is part of Network Pro.
|
|
6
|
+
========================================================================== -->
|
|
7
|
+
|
|
8
|
+
<script>
|
|
9
|
+
import Badges from "$lib/components/Badges.svelte";
|
|
10
|
+
import FullWidthSection from "$lib/components/FullWidthSection.svelte";
|
|
11
|
+
import HomeContent from "$lib/pages/HomeContent.svelte";
|
|
12
|
+
import LegalNav from "$lib/components/LegalNav.svelte";
|
|
13
|
+
import Logo from "$lib/components/Logo.svelte";
|
|
14
|
+
import SocialMedia from "$lib/components/SocialMedia.svelte";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @type {string}
|
|
18
|
+
* Style class for the horizontal rule element.
|
|
19
|
+
*/
|
|
20
|
+
const hrStyle = "hr-styled";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @type {string}
|
|
24
|
+
* Style class for the div element.
|
|
25
|
+
*/
|
|
26
|
+
const spaceStyle = "spacer";
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<link rel="canonical" href="https://netwk.pro" />
|
|
30
|
+
|
|
31
|
+
<section id="home-page" data-testid="home-page">
|
|
32
|
+
<FullWidthSection>
|
|
33
|
+
<!-- BEGIN TITLE -->
|
|
34
|
+
<section id="page-title">
|
|
35
|
+
<Logo />
|
|
36
|
+
</section>
|
|
37
|
+
<!-- END TITLE -->
|
|
38
|
+
|
|
39
|
+
<div class={spaceStyle}></div>
|
|
40
|
+
|
|
41
|
+
<hr class={hrStyle} />
|
|
42
|
+
|
|
43
|
+
<div class={spaceStyle}></div>
|
|
44
|
+
|
|
45
|
+
<!-- BEGIN MAIN CONTENT -->
|
|
46
|
+
<section id="main-content">
|
|
47
|
+
<HomeContent />
|
|
48
|
+
</section>
|
|
49
|
+
<!-- END MAIN CONTENT -->
|
|
50
|
+
|
|
51
|
+
<div class={spaceStyle}></div>
|
|
52
|
+
|
|
53
|
+
<!-- BEGIN SOCIAL MEDIA -->
|
|
54
|
+
<section id="social-media">
|
|
55
|
+
<SocialMedia />
|
|
56
|
+
</section>
|
|
57
|
+
<!-- END SOCIAL MEDIA -->
|
|
58
|
+
|
|
59
|
+
<hr class={hrStyle} />
|
|
60
|
+
|
|
61
|
+
<div class={spaceStyle}></div>
|
|
62
|
+
|
|
63
|
+
<!-- BEGIN LEGAL -->
|
|
64
|
+
<section id="legal-nav">
|
|
65
|
+
<LegalNav />
|
|
66
|
+
</section>
|
|
67
|
+
<!-- END LEGAL -->
|
|
68
|
+
|
|
69
|
+
<div class={spaceStyle}></div>
|
|
70
|
+
|
|
71
|
+
<!-- BEGIN BADGES -->
|
|
72
|
+
<section id="badges">
|
|
73
|
+
<Badges />
|
|
74
|
+
</section>
|
|
75
|
+
<!-- END BADGES -->
|
|
76
|
+
</FullWidthSection>
|
|
77
|
+
</section>
|