├── .gitignore
├── .vscode
├── settings.json
└── storeroom
├── images
├── X.png
├── Icon.png
├── Group.png
├── Union.png
├── github.png
├── Disabled.png
├── icon-skills.png
├── Linkedin icon.png
├── WindowDisabled.png
├── icon-languages.png
├── icon-frameworks.png
├── Snapshoot-Portfolio.png
├── Mobile-popup-Portfolio.JPG
├── Header-llustration-desktop.png
├── header-illsutration-mobile.png
├── illustration-contact-form.png
├── illustration-aboutme-mobile.png
├── illustration-contact-mobile.png
├── illustration about me desktop (1).png
└── Header-llustration-desktop.svg
├── .hintrc
├── .eslintrc.json
├── .stylelintrc.json
├── LICENSE
├── .github
└── workflows
│ └── linters.yml
├── README.md
├── index.html
├── index.js
├── style.css
└── package.json
/.gitignore:
--------------------------------------------------------------------------------
1 | test.md
2 | node_modules
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "liveServer.settings.port": 5503
3 | }
4 |
--------------------------------------------------------------------------------
/images/X.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/X.png
--------------------------------------------------------------------------------
/images/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/Icon.png
--------------------------------------------------------------------------------
/images/Group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/Group.png
--------------------------------------------------------------------------------
/images/Union.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/Union.png
--------------------------------------------------------------------------------
/images/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/github.png
--------------------------------------------------------------------------------
/images/Disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/Disabled.png
--------------------------------------------------------------------------------
/images/icon-skills.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/icon-skills.png
--------------------------------------------------------------------------------
/images/Linkedin icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/Linkedin icon.png
--------------------------------------------------------------------------------
/images/WindowDisabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/WindowDisabled.png
--------------------------------------------------------------------------------
/images/icon-languages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/icon-languages.png
--------------------------------------------------------------------------------
/images/icon-frameworks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/icon-frameworks.png
--------------------------------------------------------------------------------
/images/Snapshoot-Portfolio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/Snapshoot-Portfolio.png
--------------------------------------------------------------------------------
/images/Mobile-popup-Portfolio.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/Mobile-popup-Portfolio.JPG
--------------------------------------------------------------------------------
/images/Header-llustration-desktop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/Header-llustration-desktop.png
--------------------------------------------------------------------------------
/images/header-illsutration-mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/header-illsutration-mobile.png
--------------------------------------------------------------------------------
/images/illustration-contact-form.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/illustration-contact-form.png
--------------------------------------------------------------------------------
/images/illustration-aboutme-mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/illustration-aboutme-mobile.png
--------------------------------------------------------------------------------
/images/illustration-contact-mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/illustration-contact-mobile.png
--------------------------------------------------------------------------------
/images/illustration about me desktop (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mike47ip/mobilePortfolioWeb/HEAD/images/illustration about me desktop (1).png
--------------------------------------------------------------------------------
/.hintrc:
--------------------------------------------------------------------------------
1 | {
2 | "connector": {
3 | "name": "local",
4 | "options": {
5 | "pattern": ["**", "!.git/**", "!node_modules/**"]
6 | }
7 | },
8 | "extends": ["development"],
9 | "formatters": ["stylish"],
10 | "hints": [
11 | "button-type",
12 | "disown-opener",
13 | "html-checker",
14 | "meta-charset-utf-8",
15 | "meta-viewport",
16 | "no-inline-styles:error"
17 | ]
18 | }
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "es6": true,
5 | "jest": true
6 | },
7 | "parser": "babel-eslint",
8 | "parserOptions": {
9 | "ecmaVersion": 2018,
10 | "sourceType": "module"
11 | },
12 | "extends": ["airbnb-base"],
13 | "rules": {
14 | "no-shadow": "off",
15 | "no-param-reassign": "off",
16 | "eol-last": "off",
17 | "import/extensions": [ 1, {
18 | "js": "always", "json": "always"
19 | }]
20 | },
21 | "ignorePatterns": [
22 | "dist/",
23 | "build/"
24 | ]
25 | }
--------------------------------------------------------------------------------
/.stylelintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["stylelint-config-standard"],
3 | "plugins": ["stylelint-scss", "stylelint-csstree-validator"],
4 | "rules": {
5 | "at-rule-no-unknown": null,
6 | "scss/at-rule-no-unknown": [
7 | true,
8 | {
9 | "ignoreAtRules": [
10 | "tailwind",
11 | "apply",
12 | "variants",
13 | "responsive",
14 | "screen"
15 | ]
16 | }
17 | ]
18 | },
19 | "csstree/validator": true,
20 | "ignoreFiles": ["build/**", "dist/**", "**/reset*.css", "**/bootstrap*.css"]
21 | }
22 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 MIKE
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/.github/workflows/linters.yml:
--------------------------------------------------------------------------------
1 | name: Linters
2 |
3 | on: pull_request
4 |
5 | env:
6 | FORCE_COLOR: 1
7 |
8 | jobs:
9 | lighthouse:
10 | name: Lighthouse
11 | runs-on: ubuntu-22.04
12 | steps:
13 | - uses: actions/checkout@v3
14 | - uses: actions/setup-node@v3
15 | with:
16 | node-version: "18.x"
17 | - name: Setup Lighthouse
18 | run: npm install -g @lhci/cli@0.11.x
19 | - name: Lighthouse Report
20 | run: lhci autorun --upload.target=temporary-public-storage --collect.staticDistDir=.
21 | webhint:
22 | name: Webhint
23 | runs-on: ubuntu-22.04
24 | steps:
25 | - uses: actions/checkout@v3
26 | - uses: actions/setup-node@v3
27 | with:
28 | node-version: "18.x"
29 | - name: Setup Webhint
30 | run: |
31 | npm install --save-dev hint@7.x
32 | [ -f .hintrc ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/html-css-js/.hintrc
33 | - name: Webhint Report
34 | run: npx hint .
35 | stylelint:
36 | name: Stylelint
37 | runs-on: ubuntu-22.04
38 | steps:
39 | - uses: actions/checkout@v3
40 | - uses: actions/setup-node@v3
41 | with:
42 | node-version: "18.x"
43 | - name: Setup Stylelint
44 | run: |
45 | npm install --save-dev stylelint@13.x stylelint-scss@3.x stylelint-config-standard@21.x stylelint-csstree-validator@1.x
46 | [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/html-css-js/.stylelintrc.json
47 | - name: Stylelint Report
48 | run: npx stylelint "**/*.{css,scss}"
49 | eslint:
50 | name: ESLint
51 | runs-on: ubuntu-22.04
52 | steps:
53 | - uses: actions/checkout@v3
54 | - uses: actions/setup-node@v3
55 | with:
56 | node-version: "18.x"
57 | - name: Setup ESLint
58 | run: |
59 | npm install --save-dev eslint@7.x eslint-config-airbnb-base@14.x eslint-plugin-import@2.x babel-eslint@10.x
60 | [ -f .eslintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/html-css-js/.eslintrc.json
61 | - name: ESLint Report
62 | run: npx eslint .
63 | nodechecker:
64 | name: node_modules checker
65 | runs-on: ubuntu-22.04
66 | steps:
67 | - uses: actions/checkout@v3
68 | - name: Check node_modules existence
69 | run: |
70 | if [ -d "node_modules/" ]; then echo -e "\e[1;31mThe node_modules/ folder was pushed to the repo. Please remove it from the GitHub repository and try again."; echo -e "\e[1;32mYou can set up a .gitignore file with this folder included on it to prevent this from happening in the future." && exit 1; fi
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
",
5 | "main": "index.js",
6 | "type": "module",
7 | "scripts": {
8 | "test": "echo \"Error: no test specified\" && exit 1"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "ISC",
13 | "devDependencies": {
14 | "babel-eslint": "^10.1.0",
15 | "eslint": "^7.32.0",
16 | "eslint-config-airbnb-base": "^14.2.1",
17 | "eslint-plugin-import": "^2.27.5",
18 | "hint": "^7.1.10",
19 | "stylelint": "^13.13.1",
20 | "stylelint-config-standard": "^21.0.0",
21 | "stylelint-csstree-validator": "^1.9.0",
22 | "stylelint-scss": "^3.21.0"
23 | },
24 | "dependencies": {
25 | "abab": "^2.0.6",
26 | "abbrev": "^1.1.1",
27 | "acorn": "^8.8.2",
28 | "acorn-globals": "^7.0.1",
29 | "acorn-jsx": "^5.3.2",
30 | "acorn-jsx-walk": "^2.0.0",
31 | "acorn-walk": "^8.2.0",
32 | "agent-base": "^6.0.2",
33 | "agentkeepalive": "^4.3.0",
34 | "aggregate-error": "^3.1.0",
35 | "ajv": "^8.12.0",
36 | "ajv-formats": "^2.1.1",
37 | "ansi-align": "^3.0.1",
38 | "ansi-colors": "^4.1.3",
39 | "ansi-regex": "^5.0.1",
40 | "ansi-styles": "^4.3.0",
41 | "anymatch": "^3.1.3",
42 | "aproba": "^2.0.0",
43 | "are-we-there-yet": "^2.0.0",
44 | "argparse": "^1.0.10",
45 | "array-buffer-byte-length": "^1.0.0",
46 | "array-includes": "^3.1.6",
47 | "array-union": "^2.1.0",
48 | "array.prototype.flat": "^1.3.1",
49 | "array.prototype.flatmap": "^1.3.1",
50 | "arrify": "^1.0.1",
51 | "ast-types": "^0.13.4",
52 | "astral-regex": "^2.0.0",
53 | "async": "^3.2.4",
54 | "asynckit": "^0.4.0",
55 | "autoprefixer": "^9.8.8",
56 | "available-typed-arrays": "^1.0.5",
57 | "axe-core": "^4.7.2",
58 | "bail": "^1.0.5",
59 | "balanced-match": "^1.0.2",
60 | "base64-js": "^1.5.1",
61 | "bcp47": "^1.1.2",
62 | "binary-extensions": "^2.2.0",
63 | "bl": "^4.1.0",
64 | "boolbase": "^1.0.0",
65 | "boxen": "^5.1.2",
66 | "brace-expansion": "^1.1.11",
67 | "braces": "^3.0.2",
68 | "browserslist": "^4.21.7",
69 | "buffer": "^5.7.1",
70 | "buffer-crc32": "^0.2.13",
71 | "builtins": "^5.0.1",
72 | "bytes": "^3.1.2",
73 | "cacache": "^17.1.3",
74 | "cacheable-lookup": "^5.0.4",
75 | "cacheable-request": "^7.0.4",
76 | "call-bind": "^1.0.2",
77 | "callsites": "^3.1.0",
78 | "camelcase": "^6.3.0",
79 | "camelcase-keys": "^6.2.2",
80 | "caniuse-lite": "^1.0.30001492",
81 | "canvas": "^2.11.2",
82 | "chalk": "^4.1.2",
83 | "character-entities": "^1.2.4",
84 | "character-entities-legacy": "^1.1.4",
85 | "character-reference-invalid": "^1.1.4",
86 | "chokidar": "^3.5.3",
87 | "chownr": "^2.0.0",
88 | "ci-info": "^3.8.0",
89 | "clean-stack": "^2.2.0",
90 | "cli-boxes": "^2.2.1",
91 | "cli-cursor": "^3.1.0",
92 | "cli-spinners": "^2.9.0",
93 | "clone": "^1.0.4",
94 | "clone-regexp": "^2.2.0",
95 | "clone-response": "^1.0.3",
96 | "cloudinary": "^1.37.1",
97 | "cloudinary-core": "^2.13.0",
98 | "color-convert": "^2.0.1",
99 | "color-name": "^1.1.4",
100 | "color-string": "^1.9.1",
101 | "color-support": "^1.1.3",
102 | "combined-stream": "^1.0.8",
103 | "concat-map": "^0.0.1",
104 | "configstore": "^5.0.1",
105 | "confusing-browser-globals": "^1.0.11",
106 | "console-control-strings": "^1.1.0",
107 | "content-type": "^1.0.5",
108 | "convert-source-map": "^1.9.0",
109 | "core-js": "^3.30.2",
110 | "core-util-is": "^1.0.3",
111 | "cosmiconfig": "^7.1.0",
112 | "cross-fetch": "^3.1.5",
113 | "cross-spawn": "^7.0.3",
114 | "crypto-random-string": "^2.0.0",
115 | "css-select": "^4.3.0",
116 | "css-tree": "^1.1.3",
117 | "css-what": "^6.1.0",
118 | "cssesc": "^3.0.0",
119 | "cssstyle": "^3.0.0",
120 | "data-uri-to-buffer": "^4.0.1",
121 | "data-urls": "^3.0.2",
122 | "debug": "^4.3.4",
123 | "decamelize": "^1.2.0",
124 | "decamelize-keys": "^1.1.1",
125 | "decimal.js": "^10.4.3",
126 | "decompress-response": "^6.0.0",
127 | "deep-extend": "^0.6.0",
128 | "deep-is": "^0.1.4",
129 | "defaults": "^1.0.4",
130 | "defer-to-connect": "^2.0.1",
131 | "define-properties": "^1.2.0",
132 | "degenerator": "^3.0.4",
133 | "delayed-stream": "^1.0.0",
134 | "delegates": "^1.0.0",
135 | "depd": "^2.0.0",
136 | "detect-libc": "^2.0.1",
137 | "devtools-protocol": "^0.0.981744",
138 | "dir-glob": "^3.0.1",
139 | "doctrine": "^3.0.0",
140 | "dom-serializer": "^1.4.1",
141 | "domelementtype": "^2.3.0",
142 | "domexception": "^4.0.0",
143 | "domhandler": "^4.3.1",
144 | "domutils": "^2.8.0",
145 | "dot-prop": "^5.3.0",
146 | "duplexer3": "^0.1.5",
147 | "eastasianwidth": "^0.2.0",
148 | "ejs": "^3.1.9",
149 | "electron-to-chromium": "^1.4.418",
150 | "emoji-regex": "^9.2.2",
151 | "encoding": "^0.1.13",
152 | "end-of-stream": "^1.4.4",
153 | "enquirer": "^2.3.6",
154 | "entities": "^2.2.0",
155 | "err-code": "^2.0.3",
156 | "error-ex": "^1.3.2",
157 | "es-abstract": "^1.21.2",
158 | "es-set-tostringtag": "^2.0.1",
159 | "es-shim-unscopables": "^1.0.0",
160 | "es-to-primitive": "^1.2.1",
161 | "escalade": "^3.1.1",
162 | "escape-goat": "^2.1.1",
163 | "escape-string-regexp": "^1.0.5",
164 | "escodegen": "^2.0.0",
165 | "eslint-import-resolver-node": "^0.3.7",
166 | "eslint-module-utils": "^2.8.0",
167 | "eslint-scope": "^5.1.1",
168 | "eslint-utils": "^2.1.0",
169 | "eslint-visitor-keys": "^3.4.1",
170 | "espree": "^7.3.1",
171 | "esprima": "^4.0.1",
172 | "esquery": "^1.5.0",
173 | "esrecurse": "^4.3.0",
174 | "estraverse": "^5.3.0",
175 | "esutils": "^2.0.3",
176 | "eventemitter2": "^6.4.9",
177 | "execa": "^4.1.0",
178 | "execall": "^2.0.0",
179 | "extend": "^3.0.2",
180 | "extract-zip": "^2.0.1",
181 | "fast-deep-equal": "^3.1.3",
182 | "fast-glob": "^3.2.12",
183 | "fast-json-stable-stringify": "^2.1.0",
184 | "fast-levenshtein": "^2.0.6",
185 | "fast-xml-parser": "^4.2.4",
186 | "fastest-levenshtein": "^1.0.16",
187 | "fastq": "^1.15.0",
188 | "fd-slicer": "^1.1.0",
189 | "fetch-blob": "^3.2.0",
190 | "file-entry-cache": "^6.0.1",
191 | "file-type": "^16.5.4",
192 | "file-uri-to-path": "^2.0.0",
193 | "filelist": "^1.0.4",
194 | "fill-range": "^7.0.1",
195 | "find-up": "^4.1.0",
196 | "flat-cache": "^3.0.4",
197 | "flatted": "^3.2.7",
198 | "for-each": "^0.3.3",
199 | "foreground-child": "^3.1.1",
200 | "form-data": "^4.0.0",
201 | "formdata-polyfill": "^4.0.10",
202 | "fs-constants": "^1.0.0",
203 | "fs-extra": "^11.1.1",
204 | "fs-minipass": "^3.0.2",
205 | "fs.realpath": "^1.0.0",
206 | "ftp": "^0.3.10",
207 | "function-bind": "^1.1.1",
208 | "function.prototype.name": "^1.1.5",
209 | "functional-red-black-tree": "^1.0.1",
210 | "functions-have-names": "^1.2.3",
211 | "gauge": "^3.0.2",
212 | "gensync": "^1.0.0-beta.2",
213 | "get-intrinsic": "^1.2.1",
214 | "get-stdin": "^8.0.0",
215 | "get-stream": "^5.2.0",
216 | "get-symbol-description": "^1.0.0",
217 | "get-uri": "^3.0.2",
218 | "glob": "^10.2.7",
219 | "glob-parent": "^5.1.2",
220 | "global-dirs": "^3.0.1",
221 | "global-modules": "^2.0.0",
222 | "global-prefix": "^3.0.0",
223 | "globals": "^11.12.0",
224 | "globalthis": "^1.0.3",
225 | "globby": "^11.1.0",
226 | "globjoin": "^0.1.4",
227 | "gonzales-pe": "^4.3.0",
228 | "gopd": "^1.0.1",
229 | "got": "^11.8.6",
230 | "graceful-fs": "^4.2.11",
231 | "hard-rejection": "^2.1.0",
232 | "has": "^1.0.3",
233 | "has-bigints": "^1.0.2",
234 | "has-flag": "^4.0.0",
235 | "has-property-descriptors": "^1.0.0",
236 | "has-proto": "^1.0.1",
237 | "has-symbols": "^1.0.3",
238 | "has-tostringtag": "^1.0.0",
239 | "has-unicode": "^2.0.1",
240 | "has-yarn": "^2.1.0",
241 | "hosted-git-info": "^6.1.1",
242 | "html-encoding-sniffer": "^3.0.0",
243 | "html-tags": "^3.3.1",
244 | "htmlparser2": "^3.10.1",
245 | "http-cache-semantics": "^4.1.1",
246 | "http-errors": "^2.0.0",
247 | "http-proxy-agent": "^5.0.0",
248 | "http2-wrapper": "^1.0.3",
249 | "https": "^1.0.0",
250 | "https-proxy-agent": "^5.0.1",
251 | "human-signals": "^1.1.1",
252 | "humanize-ms": "^1.2.1",
253 | "iconv-lite": "^0.6.3",
254 | "ieee754": "^1.2.1",
255 | "ignore": "^5.2.4",
256 | "image-size": "^1.0.2",
257 | "import-fresh": "^3.3.0",
258 | "import-lazy": "^2.1.0",
259 | "imurmurhash": "^0.1.4",
260 | "indent-string": "^4.0.0",
261 | "inflight": "^1.0.6",
262 | "inherits": "^2.0.4",
263 | "ini": "^2.0.0",
264 | "internal-slot": "^1.0.5",
265 | "invert-kv": "^3.0.1",
266 | "ip": "^1.1.8",
267 | "is-alphabetical": "^1.0.4",
268 | "is-alphanumerical": "^1.0.4",
269 | "is-array-buffer": "^3.0.2",
270 | "is-arrayish": "^0.3.2",
271 | "is-bigint": "^1.0.4",
272 | "is-binary-path": "^2.1.0",
273 | "is-boolean-object": "^1.1.2",
274 | "is-buffer": "^2.0.5",
275 | "is-callable": "^1.2.7",
276 | "is-ci": "^3.0.1",
277 | "is-core-module": "^2.12.1",
278 | "is-date-object": "^1.0.5",
279 | "is-decimal": "^1.0.4",
280 | "is-docker": "^2.2.1",
281 | "is-extglob": "^2.1.1",
282 | "is-fullwidth-code-point": "^3.0.0",
283 | "is-glob": "^4.0.3",
284 | "is-hexadecimal": "^1.0.4",
285 | "is-installed-globally": "^0.4.0",
286 | "is-interactive": "^1.0.0",
287 | "is-lambda": "^1.0.1",
288 | "is-negative-zero": "^2.0.2",
289 | "is-npm": "^5.0.0",
290 | "is-number": "^7.0.0",
291 | "is-number-object": "^1.0.7",
292 | "is-obj": "^2.0.0",
293 | "is-path-inside": "^3.0.3",
294 | "is-plain-obj": "^1.1.0",
295 | "is-potential-custom-element-name": "^1.0.1",
296 | "is-regex": "^1.1.4",
297 | "is-regexp": "^2.1.0",
298 | "is-shared-array-buffer": "^1.0.2",
299 | "is-stream": "^2.0.1",
300 | "is-string": "^1.0.7",
301 | "is-svg": "^4.4.0",
302 | "is-symbol": "^1.0.4",
303 | "is-typed-array": "^1.1.10",
304 | "is-typedarray": "^1.0.0",
305 | "is-unicode-supported": "^0.1.0",
306 | "is-weakref": "^1.0.2",
307 | "is-wsl": "^2.2.0",
308 | "is-yarn-global": "^0.3.0",
309 | "isarray": "^0.0.1",
310 | "isexe": "^2.0.0",
311 | "jackspeak": "^2.2.1",
312 | "jake": "^10.8.7",
313 | "js-library-detector": "^6.6.0",
314 | "js-tokens": "^4.0.0",
315 | "js-yaml": "^3.14.1",
316 | "jsdom": "^21.1.2",
317 | "jsesc": "^2.5.2",
318 | "json-buffer": "^3.0.1",
319 | "json-parse-even-better-errors": "^2.3.1",
320 | "json-schema-traverse": "^1.0.0",
321 | "json-stable-stringify-without-jsonify": "^1.0.1",
322 | "json5": "^2.2.3",
323 | "jsonc-parser": "^3.2.0",
324 | "jsonfile": "^6.1.0",
325 | "jsonparse": "^1.3.1",
326 | "keyv": "^4.5.2",
327 | "kind-of": "^6.0.3",
328 | "known-css-properties": "^0.21.0",
329 | "latest-version": "^5.1.0",
330 | "lcid": "^3.1.1",
331 | "levn": "^0.4.1",
332 | "lines-and-columns": "^1.2.4",
333 | "locate-path": "^5.0.0",
334 | "lockfile": "^1.0.4",
335 | "lodash": "^4.17.21",
336 | "lodash.merge": "^4.6.2",
337 | "lodash.truncate": "^4.4.2",
338 | "log-symbols": "^4.1.0",
339 | "longest-streak": "^2.0.4",
340 | "lowercase-keys": "^2.0.0",
341 | "lru-cache": "^7.18.3",
342 | "make-dir": "^3.1.0",
343 | "make-fetch-happen": "^11.1.1",
344 | "map-age-cleaner": "^0.1.3",
345 | "map-obj": "^4.3.0",
346 | "mathml-tag-names": "^2.1.3",
347 | "mdast-util-from-markdown": "^0.8.5",
348 | "mdast-util-to-markdown": "^0.6.5",
349 | "mdast-util-to-string": "^2.0.0",
350 | "mdn-data": "^2.0.32",
351 | "mem": "^5.1.1",
352 | "meow": "^9.0.0",
353 | "merge-stream": "^2.0.0",
354 | "merge2": "^1.4.1",
355 | "metaviewport-parser": "^0.3.0",
356 | "micromark": "^2.11.4",
357 | "micromatch": "^4.0.5",
358 | "mime-db": "^1.52.0",
359 | "mime-types": "^2.1.35",
360 | "mimic-fn": "^2.1.0",
361 | "mimic-response": "^1.0.1",
362 | "min-indent": "^1.0.1",
363 | "minimatch": "^3.1.2",
364 | "minimist": "^1.2.8",
365 | "minimist-options": "^4.1.0",
366 | "minipass": "^5.0.0",
367 | "minipass-collect": "^1.0.2",
368 | "minipass-fetch": "^3.0.3",
369 | "minipass-flush": "^1.0.5",
370 | "minipass-json-stream": "^1.0.1",
371 | "minipass-pipeline": "^1.2.4",
372 | "minipass-sized": "^1.0.3",
373 | "minizlib": "^2.1.2",
374 | "mkdirp": "^1.0.4",
375 | "mkdirp-classic": "^0.5.3",
376 | "ms": "^2.1.2",
377 | "mutationobserver-shim": "^0.3.7",
378 | "nan": "^2.17.0",
379 | "nanoid": "^3.3.6",
380 | "natural-compare": "^1.4.0",
381 | "negotiator": "^0.6.3",
382 | "netmask": "^2.0.2",
383 | "node-domexception": "^1.0.0",
384 | "node-fetch": "^3.3.1",
385 | "node-releases": "^2.0.12",
386 | "nopt": "^5.0.0",
387 | "normalize-package-data": "^3.0.3",
388 | "normalize-path": "^3.0.0",
389 | "normalize-range": "^0.1.2",
390 | "normalize-selector": "^0.2.0",
391 | "normalize-url": "^6.1.0",
392 | "npm-package-arg": "^10.1.0",
393 | "npm-registry-fetch": "^14.0.5",
394 | "npm-run-path": "^4.0.1",
395 | "npmlog": "^5.0.1",
396 | "nth-check": "^2.1.1",
397 | "num2fraction": "^1.2.2",
398 | "nwsapi": "^2.2.5",
399 | "object-assign": "^4.1.1",
400 | "object-inspect": "^1.12.3",
401 | "object-keys": "^1.1.1",
402 | "object.assign": "^4.1.4",
403 | "object.entries": "^1.1.6",
404 | "object.values": "^1.1.6",
405 | "once": "^1.4.0",
406 | "onetime": "^5.1.2",
407 | "optionator": "^0.9.1",
408 | "ora": "^5.4.1",
409 | "os-locale": "^5.0.0",
410 | "p-cancelable": "^2.1.1",
411 | "p-defer": "^1.0.0",
412 | "p-is-promise": "^2.1.0",
413 | "p-limit": "^2.3.0",
414 | "p-locate": "^4.1.0",
415 | "p-map": "^4.0.0",
416 | "p-try": "^2.2.0",
417 | "pac-proxy-agent": "^5.0.0",
418 | "pac-resolver": "^5.0.1",
419 | "package-json": "^6.5.0",
420 | "parent-module": "^1.0.1",
421 | "parse-entities": "^2.0.0",
422 | "parse-json": "^5.2.0",
423 | "parse5": "^6.0.1",
424 | "parse5-htmlparser2-tree-adapter": "^6.0.1",
425 | "path-exists": "^4.0.0",
426 | "path-is-absolute": "^1.0.1",
427 | "path-key": "^3.1.1",
428 | "path-parse": "^1.0.7",
429 | "path-scurry": "^1.9.2",
430 | "path-type": "^4.0.0",
431 | "peek-readable": "^4.1.0",
432 | "pend": "^1.2.0",
433 | "picocolors": "^1.0.0",
434 | "picomatch": "^2.3.1",
435 | "pkg-dir": "^4.2.0",
436 | "postcss": "^8.4.24",
437 | "postcss-html": "^0.36.0",
438 | "postcss-less": "^5.0.0",
439 | "postcss-media-query-parser": "^0.2.3",
440 | "postcss-resolve-nested-selector": "^0.1.1",
441 | "postcss-safe-parser": "^6.0.0",
442 | "postcss-sass": "^0.5.0",
443 | "postcss-scss": "^4.0.6",
444 | "postcss-selector-parser": "^6.0.13",
445 | "postcss-syntax": "^0.36.2",
446 | "postcss-value-parser": "^4.2.0",
447 | "prelude-ls": "^1.2.1",
448 | "prepend-http": "^2.0.0",
449 | "proc-log": "^3.0.0",
450 | "progress": "^2.0.3",
451 | "promise-retry": "^2.0.1",
452 | "proxy-agent": "^5.0.0",
453 | "proxy-from-env": "^1.1.0",
454 | "psl": "^1.9.0",
455 | "pump": "^3.0.0",
456 | "punycode": "^2.3.0",
457 | "pupa": "^2.1.1",
458 | "puppeteer-core": "^13.7.0",
459 | "q": "^1.5.1",
460 | "querystringify": "^2.2.0",
461 | "queue": "^6.0.2",
462 | "queue-microtask": "^1.2.3",
463 | "quick-lru": "^5.1.1",
464 | "raw-body": "^2.5.2",
465 | "rc": "^1.2.8",
466 | "read-pkg": "^5.2.0",
467 | "read-pkg-up": "^7.0.1",
468 | "readable-stream": "^3.6.2",
469 | "readable-web-to-node-stream": "^3.0.2",
470 | "readdirp": "^3.6.0",
471 | "redent": "^3.0.0",
472 | "regexp.prototype.flags": "^1.5.0",
473 | "regexpp": "^3.2.0",
474 | "registry-auth-token": "^4.2.2",
475 | "registry-url": "^5.1.0",
476 | "remark": "^13.0.0",
477 | "remark-parse": "^9.0.0",
478 | "remark-stringify": "^9.0.1",
479 | "repeat-string": "^1.6.1",
480 | "require-from-string": "^2.0.2",
481 | "requires-port": "^1.0.0",
482 | "resolve": "^1.22.2",
483 | "resolve-alpn": "^1.2.1",
484 | "resolve-from": "^5.0.0",
485 | "responselike": "^2.0.1",
486 | "restore-cursor": "^3.1.0",
487 | "retry": "^0.12.0",
488 | "reusify": "^1.0.4",
489 | "rimraf": "^3.0.2",
490 | "rrweb-cssom": "^0.6.0",
491 | "run-parallel": "^1.2.0",
492 | "safe-buffer": "^5.2.1",
493 | "safe-regex-test": "^1.0.0",
494 | "safer-buffer": "^2.1.2",
495 | "saxes": "^6.0.0",
496 | "semver": "^7.5.1",
497 | "semver-diff": "^3.1.1",
498 | "set-blocking": "^2.0.0",
499 | "setimmediate": "^1.0.5",
500 | "setprototypeof": "^1.2.0",
501 | "shebang-command": "^2.0.0",
502 | "shebang-regex": "^3.0.0",
503 | "side-channel": "^1.0.4",
504 | "signal-exit": "^3.0.7",
505 | "simple-concat": "^1.0.1",
506 | "simple-get": "^3.1.1",
507 | "simple-swizzle": "^0.2.2",
508 | "slash": "^3.0.0",
509 | "slice-ansi": "^4.0.0",
510 | "smart-buffer": "^4.2.0",
511 | "socks": "^2.7.1",
512 | "socks-proxy-agent": "^7.0.0",
513 | "source-map": "^0.6.1",
514 | "source-map-js": "^1.0.2",
515 | "spdx-correct": "^3.2.0",
516 | "spdx-exceptions": "^2.3.0",
517 | "spdx-expression-parse": "^3.0.1",
518 | "spdx-license-ids": "^3.0.13",
519 | "specificity": "^0.4.1",
520 | "sprintf-js": "^1.0.3",
521 | "ssri": "^10.0.4",
522 | "statuses": "^2.0.1",
523 | "string_decoder": "^1.3.0",
524 | "string-width": "^5.1.2",
525 | "string-width-cjs": "^4.2.3",
526 | "string.prototype.trim": "^1.2.7",
527 | "string.prototype.trimend": "^1.0.6",
528 | "string.prototype.trimstart": "^1.0.6",
529 | "strip-ansi": "^6.0.1",
530 | "strip-ansi-cjs": "^6.0.1",
531 | "strip-bom": "^3.0.0",
532 | "strip-final-newline": "^2.0.0",
533 | "strip-indent": "^3.0.0",
534 | "strip-json-comments": "^2.0.1",
535 | "strnum": "^1.0.5",
536 | "strtok3": "^6.3.0",
537 | "style-search": "^0.1.0",
538 | "stylelint-config-recommended": "^4.0.0",
539 | "sugarss": "^2.0.0",
540 | "supports-color": "^7.2.0",
541 | "supports-preserve-symlinks-flag": "^1.0.0",
542 | "svg-tags": "^1.0.0",
543 | "symbol-tree": "^3.2.4",
544 | "table": "^6.8.1",
545 | "tar": "^6.1.15",
546 | "tar-fs": "^2.1.1",
547 | "tar-stream": "^2.2.0",
548 | "text-table": "^0.2.0",
549 | "through": "^2.3.8",
550 | "to-fast-properties": "^2.0.0",
551 | "to-readable-stream": "^1.0.0",
552 | "to-regex-range": "^5.0.1",
553 | "toidentifier": "^1.0.1",
554 | "token-types": "^4.2.1",
555 | "tough-cookie": "^4.1.3",
556 | "tr46": "^3.0.0",
557 | "trim-newlines": "^3.0.1",
558 | "trough": "^1.0.5",
559 | "tsconfig-paths": "^3.14.2",
560 | "tslib": "^2.5.3",
561 | "tsutils": "^3.21.0",
562 | "type-check": "^0.4.0",
563 | "type-fest": "^0.20.2",
564 | "typed-array-length": "^1.0.4",
565 | "typedarray-to-buffer": "^3.1.5",
566 | "typescript": "^5.1.3",
567 | "unbox-primitive": "^1.0.2",
568 | "unbzip2-stream": "^1.4.3",
569 | "unified": "^9.2.2",
570 | "unique-filename": "^3.0.0",
571 | "unique-slug": "^4.0.0",
572 | "unique-string": "^2.0.0",
573 | "unist-util-find-all-after": "^3.0.2",
574 | "unist-util-is": "^4.1.0",
575 | "unist-util-stringify-position": "^2.0.3",
576 | "universalify": "^2.0.0",
577 | "unpipe": "^1.0.0",
578 | "update-browserslist-db": "^1.0.11",
579 | "update-notifier": "^5.1.0",
580 | "uri-js": "^4.4.1",
581 | "url-parse": "^1.5.10",
582 | "url-parse-lax": "^3.0.0",
583 | "util-deprecate": "^1.0.2",
584 | "v8-compile-cache": "^2.3.0",
585 | "validate-npm-package-license": "^3.0.4",
586 | "validate-npm-package-name": "^5.0.0",
587 | "vfile": "^4.2.1",
588 | "vfile-message": "^2.0.4",
589 | "vm2": "^3.9.19",
590 | "w3c-xmlserializer": "^4.0.0",
591 | "wcwidth": "^1.0.1",
592 | "web-streams-polyfill": "^3.2.1",
593 | "webidl-conversions": "^7.0.0",
594 | "whatwg-encoding": "^2.0.0",
595 | "whatwg-mimetype": "^3.0.0",
596 | "whatwg-url": "^11.0.0",
597 | "which": "^2.0.2",
598 | "which-boxed-primitive": "^1.0.2",
599 | "which-typed-array": "^1.1.9",
600 | "wide-align": "^1.1.5",
601 | "widest-line": "^3.1.0",
602 | "word-wrap": "^1.2.3",
603 | "wrap-ansi": "^8.1.0",
604 | "wrap-ansi-cjs": "^7.0.0",
605 | "wrappy": "^1.0.2",
606 | "write-file-atomic": "^3.0.3",
607 | "ws": "^8.13.0",
608 | "xdg-basedir": "^4.0.0",
609 | "xml-name-validator": "^4.0.0",
610 | "xmlchars": "^2.2.0",
611 | "xregexp": "^2.0.0",
612 | "yallist": "^4.0.0",
613 | "yaml": "^1.10.2",
614 | "yargs-parser": "^20.2.9",
615 | "yauzl": "^2.10.0",
616 | "zwitch": "^1.0.5"
617 | }
618 | }
619 |
--------------------------------------------------------------------------------
/images/Header-llustration-desktop.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
--------------------------------------------------------------------------------