Compare commits

..

396 Commits

Author SHA1 Message Date
97fa1a5b4e dockerfile 2026-07-17 07:32:10 +00:00
9f6527007b fix ver 2026-07-17 07:13:42 +00:00
d052221f24 fix ver 2026-07-17 07:12:37 +00:00
2af2d6a2c5 render splash info from db 2026-07-17 07:09:37 +00:00
180dfe0366 replaced disqus with remark42 2026-03-17 16:27:42 +03:00
04895f540a readme 2026-02-25 14:20:21 +03:00
4cd23b6064 readme 2026-02-25 14:19:00 +03:00
9611adb2e0 dockerized 2026-02-25 14:02:13 +03:00
adf3238fe3 routing fixed 2026-02-25 10:02:06 +03:00
f3e4b3b9d8 sitemap 2026-02-25 08:11:32 +03:00
eca47d8ce3 fix rss link in footer 2026-02-24 23:04:43 +03:00
80236b839a sitemap 2026-02-24 22:48:37 +03:00
b1b6b5eb15 upd sitemap 2026-02-24 20:50:26 +03:00
92dc8ae213 rss 2026-02-24 15:42:47 +03:00
9f7b9d4ec2 fixed types 2026-02-24 14:31:09 +03:00
c41a54072b upd 2026-02-23 21:03:12 +03:00
515302fed3 upd 2026-01-21 23:17:09 +03:00
d8d812a282 types fix + limit recent articles 2025-12-18 23:32:23 +03:00
0e951d2aca optimized fetch calls 2025-12-18 22:45:53 +03:00
5051a6a6ca anchor links + toc 2025-12-18 22:22:21 +03:00
00d32bb002 replaced with markdown-to 2025-12-18 18:34:56 +03:00
838a74c086 contacts form 2025-12-18 11:37:37 +03:00
26e6276b23 added website contacts from directus 2025-12-17 23:25:21 +03:00
c371e3dba4 allow html in markdown 2025-12-17 23:02:37 +03:00
4d9ec73f40 incrementing article views 2025-12-17 11:47:36 +03:00
2f2dea8d0b projects list render 2025-12-17 09:42:25 +03:00
ed743b23c5 about page & rss 2025-12-17 00:27:47 +03:00
5dcb790ff1 upd 2025-11-24 16:33:27 +03:00
e03cd19a78 graphql codegen 2025-11-23 21:27:00 +03:00
a4576db438 fix articles list component 2025-11-23 15:37:29 +03:00
c5d7b7a7ba upd 2025-11-20 16:28:31 +03:00
35806aa60d fixes 2025-11-18 22:49:03 +03:00
d40d8bb730 article page 2025-11-18 15:01:27 +03:00
6d9809f4e1 upd 2025-11-18 07:15:02 +03:00
eb3bb55fca query recent articles 2025-11-17 16:26:14 +03:00
d0bfccd42f relative article link 2025-11-16 21:55:01 +03:00
a9061822f0 directus setup 2025-11-16 21:09:06 +03:00
8b26bc8bbc added material design icons 2025-06-08 21:28:42 +03:00
6f4e0d4d39
Merge pull request #239 from sergeyyarkov/cms/projects/educt
Automatically generated. Merged on Decap CMS.
2025-06-06 21:54:12 +03:00
ff1cdb8537
Merge pull request #240 from sergeyyarkov/cms/projects/node-docker-example
Automatically generated. Merged on Decap CMS.
2025-06-06 21:54:06 +03:00
edb1c0e469
Merge pull request #238 from sergeyyarkov/cms/projects/digital-store
Automatically generated. Merged on Decap CMS.
2025-06-06 21:53:50 +03:00
180631a0b6 Update проект “node-docker-example” 2025-06-06 21:52:20 +03:00
b772ed63db Update проект “digital-store” 2025-06-06 21:51:55 +03:00
89796647b0 Update проект “educt” 2025-06-06 21:51:07 +03:00
28e7eb20a9 Update проект “node-docker-example” 2025-06-06 21:49:47 +03:00
8ee4eea5ca Update проект “educt” 2025-06-06 21:49:19 +03:00
e210613332 Update проект “digital-store” 2025-06-06 21:48:56 +03:00
89f9d2e017 Merge branch 'develop' 2025-06-02 15:30:54 +03:00
bbc5f0bb0b cms config 2025-06-02 15:30:33 +03:00
aad8afbf44 Merge branch 'develop' 2025-06-02 14:47:17 +03:00
bb619c3182 fix deps 2025-06-02 14:46:41 +03:00
661f450540 Merge branch 'main' of github.com:sergeyyarkov/yarkov.tech 2025-06-02 14:29:57 +03:00
2a5367619f decap cms 2025-06-02 14:28:43 +03:00
69473cef56 Update Настройки “siteconfig” 2025-06-02 14:26:38 +03:00
4f4f7fec95 Update Настройки “siteconfig” 2025-06-02 14:25:47 +03:00
63909d59ba upgrade astro-icon to v1 2025-06-02 13:58:42 +03:00
a496f44cc0 Merge remote-tracking branch 'origin/main' into develop 2025-06-02 11:51:24 +03:00
864c0aeb2f ts fixes 2025-06-02 11:51:18 +03:00
53ed8f60d5 Update автора “сергей-ярков” 2025-02-02 00:05:34 +03:00
15c5ff6dde Update автора “сергей-ярков” 2025-02-01 23:59:29 +03:00
36dce21d41 Update автора “сергей-ярков” 2025-02-01 23:53:36 +03:00
5a56ba5968 Update автора “сергей-ярков” 2025-02-01 23:48:53 +03:00
ff6b5db6d4 Update проект “web-serial-example” 2025-01-30 22:28:27 +03:00
454b222318 Update навык “языки” 2025-01-30 21:16:02 +03:00
4ab909447b Delete проект “devthread” 2024-12-17 23:17:12 +03:00
7b50e97718 Update публикацию “реализация-задержек-в-avr-микроконтроллере” 2023-10-25 17:52:47 +03:00
61001cbb38 Update публикацию “реализация-задержек-в-avr-микроконтроллере” 2023-10-15 21:30:59 +03:00
9e86500cda Update публикацию “реализация-задержек-в-avr-микроконтроллере” 2023-10-15 21:29:30 +03:00
a07ca36741 Create тэг “microcontrollers” 2023-10-15 21:29:02 +03:00
d47e00762f
upd 2023-10-15 20:41:50 +03:00
64a011b4cc Create публикацию “реализация-задержек-в-avr-микроконтроллере” 2023-10-15 19:32:55 +03:00
85a9f3698d Upload “public/media/screen-3.png” 2023-10-15 19:28:25 +03:00
6aa4c28272 Upload “public/media/screen-2.png” 2023-10-15 19:28:16 +03:00
b0ffbc9478 Upload “public/media/screen-1.png” 2023-10-15 19:28:10 +03:00
f57f1f8e07 Upload “public/media/mplabx-ide-sim-option.png” 2023-10-15 19:27:59 +03:00
e6e3a12567
redirect 2023-10-05 21:52:42 +03:00
47c3c1e451
Merge branch 'main' of https://github.com/sergeyyarkov/yarkov.tech into main 2023-10-05 21:50:08 +03:00
e37187c241
Merge branch 'develop' into main 2023-10-05 21:49:44 +03:00
f9f8188cc8
redirect 2023-10-05 21:49:36 +03:00
6283dcc3ea Create проект “thermometer” 2023-10-05 21:40:39 +03:00
0a247f7e8f
del 2023-10-05 21:29:13 +03:00
741e372954
Merge branch 'develop' into main 2023-10-05 21:24:09 +03:00
2d03b0c484
upd deps 2023-10-05 21:23:11 +03:00
9722886413 Create публикацию “test” 2023-09-29 15:43:33 +03:00
df1d7ea0be
tsconfig 2023-09-28 19:44:16 +03:00
7db6593ddb
upd deps & compress html 2023-05-29 08:01:52 +03:00
2ee0fd6904
Merge tag 'v2.1.0' into develop
Release v2.1.0
2023-04-16 22:28:26 +03:00
27078bcdc0
Merge branch 'release/2.1.0' into main 2023-04-16 22:27:51 +03:00
90e8b7434e
bump ver & readme 2023-04-16 22:27:40 +03:00
464b6c5c9c
feat: added table of contents 2023-04-16 22:26:01 +03:00
f9d9c7f611
fix sharp ver 2023-04-14 22:53:46 +03:00
56132501cd
upd deps + build toc 2023-04-14 22:47:33 +03:00
69af4e882d
upd deps 2023-03-24 22:18:53 +03:00
bd77867971
del console.log 2023-02-27 23:18:30 +03:00
2b0adea120
views counter fix 2023-02-27 23:18:13 +03:00
cb8d5b3c6a
dependabot 2023-02-23 14:09:27 +03:00
d3190b746c
upd deps 2023-02-23 14:07:56 +03:00
2662a4afc7
fix tags 2023-02-22 20:07:39 +03:00
581dbf8c89 Create тэг “web-development” 2023-02-22 19:53:25 +03:00
4a7eebacc0
redirect 2023-02-22 19:49:12 +03:00
acb73bcbd6
Merge branch 'develop' into main 2023-02-22 19:40:52 +03:00
e35790f950
cfg 2023-02-22 19:39:27 +03:00
8b2e2090df
Merge pull request #169 from sergeyyarkov/develop
Version 2.0.0
2023-02-22 19:33:38 +03:00
1aa0f8ee8f
readme 2023-02-22 19:27:57 +03:00
6a317e1779 Update публикацию “управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру” 2023-02-22 19:18:18 +03:00
d8f369777f Update публикацию “управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру” 2023-02-22 19:16:14 +03:00
450b2b6f45
upd content 2023-02-22 19:14:56 +03:00
465f3b00cc Update публикацию “управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру” 2023-02-22 18:01:33 +03:00
dce45f60ea
cfg 2023-02-22 17:49:42 +03:00
6ab0c810a0
netlify cms config 2023-02-22 17:47:29 +03:00
6ded081656
tag fix 2023-02-22 17:46:11 +03:00
94ebc3daa4
fix css 2023-02-22 17:42:45 +03:00
454a82126e
refactor 2023-02-22 17:37:33 +03:00
d68a57be41
fix slug 2023-02-21 22:55:54 +03:00
87ece33516
search articles 2023-02-21 22:39:31 +03:00
25c37af405
render article items 2023-02-21 18:53:43 +03:00
43950ae134
refactor 2023-02-18 23:39:27 +03:00
60c6bb5505
yametrika 2023-02-18 19:36:39 +03:00
a334a67b03
recent articles render 2023-02-18 18:53:19 +03:00
c311050b65
translate pages 2023-02-18 14:09:31 +03:00
cb0ae84515
i18n 2023-02-18 13:01:19 +03:00
998a229d7a
refactored header 2023-02-17 21:53:23 +03:00
f1dcbb536a
refactor 2023-02-17 21:38:39 +03:00
2c28b35277
projects page 2023-02-17 21:25:13 +03:00
943a074058
refactor 0_0 2023-02-17 20:48:22 +03:00
001e8eba08
cms skills config 2023-02-14 21:53:49 +03:00
d0f6e50f99
views 2023-02-13 23:06:04 +03:00
2dbf994ec6
cms config 2023-02-13 23:00:29 +03:00
598afe2e32
copied netlify files 2023-02-12 20:00:56 +03:00
3d80619a1a
added netlify cms 2023-02-12 19:56:27 +03:00
2b839437a9
setup 2023-02-11 21:54:31 +03:00
80f5f1f3d8
readme 2023-02-11 15:59:43 +03:00
b9ddddaab9
initialized with blog template 2023-02-11 15:44:04 +03:00
998e61c4ef
delete all 2023-02-11 15:40:47 +03:00
bb7a989578
readme 2023-02-11 15:37:27 +03:00
a373337aeb
disqus comment system 2023-02-08 22:54:15 +03:00
4d547672cc
Merge branch 'main' of https://github.com/sergeyyarkov/yarkov.tech into main 2023-02-03 20:09:36 +03:00
c32d9510dc
Upd Content 2023-02-03 20:07:49 +03:00
50a1c499a9
Merge pull request #154 from sergeyyarkov/develop
upd deps
2023-02-03 19:43:07 +03:00
9eab478caa
upd deps 2023-02-03 19:36:46 +03:00
271db0be78
Merge pull request #132 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.48.1
Bump @typescript-eslint/parser from 5.47.0 to 5.48.1
2023-01-13 13:39:04 +03:00
dependabot[bot]
95825d7e68
Bump @typescript-eslint/parser from 5.47.0 to 5.48.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.47.0 to 5.48.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.48.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 10:38:28 +00:00
972cfc99da
Merge pull request #133 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.9.2
Bump astro from 1.7.2 to 1.9.2
2023-01-13 13:37:22 +03:00
dependabot[bot]
1679b4fa61
Bump astro from 1.7.2 to 1.9.2
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.7.2 to 1.9.2.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/astro@1.9.2/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.9.2/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 10:36:58 +00:00
9888f67c30
Merge pull request #131 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.48.1
Bump @typescript-eslint/eslint-plugin from 5.47.0 to 5.48.1
2023-01-13 13:36:55 +03:00
5ee217d7d9
Merge pull request #134 from sergeyyarkov/dependabot/npm_and_yarn/develop/solid-js-1.6.9
Bump solid-js from 1.6.6 to 1.6.9
2023-01-13 13:36:44 +03:00
5f5b305a1c
Merge pull request #128 from sergeyyarkov/dependabot/npm_and_yarn/develop/netlify/functions-1.4.0
Bump @netlify/functions from 1.3.0 to 1.4.0
2023-01-13 13:36:28 +03:00
dependabot[bot]
7b561f6c38
Bump solid-js from 1.6.6 to 1.6.9
Bumps [solid-js](https://github.com/solidjs/solid) from 1.6.6 to 1.6.9.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/commits)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 10:36:26 +00:00
0c3ae13a38
Merge pull request #119 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/mdx-0.14.0
Bump @astrojs/mdx from 0.13.0 to 0.14.0
2023-01-13 13:36:15 +03:00
dependabot[bot]
6c07aac76f
Bump @astrojs/mdx from 0.13.0 to 0.14.0
Bumps [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) from 0.13.0 to 0.14.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@0.14.0/packages/integrations/mdx)

---
updated-dependencies:
- dependency-name: "@astrojs/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 10:36:09 +00:00
c53c320f1a
Merge pull request #126 from sergeyyarkov/dependabot/npm_and_yarn/develop/prettier-plugin-astro-0.7.2
Bump prettier-plugin-astro from 0.7.0 to 0.7.2
2023-01-13 13:36:00 +03:00
18bb097692
Merge pull request #129 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-8.31.0
Bump eslint from 8.30.0 to 8.31.0
2023-01-13 13:35:39 +03:00
cd1e143c81
Merge pull request #127 from sergeyyarkov/dependabot/npm_and_yarn/develop/hastscript-7.2.0
Bump hastscript from 7.1.0 to 7.2.0
2023-01-13 13:35:09 +03:00
d115a569cd
Merge pull request #121 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/rss-2.0.0
Bump @astrojs/rss from 1.2.1 to 2.0.0
2023-01-13 13:34:50 +03:00
dependabot[bot]
cece623ef1
Bump @typescript-eslint/eslint-plugin from 5.47.0 to 5.48.1
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.47.0 to 5.48.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.48.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 07:03:38 +00:00
dependabot[bot]
773bdae976
Bump eslint from 8.30.0 to 8.31.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.30.0 to 8.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.30.0...v8.31.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 07:04:48 +00:00
dependabot[bot]
c713dda52a
Bump @netlify/functions from 1.3.0 to 1.4.0
Bumps [@netlify/functions](https://github.com/netlify/functions) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/netlify/functions/releases)
- [Changelog](https://github.com/netlify/functions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/netlify/functions/compare/v1.3.0...v1.4.0)

---
updated-dependencies:
- dependency-name: "@netlify/functions"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 07:04:17 +00:00
dependabot[bot]
485a6a5183
Bump hastscript from 7.1.0 to 7.2.0
Bumps [hastscript](https://github.com/syntax-tree/hastscript) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/syntax-tree/hastscript/releases)
- [Commits](https://github.com/syntax-tree/hastscript/compare/7.1.0...7.2.0)

---
updated-dependencies:
- dependency-name: hastscript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 07:03:55 +00:00
dependabot[bot]
db9db18096
Bump prettier-plugin-astro from 0.7.0 to 0.7.2
Bumps [prettier-plugin-astro](https://github.com/withastro/prettier-plugin-astro) from 0.7.0 to 0.7.2.
- [Release notes](https://github.com/withastro/prettier-plugin-astro/releases)
- [Changelog](https://github.com/withastro/prettier-plugin-astro/blob/main/CHANGELOG.md)
- [Commits](https://github.com/withastro/prettier-plugin-astro/compare/v0.7.0...v0.7.2)

---
updated-dependencies:
- dependency-name: prettier-plugin-astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 07:03:32 +00:00
dependabot[bot]
2260570092
Bump @astrojs/rss from 1.2.1 to 2.0.0
Bumps [@astrojs/rss](https://github.com/withastro/astro/tree/HEAD/packages/astro-rss) from 1.2.1 to 2.0.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro-rss/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/rss@2.0.0/packages/astro-rss)

---
updated-dependencies:
- dependency-name: "@astrojs/rss"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-30 07:02:42 +00:00
0563b8832b
0 2022-12-23 21:31:15 +03:00
7e449000da
Update content 2022-12-23 21:30:50 +03:00
9b96539737
fix href in ArticlItem component 2022-12-23 21:07:07 +03:00
c22d5db80c
Merge pull request #115 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.47.0
Bump @typescript-eslint/parser from 5.46.0 to 5.47.0
2022-12-23 20:15:17 +03:00
dependabot[bot]
6ce89ca5f9
Bump @typescript-eslint/parser from 5.46.0 to 5.47.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.46.0 to 5.47.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.47.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 17:14:59 +00:00
b41f02884c
Merge pull request #113 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-8.30.0
Bump eslint from 8.29.0 to 8.30.0
2022-12-23 20:14:47 +03:00
fba952f16c
Merge pull request #111 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.47.0
Bump @typescript-eslint/eslint-plugin from 5.46.0 to 5.47.0
2022-12-23 20:14:34 +03:00
9679681deb
Merge pull request #107 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/rss-1.2.1
Bump @astrojs/rss from 1.1.0 to 1.2.1
2022-12-23 20:14:18 +03:00
2d9a176c37
Merge pull request #110 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.7.2
Bump astro from 1.6.14 to 1.7.2
2022-12-23 20:14:03 +03:00
dependabot[bot]
cedc8f20bb
Bump @astrojs/rss from 1.1.0 to 1.2.1
Bumps [@astrojs/rss](https://github.com/withastro/astro/tree/HEAD/packages/astro-rss) from 1.1.0 to 1.2.1.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro-rss/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/rss@1.2.1/packages/astro-rss)

---
updated-dependencies:
- dependency-name: "@astrojs/rss"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 17:12:25 +00:00
dependabot[bot]
fe9842b8b1
Bump astro from 1.6.14 to 1.7.2
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.6.14 to 1.7.2.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.7.2/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 17:12:02 +00:00
fe4a9bf9dd
Merge pull request #109 from sergeyyarkov/dependabot/npm_and_yarn/develop/sharp-0.31.3
Bump sharp from 0.31.2 to 0.31.3
2022-12-23 20:10:29 +03:00
9789013561
Merge pull request #112 from sergeyyarkov/dependabot/npm_and_yarn/develop/solid-js-1.6.6
Bump solid-js from 1.6.4 to 1.6.6
2022-12-23 20:10:18 +03:00
9462501818
Merge pull request #114 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/mdx-0.13.0
Bump @astrojs/mdx from 0.12.1 to 0.13.0
2022-12-23 20:10:05 +03:00
dependabot[bot]
c2cd791135
Bump solid-js from 1.6.4 to 1.6.6
Bumps [solid-js](https://github.com/solidjs/solid) from 1.6.4 to 1.6.6.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/commits)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 17:09:54 +00:00
7fb16b176e
Merge pull request #116 from sergeyyarkov/dependabot/npm_and_yarn/develop/sass-1.57.1
Bump sass from 1.56.2 to 1.57.1
2022-12-23 20:04:52 +03:00
dependabot[bot]
cdc372bc34
Bump sass from 1.56.2 to 1.57.1
Bumps [sass](https://github.com/sass/dart-sass) from 1.56.2 to 1.57.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.56.2...1.57.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 07:03:47 +00:00
dependabot[bot]
b5fc026337
Bump @astrojs/mdx from 0.12.1 to 0.13.0
Bumps [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) from 0.12.1 to 0.13.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@0.13.0/packages/integrations/mdx)

---
updated-dependencies:
- dependency-name: "@astrojs/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 07:03:21 +00:00
dependabot[bot]
257d459165
Bump eslint from 8.29.0 to 8.30.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.29.0 to 8.30.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.29.0...v8.30.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 07:03:08 +00:00
dependabot[bot]
c29a0c4d50
Bump @typescript-eslint/eslint-plugin from 5.46.0 to 5.47.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.46.0 to 5.47.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.47.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 07:02:49 +00:00
dependabot[bot]
b2a90fdd81
Bump sharp from 0.31.2 to 0.31.3
Bumps [sharp](https://github.com/lovell/sharp) from 0.31.2 to 0.31.3.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/main/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.31.2...v0.31.3)

---
updated-dependencies:
- dependency-name: sharp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 07:02:11 +00:00
80edcc293f
fix update content script 2022-12-15 22:36:50 +03:00
9ae2b1df19
Update content 2022-12-15 22:36:22 +03:00
113737d7fe
fix: fixed alternate link language for article 2022-12-15 22:34:09 +03:00
c1fefc30ef
added some bash scripts 2022-12-15 21:46:13 +03:00
e495e9f62e
Update content 2022-12-15 21:37:44 +03:00
5ddd95d9ad
Merge pull request #90 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.46.0
Bump @typescript-eslint/parser from 5.45.0 to 5.46.0
2022-12-10 00:03:52 +03:00
dependabot[bot]
0073d9af27
Bump @typescript-eslint/parser from 5.45.0 to 5.46.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.45.0 to 5.46.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.46.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 21:03:46 +00:00
d0fdcb7aa6
Merge pull request #100 from sergeyyarkov/dependabot/npm_and_yarn/develop/solid-js-1.6.4
Bump solid-js from 1.6.2 to 1.6.4
2022-12-10 00:02:37 +03:00
dependabot[bot]
821743eaa6
Bump solid-js from 1.6.2 to 1.6.4
Bumps [solid-js](https://github.com/solidjs/solid) from 1.6.2 to 1.6.4.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/commits)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 21:02:31 +00:00
6a4a607370
Merge pull request #91 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.12.1
Bump @astrojs/image from 0.12.0 to 0.12.1
2022-12-10 00:02:23 +03:00
dependabot[bot]
339fec52ec
Bump @astrojs/image from 0.12.0 to 0.12.1
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.12.0 to 0.12.1.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.12.1/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 21:02:17 +00:00
3376ccae8f
Merge pull request #92 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.46.0
Bump @typescript-eslint/eslint-plugin from 5.45.0 to 5.46.0
2022-12-10 00:02:08 +03:00
dependabot[bot]
2a7c2732b6
Bump @typescript-eslint/eslint-plugin from 5.45.0 to 5.46.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.45.0 to 5.46.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.46.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 21:02:01 +00:00
c393c7968e
Merge pull request #94 from sergeyyarkov/dependabot/npm_and_yarn/develop/sass-1.56.2
Bump sass from 1.56.1 to 1.56.2
2022-12-10 00:01:43 +03:00
dependabot[bot]
f56b58b24b
Bump sass from 1.56.1 to 1.56.2
Bumps [sass](https://github.com/sass/dart-sass) from 1.56.1 to 1.56.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.56.1...1.56.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 21:01:31 +00:00
f54df00583
Merge pull request #96 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/rss-1.1.0
Bump @astrojs/rss from 1.0.3 to 1.1.0
2022-12-10 00:01:13 +03:00
dependabot[bot]
8c8b9e6a56
Bump @astrojs/rss from 1.0.3 to 1.1.0
Bumps [@astrojs/rss](https://github.com/withastro/astro/tree/HEAD/packages/astro-rss) from 1.0.3 to 1.1.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro-rss/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/rss@1.1.0/packages/astro-rss)

---
updated-dependencies:
- dependency-name: "@astrojs/rss"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 21:01:04 +00:00
d23cc3e04e
Merge pull request #93 from sergeyyarkov/dependabot/npm_and_yarn/develop/solid-js-1.6.3
Bump solid-js from 1.6.2 to 1.6.3
2022-12-10 00:00:51 +03:00
447bbb38ff
Merge pull request #95 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-8.29.0
Bump eslint from 8.28.0 to 8.29.0
2022-12-10 00:00:40 +03:00
5dde413c3e
Merge pull request #97 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/mdx-0.12.1
Bump @astrojs/mdx from 0.12.0 to 0.12.1
2022-12-10 00:00:22 +03:00
b7c125b509
Merge pull request #98 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.6.14
Bump astro from 1.6.12 to 1.6.14
2022-12-10 00:00:09 +03:00
73e98acb06
Merge pull request #99 from sergeyyarkov/dependabot/npm_and_yarn/develop/prettier-2.8.1
Bump prettier from 2.8.0 to 2.8.1
2022-12-09 23:59:52 +03:00
dependabot[bot]
f01309bd4e
Bump prettier from 2.8.0 to 2.8.1
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.0 to 2.8.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.0...2.8.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 07:04:24 +00:00
dependabot[bot]
d9574437dc
Bump astro from 1.6.12 to 1.6.14
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.6.12 to 1.6.14.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.6.14/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 07:04:03 +00:00
dependabot[bot]
070220c119
Bump @astrojs/mdx from 0.12.0 to 0.12.1
Bumps [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) from 0.12.0 to 0.12.1.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@0.12.1/packages/integrations/mdx)

---
updated-dependencies:
- dependency-name: "@astrojs/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 07:03:41 +00:00
dependabot[bot]
78cd372639
Bump eslint from 8.28.0 to 8.29.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.28.0 to 8.29.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.28.0...v8.29.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 07:02:55 +00:00
dependabot[bot]
fd34b1c164
Bump solid-js from 1.6.2 to 1.6.3
Bumps [solid-js](https://github.com/solidjs/solid) from 1.6.2 to 1.6.3.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/commits)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 07:02:26 +00:00
07198a5b0c
css fix 2022-12-08 16:42:28 +03:00
612718efdc
ping page 2022-12-08 16:24:47 +03:00
2b5b926237
upd config 2022-12-02 11:20:17 +03:00
fe4da07cf6
Merge pull request #88 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.45.0
Bump @typescript-eslint/parser from 5.44.0 to 5.45.0
2022-12-02 11:05:48 +03:00
dependabot[bot]
f0fe37d47d
Bump @typescript-eslint/parser from 5.44.0 to 5.45.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.44.0 to 5.45.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.45.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 08:05:43 +00:00
4353c2f7e4
Merge pull request #87 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.45.0
Bump @typescript-eslint/eslint-plugin from 5.44.0 to 5.45.0
2022-12-02 11:04:47 +03:00
dd55d486bd
Merge pull request #86 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.12.0
Bump @astrojs/image from 0.11.6 to 0.12.0
2022-12-02 11:04:31 +03:00
cb9364353f
Merge pull request #85 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-plugin-solid-0.9.1
Bump eslint-plugin-solid from 0.8.0 to 0.9.1
2022-12-02 11:04:18 +03:00
697f395055
Merge pull request #89 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.6.12
Bump astro from 1.6.11 to 1.6.12
2022-12-02 11:04:02 +03:00
dependabot[bot]
dbca6dd705
Bump astro from 1.6.11 to 1.6.12
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.6.11 to 1.6.12.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.6.12/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 07:02:58 +00:00
dependabot[bot]
fdf356afc2
Bump @typescript-eslint/eslint-plugin from 5.44.0 to 5.45.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.44.0 to 5.45.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.45.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 07:02:19 +00:00
dependabot[bot]
23b2f483e2
Bump @astrojs/image from 0.11.6 to 0.12.0
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.11.6 to 0.12.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.12.0/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 07:01:47 +00:00
dependabot[bot]
3cdb94a240
Bump eslint-plugin-solid from 0.8.0 to 0.9.1
Bumps [eslint-plugin-solid](https://github.com/solidjs-community/eslint-plugin-solid) from 0.8.0 to 0.9.1.
- [Release notes](https://github.com/solidjs-community/eslint-plugin-solid/releases)
- [Commits](https://github.com/solidjs-community/eslint-plugin-solid/compare/v0.8.0...v0.9.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-solid
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 07:01:32 +00:00
8c2c96ff46
Merge branch 'develop' of https://github.com/sergeyyarkov/yarkov.tech into develop 2022-11-27 22:54:19 +03:00
042bcb01b2
upd config 2022-11-27 22:53:43 +03:00
7b861144b3
Merge pull request #82 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.44.0
Bump @typescript-eslint/eslint-plugin from 5.43.0 to 5.44.0
2022-11-25 23:39:48 +03:00
d14bc684e5
Merge pull request #80 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.6.11
Bump astro from 1.6.10 to 1.6.11
2022-11-25 23:39:38 +03:00
dependabot[bot]
28c3cacd08
Bump astro from 1.6.10 to 1.6.11
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.6.10 to 1.6.11.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.6.11/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 20:39:26 +00:00
dependabot[bot]
3ba4b2b744
Bump @typescript-eslint/eslint-plugin from 5.43.0 to 5.44.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.43.0 to 5.44.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.44.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 20:39:22 +00:00
bdd2e7938c
Merge pull request #79 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/mdx-0.12.0
Bump @astrojs/mdx from 0.11.6 to 0.12.0
2022-11-25 23:39:19 +03:00
40e2b704ce
Merge pull request #81 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-8.28.0
Bump eslint from 8.27.0 to 8.28.0
2022-11-25 23:38:58 +03:00
b824999e92
Merge pull request #83 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.44.0
Bump @typescript-eslint/parser from 5.43.0 to 5.44.0
2022-11-25 23:38:41 +03:00
457da48028
Merge pull request #84 from sergeyyarkov/dependabot/npm_and_yarn/develop/prettier-2.8.0
Bump prettier from 2.7.1 to 2.8.0
2022-11-25 23:38:30 +03:00
dependabot[bot]
f85cb5ebe5
Bump prettier from 2.7.1 to 2.8.0
Bumps [prettier](https://github.com/prettier/prettier) from 2.7.1 to 2.8.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.7.1...2.8.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 07:05:25 +00:00
dependabot[bot]
0f15d7e0c5
Bump @typescript-eslint/parser from 5.43.0 to 5.44.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.43.0 to 5.44.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.44.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 07:05:04 +00:00
dependabot[bot]
c4d957d966
Bump eslint from 8.27.0 to 8.28.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.27.0 to 8.28.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.27.0...v8.28.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 07:03:54 +00:00
dependabot[bot]
54e9ee086f
Bump @astrojs/mdx from 0.11.6 to 0.12.0
Bumps [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) from 0.11.6 to 0.12.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@0.12.0/packages/integrations/mdx)

---
updated-dependencies:
- dependency-name: "@astrojs/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 07:03:06 +00:00
2ce791412d
added some microdata 2022-11-23 23:27:15 +03:00
09dcb4df2c
Merge tag 'v1.2.7' into develop
Release v1.2.7
2022-11-20 18:21:00 +03:00
e8016f4cf8
Merge branch 'release/1.2.7' into main 2022-11-20 18:20:40 +03:00
aa6fe9b7d7
upd readme & bump ver 2022-11-20 18:20:34 +03:00
dba7ef8125
feat: added prefetch 2022-11-20 18:18:16 +03:00
a28bb4d9b9
Merge pull request #76 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.43.0
Bump @typescript-eslint/parser from 5.42.1 to 5.43.0
2022-11-18 13:52:06 +03:00
dependabot[bot]
236e5f7794
Bump @typescript-eslint/parser from 5.42.1 to 5.43.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.42.1 to 5.43.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.43.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 10:51:58 +00:00
8dde19b9ff
Merge pull request #74 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.43.0
Bump @typescript-eslint/eslint-plugin from 5.42.1 to 5.43.0
2022-11-18 13:51:36 +03:00
dependabot[bot]
e708e10c32
Bump @typescript-eslint/eslint-plugin from 5.42.1 to 5.43.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.42.1 to 5.43.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.43.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 10:51:27 +00:00
1245e329f1
Merge pull request #73 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/solid-js-1.2.3
Bump @astrojs/solid-js from 1.2.2 to 1.2.3
2022-11-18 13:51:11 +03:00
d9440518f3
Merge pull request #75 from sergeyyarkov/dependabot/npm_and_yarn/develop/solid-js-1.6.2
Bump solid-js from 1.6.1 to 1.6.2
2022-11-18 13:50:57 +03:00
c7cb7cc040
Merge pull request #77 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.11.6
Bump @astrojs/image from 0.11.4 to 0.11.6
2022-11-18 13:50:43 +03:00
5d828065ee
Merge pull request #78 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.6.10
Bump astro from 1.6.7 to 1.6.10
2022-11-18 13:50:27 +03:00
dependabot[bot]
7df652cf31
Bump astro from 1.6.7 to 1.6.10
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.6.7 to 1.6.10.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.6.10/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 07:02:39 +00:00
dependabot[bot]
e0f041880a
Bump @astrojs/image from 0.11.4 to 0.11.6
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.11.4 to 0.11.6.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.11.6/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 07:02:21 +00:00
dependabot[bot]
6cb827ec33
Bump solid-js from 1.6.1 to 1.6.2
Bumps [solid-js](https://github.com/solidjs/solid) from 1.6.1 to 1.6.2.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/commits)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 07:01:53 +00:00
dependabot[bot]
76e0b2c1ed
Bump @astrojs/solid-js from 1.2.2 to 1.2.3
Bumps [@astrojs/solid-js](https://github.com/withastro/astro/tree/HEAD/packages/integrations/solid) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/solid/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/solid-js@1.2.3/packages/integrations/solid)

---
updated-dependencies:
- dependency-name: "@astrojs/solid-js"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 07:01:21 +00:00
a4314684f7
some fixes 2022-11-11 19:51:00 +03:00
5c5b650982
upd config 2022-11-11 18:11:25 +03:00
0999eab76d
Merge pull request #66 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/mdx-0.11.6
Bump @astrojs/mdx from 0.11.5 to 0.11.6
2022-11-11 18:08:10 +03:00
dependabot[bot]
83adaa4246
Bump @astrojs/mdx from 0.11.5 to 0.11.6
Bumps [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) from 0.11.5 to 0.11.6.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@0.11.6/packages/integrations/mdx)

---
updated-dependencies:
- dependency-name: "@astrojs/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-11 15:08:01 +00:00
f54c81bea6
Merge pull request #69 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.42.1
Bump @typescript-eslint/parser from 5.42.0 to 5.42.1
2022-11-11 18:07:57 +03:00
dependabot[bot]
cc9e958530
Bump @typescript-eslint/parser from 5.42.0 to 5.42.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.42.0 to 5.42.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.42.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-11 15:07:18 +00:00
6b8af1dcf8
Merge pull request #70 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.42.1
Bump @typescript-eslint/eslint-plugin from 5.42.0 to 5.42.1
2022-11-11 18:03:40 +03:00
c08c03a3ea
Merge pull request #68 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.6.7
Bump astro from 1.6.3 to 1.6.7
2022-11-11 18:03:22 +03:00
920a6a5199
Merge pull request #67 from sergeyyarkov/dependabot/npm_and_yarn/develop/sass-1.56.1
Bump sass from 1.56.0 to 1.56.1
2022-11-11 18:01:29 +03:00
04f2d52501
Merge pull request #71 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.11.4
Bump @astrojs/image from 0.11.1 to 0.11.4
2022-11-11 18:01:18 +03:00
1ee6592655
Merge pull request #72 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-8.27.0
Bump eslint from 8.26.0 to 8.27.0
2022-11-11 18:00:58 +03:00
dependabot[bot]
2cf55a8490
Bump eslint from 8.26.0 to 8.27.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.26.0 to 8.27.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.26.0...v8.27.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-11 07:13:30 +00:00
dependabot[bot]
864ace5bab
Bump @astrojs/image from 0.11.1 to 0.11.4
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.11.1 to 0.11.4.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.11.4/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-11 07:13:20 +00:00
dependabot[bot]
93d71c8628
Bump @typescript-eslint/eslint-plugin from 5.42.0 to 5.42.1
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.42.0 to 5.42.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.42.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-11 07:12:56 +00:00
dependabot[bot]
734f1a91b3
Bump astro from 1.6.3 to 1.6.7
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.6.3 to 1.6.7.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.6.7/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-11 07:12:07 +00:00
dependabot[bot]
cc5465f7e6
Bump sass from 1.56.0 to 1.56.1
Bumps [sass](https://github.com/sass/dart-sass) from 1.56.0 to 1.56.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.56.0...1.56.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-11 07:11:59 +00:00
bafc12487e
some refactor 2022-11-07 21:37:14 +03:00
1f8c01ffd6
readme 2022-11-06 19:16:06 +03:00
1e766952ca
upd content 2022-11-06 19:09:25 +03:00
0552043ad8
Merge tag 'v1.1.7' into develop
Fix css & error handling
2022-11-06 18:26:34 +03:00
5f14e02e6e
Merge branch 'release/1.1.7' into main 2022-11-06 18:26:25 +03:00
4b393f5abd
bump ver 2022-11-06 18:26:21 +03:00
1abd4b1c59
fix: error handling & css 2022-11-06 18:25:48 +03:00
af9a5be063
Merge tag 'v1.1.6' into develop
Added views counter to articles
2022-11-06 18:09:34 +03:00
94e9effbb1
Merge branch 'release/1.1.6' into main 2022-11-06 18:09:15 +03:00
111f35d36b
bump ver 2022-11-06 18:07:51 +03:00
92ffa444da
feat: added views to ArticlePost 2022-11-06 18:07:00 +03:00
d0400cadcb
feat: added views netlify function 2022-11-06 17:33:54 +03:00
4f5f9b2375
Merge tag 'v1.0.6' into develop
Release v1.0.6
2022-11-06 02:15:59 +03:00
64c7bbc3ea
Merge branch 'release/1.0.6' into main 2022-11-06 02:15:17 +03:00
bb401bc3cd
bump ver 2022-11-06 02:15:11 +03:00
461adcf611
fix css 2022-11-06 02:14:49 +03:00
dbf640b55b
Merge tag 'v1.0.5' into develop
Fix style
2022-11-06 01:55:47 +03:00
b88203a5a3
Merge branch 'release/1.0.5' into main 2022-11-06 01:55:39 +03:00
99ec5b05a5
bump ver 2022-11-06 01:55:31 +03:00
c38f51cff5
fix style 2022-11-06 01:54:57 +03:00
400761549d
Merge tag 'v1.0.4' into develop
Updated deps & some css
2022-11-05 22:09:14 +03:00
36478d1080
Merge branch 'release/1.0.4' into main 2022-11-05 22:08:29 +03:00
2cfaeff472
bump ver 2022-11-05 22:08:16 +03:00
9bfa8bea00
upd content 2022-11-05 22:03:07 +03:00
e49174c02f
upd theme & added sharp module 2022-11-05 21:57:16 +03:00
43c8f5bbab
Merge pull request #63 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.42.0
Bump @typescript-eslint/parser from 5.41.0 to 5.42.0
2022-11-04 15:16:18 +03:00
12c1e2acd4
Merge pull request #62 from sergeyyarkov/dependabot/npm_and_yarn/develop/rehype-slug-5.1.0
Bump rehype-slug from 5.0.1 to 5.1.0
2022-11-04 15:16:06 +03:00
2824fa4fce
Merge pull request #61 from sergeyyarkov/dependabot/npm_and_yarn/develop/prettier-plugin-astro-0.7.0
Bump prettier-plugin-astro from 0.6.0 to 0.7.0
2022-11-04 15:15:55 +03:00
746504724a
Merge pull request #64 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-plugin-solid-0.8.0
Bump eslint-plugin-solid from 0.7.4 to 0.8.0
2022-11-04 15:15:47 +03:00
dependabot[bot]
a31c9fd951
Bump @typescript-eslint/parser from 5.41.0 to 5.42.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.41.0 to 5.42.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.42.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 12:11:45 +00:00
dependabot[bot]
ee37ce8143
Bump eslint-plugin-solid from 0.7.4 to 0.8.0
Bumps [eslint-plugin-solid](https://github.com/solidjs-community/eslint-plugin-solid) from 0.7.4 to 0.8.0.
- [Release notes](https://github.com/solidjs-community/eslint-plugin-solid/releases)
- [Commits](https://github.com/solidjs-community/eslint-plugin-solid/compare/v0.7.4...v0.8.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-solid
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 12:11:15 +00:00
f302c4ceff
Merge pull request #58 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.42.0
Bump @typescript-eslint/eslint-plugin from 5.41.0 to 5.42.0
2022-11-04 15:10:41 +03:00
26a7627b51
Merge pull request #65 from sergeyyarkov/dependabot/npm_and_yarn/develop/solid-js-1.6.1
Bump solid-js from 1.6.0 to 1.6.1
2022-11-04 15:10:31 +03:00
eb6fa914b2
Merge pull request #57 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.6.3
Bump astro from 1.6.0 to 1.6.3
2022-11-04 15:10:20 +03:00
dependabot[bot]
94ca0482d6
Bump solid-js from 1.6.0 to 1.6.1
Bumps [solid-js](https://github.com/solidjs/solid) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/commits)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 12:03:18 +00:00
dependabot[bot]
51f862fe92
Bump rehype-slug from 5.0.1 to 5.1.0
Bumps [rehype-slug](https://github.com/rehypejs/rehype-slug) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/rehypejs/rehype-slug/releases)
- [Commits](https://github.com/rehypejs/rehype-slug/compare/5.0.1...5.1.0)

---
updated-dependencies:
- dependency-name: rehype-slug
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 12:03:02 +00:00
dependabot[bot]
7be4b892a7
Bump @typescript-eslint/eslint-plugin from 5.41.0 to 5.42.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.41.0 to 5.42.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.42.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 12:02:49 +00:00
8356b58732
Merge pull request #60 from sergeyyarkov/dependabot/npm_and_yarn/develop/sass-1.56.0
Bump sass from 1.55.0 to 1.56.0
2022-11-04 15:02:13 +03:00
dependabot[bot]
28fc2f6194
Bump astro from 1.6.0 to 1.6.3
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.6.0 to 1.6.3.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.6.3/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 12:02:13 +00:00
ea0525ed95
Merge pull request #59 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/solid-js-1.2.2
Bump @astrojs/solid-js from 1.2.1 to 1.2.2
2022-11-04 15:01:38 +03:00
383f7e60f7
Merge pull request #56 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.11.1
Bump @astrojs/image from 0.11.0 to 0.11.1
2022-11-04 15:01:25 +03:00
dependabot[bot]
0340bf99a7
Bump prettier-plugin-astro from 0.6.0 to 0.7.0
Bumps [prettier-plugin-astro](https://github.com/withastro/prettier-plugin-astro) from 0.6.0 to 0.7.0.
- [Release notes](https://github.com/withastro/prettier-plugin-astro/releases)
- [Changelog](https://github.com/withastro/prettier-plugin-astro/blob/main/CHANGELOG.md)
- [Commits](https://github.com/withastro/prettier-plugin-astro/compare/v0.6.0...v0.7.0)

---
updated-dependencies:
- dependency-name: prettier-plugin-astro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 07:02:02 +00:00
dependabot[bot]
e965dcdffb
Bump sass from 1.55.0 to 1.56.0
Bumps [sass](https://github.com/sass/dart-sass) from 1.55.0 to 1.56.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.55.0...1.56.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 07:01:52 +00:00
dependabot[bot]
02b0f6d99f
Bump @astrojs/solid-js from 1.2.1 to 1.2.2
Bumps [@astrojs/solid-js](https://github.com/withastro/astro/tree/HEAD/packages/integrations/solid) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/solid/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/solid-js@1.2.2/packages/integrations/solid)

---
updated-dependencies:
- dependency-name: "@astrojs/solid-js"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 07:01:43 +00:00
dependabot[bot]
063d3751ea
Bump @astrojs/image from 0.11.0 to 0.11.1
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.11.0 to 0.11.1.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.11.1/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 07:00:56 +00:00
d2836a6efa
Merge pull request #54 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.41.0
Bump @typescript-eslint/parser from 5.40.1 to 5.41.0
2022-10-28 17:36:21 +03:00
dependabot[bot]
d985cd4b6a
Bump @typescript-eslint/parser from 5.40.1 to 5.41.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.40.1 to 5.41.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.41.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 14:36:12 +00:00
eb7bf81c0f
Merge pull request #48 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.41.0
Bump @typescript-eslint/eslint-plugin from 5.40.1 to 5.41.0
2022-10-28 17:35:37 +03:00
9fea31fa28
Merge pull request #50 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/rss-1.0.3
Bump @astrojs/rss from 1.0.2 to 1.0.3
2022-10-28 17:35:27 +03:00
99f892ff17
Merge pull request #55 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-plugin-solid-0.7.4
Bump eslint-plugin-solid from 0.7.3 to 0.7.4
2022-10-28 17:35:18 +03:00
ec83686862
Merge pull request #47 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-icon-0.8.0
Bump astro-icon from 0.7.3 to 0.8.0
2022-10-28 17:35:08 +03:00
0e2f667add
Merge pull request #51 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.11.0
Bump @astrojs/image from 0.10.0 to 0.11.0
2022-10-28 17:34:57 +03:00
dependabot[bot]
7e372daf21
Bump astro-icon from 0.7.3 to 0.8.0
Bumps [astro-icon](https://github.com/natemoo-re/astro-icon/tree/HEAD/packages/core) from 0.7.3 to 0.8.0.
- [Release notes](https://github.com/natemoo-re/astro-icon/releases)
- [Changelog](https://github.com/natemoo-re/astro-icon/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/natemoo-re/astro-icon/commits/astro-icon@0.8.0/packages/core)

---
updated-dependencies:
- dependency-name: astro-icon
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 14:20:20 +00:00
dependabot[bot]
9f3fd13526
Bump eslint-plugin-solid from 0.7.3 to 0.7.4
Bumps [eslint-plugin-solid](https://github.com/joshwilsonvu/eslint-plugin-solid) from 0.7.3 to 0.7.4.
- [Release notes](https://github.com/joshwilsonvu/eslint-plugin-solid/releases)
- [Commits](https://github.com/joshwilsonvu/eslint-plugin-solid/compare/v0.7.3...v0.7.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-solid
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 14:20:05 +00:00
dependabot[bot]
bcbb2374f3
Bump @astrojs/image from 0.10.0 to 0.11.0
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.10.0 to 0.11.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.11.0/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 14:20:05 +00:00
dependabot[bot]
a825c46540
Bump @astrojs/rss from 1.0.2 to 1.0.3
Bumps [@astrojs/rss](https://github.com/withastro/astro/tree/HEAD/packages/astro-rss) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro-rss/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/rss@1.0.3/packages/astro-rss)

---
updated-dependencies:
- dependency-name: "@astrojs/rss"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 14:19:58 +00:00
dependabot[bot]
be412fa21f
Bump @typescript-eslint/eslint-plugin from 5.40.1 to 5.41.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.40.1 to 5.41.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.41.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 14:19:41 +00:00
6e4a5d21b6
Merge pull request #53 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-8.26.0
Bump eslint from 8.25.0 to 8.26.0
2022-10-28 17:19:13 +03:00
dbad4ae0c6
Merge pull request #52 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/mdx-0.11.5
Bump @astrojs/mdx from 0.11.4 to 0.11.5
2022-10-28 17:18:54 +03:00
3ec96ad1ef
Merge pull request #49 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.6.0
Bump astro from 1.5.2 to 1.6.0
2022-10-28 17:18:39 +03:00
dependabot[bot]
33bb44bf11
Bump eslint from 8.25.0 to 8.26.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.25.0 to 8.26.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.25.0...v8.26.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 07:45:40 +00:00
dependabot[bot]
f1ffffbd60
Bump @astrojs/mdx from 0.11.4 to 0.11.5
Bumps [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) from 0.11.4 to 0.11.5.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@0.11.5/packages/integrations/mdx)

---
updated-dependencies:
- dependency-name: "@astrojs/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 07:45:21 +00:00
dependabot[bot]
d1490dc8cc
Bump astro from 1.5.2 to 1.6.0
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.5.2 to 1.6.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.6.0/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 07:44:18 +00:00
44c8762829
uninstall astro-compress 2022-10-21 12:52:31 +03:00
0ace510d2c
Merge pull request #45 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.40.1
Bump @typescript-eslint/eslint-plugin from 5.40.0 to 5.40.1
2022-10-21 12:10:39 +03:00
dependabot[bot]
72d5179309
Bump @typescript-eslint/eslint-plugin from 5.40.0 to 5.40.1
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.40.0 to 5.40.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.40.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-21 09:10:29 +00:00
d2145732c4
Merge pull request #42 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.40.1
Bump @typescript-eslint/parser from 5.40.0 to 5.40.1
2022-10-21 12:09:48 +03:00
213200846e
Merge pull request #44 from sergeyyarkov/dependabot/npm_and_yarn/develop/types/mdx-2.0.3
Bump @types/mdx from 2.0.2 to 2.0.3
2022-10-21 12:09:37 +03:00
87aede1db6
Merge pull request #40 from sergeyyarkov/dependabot/npm_and_yarn/develop/prettier-plugin-astro-0.6.0
Bump prettier-plugin-astro from 0.5.5 to 0.6.0
2022-10-21 12:09:24 +03:00
ccd68727ec
Merge pull request #41 from sergeyyarkov/dependabot/npm_and_yarn/develop/solid-js-1.6.0
Bump solid-js from 1.5.7 to 1.6.0
2022-10-21 12:08:52 +03:00
dependabot[bot]
78272f633b
Bump @types/mdx from 2.0.2 to 2.0.3
Bumps [@types/mdx](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mdx) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mdx)

---
updated-dependencies:
- dependency-name: "@types/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-21 09:08:10 +00:00
dependabot[bot]
409dd86c4f
Bump @typescript-eslint/parser from 5.40.0 to 5.40.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.40.0 to 5.40.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.40.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-21 09:08:07 +00:00
dependabot[bot]
3ca5da185c
Bump solid-js from 1.5.7 to 1.6.0
Bumps [solid-js](https://github.com/solidjs/solid) from 1.5.7 to 1.6.0.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/commits/v1.6.0)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-21 09:08:01 +00:00
580e4fa739
Merge pull request #43 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/solid-js-1.2.1
Bump @astrojs/solid-js from 1.2.0 to 1.2.1
2022-10-21 12:07:37 +03:00
b5279cdb71
Merge pull request #46 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.5.2
Bump astro from 1.5.0 to 1.5.2
2022-10-21 12:07:08 +03:00
dependabot[bot]
488899d214
Bump astro from 1.5.0 to 1.5.2
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.5.0 to 1.5.2.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.5.2/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-21 07:39:09 +00:00
dependabot[bot]
379cc8e90c
Bump @astrojs/solid-js from 1.2.0 to 1.2.1
Bumps [@astrojs/solid-js](https://github.com/withastro/astro/tree/HEAD/packages/integrations/solid) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/solid/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/solid-js@1.2.1/packages/integrations/solid)

---
updated-dependencies:
- dependency-name: "@astrojs/solid-js"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-21 07:38:26 +00:00
dependabot[bot]
e539d42120
Bump prettier-plugin-astro from 0.5.5 to 0.6.0
Bumps [prettier-plugin-astro](https://github.com/withastro/prettier-plugin-astro) from 0.5.5 to 0.6.0.
- [Release notes](https://github.com/withastro/prettier-plugin-astro/releases)
- [Changelog](https://github.com/withastro/prettier-plugin-astro/blob/main/CHANGELOG.md)
- [Commits](https://github.com/withastro/prettier-plugin-astro/compare/v0.5.5...v0.6.0)

---
updated-dependencies:
- dependency-name: prettier-plugin-astro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-21 07:37:51 +00:00
cda7b9e6ae fix: fixed css form 2022-10-15 02:59:36 +03:00
7309069425
Merge pull request #39 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.5.0 2022-10-14 11:11:16 +03:00
dependabot[bot]
077774b35d
Bump astro from 1.4.5 to 1.5.0
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.4.5 to 1.5.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.5.0/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 08:11:13 +00:00
063fb783be
Merge pull request #38 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/solid-js-1.2.0 2022-10-14 11:10:49 +03:00
16fb5de3e8
Merge pull request #36 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-compress-1.0.12 2022-10-14 11:10:17 +03:00
ce10218542
Merge pull request #37 from sergeyyarkov/dependabot/npm_and_yarn/develop/hastscript-7.1.0 2022-10-14 11:09:51 +03:00
dependabot[bot]
216316cef7
Bump @astrojs/solid-js from 1.1.1 to 1.2.0
Bumps [@astrojs/solid-js](https://github.com/withastro/astro/tree/HEAD/packages/integrations/solid) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/solid/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/solid-js@1.2.0/packages/integrations/solid)

---
updated-dependencies:
- dependency-name: "@astrojs/solid-js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 08:09:44 +00:00
13f561d45d
Merge pull request #35 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.40.0 2022-10-14 11:09:28 +03:00
dependabot[bot]
f477b77d96
Bump hastscript from 7.0.2 to 7.1.0
Bumps [hastscript](https://github.com/syntax-tree/hastscript) from 7.0.2 to 7.1.0.
- [Release notes](https://github.com/syntax-tree/hastscript/releases)
- [Commits](https://github.com/syntax-tree/hastscript/compare/7.0.2...7.1.0)

---
updated-dependencies:
- dependency-name: hastscript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 08:09:24 +00:00
dependabot[bot]
d12775d699
Bump astro-compress from 1.0.11 to 1.0.12
Bumps [astro-compress](https://github.com/astro-community/astro-compress) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/astro-community/astro-compress/releases)
- [Changelog](https://github.com/astro-community/astro-compress/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astro-community/astro-compress/compare/v1.0.11...v1.0.12)

---
updated-dependencies:
- dependency-name: astro-compress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 08:09:18 +00:00
dependabot[bot]
11fa507e1f
Bump @typescript-eslint/parser from 5.39.0 to 5.40.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.39.0 to 5.40.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.40.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 08:09:17 +00:00
f026e016fa
Merge pull request #33 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.10.0 2022-10-14 11:09:01 +03:00
42b460f383
Merge pull request #34 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.40.0 2022-10-14 11:08:30 +03:00
468e1bfa5d
Merge pull request #32 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-8.25.0 2022-10-14 11:08:05 +03:00
dependabot[bot]
a62518157d
Bump @typescript-eslint/eslint-plugin from 5.39.0 to 5.40.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.39.0 to 5.40.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.40.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 07:36:36 +00:00
dependabot[bot]
c025ffdf75
Bump @astrojs/image from 0.9.2 to 0.10.0
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.9.2 to 0.10.0.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.10.0/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 07:36:12 +00:00
dependabot[bot]
debf751779
Bump eslint from 8.24.0 to 8.25.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.24.0 to 8.25.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.24.0...v8.25.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 07:35:57 +00:00
b175db579c
Merge pull request #31 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-compress-1.0.11
Bump astro-compress from 1.0.10 to 1.0.11
2022-10-07 14:16:33 +03:00
dependabot[bot]
9cd9b27faf
Bump astro-compress from 1.0.10 to 1.0.11
Bumps [astro-compress](https://github.com/astro-community/astro-compress) from 1.0.10 to 1.0.11.
- [Release notes](https://github.com/astro-community/astro-compress/releases)
- [Changelog](https://github.com/astro-community/astro-compress/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astro-community/astro-compress/compare/v1.0.10...v1.0.11)

---
updated-dependencies:
- dependency-name: astro-compress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-07 11:15:29 +00:00
6997c2efc6
Merge pull request #28 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/solid-js-1.1.1
Bump @astrojs/solid-js from 1.1.0 to 1.1.1
2022-10-07 14:14:58 +03:00
545a5904fb
Merge pull request #29 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.9.2
Bump @astrojs/image from 0.9.1 to 0.9.2
2022-10-07 14:14:29 +03:00
15af2914aa
Merge pull request #30 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.4.5
Bump astro from 1.4.4 to 1.4.5
2022-10-07 14:14:18 +03:00
dependabot[bot]
545780503b
Bump astro from 1.4.4 to 1.4.5
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.4.4 to 1.4.5.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.4.5/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-07 07:33:33 +00:00
dependabot[bot]
4241a4d18a
Bump @astrojs/image from 0.9.1 to 0.9.2
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.9.1 to 0.9.2.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.9.2/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-07 07:33:19 +00:00
dependabot[bot]
9b0209e3f6
Bump @astrojs/solid-js from 1.1.0 to 1.1.1
Bumps [@astrojs/solid-js](https://github.com/withastro/astro/tree/HEAD/packages/integrations/solid) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/solid/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/solid-js@1.1.1/packages/integrations/solid)

---
updated-dependencies:
- dependency-name: "@astrojs/solid-js"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-07 07:33:06 +00:00
5d1aba4e09 disabled because it is buggy 0_0 2022-10-04 19:59:21 +03:00
4e6b51c885
Merge pull request #27 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-compress-1.0.10
Bump astro-compress from 1.0.8 to 1.0.10
2022-10-04 19:47:24 +03:00
0910276c80
Merge pull request #26 from sergeyyarkov/dependabot/npm_and_yarn/develop/solid-js-1.5.7
Bump solid-js from 1.5.5 to 1.5.7
2022-10-04 19:47:12 +03:00
dependabot[bot]
43a50ca49d
Bump astro-compress from 1.0.8 to 1.0.10
Bumps [astro-compress](https://github.com/astro-community/astro-compress) from 1.0.8 to 1.0.10.
- [Release notes](https://github.com/astro-community/astro-compress/releases)
- [Changelog](https://github.com/astro-community/astro-compress/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astro-community/astro-compress/commits/v1.0.10)

---
updated-dependencies:
- dependency-name: astro-compress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 16:46:42 +00:00
dependabot[bot]
c35da4fd9f
Bump solid-js from 1.5.5 to 1.5.7
Bumps [solid-js](https://github.com/solidjs/solid) from 1.5.5 to 1.5.7.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/commits)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 16:46:23 +00:00
d64ab60a1c
updated dependabot pr limit 2022-10-04 19:45:52 +03:00
7ea3b288d3
Merge pull request #25 from sergeyyarkov/dependabot/npm_and_yarn/develop/astro-1.4.4
Bump astro from 1.3.0 to 1.4.4
2022-10-04 19:42:34 +03:00
dependabot[bot]
86e319a136
Bump astro from 1.3.0 to 1.4.4
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 1.3.0 to 1.4.4.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@1.4.4/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 16:42:18 +00:00
fbcb639b56
Merge pull request #24 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/image-0.9.1
Bump @astrojs/image from 0.7.1 to 0.9.1
2022-10-04 19:41:35 +03:00
dependabot[bot]
bea7f061d3
Bump @astrojs/image from 0.7.1 to 0.9.1
Bumps [@astrojs/image](https://github.com/withastro/astro/tree/HEAD/packages/integrations/image) from 0.7.1 to 0.9.1.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/image/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/image@0.9.1/packages/integrations/image)

---
updated-dependencies:
- dependency-name: "@astrojs/image"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 16:41:28 +00:00
e54062b498
Merge pull request #16 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/rss-1.0.2
Bump @astrojs/rss from 1.0.1 to 1.0.2
2022-10-04 19:41:16 +03:00
dependabot[bot]
85de525035
Bump @astrojs/rss from 1.0.1 to 1.0.2
Bumps [@astrojs/rss](https://github.com/withastro/astro/tree/HEAD/packages/astro-rss) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro-rss/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/rss@1.0.2/packages/astro-rss)

---
updated-dependencies:
- dependency-name: "@astrojs/rss"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 16:40:55 +00:00
5a5f3a8f5d
Merge pull request #23 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-5.39.0
Bump @typescript-eslint/eslint-plugin from 5.38.0 to 5.39.0
2022-10-04 19:40:39 +03:00
dependabot[bot]
824b882023
Bump @typescript-eslint/eslint-plugin from 5.38.0 to 5.39.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.38.0 to 5.39.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.39.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 16:40:16 +00:00
821f9f7a39
Merge pull request #21 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/mdx-0.11.4
Bump @astrojs/mdx from 0.11.3 to 0.11.4
2022-10-04 19:40:09 +03:00
dependabot[bot]
67759f6ab3
Bump @astrojs/mdx from 0.11.3 to 0.11.4
Bumps [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) from 0.11.3 to 0.11.4.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@0.11.4/packages/integrations/mdx)

---
updated-dependencies:
- dependency-name: "@astrojs/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 16:39:34 +00:00
578068f405
Merge pull request #22 from sergeyyarkov/dependabot/npm_and_yarn/develop/typescript-eslint/parser-5.39.0
Bump @typescript-eslint/parser from 5.38.0 to 5.39.0
2022-10-04 19:38:49 +03:00
dependabot[bot]
e9098e401f
Bump @typescript-eslint/parser from 5.38.0 to 5.39.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.38.0 to 5.39.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.39.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 16:38:22 +00:00
f1a6d583ab
Merge pull request #18 from sergeyyarkov/dependabot/npm_and_yarn/develop/eslint-8.24.0
Bump eslint from 8.23.1 to 8.24.0
2022-10-04 19:38:03 +03:00
f39b1b0ffd
Merge pull request #19 from sergeyyarkov/dependabot/npm_and_yarn/develop/prettier-plugin-astro-0.5.5
Bump prettier-plugin-astro from 0.5.4 to 0.5.5
2022-10-04 19:37:45 +03:00
b1652e8f43
Merge pull request #20 from sergeyyarkov/dependabot/npm_and_yarn/develop/astrojs/mdx-0.11.3
Bump @astrojs/mdx from 0.11.1 to 0.11.3
2022-10-04 19:37:33 +03:00
dependabot[bot]
1cc5e5af78
Bump @astrojs/mdx from 0.11.1 to 0.11.3
Bumps [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) from 0.11.1 to 0.11.3.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/mdx/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/mdx@0.11.3/packages/integrations/mdx)

---
updated-dependencies:
- dependency-name: "@astrojs/mdx"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 07:50:03 +00:00
dependabot[bot]
ff961c4d6f
Bump prettier-plugin-astro from 0.5.4 to 0.5.5
Bumps [prettier-plugin-astro](https://github.com/withastro/prettier-plugin-astro) from 0.5.4 to 0.5.5.
- [Release notes](https://github.com/withastro/prettier-plugin-astro/releases)
- [Changelog](https://github.com/withastro/prettier-plugin-astro/blob/main/CHANGELOG.md)
- [Commits](https://github.com/withastro/prettier-plugin-astro/compare/v0.5.4...v0.5.5)

---
updated-dependencies:
- dependency-name: prettier-plugin-astro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 07:49:41 +00:00
dependabot[bot]
c3117bb3f4
Bump eslint from 8.23.1 to 8.24.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.23.1 to 8.24.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.23.1...v8.24.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 07:49:27 +00:00
f889ac2dbf Merge tag 'v1.0.3' into develop
Release v1.0.3
2022-09-23 18:36:14 +03:00
182 changed files with 26775 additions and 14220 deletions

14
.dockerignore Normal file
View File

@ -0,0 +1,14 @@
node_modules
dist
.astro
.env
.env.example
.git
.gitignore
dockerfile
.dockerignore
.vscode
.prettierrc
codegen.ts
schema.graphql
README.md

4
.env.example Normal file
View File

@ -0,0 +1,4 @@
ASTRO_TELEMETRY_DISABLED=1
DIRECTUS_URL=
DIRECTUS_URL_GRAPHQL=
DIRECTUS_TOKEN=

View File

@ -1,14 +0,0 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:solid/typescript"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["@typescript-eslint", "solid"],
"rules": {}
}

2
.gitattributes vendored
View File

@ -1,2 +0,0 @@
*.css linguist-detectable=false
*.scss linguist-detectable=false

View File

@ -6,3 +6,4 @@ updates:
interval: "weekly" interval: "weekly"
day: "friday" day: "friday"
target-branch: "develop" target-branch: "develop"
open-pull-requests-limit: 10

6
.gitignore vendored
View File

@ -1,5 +1,7 @@
# build output # build output
dist/ dist/
# generated types
.astro/
# dependencies # dependencies
node_modules/ node_modules/
@ -10,9 +12,13 @@ yarn-debug.log*
yarn-error.log* yarn-error.log*
pnpm-debug.log* pnpm-debug.log*
# environment variables # environment variables
.env .env
.env.production .env.production
# macOS-specific files # macOS-specific files
.DS_Store .DS_Store
# Local Netlify folder
.netlify

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "content"]
path = content
url = git@github.com:sergeyyarkov/content.git

2
.npmrc
View File

@ -1,2 +0,0 @@
# Expose Astro dependencies for `pnpm` users
shamefully-hoist=true

View File

@ -1,2 +0,0 @@
**/*.mdx
**/*.md

4
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

11
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}

View File

@ -1,7 +1,5 @@
{ {
"files.eol": "\n", "githubPullRequests.ignoredPullRequestBranches": ["develop"],
"prettier.documentSelectors": ["**/*.astro"], "typescript.tsdk": "node_modules/typescript/lib",
"[astro]": { "typescript.enablePromptUseWorkspaceTsdk": true
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
} }

22
Dockerfile Normal file
View File

@ -0,0 +1,22 @@
ARG NODE_IMAGE=node:24.0.0-alpine
FROM ${NODE_IMAGE} AS build
RUN apk add --no-cache python3 make g++
WORKDIR /app
COPY package*.json .
RUN npm ci
COPY . .
RUN npm run build
RUN npm prune --omit=dev
FROM ${NODE_IMAGE} AS production
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/package*.json .
EXPOSE 9966
CMD [ "node", "./dist/server/entry.mjs"]

View File

@ -1,21 +1,22 @@
# yarkov.tech # yarkov.tech
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Netlify Status](https://api.netlify.com/api/v1/badges/ccd0460a-9725-4e35-8263-1608c4186d9c/deploy-status)](https://app.netlify.com/sites/yarkov/deploys)
Personal website created with Astro. Personal website created with Astro.
### Features ### Features
- [x] HTML layout
- [x] Adaptive & Responsive layout - [x] Adaptive & Responsive layout
- [x] Search articles by title or description - [x] Search articles by title or description
- [x] Dark/Light Theme - [x] Dark/Light Theme
- [x] Multilang web-site - [x] Multilang web-site
- [x] Form handling via [Netlify Forms](https://www.netlify.com/products/forms/) - [x] Table of contents
- [x] Comment system via [utterances](https://utteranc.es/) - [x] Content management via [Directus](https://directus.io/)
- [x] Form handling
- [x] Comment system via [Remark42](https://github.com/umputun/remark42)
- [x] RSS Feed for articles - [x] RSS Feed for articles
- [x] SEO optimized - [x] SEO optimized
- [x] Views counter
## License ## License

38
astro.config.mjs Normal file
View File

@ -0,0 +1,38 @@
import { defineConfig, envField } from "astro/config";
/**
* Integrations
*/
import node from "@astrojs/node";
import solidJs from "@astrojs/solid-js";
import icon from "astro-icon";
// https://astro.build/config
export default defineConfig({
site: "https://yarkov.tech",
compressHTML: true,
output: "server",
prefetch: true,
server: {
port: 9966,
host: true,
allowedHosts: ["showcase.yarkov.tech"],
},
adapter: node({
mode: "standalone",
}),
env: {
schema: {
DIRECTUS_URL: envField.string({ context: "server", access: "secret", default: "" }),
DIRECTUS_URL_GRAPHQL: envField.string({
context: "server",
access: "secret",
default: "http://directus:8055/graphql",
}),
DIRECTUS_TOKEN: envField.string({ context: "server", access: "secret", default: "" }),
},
},
integrations: [icon(), solidJs()],
trailingSlash: "ignore",
scopedStyleStrategy: "where",
});

View File

@ -1,115 +0,0 @@
/**
* Integrations
*/
import solid from "@astrojs/solid-js";
import mdx from "@astrojs/mdx";
import sitemap from "@astrojs/sitemap";
import image from "@astrojs/image";
import compress from "astro-compress";
/**
* Remark plugins
*/
import remarkGfm from "remark-gfm";
import remarkSmartypants from "remark-smartypants";
/**
* Rehype plugins
*/
import rehypeSlug from "rehype-slug";
import rehypeAutolinkHeadings from "rehype-autolink-headings";
/**
* Other required modules
*/
import { defineConfig } from "astro/config";
import { h } from "hastscript";
import { toString } from "hast-util-to-string";
import { escape } from "html-escaper";
import { DEFAULT_LANGUAGE } from "./src/config";
import languages from "./src/i18n/languages";
const createAnchorLabel = (heading: string) => {
const node = h("span.anchor-label", escape(heading));
if (node.properties) node.properties["is:raw"] = true;
return node;
};
// https://astro.build/config
export default defineConfig({
site: "https://yarkov.tech",
integrations: [
solid(),
sitemap({
i18n: {
defaultLocale: DEFAULT_LANGUAGE,
locales: Object.fromEntries(Object.keys(languages).map((key) => [key, key])),
},
}),
image(),
compress({
img: false,
}),
mdx({
remarkPlugins: [remarkGfm, remarkSmartypants],
rehypePlugins: [
rehypeSlug,
[
rehypeAutolinkHeadings,
{
properties: {
class: "anchor-link",
},
behavior: "after",
group: ({ tagName }) =>
h(`div.heading-wrapper.level-${tagName}`, {
tabIndex: -1,
}),
content: (heading) => [
h(
`span.anchor-icon`,
undefined,
h(
"svg",
{
width: 18,
height: 18,
version: 1.1,
viewBox: "0 0 16 16",
xlmns: "http://www.w3.org/2000/svg",
ariaHidden: "true",
"data-filter": "none",
},
h("path", {
fillRule: "evenodd",
fill: "currentcolor",
d: "M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z",
})
)
),
createAnchorLabel(toString(heading)),
],
},
],
],
}),
],
trailingSlash: "ignore",
markdown: {
syntaxHighlight: "prism",
},
vite: {
ssr: {
external: ["svgo"],
},
build: {
rollupOptions: {
output: {
entryFileNames: `[name].[hash].js`,
chunkFileNames: `chunks/[name].[hash].js`,
assetFileNames: `assets/[hash].[ext]`,
},
},
},
},
});

31
codegen.ts Normal file
View File

@ -0,0 +1,31 @@
import type { CodegenConfig } from "@graphql-codegen/cli";
const config: CodegenConfig = {
schema: [
{
[`${process.env.DIRECTUS_URL}/graphql`]: {
headers: {
Authorization: `Bearer ${process.env.DIRECTUS_TOKEN}`,
},
},
},
],
documents: ["src/**/*.ts"],
ignoreNoDocuments: true,
generates: {
"./src/graphql/": {
preset: "client",
config: {
documentMode: "string",
},
},
"./schema.graphql": {
plugins: ["schema-ast"],
config: {
includeDirectives: true,
},
},
},
};
export default config;

17
compose.yml Normal file
View File

@ -0,0 +1,17 @@
services:
yarkov-tech-node:
container_name: yarkov-tech-node
restart: unless-stopped
image: sergeyyarkov/yarkovtech:latest
networks:
- nginx_net
env_file: .env
build:
context: ./
dockerfile: Dockerfile
ports:
- 9966
networks:
nginx_net:
external: true

@ -1 +0,0 @@
Subproject commit f6935ce7cb7e7926ebd39375b1ce7383bd08442b

View File

@ -1,3 +0,0 @@
[build]
command = "npm run build"
publish = "dist"

28604
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,50 +1,53 @@
{ {
"name": "yarkov.tech", "name": "yarkov.tech",
"version": "1.0.3", "private": false,
"private": true, "version": "3.0.1",
"description": "Personal website created with Astro.", "description": "Personal website created with Astro.",
"author": { "author": {
"name": "Sergey Yarkov", "name": "Sergey Yarkov",
"email": "serzh.yarkov@gmail.com", "email": "email@yarkov.tech",
"url": "https://yarkov.tech" "url": "https://yarkov.tech"
}, },
"type": "module",
"license": "MIT", "license": "MIT",
"type": "module",
"scripts": { "scripts": {
"dev": "astro dev --host", "dev": "astro dev",
"start": "astro dev", "build": "astro check && astro build",
"build": "astro build", "start": "node --env-file=.env ./dist/server/entry.mjs",
"preview": "astro preview --host", "preview": "astro preview",
"format": "prettier --write ./src/\"**/*.{js,jsx,ts,tsx,json,astro}\"", "astro": "astro",
"lint": "eslint '**/*.{js,mjs,ts,tsx}'" "telemetry-disable": "astro telemetry disable",
"codegen": "graphql-codegen --require dotenv/config --config codegen.ts --watch"
},
"dependencies": {
"@astrojs/check": "^0.9.5",
"@astrojs/node": "^9.5.0",
"@astrojs/rss": "^4.0.13",
"@astrojs/solid-js": "^5.1.3",
"@iconify-json/mdi": "^1.2.3",
"@types/markdown-it": "^14.1.2",
"astro": "^5.15.8",
"astro-icon": "^1.1.5",
"graphql": "^16.12.0",
"hast-util-select": "^6.0.4",
"markdown-it": "^14.1.0",
"markdown-it-anchor": "^9.2.0",
"markdown-it-prism": "^3.0.1",
"markdown-it-table-of-contents": "^1.1.0",
"mime-types": "^2.1.35",
"sharp": "^0.32.6",
"solid-js": "^1.7.12"
}, },
"devDependencies": { "devDependencies": {
"@astrojs/image": "^0.7.1", "@0no-co/graphqlsp": "^1.15.1",
"@astrojs/mdx": "^0.11.1", "@graphql-codegen/cli": "^6.1.0",
"@astrojs/rss": "^1.0.1", "@graphql-codegen/schema-ast": "^5.0.0",
"@astrojs/sitemap": "^1.0.0", "@parcel/watcher": "^2.5.1",
"@astrojs/solid-js": "^1.1.0", "@types/html-escaper": "^3.0.4",
"@types/html-escaper": "^3.0.0", "@types/mime-types": "^2.1.4",
"@types/mdx": "^2.0.2", "@types/remark-prism": "^1.3.7",
"@typescript-eslint/eslint-plugin": "^5.38.0", "dotenv": "^17.2.3",
"@typescript-eslint/parser": "^5.38.0", "sass": "^1.68.0",
"astro": "^1.3.0", "typescript": "^5.9.3"
"astro-compress": "^1.0.8",
"astro-icon": "^0.7.3",
"eslint": "^8.23.1",
"eslint-plugin-solid": "^0.7.3",
"hast-util-to-string": "^2.0.0",
"hastscript": "^7.0.2",
"html-escaper": "^3.0.3",
"mime-types": "^2.1.35",
"netlify-plugin-minify-html": "^0.3.1",
"prettier": "^2.7.1",
"prettier-plugin-astro": "^0.5.4",
"rehype-autolink-headings": "^6.1.1",
"rehype-slug": "^5.0.1",
"remark-gfm": "^3.0.1",
"remark-smartypants": "^2.0.0",
"sass": "^1.55.0",
"solid-js": "^1.5.5"
} }
} }

View File

@ -1,4 +1,4 @@
User-agent: * User-agent: *
Allow: / Allow: /
Sitemap: https://yarkov.tech/sitemap-index.xml Sitemap: https://yarkov.tech/sitemap.xml

2570
schema.graphql Normal file

File diff suppressed because it is too large Load Diff

15
siteconfig.json Normal file
View File

@ -0,0 +1,15 @@
{
"globalTitle": "Sergey Yarkov",
"articles": {
"recentLimit": 5
},
"isSiteUnderConstruction": false,
"contacts": {
"email": "serzh.yarkov@gmail.com",
"telegram": "https://t.me/sergeyyarkov",
"github": "https://github.com/sergeyyarkov"
},
"ymCounter": 90034656,
"name": "yarkov.tech",
"author": "Sergey Yarkov"
}

42
src/actions/index.ts Normal file
View File

@ -0,0 +1,42 @@
import { ActionError, defineAction } from "astro:actions";
import { z } from "astro/zod";
import { createAppeal, getLatestAppealsByClientIp } from "../queries";
const CREATE_APPEAL_LIMIT_HRS = 1;
const APPEALS_LAST_HRS_LIMIT = 2;
export const server = {
appeal: defineAction({
accept: "form",
input: z.object({
name: z.string(),
email: z.string().email(),
subject: z.string(),
message: z.string(),
}),
handler: async (data, ctx) => {
const currentDate = new Date();
const latestAppeals = await getLatestAppealsByClientIp(ctx.clientAddress, 5);
const appealsLastHrs = latestAppeals.filter((a) => {
const hourDiff = (currentDate.getTime() - new Date(a.date_created).getTime()) / (1000 * 60 * 60);
return hourDiff <= CREATE_APPEAL_LIMIT_HRS;
});
if (appealsLastHrs.length >= APPEALS_LAST_HRS_LIMIT) {
throw new ActionError({
code: "TOO_MANY_REQUESTS",
message: "Appeal create limit exceeded.",
});
}
const appeal = await createAppeal({ ...data, client_ip: ctx.clientAddress });
if (appeal) return true;
throw new ActionError({
code: "INTERNAL_SERVER_ERROR",
message: "Unable to create appeal.",
});
},
}),
};

View File

@ -0,0 +1,12 @@
---
import { getLanguageFromURL } from "@i18n/utils";
import { getAboutMe } from "../queries/global";
import { markdownToHTML } from "../utils/markdown";
import ArticleContent from "@components/ArticleContent.astro";
const pageLang = getLanguageFromURL(Astro.url.pathname);
const data = await getAboutMe(pageLang);
const aboutMeHtmlContent = await markdownToHTML(data?.about || "");
---
<ArticleContent set:html={aboutMeHtmlContent} />

View File

@ -1,30 +0,0 @@
---
/**
* This components is used in article layout to display links in alternative lanugages.
*/
import { DEFAULT_LANGUAGE } from "@root/config";
import { getLanguageFromURL } from "@root/utils";
export interface Props extends astroHTML.JSX.AnchorHTMLAttributes {
lang: LanguageKeys;
}
const { pathname } = Astro.url;
const siteLang = getLanguageFromURL(pathname);
const { lang, ...attrs } = Astro.props as Props;
let href: string;
if (lang === DEFAULT_LANGUAGE) {
href = `/${pathname.split("/").slice(2).join("/")}`;
} else {
href = `/${lang}/`;
if (siteLang !== DEFAULT_LANGUAGE) {
href += `${pathname.split("/").slice(2).join("/")}`;
} else {
href += `${pathname.split("/").slice(1).join("/")}`;
}
}
---
<a href={href} {...attrs}>
<slot />
</a>

View File

@ -1 +0,0 @@
export { default } from "./AlternateLangLink.astro";

View File

@ -0,0 +1,19 @@
---
import { getSiteSettings } from '@/src/queries';
const siteSettings = await getSiteSettings();
---
{siteSettings ? <script type="text/javascript" define:vars={{ counter: siteSettings.ym_counter }} is:inline>
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
var z = null;m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
});
</script> : null}

View File

@ -0,0 +1,53 @@
---
import UIString from "./UIString.astro";
interface Props {
url: string;
id: string;
lang: LanguageKeys;
}
const { url, id, lang } = Astro.props as Props;
---
<footer itemscope itemtype="http://schema.org/UserComments">
<h2><UIString key={"articlePost.comments"} />:</h2>
<div id="remark42"></div>
</footer>
<script is:inline define:vars={{ url, id, lang }}>
window.remark_config = {
host: "https://remark.yarkov.tech",
site_id: "remark",
theme: window.theme,
show_email_subscription: true,
url,
locale: lang,
no_footer: true,
};
var e = document.getElementById("remark42");
if ("IntersectionObserver" in window) {
var t = new IntersectionObserver((e) => {
e.forEach((e) => {
if (e.isIntersecting) {
((e, n) => {
for (var o = 0; o < e.length; o++) {
var r = n.createElement("script"),
c = ".js",
d = n.head || n.body;
("noModule" in r ? ((r.type = "module"), (c = ".mjs")) : (r.async = !0),
(r.defer = !0),
(r.src = remark_config.host + "/web/" + e[o] + c),
d.appendChild(r));
}
})(remark_config.components || ["embed"], document);
t.unobserve(e.target);
}
});
});
t.observe(e);
}
window.addEventListener("onthemetoggled", (e) => window.REMARK42.changeTheme(e.detail));
</script>

View File

@ -1,29 +0,0 @@
---
import UIString from "../UIString";
---
<footer>
<h2><UIString key={"articlePost.comments"} /></h2>
<div id="comments"></div>
</footer>
<script>
const $commentsWrapper = document.getElementById("comments");
const $commentsScript = document.createElement("script");
$commentsScript.async = true;
$commentsScript.src = "https://utteranc.es/client.js";
$commentsScript.setAttribute("repo", "sergeyyarkov/comments");
$commentsScript.setAttribute("issue-term", "title");
$commentsScript.setAttribute("label", "Comment");
$commentsScript.setAttribute("id", "utterances");
$commentsScript.setAttribute("crossorigin", "anonymous");
if (window.theme) {
$commentsScript.setAttribute("theme", theme === "dark" ? "dark-blue" : "github-light");
} else {
$commentsScript.setAttribute("theme", "github-light");
}
if ($commentsWrapper) $commentsWrapper.appendChild($commentsScript);
</script>

View File

@ -1 +0,0 @@
export { default } from "./ArticleComments.astro";

View File

@ -0,0 +1,271 @@
---
import { useTranslation } from "../i18n/utils";
const t = useTranslation(Astro);
const tocTitle = t("article.tableOfContents");
---
<div itemprop='articleBody' class='article-content'><slot /></div>
<script is:inline define:vars={{ tocTitle }}>
var $toc = document.querySelector(".toc");
if ($toc) {
$toc.querySelector("summary").textContent = tocTitle;
document.querySelector("body")?.addEventListener("click", () => $toc?.removeAttribute("open"));
}
</script>
<style lang='scss' is:global>
.article-content {
padding-top: 20px;
& h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 3rem;
margin-bottom: 1rem;
padding-bottom: 5px;
}
& p,
em,
q {
line-height: var(--line-height-base);
font-size: var(--font-size-lg);
}
& p {
margin: 1.5rem 0;
}
& ul,
ol {
padding-left: 1.5rem;
line-height: var(--line-height-base);
margin: 1.5rem 0;
& li {
font-size: var(--font-size-lg);
line-height: var(--line-height-base);
margin-bottom: 0.5rem;
padding-left: 0.25rem;
}
}
& q {
font-style: italic;
quotes: "« " " »";
}
& figure {
margin: 0 0 1em;
& figcaption {
color: var(--color-gray-400);
}
}
& hr {
background-color: var(--border-color);
margin: 40px 0;
border: none;
height: 1px;
}
& pre {
font-size: var(--font-size-sm);
border-radius: var(--border-radius-md);
}
& :not(pre) > code {
-webkit-font-smoothing: subpixel-antialiased;
background: var(--background-inline-code);
border-radius: var(--border-radius-lg);
font-size: 1rem;
font-weight: 500;
font-family: "IBM Plex Mono", monospace;
padding: 0.2rem 0.3rem;
}
& figcaption {
font-style: italic;
font-size: 1em;
text-align: center;
margin: 0.7rem 0;
}
& .table-wrapper {
overflow-x: auto;
margin-bottom: 1.25rem;
}
& table {
display: table;
border-radius: var(--border-radius-md);
min-width: 100%;
font-size: var(--font-size-md);
border: 1px solid var(--border-color);
border-collapse: separate;
border-spacing: 0;
margin: 5px 0;
& thead th {
background-color: var(--background-card);
border-top-left-radius: var(--border-radius-md);
border-top-right-radius: var(--border-radius-md);
}
& td,
th {
border-bottom: 1px solid var(--border-color);
padding: 0.5rem;
text-align: left;
}
& tbody tr:last-child td {
border: none;
}
}
& ul {
& li {
list-style: disc;
& li {
list-style-type: circle;
}
&::marker {
color: var(--color-blue-500);
font-size: 1.3rem;
line-height: var(--line-height-none);
}
}
}
& blockquote {
margin: 1.5rem 0;
font-style: italic;
border-left: 0.25rem solid var(--border-color);
padding-left: 1rem;
}
& .heading-wrapper {
border-bottom: 1px solid var(--border-color);
margin: 3rem 0 1rem 0;
padding-bottom: 0.35rem;
& h2 {
font-size: var(--font-size-2xl);
}
& h3 {
font-size: var(--font-size-xl);
}
& h4 {
font-size: var(--font-size-lg);
}
& h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
}
}
& .heading-wrapper {
display: flex;
align-items: center;
flex-direction: row-reverse;
justify-content: flex-end;
margin-inline-start: 1px;
& .anchor-link {
position: relative;
display: inline-flex;
text-decoration: none;
justify-content: center;
align-items: center;
opacity: 0;
& .anchor-icon {
position: absolute;
left: -25px;
top: -13px;
}
& svg {
vertical-align: middle;
}
}
& .anchor-label {
position: absolute;
width: 0;
height: 0;
padding: 0;
overflow: hidden;
white-space: nowrap;
}
&:hover {
& .anchor-link {
opacity: 1;
}
}
}
& .languages-available {
margin: 25px 0;
font-size: var(--font-size-lg);
& a:not(:last-child)::after {
content: ",";
}
}
.toc {
cursor: pointer;
display: block;
position: absolute;
& summary {
font-size: var(--font-size-lg);
}
& nav {
background-color: var(--background-card);
border: 1px solid var(--border-color);
border-radius: var(--border-radius-lg);
margin-top: 10px;
padding: 10px 16px;
& ul {
margin: 6px 0;
padding-left: 0;
margin-left: 0;
& a {
display: block;
// margin-bottom: 10px;
color: var(--font-color);
text-decoration: none;
font-size: var(--font-size-md);
&:hover {
color: var(--color-blue-500);
}
}
& li {
list-style: none;
padding: 0;
}
& li ul {
margin-left: 15px;
}
}
}
}
}
@media screen and (max-width: 800px) {
.article-content {
& .heading-wrapper {
flex-direction: row;
justify-content: flex-start;
& .anchor-link {
& .anchor-icon {
left: 5px;
}
}
}
}
}
</style>

View File

@ -1,5 +0,0 @@
---
import "./ArticleContent.scss";
---
<div itemprop="articleBody" class="article-content"><slot /></div>

View File

@ -1,214 +0,0 @@
.article-content {
& p,
& em,
& q {
line-height: var(--line-height-base);
font-size: var(--font-size-lg);
}
& h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 3rem;
margin-bottom: 1rem;
padding-bottom: 5px;
}
& ul {
padding-left: 1.5rem;
line-height: var(--line-height-base);
margin-bottom: 1.5rem;
margin-top: 0;
& li {
font-size: var(--font-size-lg);
line-height: var(--line-height-base);
margin-bottom: 0.5rem;
padding-left: 0.25rem;
}
}
& q {
font-style: italic;
quotes: "« " " »";
}
& a {
color: var(--font-color);
text-decoration: underline;
text-decoration-color: var(--color-blue-500);
text-underline-offset: 2.2px;
text-decoration-thickness: 2px;
font-weight: 500;
&:hover {
color: var(--color-blue-500);
text-decoration-thickness: 2px;
}
}
& figure {
margin: 0 0 1em;
}
& hr {
background-color: var(--border-color);
margin: 40px 0;
border: none;
height: 1px;
}
& pre {
font-size: var(--font-size-sm);
border-radius: var(--border-radius-md);
}
& :not(pre) > code {
-webkit-font-smoothing: subpixel-antialiased;
background: var(--background-inline-code);
border-radius: var(--border-radius-lg);
font-size: 1rem;
font-weight: 500;
font-family: "IBM Plex Mono", monospace;
padding: 0.2rem 0.3rem;
}
& figcaption {
font-style: italic;
font-size: 1em;
text-align: center;
margin: 0.7rem 0;
}
& .table-wrapper {
overflow-x: auto;
margin-bottom: 1.25rem;
}
& table {
display: table;
border-radius: var(--border-radius-md);
min-width: 100%;
font-size: var(--font-size-md);
border: 1px solid var(--border-color);
border-collapse: separate;
border-spacing: 0;
margin: 5px 0;
& thead th {
background-color: var(--background-card);
border-top-left-radius: var(--border-radius-md);
border-top-right-radius: var(--border-radius-md);
}
& td,
th {
border-bottom: 1px solid var(--border-color);
padding: 0.5rem;
text-align: left;
}
& tbody tr:last-child td {
border: none;
}
}
& li {
list-style: disc;
& li {
list-style-type: circle;
}
&::marker {
color: var(--color-blue-500);
font-size: 1.3rem;
line-height: var(--line-height-none);
}
}
& blockquote {
margin: 1.5rem 0;
font-style: italic;
border-left: 0.25rem solid var(--border-color);
padding-left: 1rem;
}
& .heading-wrapper {
border-bottom: 1px solid var(--border-color);
margin: 3rem 0 1rem 0;
padding-bottom: 0.35rem;
& h2 {
font-size: var(--font-size-2xl);
}
& h3 {
font-size: var(--font-size-xl);
}
& h4 {
font-size: var(--font-size-lg);
}
& h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
}
}
& .heading-wrapper {
display: flex;
align-items: center;
flex-direction: row-reverse;
justify-content: flex-end;
margin-inline-start: 1px;
& .anchor-link {
position: relative;
display: inline-flex;
text-decoration: none;
justify-content: center;
align-items: center;
opacity: 0;
& .anchor-icon {
position: absolute;
left: -25px;
top: -13px;
}
& svg {
vertical-align: middle;
}
}
& .anchor-label {
position: absolute;
width: 0;
height: 0;
padding: 0;
overflow: hidden;
white-space: nowrap;
}
&:hover {
& .anchor-link {
opacity: 1;
}
}
}
& .languages-available {
margin: 25px 0;
font-size: var(--font-size-lg);
}
}
@media screen and (max-width: 800px) {
.article-content {
& .heading-wrapper {
flex-direction: row;
justify-content: flex-start;
& .anchor-link {
& .anchor-icon {
left: 5px;
}
}
}
}
}

View File

@ -1 +0,0 @@
export { default } from "./ArticleContent.astro";

View File

@ -0,0 +1,31 @@
---
import { Image } from "astro:assets";
export interface Props {
src: string;
alt?: string;
}
const { src, alt } = Astro.props as Props;
---
<div class="cover">
<Image
itemprop="image"
src={src}
width={700}
height={400}
sizes="(max-width: 450px) 450px, 700px"
format="webp"
alt={alt ? alt : ""}
/>
</div>
<style lang="scss">
.cover {
margin: 20px 0;
& figure {
margin: 0;
}
}
</style>

View File

@ -1,34 +1,41 @@
/* eslint-disable solid/reactivity */
import type { Component } from "solid-js"; import type { Component } from "solid-js";
import { createDateFormatter } from "@utils/date"; import { createRelativeArticleUrl, createDateFormatter } from "@root/utils";
import { DEFAULT_LANGUAGE, URL_BLOG_PREFIX } from "@root/constants";
import "./ArticleItem.scss"; import "./ArticleItem.scss";
import { DEFAULT_LANGUAGE } from "@root/config"; import { Article_Translations } from "@/src/graphql/graphql";
export type ArticleItemProps = { export type ArticleItemProps = {
data: ArticleType; title: Article_Translations["title"];
lang: string; pub_date: Article_Translations["pub_date"];
slug: Article_Translations["slug"];
languages_code: Article_Translations["languages_code"];
pageLang: string;
}; };
export const ArticleItem: Component<ArticleItemProps> = (props) => { const ArticleItem: Component<ArticleItemProps> = (props) => {
const isNonDefaultLanguage = props.data.lang && props.data.lang !== props.lang; const { title, pub_date: pubDate, slug, languages_code, pageLang } = props;
const hrefLangPrefix = props.data.lang && props.data.lang !== DEFAULT_LANGUAGE ? `/${props.data.lang}` : ""; const articleLang = languages_code?.code.split("-")[0] || DEFAULT_LANGUAGE;
const href = createRelativeArticleUrl({ pubDate, slug, articleLang }, URL_BLOG_PREFIX);
return ( return (
<article class="article-item"> <article
<a itemprop="blogPosts"
href={`${hrefLangPrefix}/blog/${new Date(props.data.published_at).toLocaleDateString("en-CA")}/${ itemscope
props.data.slug itemtype="http://schema.org/BlogPosting"
}/`} class="article-item"
> >
<a href={href}>
<div class="flex"> <div class="flex">
<h3>{props.data.title}</h3> <h3 itemprop="headline">{title}</h3>
{isNonDefaultLanguage && <sup>{props.data.lang.toLocaleUpperCase()}</sup>} {articleLang !== pageLang && <sup>{articleLang.toLocaleUpperCase()}</sup>}
</div> </div>
<p> <p>
<time datetime={props.data.published_at.toString()}> <time datetime={pubDate}>{createDateFormatter(pageLang).format(new Date(pubDate))}</time>
{createDateFormatter(props.lang).format(new Date(props.data.published_at))}
</time>
</p> </p>
</a> </a>
</article> </article>
); );
}; };
export default ArticleItem;

View File

@ -1 +1 @@
export * from "./ArticleItem"; export { default } from "./ArticleItem";

View File

@ -0,0 +1,193 @@
---
import { Icon } from "astro-icon/components";
import { createDateFormatter } from "@root/utils";
import ArticleCover from "@components/ArticleCover.astro";
import ArticleComments from "@components/ArticleComments.astro";
import TranslatedLink from "@components/TranslatedLink.astro";
import AvailableOnLangs from "@components/AvailableOnLangs.astro";
import { useTranslation, getLanguageFromURL } from "@i18n/utils";
import { DIRECTUS_URL } from "astro:env/server";
import { Article_TranslationsQuery } from "../graphql/graphql";
export type Props = {
article: Article_TranslationsQuery["article_translations"][0];
lang: string;
};
const { article } = Astro.props as Props;
const pageLang = getLanguageFromURL(Astro.url.pathname);
const canonicalUrl = new URL(Astro.url.pathname, Astro.site);
const {
cover_image,
title,
author,
description,
tags,
pub_date,
slug,
views,
article_id: articleTranslations,
} = article;
const t = useTranslation(Astro);
// const articleCodeLangs = articleTranslations?.translations?.map((t) => t?.languages_code?.code);
---
<article itemscope itemtype="http://schema.org/BlogPosting" class="article">
<header>
<div>
{
tags && (
<div class="tags">
<ul itemprop="keywords">
{tags.map((tag) => (
<li>
<TranslatedLink rel="tag" to={`/articles/?tags=${tag?.tag_id?.title}`}>
{tag?.tag_id?.title}
</TranslatedLink>
</li>
))}
</ul>
</div>
)
}
<div class="views">
<Icon name="eye" width="21" height="21" />
<span><span>{views}</span>&nbsp;{t("article.views")}</span>
</div>
</div>
<div class="heading">
<h1 itemprop="headline">{title}</h1>
</div>
<div class="published">
<time itemprop="datePublished" datetime={pub_date}>
{createDateFormatter(pageLang).format(new Date(pub_date))}&nbsp;
</time>
<span itemprop="author">{`${author?.first_name} ${author?.last_name}`}</span>
</div>
{cover_image && <ArticleCover src={`${DIRECTUS_URL}/assets/${cover_image.filename_disk}`} alt={title} />}
<div class="description">
<p>
{description}
</p>
</div>
<AvailableOnLangs articles={articleTranslations} />
</header>
<slot />
<ArticleComments lang={pageLang} url={canonicalUrl.href} id={slug} />
</article>
<!-- <script define:vars={{ articleCodeLangs }} is:inline>
console.log(navigator.language, articleCodeLangs);
</script> -->
<style lang="scss" is:global>
.article {
& header {
& div:nth-child(1) {
display: flex;
justify-content: space-between;
align-items: center;
& .views {
display: flex;
align-items: center;
& span {
margin-left: 3.5px;
font-size: var(--font-size-sm);
color: var(--font-color-grayer);
}
}
}
& .heading {
margin-top: 1.125rem;
& h1 {
font-weight: 600;
font-size: 2.125rem;
}
& p {
font-size: 1.125rem;
line-height: var(--line-height-base);
}
}
& .tags {
font-size: var(--font-size-sm);
text-transform: uppercase;
& ul {
display: flex;
flex-wrap: wrap;
column-gap: 7px;
row-gap: 7px;
& li:not(:last-child) a::after {
content: ",";
}
}
}
& .published {
margin-bottom: 1.25em;
color: var(--font-color-gray);
}
}
& a {
color: var(--font-color);
text-decoration: underline;
text-decoration-color: var(--color-blue-500);
text-underline-offset: 2.2px;
text-decoration-thickness: 2px;
font-weight: 500;
&:hover {
color: var(--color-blue-500);
text-decoration-thickness: 2px;
}
}
& .cover {
margin: 20px 0;
& figure {
margin: 0;
}
}
& .description p {
line-height: var(--line-height-base);
font-size: var(--font-size-lg);
}
& footer {
margin-top: 5rem;
}
& img {
border-radius: var(--border-radius-lg);
display: block;
margin: 0 auto;
max-width: 100%;
height: auto;
&:not([src*=".svg"]) {
filter: var(--image-filter);
}
}
}
@media screen and (max-width: 560px) {
.article {
& header {
& div:nth-child(1) {
flex-direction: column;
align-items: flex-start;
& .tags {
margin-bottom: 15px;
}
}
& .heading h1 {
font-size: 2rem;
}
}
}
}
</style>

View File

@ -1,62 +0,0 @@
---
import { Picture } from "@astrojs/image/components";
import { createDateFormatter } from "@root/utils";
import { isURL } from "@utils/string";
import ArticleComments from "@components/ArticleComments";
import TranslatedLink from "../TranslatedLink";
import "./ArticlePost.scss";
export type Props = {
data: ArticleType;
lang: string;
};
const { data, lang } = Astro.props as Props;
const { title, coverImage, tags, author, published_at } = data;
---
<article itemscope itemtype="http://schema.org/BlogPosting" class="article">
<header>
<div class="tags">
<ul itemprop="keywords">
{
tags.map((tag) => (
<li>
<TranslatedLink rel="tag" to={`/articles/?tags=${tag.toLocaleLowerCase()}`}>{`${tag}${
tags.at(-1) === tag ? "" : ","
}`}</TranslatedLink>
</li>
))
}
</ul>
</div>
<div class="heading">
<h1 itemprop="headline">{title}</h1>
</div>
<div class="published">
<time itemprop="datePublished" datetime={published_at}
>{createDateFormatter(lang).format(new Date(published_at))}
</time>
<span itemprop="author">{author}</span>
</div>
{
coverImage && (
<div>
<figure>
<Picture
itemprop="image"
src={isURL(coverImage) ? coverImage : `../../../content/assets/images/${coverImage}`}
sizes="(max-width: 500px) 500px, 700px"
widths={[500, 700]}
formats={["webp"]}
aspectRatio={"16:9"}
alt={title}
/>
</figure>
</div>
)
}
</header>
<slot />
<ArticleComments />
</article>

View File

@ -1,57 +0,0 @@
.article {
& header {
& .heading {
margin-top: 1.125rem;
& h1 {
font-weight: 600;
font-size: 2.125rem;
}
& p {
font-size: 1.125rem;
line-height: var(--line-height-base);
}
}
& .tags {
font-size: var(--font-size-sm);
text-transform: uppercase;
& ul {
display: flex;
flex-wrap: wrap;
column-gap: 7px;
row-gap: 7px;
}
}
& .published {
margin-bottom: 1.25em;
color: var(--font-color-gray);
}
}
& img {
border-radius: var(--border-radius-md);
display: block;
margin: 0 auto;
max-width: 100%;
height: auto;
}
& figure {
margin: 0;
}
& footer {
margin-top: 5rem;
}
}
@media screen and (max-width: 560px) {
.article {
& header .heading h1 {
font-size: 2rem;
}
}
}

View File

@ -1 +0,0 @@
export { default } from "./ArticlePost.astro";

View File

@ -0,0 +1,14 @@
---
import { useTranslation, getLanguageFromURL } from "@i18n/utils";
import * as utils from "@utils/article";
import List from "@components/ArticlesList";
import { getArticleList } from "@root/queries/article";
const t = useTranslation(Astro);
const pageLang = getLanguageFromURL(Astro.url.pathname);
const data = await getArticleList();
const articles = utils.filterArticlesByPageLang(data, pageLang);
const articleBlocks = utils.formatToArticleBlocks(articles);
---
<List client:load i18n={{ "articles.empty": t("articles.empty") }} articles={articleBlocks} pageLang={pageLang} />

View File

@ -1,7 +1,4 @@
.articles { .articles {
&-tags {
margin-bottom: 45px;
}
&-list { &-list {
&__wrapper { &__wrapper {
margin-top: 40px; margin-top: 40px;

View File

@ -1,97 +1,93 @@
import type { Component } from "solid-js"; import type { Component } from "solid-js";
import { createSignal, createEffect, For } from "solid-js"; import { createSignal, createEffect, For } from "solid-js";
import { search, selectedTags } from "@stores/searchStore"; import { search, selectedTags, setCount } from "@stores/searchStore";
import { findArticlesBySearch, findArticlesByTags, sortArtcilesByDate } from "@utils/articles"; import ArticleItem from "@components/ArticleItem";
import { ArticleItem } from "@components/ArticleItem"; import { ArticleQuery } from "@/src/graphql/graphql";
import SearchInput from "@components/SearchInput";
import TagsList from "@components/TagsList";
import "./ArticlesList.scss"; import "./ArticlesList.scss";
type UiStringsType = { type UiStringsType = { "articles.empty": string };
"input.search": string; type Articles = ArticleQuery["article"][0]["translations"];
"articles.empty": string; type ArticlesBlockType = Record<string, Articles>;
};
type ArticlesListProps = { type ArticlesListProps = {
data: { articles: ArticlesBlockType;
articles: ArticleBlockType; pageLang: string;
tags: string[];
};
lang: string;
i18n: UiStringsType; i18n: UiStringsType;
}; };
const ArticlesList: Component<ArticlesListProps> = (props) => { const ArticlesList: Component<ArticlesListProps> = (props) => {
// eslint-disable-next-line solid/reactivity const [articles, setArticles] = createSignal<ArticlesBlockType>(props.articles);
const [articles, setArticles] = createSignal<ArticleBlockType>(props.data.articles);
/** const isEmpty = () => Object.keys(articles()).length === 0;
* Sort articles by year in descending order
*/ const sortByYears = (articles: ArticlesBlockType) => {
const sortYears = (articles: ArticleBlockType) => {
return Object.keys(articles) return Object.keys(articles)
.map(Number) .map(Number)
.sort((a, b) => b - a); .sort((a, b) => b - a);
}; };
const isEmpty = () => Object.keys(articles()).length === 0; const searchArticles = ({
const getLength = () => Object.values(articles()).flat().length; params: { search, tags },
}: {
params: { search: string; tags?: string[] };
}): ArticlesBlockType => {
const filter = (cb: (articles: Articles) => Articles) => {
return Object.fromEntries(
Object.keys(props.articles)
.map((year) => [year, cb(props.articles[year])])
.filter((articles) => articles[1]?.length !== 0)
);
};
return filter((articles) => {
let filtered = articles?.filter(
(a) => a && a.title.toLocaleLowerCase().includes(search.trim().toLocaleLowerCase())
);
if (tags && tags.length > 0) {
filtered = filtered?.filter((a) =>
tags.some((t) => {
return a?.tags?.map((t) => t?.tag_id?.title).includes(t);
})
);
}
return filtered;
});
};
createEffect(() => { createEffect(() => {
let filtered = props.data.articles; const filtered = searchArticles({ params: { search: search(), tags: selectedTags() } });
setArticles(filtered);
/** setCount(Object.values(filtered).flat().length);
* Find articles by title
*/
if (search()) {
filtered = findArticlesBySearch(search().trim(), filtered);
setArticles(filtered);
}
/**
* Find articles by selected tags
*/
if (selectedTags().length !== 0) {
filtered = findArticlesByTags(selectedTags(), filtered);
setArticles(filtered);
return;
}
/**
* Set filtered variable as default value
*/
if (!search() && selectedTags().length === 0) {
filtered = props.data.articles;
setArticles(filtered);
}
}); });
return ( return (
<> <>
<SearchInput count={getLength()} placeholder={props.i18n["input.search"]} /> <div itemscope itemtype="http://schema.org/Blog" class="articles-list">
<TagsList data={props.data.tags} /> {!isEmpty() ? (
<div class="articles-list"> <For each={sortByYears(articles())}>
{isEmpty() ? ( {(year) => (
<div class="articles-list__wrapper">
<h2>{year}</h2>
<For each={articles()[year]}>
{(a) =>
a && (
<ArticleItem
slug={a.slug}
title={a.title}
languages_code={a.languages_code}
pub_date={a.pub_date}
pageLang={props.pageLang}
/>
)
}
</For>
</div>
)}
</For>
) : (
<div class="articles-list__empty"> <div class="articles-list__empty">
<p>{props.i18n["articles.empty"]}</p> <p>{props.i18n["articles.empty"]}</p>
</div> </div>
) : (
<For
each={sortYears(articles())}
children={(year) => {
return (
<div class="articles-list__wrapper">
<h2>{year}</h2>
<For
each={sortArtcilesByDate(articles()[year])}
children={(article) => <ArticleItem lang={props.lang} data={article} />}
/>
</div>
);
}}
/>
)} )}
</div> </div>
</> </>

View File

@ -1,14 +1,11 @@
import type { Component, JSX } from "solid-js"; import type { Component, JSX } from "solid-js";
import { createEffect } from "solid-js"; import { createEffect } from "solid-js";
import { search, setSearch } from "@stores/searchStore"; import { search, setSearch, count } from "@stores/searchStore";
import * as utils from "@utils/history"; import * as utils from "@utils/history";
import "./SearchInput.scss"; import "./SearchInput.scss";
type SearchInputProps = { type UiStringsType = { "input.search": string };
count: number; type SearchInputProps = { i18n: UiStringsType };
placeholder?: string | undefined;
};
const SearchInput: Component<SearchInputProps> = (props) => { const SearchInput: Component<SearchInputProps> = (props) => {
/** /**
@ -16,7 +13,6 @@ const SearchInput: Component<SearchInputProps> = (props) => {
*/ */
const resetSearch = () => { const resetSearch = () => {
const url = utils.deleteParamFromUrl("search"); const url = utils.deleteParamFromUrl("search");
setSearch(""); setSearch("");
history.replaceState(null, "", url); history.replaceState(null, "", url);
}; };
@ -33,7 +29,6 @@ const SearchInput: Component<SearchInputProps> = (props) => {
} }
const url = utils.setParamToUrl("search", value.trim()); const url = utils.setParamToUrl("search", value.trim());
history.replaceState(null, "", `${location.pathname}?${url}`); history.replaceState(null, "", `${location.pathname}?${url}`);
setSearch(value); setSearch(value);
}; };
@ -54,18 +49,25 @@ const SearchInput: Component<SearchInputProps> = (props) => {
return ( return (
<div class="search-input"> <div class="search-input">
<svg width="25" height="24" viewBox="0 0 25 24" xmlns="http://www.w3.org/2000/svg" data-filter="none"> <svg
width="25"
height="24"
viewBox="0 0 25 24"
xmlns="http://www.w3.org/2000/svg"
data-filter="none"
>
<path d="M10.6026 3.60001C11.8798 3.59993 13.1316 3.94283 14.2172 4.5901C15.3028 5.23736 16.179 6.16331 16.7472 7.26368C17.3154 8.36405 17.5531 9.59517 17.4334 10.8184C17.3137 12.0417 16.8415 13.2085 16.0699 14.1876L21.2427 19.164C21.4085 19.3248 21.5053 19.5399 21.5135 19.7662C21.5218 19.9926 21.4411 20.2137 21.2874 20.3853C21.1337 20.5569 20.9184 20.6665 20.6845 20.6921C20.4505 20.7178 20.2151 20.6576 20.0253 20.5236L19.9205 20.436L14.7476 15.4596C13.8802 16.0922 12.8687 16.5172 11.7968 16.6994C10.7248 16.8815 9.62324 16.8157 8.58298 16.5074C7.54272 16.199 6.59366 15.6569 5.81422 14.9259C5.03478 14.1949 4.44733 13.296 4.10042 12.3034C3.7535 11.3108 3.65708 10.2531 3.81911 9.21757C3.98114 8.18204 4.39698 7.19847 5.03226 6.34812C5.66755 5.49778 6.50404 4.80506 7.47263 4.32721C8.44122 3.84936 9.51411 3.60009 10.6026 3.60001V3.60001ZM10.6026 5.40001C9.27934 5.40001 8.01025 5.90572 7.07454 6.80589C6.13884 7.70607 5.61316 8.92697 5.61316 10.2C5.61316 11.473 6.13884 12.6939 7.07454 13.5941C8.01025 14.4943 9.27934 15 10.6026 15C11.9259 15 13.195 14.4943 14.1307 13.5941C15.0664 12.6939 15.5921 11.473 15.5921 10.2C15.5921 8.92697 15.0664 7.70607 14.1307 6.80589C13.195 5.90572 11.9259 5.40001 10.6026 5.40001Z" /> <path d="M10.6026 3.60001C11.8798 3.59993 13.1316 3.94283 14.2172 4.5901C15.3028 5.23736 16.179 6.16331 16.7472 7.26368C17.3154 8.36405 17.5531 9.59517 17.4334 10.8184C17.3137 12.0417 16.8415 13.2085 16.0699 14.1876L21.2427 19.164C21.4085 19.3248 21.5053 19.5399 21.5135 19.7662C21.5218 19.9926 21.4411 20.2137 21.2874 20.3853C21.1337 20.5569 20.9184 20.6665 20.6845 20.6921C20.4505 20.7178 20.2151 20.6576 20.0253 20.5236L19.9205 20.436L14.7476 15.4596C13.8802 16.0922 12.8687 16.5172 11.7968 16.6994C10.7248 16.8815 9.62324 16.8157 8.58298 16.5074C7.54272 16.199 6.59366 15.6569 5.81422 14.9259C5.03478 14.1949 4.44733 13.296 4.10042 12.3034C3.7535 11.3108 3.65708 10.2531 3.81911 9.21757C3.98114 8.18204 4.39698 7.19847 5.03226 6.34812C5.66755 5.49778 6.50404 4.80506 7.47263 4.32721C8.44122 3.84936 9.51411 3.60009 10.6026 3.60001V3.60001ZM10.6026 5.40001C9.27934 5.40001 8.01025 5.90572 7.07454 6.80589C6.13884 7.70607 5.61316 8.92697 5.61316 10.2C5.61316 11.473 6.13884 12.6939 7.07454 13.5941C8.01025 14.4943 9.27934 15 10.6026 15C11.9259 15 13.195 14.4943 14.1307 13.5941C15.0664 12.6939 15.5921 11.473 15.5921 10.2C15.5921 8.92697 15.0664 7.70607 14.1307 6.80589C13.195 5.90572 11.9259 5.40001 10.6026 5.40001Z" />
</svg> </svg>
<input <input
onInput={onSearch} onInput={onSearch}
value={search()} value={search()}
type="search" type="search"
placeholder={props.placeholder || "Search article by title or description..."} name="search"
placeholder={props.i18n["input.search"] || "Search article by title..."}
autocapitalize="off" autocapitalize="off"
autocomplete="off" autocomplete="off"
/> />
<span>{props.count}</span> <span>{count()}</span>
</div> </div>
); );
}; };

View File

@ -1,15 +1,12 @@
import type { Component, JSX } from "solid-js"; import type { Component, JSX } from "solid-js";
import { For, createEffect } from "solid-js"; import { For, createEffect } from "solid-js";
import { selectedTags, setSelectedTags } from "@stores/searchStore"; import { selectedTags, setSelectedTags } from "@stores/searchStore";
import * as utils from "@utils/history"; import * as utils from "@utils/history";
type TagsListProps = { type TagsListProps = { tags: string[] };
data: string[];
};
const TagsList: Component<TagsListProps> = (props) => { const TagsList: Component<TagsListProps> = (props) => {
const isTagSelected = (tag: string) => selectedTags().includes(tag.toLocaleLowerCase()); const isTagSelected = (tag: string) => selectedTags().includes(tag);
/** /**
* Reset signal state and `tags` property in history state * Reset signal state and `tags` property in history state
@ -21,9 +18,11 @@ const TagsList: Component<TagsListProps> = (props) => {
history.replaceState(null, "", url); history.replaceState(null, "", url);
}; };
const onSelect: JSX.EventHandler<HTMLLIElement, PointerEvent> = (e) => { const onSelect: JSX.EventHandler<HTMLLIElement, MouseEvent> = (e) => {
const tag = e.target.getAttribute("data-tag"); const tag = e.target.getAttribute("data-tag");
if (!tag) return;
/** /**
* Delete tag from selected tags if already selected * Delete tag from selected tags if already selected
* and update param in url * and update param in url
@ -53,14 +52,13 @@ const TagsList: Component<TagsListProps> = (props) => {
}; };
createEffect(() => { createEffect(() => {
let param: string | string[] = new URLSearchParams(location.search).get("tags"); let param: string | null | string[] = new URLSearchParams(location.search).get("tags");
if (!param) { if (!param) {
resetSelected(); resetSelected();
return; return;
} }
/* to array */
param = param.split(","); param = param.split(",");
if (param.length === 0) { if (param.length === 0) {
@ -68,25 +66,15 @@ const TagsList: Component<TagsListProps> = (props) => {
return; return;
} }
const tags: string[] = []; setSelectedTags(props.tags.filter((t) => param?.includes(t)));
for (const tag of props.data) {
const isTagExist = param.includes(tag.toLocaleLowerCase());
if (isTagExist) {
tags.push(tag.toLocaleLowerCase());
}
}
setSelectedTags(tags);
}); });
return ( return (
<ul class="list-links"> <ul class="list-links">
<For <For
each={props.data} each={props.tags}
children={(tag) => ( children={(tag) => (
<li onClick={onSelect} class="btn-link" data-tag={tag.toLocaleLowerCase()} data-active={isTagSelected(tag)}> <li onClick={onSelect} class="btn-link" data-tag={tag} data-active={isTagSelected(tag)}>
{tag} {tag}
</li> </li>
)} )}

View File

@ -0,0 +1,43 @@
---
import { getLanguageFromURL, useTranslation } from "@root/i18n/utils";
import { createRelativeArticleUrl } from "@root/utils";
import { Article_TranslationsQuery } from "../graphql/graphql";
export interface Props {
articles: Article_TranslationsQuery["article_translations"][0]["article_id"];
}
const pageLang = getLanguageFromURL(Astro.url.pathname);
const t = useTranslation(Astro);
const { articles } = Astro.props;
---
{
articles && articles.translations && articles.translations?.length !== 1 && (
<div>
{t("article.availableOn")}:{" "}
{articles.translations
.filter((a) => a && a.languages_code?.code.split("-")[0] !== pageLang)
.map(
(a) =>
a && (
<a
href={`${createRelativeArticleUrl({ slug: a.slug, articleLang: `${a.languages_code?.code.split("-")[0]}`, pubDate: a.pub_date })}`}
>{`${a.languages_code?.name}`}</a>
)
)}
</div>
)
}
<style lang="scss">
div {
margin: 10px 0;
font-size: var(--font-size-lg);
& a {
&:not(:last-child)::after {
content: ",";
}
}
}
</style>

View File

@ -1,54 +1,69 @@
--- ---
import { SITE_METADATA } from "@root/config"; import "@styles/global.scss";
import { useTranslation } from "@i18n/utils"; import { SITE_METADATA } from "@root/constants";
import YaMetrika from "./Analytics/YaMetrika.astro";
import { useTranslation } from "@root/i18n/utils";
export interface Props { export interface Props {
title?: string | undefined; title?: string;
description?: string | undefined; description?: string;
canonicalUrl?: string | undefined; image?: string;
} }
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
const { title, description } = Astro.props;
const isDev = import.meta.env.DEV;
const t = useTranslation(Astro); const t = useTranslation(Astro);
const { title = SITE_METADATA.title, description, canonicalUrl } = Astro.props as Props;
--- ---
<head> <head>
<link rel="preconnect" href="https://fonts.googleapis.com" /> <!-- Fonts -->
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link rel='preconnect' href='https://fonts.googleapis.com' />
<link rel='preconnect' href='https://fonts.gstatic.com' crossorigin />
<link <link
href="https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono&display=swap" href='https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono&display=swap'
rel="preload" rel='preload'
as="style" as='style'
onload="this.rel='stylesheet'" onload={`this.rel='stylesheet'`}
/> />
{canonicalUrl && <link rel="canonical" href={canonicalUrl} />}
<meta charset="utf-8" /> <!-- Canonical URL -->
<meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel='canonical' href={canonicalURL.href} />
<title>{title}</title>
<meta name="title" content={title} /> <!-- Base metadata -->
<meta name="generator" content={Astro.generator} /> <meta charset='utf-8' />
<meta name="description" content={description || t("site.description")} /> <meta name='viewport' content='width=device-width, initial-scale=1' />
<meta name="theme-color" content={SITE_METADATA.themeColor} /> <title>{title || SITE_METADATA.title}</title>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<!-- Metadata -->
<meta name='title' content={title || SITE_METADATA.title} />
<meta name='generator' content={Astro.generator} />
<meta name='description' content={description || t("site.description")} />
<meta name='theme-color' content={SITE_METADATA.themeColor} />
<meta name='msapplication-TileColor' content='#da532c' />
<!-- Favicons -->
<link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.png' />
<link <link
rel="icon" rel='icon'
type="image/png" type='image/png'
sizes="32x32" sizes='32x32'
href="/favicon-light-32x32.png" href='/favicon-light-32x32.png'
media="(prefers-color-scheme: light)" media='(prefers-color-scheme: light)'
/> />
<link <link
rel="icon" rel='icon'
type="image/png" type='image/png'
sizes="16x16" sizes='16x16'
href="/favicon-light-16x16.png" href='/favicon-light-16x16.png'
media="(prefers-color-scheme: light)" media='(prefers-color-scheme: light)'
/> />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-dark-32x32.png" media="(prefers-color-scheme: dark)" /> <link rel='icon' type='image/png' sizes='32x32' href='/favicon-dark-32x32.png' media='(prefers-color-scheme: dark)' />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-dark-16x16.png" media="(prefers-color-scheme: dark)" /> <link rel='icon' type='image/png' sizes='16x16' href='/favicon-dark-16x16.png' media='(prefers-color-scheme: dark)' />
<link rel="manifest" href="/site.webmanifest" /> <link rel='manifest' href='/site.webmanifest' />
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5" /> <link rel='mask-icon' href='/safari-pinned-tab.svg' color='#5bbad5' />
<meta name="msapplication-TileColor" content="#da532c" /> <link rel='sitemap' href='/sitemap-index.xml' />
<slot /> <slot />
<script is:inline src="/assets/js/detect-theme.js"></script> <script is:inline src='/assets/js/detect-theme.js'></script>
{!isDev && <YaMetrika />}
</head> </head>

View File

@ -0,0 +1,22 @@
---
import { IS_SITE_UNDER_CONSTRUCTION } from "@root/constants";
import Header from "@components/Header.astro";
import Footer from "@components/Footer.astro";
import SiteContent from "@components/SiteContent.astro";
import UnderConstruction from "./UnderConstruction.astro";
---
<body>
{
IS_SITE_UNDER_CONSTRUCTION && (
<UnderConstruction>
&#128679;&nbsp; This web site is under development &nbsp;&#128679;
</UnderConstruction>
)
}
<Header />
<SiteContent>
<slot />
</SiteContent>
<Footer />
</body>

View File

@ -1,25 +0,0 @@
---
import { IS_SITE_UNDER_CONSTRUCTION } from "@root/config";
import Header from "@components/Header";
import Footer from "@components/Footer";
import SiteContent from "@components/SiteContent";
import HeaderBanner from "@components/HeaderBanner";
import UIString from "@components/UIString";
---
<body data-is-site-under-construction={IS_SITE_UNDER_CONSTRUCTION && "true"}>
{
IS_SITE_UNDER_CONSTRUCTION && (
<HeaderBanner>
&#128679;&nbsp;
<UIString key={"site.underConstruction"} />
&nbsp;&#128679;
</HeaderBanner>
)
}
<Header />
<SiteContent>
<slot />
</SiteContent>
<Footer />
</body>

View File

@ -1 +0,0 @@
export { default } from "./BaseLayout.astro";

View File

@ -1,7 +1,6 @@
--- ---
export type Props = astroHTML.JSX.ButtonHTMLAttributes; export type Props = astroHTML.JSX.ButtonHTMLAttributes;
const attrs = Astro.props;
const attrs = Astro.props as Props;
--- ---
<button {...attrs}> <button {...attrs}>
@ -15,7 +14,6 @@ const attrs = Astro.props as Props;
font-family: var(--font-family-base); font-family: var(--font-family-base);
font-weight: 500; font-weight: 500;
font-size: var(--font-size-sm); font-size: var(--font-size-sm);
&[disabled] { &[disabled] {
opacity: 0.5; opacity: 0.5;
cursor: not-allowed; cursor: not-allowed;

View File

@ -1 +0,0 @@
export { default } from "./Button.astro";

View File

@ -0,0 +1,74 @@
---
import Button from "@components/Button.astro";
import UIString from "./UIString.astro";
import { useTranslation } from "@i18n/utils";
import { actions } from "astro:actions";
const t = useTranslation(Astro);
const formResult = Astro.getActionResult(actions.appeal);
---
<>
<form name="contact" action={actions.appeal} method="post">
<div class="flex">
<div>
<input name="name" placeholder={t("input.nameField")} type="text" maxlength="20" autocomplete="off" required />
</div>
<div>
<input name="email" placeholder="example@email.com" type="email" autocomplete="off" required />
</div>
</div>
<input name="subject" placeholder={t("input.subjectField")} type="text" autocomplete="off" required />
<textarea
name="message"
placeholder={t("input.messageField")}
id="message"
autocomplete="off"
cols={30}
rows={10}
required></textarea>
<div class="footer">
{
formResult?.error && (
<span>
<UIString key={formResult.error.status === 429 ? "submitted.limit" : "submitted.error"} />
</span>
)
}
<Button type={"submit"}>
<UIString key={"btn.submit"} />
</Button>
</div>
</form>
</>
<style lang="scss">
form {
display: flex;
flex-direction: column;
row-gap: 7px;
margin-bottom: 3.125rem;
& .flex {
column-gap: 10px;
& div {
width: 100%;
}
}
& input.error-input,
& textarea.error-input {
border: 1px solid var(--color-error);
}
& .footer {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 12px;
}
}
@media screen and (max-width: 560px) {
form .flex {
flex-direction: column;
row-gap: 7px;
}
}
</style>

View File

@ -1,65 +0,0 @@
---
import Button from "@components/Button";
import { useTranslation } from "@i18n/utils";
const t = useTranslation(Astro);
---
<form name="contact" method="post" netlify-honeypot="bot-field" data-netlify="true">
<div hidden>
Don't fill this out if you're human
<input name="bot-field" />
</div>
<div class="flex">
<div>
<input name="name" placeholder={t("input.nameField")} type="text" maxlength="20" autocomplete="off" required />
</div>
<div>
<input name="email" placeholder="example@email.com" autocomplete="off" type="email" required />
</div>
</div>
<input name="subject" placeholder={t("input.subjectField")} type="text" autocomplete="off" required />
<textarea
name="message"
placeholder={t("input.messageField")}
id="message"
autocomplete="off"
cols={30}
rows={10}
required></textarea>
<div class="footer">
<Button type="submit">{t("btn.submit")}</Button>
</div>
</form>
<style lang="scss">
form {
display: flex;
flex-direction: column;
row-gap: 7px;
margin-bottom: 3.125rem;
& .flex {
column-gap: 10px;
& div {
width: 100%;
}
}
& input.error-input,
& textarea.error-input {
border: 1px solid var(--color-error);
}
& .footer {
text-align: center;
}
}
@media screen and (max-width: 560px) {
.contact-form .flex {
flex-direction: column;
row-gap: 7px;
}
}
</style>

View File

@ -1,46 +0,0 @@
.contact-form {
display: flex;
flex-direction: column;
row-gap: 7px;
margin-bottom: 3.125rem;
& .form-footer {
text-align: center;
margin-top: 15px;
}
& .form-result {
font-style: italic;
color: var(--font-color-gray);
}
& .error-message {
margin: 2px 0 3px 0;
display: block;
color: var(--color-error);
font-size: var(--font-size-sm);
user-select: none;
&::before {
content: "*";
}
}
& .flex {
column-gap: 10px;
& div {
width: 100%;
}
}
& input.error-input,
& textarea.error-input {
border: 1px solid var(--color-error);
}
}
@media screen and (max-width: 560px) {
.contact-form .flex {
flex-direction: column;
row-gap: 7px;
}
}

View File

@ -1 +0,0 @@
export { default } from "./ContactForm.astro";

View File

@ -0,0 +1,45 @@
---
import { Icon } from "astro-icon/components";
import { getContacts } from "../queries";
const contacts = await getContacts();
---
<div>
{
contacts && (
<>
<a href={"mailto:" + contacts.email}>
Email
<Icon name='arrow-up-right' width='15' height='15' data-filter='none' />
</a>
<a href={contacts.github} target='_blank'>
Github
<Icon name='arrow-up-right' width='15' height='15' data-filter='none' />
</a>
<a href={contacts.telegram} target='_blank'>
Telegram
<Icon name='arrow-up-right' width='15' height='15' data-filter='none' />
</a>
</>
)
}
</div>
<style lang='scss'>
div {
display: flex;
flex-wrap: wrap;
column-gap: 40px;
row-gap: 30px;
& a {
display: flex;
column-gap: 5px;
}
& svg {
filter: none;
}
}
</style>

View File

@ -1,24 +0,0 @@
---
import { SITE_METADATA } from "@root/config";
import { Icon } from "astro-icon";
import "./ContactsList.scss";
const {
contacts: { email, githubUrl, telegramUrl },
} = SITE_METADATA;
---
<div class="contacts-list">
<a href={"mailto:" + email}
>Email
<Icon name="arrow-up-right" width="15" height="15" data-filter="none" />
</a>
<a href={githubUrl} target="_blank"
>Github
<Icon name="arrow-up-right" width="15" height="15" data-filter="none" />
</a>
<a href={telegramUrl} target="_blank"
>Telegram
<Icon name="arrow-up-right" width="15" height="15" data-filter="none" />
</a>
</div>

View File

@ -1,15 +0,0 @@
.contacts-list {
display: flex;
flex-wrap: wrap;
column-gap: 40px;
row-gap: 30px;
& a {
display: flex;
column-gap: 5px;
}
& svg {
filter: none;
}
}

View File

@ -1 +0,0 @@
export { default } from "./ContactsList.astro";

View File

@ -1,59 +0,0 @@
import type { Component } from "solid-js";
import { createSignal, createEffect } from "solid-js";
const Counter: Component<{ tick?: number }> = (props) => {
const [isRunned, setIsRunned] = createSignal<boolean>(false);
const [count, setCount] = createSignal<number>(0);
const run = () => setIsRunned(true);
const stop = () => setIsRunned(false);
const inc = () => setCount(count() + 1);
const dec = () => setCount(count() - 1);
createEffect(() => {
setInterval(() => {
if (isRunned()) {
setCount(count() + 1);
}
}, props.tick || 200);
});
return (
<div
style={{
margin: "2rem 0",
display: "flex",
"flex-direction": "column",
"align-items": "center",
"row-gap": "15px",
border: "1px solid var(--border-color)",
"border-radius": "var(--border-radius-md)",
padding: "15px 5px",
}}
>
<span>{count()}</span>
<div
style={{
display: "flex",
"column-gap": "3px",
}}
>
<button class="btn" disabled={isRunned()} onClick={run}>
Run
</button>
<button class="btn" disabled={isRunned()} onClick={inc}>
+
</button>
<button class="btn" disabled={isRunned()} onClick={dec}>
-
</button>
<button class="btn" disabled={!isRunned()} onClick={stop}>
Stop
</button>
</div>
</div>
);
};
export default Counter;

View File

@ -1 +0,0 @@
export { default } from "./Counter";

View File

@ -1,5 +1,5 @@
--- ---
import UIString from "@components/UIString"; import UIString from "@components/UIString.astro";
--- ---
<div> <div>

View File

@ -0,0 +1,52 @@
---
import { Icon } from "astro-icon/components";
import TranslatedLink from "./TranslatedLink.astro";
import UIString from "./UIString.astro";
import { getLanguageFromURL } from "../i18n/utils";
const pageLang = getLanguageFromURL(Astro.url.pathname);
---
<footer>
<div class="container">
<div>
<i>
<UIString key={"footer.developed"} />: <TranslatedLink to="/contacts/"> Sergey Yarkov </TranslatedLink>
&copy; {new Date().getFullYear()}
</i>
</div>
<div>
<a href=`/${pageLang}/rss.xml` target="_blank"><UIString key={"footer.rssFeed"} /></a>
<span>
<Icon name="rss" width="20" height="20" />
</span>
</div>
</div>
</footer>
<style lang="scss">
footer {
font-weight: 500;
margin-top: 5rem;
color: var(--color-gray-400);
font-size: var(--font-size-sm);
& .container {
padding-top: 15px;
padding-bottom: 15px;
border-top: 1px solid var(--border-color);
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
column-gap: 20px;
row-gap: 5px;
& div:last-child {
display: flex;
align-items: center;
& a {
margin-right: 0.25rem;
}
}
}
}
</style>

View File

@ -1,58 +0,0 @@
---
import { Icon } from "astro-icon";
---
<footer>
<div class="container">
<ul>
<li>
<a href="https://astro.build/" target="_blank">Astro</a>
<Icon name="astro" width="20" height="20" />
</li>
<li>
<a href="https://www.netlify.com/" target="_blank">Netlify</a>
<Icon name="netlify" width="20" height="20" />
</li>
<li>
<a href="/rss.xml" target="_blank">RSS</a>
<Icon name="rss" width="20" height="20" />
</li>
</ul>
<p>© Sergey Yarkov, 2022</p>
</div>
</footer>
<style lang="scss">
footer {
user-select: none;
text-align: center;
font-weight: 500;
margin-top: 5rem;
& .container {
padding: 25px 0 10px 0;
border-top: 1px solid var(--border-color);
display: flex;
flex-direction: column;
align-items: center;
row-gap: 15px;
}
& ul {
display: flex;
align-items: center;
column-gap: 25px;
& li {
display: flex;
align-items: center;
column-gap: 7px;
& a {
color: var(--font-color);
font-size: var(--font-size-sm);
}
}
}
& p {
text-align: center;
font-size: var(--font-size-xs);
}
}
</style>

View File

@ -1 +0,0 @@
export { default } from "./Footer.astro";

View File

@ -1,32 +1,29 @@
--- ---
import { Icon } from "astro-icon"; import { IS_SITE_UNDER_CONSTRUCTION, SITE_METADATA } from "@root/constants";
import { IS_SITE_UNDER_CONSTRUCTION, SITE_METADATA } from "@root/config";
import { removeSlashes } from "@utils/string";
import ThemeSwitcher from "@components/ThemeSwticher"; import ThemeSwitcher from "@components/ThemeSwticher";
import UIString from "@components/UIString"; import LanguageSelect from "@components/LanguageSelect.astro";
import TranslatedLink from "@components/TranslatedLink"; import NavToggle from "@components/NavToggle";
import LanguageSelect from "@components/LanguageSelect"; import UIString from "@components/UIString.astro";
import NavToggle from "./NavToggle"; import TranslatedLink from "@components/TranslatedLink.astro";
import HeaderContacts from "./HeaderContacts.astro";
const { name, nav, contacts } = SITE_METADATA;
const { pathname } = Astro.url;
--- ---
<header {...(IS_SITE_UNDER_CONSTRUCTION ? { style: 'top: 45px;' } : {})}> <header {...IS_SITE_UNDER_CONSTRUCTION ? { style: "top: 45px;" } : {}}>
<div class="container"> <div class="container">
<div class="logo"> <div class="logo">
<TranslatedLink to={"/"}> <TranslatedLink to="/">
{name} {SITE_METADATA.name}
</TranslatedLink> </TranslatedLink>
</div> </div>
<nav> <nav itemscope itemtype="http://schema.org/SiteNavigationElement">
<ul> <ul>
{ {
nav.map((link) => ( SITE_METADATA.nav.map((link) => (
<li> <li>
<TranslatedLink <TranslatedLink
class={pathname.includes(removeSlashes(link.url)) && pathname.split("/").length < 5 && "active"} itemprop={"url"}
to={link.url} to={link.url}
class:list={[{ active: Astro.url.pathname.includes(link.url) }]}
> >
<UIString key={link.key} /> <UIString key={link.key} />
</TranslatedLink> </TranslatedLink>
@ -34,20 +31,7 @@ const { pathname } = Astro.url;
)) ))
} }
</ul> </ul>
<div class="contacts"> <HeaderContacts />
<a href={"mailto:" + contacts.email}>
Email
<Icon name="email" width="18" height="18" />
</a>
<a href={contacts.githubUrl}>
Github
<Icon name="github_filled" width="18" height="18" />
</a>
<a href={contacts.telegramUrl}>
Telegram
<Icon name="telegram" width="18" height="18" />
</a>
</div>
<div class="flex settings"> <div class="flex settings">
<LanguageSelect /> <LanguageSelect />
<ThemeSwitcher client:visible /> <ThemeSwitcher client:visible />
@ -69,17 +53,15 @@ const { pathname } = Astro.url;
z-index: 9999; z-index: 9999;
& .container { & .container {
display: flex; display: flex;
align-items: center; align-items: flex-start;
justify-content: space-between; justify-content: space-between;
} }
& .logo a { & .logo a {
text-decoration: none; text-decoration: none;
font-weight: 600; font-weight: 600;
font-size: var(--font-size-lg); font-size: var(--font-size-lg);
color: var(--font-color); color: var(--font-color);
} }
& a:hover, & a:hover,
a.active { a.active {
color: var(--color-blue-500); color: var(--color-blue-500);
@ -87,7 +69,6 @@ const { pathname } = Astro.url;
text-decoration-thickness: 2px; text-decoration-thickness: 2px;
text-underline-offset: 4px; text-underline-offset: 4px;
} }
& nav { & nav {
display: flex; display: flex;
align-items: center; align-items: center;
@ -106,25 +87,11 @@ const { pathname } = Astro.url;
text-transform: lowercase; text-transform: lowercase;
} }
} }
& .contacts {
display: flex;
align-items: center;
column-gap: 10px;
margin-right: 30px;
& a {
text-decoration: none;
font-size: 0;
&:hover {
opacity: var(--opacity-hover);
}
}
}
& .settings { & .settings {
column-gap: 13.5px; column-gap: 13.5px;
} }
} }
} }
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
header { header {
padding: 10px 0; padding: 10px 0;
@ -132,7 +99,6 @@ const { pathname } = Astro.url;
display: none; display: none;
} }
} }
body[data-is-mobile-open="true"] { body[data-is-mobile-open="true"] {
overflow-y: hidden; overflow-y: hidden;
touch-action: none; touch-action: none;
@ -157,7 +123,7 @@ const { pathname } = Astro.url;
display: block; display: block;
& ul { & ul {
display: block; display: block;
text-align: center; text-align: left;
margin: 0; margin: 0;
& li { & li {
margin-bottom: 30px; margin-bottom: 30px;
@ -166,11 +132,6 @@ const { pathname } = Astro.url;
} }
} }
} }
& .contacts {
margin-right: 0;
margin-top: 2rem;
justify-content: center;
}
} }
} }
} }

View File

@ -1 +0,0 @@
export { default } from "./Header.astro";

View File

@ -1 +0,0 @@
export { default } from "./HeaderBanner.astro";

View File

@ -0,0 +1,54 @@
---
import { Icon } from "astro-icon/components";
import { getContacts } from "../queries";
const contacts = await getContacts();
---
{
contacts && (
<div class="contacts">
<a target="_blank" href={"mailto:" + contacts.email}>
Email
<Icon name="email" width="18" height="18" />
</a>
<a target="_blank" href={contacts.github}>
Github
<Icon name="github_filled" width="18" height="18" />
</a>
<a target="_blank" href={contacts.telegram}>
Telegram
<Icon name="telegram" width="18" height="18" />
</a>
</div>
)
}
<style lang="scss">
.contacts {
display: flex;
align-items: center;
column-gap: 10px;
margin-right: 30px;
& a {
text-decoration: none;
font-size: 0;
&:hover {
opacity: var(--opacity-hover);
}
}
}
@media screen and (max-width: 768px) {
.contacts {
margin-right: 0;
margin-top: 2.5rem;
& a {
margin-right: 0.2rem;
}
& svg {
width: 21px;
height: 21px;
}
}
}
</style>

View File

@ -1,8 +1,7 @@
--- ---
import { Icon } from "astro-icon"; import { Icon } from "astro-icon/components";
import { DEFAULT_LANGUAGE, SUPPORTED_LANGUAGES } from "@root/config"; import { DEFAULT_LANGUAGE, SUPPORTED_LANGUAGES, URL_BLOG_PREFIX } from "@root/constants";
import languages from "@i18n/languages"; import { getLanguageFromURL } from "@i18n/utils";
import { getLanguageFromURL } from "@root/utils";
const lang = getLanguageFromURL(Astro.url.pathname); const lang = getLanguageFromURL(Astro.url.pathname);
--- ---
@ -12,7 +11,7 @@ const lang = getLanguageFromURL(Astro.url.pathname);
<select id="languageSelect" value={lang} aria-label="Select language"> <select id="languageSelect" value={lang} aria-label="Select language">
{ {
SUPPORTED_LANGUAGES.map((code) => ( SUPPORTED_LANGUAGES.map((code) => (
<option value={code} selected={lang === code}> <option value={code} selected={code === lang}>
<span>{code.toLocaleUpperCase()}</span> <span>{code.toLocaleUpperCase()}</span>
</option> </option>
)) ))
@ -20,6 +19,34 @@ const lang = getLanguageFromURL(Astro.url.pathname);
</select> </select>
</div> </div>
<script is:inline define:vars={{ lang, DEFAULT_LANGUAGE, URL_BLOG_PREFIX }}>
const $select = document.getElementById("languageSelect");
const changeLanguageHandler = (e) => {
const newLang = e.target.value;
const pathname = window.location.pathname;
let url;
if (lang !== DEFAULT_LANGUAGE) {
url = pathname.split("/").slice(2).join("/");
} else {
url = pathname.slice(1);
}
if (newLang !== DEFAULT_LANGUAGE) url = `${newLang}/${url}`;
/* Move user to articles page with new language */
if (window.location.pathname.includes(`/${URL_BLOG_PREFIX}/`)) {
window.location.pathname = `${newLang === DEFAULT_LANGUAGE ? "" : newLang + "/"}` + "articles/";
return;
}
window.location.pathname = url;
};
$select.addEventListener("change", changeLanguageHandler);
</script>
<style lang="scss"> <style lang="scss">
div { div {
position: relative; position: relative;
@ -64,31 +91,3 @@ const lang = getLanguageFromURL(Astro.url.pathname);
} }
} }
</style> </style>
<script define:vars={{ lang, DEFAULT_LANGUAGE }}>
const $select = document.getElementById("languageSelect");
const changeLanguageHandler = (e) => {
const newLang = e.target.value;
const pathname = window.location.pathname;
let url;
if (lang !== DEFAULT_LANGUAGE) {
url = pathname.split("/").slice(2).join("/");
} else {
url = pathname.slice(1);
}
if (newLang !== DEFAULT_LANGUAGE) url = `${newLang}/${url}`;
/* Move user to articles page with new language */
if (window.location.pathname.includes("/blog/")) {
window.location.pathname = `${newLang === DEFAULT_LANGUAGE ? "" : newLang + "/"}` + "articles/";
return;
}
window.location.pathname = url;
};
$select.addEventListener("change", changeLanguageHandler);
</script>

View File

@ -1 +0,0 @@
export { default } from "./LanguageSelect.astro";

View File

@ -1,16 +1,27 @@
import type { Component } from "solid-js"; import type { Component } from "solid-js";
import { createSignal, createEffect } from "solid-js"; import { createSignal, createEffect } from "solid-js";
import "./NavToggle.scss"; import "./NavToggle.scss";
const MenuIcon: Component = () => ( const MenuIcon: Component = () => (
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="24px" height="24px"> <svg
fill="#000000"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 50 50"
width="24px"
height="24px"
>
<path d="M 0 7.5 L 0 12.5 L 50 12.5 L 50 7.5 Z M 0 22.5 L 0 27.5 L 50 27.5 L 50 22.5 Z M 0 37.5 L 0 42.5 L 50 42.5 L 50 37.5 Z" /> <path d="M 0 7.5 L 0 12.5 L 50 12.5 L 50 7.5 Z M 0 22.5 L 0 27.5 L 50 27.5 L 50 22.5 Z M 0 37.5 L 0 42.5 L 50 42.5 L 50 37.5 Z" />
</svg> </svg>
); );
const CloseIcon: Component = () => ( const CloseIcon: Component = () => (
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="24px" height="24px"> <svg
fill="#000000"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 50 50"
width="24px"
height="24px"
>
<path d="M 9.15625 6.3125 L 6.3125 9.15625 L 22.15625 25 L 6.21875 40.96875 L 9.03125 43.78125 L 25 27.84375 L 40.9375 43.78125 L 43.78125 40.9375 L 27.84375 25 L 43.6875 9.15625 L 40.84375 6.3125 L 25 22.15625 Z" /> <path d="M 9.15625 6.3125 L 6.3125 9.15625 L 22.15625 25 L 6.21875 40.96875 L 9.03125 43.78125 L 25 27.84375 L 40.9375 43.78125 L 43.78125 40.9375 L 27.84375 25 L 43.6875 9.15625 L 40.84375 6.3125 L 25 22.15625 Z" />
</svg> </svg>
); );
@ -32,7 +43,13 @@ const NavToggle: Component = () => {
}); });
return ( return (
<button class="nav-toggle" onClick={toggleNav} type="button" aria-pressed={isNavShown()} aria-label="Menu"> <button
class="nav-toggle"
onClick={toggleNav}
type="button"
aria-pressed={isNavShown()}
aria-label="Menu"
>
{isNavShown() ? <CloseIcon /> : <MenuIcon />} {isNavShown() ? <CloseIcon /> : <MenuIcon />}
</button> </button>
); );

View File

@ -0,0 +1,33 @@
---
import mime from 'mime-types'
import { extname } from 'node:path'
import { isURL } from "@utils/string";
export interface Props {
title: string;
siteName: string;
description: string;
type: string;
url: string;
image?: {
path: string;
width: string;
height: string;
type: string;
}
}
const {title, siteName, description, url, image} = Astro.props as Props;
---
<meta property="og:title" content={title} />
<meta property="og:site_name" content={siteName} />
<meta property="og:description" content={description} />
<meta property="og:type" content="article" />
<meta property="og:url" content={url} />
{image && (
<meta property="og:image" content={isURL(image.path) ? image.path : `${Astro.url.origin}${image.path}`} />
<meta property="og:image:width" content="700" />
<meta property="og:image:height" content="400" />
<meta property="og:image:type" content={`${mime.lookup(extname(image.path))}`} />
)}

View File

@ -3,7 +3,6 @@ export interface Props {
heading: string; heading: string;
description?: string | undefined; description?: string | undefined;
} }
const { heading, description } = Astro.props as Props; const { heading, description } = Astro.props as Props;
--- ---
@ -17,14 +16,13 @@ const { heading, description } = Astro.props as Props;
<style lang="scss"> <style lang="scss">
div { div {
margin-bottom: 2.5rem; margin-bottom: 2.5rem;
text-align: center;
& h1 { & h1 {
font-size: var(--font-size-4xl); font-size: var(--font-size-4xl);
text-align: center;
margin-bottom: 15px; margin-bottom: 15px;
} }
& p { & p {
font-size: var(--font-size-lg); font-size: var(--font-size-lg);
text-align: center;
max-width: 650px; max-width: 650px;
margin: 0 auto; margin: 0 auto;
} }

View File

@ -1 +0,0 @@
export { default } from "./PageHeading.astro";

View File

@ -0,0 +1,89 @@
---
import { Icon } from "astro-icon/components";
import UIString from "@components/UIString.astro";
import { Project_TranslationsQuery } from "../graphql/graphql";
import { DIRECTUS_URL } from "astro:env/server";
export interface Props {
data: Project_TranslationsQuery["project_translations"][0];
}
const { data } = Astro.props as Props;
const { icon, title, year, description, article_url, source_url, demo_url } = data;
---
<div class="project-item">
<div class="project-item__heading">
<h2>
{icon && <img data-icon src={`${DIRECTUS_URL}/assets/${icon.filename_disk}`} />}
{title}
</h2>
<span>{year}</span>
</div>
<div class="project-item__description">
<p>{description}</p>
</div>
<div class="project-item__links">
{
article_url && (
<a class="btn-link" href={article_url} target="_blank">
<UIString key={"btn.article"} />
</a>
)
}
{
source_url && (
<a class="btn-link" href={source_url} target="_blank">
<UIString key={"btn.sourceCode"} />
<Icon name="mdi:link-variant" width="15" height="15" />
</a>
)
}
{
demo_url && (
<a class="btn-link" href={demo_url} target="_blank">
<UIString key={"btn.demo"} />
<Icon name="mdi:link-variant" width="15" height="15" />
</a>
)
}
</div>
</div>
<style lang="scss">
.project-item {
display: flex;
flex-direction: column;
border: 1px solid var(--border-color);
border-radius: var(--border-radius-lg);
padding: 15px;
&__heading {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
& h2 {
display: flex;
align-items: center;
font-size: 1.2rem;
font-weight: 600;
column-gap: 10px;
margin: 0;
padding: 0;
}
& span {
font-size: var(--font-size-sm);
color: var(--font-color-gray);
}
}
&__links {
display: flex;
margin-top: auto;
column-gap: 5px;
}
}
</style>

View File

@ -1,53 +0,0 @@
---
import { DEFAULT_LANGUAGE } from "@root/config";
import { getLanguageFromURL } from "@root/utils";
import { Icon } from "astro-icon";
import UIString from "../UIString";
import "./ProjectItem.scss";
export interface Props {
data: ProjectType;
}
const { data } = Astro.props as Props;
const lang = getLanguageFromURL(Astro.url.pathname);
const { icon, name, year, description, articleUrl, sourceUrl, demoUrl } = data;
---
<div class="project-item">
<div class="project-item__heading">
<h2>
<Icon name={icon} width="20" height="20" />
{name}
</h2>
<span>{year}</span>
</div>
<div class="project-item__description">
<p>{description[lang] || description[DEFAULT_LANGUAGE]}</p>
</div>
<div class="project-item__links">
{
articleUrl && (
<a class="btn-link" href={articleUrl} target="_blank">
<UIString key={"btn.article"} />
</a>
)
}
{
sourceUrl && (
<a class="btn-link" href={sourceUrl} target="_blank">
<UIString key={"btn.sourceCode"} />
<Icon name="link-out" width="15" height="15" />
</a>
)
}
{
demoUrl && (
<a class="btn-link" href={demoUrl} target="_blank">
<UIString key={"btn.demo"} />
<Icon name="link-out" width="15" height="15" />
</a>
)
}
</div>
</div>

View File

@ -1,35 +0,0 @@
.project-item {
display: flex;
flex-direction: column;
border: 1px solid var(--border-color);
border-radius: var(--border-radius-lg);
padding: 15px;
&__heading {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
& h2 {
display: flex;
align-items: center;
font-size: 1.2rem;
font-weight: 600;
column-gap: 10px;
margin: 0;
padding: 0;
}
& span {
font-size: var(--font-size-sm);
color: var(--font-color-gray);
}
}
&__links {
display: flex;
margin-top: auto;
column-gap: 5px;
}
}

View File

@ -1 +0,0 @@
export { default } from "./ProjectItem.astro";

View File

@ -0,0 +1,20 @@
---
import ProjectItem from "@components/ProjectItem.astro";
import { getLanguageFromURL } from "../i18n/utils";
import { getProjectList } from "../queries";
const pageLang = getLanguageFromURL(Astro.url.pathname);
const projects = await getProjectList(pageLang);
---
<div>
{projects.map((data) => <ProjectItem data={data} />)}
</div>
<style>
div {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 10px;
}
</style>

View File

@ -1,7 +0,0 @@
---
import "./ProjectsList.scss";
---
<div class="projects-list">
<slot />
</div>

View File

@ -1,5 +0,0 @@
.projects-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 10px;
}

View File

@ -1 +0,0 @@
export { default } from "./ProjectsList.astro";

View File

@ -0,0 +1,68 @@
---
import { getLanguageFromURL } from "@i18n/utils";
import * as utils from "@utils/index";
import ArticleItem from "@components/ArticleItem";
import EmptyList from "@components/EmptyList.astro";
import UIString from "@components/UIString.astro";
import TranslatedLink from "@components/TranslatedLink.astro";
import { getRecentArticleList, getSiteSettings } from "../queries";
const pageLang = getLanguageFromURL(Astro.url.pathname);
const siteSettings = await getSiteSettings();
const articles = await getRecentArticleList(siteSettings?.recent_articles_limit || 5);
const filteredArticles = utils.filterArticlesByPageLang(articles, pageLang);
const isEmpty = articles.length === 0;
---
<section>
<div>
<h2>
<UIString key={"recentArticles.heading"} />
</h2>
<TranslatedLink to="/articles/">
<UIString key={"recentArticles.all"} />
</TranslatedLink>
</div>
<div itemscope itemtype="http://schema.org/Blog">
{
!isEmpty && !!filteredArticles ? (
filteredArticles.map(
(a) =>
a && (
<ArticleItem
slug={a.slug}
title={a.title}
languages_code={a.languages_code}
pub_date={a.pub_date}
pageLang={pageLang}
/>
)
)
) : (
<EmptyList />
)
}
</div>
</section>
<style lang="scss">
section {
& > div:nth-child(1) {
display: flex;
align-items: center;
column-gap: 15px;
row-gap: 5px;
flex-wrap: wrap;
justify-content: space-between;
border-bottom: 1px solid var(--border-color);
padding-bottom: 10px;
& h2 {
margin: 0;
}
}
& > div:nth-child(2) {
margin-top: 10px;
max-width: calc(var(--content-width) + (var(--content-padding) * 2));
}
}
</style>

View File

@ -1,56 +0,0 @@
---
import { ArticleItem } from "@components/ArticleItem";
import UIString from "@components/UIString";
import { getLanguageFromURL } from "@utils/url";
import { sortArtcilesByDate } from "@utils/articles";
import EmptyList from "./EmptyList.astro";
import TranslatedLink from "@components/TranslatedLink";
export interface Props {
articles: ArticleType[];
length?: number | undefined;
}
const { articles, length = 5 } = Astro.props as Props;
const lang = getLanguageFromURL(Astro.url.pathname);
const recent = sortArtcilesByDate(articles);
const isEmpty = recent.length === 0;
---
<section>
<div>
<h2><UIString key={"recentArticles.heading"} /></h2>
<TranslatedLink to="/articles/">
<UIString key={"recentArticles.all"} />
</TranslatedLink>
</div>
<div>
{!isEmpty ? recent.slice(0, length).map((article) => <ArticleItem lang={lang} data={article} />) : <EmptyList />}
</div>
</section>
<style lang="scss">
section {
& > div:nth-child(1) {
display: flex;
align-items: center;
column-gap: 15px;
row-gap: 5px;
flex-wrap: wrap;
justify-content: space-between;
border-bottom: 1px solid var(--border-color);
padding-bottom: 10px;
& h2 {
margin: 0;
}
}
& > div:nth-child(2) {
margin-top: 10px;
max-width: calc(var(--content-width) + (var(--content-padding) * 2));
}
}
</style>

View File

@ -1 +0,0 @@
export { default } from "./RecentArticles.astro";

View File

@ -8,7 +8,6 @@
width: 100%; width: 100%;
margin-top: 5rem; margin-top: 5rem;
} }
@media (max-width: 768px) { @media (max-width: 768px) {
main { main {
margin-top: 3rem; margin-top: 3rem;

View File

@ -1 +0,0 @@
export { default } from "./SiteContent.astro";

View File

@ -1,33 +0,0 @@
---
import { DEFAULT_LANGUAGE } from "@root/config";
import { getLanguageFromURL } from "@root/utils";
import { Icon } from "astro-icon";
import "./SkillsBlock.scss";
export interface Props {
data: SkillsType;
}
const lang = getLanguageFromURL(Astro.url.pathname);
const {
data: { title, list },
} = Astro.props as Props;
---
<div class="skills-block">
<div>
<h3>{title[lang] || title[DEFAULT_LANGUAGE]}</h3>
</div>
<div>
<ul>
{
list.map((entry) => (
<li>
{entry.icon && <Icon name={entry.icon} width="20" height="20" />}
{entry.name}
</li>
))
}
</ul>
</div>
</div>

Some files were not shown because too many files have changed in this diff Show More