@networkpro/web 1.15.4 → 1.16.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.
@@ -49,7 +49,7 @@ jobs:
49
49
  - name: Upgrade npm
50
50
  run: |
51
51
  corepack enable
52
- npm install -g npm@11.4.2
52
+ npm install -g npm@11.5.2
53
53
 
54
54
  - name: Install Node.js dependencies
55
55
  run: npm ci
@@ -128,7 +128,7 @@ jobs:
128
128
  - name: Upgrade npm
129
129
  run: |
130
130
  corepack enable
131
- npm install -g npm@11.4.2
131
+ npm install -g npm@11.5.2
132
132
 
133
133
  - name: Install Node.js dependencies
134
134
  run: npm ci
@@ -189,7 +189,7 @@ jobs:
189
189
  - name: Upgrade npm
190
190
  run: |
191
191
  corepack enable
192
- npm install -g npm@11.4.2
192
+ npm install -g npm@11.5.2
193
193
 
194
194
  - name: Install Node.js dependencies
195
195
  run: npm ci
@@ -51,7 +51,7 @@ jobs:
51
51
  - name: Upgrade npm
52
52
  run: |
53
53
  corepack enable
54
- npm install -g npm@11.4.2
54
+ npm install -g npm@11.5.2
55
55
 
56
56
  - name: Clean previous Lighthouse reports
57
57
  run: |
@@ -41,7 +41,7 @@ jobs:
41
41
  - name: Upgrade npm
42
42
  run: |
43
43
  corepack enable
44
- npm install -g npm@11.4.2
44
+ npm install -g npm@11.5.2
45
45
 
46
46
  - name: Install Node.js dependencies
47
47
  run: npm ci
@@ -47,7 +47,7 @@ jobs:
47
47
  - name: Upgrade npm
48
48
  run: |
49
49
  corepack enable
50
- npm install -g npm@11.4.2
50
+ npm install -g npm@11.5.2
51
51
 
52
52
  - name: Install Node.js dependencies
53
53
  run: npm ci
@@ -126,7 +126,7 @@ jobs:
126
126
  - name: Upgrade npm
127
127
  run: |
128
128
  corepack enable
129
- npm install -g npm@11.4.2
129
+ npm install -g npm@11.5.2
130
130
 
131
131
  - name: Install Node.js dependencies
132
132
  run: npm ci
@@ -187,7 +187,7 @@ jobs:
187
187
  - name: Upgrade npm
188
188
  run: |
189
189
  corepack enable
190
- npm install -g npm@11.4.2
190
+ npm install -g npm@11.5.2
191
191
 
192
192
  - name: Install Node.js dependencies
193
193
  run: npm ci
@@ -57,7 +57,7 @@ jobs:
57
57
  - name: Upgrade npm
58
58
  run: |
59
59
  corepack enable
60
- npm install -g npm@11.4.2
60
+ npm install -g npm@11.5.2
61
61
 
62
62
  - name: Install Node.js dependencies
63
63
  run: npm ci
@@ -136,7 +136,7 @@ jobs:
136
136
  - name: Upgrade npm
137
137
  run: |
138
138
  corepack enable
139
- npm install -g npm@11.4.2
139
+ npm install -g npm@11.5.2
140
140
 
141
141
  - name: Install Node.js dependencies
142
142
  run: npm ci
@@ -197,7 +197,7 @@ jobs:
197
197
  - name: Upgrade npm
198
198
  run: |
199
199
  corepack enable
200
- npm install -g npm@11.4.2
200
+ npm install -g npm@11.5.2
201
201
 
202
202
  - name: Install Node.js dependencies
203
203
  run: npm ci
@@ -6,6 +6,9 @@
6
6
  ],
7
7
  "$lib/*": [
8
8
  "../src/lib/*"
9
+ ],
10
+ "$app/types": [
11
+ "./types/index.d.ts"
9
12
  ]
10
13
  },
11
14
  "rootDirs": [
package/CHANGELOG.md CHANGED
@@ -22,6 +22,53 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
22
22
 
23
23
  ---
24
24
 
25
+ ## [1.16.0] - 2025-07-31
26
+
27
+ ### Added
28
+
29
+ - Added `CODE_OF_CONDUCT.md` and `CONTRIBUTING.md` to project root to provide instructions for contributing.
30
+
31
+ ### Changed
32
+
33
+ - Bumped version to `v1.16.0`.
34
+ - Updated generator metadata in `app.html` to reflect `SvelteKit 2.27.0`.
35
+ - Added `vercel.json` to `.gitignore`.
36
+ - Added additional rule overrides to `stylelint.config.js` to suppress unnecessarily strict linting errors
37
+ - The errors were corrected and the rule overrides are currently commented out
38
+ - Updated `npm` to `11.5.2` in the following files in `.github/workflows`
39
+ - `build-and-publish.yml`
40
+ - `lighthouse.yml`
41
+ - `playwright.yml`
42
+ - `publish-test.ml`
43
+ - `templates/publish.template.yml`
44
+ - Upgraded dependencies:
45
+ - `@eslint/js` `^9.31.0` → `^9.32.0`
46
+ - `@sveltejs/kit` `2.25.1` → `2.27.0`
47
+ - `@testing-library/jest-dom` `^6.6.3` → `^6.6.4`
48
+ - `eslint` `^9.31.0` → `^9.32.0`
49
+ - `eslint-plugin-jsdoc` `^51.4.1` → `^52.0.2`
50
+ - `posthog-js` `^1.257.0` → `^1.258.4`
51
+ - `stylelint` `^16.22.0` → `^16.23.0`
52
+ - `stylelint-config-recommended` `^16.0.0` → `^17.0.0`
53
+ - `svelte` `5.36.12` → `5.37.2`
54
+ - `typescript` `^5.8.3` → `^5.9.2`
55
+ - `vite` `^7.0.5` → `^7.0.6`
56
+
57
+ ### Fixed
58
+
59
+ - Corrected deprecated CSS usage throughout the project in the following files:
60
+ - `src/lib/components/Badges.svelte`
61
+ - `src/lib/components/Logo.svelte`
62
+ - `src/lib/components/layout/Footer.svelte`
63
+ - `src/lib/pages/LicenseContent.svelte`
64
+ - `src/lib/styles/css/default.css`
65
+ - `src/lib/styles/css/styles.css`
66
+ - `src/routes/consultation/+page.svelte`
67
+ - Generated new `global.min.css` stylesheet with LightningCSS.
68
+ - Resolved `svelte-check` type error in `PGP key download endpoint` by replacing Node.js `Buffer` with a standards-compliant `Uint8Array` in the `Response()` constructor.
69
+
70
+ ---
71
+
25
72
  ## [1.15.4] - 2025-07-20
26
73
 
27
74
  ### Changed
@@ -705,7 +752,8 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
705
752
 
706
753
  <!-- Link references -->
707
754
 
708
- [Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.15.4...HEAD
755
+ [Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.16.0...HEAD
756
+ [1.16.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.16.0
709
757
  [1.15.4]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.15.4
710
758
  [1.15.3]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.15.3
711
759
  [1.15.2]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.15.2
@@ -0,0 +1,173 @@
1
+ <!-- =========================================================================
2
+ CODE_OF_CONDUCT.md
3
+
4
+ Copyright © 2025 Network Pro Strategies (Network Pro™)
5
+ SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
6
+ This file is part of Network Pro.
7
+ ========================================================================== -->
8
+
9
+ <a name="top"></a>
10
+
11
+ [SPDX-License-Identifier](https://spdx.dev/learn/handling-license-info/):
12
+ `CC-BY-4.0 OR GPL-3.0-or-later`
13
+
14
+ # Contributor Covenant Code of Conduct
15
+
16
+ **Network Pro Strategies**
17
+ **Effective Date:** March 21, 2025
18
+
19
+ &nbsp;
20
+
21
+ ## Contents
22
+
23
+ - [Our Pledge](#pledge)
24
+ - [Our Standards](#standards)
25
+ - [Responsibilities](#response)
26
+ - [Scope](#scope)
27
+ - [Enforcement](#enforce)
28
+ - [Attribution](#attribute)
29
+
30
+ ---
31
+
32
+ <section id="pledge">
33
+
34
+ ## Our Pledge
35
+
36
+ We as members, contributors, and leaders pledge to make participation in our
37
+ community a harassment-free experience for everyone, regardless of age, body
38
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
39
+ identity and expression, level of experience, education, socio-economic status,
40
+ nationality, personal appearance, race, caste, color, religion, or sexual
41
+ identity and orientation.
42
+
43
+ We pledge to act and interact in ways that contribute to an open, welcoming,
44
+ diverse, inclusive, and healthy community.
45
+
46
+ </section>
47
+
48
+ <section id="standards">
49
+
50
+ ## Our Standards
51
+
52
+ Examples of behavior that contributes to a positive environment for our
53
+ community include:
54
+
55
+ - Demonstrating empathy and kindness toward other people
56
+ - Being respectful of differing opinions, viewpoints, and experiences
57
+ - Giving and gracefully accepting constructive feedback
58
+ - Accepting responsibility and apologizing to those affected by our mistakes,
59
+ and learning from the experience
60
+ - Focusing on what is best not just for us as individuals, but for the overall
61
+ community
62
+
63
+ Examples of unacceptable behavior include:
64
+
65
+ - The use of sexualized language or imagery, and sexual attention or advances of
66
+ any kind
67
+ - Trolling, insulting or derogatory comments, and personal or political attacks
68
+ - Public or private harassment
69
+ - Publishing others' private information, such as a physical or email address,
70
+ without their explicit permission
71
+ - Other conduct which could reasonably be considered inappropriate in a
72
+ professional setting
73
+
74
+ <sub>[Back to top](#top)</sub>
75
+
76
+ </section>
77
+
78
+ <section id="response">
79
+
80
+ ## Responsibilities
81
+
82
+ Company and community leaders are responsible for clarifying and enforcing our standards of
83
+ acceptable behavior and will take appropriate and fair corrective action in
84
+ response to any behavior that they deem inappropriate, threatening, offensive,
85
+ or harmful.
86
+
87
+ Company and community leaders have the right and responsibility to remove, edit, or reject
88
+ comments, commits, code, wiki edits, issues, and other contributions that are
89
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
90
+ decisions when appropriate.
91
+
92
+ Network Pro Strategies reserves the right, at its sole discretion, to remove, edit, or reject any contributions that are contrary to or detrimental to its business interests.
93
+
94
+ <sub>[Back to top](#top)</sub>
95
+
96
+ </section>
97
+
98
+ <section id="scope">
99
+
100
+ ## Scope
101
+
102
+ This Code of Conduct applies within all community spaces, and also applies when
103
+ an individual is officially representing the company or community in public spaces.
104
+ Examples of representing our company or community include using an official email address,
105
+ posting via an official social media account, or acting as an appointed
106
+ representative at an online or offline event.
107
+
108
+ <sub>[Back to top](#top)</sub>
109
+
110
+ </section>
111
+
112
+ <section id="enforce">
113
+
114
+ ## Enforcement
115
+
116
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the abuse team at [abuse@neteng.pro](mailto:abuse@neteng.pro). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances.
117
+
118
+ The abuse team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
119
+
120
+ Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.
121
+
122
+ <sub>[Back to top](#top)</sub>
123
+
124
+ </section>
125
+
126
+ <section id="attribute">
127
+
128
+ ## Attribution
129
+
130
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
131
+ version 2.1, available at
132
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
133
+
134
+ The **Enforcement** section is adapted from the
135
+ [Contributor Covenant][homepage],
136
+ version 1.4, available at
137
+ [https://www.contributor-covenant.org/version/1/4/code-of-conduct/][v1.4].
138
+
139
+ For answers to common questions about this code of conduct, see the FAQ at
140
+ [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
141
+ [https://www.contributor-covenant.org/translations][translations].
142
+
143
+ [homepage]: https://www.contributor-covenant.org
144
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
145
+ [v1.4]: https://www.contributor-covenant.org/version/1/4/code-of-conduct/
146
+ [FAQ]: https://www.contributor-covenant.org/faq
147
+ [translations]: https://www.contributor-covenant.org/translations
148
+
149
+ <sub>[Back to top](#top)</sub>
150
+
151
+ </section>
152
+
153
+ ---
154
+
155
+ <div style="font-size: 12px; font-weight: bold; text-align: center;">
156
+
157
+ [Home](https://netwk.pro) &nbsp; | &nbsp; [Terms of Use](https://netwk.pro/terms-of-use)
158
+ [Privacy Policy](https://netwk.pro/privacy) &nbsp; | &nbsp; [Legal](https://netwk.pro/license)
159
+
160
+ </div>
161
+
162
+ &nbsp;
163
+
164
+ <span style="font-size: 12px; text-align: center;">
165
+
166
+ Copyright &copy; 2025
167
+ **[Network Pro Strategies](https://netwk.pro/)** (Network Pro&trade;)
168
+
169
+ Network Pro&trade;, the shield logo, and the "Locking Down Networks...&trade;" slogan are [trademarks](https://netwk.pro/license#trademark) of Network Pro Strategies.
170
+
171
+ Licensed under **[CC BY 4.0](https://netwk.pro/license#cc-by)** and the **[GNU GPL](https://netwk.pro/license#gnu-gpl)**, as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
172
+
173
+ </span>
@@ -0,0 +1,214 @@
1
+ <!-- =========================================================================
2
+ CONTRIBUTING.md
3
+
4
+ Copyright © 2025 Network Pro Strategies (Network Pro™)
5
+ SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
6
+ This file is part of Network Pro.
7
+ ========================================================================== -->
8
+
9
+ <a name="top"></a>
10
+
11
+ [SPDX-License-Identifier](https://spdx.dev/learn/handling-license-info/):
12
+ `CC-BY-4.0 OR GPL-3.0-or-later`
13
+
14
+ # 🤝 Contributing to Network Pro Strategies
15
+
16
+ **Network Pro Strategies**
17
+ **Effective Date:** July 31, 2025
18
+
19
+ &nbsp;
20
+
21
+ Thanks for your interest in improving **Network Pro Strategies** (Network Pro™)! We're always looking for collaborators and contributors of all skill levels. This guide will help you get started quickly and effectively.
22
+
23
+ Following these guidelines helps us all work together efficiently and respectfully. 🙌
24
+
25
+ ---
26
+
27
+ ## 🐛 Using the Issue Tracker
28
+
29
+ Use the [issue tracker](https://github.com/netwk-pro/netwk-pro.github.io/issues) for:
30
+
31
+ - Reporting [bugs](#bug-reports)
32
+ - Submitting [feature requests](#feature-requests)
33
+ - Proposing [pull requests](#pull-requests)
34
+
35
+ 🚫 Please do **not** use issues for general support — instead, head to:
36
+
37
+ - [Stack Overflow Teams](https://stack.neteng.pro/)
38
+ - [GitHub Discussions](https://discuss.neteng.pro)
39
+ - [Discord](https://discord.neteng.pro)
40
+
41
+ ---
42
+
43
+ <section id="bug-reports">
44
+
45
+ ## 🐞 Bug Reports
46
+
47
+ A bug is a clear, reproducible issue in the code. High-quality reports help us fix problems faster.
48
+
49
+ ### ✅ A good bug report includes
50
+
51
+ - A **descriptive title**
52
+ - Steps to reproduce
53
+ - Your environment (OS, browser, version)
54
+ - Expected vs actual behavior
55
+ - Links to a minimal reproducible case (if possible)
56
+
57
+ _Example_:
58
+
59
+ <!-- markdownlint-disable MD042 -->
60
+
61
+ > **Title**: Checkbox toggle fails on Safari 17
62
+ > Steps:
63
+ >
64
+ > 1. Visit page X
65
+ > 2. Click toggle
66
+ > 3. Observe that...
67
+ > Expected: ...
68
+ > Actual: ...
69
+ > [Live example](#)
70
+
71
+ <!-- markdownlint-enable MD042 -->
72
+
73
+ </section>
74
+
75
+ &nbsp;
76
+
77
+ <sub>[Back to top](#top)</sub>
78
+
79
+ ---
80
+
81
+ <section id="feature-requests">
82
+
83
+ ## ✨ Feature Requests
84
+
85
+ Feature requests are welcome — just make sure it aligns with the project’s goals.
86
+
87
+ Before posting:
88
+
89
+ - Search for similar requests
90
+ - Clearly describe the problem it solves
91
+ - Explain the use case and who benefits
92
+
93
+ Strong proposals help us prioritize.
94
+
95
+ </section>
96
+
97
+ &nbsp;
98
+
99
+ <sub>[Back to top](#top)</sub>
100
+
101
+ ---
102
+
103
+ <section id="pull-requests">
104
+
105
+ ## 🔁 Pull Requests
106
+
107
+ Well-scoped, well-documented pull requests are the lifeblood of open-source.
108
+
109
+ ### ⚠️ Ask First
110
+
111
+ Before large PRs (new features, refactors, dependency upgrades), please check with maintainers first.
112
+
113
+ ### 📋 Steps
114
+
115
+ 1. **Fork the repo & set remotes**:
116
+
117
+ ```bash
118
+ git clone https://github.com/<your-username>/netwk-pro.github.io.git
119
+ cd netwk-pro.github.io
120
+ git remote add upstream https://github.com/netwk-pro/netwk-pro.github.io.git
121
+ ```
122
+
123
+ 2. **Stay Updated**
124
+
125
+ ```bash
126
+ git checkout master
127
+ git pull upstream master
128
+ ```
129
+
130
+ 3. **Create a topic branch:**
131
+
132
+ ```bash
133
+ git checkout -b my-feature
134
+ ```
135
+
136
+ 4. **Install & test locally:**
137
+
138
+ ```bash
139
+ npm install
140
+ npm run checkout
141
+ ```
142
+
143
+ 5. **Make your changes**
144
+
145
+ (and commit them in logical chunks with good commit messages).
146
+
147
+ 6. **Build:**
148
+
149
+ ```bash
150
+ npm run build
151
+ git add build/
152
+ git commit -m "Build: update assets"
153
+ ```
154
+
155
+ 7. **Push and open a PR:**
156
+
157
+ ```bash
158
+ git push origin my-feature
159
+ ```
160
+
161
+ Open your PR with a clear title, description, and reference the related issue (if any).
162
+
163
+ </section>
164
+
165
+ &nbsp;
166
+
167
+ <sub>[Back to top](#top)</sub>
168
+
169
+ ---
170
+
171
+ ## ✅ Coding & Style Notes
172
+
173
+ - Use the defined code style (Prettier, ESLint, Stylelint, markdownlint)
174
+ - Avoid unrelated changes in the same PR
175
+ - Keep PRs focused and test-covered when appropriate
176
+
177
+ &nbsp;
178
+
179
+ ## 🔐 Legal Notice
180
+
181
+ By submitting a pull request, you agree to license your contributions under:
182
+
183
+ - [CC BY 4.0](https://netwk.pro/license#cc-by)
184
+ - [GNU GPL 3.0 or later](https://netwk.pro/license#gnu-gpl)
185
+
186
+ &nbsp;
187
+
188
+ <sub>[Back to top](#top)</sub>
189
+
190
+ &nbsp;
191
+
192
+ _Thanks again for your contribution and for being part of the Network Pro&trade; community!_
193
+
194
+ ---
195
+
196
+ <div style="font-size: 12px; font-weight: bold; text-align: center;">
197
+
198
+ [Home](https://netwk.pro) &nbsp; | &nbsp; [Terms of Use](https://netwk.pro/terms-of-use)
199
+ [Privacy Policy](https://netwk.pro/privacy) &nbsp; | &nbsp; [Legal](https://netwk.pro/license)
200
+
201
+ </div>
202
+
203
+ &nbsp;
204
+
205
+ <span style="font-size: 12px; text-align: center;">
206
+
207
+ Copyright &copy; 2025
208
+ **[Network Pro Strategies](https://netwk.pro/)** (Network Pro&trade;)
209
+
210
+ Network Pro&trade;, the shield logo, and the "Locking Down Networks...&trade;" slogan are [trademarks](https://netwk.pro/license#trademark) of Network Pro Strategies.
211
+
212
+ Licensed under **[CC BY 4.0](https://netwk.pro/license#cc-by)** and the **[GNU GPL](https://netwk.pro/license#gnu-gpl)**, as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
213
+
214
+ </span>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@networkpro/web",
3
3
  "private": false,
4
- "version": "1.15.4",
4
+ "version": "1.16.0",
5
5
  "description": "Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro Strategies",
6
6
  "keywords": [
7
7
  "advisory",
@@ -79,26 +79,26 @@
79
79
  },
80
80
  "dependencies": {
81
81
  "dompurify": "^3.2.6",
82
- "posthog-js": "^1.257.0",
82
+ "posthog-js": "^1.258.4",
83
83
  "semver": "^7.7.2",
84
- "svelte": "5.36.12"
84
+ "svelte": "5.37.2"
85
85
  },
86
86
  "devDependencies": {
87
87
  "@eslint/compat": "^1.3.1",
88
- "@eslint/js": "^9.31.0",
88
+ "@eslint/js": "^9.32.0",
89
89
  "@lhci/cli": "^0.15.1",
90
90
  "@playwright/test": "^1.54.1",
91
91
  "@sveltejs/adapter-netlify": "^5.1.0",
92
- "@sveltejs/kit": "2.25.1",
92
+ "@sveltejs/kit": "2.27.0",
93
93
  "@sveltejs/vite-plugin-svelte": "^6.1.0",
94
- "@testing-library/jest-dom": "^6.6.3",
94
+ "@testing-library/jest-dom": "^6.6.4",
95
95
  "@testing-library/svelte": "^5.2.8",
96
96
  "@vitest/coverage-v8": "^3.2.4",
97
97
  "autoprefixer": "^10.4.21",
98
98
  "browserslist": "^4.25.1",
99
- "eslint": "^9.31.0",
99
+ "eslint": "^9.32.0",
100
100
  "eslint-config-prettier": "^10.1.8",
101
- "eslint-plugin-jsdoc": "^51.4.1",
101
+ "eslint-plugin-jsdoc": "^52.0.2",
102
102
  "eslint-plugin-svelte": "^3.11.0",
103
103
  "globals": "^16.3.0",
104
104
  "jsdom": "^26.1.0",
@@ -110,15 +110,15 @@
110
110
  "postcss": "^8.5.6",
111
111
  "prettier": "^3.6.2",
112
112
  "prettier-plugin-svelte": "^3.4.0",
113
- "stylelint": "^16.22.0",
113
+ "stylelint": "^16.23.0",
114
114
  "stylelint-config-html": "^1.1.0",
115
- "stylelint-config-recommended": "^16.0.0",
115
+ "stylelint-config-recommended": "^17.0.0",
116
116
  "stylelint-order": "^7.0.0",
117
117
  "svelte-check": "^4.3.0",
118
118
  "svelte-eslint-parser": "^1.3.0",
119
119
  "svelte-preprocess": "^6.0.3",
120
- "typescript": "^5.8.3",
121
- "vite": "^7.0.5",
120
+ "typescript": "^5.9.2",
121
+ "vite": "^7.0.6",
122
122
  "vite-plugin-lightningcss": "^0.0.5",
123
123
  "vite-tsconfig-paths": "^5.1.4",
124
124
  "vitest": "^3.2.4"
package/src/app.html CHANGED
@@ -63,7 +63,7 @@
63
63
  content="bx4ham0zkpvzztzu213bhpt76m9siq" />
64
64
  <!-- cspell:enable -->
65
65
 
66
- <meta name="generator" content="SvelteKit 2.25.1" />
66
+ <meta name="generator" content="SvelteKit 2.27.0" />
67
67
 
68
68
  <script src="/disableSw.js"></script>
69
69
 
@@ -68,7 +68,8 @@ This file is part of Network Pro.
68
68
  loading="lazy"
69
69
  src={badge.src}
70
70
  alt={badge.alt}
71
- style="width: {badge.width}; height: {badge.height};" />
71
+ style:width={badge.width}
72
+ style:height={badge.height} />
72
73
  </a>
73
74
  </td>
74
75
  {/each}
@@ -60,15 +60,15 @@ This file is part of Network Pro.
60
60
 
61
61
  /**
62
62
  * Width of the logo in pixels.
63
- * @type {number}
63
+ * @type {string}
64
64
  */
65
- export let width = 250;
65
+ export let width = '250px';
66
66
 
67
67
  /**
68
68
  * Height of the logo in pixels.
69
- * @type {number}
69
+ * @type {string}
70
70
  */
71
- export let height = 250;
71
+ export let height = '250px';
72
72
 
73
73
  /**
74
74
  * Fetch priority for the logo image.
@@ -93,7 +93,8 @@ This file is part of Network Pro.
93
93
  src={logoPng}
94
94
  {alt}
95
95
  {fetchpriority}
96
- style="width: {width}px; height: {height}px" />
96
+ style:width
97
+ style:height />
97
98
  </picture>
98
99
 
99
100
  {#if showSlogan}
@@ -117,32 +117,18 @@ This file is part of Network Pro.
117
117
  Licensed under
118
118
  {#each licenses as license, index}
119
119
  {#if license.type === 'CC BY 4.0'}
120
- <a
121
- href={license.url}
122
- target={PAGE.SELF}
123
- rel={relLicense}
124
- style="display: inline-block">
120
+ <a href={license.url} target={PAGE.SELF} rel={relLicense}>
125
121
  <strong>{license.type}</strong>
126
122
  </a>
127
123
  {#if license.icons}
128
124
  {#each license.icons as icon}
129
- <a
130
- href={license.externalUrl}
131
- target={PAGE.BLANK}
132
- rel={relLicense}
133
- style="display: inline-block">
125
+ <a href={license.externalUrl} target={PAGE.BLANK} rel={relLicense}>
134
126
  <img
127
+ class="cc-img"
135
128
  decoding="async"
136
129
  loading="lazy"
137
130
  src={icon.src}
138
- alt={icon.alt}
139
- style="
140
- width: 18px !important;
141
- height: 18px !important;
142
- margin-left: 3px;
143
- text-decoration: none;
144
- vertical-align: text-bottom;
145
- " />
131
+ alt={icon.alt} />
146
132
  </a>
147
133
  {/each}
148
134
  {/if}
@@ -242,34 +242,24 @@ This file is part of Network Pro.
242
242
  <a
243
243
  rel={PAGE.REL}
244
244
  href="https://creativecommons.org/licenses/by/4.0/"
245
- target={PAGE.BLANK}>
245
+ target={PAGE.BLANK}
246
+ class="cc-link">
246
247
  <img
248
+ class="cc-img"
247
249
  decoding="async"
248
250
  loading="lazy"
249
- style="
250
- display: inline-block;
251
- height: 18px !important;
252
- margin-left: 3px;
253
- text-decoration: none;
254
- vertical-align: text-bottom;
255
- "
256
251
  src={ccSrc}
257
252
  alt="Creative Commons BY" />
258
253
  </a>
259
254
  <a
260
255
  rel={PAGE.REL}
261
256
  href="https://creativecommons.org/licenses/by/4.0/"
262
- target={PAGE.BLANK}>
257
+ target={PAGE.BLANK}
258
+ class="cc-link">
263
259
  <img
260
+ class="cc-img"
264
261
  decoding="async"
265
262
  loading="lazy"
266
- style="
267
- display: inline-block;
268
- height: 18px !important;
269
- margin-left: 3px;
270
- text-decoration: none;
271
- vertical-align: text-bottom;
272
- "
273
263
  src={bySrc}
274
264
  alt="Creative Commons BY" />
275
265
  </a>.
@@ -518,6 +518,7 @@ footer .container {
518
518
  padding: 0;
519
519
  margin: -1px;
520
520
  border: 0;
521
+ /* stylelint-disable-next-line property-no-deprecated */
521
522
  clip: rect(0, 0, 0, 0);
522
523
  overflow: hidden;
523
524
  white-space: nowrap;
@@ -602,3 +603,14 @@ footer .container {
602
603
  transform: rotate(360deg);
603
604
  }
604
605
  }
606
+
607
+ .cc-link {
608
+ text-decoration: none;
609
+ }
610
+
611
+ .cc-img {
612
+ display: inline-block;
613
+ height: 18px !important;
614
+ margin-left: 3px;
615
+ vertical-align: text-bottom;
616
+ }
@@ -179,6 +179,7 @@ a:visited:focus-visible {
179
179
  padding: 0;
180
180
  margin: -1px;
181
181
  border: 0;
182
+ /* stylelint-disable-next-line property-no-deprecated */
182
183
  clip: rect(0, 0, 0, 0);
183
184
  overflow: hidden;
184
185
  white-space: nowrap;
@@ -198,6 +199,7 @@ a:visited:focus-visible {
198
199
  width: auto;
199
200
  height: auto;
200
201
  margin: 0;
202
+ /* stylelint-disable-next-line property-no-deprecated */
201
203
  clip: auto;
202
204
  overflow: visible;
203
205
  white-space: inherit;
@@ -294,12 +296,12 @@ a:visited:focus-visible {
294
296
  pre,
295
297
  blockquote {
296
298
  border: 1px solid #999;
297
- page-break-inside: avoid;
299
+ break-inside: avoid;
298
300
  }
299
301
 
300
302
  tr,
301
303
  img {
302
- page-break-inside: avoid;
304
+ break-inside: avoid;
303
305
  }
304
306
 
305
307
  p,
@@ -311,6 +313,6 @@ a:visited:focus-visible {
311
313
 
312
314
  h2,
313
315
  h3 {
314
- page-break-after: avoid;
316
+ break-after: avoid;
315
317
  }
316
318
  }
@@ -3,4 +3,4 @@ Copyright © 2025 Network Pro Strategies (Network Pro™)
3
3
  SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
4
4
  This file is part of Network Pro.
5
5
  ========================================================================== */
6
- 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:#111;background-color:#ffc627}a:visited,a:visited:hover{color:#cba557}a:visited:focus,a:visited:focus-visible{color:#111!important}.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}.readable{max-width:900px;margin:0 auto}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{text-align:center;border-collapse:collapse;border-spacing:0;margin:0 auto}.bnav td,.bnav th{text-align:center;vertical-align:middle;word-break:normal;border-style:none;padding:10px;font-size:.875rem;font-weight:700;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}.index4{letter-spacing:-.035em;text-align:center;font-size:1.5rem;line-height:1.75rem;text-decoration:underline}.subhead{letter-spacing:-.035em;font-variant:small-caps;font-size:1.5rem;line-height:1.75rem}.bold{font-weight:700}.emphasis{font-style:italic}.uline{text-decoration:underline}.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}.gold{color:#ffc627}.visited{color:#cba557}.goldseparator{color:#ffc627;margin:0 .5rem}.center-nav{text-align:center;padding:5px;font-size:1rem;line-height:1.5rem}.block{overflow-wrap:break-word;resize:none;white-space:normal;word-break:normal;background:0 0;border:none;border-radius:0;outline:none;width:100%;font-family:monospace;font-size:.875rem;line-height:1.125rem}.fingerprint{white-space:pre-line;font-weight:700;display:block}.pgp-image{width:150px;height:150px}.spacer{margin:2rem 0}.separator{margin:0 .5rem}.emoji{margin-right:8px}.headline{margin-bottom:4px;font-style:italic;font-weight:700;display:block}.label{font-family:inherit;font-weight:700}.description{font-family:inherit;font-style:normal;font-weight:400;display:inline}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pgp-entry{flex-wrap:wrap;align-items:center;gap:2rem;margin-bottom:2rem;display:flex}.pgp-text{flex:2;min-width:250px}.pgp-qr{flex:1;min-width:150px}.obtainium-direct-label{margin:.25rem 0 .75rem;font-weight:700}.obtainium-manual-label{margin-top:.75rem;font-weight:700}.obtainium-img{width:185px;height:55px;margin-bottom:.25rem}.obtainium-margin{margin-left:4px}.obtainium-fa-down{color:#ffc627;margin-left:4px}.obtainium-icon{width:50px;height:50px}.proton-img{width:168px;height:24px}.redirect-text{text-align:center;margin-top:4rem}.redirect-content{text-align:center;margin-top:2rem;font-family:system-ui,sans-serif}.loading-spinner{border:4px solid #ddd;border-top-color:#ffc627;border-radius:50%;width:48px;height:48px;margin:2rem auto;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}
6
+ 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:#111;background-color:#ffc627}a:visited,a:visited:hover{color:#cba557}a:visited:focus,a:visited:focus-visible{color:#111!important}.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{break-inside:avoid;border:1px solid #999}tr,img{break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{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}.readable{max-width:900px;margin:0 auto}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{text-align:center;border-collapse:collapse;border-spacing:0;margin:0 auto}.bnav td,.bnav th{text-align:center;vertical-align:middle;word-break:normal;border-style:none;padding:10px;font-size:.875rem;font-weight:700;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}.index4{letter-spacing:-.035em;text-align:center;font-size:1.5rem;line-height:1.75rem;text-decoration:underline}.subhead{letter-spacing:-.035em;font-variant:small-caps;font-size:1.5rem;line-height:1.75rem}.bold{font-weight:700}.emphasis{font-style:italic}.uline{text-decoration:underline}.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}.gold{color:#ffc627}.visited{color:#cba557}.goldseparator{color:#ffc627;margin:0 .5rem}.center-nav{text-align:center;padding:5px;font-size:1rem;line-height:1.5rem}.block{overflow-wrap:break-word;resize:none;white-space:normal;word-break:normal;background:0 0;border:none;border-radius:0;outline:none;width:100%;font-family:monospace;font-size:.875rem;line-height:1.125rem}.fingerprint{white-space:pre-line;font-weight:700;display:block}.pgp-image{width:150px;height:150px}.spacer{margin:2rem 0}.separator{margin:0 .5rem}.emoji{margin-right:8px}.headline{margin-bottom:4px;font-style:italic;font-weight:700;display:block}.label{font-family:inherit;font-weight:700}.description{font-family:inherit;font-style:normal;font-weight:400;display:inline}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pgp-entry{flex-wrap:wrap;align-items:center;gap:2rem;margin-bottom:2rem;display:flex}.pgp-text{flex:2;min-width:250px}.pgp-qr{flex:1;min-width:150px}.obtainium-direct-label{margin:.25rem 0 .75rem;font-weight:700}.obtainium-manual-label{margin-top:.75rem;font-weight:700}.obtainium-img{width:185px;height:55px;margin-bottom:.25rem}.obtainium-margin{margin-left:4px}.obtainium-fa-down{color:#ffc627;margin-left:4px}.obtainium-icon{width:50px;height:50px}.proton-img{width:168px;height:24px}.redirect-text{text-align:center;margin-top:4rem}.redirect-content{text-align:center;margin-top:2rem;font-family:system-ui,sans-serif}.loading-spinner{border:4px solid #ddd;border-top-color:#ffc627;border-radius:50%;width:48px;height:48px;margin:2rem auto;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.cc-link{text-decoration:none}.cc-img{vertical-align:text-bottom;margin-left:3px;display:inline-block;height:18px!important}
@@ -45,5 +45,5 @@ This file is part of Network Pro.
45
45
  {#if show && target}
46
46
  <RedirectPage to={target} />
47
47
  {:else}
48
- <p style="text-align: center; margin-top: 4rem;">Preparing to redirect…</p>
48
+ <p class="redirect-text">Preparing to redirect…</p>
49
49
  {/if}
@@ -28,7 +28,7 @@ export async function GET({ params, setHeaders }) {
28
28
  'Content-Type': 'application/pgp-keys',
29
29
  'Content-Disposition': `attachment; filename="${key}"`,
30
30
  });
31
- return new Response(file);
31
+ return new Response(new Uint8Array(file));
32
32
  } catch {
33
33
  return new Response('File not found', { status: 404 });
34
34
  }
@@ -56,6 +56,12 @@ export default {
56
56
  "Class names must not start with 'fa-' (FontAwesome classes are ignored)",
57
57
  },
58
58
  ],
59
+ // Disable unnecessarily strict rules
60
+ //'media-type-no-deprecated': null,
61
+ //'property-no-deprecated': null,
62
+ //'nesting-selector-no-missing-scoping-root': null,
63
+ //'no-invalid-position-at-import-rule': null,
64
+ //'no-invalid-position-declaration': null,
59
65
  'order/properties-order': [
60
66
  [
61
67
  {