@networkpro/web 0.13.2 → 1.1.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 +13 -12
- package/_headers +2 -0
- 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 +3 -0
- package/package.json +63 -60
- 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 +83 -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/MetaTags.svelte +41 -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/meta.js +73 -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 +38 -0
- package/src/routes/+layout.svelte +113 -0
- package/src/routes/+page.server.js +27 -0
- package/src/routes/+page.svelte +82 -0
- package/src/routes/about/+page.server.js +17 -0
- package/src/routes/about/+page.svelte +66 -0
- package/src/routes/contact/+page.server.js +24 -0
- package/src/routes/example.svx +9 -0
- package/src/routes/foss-spotlight/+page.server.js +17 -0
- package/src/routes/foss-spotlight/+page.svelte +68 -0
- package/src/routes/license/+page.server.js +17 -0
- package/src/routes/license/+page.svelte +68 -0
- package/src/routes/page.svelte.test.js +29 -0
- package/src/routes/privacy-policy/+page.server.js +17 -0
- package/src/routes/privacy-policy/+page.svelte +68 -0
- package/src/routes/privacy-rights/+page.server.js +24 -0
- package/src/routes/terms-conditions/+page.server.js +17 -0
- package/src/routes/terms-conditions/+page.svelte +68 -0
- package/src/routes/terms-of-use/+page.server.js +17 -0
- package/src/routes/terms-of-use/+page.svelte +68 -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/qr/pgp-github.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-1440.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/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}/banner-1280x640.png +0 -0
- /package/{img → static/img}/banner-og-1200x630.png +0 -0
- /package/{img → static/img}/logo-transparent.png +0 -0
- /package/{img → static/img}/logo.png +0 -0
- /package/{img → static/img}/qr/pgp-contact.png +0 -0
- /package/{img → static/img}/qr/pgp-support.png +0 -0
- /package/{img → static/img}/qr/vcard.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,38 @@
|
|
|
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
|
+
* Fallback metadata to satisfy typing in +layout.svelte and +page.svelte.
|
|
16
|
+
* Actual meta content is provided per-route via +page.server.js.
|
|
17
|
+
*/
|
|
18
|
+
const fallbackMeta = {
|
|
19
|
+
title: "Security, Networking, Privacy — Network Pro™",
|
|
20
|
+
description:
|
|
21
|
+
"Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™",
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const prerender = "auto";
|
|
25
|
+
export const trailingSlash = "never";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @param {{ url: URL }} param0
|
|
29
|
+
* @returns {{ pathname: string, meta: MetaData }}
|
|
30
|
+
*/
|
|
31
|
+
export function load({ url }) {
|
|
32
|
+
const normalizedPathname = url.pathname.replace(/\/+$/, "") || "/";
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
pathname: normalizedPathname,
|
|
36
|
+
meta: fallbackMeta, // Required to ensure meta always exists for typing
|
|
37
|
+
};
|
|
38
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
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
|
+
export let data;
|
|
10
|
+
|
|
11
|
+
import ContainerSection from "$lib/components/ContainerSection.svelte";
|
|
12
|
+
import Footer from "$lib/components/layout/Footer.svelte";
|
|
13
|
+
import HeaderDefault from "$lib/components/layout/HeaderDefault.svelte";
|
|
14
|
+
import HeaderHome from "$lib/components/layout/HeaderHome.svelte";
|
|
15
|
+
import { browser } from "$app/environment";
|
|
16
|
+
// TODO: Testing in progress
|
|
17
|
+
import { registerServiceWorker } from "$lib/registerServiceWorker.js";
|
|
18
|
+
import "$lib/styles";
|
|
19
|
+
|
|
20
|
+
// Import favicon images
|
|
21
|
+
import logoPng from "$lib/img/logo-web.png";
|
|
22
|
+
import logoWbp from "$lib/img/logo-web.webp";
|
|
23
|
+
import faviconSvg from "$lib/img/favicon.svg";
|
|
24
|
+
import appleTouchIcon from "$lib/img/icon-180x180.png";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @type {string}
|
|
28
|
+
* Style class for the mobile-web-app-capable meta tag.
|
|
29
|
+
* OpenGraph URL for the website.
|
|
30
|
+
* Company name for the website.
|
|
31
|
+
* Twitter account for the website.
|
|
32
|
+
*/
|
|
33
|
+
const webApp = "mobile-web-app-capable";
|
|
34
|
+
const ogUrl = "https://netwk.pro";
|
|
35
|
+
const companyName = "Network Pro Strategies";
|
|
36
|
+
const twitterAct = "@NetEng_Pro";
|
|
37
|
+
|
|
38
|
+
if (browser) {
|
|
39
|
+
// Preload logo images
|
|
40
|
+
[logoPng, logoWbp].forEach((src) => {
|
|
41
|
+
const img = new Image();
|
|
42
|
+
img.src = src;
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Preload favicon SVG
|
|
46
|
+
const touchImg = new Image();
|
|
47
|
+
// Preload Apple Touch icon
|
|
48
|
+
touchImg.src = appleTouchIcon;
|
|
49
|
+
|
|
50
|
+
// TODO: Testing in progress
|
|
51
|
+
// Register the service worker
|
|
52
|
+
registerServiceWorker();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// fallback values if data.meta not set
|
|
56
|
+
const metaTitle =
|
|
57
|
+
data?.meta?.title || "Security, Networking, Privacy — Network Pro™";
|
|
58
|
+
const metaDescription =
|
|
59
|
+
data?.meta?.description ||
|
|
60
|
+
"Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro™";
|
|
61
|
+
|
|
62
|
+
// Pathname normalization takes place in +layout.js
|
|
63
|
+
</script>
|
|
64
|
+
|
|
65
|
+
<svelte:head>
|
|
66
|
+
<!-- Static only, dynamic content moved to $lib/components/MetaTags.svelte -->
|
|
67
|
+
<link rel="preload" href={logoWbp} as="image" type="image/webp" />
|
|
68
|
+
<link rel="preload" href={logoPng} as="image" type="image/png" />
|
|
69
|
+
<link rel="preload" href={faviconSvg} as="image" type="image/svg+xml" />
|
|
70
|
+
<link rel="preload" href={appleTouchIcon} as="image" type="image/png" />
|
|
71
|
+
|
|
72
|
+
<link rel="icon" href={faviconSvg} type="image/svg+xml" />
|
|
73
|
+
<link rel="apple-touch-icon" href={appleTouchIcon} />
|
|
74
|
+
|
|
75
|
+
<!-- PWA -->
|
|
76
|
+
<link rel="manifest" href="/manifest.json" />
|
|
77
|
+
<meta name={webApp} content="yes" />
|
|
78
|
+
<meta name={"apple-" + webApp} content="yes" />
|
|
79
|
+
<meta
|
|
80
|
+
name="apple-mobile-web-app-status-bar-style"
|
|
81
|
+
content="black-translucent" />
|
|
82
|
+
<meta name="theme-color" content="#ffc627" />
|
|
83
|
+
|
|
84
|
+
<meta
|
|
85
|
+
name="facebook-domain-verification"
|
|
86
|
+
content="bx4ham0zkpvzztzu213bhpt76m9siq" />
|
|
87
|
+
</svelte:head>
|
|
88
|
+
|
|
89
|
+
<!-- BEGIN HEADER -->
|
|
90
|
+
<header id="header-nav">
|
|
91
|
+
<ContainerSection>
|
|
92
|
+
{#if data.pathname === "/"}
|
|
93
|
+
<!-- Render the Home Header for the root route -->
|
|
94
|
+
<HeaderHome />
|
|
95
|
+
{:else}
|
|
96
|
+
<!-- Render the Default Header for all other routes -->
|
|
97
|
+
<HeaderDefault />
|
|
98
|
+
{/if}
|
|
99
|
+
</ContainerSection>
|
|
100
|
+
</header>
|
|
101
|
+
<!-- END HEADER -->
|
|
102
|
+
|
|
103
|
+
<main>
|
|
104
|
+
<slot />
|
|
105
|
+
</main>
|
|
106
|
+
|
|
107
|
+
<!-- BEGIN FOOTER -->
|
|
108
|
+
<footer id="licensing">
|
|
109
|
+
<ContainerSection>
|
|
110
|
+
<Footer />
|
|
111
|
+
</ContainerSection>
|
|
112
|
+
</footer>
|
|
113
|
+
<!-- END FOOTER -->
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/routes/+page.server.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 { defaultMeta, meta } from "$lib/meta.js";
|
|
9
|
+
|
|
10
|
+
export const prerender = false;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {object} MetaData
|
|
14
|
+
* @property {string} title - The title of the page
|
|
15
|
+
* @property {string} description - The description of the page
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Load metadata for the root route.
|
|
20
|
+
*
|
|
21
|
+
* @returns {{ meta: MetaData }}
|
|
22
|
+
*/
|
|
23
|
+
export function load() {
|
|
24
|
+
return {
|
|
25
|
+
meta: meta["/"] || defaultMeta,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
import MetaTags from "$lib/components/MetaTags.svelte";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @type {string}
|
|
19
|
+
* Style class for the horizontal rule element.
|
|
20
|
+
*/
|
|
21
|
+
const hrStyle = "hr-styled";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @type {string}
|
|
25
|
+
* Style class for the div element.
|
|
26
|
+
*/
|
|
27
|
+
const spaceStyle = "spacer";
|
|
28
|
+
|
|
29
|
+
export let data;
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<MetaTags title={data.meta.title} description={data.meta.description} />
|
|
33
|
+
|
|
34
|
+
<link rel="canonical" href="https://netwk.pro" />
|
|
35
|
+
|
|
36
|
+
<section id="home-page" data-testid="home-page">
|
|
37
|
+
<FullWidthSection>
|
|
38
|
+
<!-- BEGIN TITLE -->
|
|
39
|
+
<section id="page-title">
|
|
40
|
+
<Logo />
|
|
41
|
+
</section>
|
|
42
|
+
<!-- END TITLE -->
|
|
43
|
+
|
|
44
|
+
<div class={spaceStyle}></div>
|
|
45
|
+
|
|
46
|
+
<hr class={hrStyle} />
|
|
47
|
+
|
|
48
|
+
<div class={spaceStyle}></div>
|
|
49
|
+
|
|
50
|
+
<!-- BEGIN MAIN CONTENT -->
|
|
51
|
+
<section id="main-content">
|
|
52
|
+
<HomeContent />
|
|
53
|
+
</section>
|
|
54
|
+
<!-- END MAIN CONTENT -->
|
|
55
|
+
|
|
56
|
+
<div class={spaceStyle}></div>
|
|
57
|
+
|
|
58
|
+
<!-- BEGIN SOCIAL MEDIA -->
|
|
59
|
+
<section id="social-media">
|
|
60
|
+
<SocialMedia />
|
|
61
|
+
</section>
|
|
62
|
+
<!-- END SOCIAL MEDIA -->
|
|
63
|
+
|
|
64
|
+
<hr class={hrStyle} />
|
|
65
|
+
|
|
66
|
+
<div class={spaceStyle}></div>
|
|
67
|
+
|
|
68
|
+
<!-- BEGIN LEGAL -->
|
|
69
|
+
<section id="legal-nav">
|
|
70
|
+
<LegalNav />
|
|
71
|
+
</section>
|
|
72
|
+
<!-- END LEGAL -->
|
|
73
|
+
|
|
74
|
+
<div class={spaceStyle}></div>
|
|
75
|
+
|
|
76
|
+
<!-- BEGIN BADGES -->
|
|
77
|
+
<section id="badges">
|
|
78
|
+
<Badges />
|
|
79
|
+
</section>
|
|
80
|
+
<!-- END BADGES -->
|
|
81
|
+
</FullWidthSection>
|
|
82
|
+
</section>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/routes/about/+page.server.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 { defaultMeta, meta } from "$lib/meta.js";
|
|
9
|
+
|
|
10
|
+
export const prerender = false;
|
|
11
|
+
|
|
12
|
+
/** @type {import('./$types').PageServerLoad} */
|
|
13
|
+
export function load() {
|
|
14
|
+
return {
|
|
15
|
+
meta: meta["/about"] || defaultMeta,
|
|
16
|
+
};
|
|
17
|
+
}
|